|
@@ -52,97 +52,97 @@ enum SelectGameIntroWidgets {
|
|
|
SGI_SETTINGS_OPTIONS,
|
|
|
SGI_GRF_SETTINGS,
|
|
|
SGI_CONTENT_DOWNLOAD,
|
|
|
SGI_AI_SETTINGS,
|
|
|
SGI_EXIT,
|
|
|
};
|
|
|
|
|
|
struct SelectGameWindow : public Window {
|
|
|
|
|
|
SelectGameWindow(const WindowDesc *desc) : Window()
|
|
|
{
|
|
|
this->InitNested(desc);
|
|
|
this->LowerWidget(_settings_newgame.game_creation.landscape + SGI_TEMPERATE_LANDSCAPE);
|
|
|
this->SetLandscapeButtons();
|
|
|
}
|
|
|
|
|
|
void SetLandscapeButtons()
|
|
|
{
|
|
|
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_TROPIC_LANDSCAPE, _settings_newgame.game_creation.landscape == LT_TROPIC);
|
|
|
this->SetWidgetLoweredState(SGI_TOYLAND_LANDSCAPE, _settings_newgame.game_creation.landscape == LT_TOYLAND);
|
|
|
}
|
|
|
|
|
|
virtual void OnPaint()
|
|
|
{
|
|
|
this->DrawWidgets();
|
|
|
}
|
|
|
|
|
|
virtual void SetStringParameters(int widget) const
|
|
|
{
|
|
|
if (widget == SGI_DIFFICULTIES) SetDParam(0, STR_DIFFICULTY_LEVEL_EASY + _settings_newgame.difficulty.diff_level);
|
|
|
}
|
|
|
|
|
|
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
|
|
|
{
|
|
|
if (widget != SGI_DIFFICULTIES) return;
|
|
|
|
|
|
Dimension textdim = {0, 0};
|
|
|
for (uint i = STR_DIFFICULTY_LEVEL_EASY; i <= STR_DIFFICULTY_LEVEL_CUSTOM; i++) {
|
|
|
SetDParam(0, i);
|
|
|
textdim = maxdim(textdim, GetStringBoundingBox(STR_INTRO_DIFFICULTY));
|
|
|
}
|
|
|
textdim.width += padding.width;
|
|
|
textdim.height += padding.height;
|
|
|
*size = maxdim(*size, textdim);
|
|
|
}
|
|
|
|
|
|
virtual void OnClick(Point pt, int widget)
|
|
|
virtual void OnClick(Point pt, int widget, int click_count)
|
|
|
{
|
|
|
#ifdef ENABLE_NETWORK
|
|
|
/* Do not create a network server when you (just) have closed one of the game
|
|
|
* creation/load windows for the network server. */
|
|
|
if (IsInsideMM(widget, SGI_GENERATE_GAME, SGI_EDIT_SCENARIO + 1)) _is_network_server = false;
|
|
|
#endif /* ENABLE_NETWORK */
|
|
|
|
|
|
switch (widget) {
|
|
|
case SGI_GENERATE_GAME:
|
|
|
if (_ctrl_pressed) {
|
|
|
StartNewGameWithoutGUI(GENERATE_NEW_SEED);
|
|
|
} else {
|
|
|
ShowGenerateLandscape();
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
case SGI_LOAD_GAME: ShowSaveLoadDialog(SLD_LOAD_GAME); break;
|
|
|
case SGI_PLAY_SCENARIO: ShowSaveLoadDialog(SLD_LOAD_SCENARIO); break;
|
|
|
case SGI_PLAY_HEIGHTMAP: ShowSaveLoadDialog(SLD_LOAD_HEIGHTMAP); break;
|
|
|
case SGI_EDIT_SCENARIO: StartScenarioEditor(); break;
|
|
|
|
|
|
case SGI_PLAY_NETWORK:
|
|
|
if (!_network_available) {
|
|
|
ShowErrorMessage(STR_NETWORK_ERROR_NOTAVAILABLE, INVALID_STRING_ID, 0, 0);
|
|
|
} else {
|
|
|
ShowNetworkGameWindow();
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
case SGI_TEMPERATE_LANDSCAPE: case SGI_ARCTIC_LANDSCAPE:
|
|
|
case SGI_TROPIC_LANDSCAPE: case SGI_TOYLAND_LANDSCAPE:
|
|
|
this->RaiseWidget(_settings_newgame.game_creation.landscape + SGI_TEMPERATE_LANDSCAPE);
|
|
|
SetNewLandscapeType(widget - SGI_TEMPERATE_LANDSCAPE);
|
|
|
this->SetLandscapeButtons();
|
|
|
break;
|
|
|
|
|
|
case SGI_OPTIONS: ShowGameOptions(); break;
|
|
|
case SGI_DIFFICULTIES: ShowGameDifficulty(); break;
|
|
|
case SGI_SETTINGS_OPTIONS:ShowGameSettings(); break;
|
|
|
case SGI_GRF_SETTINGS: ShowNewGRFSettings(true, true, false, &_grfconfig_newgame); break;
|
|
|
case SGI_CONTENT_DOWNLOAD:
|
|
|
if (!_network_available) {
|
|
|
ShowErrorMessage(STR_NETWORK_ERROR_NOTAVAILABLE, INVALID_STRING_ID, 0, 0);
|
|
|
} else {
|
|
|
ShowNetworkContentListWindow();
|
|
|
}
|
|
|
break;
|
|
|
case SGI_AI_SETTINGS: ShowAIConfigWindow(); break;
|