(svn r12824) -Codechange: Standardise routines for drawing vehicle images, using correct types and less duplication.

This commit is contained in:
peter1138
2008-04-21 20:50:58 +00:00
parent 173ac52da5
commit 5dcd689f56
9 changed files with 114 additions and 126 deletions

View File

@@ -94,36 +94,42 @@ static const Trackdir _roadveh_depot_exit_trackdir[DIAGDIR_END] = {
TRACKDIR_X_NE, TRACKDIR_Y_SE, TRACKDIR_X_SW, TRACKDIR_Y_NW
};
int RoadVehicle::GetImage(Direction direction) const
static SpriteID GetRoadVehIcon(EngineID engine)
{
int img = this->spritenum;
int image;
uint8 spritenum = RoadVehInfo(engine)->image_index;
if (is_custom_sprite(img)) {
image = GetCustomVehicleSprite(this, (Direction)(direction + 4 * IS_CUSTOM_SECONDHEAD_SPRITE(img)));
if (image != 0) return image;
img = _orig_road_vehicle_info[this->engine_type - ROAD_ENGINES_INDEX].image_index;
if (is_custom_sprite(spritenum)) {
SpriteID sprite = GetCustomVehicleIcon(engine, DIR_W);
if (sprite != 0) return sprite;
spritenum = _orig_road_vehicle_info[engine - ROAD_ENGINES_INDEX].image_index;
}
image = direction + _roadveh_images[img];
if (this->cargo.Count() >= this->cargo_cap / 2U) image += _roadveh_full_adder[img];
return image;
return 6 + _roadveh_images[spritenum];
}
SpriteID RoadVehicle::GetImage(Direction direction) const
{
uint8 spritenum = this->spritenum;
SpriteID sprite;
if (is_custom_sprite(spritenum)) {
sprite = GetCustomVehicleSprite(this, (Direction)(direction + 4 * IS_CUSTOM_SECONDHEAD_SPRITE(spritenum)));
if (sprite != 0) return sprite;
spritenum = _orig_road_vehicle_info[this->engine_type - ROAD_ENGINES_INDEX].image_index;
}
sprite = direction + _roadveh_images[spritenum];
if (this->cargo.Count() >= this->cargo_cap / 2U) sprite += _roadveh_full_adder[spritenum];
return sprite;
}
void DrawRoadVehEngine(int x, int y, EngineID engine, SpriteID pal)
{
int spritenum = RoadVehInfo(engine)->image_index;
if (is_custom_sprite(spritenum)) {
int sprite = GetCustomVehicleIcon(engine, DIR_W);
if (sprite != 0) {
DrawSprite(sprite, pal, x, y);
return;
}
spritenum = _orig_road_vehicle_info[engine - ROAD_ENGINES_INDEX].image_index;
}
DrawSprite(6 + _roadveh_images[spritenum], pal, x, y);
DrawSprite(GetRoadVehIcon(engine), pal, x, y);
}
static CommandCost EstimateRoadVehCost(EngineID engine_type)