Mercurial > hg > openttd
changeset 3472:34f02a91f219 draft
(svn r4317) -Codechange: More map accessors for ship_cmd. it is now map-access free, but still requires a huge cleanup
author | celestar <celestar@openttd.org> |
---|---|
date | Fri, 07 Apr 2006 15:57:03 +0000 |
parents | 05eabc9fb366 |
children | d7511478b000 |
files | ship_cmd.c station_map.h |
diffstat | 2 files changed, 20 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/ship_cmd.c +++ b/ship_cmd.c @@ -190,17 +190,6 @@ SndPlayVehicleFx(ShipVehInfo(v->engine_type)->sfx, v); } -static const TileIndexDiffC _dock_offs[] = { - { 2, 0}, - {-2, 0}, - { 0, 2}, - { 2, 0}, - { 0, -2}, - { 0, 0}, - { 0, 0}, - { 0, 0} -}; - static void ProcessShipOrder(Vehicle *v) { const Order *order; @@ -245,7 +234,7 @@ st = GetStation(order->station); if (st->dock_tile != 0) { - v->dest_tile = TILE_ADD(st->dock_tile, ToTileIndexDiff(_dock_offs[_m[st->dock_tile].m5-0x4B])); + v->dest_tile = TILE_ADD(st->dock_tile, ToTileIndexDiff(GetDockOffset(st->dock_tile))); } } else if (order->type == OT_GOTO_DEPOT) { v->dest_tile = GetDepot(order->station)->xy;
--- a/station_map.h +++ b/station_map.h @@ -184,6 +184,25 @@ return (DiagDirection)(_m[t].m5 - DOCK_BASE); } +static inline TileIndexDiffC GetDockOffset(TileIndex t) +{ + static const TileIndexDiffC buoy_offset = {0, 0}; + static const TileIndexDiffC oilrig_offset = {2, 0}; + static const TileIndexDiffC dock_offset[DIAGDIR_END] = { + {-2, 0}, + { 0, 2}, + { 2, 0}, + { 0, -2}, + }; + assert(IsTileType(t, MP_STATION)); + + if (IsBuoy_(t)) return buoy_offset; + if (IsOilRig(t)) return oilrig_offset; + + assert(IsDock(t)); + + return dock_offset[GetDockDirection(t)]; +} static inline bool IsCustomStationSprite(TileIndex t) {