Added quick load ability for savestates
This commit is contained in:
parent
5a36ffdb17
commit
e195290fe4
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 ) {
|
||||
|
|
Loading…
Reference in a new issue