SpriteID Ship::GetImage(Direction direction) const { uint8 spritenum = this->spritenum; if (is_custom_sprite(spritenum)) { SpriteID sprite = GetCustomVehicleSprite(this, direction); if (sprite != 0) return sprite; spritenum = Engine::Get(this->engine_type)->original_image_index; } return _ship_sprites[spritenum] + direction; }
void Ship::GetImage(Direction direction, EngineImageType image_type, VehicleSpriteSeq *result) const { uint8 spritenum = this->spritenum; if (is_custom_sprite(spritenum)) { GetCustomVehicleSprite(this, direction, image_type, result); if (result->IsValid()) return; spritenum = this->GetEngine()->original_image_index; } assert(IsValidImageIndex<VEH_SHIP>(spritenum)); result->Set(_ship_sprites[spritenum] + direction); }
static SpriteID GetShipIcon(EngineID engine) { const Engine *e = Engine::Get(engine); uint8 spritenum = e->u.ship.image_index; if (is_custom_sprite(spritenum)) { SpriteID sprite = GetCustomVehicleIcon(engine, DIR_W); if (sprite != 0) return sprite; spritenum = e->original_image_index; } return DIR_W + _ship_sprites[spritenum]; }
static void GetShipIcon(EngineID engine, EngineImageType image_type, VehicleSpriteSeq *result) { const Engine *e = Engine::Get(engine); uint8 spritenum = e->u.ship.image_index; if (is_custom_sprite(spritenum)) { GetCustomVehicleIcon(engine, DIR_W, image_type, result); if (result->IsValid()) return; spritenum = e->original_image_index; } assert(IsValidImageIndex<VEH_SHIP>(spritenum)); result->Set(DIR_W + _ship_sprites[spritenum]); }