(svn r11264) -Codechange: replace a lot of magic numbers with enums for the rail and road GUIs. Patch by skidd13.
This commit is contained in:
343
src/road_gui.cpp
343
src/road_gui.cpp
@@ -180,20 +180,22 @@ static void PlaceRoad_DemolishArea(TileIndex tile)
|
||||
VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_DEMOLISH_AREA);
|
||||
}
|
||||
|
||||
|
||||
enum {
|
||||
RTW_ROAD_X = 3,
|
||||
RTW_ROAD_Y = 4,
|
||||
RTW_DEMOLISH = 5,
|
||||
RTW_DEPOT = 6,
|
||||
RTW_BUS_STATION = 7,
|
||||
RTW_TRUCK_STATION = 8,
|
||||
RTW_BUILD_BRIDGE = 9,
|
||||
RTW_BUILD_TUNNEL = 10,
|
||||
RTW_REMOVE = 11
|
||||
/** Enum referring to the widgets of the build road toolbar */
|
||||
enum RoadToolbarWidgets {
|
||||
RTW_CLOSEBOX = 0,
|
||||
RTW_CAPTION,
|
||||
RTW_STICKY,
|
||||
RTW_ROAD_X,
|
||||
RTW_ROAD_Y,
|
||||
RTW_DEMOLISH,
|
||||
RTW_DEPOT,
|
||||
RTW_BUS_STATION,
|
||||
RTW_TRUCK_STATION,
|
||||
RTW_BUILD_BRIDGE,
|
||||
RTW_BUILD_TUNNEL,
|
||||
RTW_REMOVE,
|
||||
};
|
||||
|
||||
|
||||
typedef void OnButtonClick(Window *w);
|
||||
|
||||
static void BuildRoadClick_NE(Window *w)
|
||||
@@ -249,7 +251,6 @@ static void BuildRoadClick_Remove(Window *w)
|
||||
SetSelectionRed(IsWindowWidgetLowered(w, RTW_REMOVE));
|
||||
}
|
||||
|
||||
|
||||
static OnButtonClick* const _build_road_button_proc[] = {
|
||||
BuildRoadClick_NE,
|
||||
BuildRoadClick_NW,
|
||||
@@ -262,38 +263,83 @@ static OnButtonClick* const _build_road_button_proc[] = {
|
||||
BuildRoadClick_Remove
|
||||
};
|
||||
|
||||
static const uint16 _road_keycodes[] = {
|
||||
'1',
|
||||
'2',
|
||||
'3',
|
||||
'4',
|
||||
'5',
|
||||
'6',
|
||||
'B',
|
||||
'T',
|
||||
'R',
|
||||
};
|
||||
|
||||
/**
|
||||
* Update the remove button lowered state of the road toolbar
|
||||
*
|
||||
* @param w The toolbar window
|
||||
* @param clicked_widget The widget which the player clicked just now
|
||||
*/
|
||||
static void UpdateRemoveWidgetStatus(Window *w, int clicked_widget)
|
||||
{
|
||||
switch (clicked_widget) {
|
||||
case RTW_REMOVE:
|
||||
/* If it is the removal button that has been clicked, do nothing,
|
||||
* as it is up to the other buttons to drive removal status */
|
||||
return;
|
||||
break;
|
||||
case RTW_ROAD_X:
|
||||
case RTW_ROAD_Y:
|
||||
case RTW_BUS_STATION:
|
||||
case RTW_TRUCK_STATION:
|
||||
/* Removal button is enabled only if the road/station
|
||||
* button is still lowered. Once raised, it has to be disabled */
|
||||
SetWindowWidgetDisabledState(w, RTW_REMOVE, !IsWindowWidgetLowered(w, clicked_widget));
|
||||
break;
|
||||
|
||||
default:
|
||||
/* When any other buttons than road/station, raise and
|
||||
* disable the removal button */
|
||||
DisableWindowWidget(w, RTW_REMOVE);
|
||||
RaiseWindowWidget(w, RTW_REMOVE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void BuildRoadToolbWndProc(Window *w, WindowEvent *e)
|
||||
{
|
||||
switch (e->event) {
|
||||
case WE_CREATE: DisableWindowWidget(w, RTW_REMOVE); break;
|
||||
|
||||
case WE_PAINT:
|
||||
if (IsWindowWidgetLowered(w, RTW_ROAD_X) || IsWindowWidgetLowered(w, RTW_ROAD_Y) || IsWindowWidgetLowered(w, RTW_BUS_STATION) || IsWindowWidgetLowered(w, RTW_TRUCK_STATION)) {
|
||||
EnableWindowWidget(w, RTW_REMOVE);
|
||||
}
|
||||
SetWindowWidgetsDisabledState(w, !CanBuildVehicleInfrastructure(VEH_ROAD), 6, 7, 8, WIDGET_LIST_END);
|
||||
SetWindowWidgetsDisabledState(w, !CanBuildVehicleInfrastructure(VEH_ROAD),
|
||||
RTW_DEPOT,
|
||||
RTW_BUS_STATION,
|
||||
RTW_TRUCK_STATION,
|
||||
WIDGET_LIST_END);
|
||||
DrawWindowWidgets(w);
|
||||
break;
|
||||
|
||||
case WE_CLICK: {
|
||||
if (e->we.click.widget >= 3) _build_road_button_proc[e->we.click.widget - 3](w);
|
||||
} break;
|
||||
case WE_CLICK:
|
||||
if (e->we.click.widget >= RTW_ROAD_X) {
|
||||
_remove_button_clicked = false;
|
||||
_build_road_button_proc[e->we.click.widget - RTW_ROAD_X](w);
|
||||
}
|
||||
UpdateRemoveWidgetStatus(w, e->we.click.widget);
|
||||
break;
|
||||
|
||||
case WE_KEYPRESS:
|
||||
switch (e->we.keypress.keycode) {
|
||||
case '1': BuildRoadClick_NE(w); break;
|
||||
case '2': BuildRoadClick_NW(w); break;
|
||||
case '3': BuildRoadClick_Demolish(w); break;
|
||||
case '4': BuildRoadClick_Depot(w); break;
|
||||
case '5': BuildRoadClick_BusStation(w); break;
|
||||
case '6': BuildRoadClick_TruckStation(w); break;
|
||||
case 'B': BuildRoadClick_Bridge(w); break;
|
||||
case 'T': BuildRoadClick_Tunnel(w); break;
|
||||
case 'R': BuildRoadClick_Remove(w); break;
|
||||
default: return;
|
||||
for (uint8 i = 0; i != lengthof(_road_keycodes); i++) {
|
||||
if (e->we.keypress.keycode == _road_keycodes[i]) {
|
||||
e->we.keypress.cont = false;
|
||||
_remove_button_clicked = false;
|
||||
_build_road_button_proc[i](w);
|
||||
UpdateRemoveWidgetStatus(w, i + RTW_ROAD_X);
|
||||
break;
|
||||
}
|
||||
}
|
||||
MarkTileDirty(_thd.pos.x, _thd.pos.y); // redraw tile selection
|
||||
e->we.keypress.cont = false;
|
||||
break;
|
||||
|
||||
case WE_PLACE_OBJ:
|
||||
@@ -368,20 +414,21 @@ static void BuildRoadToolbWndProc(Window *w, WindowEvent *e)
|
||||
}
|
||||
}
|
||||
|
||||
/** Widget definition of the build road toolbar */
|
||||
static const Widget _build_road_widgets[] = {
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 205, 0, 13, STR_1802_ROAD_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, RESIZE_NONE, 7, 206, 217, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // RTW_CLOSEBOX
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 205, 0, 13, STR_1802_ROAD_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // RTW_CAPTION
|
||||
{ WWT_STICKYBOX, RESIZE_NONE, 7, 206, 217, 0, 13, 0x0, STR_STICKY_BUTTON}, // RTW_STICKY
|
||||
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_ROAD_NW, STR_180B_BUILD_ROAD_SECTION},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_ROAD_NE, STR_180B_BUILD_ROAD_SECTION},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 66, 87, 14, 35, SPR_IMG_ROAD_DEPOT, STR_180C_BUILD_ROAD_VEHICLE_DEPOT},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 88, 109, 14, 35, SPR_IMG_BUS_STATION, STR_180D_BUILD_BUS_STATION},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 110, 131, 14, 35, SPR_IMG_TRUCK_BAY, STR_180E_BUILD_TRUCK_LOADING_BAY},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 132, 173, 14, 35, SPR_IMG_BRIDGE, STR_180F_BUILD_ROAD_BRIDGE},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 174, 195, 14, 35, SPR_IMG_ROAD_TUNNEL, STR_1810_BUILD_ROAD_TUNNEL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 196, 217, 14, 35, SPR_IMG_REMOVE, STR_1811_TOGGLE_BUILD_REMOVE_FOR},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_ROAD_NW, STR_180B_BUILD_ROAD_SECTION}, // RTW_ROAD_X
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_ROAD_NE, STR_180B_BUILD_ROAD_SECTION}, // RTW_ROAD_Y
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC}, // RTW_DEMOLISH
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 66, 87, 14, 35, SPR_IMG_ROAD_DEPOT, STR_180C_BUILD_ROAD_VEHICLE_DEPOT}, // RTW_DEPOT
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 88, 109, 14, 35, SPR_IMG_BUS_STATION, STR_180D_BUILD_BUS_STATION}, // RTW_BUS_STATION
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 110, 131, 14, 35, SPR_IMG_TRUCK_BAY, STR_180E_BUILD_TRUCK_LOADING_BAY}, // RTW_TRUCK_STATION
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 132, 173, 14, 35, SPR_IMG_BRIDGE, STR_180F_BUILD_ROAD_BRIDGE}, // RTW_BUILD_BRIDGE
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 174, 195, 14, 35, SPR_IMG_ROAD_TUNNEL, STR_1810_BUILD_ROAD_TUNNEL}, // RTW_BUILD_TUNNEL
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 196, 217, 14, 35, SPR_IMG_REMOVE, STR_1811_TOGGLE_BUILD_REMOVE_FOR}, // RTW_REMOVE
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -393,21 +440,21 @@ static const WindowDesc _build_road_desc = {
|
||||
BuildRoadToolbWndProc
|
||||
};
|
||||
|
||||
/** Widget definition of the build tram toolbar */
|
||||
static const Widget _build_tramway_widgets[] = {
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 205, 0, 13, STR_1802_TRAMWAY_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, RESIZE_NONE, 7, 206, 217, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // RTW_CLOSEBOX
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 205, 0, 13, STR_1802_TRAMWAY_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // RTW_CAPTION
|
||||
{ WWT_STICKYBOX, RESIZE_NONE, 7, 206, 217, 0, 13, 0x0, STR_STICKY_BUTTON}, // RTW_STICKY
|
||||
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_TRAMWAY_NW, STR_180B_BUILD_TRAMWAY_SECTION},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_TRAMWAY_NE, STR_180B_BUILD_TRAMWAY_SECTION},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 66, 87, 14, 35, SPR_IMG_ROAD_DEPOT, STR_180C_BUILD_TRAM_VEHICLE_DEPOT},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 88, 109, 14, 35, SPR_IMG_BUS_STATION, STR_180D_BUILD_PASSENGER_TRAM_STATION},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 110, 131, 14, 35, SPR_IMG_TRUCK_BAY, STR_180E_BUILD_CARGO_TRAM_STATION},
|
||||
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 132, 173, 14, 35, SPR_IMG_BRIDGE, STR_180F_BUILD_TRAMWAY_BRIDGE},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 174, 195, 14, 35, SPR_IMG_ROAD_TUNNEL, STR_1810_BUILD_TRAMWAY_TUNNEL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 196, 217, 14, 35, SPR_IMG_REMOVE, STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_TRAMWAY_NW, STR_180B_BUILD_TRAMWAY_SECTION}, // RTW_ROAD_X
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_TRAMWAY_NE, STR_180B_BUILD_TRAMWAY_SECTION}, // RTW_ROAD_Y
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC}, // RTW_DEMOLISH
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 66, 87, 14, 35, SPR_IMG_ROAD_DEPOT, STR_180C_BUILD_TRAM_VEHICLE_DEPOT}, // RTW_DEPOT
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 88, 109, 14, 35, SPR_IMG_BUS_STATION, STR_180D_BUILD_PASSENGER_TRAM_STATION}, // RTW_BUS_STATION
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 110, 131, 14, 35, SPR_IMG_TRUCK_BAY, STR_180E_BUILD_CARGO_TRAM_STATION}, // RTW_TRUCK_STATION
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 132, 173, 14, 35, SPR_IMG_BRIDGE, STR_180F_BUILD_TRAMWAY_BRIDGE}, // RTW_BUILD_BRIDGE
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 174, 195, 14, 35, SPR_IMG_ROAD_TUNNEL, STR_1810_BUILD_TRAMWAY_TUNNEL}, // RTW_BUILD_TUNNEL
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 196, 217, 14, 35, SPR_IMG_REMOVE, STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS}, // RTW_REMOVE
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -429,20 +476,21 @@ void ShowBuildRoadToolbar(RoadType roadtype)
|
||||
if (_patches.link_terraform_toolbar) ShowTerraformToolbar(w);
|
||||
}
|
||||
|
||||
/** Widget definition of the build road toolbar in the scenario editor */
|
||||
static const Widget _build_road_scen_widgets[] = {
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 139, 0, 13, STR_1802_ROAD_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_STICKYBOX, RESIZE_NONE, 7, 140, 151, 0, 13, 0x0, STR_STICKY_BUTTON},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // RTW_CLOSEBOX
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 139, 0, 13, STR_1802_ROAD_CONSTRUCTION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // RTW_CAPTION
|
||||
{ WWT_STICKYBOX, RESIZE_NONE, 7, 140, 151, 0, 13, 0x0, STR_STICKY_BUTTON}, // RTW_STICKY
|
||||
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_ROAD_NW, STR_180B_BUILD_ROAD_SECTION},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_ROAD_NE, STR_180B_BUILD_ROAD_SECTION},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC},
|
||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 66, 107, 14, 35, SPR_IMG_BRIDGE, STR_180F_BUILD_ROAD_BRIDGE},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 108, 129, 14, 35, SPR_IMG_ROAD_TUNNEL, STR_1810_BUILD_ROAD_TUNNEL},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 130, 151, 14, 35, SPR_IMG_REMOVE, STR_1811_TOGGLE_BUILD_REMOVE_FOR},
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 0, 21, 14, 35, SPR_IMG_ROAD_NW, STR_180B_BUILD_ROAD_SECTION}, // RTW_ROAD_X
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 22, 43, 14, 35, SPR_IMG_ROAD_NE, STR_180B_BUILD_ROAD_SECTION}, // RTW_ROAD_Y
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 44, 65, 14, 35, SPR_IMG_DYNAMITE, STR_018D_DEMOLISH_BUILDINGS_ETC}, // RTW_DEMOLISH
|
||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, // RTW_DEPOT
|
||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, // RTW_BUS_STATION
|
||||
{ WWT_EMPTY, RESIZE_NONE, 0, 0, 0, 0, 0, 0x0, STR_NULL}, // RTW_TRUCK_STATION
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 66, 107, 14, 35, SPR_IMG_BRIDGE, STR_180F_BUILD_ROAD_BRIDGE}, // RTW_BUILD_BRIDGE
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 108, 129, 14, 35, SPR_IMG_ROAD_TUNNEL, STR_1810_BUILD_ROAD_TUNNEL}, // RTW_BUILD_TUNNEL
|
||||
{ WWT_IMGBTN, RESIZE_NONE, 7, 130, 151, 14, 35, SPR_IMG_REMOVE, STR_1811_TOGGLE_BUILD_REMOVE_FOR}, // RTW_REMOVE
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -460,10 +508,21 @@ void ShowBuildRoadScenToolbar()
|
||||
AllocateWindowDescFront(&_build_road_scen_desc, 0);
|
||||
}
|
||||
|
||||
/** Enum referring to the widgets of the build road depot window */
|
||||
enum BuildRoadDepotWidgets {
|
||||
BRDW_CLOSEBOX = 0,
|
||||
BRDW_CAPTION,
|
||||
BRDW_BACKGROUND,
|
||||
BRDW_DEPOT_NE,
|
||||
BRDW_DEPOT_SE,
|
||||
BRDW_DEPOT_SW,
|
||||
BRDW_DEPOT_NW,
|
||||
};
|
||||
|
||||
static void BuildRoadDepotWndProc(Window *w, WindowEvent *e)
|
||||
{
|
||||
switch (e->event) {
|
||||
case WE_CREATE: LowerWindowWidget(w, _road_depot_orientation + 3); break;
|
||||
case WE_CREATE: LowerWindowWidget(w, _road_depot_orientation + BRDW_DEPOT_NE); break;
|
||||
|
||||
case WE_PAINT:
|
||||
DrawWindowWidgets(w);
|
||||
@@ -474,17 +533,20 @@ static void BuildRoadDepotWndProc(Window *w, WindowEvent *e)
|
||||
DrawRoadDepotSprite( 2, 17, DIAGDIR_NW, _cur_roadtype);
|
||||
break;
|
||||
|
||||
case WE_CLICK: {
|
||||
case WE_CLICK:
|
||||
switch (e->we.click.widget) {
|
||||
case 3: case 4: case 5: case 6:
|
||||
RaiseWindowWidget(w, _road_depot_orientation + 3);
|
||||
_road_depot_orientation = (DiagDirection)(e->we.click.widget - 3);
|
||||
LowerWindowWidget(w, _road_depot_orientation + 3);
|
||||
SndPlayFx(SND_15_BEEP);
|
||||
SetWindowDirty(w);
|
||||
break;
|
||||
case BRDW_DEPOT_NW:
|
||||
case BRDW_DEPOT_NE:
|
||||
case BRDW_DEPOT_SW:
|
||||
case BRDW_DEPOT_SE:
|
||||
RaiseWindowWidget(w, _road_depot_orientation + BRDW_DEPOT_NE);
|
||||
_road_depot_orientation = (DiagDirection)(e->we.click.widget - BRDW_DEPOT_NE);
|
||||
LowerWindowWidget(w, _road_depot_orientation + BRDW_DEPOT_NE);
|
||||
SndPlayFx(SND_15_BEEP);
|
||||
SetWindowDirty(w);
|
||||
break;
|
||||
}
|
||||
} break;
|
||||
break;
|
||||
|
||||
case WE_MOUSELOOP:
|
||||
if (WP(w, def_d).close) DeleteWindow(w);
|
||||
@@ -496,25 +558,27 @@ static void BuildRoadDepotWndProc(Window *w, WindowEvent *e)
|
||||
}
|
||||
}
|
||||
|
||||
/** Widget definition of the build road depot window */
|
||||
static const Widget _build_road_depot_widgets[] = {
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 139, 0, 13, STR_1806_ROAD_DEPOT_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 139, 14, 121, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 17, 66, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 69, 118, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 69, 118, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 17, 66, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // BRDW_CLOSEBOX
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 139, 0, 13, STR_1806_ROAD_DEPOT_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // BRDW_CAPTION
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 139, 14, 121, 0x0, STR_NULL}, // BRDW_BACKGROUND
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 17, 66, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_NE
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 69, 118, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_SE
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 69, 118, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_SW
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 17, 66, 0x0, STR_1813_SELECT_ROAD_VEHICLE_DEPOT}, // BRDW_DEPOT_NW
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
/** Widget definition of the build tram depot window */
|
||||
static const Widget _build_tram_depot_widgets[] = {
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 139, 0, 13, STR_1806_TRAM_DEPOT_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 139, 14, 121, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 17, 66, 0x0, STR_1813_SELECT_TRAM_VEHICLE_DEPOT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 69, 118, 0x0, STR_1813_SELECT_TRAM_VEHICLE_DEPOT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 69, 118, 0x0, STR_1813_SELECT_TRAM_VEHICLE_DEPOT},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 17, 66, 0x0, STR_1813_SELECT_TRAM_VEHICLE_DEPOT},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // BRDW_CLOSEBOX
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 139, 0, 13, STR_1806_TRAM_DEPOT_ORIENTATION, STR_018C_WINDOW_TITLE_DRAG_THIS}, // BRDW_CAPTION
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 139, 14, 121, 0x0, STR_NULL}, // BRDW_BACKGROUND
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 17, 66, 0x0, STR_1813_SELECT_TRAM_VEHICLE_DEPOT}, // BRDW_DEPOT_NE
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 69, 118, 0x0, STR_1813_SELECT_TRAM_VEHICLE_DEPOT}, // BRDW_DEPOT_SE
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 69, 118, 0x0, STR_1813_SELECT_TRAM_VEHICLE_DEPOT}, // BRDW_DEPOT_SW
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 17, 66, 0x0, STR_1813_SELECT_TRAM_VEHICLE_DEPOT}, // BRDW_DEPOT_NW
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -539,6 +603,22 @@ static void ShowRoadDepotPicker()
|
||||
AllocateWindowDesc(_cur_roadtype == ROADTYPE_ROAD ? &_build_road_depot_desc : &_build_tram_depot_desc);
|
||||
}
|
||||
|
||||
/** Enum referring to the widgets of the build road station window */
|
||||
enum BuildRoadStationWidgets {
|
||||
BRSW_CLOSEBOX = 0,
|
||||
BRSW_CAPTION,
|
||||
BRSW_BACKGROUND,
|
||||
BRSW_STATION_NE,
|
||||
BRSW_STATION_SE,
|
||||
BRSW_STATION_SW,
|
||||
BRSW_STATION_NW,
|
||||
BRSW_STATION_X,
|
||||
BRSW_STATION_Y,
|
||||
BRSW_LT_OFF,
|
||||
BRSW_LT_ON,
|
||||
BRSW_INFO,
|
||||
};
|
||||
|
||||
static void RoadStationPickerWndProc(Window *w, WindowEvent *e)
|
||||
{
|
||||
switch (e->event) {
|
||||
@@ -547,10 +627,15 @@ static void RoadStationPickerWndProc(Window *w, WindowEvent *e)
|
||||
if (_cur_roadtype == ROADTYPE_TRAM && _road_station_picker_orientation < DIAGDIR_END) {
|
||||
_road_station_picker_orientation = DIAGDIR_END;
|
||||
}
|
||||
SetWindowWidgetsDisabledState(w, _cur_roadtype == ROADTYPE_TRAM, 3, 4, 5, 6, WIDGET_LIST_END);
|
||||
SetWindowWidgetsDisabledState(w, _cur_roadtype == ROADTYPE_TRAM,
|
||||
BRSW_STATION_NE,
|
||||
BRSW_STATION_SE,
|
||||
BRSW_STATION_SW,
|
||||
BRSW_STATION_NW,
|
||||
WIDGET_LIST_END);
|
||||
|
||||
LowerWindowWidget(w, _road_station_picker_orientation + 3);
|
||||
LowerWindowWidget(w, _station_show_coverage + 9);
|
||||
LowerWindowWidget(w, _road_station_picker_orientation + BRSW_STATION_NE);
|
||||
LowerWindowWidget(w, _station_show_coverage + BRSW_LT_OFF);
|
||||
break;
|
||||
|
||||
case WE_PAINT: {
|
||||
@@ -583,20 +668,27 @@ static void RoadStationPickerWndProc(Window *w, WindowEvent *e)
|
||||
|
||||
case WE_CLICK: {
|
||||
switch (e->we.click.widget) {
|
||||
case 3: case 4: case 5: case 6: case 7: case 8:
|
||||
RaiseWindowWidget(w, _road_station_picker_orientation + 3);
|
||||
_road_station_picker_orientation = (DiagDirection)(e->we.click.widget - 3);
|
||||
LowerWindowWidget(w, _road_station_picker_orientation + 3);
|
||||
SndPlayFx(SND_15_BEEP);
|
||||
SetWindowDirty(w);
|
||||
break;
|
||||
case 9: case 10:
|
||||
RaiseWindowWidget(w, _station_show_coverage + 9);
|
||||
_station_show_coverage = (e->we.click.widget != 9);
|
||||
LowerWindowWidget(w, _station_show_coverage + 9);
|
||||
SndPlayFx(SND_15_BEEP);
|
||||
SetWindowDirty(w);
|
||||
break;
|
||||
case BRSW_STATION_NE:
|
||||
case BRSW_STATION_SE:
|
||||
case BRSW_STATION_SW:
|
||||
case BRSW_STATION_NW:
|
||||
case BRSW_STATION_X:
|
||||
case BRSW_STATION_Y:
|
||||
RaiseWindowWidget(w, _road_station_picker_orientation + BRSW_STATION_NE);
|
||||
_road_station_picker_orientation = (DiagDirection)(e->we.click.widget - BRSW_STATION_NE);
|
||||
LowerWindowWidget(w, _road_station_picker_orientation + BRSW_STATION_NE);
|
||||
SndPlayFx(SND_15_BEEP);
|
||||
SetWindowDirty(w);
|
||||
break;
|
||||
|
||||
case BRSW_LT_OFF:
|
||||
case BRSW_LT_ON:
|
||||
RaiseWindowWidget(w, _station_show_coverage + BRSW_LT_OFF);
|
||||
_station_show_coverage = (e->we.click.widget != BRSW_LT_OFF);
|
||||
LowerWindowWidget(w, _station_show_coverage + BRSW_LT_OFF);
|
||||
SndPlayFx(SND_15_BEEP);
|
||||
SetWindowDirty(w);
|
||||
break;
|
||||
}
|
||||
} break;
|
||||
|
||||
@@ -615,19 +707,22 @@ static void RoadStationPickerWndProc(Window *w, WindowEvent *e)
|
||||
}
|
||||
}
|
||||
|
||||
/** Widget definition of the build raod station window */
|
||||
static const Widget _rv_station_picker_widgets[] = {
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 206, 0, 13, STR_NULL, STR_018C_WINDOW_TITLE_DRAG_THIS},
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 206, 14, 176, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 17, 66, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 69, 118, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 69, 118, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 17, 66, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 139, 204, 17, 66, 0x0, STR_NULL},
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 139, 204, 69, 118, 0x0, STR_NULL},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 10, 69, 133, 144, STR_02DB_OFF, STR_3065_DON_T_HIGHLIGHT_COVERAGE},
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 70, 129, 133, 144, STR_02DA_ON, STR_3064_HIGHLIGHT_COVERAGE_AREA},
|
||||
{ WWT_LABEL, RESIZE_NONE, 7, 0, 139, 120, 133, STR_3066_COVERAGE_AREA_HIGHLIGHT, STR_NULL},
|
||||
{ WWT_CLOSEBOX, RESIZE_NONE, 7, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // BRSW_CLOSEBOX
|
||||
{ WWT_CAPTION, RESIZE_NONE, 7, 11, 206, 0, 13, STR_NULL, STR_018C_WINDOW_TITLE_DRAG_THIS}, // BRSW_CAPTION
|
||||
{ WWT_PANEL, RESIZE_NONE, 7, 0, 206, 14, 176, 0x0, STR_NULL}, // BRSW_BACKGROUND
|
||||
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 17, 66, 0x0, STR_NULL}, // BRSW_STATION_NE
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 71, 136, 69, 118, 0x0, STR_NULL}, // BRSW_STATION_SE
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 69, 118, 0x0, STR_NULL}, // BRSW_STATION_SW
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 3, 68, 17, 66, 0x0, STR_NULL}, // BRSW_STATION_NW
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 139, 204, 17, 66, 0x0, STR_NULL}, // BRSW_STATION_X
|
||||
{ WWT_PANEL, RESIZE_NONE, 14, 139, 204, 69, 118, 0x0, STR_NULL}, // BRSW_STATION_Y
|
||||
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 10, 69, 133, 144, STR_02DB_OFF, STR_3065_DON_T_HIGHLIGHT_COVERAGE}, // BRSW_LT_OFF
|
||||
{ WWT_TEXTBTN, RESIZE_NONE, 14, 70, 129, 133, 144, STR_02DA_ON, STR_3064_HIGHLIGHT_COVERAGE_AREA}, // BRSW_LT_ON
|
||||
{ WWT_LABEL, RESIZE_NONE, 7, 0, 139, 120, 133, STR_3066_COVERAGE_AREA_HIGHLIGHT, STR_NULL}, // BRSW_INFO
|
||||
{ WIDGETS_END},
|
||||
};
|
||||
|
||||
@@ -645,8 +740,8 @@ static void ShowRVStationPicker(RoadStop::Type rs)
|
||||
if (w == NULL) return;
|
||||
|
||||
w->window_class = (rs == RoadStop::BUS) ? WC_BUS_STATION : WC_TRUCK_STATION;
|
||||
w->widget[1].data = _road_type_infos[_cur_roadtype].picker_title[rs];
|
||||
for (uint i = 3; i < 9; i++) w->widget[i].tooltips = _road_type_infos[_cur_roadtype].picker_tooltip[rs];
|
||||
w->widget[BRSW_CAPTION].data = _road_type_infos[_cur_roadtype].picker_title[rs];
|
||||
for (uint i = BRSW_STATION_NE; i < BRSW_LT_OFF; i++) w->widget[i].tooltips = _road_type_infos[_cur_roadtype].picker_tooltip[rs];
|
||||
}
|
||||
|
||||
void InitializeRoadGui()
|
||||
|
Reference in New Issue
Block a user