src/tunnelbridge_cmd.cpp
changeset 9027 005a0b422107
parent 9026 80fecf9c1de6
child 9028 501b3b351df7
equal deleted inserted replaced
9026:80fecf9c1de6 9027:005a0b422107
   200 	TransportType transport_type;
   200 	TransportType transport_type;
   201 
   201 
   202 	/* unpack parameters */
   202 	/* unpack parameters */
   203 	bridge_type = GB(p2, 0, 8);
   203 	bridge_type = GB(p2, 0, 8);
   204 
   204 
       
   205 	if (p1 >= MapSize()) return CMD_ERROR;
       
   206 
   205 	transport_type = (TransportType)GB(p2, 15, 2);
   207 	transport_type = (TransportType)GB(p2, 15, 2);
   206 	/* For now, only TRANSPORT_RAIL and TRANSPORT_ROAD are allowed.
       
   207 	 * But let not this stops us for preparing the future */
       
   208 	if (transport_type >= TRANSPORT_WATER) return CMD_ERROR;
       
   209 
       
   210 	if (p1 >= MapSize()) return CMD_ERROR;
       
   211 
   208 
   212 	/* type of bridge */
   209 	/* type of bridge */
   213 	switch (transport_type) {
   210 	switch (transport_type) {
   214 		case TRANSPORT_ROAD:
   211 		case TRANSPORT_ROAD:
   215 			roadtypes = (RoadTypes)GB(p2, 8, 3);
   212 			roadtypes = (RoadTypes)GB(p2, 8, 3);
   218 
   215 
   219 		case TRANSPORT_RAIL:
   216 		case TRANSPORT_RAIL:
   220 			railtype = (RailType)GB(p2, 8, 8);
   217 			railtype = (RailType)GB(p2, 8, 8);
   221 			if (!ValParamRailtype(railtype)) return CMD_ERROR;
   218 			if (!ValParamRailtype(railtype)) return CMD_ERROR;
   222 			break;
   219 			break;
       
   220 
       
   221 		default:
       
   222 			/* For now, only TRANSPORT_RAIL and TRANSPORT_ROAD are allowed.
       
   223 			 * But let not this stops us for preparing the future */
       
   224 			return CMD_ERROR;
   223 	}
   225 	}
   224 
   226 
   225 	x = TileX(end_tile);
   227 	x = TileX(end_tile);
   226 	y = TileY(end_tile);
   228 	y = TileY(end_tile);
   227 	sx = TileX(p1);
   229 	sx = TileX(p1);
   353 				break;
   355 				break;
   354 
   356 
   355 			case TRANSPORT_ROAD:
   357 			case TRANSPORT_ROAD:
   356 				MakeRoadBridgeRamp(tile_start, owner, bridge_type, dir, roadtypes);
   358 				MakeRoadBridgeRamp(tile_start, owner, bridge_type, dir, roadtypes);
   357 				MakeRoadBridgeRamp(tile_end,   owner, bridge_type, ReverseDiagDir(dir), roadtypes);
   359 				MakeRoadBridgeRamp(tile_end,   owner, bridge_type, ReverseDiagDir(dir), roadtypes);
       
   360 				break;
       
   361 
       
   362 			default:
       
   363 				NOT_REACHED();
   358 				break;
   364 				break;
   359 		}
   365 		}
   360 		MarkTileDirtyByTile(tile_start);
   366 		MarkTileDirtyByTile(tile_start);
   361 		MarkTileDirtyByTile(tile_end);
   367 		MarkTileDirtyByTile(tile_end);
   362 	}
   368 	}