mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-11 13:10:45 +00:00
(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.
This commit is contained in:
parent
2ca590ab75
commit
ca9ec81fd1
@ -233,6 +233,7 @@ void LoadFromConfig(void);
|
|||||||
void SaveToConfig(void);
|
void SaveToConfig(void);
|
||||||
void CheckConfig(void);
|
void CheckConfig(void);
|
||||||
int ttd_main(int argc, char* argv[]);
|
int ttd_main(int argc, char* argv[]);
|
||||||
|
void HandleExitGameRequest(void);
|
||||||
|
|
||||||
void DeterminePaths(void);
|
void DeterminePaths(void);
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ static void SelectGameWndProc(Window *w, WindowEvent *e)
|
|||||||
case 12: ShowGameOptions(); break;
|
case 12: ShowGameOptions(); break;
|
||||||
case 13: ShowGameDifficulty(); break;
|
case 13: ShowGameDifficulty(); break;
|
||||||
case 14: ShowPatchesSelection(); break;
|
case 14: ShowPatchesSelection(); break;
|
||||||
case 15: AskExitGame(); break;
|
case 15: HandleExitGameRequest(); break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -170,14 +170,14 @@ static void MenuClickSaveLoad(int index)
|
|||||||
case 0: ShowSaveLoadDialog(SLD_SAVE_SCENARIO); break;
|
case 0: ShowSaveLoadDialog(SLD_SAVE_SCENARIO); break;
|
||||||
case 1: ShowSaveLoadDialog(SLD_LOAD_SCENARIO); break;
|
case 1: ShowSaveLoadDialog(SLD_LOAD_SCENARIO); break;
|
||||||
case 2: AskExitToGameMenu(); break;
|
case 2: AskExitToGameMenu(); break;
|
||||||
case 4: AskExitGame(); break;
|
case 4: HandleExitGameRequest(); break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch (index) {
|
switch (index) {
|
||||||
case 0: ShowSaveLoadDialog(SLD_SAVE_GAME); break;
|
case 0: ShowSaveLoadDialog(SLD_SAVE_GAME); break;
|
||||||
case 1: ShowSaveLoadDialog(SLD_LOAD_GAME); break;
|
case 1: ShowSaveLoadDialog(SLD_LOAD_GAME); break;
|
||||||
case 2: AskExitToGameMenu(); 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) {
|
switch (e->keypress.keycode) {
|
||||||
case 'Q' | WKC_CTRL:
|
case 'Q' | WKC_CTRL:
|
||||||
case 'Q' | WKC_META:
|
case 'Q' | WKC_META:
|
||||||
AskExitGame();
|
HandleExitGameRequest();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
13
openttd.c
13
openttd.c
@ -537,6 +537,19 @@ int ttd_main(int argc, char *argv[])
|
|||||||
return 0;
|
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
|
/** Mutex so that only one thread can communicate with the main program
|
||||||
* at any given time */
|
* at any given time */
|
||||||
static ThreadMsg _message = MSG_OTTD_NO_MESSAGE;
|
static ThreadMsg _message = MSG_OTTD_NO_MESSAGE;
|
||||||
|
@ -20,6 +20,7 @@ typedef enum SaveOrLoadMode {
|
|||||||
|
|
||||||
SaveOrLoadResult SaveOrLoad(const char *filename, int mode);
|
SaveOrLoadResult SaveOrLoad(const char *filename, int mode);
|
||||||
void WaitTillSaved(void);
|
void WaitTillSaved(void);
|
||||||
|
void DoExitSave(void);
|
||||||
|
|
||||||
|
|
||||||
typedef void ChunkSaveLoadProc(void);
|
typedef void ChunkSaveLoadProc(void);
|
||||||
|
@ -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 {
|
typedef struct VkMapping {
|
||||||
unsigned short vk_from;
|
unsigned short vk_from;
|
||||||
byte map_to;
|
byte map_to;
|
||||||
@ -921,7 +905,7 @@ static void QZ_SetPortAlphaOpaque(void)
|
|||||||
@implementation OTTD_QuartzWindowDelegate
|
@implementation OTTD_QuartzWindowDelegate
|
||||||
- (BOOL)windowShouldClose:(id)sender
|
- (BOOL)windowShouldClose:(id)sender
|
||||||
{
|
{
|
||||||
QZ_AskQuit();
|
HandleExitGameRequest();
|
||||||
|
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
|
@ -303,8 +303,6 @@ static uint32 ConvertSdlKeyIntoMy(SDL_keysym *sym)
|
|||||||
return (key << 16) + sym->unicode;
|
return (key << 16) + sym->unicode;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void DoExitSave(void);
|
|
||||||
|
|
||||||
static int PollEvent(void)
|
static int PollEvent(void)
|
||||||
{
|
{
|
||||||
SDL_Event ev;
|
SDL_Event ev;
|
||||||
@ -376,19 +374,7 @@ static int PollEvent(void)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SDL_QUIT:
|
case SDL_QUIT: HandleExitGameRequest(); break;
|
||||||
// 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_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)) &&
|
if ((ev.key.keysym.mod & (KMOD_ALT | KMOD_META)) &&
|
||||||
@ -448,8 +434,6 @@ static void SdlVideoMainLoop(void)
|
|||||||
InteractiveRandom(); // randomness
|
InteractiveRandom(); // randomness
|
||||||
|
|
||||||
while ((i = PollEvent()) == -1) {}
|
while ((i = PollEvent()) == -1) {}
|
||||||
if (i >= 0) return;
|
|
||||||
|
|
||||||
if (_exit_game) return;
|
if (_exit_game) return;
|
||||||
|
|
||||||
mod = SDL_CALL SDL_GetModState();
|
mod = SDL_CALL SDL_GetModState();
|
||||||
|
@ -151,8 +151,6 @@ static void ClientSizeChanged(int w, int h)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void DoExitSave(void);
|
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
// Keep this function here..
|
// Keep this function here..
|
||||||
// It allows you to redraw the screen from within the MSVC debugger
|
// 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:
|
case WM_CLOSE:
|
||||||
if (_game_mode == GM_MENU) { // do not ask to quit on the main screen
|
HandleExitGameRequest();
|
||||||
_exit_game = true;
|
|
||||||
} else if (_patches.autosave_on_exit) {
|
|
||||||
DoExitSave();
|
|
||||||
_exit_game = true;
|
|
||||||
} else {
|
|
||||||
AskExitGame();
|
|
||||||
}
|
|
||||||
_window_maximize = IsZoomed(_wnd.main_wnd);
|
_window_maximize = IsZoomed(_wnd.main_wnd);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user