mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-04 06:00:15 +00:00
(svn r21552) -Codechange: Move short callback functions into the switch.
This commit is contained in:
parent
896c4acda1
commit
23e3766bfb
109
src/road_gui.cpp
109
src/road_gui.cpp
@ -65,64 +65,20 @@ void CcPlaySound1D(const CommandCost &result, TileIndex tile, uint32 p1, uint32
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the initial flags for the road constuction.
|
||||
* The flags are:
|
||||
* @li The direction is the X-dir
|
||||
* @li The first tile has a partitial RoadBit (true or false)
|
||||
*
|
||||
* @param tile The start tile
|
||||
* Callback to start placing a bridge.
|
||||
* @param tile Start tile of the bridge.
|
||||
*/
|
||||
static void PlaceRoad_X_Dir(TileIndex tile)
|
||||
{
|
||||
_place_road_flag = RF_DIR_X;
|
||||
if (_tile_fract_coords.x >= 8) _place_road_flag |= RF_START_HALFROAD_X;
|
||||
VpStartPlaceSizing(tile, VPM_FIX_Y, DDSP_PLACE_ROAD_X_DIR);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the initial flags for the road constuction.
|
||||
* The flags are:
|
||||
* @li The direction is the Y-dir
|
||||
* @li The first tile has a partitial RoadBit (true or false)
|
||||
*
|
||||
* @param tile The start tile
|
||||
*/
|
||||
static void PlaceRoad_Y_Dir(TileIndex tile)
|
||||
{
|
||||
_place_road_flag = RF_DIR_Y;
|
||||
if (_tile_fract_coords.y >= 8) _place_road_flag |= RF_START_HALFROAD_Y;
|
||||
VpStartPlaceSizing(tile, VPM_FIX_X, DDSP_PLACE_ROAD_Y_DIR);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the initial flags for the road constuction.
|
||||
* The flags are:
|
||||
* @li The direction is not set.
|
||||
* @li The first tile has a partitial RoadBit (true or false)
|
||||
*
|
||||
* @param tile The start tile
|
||||
*/
|
||||
static void PlaceRoad_AutoRoad(TileIndex tile)
|
||||
{
|
||||
_place_road_flag = RF_NONE;
|
||||
if (_tile_fract_coords.x >= 8) _place_road_flag |= RF_START_HALFROAD_X;
|
||||
if (_tile_fract_coords.y >= 8) _place_road_flag |= RF_START_HALFROAD_Y;
|
||||
VpStartPlaceSizing(tile, VPM_X_OR_Y, DDSP_PLACE_AUTOROAD);
|
||||
}
|
||||
|
||||
static void PlaceRoad_Bridge(TileIndex tile)
|
||||
static void PlaceRoad_Bridge(TileIndex tile, Window *w)
|
||||
{
|
||||
if (IsBridgeTile(tile)) {
|
||||
TileIndex other_tile = GetOtherTunnelBridgeEnd(tile);
|
||||
Window *w = GetCallbackWnd();
|
||||
Point pt = {0, 0};
|
||||
if (w != NULL) w->OnPlaceMouseUp(VPM_X_OR_Y, DDSP_BUILD_BRIDGE, pt, tile, other_tile);
|
||||
w->OnPlaceMouseUp(VPM_X_OR_Y, DDSP_BUILD_BRIDGE, pt, tile, other_tile);
|
||||
} else {
|
||||
VpStartPlaceSizing(tile, VPM_X_OR_Y, DDSP_BUILD_BRIDGE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CcBuildRoadTunnel(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
{
|
||||
if (result.Succeeded()) {
|
||||
@ -179,11 +135,6 @@ static const RoadTypeInfo _road_type_infos[] = {
|
||||
},
|
||||
};
|
||||
|
||||
static void PlaceRoad_Tunnel(TileIndex tile)
|
||||
{
|
||||
DoCommandP(tile, RoadTypeToRoadTypes(_cur_roadtype) | (TRANSPORT_ROAD << 8), 0, CMD_BUILD_TUNNEL | CMD_MSG(STR_ERROR_CAN_T_BUILD_TUNNEL_HERE), CcBuildRoadTunnel);
|
||||
}
|
||||
|
||||
static void BuildRoadOutsideStation(TileIndex tile, DiagDirection direction)
|
||||
{
|
||||
tile += TileOffsByDiagDir(direction);
|
||||
@ -205,11 +156,6 @@ void CcRoadDepot(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2
|
||||
BuildRoadOutsideStation(tile, dir);
|
||||
}
|
||||
|
||||
static void PlaceRoad_Depot(TileIndex tile)
|
||||
{
|
||||
DoCommandP(tile, _cur_roadtype << 2 | _road_depot_orientation, 0, CMD_BUILD_ROAD_DEPOT | CMD_MSG(_road_type_infos[_cur_roadtype].err_depot), CcRoadDepot);
|
||||
}
|
||||
|
||||
/**
|
||||
* Command callback for building road stops.
|
||||
* @param result Result of the build road stop command.
|
||||
@ -265,6 +211,10 @@ static void PlaceRoadStop(TileIndex start_tile, TileIndex end_tile, uint32 p2, u
|
||||
ShowSelectStationIfNeeded(cmdcont, ta);
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback for placing a bus station.
|
||||
* @param tile Position to place the station.
|
||||
*/
|
||||
static void PlaceRoad_BusStation(TileIndex tile)
|
||||
{
|
||||
if (_remove_button_clicked) {
|
||||
@ -279,6 +229,10 @@ static void PlaceRoad_BusStation(TileIndex tile)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Callback for placing a truck station.
|
||||
* @param tile Position to place the station.
|
||||
*/
|
||||
static void PlaceRoad_TruckStation(TileIndex tile)
|
||||
{
|
||||
if (_remove_button_clicked) {
|
||||
@ -432,28 +386,28 @@ struct BuildRoadToolbarWindow : Window {
|
||||
_one_way_button_clicked = false;
|
||||
switch (widget) {
|
||||
case RTW_ROAD_X:
|
||||
HandlePlacePushButton(this, RTW_ROAD_X, _road_type_infos[_cur_roadtype].cursor_nwse, HT_RECT, PlaceRoad_X_Dir);
|
||||
HandlePlacePushButton(this, RTW_ROAD_X, _road_type_infos[_cur_roadtype].cursor_nwse, HT_RECT, NULL);
|
||||
this->last_started_action = widget;
|
||||
break;
|
||||
|
||||
case RTW_ROAD_Y:
|
||||
HandlePlacePushButton(this, RTW_ROAD_Y, _road_type_infos[_cur_roadtype].cursor_nesw, HT_RECT, PlaceRoad_Y_Dir);
|
||||
HandlePlacePushButton(this, RTW_ROAD_Y, _road_type_infos[_cur_roadtype].cursor_nesw, HT_RECT, NULL);
|
||||
this->last_started_action = widget;
|
||||
break;
|
||||
|
||||
case RTW_AUTOROAD:
|
||||
HandlePlacePushButton(this, RTW_AUTOROAD, _road_type_infos[_cur_roadtype].cursor_autoroad, HT_RECT, PlaceRoad_AutoRoad);
|
||||
HandlePlacePushButton(this, RTW_AUTOROAD, _road_type_infos[_cur_roadtype].cursor_autoroad, HT_RECT, NULL);
|
||||
this->last_started_action = widget;
|
||||
break;
|
||||
|
||||
case RTW_DEMOLISH:
|
||||
HandlePlacePushButton(this, RTW_DEMOLISH, ANIMCURSOR_DEMOLISH, HT_RECT, PlaceProc_DemolishArea);
|
||||
HandlePlacePushButton(this, RTW_DEMOLISH, ANIMCURSOR_DEMOLISH, HT_RECT, NULL);
|
||||
this->last_started_action = widget;
|
||||
break;
|
||||
|
||||
case RTW_DEPOT:
|
||||
if (_game_mode == GM_EDITOR || !CanBuildVehicleInfrastructure(VEH_ROAD)) return;
|
||||
if (HandlePlacePushButton(this, RTW_DEPOT, SPR_CURSOR_ROAD_DEPOT, HT_RECT, PlaceRoad_Depot)) {
|
||||
if (HandlePlacePushButton(this, RTW_DEPOT, SPR_CURSOR_ROAD_DEPOT, HT_RECT, NULL)) {
|
||||
ShowRoadDepotPicker(this);
|
||||
this->last_started_action = widget;
|
||||
}
|
||||
@ -461,7 +415,7 @@ struct BuildRoadToolbarWindow : Window {
|
||||
|
||||
case RTW_BUS_STATION:
|
||||
if (_game_mode == GM_EDITOR || !CanBuildVehicleInfrastructure(VEH_ROAD)) return;
|
||||
if (HandlePlacePushButton(this, RTW_BUS_STATION, SPR_CURSOR_BUS_STATION, HT_RECT, PlaceRoad_BusStation)) {
|
||||
if (HandlePlacePushButton(this, RTW_BUS_STATION, SPR_CURSOR_BUS_STATION, HT_RECT, NULL)) {
|
||||
ShowRVStationPicker(this, ROADSTOP_BUS);
|
||||
this->last_started_action = widget;
|
||||
}
|
||||
@ -469,7 +423,7 @@ struct BuildRoadToolbarWindow : Window {
|
||||
|
||||
case RTW_TRUCK_STATION:
|
||||
if (_game_mode == GM_EDITOR || !CanBuildVehicleInfrastructure(VEH_ROAD)) return;
|
||||
if (HandlePlacePushButton(this, RTW_TRUCK_STATION, SPR_CURSOR_TRUCK_STATION, HT_RECT, PlaceRoad_TruckStation)) {
|
||||
if (HandlePlacePushButton(this, RTW_TRUCK_STATION, SPR_CURSOR_TRUCK_STATION, HT_RECT, NULL)) {
|
||||
ShowRVStationPicker(this, ROADSTOP_TRUCK);
|
||||
this->last_started_action = widget;
|
||||
}
|
||||
@ -483,12 +437,12 @@ struct BuildRoadToolbarWindow : Window {
|
||||
break;
|
||||
|
||||
case RTW_BUILD_BRIDGE:
|
||||
HandlePlacePushButton(this, RTW_BUILD_BRIDGE, SPR_CURSOR_BRIDGE, HT_RECT, PlaceRoad_Bridge);
|
||||
HandlePlacePushButton(this, RTW_BUILD_BRIDGE, SPR_CURSOR_BRIDGE, HT_RECT, NULL);
|
||||
this->last_started_action = widget;
|
||||
break;
|
||||
|
||||
case RTW_BUILD_TUNNEL:
|
||||
HandlePlacePushButton(this, RTW_BUILD_TUNNEL, SPR_CURSOR_ROAD_TUNNEL, HT_SPECIAL, PlaceRoad_Tunnel);
|
||||
HandlePlacePushButton(this, RTW_BUILD_TUNNEL, SPR_CURSOR_ROAD_TUNNEL, HT_SPECIAL, NULL);
|
||||
this->last_started_action = widget;
|
||||
break;
|
||||
|
||||
@ -521,15 +475,22 @@ struct BuildRoadToolbarWindow : Window {
|
||||
_one_way_button_clicked = this->IsWidgetLowered(RTW_ONE_WAY);
|
||||
switch (this->last_started_action) {
|
||||
case RTW_ROAD_X:
|
||||
PlaceRoad_X_Dir(tile);
|
||||
_place_road_flag = RF_DIR_X;
|
||||
if (_tile_fract_coords.x >= 8) _place_road_flag |= RF_START_HALFROAD_X;
|
||||
VpStartPlaceSizing(tile, VPM_FIX_Y, DDSP_PLACE_ROAD_X_DIR);
|
||||
break;
|
||||
|
||||
case RTW_ROAD_Y:
|
||||
PlaceRoad_Y_Dir(tile);
|
||||
_place_road_flag = RF_DIR_Y;
|
||||
if (_tile_fract_coords.y >= 8) _place_road_flag |= RF_START_HALFROAD_Y;
|
||||
VpStartPlaceSizing(tile, VPM_FIX_X, DDSP_PLACE_ROAD_Y_DIR);
|
||||
break;
|
||||
|
||||
case RTW_AUTOROAD:
|
||||
PlaceRoad_AutoRoad(tile);
|
||||
_place_road_flag = RF_NONE;
|
||||
if (_tile_fract_coords.x >= 8) _place_road_flag |= RF_START_HALFROAD_X;
|
||||
if (_tile_fract_coords.y >= 8) _place_road_flag |= RF_START_HALFROAD_Y;
|
||||
VpStartPlaceSizing(tile, VPM_X_OR_Y, DDSP_PLACE_AUTOROAD);
|
||||
break;
|
||||
|
||||
case RTW_DEMOLISH:
|
||||
@ -537,7 +498,8 @@ struct BuildRoadToolbarWindow : Window {
|
||||
break;
|
||||
|
||||
case RTW_DEPOT:
|
||||
PlaceRoad_Depot(tile);
|
||||
DoCommandP(tile, _cur_roadtype << 2 | _road_depot_orientation, 0,
|
||||
CMD_BUILD_ROAD_DEPOT | CMD_MSG(_road_type_infos[_cur_roadtype].err_depot), CcRoadDepot);
|
||||
break;
|
||||
|
||||
case RTW_BUS_STATION:
|
||||
@ -549,11 +511,12 @@ struct BuildRoadToolbarWindow : Window {
|
||||
break;
|
||||
|
||||
case RTW_BUILD_BRIDGE:
|
||||
PlaceRoad_Bridge(tile);
|
||||
PlaceRoad_Bridge(tile, this);
|
||||
break;
|
||||
|
||||
case RTW_BUILD_TUNNEL:
|
||||
PlaceRoad_Tunnel(tile);
|
||||
DoCommandP(tile, RoadTypeToRoadTypes(_cur_roadtype) | (TRANSPORT_ROAD << 8), 0,
|
||||
CMD_BUILD_TUNNEL | CMD_MSG(STR_ERROR_CAN_T_BUILD_TUNNEL_HERE), CcBuildRoadTunnel);
|
||||
break;
|
||||
|
||||
default: NOT_REACHED();
|
||||
|
Loading…
Reference in New Issue
Block a user