X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=e39ba56759eeabca5e2455482130a2b00cb81999;hb=06caafc8481189a73ffc5beb2105aaec5ac0acb5;hp=3a53cb09d31c8c460ee8e4f2eaa9e85fb2a9d48a;hpb=c5a7bf958a0d27d4adf56afea16aff5d9026bd1f;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 3a53cb09..e39ba567 100644 --- a/src/files.c +++ b/src/files.c @@ -798,6 +798,8 @@ static int LoadTape_BODY(FILE *file, int chunk_size, struct TapeInfo *tape) } 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 */ @@ -1178,8 +1180,18 @@ void SaveScore(int level_nr) #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_DIR 16 +#define SETUP_TOKEN_SOUNDS_DIR 17 +#define SETUP_TOKEN_MUSIC_DIR 18 + +#define NUM_GLOBAL_SETUP_TOKENS 19 -#define NUM_GLOBAL_SETUP_TOKENS 15 +/* shortcut setup */ +#define SETUP_TOKEN_SAVE_GAME 0 +#define SETUP_TOKEN_LOAD_GAME 1 + +#define NUM_SHORTCUT_SETUP_TOKENS 2 /* player setup */ #define SETUP_TOKEN_USE_JOYSTICK 0 @@ -1202,26 +1214,38 @@ void SaveScore(int level_nr) #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.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_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_dir, "graphics_dir" }, + { TYPE_STRING, &si.sounds_dir, "sounds_dir" }, + { TYPE_STRING, &si.music_dir, "music_dir" }, +}; + +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" } }; static struct TokenInfo player_setup_tokens[] = @@ -1237,12 +1261,12 @@ 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) @@ -1267,6 +1291,14 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->handicap = TRUE; si->time_limit = TRUE; si->fullscreen = FALSE; + si->ask_on_escape = TRUE; + + si->graphics_dir = getStringCopy(GRAPHICS_DIRECTORY); + si->sounds_dir = getStringCopy(SOUNDS_DIRECTORY); + si->music_dir = getStringCopy(MUSIC_DIRECTORY); + + si->shortcut.save_game = DEFAULT_KEY_SAVE_GAME; + si->shortcut.load_game = DEFAULT_KEY_LOAD_GAME; for (i=0; i