summaryrefslogtreecommitdiff
path: root/src/train_cmd.cpp
diff options
context:
space:
mode:
authorfrosch <frosch@openttd.org>2011-11-01 16:51:47 +0000
committerfrosch <frosch@openttd.org>2011-11-01 16:51:47 +0000
commitbbc3409942565cd6876016e270288517cb6acafb (patch)
tree3079bbaa5682e25b2805774cd2382e9c0c6ef109 /src/train_cmd.cpp
parente802dc66b9d1e913e77816184ed2744f737823ec (diff)
downloadopenttd-bbc3409942565cd6876016e270288517cb6acafb.tar.xz
(svn r23080) -Feature: [NewGRF] Use variable 10 to enable vehicle GRFs to draw different sprites on the map and in various GUIs.
Diffstat (limited to 'src/train_cmd.cpp')
-rw-r--r--src/train_cmd.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp
index 7fd6d6a8b..82f4293b4 100644
--- a/src/train_cmd.cpp
+++ b/src/train_cmd.cpp
@@ -473,7 +473,7 @@ static SpriteID GetDefaultTrainSprite(uint8 spritenum, Direction direction)
return ((direction + _engine_sprite_add[spritenum]) & _engine_sprite_and[spritenum]) + _engine_sprite_base[spritenum];
}
-SpriteID Train::GetImage(Direction direction) const
+SpriteID Train::GetImage(Direction direction, EngineImageType image_type) const
{
uint8 spritenum = this->spritenum;
SpriteID sprite;
@@ -481,7 +481,7 @@ SpriteID Train::GetImage(Direction direction) const
if (HasBit(this->flags, VRF_REVERSE_DIRECTION)) direction = ReverseDir(direction);
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;
@@ -494,14 +494,14 @@ SpriteID Train::GetImage(Direction direction) const
return sprite;
}
-static SpriteID GetRailIcon(EngineID engine, bool rear_head, int &y)
+static SpriteID GetRailIcon(EngineID engine, bool rear_head, int &y, EngineImageType image_type)
{
const Engine *e = Engine::Get(engine);
Direction dir = rear_head ? DIR_E : DIR_W;
uint8 spritenum = e->u.rail.image_index;
if (is_custom_sprite(spritenum)) {
- SpriteID sprite = GetCustomVehicleIcon(engine, dir);
+ SpriteID sprite = GetCustomVehicleIcon(engine, dir, image_type);
if (sprite != 0) {
if (e->GetGRF() != NULL) {
y += e->GetGRF()->traininfo_vehicle_pitch;
@@ -517,14 +517,14 @@ static SpriteID GetRailIcon(EngineID engine, bool rear_head, int &y)
return GetDefaultTrainSprite(spritenum, DIR_W);
}
-void DrawTrainEngine(int left, int right, int preferred_x, int y, EngineID engine, PaletteID pal)
+void DrawTrainEngine(int left, int right, int preferred_x, int y, EngineID engine, PaletteID pal, EngineImageType image_type)
{
if (RailVehInfo(engine)->railveh_type == RAILVEH_MULTIHEAD) {
int yf = y;
int yr = y;
- SpriteID spritef = GetRailIcon(engine, false, yf);
- SpriteID spriter = GetRailIcon(engine, true, yr);
+ SpriteID spritef = GetRailIcon(engine, false, yf, image_type);
+ SpriteID spriter = GetRailIcon(engine, true, yr, image_type);
const Sprite *real_spritef = GetSprite(spritef, ST_NORMAL);
const Sprite *real_spriter = GetSprite(spriter, ST_NORMAL);
@@ -533,7 +533,7 @@ void DrawTrainEngine(int left, int right, int preferred_x, int y, EngineID engin
DrawSprite(spritef, pal, preferred_x - 14, yf);
DrawSprite(spriter, pal, preferred_x + 15, yr);
} else {
- SpriteID sprite = GetRailIcon(engine, false, y);
+ SpriteID sprite = GetRailIcon(engine, false, y, 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);
@@ -2046,7 +2046,7 @@ static bool CheckTrainStayInDepot(Train *v)
v->cur_speed = 0;
v->UpdateDeltaXY(v->direction);
- v->cur_image = v->GetImage(v->direction);
+ v->cur_image = v->GetImage(v->direction, EIT_ON_MAP);
VehicleMove(v, false);
UpdateSignalsOnSegment(v->tile, INVALID_DIAGDIR, v->owner);
v->UpdateAcceleration();
@@ -3317,7 +3317,7 @@ static void ChangeTrainDirRandomly(Train *v)
if (!(v->vehstatus & VS_HIDDEN)) {
v->direction = ChangeDir(v->direction, delta[GB(Random(), 0, 2)]);
v->UpdateDeltaXY(v->direction);
- v->cur_image = v->GetImage(v->direction);
+ v->cur_image = v->GetImage(v->direction, EIT_ON_MAP);
/* Refrain from updating the z position of the vehicle when on
* a bridge, because UpdateInclination() will put the vehicle under
* the bridge in that case */