diff options
author | frosch <frosch@openttd.org> | 2016-10-16 14:57:56 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2016-10-16 14:57:56 +0000 |
commit | d2393b4f6c89b75a90452fe68ab8a1cfbd8c353f (patch) | |
tree | c7934b2d2a19fa55c53ac063b91cc519fb4b753a /src/newgrf_engine.cpp | |
parent | f5409c713b002012c6a2218de1720a91282eab67 (diff) | |
download | openttd-d2393b4f6c89b75a90452fe68ab8a1cfbd8c353f.tar.xz |
(svn r27666) -Codechange: Pass vehicle sprites around using a struct VehicleSpriteSeq.
Diffstat (limited to 'src/newgrf_engine.cpp')
-rw-r--r-- | src/newgrf_engine.cpp | 19 |
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())); } |