mirror of https://github.com/OpenTTD/OpenTTD
(svn r4317) -Codechange: More map accessors for ship_cmd. it is now map-access free, but still requires a huge cleanup
parent
da095bc941
commit
c0cb020c80
13
ship_cmd.c
13
ship_cmd.c
|
@ -190,17 +190,6 @@ static void PlayShipSound(Vehicle *v)
|
||||||
SndPlayVehicleFx(ShipVehInfo(v->engine_type)->sfx, v);
|
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)
|
static void ProcessShipOrder(Vehicle *v)
|
||||||
{
|
{
|
||||||
const Order *order;
|
const Order *order;
|
||||||
|
@ -245,7 +234,7 @@ static void ProcessShipOrder(Vehicle *v)
|
||||||
|
|
||||||
st = GetStation(order->station);
|
st = GetStation(order->station);
|
||||||
if (st->dock_tile != 0) {
|
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) {
|
} else if (order->type == OT_GOTO_DEPOT) {
|
||||||
v->dest_tile = GetDepot(order->station)->xy;
|
v->dest_tile = GetDepot(order->station)->xy;
|
||||||
|
|
|
@ -184,6 +184,25 @@ static inline DiagDirection GetDockDirection(TileIndex t)
|
||||||
return (DiagDirection)(_m[t].m5 - DOCK_BASE);
|
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)
|
static inline bool IsCustomStationSprite(TileIndex t)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue