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);
|
AirportResolverObject object(INVALID_TILE, nullptr, as, layout);
|
||||||
const SpriteGroup *group = object.Resolve();
|
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();
|
return group->GetResult();
|
||||||
}
|
}
|
||||||
|
|
|
@ -276,7 +276,7 @@ PalSpriteID GetBadgeSprite(const Badge &badge, GrfSpecFeature feature, std::opti
|
||||||
{
|
{
|
||||||
BadgeResolverObject object(badge, feature, introduction_date);
|
BadgeResolverObject object(badge, feature, introduction_date);
|
||||||
const SpriteGroup *group = object.Resolve();
|
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;
|
PaletteID pal = badge.flags.Test(BadgeFlag::UseCompanyColour) ? remap : PAL_NONE;
|
||||||
|
|
||||||
|
|
|
@ -141,7 +141,7 @@ SpriteID GetCanalSprite(CanalFeature feature, TileIndex tile)
|
||||||
{
|
{
|
||||||
CanalResolverObject object(feature, tile);
|
CanalResolverObject object(feature, tile);
|
||||||
const SpriteGroup *group = object.Resolve();
|
const SpriteGroup *group = object.Resolve();
|
||||||
if (group == nullptr) return 0;
|
if (group == nullptr || group->GetNumResults() == 0) return 0;
|
||||||
|
|
||||||
return group->GetResult();
|
return group->GetResult();
|
||||||
}
|
}
|
||||||
|
|
|
@ -56,7 +56,7 @@ SpriteID GetCustomCargoSprite(const CargoSpec *cs)
|
||||||
{
|
{
|
||||||
CargoResolverObject object(cs);
|
CargoResolverObject object(cs);
|
||||||
const SpriteGroup *group = object.Resolve();
|
const SpriteGroup *group = object.Resolve();
|
||||||
if (group == nullptr) return 0;
|
if (group == nullptr || group->GetNumResults() == 0) return 0;
|
||||||
|
|
||||||
return group->GetResult();
|
return group->GetResult();
|
||||||
}
|
}
|
||||||
|
|
|
@ -641,7 +641,7 @@ SpriteID GetCustomStationRelocation(const StationSpec *statspec, BaseStation *st
|
||||||
{
|
{
|
||||||
StationResolverObject object(statspec, st, tile, CBID_NO_CALLBACK, var10);
|
StationResolverObject object(statspec, st, tile, CBID_NO_CALLBACK, var10);
|
||||||
const SpriteGroup *group = object.Resolve();
|
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;
|
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));
|
StationResolverObject object(statspec, st, tile, CBID_NO_CALLBACK, 2, layout | (edge_info << 16));
|
||||||
|
|
||||||
const SpriteGroup *group = object.Resolve();
|
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) */
|
/* 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