X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Ffiles.c;h=3881fbf2847cf79f8e5be33fb51b273ff3467043;hp=01394c4eebded67fddf56698fe4f36f00c9d53fa;hb=a8cbd6caea4467607417ffe93ca70122b6862ff2;hpb=a72578211d241dd0282ed9f803e85e027395f27a diff --git a/src/files.c b/src/files.c index 01394c4e..3881fbf2 100644 --- a/src/files.c +++ b/src/files.c @@ -8171,18 +8171,19 @@ void SaveTape(int nr) tape.changed = FALSE; } -static boolean SaveTapeCheckedExt(int nr, char *msg_replace, char *msg_saved) +static boolean SaveTapeCheckedExt(int nr, char *msg_replace, char *msg_saved, + unsigned int req_state_added) { char *filename = getTapeFilename(nr); boolean new_tape = !fileExists(filename); boolean tape_saved = FALSE; - if (new_tape || Request(msg_replace, REQ_ASK)) + if (new_tape || Request(msg_replace, REQ_ASK | req_state_added)) { SaveTape(nr); if (new_tape) - Request(msg_saved, REQ_CONFIRM); + Request(msg_saved, REQ_CONFIRM | req_state_added); tape_saved = TRUE; } @@ -8192,13 +8193,13 @@ static boolean SaveTapeCheckedExt(int nr, char *msg_replace, char *msg_saved) boolean SaveTapeChecked(int nr) { - return SaveTapeCheckedExt(nr, "Replace old tape?", "Tape saved!"); + return SaveTapeCheckedExt(nr, "Replace old tape?", "Tape saved!", 0); } boolean SaveTapeChecked_LevelSolved(int nr) { return SaveTapeCheckedExt(nr, "Level solved! Replace old tape?", - "Level solved! Tape saved!"); + "Level solved! Tape saved!", REQ_STAY_OPEN); } void DumpTape(struct TapeInfo *tape) @@ -10263,6 +10264,25 @@ static void LoadMenuDesignSettingsFromFilename(char *filename) } } + // special case: check if network and preview player positions are redefined, + // to compare this later against the main menu level preview being redefined + struct TokenIntPtrInfo menu_config_players[] = + { + { "main.network_players.x", &menu.main.network_players.redefined }, + { "main.network_players.y", &menu.main.network_players.redefined }, + { "main.preview_players.x", &menu.main.preview_players.redefined }, + { "main.preview_players.y", &menu.main.preview_players.redefined }, + { "preview.x", &preview.redefined }, + { "preview.y", &preview.redefined } + }; + + for (i = 0; i < ARRAY_SIZE(menu_config_players); i++) + *menu_config_players[i].value = FALSE; + + for (i = 0; i < ARRAY_SIZE(menu_config_players); i++) + if (getHashEntry(setup_file_hash, menu_config_players[i].token) != NULL) + *menu_config_players[i].value = TRUE; + // read (and overwrite with) values that may be specified in config file for (i = 0; image_config_vars[i].token != NULL; i++) {