mirror of https://github.com/OpenTTD/OpenTTD
Change: [NewGRF] If Action123 does not resolve in a valid SpriteSet, prefer drawing the default sprite instead of an invalid sprite.
parent
7b08170ac8
commit
b281c5616e
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue