diff --git a/src/newgrf_station.cpp b/src/newgrf_station.cpp index a82deee68f..a9842f833a 100644 --- a/src/newgrf_station.cpp +++ b/src/newgrf_station.cpp @@ -1063,3 +1063,50 @@ void StationUpdateCachedTriggers(BaseStation *st) } } +void DumpStationSpriteGroup(const StationSpec *statspec, BaseStation *st, DumpSpriteGroupPrinter print) +{ + char buffer[512]; + + StationResolverObject ro(statspec, st, INVALID_TILE, INVALID_RAILTYPE); + + switch (ro.station_scope.cargo_type) { + case CT_DEFAULT: + seprintf(buffer, lastof(buffer), "CT_DEFAULT"); + break; + case CT_PURCHASE: + seprintf(buffer, lastof(buffer), "CT_PURCHASE"); + break; + case CT_DEFAULT_NA: + seprintf(buffer, lastof(buffer), "CT_DEFAULT_NA"); + break; + default: + seprintf(buffer, lastof(buffer), "Cargo: %u", ro.station_scope.cargo_type); + break; + } + print(nullptr, DSGPO_PRINT, 0, buffer); + + SpriteGroupDumper dumper(print); + dumper.DumpSpriteGroup(ro.root_spritegroup, 0); + + for (uint i = 0; i < NUM_CARGO + 3; i++) { + if (statspec->grf_prop.spritegroup[i] != ro.root_spritegroup && statspec->grf_prop.spritegroup[i] != nullptr) { + print(nullptr, DSGPO_PRINT, 0, ""); + switch (i) { + case CT_DEFAULT: + seprintf(buffer, lastof(buffer), "OTHER SPRITE GROUP: CT_DEFAULT"); + break; + case CT_PURCHASE: + seprintf(buffer, lastof(buffer), "OTHER SPRITE GROUP: CT_PURCHASE"); + break; + case CT_DEFAULT_NA: + seprintf(buffer, lastof(buffer), "OTHER SPRITE GROUP: CT_DEFAULT_NA"); + break; + default: + seprintf(buffer, lastof(buffer), "OTHER SPRITE GROUP: Cargo: %u", i); + break; + } + print(nullptr, DSGPO_PRINT, 0, buffer); + dumper.DumpSpriteGroup(statspec->grf_prop.spritegroup[i], 0); + } + } +} diff --git a/src/table/newgrf_debug_data.h b/src/table/newgrf_debug_data.h index d180be7c96..2df9bd6c4e 100644 --- a/src/table/newgrf_debug_data.h +++ b/src/table/newgrf_debug_data.h @@ -657,8 +657,8 @@ class NIHStation : public NIHelper { /* virtual */ void SpriteDump(uint index, DumpSpriteGroupPrinter print) const override { - StationResolverObject ro(GetStationSpec(index), Station::GetByTile(index), index, INVALID_RAILTYPE); - DumpSpriteGroup(ro.root_spritegroup, std::move(print)); + extern void DumpStationSpriteGroup(const StationSpec *statspec, BaseStation *st, DumpSpriteGroupPrinter print); + DumpStationSpriteGroup(GetStationSpec(index), BaseStation::GetByTile(index), std::move(print)); } };