RegisterTypesMapObjects.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. /*
  2. * RegisterTypesMapObjects.h, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #pragma once
  11. #include "../mapObjectConstructors/CBankInstanceConstructor.h"
  12. #include "../mapObjects/MapObjects.h"
  13. #include "../mapObjects/CGCreature.h"
  14. #include "../mapObjects/CGTownBuilding.h"
  15. #include "../mapObjects/ObjectTemplate.h"
  16. #include "../battle/BattleInfo.h"
  17. #include "../battle/CObstacleInstance.h"
  18. #include "../bonuses/Limiters.h"
  19. #include "../bonuses/Updaters.h"
  20. #include "../bonuses/Propagators.h"
  21. #include "../CPlayerState.h"
  22. #include "../CStack.h"
  23. #include "../CHeroHandler.h"
  24. VCMI_LIB_NAMESPACE_BEGIN
  25. template<typename Serializer>
  26. void registerTypesMapObjects(Serializer &s)
  27. {
  28. //////////////////////////////////////////////////////////////////////////
  29. // Adventure map objects
  30. //////////////////////////////////////////////////////////////////////////
  31. s.template registerType<IObjectInterface, CGObjectInstance>();
  32. // Non-armed objects
  33. s.template registerType<CGObjectInstance, CGTeleport>();
  34. s.template registerType<CGTeleport, CGMonolith>();
  35. s.template registerType<CGMonolith, CGSubterraneanGate>();
  36. s.template registerType<CGMonolith, CGWhirlpool>();
  37. s.template registerType<CGObjectInstance, CGSignBottle>();
  38. s.template registerType<CGObjectInstance, CGKeys>();
  39. s.template registerType<CGKeys, CGKeymasterTent>();
  40. s.template registerType<CGKeys, CGBorderGuard>(); s.template registerType<IQuestObject, CGBorderGuard>();
  41. s.template registerType<CGBorderGuard, CGBorderGate>();
  42. s.template registerType<CGObjectInstance, CGBoat>();
  43. s.template registerType<CGObjectInstance, CGMagi>();
  44. s.template registerType<CGObjectInstance, CGSirens>();
  45. s.template registerType<CGObjectInstance, CGShipyard>();
  46. s.template registerType<CGObjectInstance, CGDenOfthieves>();
  47. s.template registerType<CGObjectInstance, CGLighthouse>();
  48. s.template registerType<CGObjectInstance, CGTerrainPatch>();
  49. s.template registerType<CGObjectInstance, HillFort>();
  50. s.template registerType<CGObjectInstance, CGMarket>();
  51. s.template registerType<CGMarket, CGBlackMarket>();
  52. s.template registerType<CGMarket, CGUniversity>();
  53. s.template registerType<CGObjectInstance, CGHeroPlaceholder>();
  54. s.template registerType<CGObjectInstance, CArmedInstance>(); s.template registerType<CBonusSystemNode, CArmedInstance>(); s.template registerType<CCreatureSet, CArmedInstance>();
  55. // Armed objects
  56. s.template registerType<CArmedInstance, CGHeroInstance>(); s.template registerType<CArtifactSet, CGHeroInstance>();
  57. s.template registerType<CArmedInstance, CGDwelling>();
  58. s.template registerType<CGDwelling, CGTownInstance>();
  59. s.template registerType<CArmedInstance, CGPandoraBox>();
  60. s.template registerType<CGPandoraBox, CGEvent>();
  61. s.template registerType<CArmedInstance, CGCreature>();
  62. s.template registerType<CArmedInstance, CGGarrison>();
  63. s.template registerType<CArmedInstance, CGArtifact>();
  64. s.template registerType<CArmedInstance, CGResource>();
  65. s.template registerType<CArmedInstance, CGMine>();
  66. s.template registerType<CArmedInstance, CBank>();
  67. s.template registerType<CArmedInstance, CGSeerHut>(); s.template registerType<IQuestObject, CGSeerHut>();
  68. s.template registerType<CGSeerHut, CGQuestGuard>();
  69. s.template registerType<IUpdater, GrowsWithLevelUpdater>();
  70. s.template registerType<IUpdater, TimesHeroLevelUpdater>();
  71. s.template registerType<IUpdater, TimesStackLevelUpdater>();
  72. s.template registerType<IUpdater, OwnerUpdater>();
  73. s.template registerType<IUpdater, ArmyMovementUpdater>();
  74. s.template registerType<ILimiter, AnyOfLimiter>();
  75. s.template registerType<ILimiter, NoneOfLimiter>();
  76. s.template registerType<ILimiter, OppositeSideLimiter>();
  77. //new types (other than netpacks) must register here
  78. //order of type registration is critical for loading old savegames
  79. //Other object-related
  80. s.template registerType<IObjectInterface, CGTownBuilding>();
  81. s.template registerType<CGTownBuilding, CTownBonus>();
  82. s.template registerType<CGTownBuilding, COPWBonus>();
  83. s.template registerType<CGTownBuilding, CTownRewardableBuilding>();
  84. s.template registerType<CGObjectInstance, CRewardableObject>();
  85. s.template registerType<CGObjectInstance, CTeamVisited>();
  86. s.template registerType<CTeamVisited, CGObelisk>();
  87. //end of objects
  88. //////////////////////////////////////////////////////////////////////////
  89. // Bonus system
  90. //////////////////////////////////////////////////////////////////////////
  91. //s.template registerType<IPropagator>();
  92. s.template registerType<IPropagator, CPropagatorNodeType>();
  93. // Limiters
  94. //s.template registerType<ILimiter>();
  95. s.template registerType<ILimiter, AllOfLimiter>();
  96. s.template registerType<ILimiter, CCreatureTypeLimiter>();
  97. s.template registerType<ILimiter, HasAnotherBonusLimiter>();
  98. s.template registerType<ILimiter, CreatureTerrainLimiter>();
  99. s.template registerType<ILimiter, FactionLimiter>();
  100. s.template registerType<ILimiter, CreatureLevelLimiter>();
  101. s.template registerType<ILimiter, CreatureAlignmentLimiter>();
  102. s.template registerType<ILimiter, RankRangeLimiter>();
  103. s.template registerType<ILimiter, UnitOnHexLimiter>();
  104. // s.template registerType<CBonusSystemNode>();
  105. s.template registerType<CBonusSystemNode, CArtifact>();
  106. s.template registerType<CBonusSystemNode, CCreature>();
  107. s.template registerType<CBonusSystemNode, CStackInstance>();
  108. s.template registerType<CStackInstance, CCommanderInstance>();
  109. s.template registerType<CBonusSystemNode, PlayerState>();
  110. s.template registerType<CBonusSystemNode, TeamState>();
  111. //s.template registerType<CGameState>(); //TODO
  112. //s.template registerType<CArmedInstance>();
  113. s.template registerType<CBonusSystemNode, CStack>();
  114. s.template registerType<CBonusSystemNode, BattleInfo>();
  115. //s.template registerType<QuestInfo>();
  116. s.template registerType<CBonusSystemNode, CArtifactInstance>();
  117. //s.template registerType<CObstacleInstance>();
  118. s.template registerType<CObstacleInstance, SpellCreatedObstacle>();
  119. }
  120. VCMI_LIB_NAMESPACE_END