1
0
Fork 0

(svn r19871) -Fix [FS#3826]: update the landscape buttons in the main menu / newgame window correctly (planetmaker)

release/1.1
yexo 2010-05-21 06:59:45 +00:00
parent 93233a9335
commit 9ed9aa9012
3 changed files with 17 additions and 19 deletions

View File

@ -87,6 +87,7 @@ bool IsGeneratingWorldAborted();
void HandleGeneratingWorldAbortion(); void HandleGeneratingWorldAbortion();
/* genworld_gui.cpp */ /* genworld_gui.cpp */
void SetNewLandscapeType(byte landscape);
void SetGeneratingWorldProgress(GenWorldProgress cls, uint total); void SetGeneratingWorldProgress(GenWorldProgress cls, uint total);
void IncreaseGeneratingWorldProgress(GenWorldProgress cls); void IncreaseGeneratingWorldProgress(GenWorldProgress cls);
void PrepareGenerateWorldProgress(); void PrepareGenerateWorldProgress();

View File

@ -52,11 +52,11 @@ extern void MakeNewgameSettingsLive();
* Changes landscape type and sets genworld window dirty * Changes landscape type and sets genworld window dirty
* @param landscape new landscape type * @param landscape new landscape type
*/ */
static inline void SetNewLandscapeType(byte landscape) void SetNewLandscapeType(byte landscape)
{ {
_settings_newgame.game_creation.landscape = landscape; _settings_newgame.game_creation.landscape = landscape;
SetWindowClassesDirty(WC_SELECT_GAME); InvalidateWindowClassesData(WC_SELECT_GAME);
SetWindowClassesDirty(WC_GENERATE_LANDSCAPE); InvalidateWindowClassesData(WC_GENERATE_LANDSCAPE);
} }
/** Widgets of GenerateLandscapeWindow */ /** Widgets of GenerateLandscapeWindow */
@ -363,6 +363,8 @@ struct GenerateLandscapeWindow : public QueryStringBaseWindow {
this->afilter = CS_NUMERAL; this->afilter = CS_NUMERAL;
this->mode = (GenenerateLandscapeWindowMode)this->window_number; this->mode = (GenenerateLandscapeWindowMode)this->window_number;
this->OnInvalidateData();
} }
@ -400,6 +402,15 @@ struct GenerateLandscapeWindow : public QueryStringBaseWindow {
} }
} }
virtual void OnInvalidateData(int data = 0)
{
/* Update the climate buttons */
this->SetWidgetLoweredState(GLAND_TEMPERATE, _settings_newgame.game_creation.landscape == LT_TEMPERATE);
this->SetWidgetLoweredState(GLAND_ARCTIC, _settings_newgame.game_creation.landscape == LT_ARCTIC);
this->SetWidgetLoweredState(GLAND_TROPICAL, _settings_newgame.game_creation.landscape == LT_TROPIC);
this->SetWidgetLoweredState(GLAND_TOYLAND, _settings_newgame.game_creation.landscape == LT_TOYLAND);
}
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
{ {
const StringID *strs = NULL; const StringID *strs = NULL;
@ -509,11 +520,6 @@ struct GenerateLandscapeWindow : public QueryStringBaseWindow {
this->SetWidgetDisabledState(GLAND_SNOW_LEVEL_DOWN, _settings_newgame.game_creation.snow_line_height <= MIN_SNOWLINE_HEIGHT || _settings_newgame.game_creation.landscape != LT_ARCTIC); this->SetWidgetDisabledState(GLAND_SNOW_LEVEL_DOWN, _settings_newgame.game_creation.snow_line_height <= MIN_SNOWLINE_HEIGHT || _settings_newgame.game_creation.landscape != LT_ARCTIC);
this->SetWidgetDisabledState(GLAND_SNOW_LEVEL_UP, _settings_newgame.game_creation.snow_line_height >= MAX_SNOWLINE_HEIGHT || _settings_newgame.game_creation.landscape != LT_ARCTIC); this->SetWidgetDisabledState(GLAND_SNOW_LEVEL_UP, _settings_newgame.game_creation.snow_line_height >= MAX_SNOWLINE_HEIGHT || _settings_newgame.game_creation.landscape != LT_ARCTIC);
this->SetWidgetLoweredState(GLAND_TEMPERATE, _settings_newgame.game_creation.landscape == LT_TEMPERATE);
this->SetWidgetLoweredState(GLAND_ARCTIC, _settings_newgame.game_creation.landscape == LT_ARCTIC);
this->SetWidgetLoweredState(GLAND_TROPICAL, _settings_newgame.game_creation.landscape == LT_TROPIC);
this->SetWidgetLoweredState(GLAND_TOYLAND, _settings_newgame.game_creation.landscape == LT_TOYLAND);
this->DrawWidgets(); this->DrawWidgets();
this->DrawEditBox(GLAND_RANDOM_EDITBOX); this->DrawEditBox(GLAND_RANDOM_EDITBOX);

View File

@ -30,12 +30,6 @@
#include "table/strings.h" #include "table/strings.h"
#include "table/sprites.h" #include "table/sprites.h"
static inline void SetNewLandscapeType(byte landscape)
{
_settings_newgame.game_creation.landscape = landscape;
SetWindowClassesDirty(WC_SELECT_GAME);
}
enum SelectGameIntroWidgets { enum SelectGameIntroWidgets {
SGI_GENERATE_GAME, SGI_GENERATE_GAME,
SGI_LOAD_GAME, SGI_LOAD_GAME,
@ -61,11 +55,10 @@ struct SelectGameWindow : public Window {
SelectGameWindow(const WindowDesc *desc) : Window() SelectGameWindow(const WindowDesc *desc) : Window()
{ {
this->InitNested(desc); this->InitNested(desc);
this->LowerWidget(_settings_newgame.game_creation.landscape + SGI_TEMPERATE_LANDSCAPE); this->OnInvalidateData();
this->SetLandscapeButtons();
} }
void SetLandscapeButtons() virtual void OnInvalidateData(int data = 0)
{ {
this->SetWidgetLoweredState(SGI_TEMPERATE_LANDSCAPE, _settings_newgame.game_creation.landscape == LT_TEMPERATE); this->SetWidgetLoweredState(SGI_TEMPERATE_LANDSCAPE, _settings_newgame.game_creation.landscape == LT_TEMPERATE);
this->SetWidgetLoweredState(SGI_ARCTIC_LANDSCAPE, _settings_newgame.game_creation.landscape == LT_ARCTIC); this->SetWidgetLoweredState(SGI_ARCTIC_LANDSCAPE, _settings_newgame.game_creation.landscape == LT_ARCTIC);
@ -129,9 +122,7 @@ struct SelectGameWindow : public Window {
case SGI_TEMPERATE_LANDSCAPE: case SGI_ARCTIC_LANDSCAPE: case SGI_TEMPERATE_LANDSCAPE: case SGI_ARCTIC_LANDSCAPE:
case SGI_TROPIC_LANDSCAPE: case SGI_TOYLAND_LANDSCAPE: case SGI_TROPIC_LANDSCAPE: case SGI_TOYLAND_LANDSCAPE:
this->RaiseWidget(_settings_newgame.game_creation.landscape + SGI_TEMPERATE_LANDSCAPE);
SetNewLandscapeType(widget - SGI_TEMPERATE_LANDSCAPE); SetNewLandscapeType(widget - SGI_TEMPERATE_LANDSCAPE);
this->SetLandscapeButtons();
break; break;
case SGI_OPTIONS: ShowGameOptions(); break; case SGI_OPTIONS: ShowGameOptions(); break;