combatsaveload.cpp 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. /*
  2. ** Command & Conquer Renegade(tm)
  3. ** Copyright 2025 Electronic Arts Inc.
  4. **
  5. ** This program is free software: you can redistribute it and/or modify
  6. ** it under the terms of the GNU General Public License as published by
  7. ** the Free Software Foundation, either version 3 of the License, or
  8. ** (at your option) any later version.
  9. **
  10. ** This program is distributed in the hope that it will be useful,
  11. ** but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. ** GNU General Public License for more details.
  14. **
  15. ** You should have received a copy of the GNU General Public License
  16. ** along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. /***********************************************************************************************
  19. *** Confidential - Westwood Studios ***
  20. ***********************************************************************************************
  21. * *
  22. * Project Name : Commando *
  23. * *
  24. * $Archive:: /Commando/Code/Combat/combatsaveload.cpp $*
  25. * *
  26. * $Author:: Byon_g $*
  27. * *
  28. * $Modtime:: 1/17/02 11:58a $*
  29. * *
  30. * $Revision:: 34 $*
  31. * *
  32. *---------------------------------------------------------------------------------------------*
  33. * Functions: *
  34. * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
  35. #include "combatsaveload.h"
  36. #include "chunkio.h"
  37. #include "gameobjmanager.h"
  38. #include "combat.h"
  39. #include "debug.h"
  40. #include "spawn.h"
  41. #include "timemgr.h"
  42. #include "scripts.h"
  43. #include "persistentgameobjobserver.h"
  44. #include "wwmemlog.h"
  45. #include "cover.h"
  46. #include "objectives.h"
  47. #include "radar.h"
  48. #include "building.h"
  49. #include "bullet.h"
  50. #include "backgroundmgr.h"
  51. #include "weathermgr.h"
  52. #include "weaponview.h"
  53. #include "hud.h"
  54. #include "screenfademanager.h"
  55. /*
  56. **
  57. */
  58. CombatSaveLoadClass _CombatSaveLoad;
  59. enum {
  60. CHUNKID_GAMEOBJMANAGER = 916991654,
  61. CHUNKID_COMBAT_GAME_MODE,
  62. XXX_CHUNKID_TRANSITIONS,
  63. CHUNKID_SPAWNERS,
  64. XXXCHUNKID_TIME,
  65. CHUNKID_SCRIPTS,
  66. CHUNKID_PERSISTENT_GAME_OBJ_OBSERVERS,
  67. CHUNKID_COVER,
  68. CHUNKID_OBJECTIVES,
  69. CHUNKID_RADAR,
  70. XXXCHUNKID_BUILDINGS,
  71. CHUNKID_GAME_OBJ_OBSERVERS,
  72. CHUNKID_BULLETS,
  73. CHUNKID_WEAPON_VIEW,
  74. CHUNKID_DYNAMIC_BACKGROUND,
  75. CHUNKID_DYNAMIC_WEATHER,
  76. CHUNKID_HUD,
  77. CHUNKID_SCREEN_FADE,
  78. };
  79. /*
  80. **
  81. */
  82. bool CombatSaveLoadClass::Save( ChunkSaveClass &csave )
  83. {
  84. WWMEMLOG(MEM_GAMEDATA);
  85. csave.Begin_Chunk( CHUNKID_GAMEOBJMANAGER );
  86. GameObjManager::Save( csave );
  87. csave.End_Chunk();
  88. // CombatManager should load before scripts for SyncTime
  89. csave.Begin_Chunk( CHUNKID_COMBAT_GAME_MODE );
  90. CombatManager::Save( csave );
  91. csave.End_Chunk();
  92. csave.Begin_Chunk( CHUNKID_SPAWNERS );
  93. SpawnManager::Save( csave );
  94. csave.End_Chunk();
  95. csave.Begin_Chunk( CHUNKID_SCRIPTS );
  96. ScriptManager::Save( csave );
  97. csave.End_Chunk();
  98. csave.Begin_Chunk( CHUNKID_PERSISTENT_GAME_OBJ_OBSERVERS );
  99. PersistentGameObjObserverManager::Save( csave );
  100. csave.End_Chunk();
  101. csave.Begin_Chunk( CHUNKID_COVER );
  102. CoverManager::Save( csave );
  103. csave.End_Chunk();
  104. csave.Begin_Chunk( CHUNKID_OBJECTIVES );
  105. ObjectiveManager::Save( csave );
  106. csave.End_Chunk();
  107. csave.Begin_Chunk( CHUNKID_RADAR );
  108. RadarManager::Save( csave );
  109. csave.End_Chunk();
  110. csave.Begin_Chunk( CHUNKID_GAME_OBJ_OBSERVERS );
  111. GameObjObserverManager::Save( csave );
  112. csave.End_Chunk();
  113. csave.Begin_Chunk( CHUNKID_BULLETS );
  114. BulletManager::Save( csave );
  115. csave.End_Chunk();
  116. csave.Begin_Chunk( CHUNKID_WEAPON_VIEW );
  117. WeaponViewClass::Save( csave );
  118. csave.End_Chunk();
  119. csave.Begin_Chunk( CHUNKID_DYNAMIC_BACKGROUND );
  120. BackgroundMgrClass::Save_Dynamic( csave );
  121. csave.End_Chunk();
  122. csave.Begin_Chunk( CHUNKID_DYNAMIC_WEATHER );
  123. WeatherMgrClass::Save_Dynamic( csave );
  124. csave.End_Chunk();
  125. csave.Begin_Chunk( CHUNKID_HUD );
  126. HUDClass::Save( csave );
  127. csave.End_Chunk();
  128. csave.Begin_Chunk( CHUNKID_SCREEN_FADE );
  129. ScreenFadeManager::Save( csave );
  130. csave.End_Chunk();
  131. return true;
  132. }
  133. bool CombatSaveLoadClass::Load( ChunkLoadClass &cload )
  134. {
  135. WWMEMLOG(MEM_GAMEDATA);
  136. while (cload.Open_Chunk()) {
  137. switch(cload.Cur_Chunk_ID()) {
  138. case CHUNKID_GAMEOBJMANAGER:
  139. GameObjManager::Load( cload );
  140. break;
  141. case CHUNKID_COMBAT_GAME_MODE:
  142. CombatManager::Load( cload );
  143. break;
  144. case CHUNKID_SPAWNERS:
  145. SpawnManager::Load( cload );
  146. break;
  147. case CHUNKID_SCRIPTS:
  148. ScriptManager::Load( cload );
  149. break;
  150. case CHUNKID_PERSISTENT_GAME_OBJ_OBSERVERS:
  151. PersistentGameObjObserverManager::Load( cload );
  152. break;
  153. case CHUNKID_COVER:
  154. CoverManager::Load( cload );
  155. break;
  156. case CHUNKID_OBJECTIVES:
  157. ObjectiveManager::Load( cload );
  158. break;
  159. case CHUNKID_RADAR:
  160. RadarManager::Load( cload );
  161. break;
  162. case CHUNKID_GAME_OBJ_OBSERVERS:
  163. GameObjObserverManager::Load( cload );
  164. break;
  165. case CHUNKID_BULLETS:
  166. BulletManager::Load( cload );
  167. break;
  168. case CHUNKID_WEAPON_VIEW:
  169. WeaponViewClass::Load( cload );
  170. break;
  171. case CHUNKID_DYNAMIC_BACKGROUND:
  172. BackgroundMgrClass::Load_Dynamic( cload );
  173. break;
  174. case CHUNKID_DYNAMIC_WEATHER:
  175. WeatherMgrClass::Load_Dynamic( cload );
  176. break;
  177. case CHUNKID_HUD:
  178. HUDClass::Load( cload );
  179. break;
  180. case CHUNKID_SCREEN_FADE:
  181. ScreenFadeManager::Load( cload );
  182. break;
  183. default:
  184. Debug_Say(( "Unrecognized CombatSaveLoad chunkID\n" ));
  185. break;
  186. }
  187. cload.Close_Chunk();
  188. }
  189. SaveLoadSystemClass::Register_Post_Load_Callback(this);
  190. return true;
  191. }
  192. void CombatSaveLoadClass::On_Post_Load(void)
  193. {
  194. }