(svn r1076) Feature: Patch setting to autosave the game on exit
authordominik
Mon, 13 Dec 2004 22:10:12 +0000
changeset 643 6f04156241bd
parent 642 56266c1b0e70
child 644 e833509107ad
(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.
saveload.c
sdl.c
settings.c
variables.h
win32.c
--- a/saveload.c	Mon Dec 13 21:28:38 2004 +0000
+++ b/saveload.c	Mon Dec 13 22:10:12 2004 +0000
@@ -1146,6 +1146,14 @@
 	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)
 {
--- a/sdl.c	Mon Dec 13 21:28:38 2004 +0000
+++ b/sdl.c	Mon Dec 13 22:10:12 2004 +0000
@@ -434,6 +434,8 @@
 	return (key << 16) + sym->unicode;
 }
 
+void DoExitSave();
+
 static int PollEvent(void)
 {
 	SDL_Event ev;
@@ -500,9 +502,13 @@
 
 	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;
 
--- a/settings.c	Mon Dec 13 21:28:38 2004 +0000
+++ b/settings.c	Mon Dec 13 22:10:12 2004 +0000
@@ -779,6 +779,7 @@
 	{"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},
--- a/variables.h	Mon Dec 13 21:28:38 2004 +0000
+++ b/variables.h	Mon Dec 13 22:10:12 2004 +0000
@@ -148,6 +148,7 @@
 	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
--- a/win32.c	Mon Dec 13 21:28:38 2004 +0000
+++ b/win32.c	Mon Dec 13 22:10:12 2004 +0000
@@ -181,6 +181,8 @@
 	}
 }
 
+void DoExitSave();
+
 static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 {
 	switch(msg) {
@@ -224,7 +226,15 @@
 	}
 
 	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: