From 9dbf8a163f20e8d77dc97703dbfc180b91359873 Mon Sep 17 00:00:00 2001 From: rubidium Date: Thu, 12 Mar 2009 14:28:55 +0000 Subject: [PATCH] (svn r15688) -Codechange: unifiy cleaning up the map generation (normal and abort) --- src/genworld.cpp | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/src/genworld.cpp b/src/genworld.cpp index 1d6880208e..f8a8653972 100644 --- a/src/genworld.cpp +++ b/src/genworld.cpp @@ -82,6 +82,26 @@ bool IsGenerateWorldThreaded() return _gw.threaded && !_gw.quit_thread; } +/** + * Clean up the 'mess' of generation. That is show windows again, reset + * thread variables and delete the progress window. + */ +static void CleanupGeneration() +{ + _generating_world = false; + + if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE); + /* Show all vital windows again, because we have hidden them */ + if (_gw.threaded && _game_mode != GM_MENU) ShowVitalWindows(); + _gw.active = false; + _gw.proc = NULL; + _gw.abortp = NULL; + _gw.threaded = false; + + DeleteWindowById(WC_GENERATE_PROGRESS_WINDOW, 0); + MarkWholeScreenDirty(); +} + /** * The internal, real, generate function. */ @@ -158,15 +178,7 @@ static void _GenerateWorld(void *arg) if (_gw.proc != NULL) _gw.proc(); IncreaseGeneratingWorldProgress(GWP_GAME_START); - if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE); - /* Show all vital windows again, because we have hidden them */ - if (_gw.threaded && _game_mode != GM_MENU) ShowVitalWindows(); - _gw.active = false; - _gw.proc = NULL; - _gw.threaded = false; - - DeleteWindowById(WC_GENERATE_PROGRESS_WINDOW, 0); - MarkWholeScreenDirty(); + CleanupGeneration(); if (_network_dedicated) DEBUG(net, 0, "Map generated, starting game"); DEBUG(desync, 1, "new_map: %i\n", _settings_game.game_creation.generation_seed); @@ -241,17 +253,7 @@ void HandleGeneratingWorldAbortion() if (_gw.abortp != NULL) _gw.abortp(); - if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE); - /* Show all vital windows again, because we have hidden them */ - if (_gw.threaded && _game_mode != GM_MENU) ShowVitalWindows(); - - _gw.active = false; - _gw.proc = NULL; - _gw.abortp = NULL; - _gw.threaded = false; - - DeleteWindowById(WC_GENERATE_PROGRESS_WINDOW, 0); - MarkWholeScreenDirty(); + CleanupGeneration(); _gw.thread->Exit(); }