summaryrefslogtreecommitdiff
path: root/src/ship_cmd.cpp
diff options
context:
space:
mode:
authorpeter1138 <peter1138@openttd.org>2008-04-21 20:50:58 +0000
committerpeter1138 <peter1138@openttd.org>2008-04-21 20:50:58 +0000
commit5dcd689f5662d93ade95e3fd04332b8456605add (patch)
treeb307e9b6916fb53727cd6a80f2c5478a0b4ab819 /src/ship_cmd.cpp
parent173ac52da5c933f35e5cae799679bed8c580078f (diff)
downloadopenttd-5dcd689f5662d93ade95e3fd04332b8456605add.tar.xz
(svn r12824) -Codechange: Standardise routines for drawing vehicle images, using correct types and less duplication.
Diffstat (limited to 'src/ship_cmd.cpp')
-rw-r--r--src/ship_cmd.cpp43
1 files changed, 17 insertions, 26 deletions
diff --git a/src/ship_cmd.cpp b/src/ship_cmd.cpp
index 2a0e7222b..de4926999 100644
--- a/src/ship_cmd.cpp
+++ b/src/ship_cmd.cpp
@@ -58,20 +58,23 @@ static inline TrackBits GetTileShipTrackStatus(TileIndex tile)
return TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_WATER, 0));
}
-void DrawShipEngine(int x, int y, EngineID engine, SpriteID pal)
+static SpriteID GetShipIcon(EngineID engine)
{
- int spritenum = ShipVehInfo(engine)->image_index;
+ uint8 spritenum = ShipVehInfo(engine)->image_index;
if (is_custom_sprite(spritenum)) {
- int sprite = GetCustomVehicleIcon(engine, DIR_W);
+ SpriteID sprite = GetCustomVehicleIcon(engine, DIR_W);
+ if (sprite != 0) return sprite;
- if (sprite != 0) {
- DrawSprite(sprite, pal, x, y);
- return;
- }
spritenum = _orig_ship_vehicle_info[engine - SHIP_ENGINES_INDEX].image_index;
}
- DrawSprite(6 + _ship_sprites[spritenum], pal, x, y);
+
+ return 6 + _ship_sprites[spritenum];
+}
+
+void DrawShipEngine(int x, int y, EngineID engine, SpriteID pal)
+{
+ DrawSprite(GetShipIcon(engine), pal, x, y);
}
/** Get the size of the sprite of a ship sprite heading west (used for lists)
@@ -81,35 +84,23 @@ void DrawShipEngine(int x, int y, EngineID engine, SpriteID pal)
*/
void GetShipSpriteSize(EngineID engine, uint &width, uint &height)
{
- SpriteID spritenum = ShipVehInfo(engine)->image_index;
- SpriteID custom_sprite = 0;
-
- if (is_custom_sprite(spritenum)) {
- custom_sprite = GetCustomVehicleIcon(engine, DIR_W);
- spritenum = _orig_ship_vehicle_info[engine - SHIP_ENGINES_INDEX].image_index;
- }
- if (custom_sprite == 0) {
- spritenum = 6 + _ship_sprites[spritenum];
- } else {
- spritenum = custom_sprite;
- }
-
- const Sprite *spr = GetSprite(spritenum);
+ const Sprite *spr = GetSprite(GetShipIcon(engine));
width = spr->width;
height = spr->height;
}
-int Ship::GetImage(Direction direction) const
+SpriteID Ship::GetImage(Direction direction) const
{
- int spritenum = this->spritenum;
+ uint8 spritenum = this->spritenum;
if (is_custom_sprite(spritenum)) {
- int sprite = GetCustomVehicleSprite(this, direction);
-
+ SpriteID sprite = GetCustomVehicleSprite(this, direction);
if (sprite != 0) return sprite;
+
spritenum = _orig_ship_vehicle_info[this->engine_type - SHIP_ENGINES_INDEX].image_index;
}
+
return _ship_sprites[spritenum] + direction;
}