summaryrefslogtreecommitdiff
path: root/ship_cmd.c
diff options
context:
space:
mode:
authortron <tron@openttd.org>2006-03-08 06:55:33 +0000
committertron <tron@openttd.org>2006-03-08 06:55:33 +0000
commitfbe939b31f8c7ea4e6e47d6d903625dd25c5e856 (patch)
tree5dc0e72ac096a8404e81f92e3e1480cb29c96061 /ship_cmd.c
parent313754011d04ad4913bf4028b78d75ceb359e9b3 (diff)
downloadopenttd-fbe939b31f8c7ea4e6e47d6d903625dd25c5e856.tar.xz
(svn r3783) Replace further ints and magic numbers by Direction, DiagDirection and friends
Diffstat (limited to 'ship_cmd.c')
-rw-r--r--ship_cmd.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/ship_cmd.c b/ship_cmd.c
index d12d36ae7..607dc152c 100644
--- a/ship_cmd.c
+++ b/ship_cmd.c
@@ -44,7 +44,7 @@ void DrawShipEngine(int x, int y, EngineID engine, uint32 image_ormod)
DrawSprite((6 + _ship_sprites[spritenum]) | image_ormod, x, y);
}
-int GetShipImage(const Vehicle *v, byte direction)
+int GetShipImage(const Vehicle* v, Direction direction)
{
int spritenum = v->spritenum;
@@ -579,10 +579,10 @@ static int ChooseShipTrack(Vehicle *v, TileIndex tile, int enterdir, uint tracks
}
}
-static const byte _new_vehicle_direction_table[11] = {
- 0, 7, 6, 0,
- 1, 0, 5, 0,
- 2, 3, 4,
+static const Direction _new_vehicle_direction_table[] = {
+ DIR_N , DIR_NW, DIR_W , 0,
+ DIR_NE, DIR_N , DIR_SW, 0,
+ DIR_E , DIR_SE, DIR_S
};
static int ShipGetNewDirectionFromTiles(TileIndex new_tile, TileIndex old_tile)
@@ -646,7 +646,9 @@ static void ShipController(Vehicle *v)
GetNewVehiclePosResult gp;
uint32 r;
const byte *b;
- int dir,track,tracks;
+ Direction dir;
+ int track;
+ int tracks;
v->tick_counter++;
@@ -736,23 +738,24 @@ static void ShipController(Vehicle *v)
}
}
} else {
+ DiagDirection diagdir;
// new tile
if (TileX(gp.new_tile) >= MapMaxX() || TileY(gp.new_tile) >= MapMaxY())
goto reverse_direction;
dir = ShipGetNewDirectionFromTiles(gp.new_tile, gp.old_tile);
- assert(dir == 1 || dir == 3 || dir == 5 || dir == 7);
- dir>>=1;
- tracks = GetAvailShipTracks(gp.new_tile, dir);
+ assert(dir == DIR_NE || dir == DIR_SE || dir == DIR_SW || dir == DIR_NW);
+ diagdir = DirToDiagDir(dir);
+ tracks = GetAvailShipTracks(gp.new_tile, diagdir);
if (tracks == 0)
goto reverse_direction;
// Choose a direction, and continue if we find one
- track = ChooseShipTrack(v, gp.new_tile, dir, tracks);
+ track = ChooseShipTrack(v, gp.new_tile, diagdir, tracks);
if (track < 0)
goto reverse_direction;
- b = _ship_subcoord[dir][track];
+ b = _ship_subcoord[diagdir][track];
gp.x = (gp.x&~0xF) | b[0];
gp.y = (gp.y&~0xF) | b[1];
@@ -783,7 +786,7 @@ getout:
return;
reverse_direction:
- dir = v->direction ^ 4;
+ dir = ReverseDir(v->direction);
v->direction = dir;
goto getout;
}