src/road_gui.cpp
changeset 7166 3937d5ea59df
parent 7165 37eb253f3c06
child 7170 bd34b6d0e4f1
equal deleted inserted replaced
7165:37eb253f3c06 7166:3937d5ea59df
    43 }
    43 }
    44 
    44 
    45 static void PlaceRoad_NE(TileIndex tile)
    45 static void PlaceRoad_NE(TileIndex tile)
    46 {
    46 {
    47 	_place_road_flag = (_tile_fract_coords.y >= 8) + 4;
    47 	_place_road_flag = (_tile_fract_coords.y >= 8) + 4;
    48 	VpStartPlaceSizing(tile, VPM_FIX_X, GUI_PlaceProc_None);
    48 	VpStartPlaceSizing(tile, VPM_FIX_X, DDSP_PLACE_ROAD_NE);
    49 }
    49 }
    50 
    50 
    51 static void PlaceRoad_NW(TileIndex tile)
    51 static void PlaceRoad_NW(TileIndex tile)
    52 {
    52 {
    53 	_place_road_flag = (_tile_fract_coords.x >= 8) + 0;
    53 	_place_road_flag = (_tile_fract_coords.x >= 8) + 0;
    54 	VpStartPlaceSizing(tile, VPM_FIX_Y, GUI_PlaceProc_None);
    54 	VpStartPlaceSizing(tile, VPM_FIX_Y, DDSP_PLACE_ROAD_NW);
    55 }
    55 }
    56 
    56 
    57 static void PlaceRoad_Bridge(TileIndex tile)
    57 static void PlaceRoad_Bridge(TileIndex tile)
    58 {
    58 {
    59 	VpStartPlaceSizing(tile, VPM_X_OR_Y, GUI_PlaceProc_None);
    59 	VpStartPlaceSizing(tile, VPM_X_OR_Y, DDSP_BUILD_BRIDGE);
    60 }
    60 }
    61 
    61 
    62 
    62 
    63 void CcBuildRoadTunnel(bool success, TileIndex tile, uint32 p1, uint32 p2)
    63 void CcBuildRoadTunnel(bool success, TileIndex tile, uint32 p1, uint32 p2)
    64 {
    64 {
   132 	}
   132 	}
   133 }
   133 }
   134 
   134 
   135 static void PlaceRoad_DemolishArea(TileIndex tile)
   135 static void PlaceRoad_DemolishArea(TileIndex tile)
   136 {
   136 {
   137 	VpStartPlaceSizing(tile, VPM_X_AND_Y, GUI_PlaceProc_None);
   137 	VpStartPlaceSizing(tile, VPM_X_AND_Y, DDSP_DEMOLISH_AREA);
   138 }
   138 }
   139 
   139 
   140 
   140 
   141 enum {
   141 enum {
   142 	RTW_ROAD_X        =  3,
   142 	RTW_ROAD_X        =  3,
   269 		w = FindWindowById(WC_BUILD_DEPOT, 0);
   269 		w = FindWindowById(WC_BUILD_DEPOT, 0);
   270 		if (w != NULL) WP(w, def_d).close = true;
   270 		if (w != NULL) WP(w, def_d).close = true;
   271 		break;
   271 		break;
   272 
   272 
   273 	case WE_PLACE_DRAG:
   273 	case WE_PLACE_DRAG:
   274 		switch (e->we.place.select_method) {
   274 		switch (e->we.place.select_proc) {
   275 			case VPM_FIX_X:
   275 			case DDSP_PLACE_ROAD_NE:
   276 				_place_road_flag = (_place_road_flag & ~2) | ((e->we.place.pt.y & 8) >> 2);
   276 				_place_road_flag = (_place_road_flag & ~2) | ((e->we.place.pt.y & 8) >> 2);
   277 				break;
   277 				break;
   278 
   278 
   279 			case VPM_FIX_Y:
   279 			case DDSP_PLACE_ROAD_NW:
   280 				_place_road_flag = (_place_road_flag & ~2) | ((e->we.place.pt.x & 8) >> 2);
   280 				_place_road_flag = (_place_road_flag & ~2) | ((e->we.place.pt.x & 8) >> 2);
   281 				break;
   281 				break;
   282 		}
   282 		}
   283 
   283 
   284 		VpSelectTilesWithMethod(e->we.place.pt.x, e->we.place.pt.y, e->we.place.select_method);
   284 		VpSelectTilesWithMethod(e->we.place.pt.x, e->we.place.pt.y, e->we.place.select_method);
   287 	case WE_PLACE_MOUSEUP:
   287 	case WE_PLACE_MOUSEUP:
   288 		if (e->we.place.pt.x != -1) {
   288 		if (e->we.place.pt.x != -1) {
   289 			TileIndex start_tile = e->we.place.starttile;
   289 			TileIndex start_tile = e->we.place.starttile;
   290 			TileIndex end_tile = e->we.place.tile;
   290 			TileIndex end_tile = e->we.place.tile;
   291 
   291 
   292 			switch (e->we.place.select_method) {
   292 			switch (e->we.place.select_proc) {
   293 				case VPM_X_OR_Y:
   293 				case DDSP_BUILD_BRIDGE:
   294 					ResetObjectToPlace();
   294 					ResetObjectToPlace();
   295 					ShowBuildBridgeWindow(start_tile, end_tile, 0x80 | RoadTypeToRoadTypes(_cur_roadtype));
   295 					ShowBuildBridgeWindow(start_tile, end_tile, 0x80 | RoadTypeToRoadTypes(_cur_roadtype));
   296 					break;
   296 					break;
   297 
   297 
   298 				case VPM_X_AND_Y:
   298 				case DDSP_DEMOLISH_AREA:
   299 					DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_CLEAR_AREA | CMD_MSG(STR_00B5_CAN_T_CLEAR_THIS_AREA));
   299 					DoCommandP(end_tile, start_tile, 0, CcPlaySound10, CMD_CLEAR_AREA | CMD_MSG(STR_00B5_CAN_T_CLEAR_THIS_AREA));
   300 					break;
   300 					break;
   301 
   301 
   302 				default:
   302 				case DDSP_PLACE_ROAD_NE:
       
   303 				case DDSP_PLACE_ROAD_NW:
   303 					DoCommandP(end_tile, start_tile, _place_road_flag | (_cur_roadtype << 3), CcPlaySound1D,
   304 					DoCommandP(end_tile, start_tile, _place_road_flag | (_cur_roadtype << 3), CcPlaySound1D,
   304 						_remove_button_clicked ?
   305 						_remove_button_clicked ?
   305 						CMD_REMOVE_LONG_ROAD | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1805_CAN_T_REMOVE_ROAD_FROM) :
   306 						CMD_REMOVE_LONG_ROAD | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1805_CAN_T_REMOVE_ROAD_FROM) :
   306 						CMD_BUILD_LONG_ROAD | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1804_CAN_T_BUILD_ROAD_HERE));
   307 						CMD_BUILD_LONG_ROAD | CMD_AUTO | CMD_NO_WATER | CMD_MSG(STR_1804_CAN_T_BUILD_ROAD_HERE));
   307 					break;
   308 					break;