From 852aaa2cbf08fb955d2ab60dc1173afa0258747c Mon Sep 17 00:00:00 2001 From: Kurt Date: Sun, 28 Nov 2021 08:16:24 -0800 Subject: [PATCH] Fix unintentional recursion Closes #3315 --- .../Util/MysteryGiftSpriteUtil.cs | 7 +++---- PKHeX.Drawing.PokeSprite/Util/SpriteUtil.cs | 19 ++++++++++++++----- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/PKHeX.Drawing.Misc/Util/MysteryGiftSpriteUtil.cs b/PKHeX.Drawing.Misc/Util/MysteryGiftSpriteUtil.cs index f104066c7..3e07a4ce6 100644 --- a/PKHeX.Drawing.Misc/Util/MysteryGiftSpriteUtil.cs +++ b/PKHeX.Drawing.Misc/Util/MysteryGiftSpriteUtil.cs @@ -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; diff --git a/PKHeX.Drawing.PokeSprite/Util/SpriteUtil.cs b/PKHeX.Drawing.PokeSprite/Util/SpriteUtil.cs index e5704e780..1ed352d1b 100644 --- a/PKHeX.Drawing.PokeSprite/Util/SpriteUtil.cs +++ b/PKHeX.Drawing.PokeSprite/Util/SpriteUtil.cs @@ -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; }