CModHandler.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #pragma once
  2. #include "Filesystem/CResourceLoader.h"
  3. #include "VCMI_Lib.h"
  4. #include "CCreatureHandler.h"
  5. #include "CArtHandler.h"
  6. #include "CTownHandler.h"
  7. /*
  8. * CModHandler.h, part of VCMI engine
  9. *
  10. * Authors: listed in file AUTHORS in main folder
  11. *
  12. * License: GNU General Public License v2.0 or later
  13. * Full text of license available in license.txt file, in main folder
  14. *
  15. */
  16. class CModHandler;
  17. class CModIndentifier;
  18. class CModInfo;
  19. class JsonNode;
  20. typedef si32 TModID;
  21. class DLL_LINKAGE CModInfo
  22. {
  23. public:
  24. /// TODO: list of mods that should be loaded before this one
  25. std::vector <TModID> requirements;
  26. /// mod configuration (mod.json).
  27. std::shared_ptr<JsonNode> config; //TODO: unique_ptr can't be serialized
  28. template <typename Handler> void serialize(Handler &h, const int version)
  29. {
  30. h & requirements & config;
  31. }
  32. };
  33. class DLL_LINKAGE CModHandler
  34. {
  35. public:
  36. //std::string currentConfig; //save settings in this file
  37. std::map <TModID, CModInfo> allMods;
  38. std::set <TModID> activeMods;//TODO: use me
  39. /// management of game settings config
  40. void loadConfigFromFile (std::string name);
  41. void saveConfigToFile (std::string name);
  42. /// find all available mods and load them into FS
  43. void findAvailableMods();
  44. /// load content from all available mods
  45. void loadActiveMods();
  46. /// actions that should be triggered on map restart
  47. /// TODO: merge into appropriate handlers?
  48. void reload();
  49. struct DLL_LINKAGE hardcodedFeatures
  50. {
  51. int CREEP_SIZE; // neutral stacks won't grow beyond this number
  52. int WEEKLY_GROWTH; //percent
  53. int NEUTRAL_STACK_EXP;
  54. int MAX_BUILDING_PER_TURN;
  55. bool DWELLINGS_ACCUMULATE_CREATURES;
  56. bool ALL_CREATURES_GET_DOUBLE_MONTHS;
  57. template <typename Handler> void serialize(Handler &h, const int version)
  58. {
  59. h & CREEP_SIZE & WEEKLY_GROWTH & NEUTRAL_STACK_EXP;
  60. h & DWELLINGS_ACCUMULATE_CREATURES & ALL_CREATURES_GET_DOUBLE_MONTHS;
  61. }
  62. } settings;
  63. struct DLL_LINKAGE gameModules
  64. {
  65. bool STACK_EXP;
  66. bool STACK_ARTIFACT;
  67. bool COMMANDERS;
  68. bool MITHRIL;
  69. template <typename Handler> void serialize(Handler &h, const int version)
  70. {
  71. h & STACK_EXP & STACK_ARTIFACT & COMMANDERS & MITHRIL;
  72. }
  73. } modules;
  74. CModHandler();
  75. template <typename Handler> void serialize(Handler &h, const int version)
  76. {
  77. h & allMods & activeMods & settings & modules;
  78. }
  79. };