equal
deleted
inserted
replaced
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 } |