summaryrefslogtreecommitdiff
path: root/src/newgrf_engine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/newgrf_engine.cpp')
-rw-r--r--src/newgrf_engine.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/newgrf_engine.cpp b/src/newgrf_engine.cpp
index 4aafa10f9..ba8367c7d 100644
--- a/src/newgrf_engine.cpp
+++ b/src/newgrf_engine.cpp
@@ -1023,17 +1023,19 @@ VehicleResolverObject::VehicleResolverObject(EngineID engine_type, const Vehicle
-SpriteID GetCustomEngineSprite(EngineID engine, const Vehicle *v, Direction direction, EngineImageType image_type)
+void GetCustomEngineSprite(EngineID engine, const Vehicle *v, Direction direction, EngineImageType image_type, VehicleSpriteSeq *result)
{
VehicleResolverObject object(engine, v, VehicleResolverObject::WO_CACHED, false, CBID_NO_CALLBACK, image_type);
+ result->Clear();
+
const SpriteGroup *group = object.Resolve();
- if (group == NULL || group->GetNumResults() == 0) return 0;
+ if (group == NULL || group->GetNumResults() == 0) return;
- return group->GetResult() + (direction % group->GetNumResults());
+ result->Set(group->GetResult() + (direction % group->GetNumResults()));
}
-SpriteID GetRotorOverrideSprite(EngineID engine, const Aircraft *v, bool info_view, EngineImageType image_type)
+void GetRotorOverrideSprite(EngineID engine, const struct Aircraft *v, bool info_view, EngineImageType image_type, VehicleSpriteSeq *result)
{
const Engine *e = Engine::Get(engine);
@@ -1042,13 +1044,14 @@ SpriteID GetRotorOverrideSprite(EngineID engine, const Aircraft *v, bool info_vi
assert(!(e->u.air.subtype & AIR_CTOL));
VehicleResolverObject object(engine, v, VehicleResolverObject::WO_SELF, info_view, CBID_NO_CALLBACK, image_type);
- const SpriteGroup *group = object.Resolve();
+ result->Clear();
+ uint rotor_pos = v == NULL || info_view ? 0 : v->Next()->Next()->state;
- if (group == NULL || group->GetNumResults() == 0) return 0;
+ const SpriteGroup *group = object.Resolve();
- if (v == NULL || info_view) return group->GetResult();
+ if (group == NULL || group->GetNumResults() == 0) return;
- return group->GetResult() + (v->Next()->Next()->state % group->GetNumResults());
+ result->Set(group->GetResult() + (rotor_pos % group->GetNumResults()));
}