From 13349254ead62878323608e5480a7d7704afad2f Mon Sep 17 00:00:00 2001 From: frosch Date: Mon, 5 May 2025 16:13:41 +0200 Subject: [PATCH] Fix #14216, d030d17: RealSpriteGroups referencing CallbackResultSpriteGroups were always treated as callback-failure. (#14218) --- src/newgrf_engine.cpp | 6 +++--- src/newgrf_engine.h | 2 +- src/newgrf_spritegroup.cpp | 9 ++++++--- src/newgrf_spritegroup.h | 2 +- src/newgrf_station.cpp | 6 +++--- src/newgrf_station.h | 2 +- 6 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/newgrf_engine.cpp b/src/newgrf_engine.cpp index cd17a604f4..021ff8a264 100644 --- a/src/newgrf_engine.cpp +++ b/src/newgrf_engine.cpp @@ -998,14 +998,14 @@ static uint32_t VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *objec } -/* virtual */ ResolverResult VehicleResolverObject::ResolveReal(const RealSpriteGroup &group) const +/* virtual */ const SpriteGroup *VehicleResolverObject::ResolveReal(const RealSpriteGroup &group) const { const Vehicle *v = this->self_scope.v; if (v == nullptr) { if (!group.loading.empty()) return group.loading[0]; if (!group.loaded.empty()) return group.loaded[0]; - return std::monostate{}; + return nullptr; } const Order &order = v->First()->current_order; @@ -1014,7 +1014,7 @@ static uint32_t VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *objec uint totalsets = static_cast(in_motion ? group.loaded.size() : group.loading.size()); - if (totalsets == 0) return std::monostate{}; + if (totalsets == 0) return nullptr; uint set = (v->cargo.StoredCount() * totalsets) / std::max(1u, v->cargo_cap); set = std::min(set, totalsets - 1); diff --git a/src/newgrf_engine.h b/src/newgrf_engine.h index 0bf8f3af2f..92d87a795f 100644 --- a/src/newgrf_engine.h +++ b/src/newgrf_engine.h @@ -64,7 +64,7 @@ struct VehicleResolverObject : public SpecializedResolverObjectstation_scope.st == nullptr || !Station::IsExpected(this->station_scope.st)) { if (!group.loading.empty()) return group.loading[0]; - return std::monostate{}; + return nullptr; } uint cargo = 0; @@ -566,7 +566,7 @@ uint32_t Waypoint::GetNewGRFVariable(const ResolverObject &, uint8_t variable, [ } if (!group.loading.empty()) return group.loading[0]; - return std::monostate{}; + return nullptr; } GrfSpecFeature StationResolverObject::GetFeature() const diff --git a/src/newgrf_station.h b/src/newgrf_station.h index 0a8301387e..7857df82b6 100644 --- a/src/newgrf_station.h +++ b/src/newgrf_station.h @@ -75,7 +75,7 @@ struct StationResolverObject : public SpecializedResolverObject