(svn r2005) - Fix: fix previous commit. Using 'New Game (scenario)' will use YOUR difficulty settings but ingame options (eg townnames, currency). Also settings are correctly saved when closing the difficulty window now.

pull/155/head
Darkvater 20 years ago
parent ef1325cd36
commit 106b78927e

@ -483,7 +483,7 @@ static void GameDifficultyWndProc(Window *w, WindowEvent *e)
for (btn = 0; btn != GAME_DIFFICULTY_NUM; btn++) {
val = ((int*)&_opt_mod_temp.diff)[btn];
// if setting has changed, change it
if (val != ((int*)&_opt_mod_temp.diff)[btn])
if (val != ((int*)&_opt_ptr->diff)[btn])
DoCommandP(0, btn, val, NULL, CMD_CHANGE_DIFFICULTY_LEVEL);
}
DoCommandP(0, -1, _opt_mod_temp.diff_level, NULL, CMD_CHANGE_DIFFICULTY_LEVEL);

12
ttd.c

@ -789,8 +789,7 @@ void StartupDisasters(void);
/**
* Start Scenario starts a new game based on a scenario.
* Eg 'New Game' --> select a preset scenario
* This starts a scenario based on your current difficulty settings just
* fix the landscape as that can be different from what is selected in the intro
* This starts a scenario based on your current difficulty settings
*/
static void StartScenario(void)
{
@ -818,12 +817,9 @@ static void StartScenario(void)
ShowErrorMessage(_error_message, STR_4009_GAME_LOAD_FAILED, 0, 0);
}
{
byte landscape = _opt.landscape; // backup loaded landscape;
_opt_ptr = &_opt;
memcpy(_opt_ptr, &_opt_newgame, sizeof(GameOptions));
_opt_ptr->landscape = landscape;
}
_opt_ptr = &_opt;
memcpy(&_opt_ptr->diff, &_opt_newgame.diff, sizeof(GameDifficulty));
_opt.diff_level = _opt_newgame.diff_level;
// Inititalize data
StartupPlayers();

Loading…
Cancel
Save