changeset 16819:fc34d64ce281 draft

(svn r21552) -Codechange: Move short callback functions into the switch.
author alberth <alberth@openttd.org>
date Mon, 20 Dec 2010 19:24:27 +0000
parents 1938d2075229
children acd43b314092
files src/road_gui.cpp
diffstat 1 files changed, 36 insertions(+), 73 deletions(-) [+]
line wrap: on
line diff
--- a/src/road_gui.cpp
+++ b/src/road_gui.cpp
@@ -65,64 +65,20 @@
 }
 
 /**
- * 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
- */
-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
+ * Callback to start placing a bridge.
+ * @param tile Start tile of the bridge.
  */
-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 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 @@
 	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 @@
 	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 @@
 	}
 }
 
+/**
+ * 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 @@
 		_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 @@
 
 			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 @@
 
 			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 @@
 				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 @@
 		_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 @@
 				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 @@
 				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();