@@ -47,10 +47,10 @@ HOOK_DECLARE(0x00566EF0, main_game_change_immediate);
4747// HOOK_DECLARE(0x00567270, main_game_configure_map_memory_push);
4848HOOK_DECLARE (0x00567670 , main_game_pregame_blocking_load);
4949HOOK_DECLARE (0x00567AD0 , main_game_load_panic);
50- HOOK_DECLARE (0x00567C10 , main_game_progression_request_level_advance_spoke );
51- HOOK_DECLARE (0x00567C30 , main_game_progression_request_level_advance );
52- HOOK_DECLARE (0x00567C50 , main_game_progression_request_level_advance_hub );
53- HOOK_DECLARE (0x00567C70 , main_game_progression_request_level_advance_normal );
50+ HOOK_DECLARE (0x00567C10 , main_game_request_level_advance_spoke );
51+ HOOK_DECLARE (0x00567C30 , main_game_request_level_advance );
52+ HOOK_DECLARE (0x00567C50 , main_game_request_level_advance_hub );
53+ HOOK_DECLARE (0x00567C70 , main_game_request_level_advance_normal );
5454HOOK_DECLARE (0x00567E40 , main_game_start);
5555
5656bool debug_load_panic_to_main_menu = true ;
@@ -858,17 +858,47 @@ bool __cdecl main_game_loaded_pregame()
858858 return main_game_globals.game_loaded_status == _game_loaded_status_pregame;
859859}
860860
861- void __cdecl main_game_notify_language_change (e_language language )
861+ void __cdecl main_game_reload_map (int32 initial_zone_set_index )
862862{
863- INVOKE (0x00567BF0 , main_game_notify_language_change, language );
863+ // INVOKE(0x00567BF0, main_game_reload_map, initial_zone_set_index );
864864
865- // main_game_reload_map("");
866- // director_notify_map_reset();
865+ director_notify_map_reset ();
866+ if (main_game_globals.game_loaded_status == _game_loaded_status_map_loaded)
867+ {
868+ main_game_reload_map_by_name (main_game_globals.game_loaded_scenario_path , initial_zone_set_index);
869+ }
870+ else
871+ {
872+ event (_event_warning, " main_reload_map: no game is loaded!" );
873+ }
874+ }
875+
876+ void __cdecl main_game_reload_map_by_name (const char * map_name, int32 initial_zone_set_index)
877+ {
878+ // INVOKE(0x00567C00, main_game_reload_map_by_name, map_name, initial_zone_set_index);
879+
880+ if (game_in_progress ())
881+ {
882+ game_options options{};
883+ csmemcpy (&options, game_options_get (), sizeof (game_options));
884+ options.scenario_path .set (map_name);
885+ if (initial_zone_set_index != NONE)
886+ {
887+ options.initial_zone_set_index = (int16)initial_zone_set_index;
888+ }
889+ options.game_simulation = _game_simulation_local;
890+ options.game_playback = _game_playback_none;
891+ csstrnzcpy (main_game_globals.game_loaded_scenario_path , map_name, NUMBEROF (main_game_globals.game_loaded_scenario_path ));
892+ options.load_level_only = true ;
893+ options.random_seed = generate_random_seed ();
894+ game_options_validate (&options);
895+ main_game_change (&options);
896+ }
867897}
868898
869- void __cdecl main_game_progression_request_level_advance_spoke (int32 gp_level_index)
899+ void __cdecl main_game_request_level_advance_spoke (int32 gp_level_index)
870900{
871- // INVOKE(0x00567C10, main_game_progression_request_level_advance_spoke , gp_level_index);
901+ // INVOKE(0x00567C10, main_game_request_level_advance_spoke , gp_level_index);
872902
873903 ASSERT (game_is_campaign ());
874904
@@ -877,19 +907,19 @@ void __cdecl main_game_progression_request_level_advance_spoke(int32 gp_level_in
877907 main_game_globals.map_advance_pending = true ;
878908}
879909
880- void __cdecl main_game_progression_request_level_advance ()
910+ void __cdecl main_game_request_level_advance ()
881911{
882- // INVOKE(0x00567C30, main_game_progression_request_level_advance );
912+ // INVOKE(0x00567C30, main_game_request_level_advance );
883913
884914 ASSERT (game_is_campaign ());
885915
886916 main_game_globals.gp_level_advance_type = _game_progression_level_none;
887917 main_game_globals.map_advance_pending = true ;
888918}
889919
890- void __cdecl main_game_progression_request_level_advance_hub (int32 gp_level_index)
920+ void __cdecl main_game_request_level_advance_hub (int32 gp_level_index)
891921{
892- // INVOKE(0x00567C50, main_game_progression_request_level_advance_hub , gp_level_index);
922+ // INVOKE(0x00567C50, main_game_request_level_advance_hub , gp_level_index);
893923
894924 ASSERT (game_is_campaign ());
895925
@@ -898,9 +928,9 @@ void __cdecl main_game_progression_request_level_advance_hub(int32 gp_level_inde
898928 main_game_globals.map_advance_pending = true ;
899929}
900930
901- void __cdecl main_game_progression_request_level_advance_normal (int32 gp_level_index)
931+ void __cdecl main_game_request_level_advance_normal (int32 gp_level_index)
902932{
903- // INVOKE(0x00567C70, main_game_progression_request_level_advance_normal , gp_level_index);
933+ // INVOKE(0x00567C70, main_game_request_level_advance_normal , gp_level_index);
904934
905935 ASSERT (game_is_campaign ());
906936
0 commit comments