summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2006-09-04 17:30:30 +0000
committerrubidium <rubidium@openttd.org>2006-09-04 17:30:30 +0000
commita7cfb80c40d9a4c544ece10872fd3808f9f59f8d (patch)
tree6cd5046c6a647012a61f5f97b8c5794446df92c5
parent56d06ba0a75b7157fdd236327cd08f9b0538551e (diff)
downloadopenttd-a7cfb80c40d9a4c544ece10872fd3808f9f59f8d.tar.xz
(svn r6380) -Codechange: unify all ways to quit OTTD.
This means that in the intro menu the 'Quit' button immediatelly quits and the 'Quit' in the menu of the normal game and scenario editor immediatelly quits when the 'autosave_on_exit' patch is turned on. This is the same way as the OS/window manager initiated quits, like alt-F4 and the 'x' in the (OS/window manager drawn) title bar of OTTD.
-rw-r--r--functions.h1
-rw-r--r--intro_gui.c2
-rw-r--r--main_gui.c6
-rw-r--r--openttd.c13
-rw-r--r--saveload.h1
-rw-r--r--video/cocoa_v.m18
-rw-r--r--video/sdl_v.c20
-rw-r--r--video/win32_v.c11
8 files changed, 23 insertions, 49 deletions
diff --git a/functions.h b/functions.h
index 2969fb2e1..352f7b962 100644
--- a/functions.h
+++ b/functions.h
@@ -233,6 +233,7 @@ void LoadFromConfig(void);
void SaveToConfig(void);
void CheckConfig(void);
int ttd_main(int argc, char* argv[]);
+void HandleExitGameRequest(void);
void DeterminePaths(void);
diff --git a/intro_gui.c b/intro_gui.c
index c10a3bc80..9b12a1a5b 100644
--- a/intro_gui.c
+++ b/intro_gui.c
@@ -77,7 +77,7 @@ static void SelectGameWndProc(Window *w, WindowEvent *e)
case 12: ShowGameOptions(); break;
case 13: ShowGameDifficulty(); break;
case 14: ShowPatchesSelection(); break;
- case 15: AskExitGame(); break;
+ case 15: HandleExitGameRequest(); break;
}
break;
diff --git a/main_gui.c b/main_gui.c
index 503c3c68a..8be237ece 100644
--- a/main_gui.c
+++ b/main_gui.c
@@ -170,14 +170,14 @@ static void MenuClickSaveLoad(int index)
case 0: ShowSaveLoadDialog(SLD_SAVE_SCENARIO); break;
case 1: ShowSaveLoadDialog(SLD_LOAD_SCENARIO); break;
case 2: AskExitToGameMenu(); break;
- case 4: AskExitGame(); break;
+ case 4: HandleExitGameRequest(); break;
}
} else {
switch (index) {
case 0: ShowSaveLoadDialog(SLD_SAVE_GAME); break;
case 1: ShowSaveLoadDialog(SLD_LOAD_GAME); break;
case 2: AskExitToGameMenu(); break;
- case 3: AskExitGame(); break;
+ case 3: HandleExitGameRequest(); break;
}
}
}
@@ -2226,7 +2226,7 @@ static void MainWindowWndProc(Window *w, WindowEvent *e)
switch (e->keypress.keycode) {
case 'Q' | WKC_CTRL:
case 'Q' | WKC_META:
- AskExitGame();
+ HandleExitGameRequest();
break;
}
diff --git a/openttd.c b/openttd.c
index d4414fdf3..447c5ce89 100644
--- a/openttd.c
+++ b/openttd.c
@@ -537,6 +537,19 @@ int ttd_main(int argc, char *argv[])
return 0;
}
+void HandleExitGameRequest(void)
+{
+ if (_game_mode == GM_MENU) { // do not ask to quit on the main screen
+ _exit_game = true;
+ } else if (_patches.autosave_on_exit) {
+ DoExitSave();
+ _exit_game = true;
+ } else {
+ AskExitGame();
+ }
+}
+
+
/** Mutex so that only one thread can communicate with the main program
* at any given time */
static ThreadMsg _message = MSG_OTTD_NO_MESSAGE;
diff --git a/saveload.h b/saveload.h
index f1ba3ec2b..bdd2de489 100644
--- a/saveload.h
+++ b/saveload.h
@@ -20,6 +20,7 @@ typedef enum SaveOrLoadMode {
SaveOrLoadResult SaveOrLoad(const char *filename, int mode);
void WaitTillSaved(void);
+void DoExitSave(void);
typedef void ChunkSaveLoadProc(void);
diff --git a/video/cocoa_v.m b/video/cocoa_v.m
index d2b88b5f2..2db610282 100644
--- a/video/cocoa_v.m
+++ b/video/cocoa_v.m
@@ -197,22 +197,6 @@ static void QZ_CheckPaletteAnim(void)
-extern void DoExitSave(void);
-
-static void QZ_AskQuit(void)
-{
- if (_game_mode == GM_MENU) { // do not ask to quit on the main screen
- _exit_game = true;
- } else if (_patches.autosave_on_exit) {
- DoExitSave();
- _exit_game = true;
- } else {
- AskExitGame();
- }
-}
-
-
-
typedef struct VkMapping {
unsigned short vk_from;
byte map_to;
@@ -921,7 +905,7 @@ static void QZ_SetPortAlphaOpaque(void)
@implementation OTTD_QuartzWindowDelegate
- (BOOL)windowShouldClose:(id)sender
{
- QZ_AskQuit();
+ HandleExitGameRequest();
return NO;
}
diff --git a/video/sdl_v.c b/video/sdl_v.c
index 57c81c556..b8b79b86b 100644
--- a/video/sdl_v.c
+++ b/video/sdl_v.c
@@ -303,8 +303,6 @@ static uint32 ConvertSdlKeyIntoMy(SDL_keysym *sym)
return (key << 16) + sym->unicode;
}
-extern void DoExitSave(void);
-
static int PollEvent(void)
{
SDL_Event ev;
@@ -376,21 +374,9 @@ static int PollEvent(void)
}
break;
- case SDL_QUIT:
- // do not ask to quit on the main screen
- if (_game_mode != GM_MENU) {
- if (_patches.autosave_on_exit) {
- DoExitSave();
- return 0;
- } else {
- AskExitGame();
- }
- } else {
- return 0;
- }
- break;
+ case SDL_QUIT: HandleExitGameRequest(); break;
- case SDL_KEYDOWN: /* Toggle full-screen on ALT + ENTER/F */
+ case SDL_KEYDOWN: /* Toggle full-screen on ALT + ENTER/F */
if ((ev.key.keysym.mod & (KMOD_ALT | KMOD_META)) &&
(ev.key.keysym.sym == SDLK_RETURN || ev.key.keysym.sym == SDLK_f)) {
ToggleFullScreen(!_fullscreen);
@@ -448,8 +434,6 @@ static void SdlVideoMainLoop(void)
InteractiveRandom(); // randomness
while ((i = PollEvent()) == -1) {}
- if (i >= 0) return;
-
if (_exit_game) return;
mod = SDL_CALL SDL_GetModState();
diff --git a/video/win32_v.c b/video/win32_v.c
index 207683db4..05bc4d7a6 100644
--- a/video/win32_v.c
+++ b/video/win32_v.c
@@ -151,8 +151,6 @@ static void ClientSizeChanged(int w, int h)
}
}
-extern void DoExitSave(void);
-
#ifdef _DEBUG
// Keep this function here..
// It allows you to redraw the screen from within the MSVC debugger
@@ -256,14 +254,7 @@ static LRESULT CALLBACK WndProcGdi(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lP
}
case WM_CLOSE:
- if (_game_mode == GM_MENU) { // do not ask to quit on the main screen
- _exit_game = true;
- } else if (_patches.autosave_on_exit) {
- DoExitSave();
- _exit_game = true;
- } else {
- AskExitGame();
- }
+ HandleExitGameRequest();
_window_maximize = IsZoomed(_wnd.main_wnd);
return 0;