diff options
Diffstat (limited to 'newgrf_engine.c')
-rw-r--r-- | newgrf_engine.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/newgrf_engine.c b/newgrf_engine.c index 577d53c34..442614df9 100644 --- a/newgrf_engine.c +++ b/newgrf_engine.c @@ -660,7 +660,7 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by case 0x1C: return v->y_pos; case 0x1D: return v->y_pos & 0xFF; case 0x1E: return v->z_pos; - case 0x1F: return v->direction; + case 0x1F: return object->info_view ? DIR_W : v->direction; case 0x28: return v->cur_image; case 0x29: return v->cur_image & 0xFF; case 0x32: return v->vehstatus; @@ -799,6 +799,8 @@ static inline void NewVehicleResolver(ResolverObject *res, const Vehicle *v) res->u.vehicle.self = v; res->u.vehicle.parent = (v != NULL && v->type == VEH_Train) ? GetFirstVehicleInChain(v) : v; + res->info_view = false; + res->callback = 0; res->callback_param1 = 0; res->callback_param2 = 0; @@ -842,7 +844,7 @@ SpriteID GetCustomEngineSprite(EngineID engine, const Vehicle *v, Direction dire } -SpriteID GetRotorOverrideSprite(EngineID engine, const Vehicle *v) +SpriteID GetRotorOverrideSprite(EngineID engine, const Vehicle *v, bool info_view) { const SpriteGroup *group; ResolverObject object; @@ -855,6 +857,8 @@ SpriteID GetRotorOverrideSprite(EngineID engine, const Vehicle *v) NewVehicleResolver(&object, v); + object.info_view = info_view; + group = heli_rotor_custom_sprites[engine - AIRCRAFT_ENGINES_INDEX]; group = Resolve(group, &object); @@ -862,7 +866,7 @@ SpriteID GetRotorOverrideSprite(EngineID engine, const Vehicle *v) if (v == NULL) return group->g.result.sprite; - return group->g.result.sprite + (v->next->next->u.air.state % group->g.result.num_sprites); + return group->g.result.sprite + (info_view ? 0 : (v->next->next->u.air.state % group->g.result.num_sprites)); } |