X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=5da89a735d83216a0e8d023ec966ecaa29204d3b;hb=b59a0eedca464cba38e8a6bcfae54db32ac6b15e;hp=3a53cb09d31c8c460ee8e4f2eaa9e85fb2a9d48a;hpb=c5a7bf958a0d27d4adf56afea16aff5d9026bd1f;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 3a53cb09..5da89a73 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 */ @@ -1181,6 +1183,12 @@ void SaveScore(int level_nr) #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 #define SETUP_TOKEN_JOY_DEVICE_NAME 1 @@ -1202,26 +1210,34 @@ 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" } +}; + +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 +1253,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) @@ -1268,6 +1284,9 @@ static void setSetupInfoToDefaults(struct SetupInfo *si) si->time_limit = TRUE; si->fullscreen = FALSE; + si->shortcut.save_game = DEFAULT_KEY_SAVE_GAME; + si->shortcut.load_game = DEFAULT_KEY_LOAD_GAME; + for (i=0; iinput[i].use_joystick = FALSE; @@ -1296,14 +1315,21 @@ static void decodeSetupFileList(struct SetupFileList *setup_file_list) if (!setup_file_list) return; - /* handle global setup values */ + /* global setup */ si = setup; for (i=0; i