}
else if (tape->file_version < FILE_VERSION_2_0)
{
+ /* convert pre-2.0 tapes to new tape format */
+
if (tape->pos[i].delay > 1)
{
/* action part */
#define SETUP_TOKEN_SOUND_LOOPS 2
#define SETUP_TOKEN_SOUND_MUSIC 3
#define SETUP_TOKEN_SOUND_SIMPLE 4
-#define SETUP_TOKEN_SCROLL_DELAY 5
-#define SETUP_TOKEN_SOFT_SCROLLING 6
-#define SETUP_TOKEN_FADING 7
-#define SETUP_TOKEN_AUTORECORD 8
-#define SETUP_TOKEN_QUICK_DOORS 9
-#define SETUP_TOKEN_TEAM_MODE 10
-#define SETUP_TOKEN_HANDICAP 11
-#define SETUP_TOKEN_TIME_LIMIT 12
-#define SETUP_TOKEN_FULLSCREEN 13
-
-#define NUM_GLOBAL_SETUP_TOKENS 14
+#define SETUP_TOKEN_TOONS 5
+#define SETUP_TOKEN_SCROLL_DELAY 6
+#define SETUP_TOKEN_SOFT_SCROLLING 7
+#define SETUP_TOKEN_FADING 8
+#define SETUP_TOKEN_AUTORECORD 9
+#define SETUP_TOKEN_QUICK_DOORS 10
+#define SETUP_TOKEN_TEAM_MODE 11
+#define SETUP_TOKEN_HANDICAP 12
+#define SETUP_TOKEN_TIME_LIMIT 13
+#define SETUP_TOKEN_FULLSCREEN 14
+#define SETUP_TOKEN_ASK_ON_ESCAPE 15
+#define SETUP_TOKEN_GRAPHICS_SET 16
+#define SETUP_TOKEN_SOUNDS_SET 17
+#define SETUP_TOKEN_MUSIC_SET 18
+
+#define NUM_GLOBAL_SETUP_TOKENS 19
+
+/* shortcut setup */
+#define SETUP_TOKEN_SAVE_GAME 0
+#define SETUP_TOKEN_LOAD_GAME 1
+#define SETUP_TOKEN_TOGGLE_PAUSE 2
+
+#define NUM_SHORTCUT_SETUP_TOKENS 3
/* player setup */
#define SETUP_TOKEN_USE_JOYSTICK 0
#define NUM_PLAYER_SETUP_TOKENS 16
static struct SetupInfo si;
+static struct SetupShortcutInfo ssi;
static struct SetupInputInfo sii;
static struct TokenInfo global_setup_tokens[] =
{
/* global setup */
- { TYPE_STRING, &si.player_name, "player_name" },
- { TYPE_SWITCH, &si.sound, "sound" },
- { TYPE_SWITCH, &si.sound_loops, "repeating_sound_loops" },
- { TYPE_SWITCH, &si.sound_music, "background_music" },
- { TYPE_SWITCH, &si.sound_simple, "simple_sound_effects" },
- { TYPE_SWITCH, &si.scroll_delay, "scroll_delay" },
- { TYPE_SWITCH, &si.soft_scrolling, "soft_scrolling" },
- { TYPE_SWITCH, &si.fading, "screen_fading" },
- { TYPE_SWITCH, &si.autorecord, "automatic_tape_recording" },
- { TYPE_SWITCH, &si.quick_doors, "quick_doors" },
- { TYPE_SWITCH, &si.team_mode, "team_mode" },
- { TYPE_SWITCH, &si.handicap, "handicap" },
- { TYPE_SWITCH, &si.time_limit, "time_limit" },
- { TYPE_SWITCH, &si.fullscreen, "fullscreen" }
+ { TYPE_STRING, &si.player_name, "player_name" },
+ { TYPE_SWITCH, &si.sound, "sound" },
+ { TYPE_SWITCH, &si.sound_loops, "repeating_sound_loops" },
+ { TYPE_SWITCH, &si.sound_music, "background_music" },
+ { TYPE_SWITCH, &si.sound_simple, "simple_sound_effects" },
+ { TYPE_SWITCH, &si.toons, "toons" },
+ { TYPE_SWITCH, &si.scroll_delay, "scroll_delay" },
+ { TYPE_SWITCH, &si.soft_scrolling, "soft_scrolling" },
+ { TYPE_SWITCH, &si.fading, "screen_fading" },
+ { TYPE_SWITCH, &si.autorecord, "automatic_tape_recording" },
+ { TYPE_SWITCH, &si.quick_doors, "quick_doors" },
+ { TYPE_SWITCH, &si.team_mode, "team_mode" },
+ { TYPE_SWITCH, &si.handicap, "handicap" },
+ { TYPE_SWITCH, &si.time_limit, "time_limit" },
+ { TYPE_SWITCH, &si.fullscreen, "fullscreen" },
+ { TYPE_SWITCH, &si.ask_on_escape, "ask_on_escape" },
+ { TYPE_STRING, &si.graphics_set, "graphics_set" },
+ { TYPE_STRING, &si.sounds_set, "sounds_set" },
+ { TYPE_STRING, &si.music_set, "music_set" },
+};
+
+static struct TokenInfo shortcut_setup_tokens[] =
+{
+ /* shortcut setup */
+ { TYPE_KEY_X11, &ssi.save_game, "shortcut.save_game" },
+ { TYPE_KEY_X11, &ssi.load_game, "shortcut.load_game" },
+ { TYPE_KEY_X11, &ssi.toggle_pause, "shortcut.toggle_pause" }
};
static struct TokenInfo player_setup_tokens[] =
{ TYPE_INTEGER, &sii.joy.ylower, ".joy.ylower" },
{ TYPE_INTEGER, &sii.joy.snap, ".joy.snap_field" },
{ TYPE_INTEGER, &sii.joy.bomb, ".joy.place_bomb" },
- { TYPE_KEY, &sii.key.left, ".key.move_left" },
- { TYPE_KEY, &sii.key.right, ".key.move_right" },
- { TYPE_KEY, &sii.key.up, ".key.move_up" },
- { TYPE_KEY, &sii.key.down, ".key.move_down" },
- { TYPE_KEY, &sii.key.snap, ".key.snap_field" },
- { TYPE_KEY, &sii.key.bomb, ".key.place_bomb" }
+ { TYPE_KEY_X11, &sii.key.left, ".key.move_left" },
+ { TYPE_KEY_X11, &sii.key.right, ".key.move_right" },
+ { TYPE_KEY_X11, &sii.key.up, ".key.move_up" },
+ { TYPE_KEY_X11, &sii.key.down, ".key.move_down" },
+ { TYPE_KEY_X11, &sii.key.snap, ".key.snap_field" },
+ { TYPE_KEY_X11, &sii.key.bomb, ".key.place_bomb" }
};
static void setSetupInfoToDefaults(struct SetupInfo *si)
si->handicap = TRUE;
si->time_limit = TRUE;
si->fullscreen = FALSE;
+ si->ask_on_escape = TRUE;
+
+ si->graphics_set = getStringCopy(GRAPHICS_SUBDIR);
+ si->sounds_set = getStringCopy(SOUNDS_SUBDIR);
+ si->music_set = getStringCopy(MUSIC_SUBDIR);
+
+ si->shortcut.save_game = DEFAULT_KEY_SAVE_GAME;
+ si->shortcut.load_game = DEFAULT_KEY_LOAD_GAME;
+ si->shortcut.toggle_pause = DEFAULT_KEY_TOGGLE_PAUSE;
for (i=0; i<MAX_PLAYERS; i++)
{
if (!setup_file_list)
return;
- /* handle global setup values */
+ /* global setup */
si = setup;
for (i=0; i<NUM_GLOBAL_SETUP_TOKENS; i++)
setSetupInfo(global_setup_tokens, i,
getTokenValue(setup_file_list, global_setup_tokens[i].text));
setup = si;
- /* handle player specific setup values */
+ /* shortcut setup */
+ ssi = setup.shortcut;
+ for (i=0; i<NUM_SHORTCUT_SETUP_TOKENS; i++)
+ setSetupInfo(shortcut_setup_tokens, i,
+ getTokenValue(setup_file_list,shortcut_setup_tokens[i].text));
+ setup.shortcut = ssi;
+
+ /* player setup */
for (pnr=0; pnr<MAX_PLAYERS; pnr++)
{
char prefix[30];
getCookie("SETUP")));
fprintf(file, "\n");
- /* handle global setup values */
+ /* global setup */
si = setup;
for (i=0; i<NUM_GLOBAL_SETUP_TOKENS; i++)
{
fprintf(file, "%s\n", getSetupLine(global_setup_tokens, "", i));
/* just to make things nicer :) */
- if (i == SETUP_TOKEN_PLAYER_NAME)
+ if (i == SETUP_TOKEN_PLAYER_NAME || i == SETUP_TOKEN_GRAPHICS_SET - 1)
fprintf(file, "\n");
}
- /* handle player specific setup values */
+ /* shortcut setup */
+ ssi = setup.shortcut;
+ fprintf(file, "\n");
+ for (i=0; i<NUM_SHORTCUT_SETUP_TOKENS; i++)
+ fprintf(file, "%s\n", getSetupLine(shortcut_setup_tokens, "", i));
+
+ /* player setup */
for (pnr=0; pnr<MAX_PLAYERS; pnr++)
{
char prefix[30];