Initializer.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. namespace OpenVIII.Fields
  2. {
  3. public static class Initializer
  4. {
  5. #region Methods
  6. public static IServices GetServices()
  7. {
  8. var services = new ServiceProvider();
  9. var engine = new EventEngine();
  10. services.Register(ServiceId.Interaction, new InteractionService());
  11. services.Register(ServiceId.Field, new FieldService(engine));
  12. services.Register(ServiceId.Global, new GlobalVariableService());
  13. services.Register(ServiceId.Gameplay, new GameplayService());
  14. services.Register(ServiceId.Salary, new SalaryService());
  15. services.Register(ServiceId.Party, new PartyService());
  16. services.Register(ServiceId.Movie, new MovieService());
  17. services.Register(ServiceId.Message, new MessageService());
  18. services.Register(ServiceId.Menu, new MenuService());
  19. services.Register(ServiceId.Music, new MusicService());
  20. services.Register(ServiceId.Sound, new SoundService());
  21. services.Register(ServiceId.Rendering, new RenderingService());
  22. return services;
  23. }
  24. /// <summary>
  25. /// Should be called only once
  26. /// </summary>
  27. public static void Init()
  28. {
  29. Memory.Log.WriteLine($"{nameof(Fields)} :: {nameof(Initializer)} :: {nameof(Init)}");
  30. var aw = ArchiveWorker.Load(Memory.Archives.A_FIELD);
  31. // ReSharper disable once StringLiteralTypo
  32. var mapData = aw.GetArchive("mapdata.fs");
  33. if (mapData == null) return;
  34. // ReSharper disable once StringLiteralTypo
  35. const string map = "maplist";
  36. var bytes = mapData.GetBinaryFile(map);
  37. if (bytes == null) return;
  38. var mapList = System.Text.Encoding.UTF8.GetString(bytes)
  39. .Replace("\r", "")
  40. .Split('\n');
  41. //Memory.FieldHolder.FieldMemory = new int[1024];
  42. Memory.FieldHolder.Fields = mapList;
  43. FieldId.FieldId_ = mapList;
  44. }
  45. #endregion Methods
  46. }
  47. }