Fix unintentional recursion

Closes #3315
This commit is contained in:
Kurt
2021-11-28 08:16:24 -08:00
parent dd6ec251d8
commit 852aaa2cbf
2 changed files with 17 additions and 9 deletions

View File

@@ -25,11 +25,10 @@ private static Image GetSprite(MysteryGift gift)
private static Image GetBaseImage(MysteryGift gift)
{
if (gift.IsEgg && gift.Species == (int)Species.Manaphy) // Manaphy Egg
return SpriteUtil.GetSprite((int)Species.Manaphy, 0, 2, 0, 0, true, false, gift.Generation);
if (gift.IsPokémon)
{
return SpriteUtil.GetMysteryGiftPreviewPoke(gift);
}
if (gift.IsPokémon)
return SpriteUtil.GetMysteryGiftPreviewPoke(gift);
if (gift.IsItem)
{
int item = gift.ItemID;

View File

@@ -41,9 +41,10 @@ private static Image GetSprite(PKM pk, bool isBoxBGRed = false)
var img = GetSprite(pk.Species, pk.Form, pk.Gender, formarg, pk.SpriteItem, pk.IsEgg, pk.IsShiny, pk.Format, isBoxBGRed, alt);
if (pk is IShadowPKM {IsShadow: true})
{
const int Lugia = 249;
const int Lugia = (int)Species.Lugia;
if (pk.Species == Lugia) // show XD shadow sprite
img = Spriter.GetSprite(Spriter.ShadowLugia, Lugia, pk.HeldItem, pk.IsEgg, pk.IsShiny, pk.Format, isBoxBGRed);
GetSpriteGlow(pk, 75, 0, 130, out var pixels, out var baseSprite, true);
var glowImg = ImageUtil.GetBitmap(pixels, baseSprite.Width, baseSprite.Height, baseSprite.PixelFormat);
return ImageUtil.LayerImage(glowImg, img, 0, 0);
@@ -72,17 +73,22 @@ private static Image GetSprite(PKM pk, SaveFile sav, int box, int slot, bool fla
sprite = ImageUtil.LayerImage(sprite, Resources.warn, 0, FlagIllegalShiftY);
else if (pk.Format >= 8 && pk.Moves.Any(Legal.GetDummiedMovesHashSet(pk).Contains))
sprite = ImageUtil.LayerImage(sprite, Resources.hint, 0, FlagIllegalShiftY);
if (SpriteBuilder.ShowEncounterColorPKM != SpriteBackgroundType.None)
sprite = ApplyEncounterColor(la.EncounterOriginal, sprite, SpriteBuilder.ShowEncounterColorPKM);
}
if (inBox) // in box
{
var flags = sav.GetSlotFlags(box, slot);
// Indicate any battle box teams & according locked state.
int team = flags.IsBattleTeam();
if (team >= 0)
sprite = ImageUtil.LayerImage(sprite, Resources.team, SlotTeamShiftX, 0);
if (flags.HasFlagFast(StorageSlotFlag.Locked))
sprite = ImageUtil.LayerImage(sprite, Resources.locked, SlotLockShiftX, 0);
// Some games store Party directly in the list of pokemon data (LGP/E). Indicate accordingly.
int party = flags.IsParty();
if (party >= 0)
sprite = ImageUtil.LayerImage(sprite, PartyMarks[party], PartyMarkShiftX, 0);
@@ -166,7 +172,7 @@ public static void GetSpriteGlow(Image baseSprite, byte blue, byte green, byte r
public static Image Sprite(this IEncounterTemplate enc)
{
if (enc is MysteryGift g)
return g.Sprite();
return GetMysteryGiftPreviewPoke(g);
var gender = GetDisplayGender(enc);
var img = GetSprite(enc.Species, enc.Form, gender, 0, 0, enc.EggEncounter, enc.IsShiny, enc.Generation);
if (SpriteBuilder.ShowEncounterBall && enc is IFixedBall {FixedBall: not Ball.None} b)
@@ -197,9 +203,12 @@ public static Image Sprite(this PKM pk, SaveFile sav, int box, int slot, bool fl
public static Image GetMysteryGiftPreviewPoke(MysteryGift gift)
{
if (gift.IsEgg && gift.Species == (int)Species.Manaphy) // Manaphy Egg
return GetSprite((int)Species.Manaphy, 0, 2, 0, 0, true, false, gift.Generation);
var gender = Math.Max(0, gift.Gender);
var img = GetSprite(gift.Species, gift.Form, gender, 0, gift.HeldItem, gift.IsEgg,
gift.IsShiny, gift.Generation);
var img = GetSprite(gift.Species, gift.Form, gender, 0, gift.HeldItem, gift.IsEgg, gift.IsShiny, gift.Generation);
if (SpriteBuilder.ShowEncounterBall && gift is IFixedBall { FixedBall: not Ball.None } b)
{
var ballSprite = GetBallSprite((int)b.FixedBall);
@@ -209,7 +218,7 @@ public static Image GetMysteryGiftPreviewPoke(MysteryGift gift)
if (gift is IGigantamax { CanGigantamax: true })
{
var gm = Resources.dyna;
return ImageUtil.LayerImage(img, gm, (img.Width - gm.Width) / 2, 0);
img = ImageUtil.LayerImage(img, gm, (img.Width - gm.Width) / 2, 0);
}
return img;
}