diff --git a/common/main/state.h b/common/main/state.h index d7d218c7f..04751344a 100644 --- a/common/main/state.h +++ b/common/main/state.h @@ -40,7 +40,7 @@ extern int state_save_old_game(int slotnum, const char * sg_name, player_rw * sg #ifdef __cplusplus int state_save_all(int secret_save, const char *filename_override, int blind_save); -int state_restore_all(int in_game, int secret_restore, const char *filename_override); +int state_restore_all(int in_game, int secret_restore, const char *filename_override, int blind_save); extern unsigned state_game_id; extern int state_quick_item; @@ -49,7 +49,7 @@ int state_save_all_sub(const char *filename, const char *desc); int state_restore_all_sub(const char *filename, int secret_restore); int state_get_save_file(char *fname, char * dsc, int blind_save); -int state_get_restore_file(char *fname); +int state_get_restore_file(char *fname, int blind_save); int state_get_game_id(const char *filename); #if defined(DXX_BUILD_DESCENT_I) static inline void set_pos_from_return_segment(void) diff --git a/similar/main/game.cpp b/similar/main/game.cpp index 2e568356c..4a3fad607 100644 --- a/similar/main/game.cpp +++ b/similar/main/game.cpp @@ -813,10 +813,10 @@ void show_help() nm_set_item_text(& m[nitems++], TXT_HELP_F2); #if !(defined(__APPLE__) || defined(macintosh)) nm_set_item_text(& m[nitems++], "Alt-F2/F3\t SAVE/LOAD GAME"); - nm_set_item_text(& m[nitems++], "Alt-F1\t Fast Save"); + nm_set_item_text(& m[nitems++], "Alt-Shift-F2/F3\t Fast Save"); #else - nm_set_item_text(& m[nitems++], "Alt-F2/F3 (\x85-SHIFT-s/\x85-o)\t SAVE/LOAD GAME"); - nm_set_item_text(& m[nitems++], "Alt-F1 (\x85-s)\t Fast Save"); + nm_set_item_text(& m[nitems++], "Alt-F2/F3 (\x85-SHIFT-s/o)\t SAVE/LOAD GAME"); + nm_set_item_text(& m[nitems++], "Alt-Shift-F2/F3 (\x85-s/o)\t Quick Save/Load"); #endif nm_set_item_text(& m[nitems++], "F3\t SWITCH COCKPIT MODES"); #if defined(DXX_BUILD_DESCENT_II) diff --git a/similar/main/gamecntl.cpp b/similar/main/gamecntl.cpp index bbeabd7d7..5c4721837 100644 --- a/similar/main/gamecntl.cpp +++ b/similar/main/gamecntl.cpp @@ -860,15 +860,20 @@ static int HandleSystemKey(int key) break; KEY_MAC(case KEY_COMMAND+KEY_S:) - case KEY_ALTED+KEY_F1: + case KEY_ALTED+KEY_SHIFTED+KEY_F2: if (!Player_is_dead) state_save_all(0, NULL, 1); break; - KEY_MAC(case KEY_COMMAND+KEY_O:) + KEY_MAC(case KEY_COMMAND+KEY_SHIFTED+KEY_O:) KEY_MAC(case KEY_COMMAND+KEY_ALTED+KEY_3:) case KEY_ALTED+KEY_F3: if (!((Game_mode & GM_MULTI) && !(Game_mode & GM_MULTI_COOP))) - state_restore_all(1, 0, NULL); + state_restore_all(1, 0, NULL, 0); + break; + KEY_MAC(case KEY_COMMAND+KEY_O:) + case KEY_ALTED+KEY_SHIFTED+KEY_F3: + if (!((Game_mode & GM_MULTI) && !(Game_mode & GM_MULTI_COOP))) + state_restore_all(1, 0, NULL, 1); break; #if defined(DXX_BUILD_DESCENT_II) diff --git a/similar/main/gameseq.cpp b/similar/main/gameseq.cpp index f9223668a..edd15c1e8 100644 --- a/similar/main/gameseq.cpp +++ b/similar/main/gameseq.cpp @@ -1054,7 +1054,7 @@ static void StartNewLevelSecret(int level_num, int page_in_textures) pw_save = Primary_weapon; sw_save = Secondary_weapon; - state_restore_all(1, 1, SECRETC_FILENAME); + state_restore_all(1, 1, SECRETC_FILENAME, 0); Primary_weapon = pw_save; Secondary_weapon = sw_save; reset_special_effects(); @@ -1101,7 +1101,7 @@ void ExitSecretLevel(void) do_screen_message(TXT_SECRET_RETURN); pw_save = Primary_weapon; sw_save = Secondary_weapon; - state_restore_all(1, 1, SECRETB_FILENAME); + state_restore_all(1, 1, SECRETB_FILENAME, 0); Primary_weapon = pw_save; Secondary_weapon = sw_save; } else { @@ -1593,7 +1593,7 @@ void DoPlayerDead() if (PHYSFSX_exists(SECRETB_FILENAME,0)) { do_screen_message(TXT_SECRET_RETURN); - state_restore_all(1, 2, SECRETB_FILENAME); // 2 means you died + state_restore_all(1, 2, SECRETB_FILENAME, 0); // 2 means you died set_pos_from_return_segment(); Players[Player_num].lives--; // re-lose the life, Players[Player_num].lives got written over in restore. } else { @@ -1619,7 +1619,7 @@ void DoPlayerDead() do_screen_message(TXT_SECRET_RETURN); if (!Control_center_destroyed) state_save_all(2, SECRETC_FILENAME, 0); - state_restore_all(1, 2, SECRETB_FILENAME); + state_restore_all(1, 2, SECRETB_FILENAME, 0); set_pos_from_return_segment(); Players[Player_num].lives--; // re-lose the life, Players[Player_num].lives got written over in restore. } else { diff --git a/similar/main/menu.cpp b/similar/main/menu.cpp index af796156e..5256c0980 100644 --- a/similar/main/menu.cpp +++ b/similar/main/menu.cpp @@ -564,7 +564,7 @@ int do_option ( int select) select_demo(); break; case MENU_LOAD_GAME: - state_restore_all(0, 0, NULL); + state_restore_all(0, 0, NULL, 0); break; #ifdef EDITOR case MENU_EDITOR: diff --git a/similar/main/multi.cpp b/similar/main/multi.cpp index e2d3ebc48..db45a4301 100644 --- a/similar/main/multi.cpp +++ b/similar/main/multi.cpp @@ -4911,7 +4911,7 @@ void multi_initiate_restore_game() } } } - slot = state_get_restore_file(filename); + slot = state_get_restore_file(filename, 0); if (!slot) return; state_game_id = state_get_game_id(filename); diff --git a/similar/main/state.cpp b/similar/main/state.cpp index ca69026cc..77a017fac 100644 --- a/similar/main/state.cpp +++ b/similar/main/state.cpp @@ -720,9 +720,9 @@ int state_get_save_file(char * fname, char * dsc, int blind_save) return state_get_savegame_filename(fname, dsc, "Save Game", blind_save); } -int state_get_restore_file(char * fname) +int state_get_restore_file(char * fname, int blind_save) { - return state_get_savegame_filename(fname, NULL, "Select Game to Restore", 0); + return state_get_savegame_filename(fname, NULL, "Select Game to Restore", blind_save); } #if defined(DXX_BUILD_DESCENT_I) @@ -1315,7 +1315,7 @@ void set_pos_from_return_segment(void) #endif // ----------------------------------------------------------------------------------- -int state_restore_all(int in_game, int secret_restore, const char *filename_override) +int state_restore_all(int in_game, int secret_restore, const char *filename_override, int blind_save) { char filename[PATH_MAX]; int filenum = -1; @@ -1350,7 +1350,7 @@ int state_restore_all(int in_game, int secret_restore, const char *filename_over filenum = NUM_SAVES+1; // place outside of save slots } else #endif - if (!(filenum = state_get_restore_file(filename))) { + if (!(filenum = state_get_restore_file(filename, blind_save))) { start_time(); return 0; } @@ -1381,7 +1381,7 @@ int state_restore_all(int in_game, int secret_restore, const char *filename_over } } #endif - if ( !secret_restore && in_game ) { + if ( !secret_restore && in_game && !blind_save ) { int choice; choice = nm_messagebox( NULL, 2, "Yes", "No", "Restore Game?" ); if ( choice != 0 ) {