# HG changeset patch # User Peter Nelson # Date 2021-06-04 11:52:00 # Node ID 6743de9f1df8a7e9089c783d8abd277346d7e7d9 # Parent 67d7642297d67c778f83d5d4f3c17b7b692a60a5 Codechange: Deduplicate ResolveReal() for resolvers that don't use real sprite groups. This may change behaviour when multiple loading/loaded stages are provided, as the various copies checked in different orders, however only one result is expected in these cases anyway. diff --git a/src/newgrf_airport.cpp b/src/newgrf_airport.cpp --- a/src/newgrf_airport.cpp +++ b/src/newgrf_airport.cpp @@ -57,8 +57,6 @@ struct AirportResolverObject : public Re } } - const SpriteGroup *ResolveReal(const RealSpriteGroup *group) const override; - GrfSpecFeature GetFeature() const override; uint32 GetDebugID() const override; }; @@ -219,16 +217,6 @@ void AirportOverrideManager::SetEntitySp return this->st->GetNewGRFVariable(this->ro, variable, parameter, available); } -/* virtual */ const SpriteGroup *AirportResolverObject::ResolveReal(const RealSpriteGroup *group) const -{ - /* Airport action 2s should always have only 1 "loaded" state, but some - * times things don't follow the spec... */ - if (!group->loaded.empty()) return group->loaded[0]; - if (!group->loading.empty()) return group->loading[0]; - - return nullptr; -} - GrfSpecFeature AirportResolverObject::GetFeature() const { return GSF_AIRPORTS; diff --git a/src/newgrf_canal.cpp b/src/newgrf_canal.cpp --- a/src/newgrf_canal.cpp +++ b/src/newgrf_canal.cpp @@ -49,8 +49,6 @@ struct CanalResolverObject : public Reso } } - const SpriteGroup *ResolveReal(const RealSpriteGroup *group) const override; - GrfSpecFeature GetFeature() const override; uint32 GetDebugID() const override; }; @@ -108,14 +106,6 @@ struct CanalResolverObject : public Reso return UINT_MAX; } - -/* virtual */ const SpriteGroup *CanalResolverObject::ResolveReal(const RealSpriteGroup *group) const -{ - if (group->loaded.empty()) return nullptr; - - return group->loaded[0]; -} - GrfSpecFeature CanalResolverObject::GetFeature() const { return GSF_CANALS; diff --git a/src/newgrf_cargo.cpp b/src/newgrf_cargo.cpp --- a/src/newgrf_cargo.cpp +++ b/src/newgrf_cargo.cpp @@ -19,22 +19,10 @@ struct CargoResolverObject : public Reso CargoResolverObject(const CargoSpec *cs, CallbackID callback = CBID_NO_CALLBACK, uint32 callback_param1 = 0, uint32 callback_param2 = 0); - const SpriteGroup *ResolveReal(const RealSpriteGroup *group) const override; - GrfSpecFeature GetFeature() const override; uint32 GetDebugID() const override; }; -/* virtual */ const SpriteGroup *CargoResolverObject::ResolveReal(const RealSpriteGroup *group) const -{ - /* Cargo action 2s should always have only 1 "loaded" state, but some - * times things don't follow the spec... */ - if (!group->loaded.empty()) return group->loaded[0]; - if (!group->loading.empty()) return group->loading[0]; - - return nullptr; -} - GrfSpecFeature CargoResolverObject::GetFeature() const { return GSF_CARGOES; diff --git a/src/newgrf_generic.cpp b/src/newgrf_generic.cpp --- a/src/newgrf_generic.cpp +++ b/src/newgrf_generic.cpp @@ -63,8 +63,6 @@ struct GenericResolverObject : public Re } } - const SpriteGroup *ResolveReal(const RealSpriteGroup *group) const override; - GrfSpecFeature GetFeature() const override { return (GrfSpecFeature)this->generic_scope.feature; @@ -147,14 +145,6 @@ void AddGenericCallback(uint8 feature, c return UINT_MAX; } - -/* virtual */ const SpriteGroup *GenericResolverObject::ResolveReal(const RealSpriteGroup *group) const -{ - if (group->loaded.empty()) return nullptr; - - return group->loaded[0]; -} - /** * Generic resolver. * @param ai_callback Callback comes from the AI. diff --git a/src/newgrf_railtype.cpp b/src/newgrf_railtype.cpp --- a/src/newgrf_railtype.cpp +++ b/src/newgrf_railtype.cpp @@ -58,13 +58,6 @@ return UINT_MAX; } -/* virtual */ const SpriteGroup *RailTypeResolverObject::ResolveReal(const RealSpriteGroup *group) const -{ - if (!group->loading.empty()) return group->loading[0]; - if (!group->loaded.empty()) return group->loaded[0]; - return nullptr; -} - GrfSpecFeature RailTypeResolverObject::GetFeature() const { return GSF_RAILTYPES; diff --git a/src/newgrf_railtype.h b/src/newgrf_railtype.h --- a/src/newgrf_railtype.h +++ b/src/newgrf_railtype.h @@ -49,8 +49,6 @@ struct RailTypeResolverObject : public R } } - const SpriteGroup *ResolveReal(const RealSpriteGroup *group) const override; - GrfSpecFeature GetFeature() const override; uint32 GetDebugID() const override; }; diff --git a/src/newgrf_roadtype.cpp b/src/newgrf_roadtype.cpp --- a/src/newgrf_roadtype.cpp +++ b/src/newgrf_roadtype.cpp @@ -58,13 +58,6 @@ return UINT_MAX; } -/* virtual */ const SpriteGroup *RoadTypeResolverObject::ResolveReal(const RealSpriteGroup *group) const -{ - if (!group->loading.empty()) return group->loading[0]; - if (!group->loaded.empty()) return group->loaded[0]; - return nullptr; -} - GrfSpecFeature RoadTypeResolverObject::GetFeature() const { RoadType rt = GetRoadTypeByLabel(this->roadtype_scope.rti->label, false); diff --git a/src/newgrf_roadtype.h b/src/newgrf_roadtype.h --- a/src/newgrf_roadtype.h +++ b/src/newgrf_roadtype.h @@ -40,8 +40,6 @@ struct RoadTypeResolverObject : public R } } - const SpriteGroup *ResolveReal(const RealSpriteGroup *group) const override; - GrfSpecFeature GetFeature() const override; uint32 GetDebugID() const override; }; diff --git a/src/newgrf_spritegroup.cpp b/src/newgrf_spritegroup.cpp --- a/src/newgrf_spritegroup.cpp +++ b/src/newgrf_spritegroup.cpp @@ -124,6 +124,9 @@ static inline uint32 GetVariable(const R */ /* virtual */ const SpriteGroup *ResolverObject::ResolveReal(const RealSpriteGroup *group) const { + if (!group->loaded.empty()) return group->loaded[0]; + if (!group->loading.empty()) return group->loading[0]; + return nullptr; }