(svn r23080) -Feature: [NewGRF] Use variable 10 to enable vehicle GRFs to draw different sprites on the map and in various GUIs.

This commit is contained in:
frosch
2011-11-01 16:51:47 +00:00
parent e802dc66b9
commit bbc3409942
25 changed files with 124 additions and 111 deletions

View File

@@ -103,13 +103,13 @@ int RoadVehicle::GetDisplayImageWidth(Point *offset) const
return this->gcache.cached_veh_length * reference_width / VEHICLE_LENGTH;
}
static SpriteID GetRoadVehIcon(EngineID engine)
static SpriteID GetRoadVehIcon(EngineID engine, EngineImageType image_type)
{
const Engine *e = Engine::Get(engine);
uint8 spritenum = e->u.road.image_index;
if (is_custom_sprite(spritenum)) {
SpriteID sprite = GetCustomVehicleIcon(engine, DIR_W);
SpriteID sprite = GetCustomVehicleIcon(engine, DIR_W, image_type);
if (sprite != 0) return sprite;
spritenum = e->original_image_index;
@@ -118,13 +118,13 @@ static SpriteID GetRoadVehIcon(EngineID engine)
return DIR_W + _roadveh_images[spritenum];
}
SpriteID RoadVehicle::GetImage(Direction direction) const
SpriteID RoadVehicle::GetImage(Direction direction, EngineImageType image_type) const
{
uint8 spritenum = this->spritenum;
SpriteID sprite;
if (is_custom_sprite(spritenum)) {
sprite = GetCustomVehicleSprite(this, (Direction)(direction + 4 * IS_CUSTOM_SECONDHEAD_SPRITE(spritenum)));
sprite = GetCustomVehicleSprite(this, (Direction)(direction + 4 * IS_CUSTOM_SECONDHEAD_SPRITE(spritenum)), image_type);
if (sprite != 0) return sprite;
spritenum = this->GetEngine()->original_image_index;
@@ -146,9 +146,9 @@ SpriteID RoadVehicle::GetImage(Direction direction) const
* @param engine Engine to draw
* @param pal Palette to use.
*/
void DrawRoadVehEngine(int left, int right, int preferred_x, int y, EngineID engine, PaletteID pal)
void DrawRoadVehEngine(int left, int right, int preferred_x, int y, EngineID engine, PaletteID pal, EngineImageType image_type)
{
SpriteID sprite = GetRoadVehIcon(engine);
SpriteID sprite = GetRoadVehIcon(engine, image_type);
const Sprite *real_sprite = GetSprite(sprite, ST_NORMAL);
preferred_x = Clamp(preferred_x, left - real_sprite->x_offs, right - real_sprite->width - real_sprite->x_offs);
DrawSprite(sprite, pal, preferred_x, y);