diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 2765c4adf..1c1e67c2c 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,5 +1,9 @@ D1X-Rebirth Changelog +20100225 +-------- +main/game.c, main/gamecntl.c, main/gameseq.c, main/state.c, main/state.h: Put fast save back, using Alt-F1 instead of F6 + 20100224 -------- main/kconfig.c: Due to the change of GameCfg.ControlType, Mouselook was broken - fixed diff --git a/main/game.c b/main/game.c index c13d879e5..424f8445f 100644 --- a/main/game.c +++ b/main/game.c @@ -734,7 +734,7 @@ extern int Death_sequence_aborted; void show_help() { int nitems = 0; - newmenu_item m[25]; + newmenu_item m[26]; m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = TXT_HELP_ESC; m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "SHIFT-ESC\t SHOW GAME LOG"; @@ -742,8 +742,10 @@ void show_help() m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = TXT_HELP_F2; #if !(defined(__APPLE__) || defined(macintosh)) m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "Alt-F2/F3\t SAVE/LOAD GAME"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "Alt-F1\t Fast Save"; #else - m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "Alt-F2/F3 (\x85-s/o)\t SAVE/LOAD GAME"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "Alt-F2/F3 (\x85-SHIFT-s/\x85-o)\t SAVE/LOAD GAME"; + m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "Alt-F1 (\x85-s)\t Fast Save"; #endif m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = "F3\t SWITCH COCKPIT MODES"; m[nitems].type = NM_TYPE_TEXT; m[nitems++].text = TXT_HELP_F5; diff --git a/main/gamecntl.c b/main/gamecntl.c index 4c3ebc6ca..8f54323f3 100644 --- a/main/gamecntl.c +++ b/main/gamecntl.c @@ -656,9 +656,11 @@ void HandleGameKey(int key) break; } - KEY_MAC(case KEY_COMMAND+KEY_S:) + KEY_MAC(case KEY_COMMAND+KEY_SHIFTED+KEY_S:) KEY_MAC(case KEY_COMMAND+KEY_ALTED+KEY_2:) - case KEY_ALTED+KEY_F2: if (!Player_is_dead) state_save_all( 0 ); break; // 0 means not between levels. + case KEY_ALTED+KEY_F2: if (!Player_is_dead) state_save_all( 0, 0 ); break; + KEY_MAC(case KEY_COMMAND+KEY_S:) + case KEY_ALTED+KEY_F1: if (!Player_is_dead) state_save_all(0, 1); break; KEY_MAC(case KEY_COMMAND+KEY_O:) KEY_MAC(case KEY_COMMAND+KEY_ALTED+KEY_3:) case KEY_ALTED+KEY_F3: if (!Player_is_dead) state_restore_all(1); break; diff --git a/main/gameseq.c b/main/gameseq.c index 535fdc045..1bb49ab42 100644 --- a/main/gameseq.c +++ b/main/gameseq.c @@ -728,10 +728,13 @@ void InitPlayerObject() } extern void game_disable_cheats(); +extern int state_default_item; //starts a new game on the given level void StartNewGame(int start_level) { + state_default_item = -2; // for first blind save, pick slot to save in + Game_mode = GM_NORMAL; Function_mode = FMODE_GAME; diff --git a/main/state.c b/main/state.c index ff3502a92..db7f9a6e0 100644 --- a/main/state.c +++ b/main/state.c @@ -147,13 +147,15 @@ void rpad_string( char * string, int max_chars ) } #endif +int state_default_item = 0; + /* Present a menu for selection of a savegame filename. * For saving, dsc should be a pre-allocated buffer into which the new * savegame description will be stored. * For restoring, dsc should be NULL, in which case empty slots will not be * selectable and savagames descriptions will not be editable. */ -int state_get_savegame_filename(char * fname, char * dsc, char * caption ) +int state_get_savegame_filename(char * fname, char * dsc, char * caption, int blind_save) { PHYSFS_file * fp; int i, choice, version, nsaves; @@ -163,7 +165,6 @@ int state_get_savegame_filename(char * fname, char * dsc, char * caption ) grs_bitmap *sc_bmp[NUM_SAVES]; char id[5]; int valid; - static int state_default_item = 0; nsaves=0; m[0].type = NM_TYPE_TEXT; m[0].text = "\n\n\n\n"; @@ -210,7 +211,17 @@ int state_get_savegame_filename(char * fname, char * dsc, char * caption ) } sc_last_item = -1; - choice = newmenu_do3( NULL, caption, NUM_SAVES+1, m, (int (*)(newmenu *, d_event *, void *))state_callback, sc_bmp, state_default_item + 1, NULL, -1, -1 ); + + if (blind_save && state_default_item < 0) + { + blind_save = 0; // haven't picked a slot yet + state_default_item = 0; + } + + if (blind_save) + choice = state_default_item + 1; + else + choice = newmenu_do3( NULL, caption, NUM_SAVES+1, m, (int (*)(newmenu *, d_event *, void *))state_callback, sc_bmp, state_default_item + 1, NULL, -1, -1 ); for (i=0; i