mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-06 14:27:16 +00:00
(svn r1076) Feature: Patch setting to autosave the game on exit
If you set autosave_on_exit = true in openttd.cfg, your game will be saved as exit.sav in the autosave folder and you won't be asked if you want to quit the game any more.
This commit is contained in:
parent
2b13b2d239
commit
77e882c3bd
@ -1146,6 +1146,14 @@ bool EmergencySave()
|
||||
return true;
|
||||
}
|
||||
|
||||
void DoExitSave()
|
||||
{
|
||||
char buf[200];
|
||||
sprintf(buf, "%s%sexit.sav", _path.autosave_dir, PATHSEP);
|
||||
debug(buf);
|
||||
SaveOrLoad(buf, SL_SAVE);
|
||||
}
|
||||
|
||||
// not used right now, but could be used if extensions of savegames are garbled
|
||||
/*int GetSavegameType(char *file)
|
||||
{
|
||||
|
12
sdl.c
12
sdl.c
@ -434,6 +434,8 @@ static uint32 ConvertSdlKeyIntoMy(SDL_keysym *sym)
|
||||
return (key << 16) + sym->unicode;
|
||||
}
|
||||
|
||||
void DoExitSave();
|
||||
|
||||
static int PollEvent(void)
|
||||
{
|
||||
SDL_Event ev;
|
||||
@ -500,9 +502,13 @@ static int PollEvent(void)
|
||||
|
||||
case SDL_QUIT:
|
||||
// do not ask to quit on the main screen
|
||||
if (_game_mode != GM_MENU)
|
||||
AskExitGame();
|
||||
else
|
||||
if (_game_mode != GM_MENU) {
|
||||
if(_patches.autosave_on_exit) {
|
||||
DoExitSave();
|
||||
return ML_QUIT;
|
||||
} else
|
||||
AskExitGame();
|
||||
} else
|
||||
return ML_QUIT;
|
||||
break;
|
||||
|
||||
|
@ -779,6 +779,7 @@ static const SettingDesc patch_player_settings[] = {
|
||||
{"errmsg_duration", SDT_UINT8, (void*)5, &_patches.errmsg_duration, NULL},
|
||||
{"toolbar_pos", SDT_UINT8, (void*)0, &_patches.toolbar_pos, NULL},
|
||||
{"keep_all_autosave", SDT_BOOL, (void*)false, &_patches.keep_all_autosave, NULL},
|
||||
{"autosave_on_exit", SDT_BOOL, (void*)false, &_patches.autosave_on_exit, NULL},
|
||||
|
||||
{"bridge_pillars", SDT_BOOL, (void*)true, &_patches.bridge_pillars, NULL},
|
||||
{"invisible_trees", SDT_BOOL, (void*)false, &_patches.invisible_trees, NULL},
|
||||
|
@ -148,6 +148,7 @@ typedef struct Patches {
|
||||
uint32 colored_news_date; // when does newspaper become colored?
|
||||
|
||||
bool keep_all_autosave; // name the autosave in a different way.
|
||||
bool autosave_on_exit; // save an autosave when you quit the game, but do not ask "Do you really want to quit?"
|
||||
bool extra_dynamite; // extra dynamite
|
||||
|
||||
bool never_expire_vehicles; // never expire vehicles
|
||||
|
12
win32.c
12
win32.c
@ -181,6 +181,8 @@ static void ClientSizeChanged(int w, int h)
|
||||
}
|
||||
}
|
||||
|
||||
void DoExitSave();
|
||||
|
||||
static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch(msg) {
|
||||
@ -224,7 +226,15 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP
|
||||
}
|
||||
|
||||
case WM_CLOSE:
|
||||
AskExitGame();
|
||||
// do not ask to quit on the main screen
|
||||
if (_game_mode != GM_MENU) {
|
||||
if(_patches.autosave_on_exit) {
|
||||
DoExitSave();
|
||||
_exit_game = true;
|
||||
} else
|
||||
AskExitGame();
|
||||
} else
|
||||
return ML_QUIT;
|
||||
return 0;
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
|
Loading…
Reference in New Issue
Block a user