From 8a0b9cd88cf1484045840faa859348a73236eadd Mon Sep 17 00:00:00 2001 From: Kurt Date: Sun, 9 Dec 2018 23:18:37 -0800 Subject: [PATCH] Add indication for party/starter slots --- PKHeX.Core/Saves/Storage/StorageSlotFlag.cs | 64 ++++++++++------ PKHeX.WinForms/PKHeX.WinForms.csproj | 7 ++ .../Properties/Resources.Designer.cs | 70 ++++++++++++++++++ PKHeX.WinForms/Properties/Resources.resx | 21 ++++++ PKHeX.WinForms/Resources/img/misc/party1.png | Bin 0 -> 772 bytes PKHeX.WinForms/Resources/img/misc/party2.png | Bin 0 -> 848 bytes PKHeX.WinForms/Resources/img/misc/party3.png | Bin 0 -> 845 bytes PKHeX.WinForms/Resources/img/misc/party4.png | Bin 0 -> 831 bytes PKHeX.WinForms/Resources/img/misc/party5.png | Bin 0 -> 874 bytes PKHeX.WinForms/Resources/img/misc/party6.png | Bin 0 -> 874 bytes PKHeX.WinForms/Resources/img/misc/starter.png | Bin 0 -> 790 bytes PKHeX.WinForms/Util/SpriteUtil.cs | 13 +++- 12 files changed, 153 insertions(+), 22 deletions(-) create mode 100644 PKHeX.WinForms/Resources/img/misc/party1.png create mode 100644 PKHeX.WinForms/Resources/img/misc/party2.png create mode 100644 PKHeX.WinForms/Resources/img/misc/party3.png create mode 100644 PKHeX.WinForms/Resources/img/misc/party4.png create mode 100644 PKHeX.WinForms/Resources/img/misc/party5.png create mode 100644 PKHeX.WinForms/Resources/img/misc/party6.png create mode 100644 PKHeX.WinForms/Resources/img/misc/starter.png diff --git a/PKHeX.Core/Saves/Storage/StorageSlotFlag.cs b/PKHeX.Core/Saves/Storage/StorageSlotFlag.cs index 6a712dfbe..cd67d5913 100644 --- a/PKHeX.Core/Saves/Storage/StorageSlotFlag.cs +++ b/PKHeX.Core/Saves/Storage/StorageSlotFlag.cs @@ -6,18 +6,22 @@ namespace PKHeX.Core public enum StorageSlotFlag { None, - Party1 = 1 << 0, - Party2 = 1 << 1, - Party3 = 1 << 2, - Party4 = 1 << 3, - Party5 = 1 << 4, - Party6 = 1 << 5, - BattleTeam1 = 1 << 6, - BattleTeam2 = 1 << 7, - BattleTeam3 = 1 << 8, - BattleTeam4 = 1 << 9, - BattleTeam5 = 1 << 10, - BattleTeam6 = 1 << 11, + + Party = 1 << 0, + Party1 = Party << 0, + Party2 = Party << 1, + Party3 = Party << 2, + Party4 = Party << 3, + Party5 = Party << 4, + Party6 = Party << 5, + + BattleTeam = 1 << 6, + BattleTeam1 = BattleTeam << 0, + BattleTeam2 = BattleTeam << 1, + BattleTeam3 = BattleTeam << 2, + BattleTeam4 = BattleTeam << 3, + BattleTeam5 = BattleTeam << 4, + BattleTeam6 = BattleTeam << 5, Starter = 1 << 29, Locked = 1 << 30, @@ -35,25 +39,43 @@ public static bool IsOverwriteProtected(this StorageSlotFlag value) if (value.HasFlagFast(StorageSlotFlag.Starter)) return true; - return value.IsBattleTeam(); + return value.IsBattleTeam() >= 0; } - public static bool IsBattleTeam(this StorageSlotFlag value) + public static int IsBattleTeam(this StorageSlotFlag value) { if (value.HasFlagFast(StorageSlotFlag.BattleTeam1)) - return true; + return 0; if (value.HasFlagFast(StorageSlotFlag.BattleTeam2)) - return true; + return 1; if (value.HasFlagFast(StorageSlotFlag.BattleTeam3)) - return true; + return 2; if (value.HasFlagFast(StorageSlotFlag.BattleTeam4)) - return true; + return 3; if (value.HasFlagFast(StorageSlotFlag.BattleTeam5)) - return true; + return 4; if (value.HasFlagFast(StorageSlotFlag.BattleTeam6)) - return true; + return 5; - return false; + return -1; + } + + public static int IsParty(this StorageSlotFlag value) + { + if (value.HasFlagFast(StorageSlotFlag.Party1)) + return 0; + if (value.HasFlagFast(StorageSlotFlag.Party2)) + return 1; + if (value.HasFlagFast(StorageSlotFlag.Party3)) + return 2; + if (value.HasFlagFast(StorageSlotFlag.Party4)) + return 3; + if (value.HasFlagFast(StorageSlotFlag.Party5)) + return 4; + if (value.HasFlagFast(StorageSlotFlag.Party6)) + return 5; + + return -1; } } } diff --git a/PKHeX.WinForms/PKHeX.WinForms.csproj b/PKHeX.WinForms/PKHeX.WinForms.csproj index 374effe5d..2517c1c8c 100644 --- a/PKHeX.WinForms/PKHeX.WinForms.csproj +++ b/PKHeX.WinForms/PKHeX.WinForms.csproj @@ -1972,6 +1972,13 @@ + + + + + + + diff --git a/PKHeX.WinForms/Properties/Resources.Designer.cs b/PKHeX.WinForms/Properties/Resources.Designer.cs index 0ca55e65e..a11a09bac 100644 --- a/PKHeX.WinForms/Properties/Resources.Designer.cs +++ b/PKHeX.WinForms/Properties/Resources.Designer.cs @@ -28218,6 +28218,66 @@ internal class Resources { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap party1 { + get { + object obj = ResourceManager.GetObject("party1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap party2 { + get { + object obj = ResourceManager.GetObject("party2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap party3 { + get { + object obj = ResourceManager.GetObject("party3", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap party4 { + get { + object obj = ResourceManager.GetObject("party4", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap party5 { + get { + object obj = ResourceManager.GetObject("party5", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap party6 { + get { + object obj = ResourceManager.GetObject("party6", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Byte[]. /// @@ -29416,6 +29476,16 @@ internal class Resources { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap starter { + get { + object obj = ResourceManager.GetObject("starter", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/PKHeX.WinForms/Properties/Resources.resx b/PKHeX.WinForms/Properties/Resources.resx index 577d921e2..d952acf76 100644 --- a/PKHeX.WinForms/Properties/Resources.resx +++ b/PKHeX.WinForms/Properties/Resources.resx @@ -9235,4 +9235,25 @@ ..\Resources\img\misc\icon_favo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\img\misc\party1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\misc\party2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\misc\party3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\misc\party4.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\misc\party5.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\misc\party6.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\img\misc\starter.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/PKHeX.WinForms/Resources/img/misc/party1.png b/PKHeX.WinForms/Resources/img/misc/party1.png new file mode 100644 index 0000000000000000000000000000000000000000..665eeac27665de6506121de8f17bf573348c8f62 GIT binary patch literal 772 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 Xfue)AQ3F#>00000NkvXXu0mjf_-}Er literal 0 HcmV?d00001 diff --git a/PKHeX.WinForms/Resources/img/misc/party4.png b/PKHeX.WinForms/Resources/img/misc/party4.png new file mode 100644 index 0000000000000000000000000000000000000000..5206418588e6df197a9bb2fe6f24f8a559a91609 GIT binary patch literal 831 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 ADgXcg literal 0 HcmV?d00001 diff --git a/PKHeX.WinForms/Resources/img/misc/starter.png b/PKHeX.WinForms/Resources/img/misc/starter.png new file mode 100644 index 0000000000000000000000000000000000000000..b2a9df25c354f70b791aea9be185f1edbd3ac95a GIT binary patch literal 790 zcmV+x1L^#UP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;(#7eog=Y0*6UNK~y+Tg_G|~Q&AYl?~DEcN#Bfo>l^=u zwh@HBsLhp95@f6}r9fhol@NKgnDw7JhhGLGc+hMnU?b8sf- zTK%uNNhMW+)I_|Ld=zctmdw141YlIyV}tl-5u@QJyZGYRFXWvoqmQw?I&iOoOr-y? zu){=kfXs9nQjg;{?%PP%lAMSEXym^M=-g-l+RZ=s4B3Z7pOO ztDx%sF4g6{X;{7?Y;cjmutmHR1&k33!1bDj#$PG8^K$)&**vDw^}pGf*@QmhTG?>f>!}8%e;7_C?q7Z*NrdM$kyW$s7eK-g*Y<@dfZ2kaud&ar!JtMbNlr?4)?o3 zd@6u&iw9xI2LS^QeuFO+>hYd@nOX^)^>qadPOD$&$U~0BQM_ U+Pnw0)c^nh07*qoM6N<$g6HpOr~m)} literal 0 HcmV?d00001 diff --git a/PKHeX.WinForms/Util/SpriteUtil.cs b/PKHeX.WinForms/Util/SpriteUtil.cs index f7916ea05..83787a248 100644 --- a/PKHeX.WinForms/Util/SpriteUtil.cs +++ b/PKHeX.WinForms/Util/SpriteUtil.cs @@ -130,13 +130,24 @@ private static Image GetSprite(PKM pkm, SaveFile SAV, int box, int slot, bool fl var flags = SAV.GetSlotFlags(box, slot); if (flags.HasFlagFast(StorageSlotFlag.Locked)) sprite = ImageUtil.LayerImage(sprite, Resources.locked, 26, 0); - else if (flags != 0) + int team = flags.IsBattleTeam(); + if (team >= 0) sprite = ImageUtil.LayerImage(sprite, Resources.team, 21, 0); + int party = flags.IsParty(); + if (party >= 0) + sprite = ImageUtil.LayerImage(sprite, PartyMarks[party], 24, 0); + if (flags.HasFlagFast(StorageSlotFlag.Starter)) + sprite = ImageUtil.LayerImage(sprite, Resources.starter, 0, 0); } return sprite; } + private static readonly Image[] PartyMarks = + { + Resources.party1, Resources.party2, Resources.party3, Resources.party4, Resources.party5, Resources.party6, + }; + public static void GetSpriteGlow(PKM pk, byte[] bgr, out byte[] pixels, out Image baseSprite, bool forceHollow = false) { bool egg = pk.IsEgg;