From d793da4034f0d93927b2a0d8b4dd9825d3c6c33b Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sun, 17 Dec 2023 13:57:24 +0000 Subject: [PATCH] VarAction2: Fix callback analysis through real sprite groups See: #618 --- src/newgrf_analysis.cpp | 10 ++++++++++ src/newgrf_spritegroup.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/src/newgrf_analysis.cpp b/src/newgrf_analysis.cpp index c14be6b87c..994446db62 100644 --- a/src/newgrf_analysis.cpp +++ b/src/newgrf_analysis.cpp @@ -321,3 +321,13 @@ void RandomizedSpriteGroup::AnalyseCallbacks(AnalyseCallbackOperation &op) const if (group != nullptr) group->AnalyseCallbacks(op); } } + +void RealSpriteGroup::AnalyseCallbacks(AnalyseCallbackOperation &op) const +{ + for (const SpriteGroup *group: this->loaded) { + if (group != nullptr) group->AnalyseCallbacks(op); + } + for (const SpriteGroup *group: this->loading) { + if (group != nullptr) group->AnalyseCallbacks(op); + } +} diff --git a/src/newgrf_spritegroup.h b/src/newgrf_spritegroup.h index 23baee3253..fae7e60ae8 100644 --- a/src/newgrf_spritegroup.h +++ b/src/newgrf_spritegroup.h @@ -106,6 +106,8 @@ struct RealSpriteGroup : SpriteGroup { std::vector loaded; ///< List of loaded groups (can be SpriteIDs or Callback results) std::vector loading; ///< List of loading groups (can be SpriteIDs or Callback results) + void AnalyseCallbacks(AnalyseCallbackOperation &op) const override; + protected: const SpriteGroup *Resolve(ResolverObject &object) const override; };