1
0
Fork 0

Change: [NewGRF] If Action123 does not resolve in a valid SpriteSet, prefer drawing the default sprite instead of an invalid sprite.

pull/14151/head
frosch 2025-04-28 16:10:56 +02:00 committed by frosch
parent 7b08170ac8
commit b281c5616e
5 changed files with 9 additions and 8 deletions

View File

@ -259,7 +259,7 @@ SpriteID GetCustomAirportSprite(const AirportSpec *as, uint8_t layout)
{
AirportResolverObject object(INVALID_TILE, nullptr, as, layout);
const SpriteGroup *group = object.Resolve();
if (group == nullptr) return as->preview_sprite;
if (group == nullptr || group->GetNumResults() == 0) return as->preview_sprite;
return group->GetResult();
}

View File

@ -276,7 +276,7 @@ PalSpriteID GetBadgeSprite(const Badge &badge, GrfSpecFeature feature, std::opti
{
BadgeResolverObject object(badge, feature, introduction_date);
const SpriteGroup *group = object.Resolve();
if (group == nullptr) return {0, PAL_NONE};
if (group == nullptr || group->GetNumResults() == 0) return {0, PAL_NONE};
PaletteID pal = badge.flags.Test(BadgeFlag::UseCompanyColour) ? remap : PAL_NONE;

View File

@ -141,7 +141,7 @@ SpriteID GetCanalSprite(CanalFeature feature, TileIndex tile)
{
CanalResolverObject object(feature, tile);
const SpriteGroup *group = object.Resolve();
if (group == nullptr) return 0;
if (group == nullptr || group->GetNumResults() == 0) return 0;
return group->GetResult();
}

View File

@ -56,7 +56,7 @@ SpriteID GetCustomCargoSprite(const CargoSpec *cs)
{
CargoResolverObject object(cs);
const SpriteGroup *group = object.Resolve();
if (group == nullptr) return 0;
if (group == nullptr || group->GetNumResults() == 0) return 0;
return group->GetResult();
}

View File

@ -641,7 +641,7 @@ SpriteID GetCustomStationRelocation(const StationSpec *statspec, BaseStation *st
{
StationResolverObject object(statspec, st, tile, CBID_NO_CALLBACK, var10);
const SpriteGroup *group = object.Resolve();
if (group == nullptr || group->type != SGT_RESULT) return 0;
if (group == nullptr || group->GetNumResults() == 0) return 0;
return group->GetResult() - SPR_RAIL_PLATFORM_Y_FRONT;
}
@ -660,10 +660,11 @@ SpriteID GetCustomStationFoundationRelocation(const StationSpec *statspec, BaseS
StationResolverObject object(statspec, st, tile, CBID_NO_CALLBACK, 2, layout | (edge_info << 16));
const SpriteGroup *group = object.Resolve();
if (group == nullptr || group->type != SGT_RESULT) return 0;
/* Note: SpriteGroup::Resolve zeroes all registers, so register 0x100 is initialised to 0. (compatibility) */
return group->GetResult() + GetRegister(0x100);
auto offset = GetRegister(0x100);
if (group == nullptr || group->GetNumResults() <= offset) return 0;
return group->GetResult() + offset;
}