ConfigLoader.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. namespace ET.Server
  5. {
  6. [Callback(CallbackType.GetAllConfigBytes)]
  7. public class GetAllConfigBytes: IAction<ConfigComponent, Dictionary<string, byte[]>>
  8. {
  9. public void Handle(ConfigComponent configComponent, Dictionary<string, byte[]> output)
  10. {
  11. List<string> startConfigs = new List<string>()
  12. {
  13. "StartMachineConfigCategory",
  14. "StartProcessConfigCategory",
  15. "StartSceneConfigCategory",
  16. "StartZoneConfigCategory",
  17. };
  18. HashSet<Type> configTypes = Game.EventSystem.GetTypes(typeof (ConfigAttribute));
  19. foreach (Type configType in configTypes)
  20. {
  21. string configFilePath;
  22. if (startConfigs.Contains(configType.Name))
  23. {
  24. configFilePath = $"../Config/{Game.Options.StartConfig}/{configType.Name}.bytes";
  25. }
  26. else
  27. {
  28. configFilePath = $"../Config/{configType.Name}.bytes";
  29. }
  30. output[configType.Name] = File.ReadAllBytes(configFilePath);
  31. }
  32. }
  33. }
  34. [Callback(CallbackType.GetOneConfigBytes)]
  35. public class GetOneConfigBytes: IFunc<string, byte[]>
  36. {
  37. public byte[] Handle(string configName)
  38. {
  39. byte[] configBytes = File.ReadAllBytes($"../Config/{configName}.bytes");
  40. return configBytes;
  41. }
  42. }
  43. }