summaryrefslogtreecommitdiff
path: root/src/airport_gui.cpp
diff options
context:
space:
mode:
authoryexo <yexo@openttd.org>2010-08-05 11:59:07 +0000
committeryexo <yexo@openttd.org>2010-08-05 11:59:07 +0000
commit330c2f979e794f751ccd0ee05256f7b788f13091 (patch)
tree549c1ac6c659b2e71e8d1da0ac8d389a599979cb /src/airport_gui.cpp
parent6321eb5a00be509ce0415411677b34d63d995a33 (diff)
downloadopenttd-330c2f979e794f751ccd0ee05256f7b788f13091.tar.xz
(svn r20365) -Codechange: allow multiple layouts for one airport statemachine, store the layout number
Diffstat (limited to 'src/airport_gui.cpp')
-rw-r--r--src/airport_gui.cpp41
1 files changed, 39 insertions, 2 deletions
diff --git a/src/airport_gui.cpp b/src/airport_gui.cpp
index 2952cab9d..a5fda1567 100644
--- a/src/airport_gui.cpp
+++ b/src/airport_gui.cpp
@@ -33,6 +33,7 @@
static AirportClassID _selected_airport_class; ///< the currently visible airport class
static int _selected_airport_index; ///< the index of the selected airport in the current class or -1
+static byte _selected_airport_layout; ///< selected airport layout number.
static void ShowBuildAirportPicker(Window *parent);
@@ -52,6 +53,7 @@ static void PlaceAirport(TileIndex tile)
SB(p2, 16, 16, INVALID_STATION); // no station to join
uint32 p1 = GetAirportSpecFromClass(_selected_airport_class, _selected_airport_index)->GetIndex();
+ p1 |= _selected_airport_layout << 8;
CommandContainer cmdcont = { tile, p1, p2, CMD_BUILD_AIRPORT | CMD_MSG(STR_ERROR_CAN_T_BUILD_AIRPORT_HERE), CcBuildAirport, "" };
ShowSelectStationIfNeeded(cmdcont, TileArea(tile, _thd.size.x / TILE_SIZE, _thd.size.y / TILE_SIZE));
}
@@ -197,6 +199,9 @@ enum AirportPickerWidgets {
BAIRW_CLASS_DROPDOWN,
BAIRW_AIRPORT_LIST,
BAIRW_SCROLLBAR,
+ BAIRW_LAYOUT_NUM,
+ BAIRW_LAYOUT_DECREASE,
+ BAIRW_LAYOUT_INCREASE,
BAIRW_BOTTOMPANEL,
BAIRW_COVERAGE_LABEL,
BAIRW_BTN_DONTHILIGHT,
@@ -240,9 +245,18 @@ public:
virtual void SetStringParameters(int widget) const
{
- if (widget != BAIRW_CLASS_DROPDOWN) return;
+ switch (widget) {
+ case BAIRW_CLASS_DROPDOWN:
+ SetDParam(0, GetAirportClassName(_selected_airport_class));
+ break;
+
+ case BAIRW_LAYOUT_NUM:
+ SetDParam(0, STR_STATION_BUILD_AIRPORT_LAYOUT_NAME);
+ SetDParam(1, _selected_airport_layout + 1);
+ break;
- SetDParam(0, GetAirportClassName(_selected_airport_class));
+ default: break;
+ }
}
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
@@ -328,6 +342,7 @@ public:
void SelectOtherAirport(int airport_index)
{
_selected_airport_index = airport_index;
+ _selected_airport_layout = 0;
this->UpdateSelectSize();
this->SetDirty();
@@ -337,10 +352,15 @@ public:
{
if (_selected_airport_index == -1) {
SetTileSelectSize(1, 1);
+ this->DisableWidget(BAIRW_LAYOUT_DECREASE);
+ this->DisableWidget(BAIRW_LAYOUT_INCREASE);
} else {
const AirportSpec *as = GetAirportSpecFromClass(_selected_airport_class, _selected_airport_index);
SetTileSelectSize(as->size_x, as->size_y);
+ this->SetWidgetDisabledState(BAIRW_LAYOUT_DECREASE, _selected_airport_layout == 0);
+ this->SetWidgetDisabledState(BAIRW_LAYOUT_INCREASE, _selected_airport_layout + 1 >= as->num_table);
+
int rad = _settings_game.station.modified_catchment ? as->catchment : (uint)CA_UNMODIFIED;
if (_settings_client.gui.station_show_coverage) SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad);
}
@@ -369,6 +389,18 @@ public:
SndPlayFx(SND_15_BEEP);
this->UpdateSelectSize();
break;
+
+ case BAIRW_LAYOUT_DECREASE:
+ _selected_airport_layout--;
+ this->UpdateSelectSize();
+ this->SetDirty();
+ break;
+
+ case BAIRW_LAYOUT_INCREASE:
+ _selected_airport_layout++;
+ this->UpdateSelectSize();
+ this->SetDirty();
+ break;
}
}
@@ -431,6 +463,11 @@ static const NWidgetPart _nested_build_airport_widgets[] = {
NWidget(WWT_MATRIX, COLOUR_GREY, BAIRW_AIRPORT_LIST), SetFill(1, 0), SetDataTip(0x501, STR_NULL),
NWidget(WWT_SCROLLBAR, COLOUR_GREY, BAIRW_SCROLLBAR),
EndContainer(),
+ NWidget(NWID_HORIZONTAL),
+ NWidget(NWID_BUTTON_ARROW, COLOUR_GREY, BAIRW_LAYOUT_DECREASE), SetMinimalSize(12, 0),SetDataTip(AWV_DECREASE, STR_NULL),
+ NWidget(WWT_LABEL, COLOUR_GREY, BAIRW_LAYOUT_NUM), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_BLACK_STRING, STR_NULL),
+ NWidget(NWID_BUTTON_ARROW, COLOUR_GREY, BAIRW_LAYOUT_INCREASE), SetMinimalSize(12, 0), SetDataTip(AWV_INCREASE, STR_NULL),
+ EndContainer(),
EndContainer(),
/* Bottom panel. */
NWidget(WWT_PANEL, COLOUR_DARK_GREEN, BAIRW_BOTTOMPANEL), SetPIP(2, 2, 2),