diff --git a/PKHeX.Core/PKM/PB7.cs b/PKHeX.Core/PKM/PB7.cs index c0c812b83..4b46ec886 100644 --- a/PKHeX.Core/PKM/PB7.cs +++ b/PKHeX.Core/PKM/PB7.cs @@ -5,7 +5,7 @@ namespace PKHeX.Core { /// Generation 7 format used for . - public sealed class PB7 : G6PKM, IHyperTrain, IAwakened, IScaledSize, IFavorite + public sealed class PB7 : G6PKM, IHyperTrain, IAwakened, IScaledSize, IFavorite, IFormArgument { public static readonly ushort[] Unused = { @@ -129,7 +129,7 @@ public override uint PID public byte _0x39 { get => Data[0x39]; set => Data[0x39] = value; } public int HeightScalar { get => Data[0x3A]; set => Data[0x3A] = (byte)value; } public int WeightScalar { get => Data[0x3B]; set => Data[0x3B] = (byte)value; } - public uint FormDuration { get => BitConverter.ToUInt32(Data, 0x3C); set => BitConverter.GetBytes(value).CopyTo(Data, 0x3C); } + public uint FormArgument { get => BitConverter.ToUInt32(Data, 0x3C); set => BitConverter.GetBytes(value).CopyTo(Data, 0x3C); } #endregion #region Block B public override string Nickname diff --git a/PKHeX.Core/PKM/PK6.cs b/PKHeX.Core/PKM/PK6.cs index 80926b4be..c13bc0105 100644 --- a/PKHeX.Core/PKM/PK6.cs +++ b/PKHeX.Core/PKM/PK6.cs @@ -4,7 +4,7 @@ namespace PKHeX.Core { /// Generation 6 format. - public sealed class PK6 : G6PKM, IRibbonSetEvent3, IRibbonSetEvent4, IRibbonSetCommon3, IRibbonSetCommon4, IRibbonSetCommon6, IContestStats, IGeoTrack, ISuperTrain + public sealed class PK6 : G6PKM, IRibbonSetEvent3, IRibbonSetEvent4, IRibbonSetCommon3, IRibbonSetCommon4, IRibbonSetCommon6, IContestStats, IGeoTrack, ISuperTrain, IFormArgument { private static readonly ushort[] Unused = { @@ -216,7 +216,7 @@ public override uint PID public bool DistSuperTrain6 { get => (DistByte & (1 << 5)) == 1 << 5; set => DistByte = (byte)((DistByte & ~(1 << 5)) | (value ? 1 << 5 : 0)); } public bool Dist7 { get => (DistByte & (1 << 6)) == 1 << 6; set => DistByte = (byte)((DistByte & ~(1 << 6)) | (value ? 1 << 6 : 0)); } public bool Dist8 { get => (DistByte & (1 << 7)) == 1 << 7; set => DistByte = (byte)((DistByte & ~(1 << 7)) | (value ? 1 << 7 : 0)); } - public uint FormDuration { get => BitConverter.ToUInt32(Data, 0x3C); set => BitConverter.GetBytes(value).CopyTo(Data, 0x3C); } + public uint FormArgument { get => BitConverter.ToUInt32(Data, 0x3C); set => BitConverter.GetBytes(value).CopyTo(Data, 0x3C); } #endregion #region Block B public override string Nickname { get => GetString(0x40, 24); set => SetString(value, 12).CopyTo(Data, 0x40); } diff --git a/PKHeX.Core/PKM/PK7.cs b/PKHeX.Core/PKM/PK7.cs index 6cf0952ad..8c13b3214 100644 --- a/PKHeX.Core/PKM/PK7.cs +++ b/PKHeX.Core/PKM/PK7.cs @@ -4,7 +4,7 @@ namespace PKHeX.Core { /// Generation 7 format. - public sealed class PK7 : G6PKM, IRibbonSetEvent3, IRibbonSetEvent4, IRibbonSetCommon3, IRibbonSetCommon4, IRibbonSetCommon6, IRibbonSetCommon7, IContestStats, IHyperTrain, IGeoTrack, ISuperTrain + public sealed class PK7 : G6PKM, IRibbonSetEvent3, IRibbonSetEvent4, IRibbonSetCommon3, IRibbonSetCommon4, IRibbonSetCommon6, IRibbonSetCommon7, IContestStats, IHyperTrain, IGeoTrack, ISuperTrain, IFormArgument { private static readonly ushort[] Unused = { @@ -226,7 +226,7 @@ public override uint PID public bool DistSuperTrain6 { get => (DistByte & (1 << 5)) == 1 << 5; set => DistByte = (byte)((DistByte & ~(1 << 5)) | (value ? 1 << 5 : 0)); } public bool Dist7 { get => (DistByte & (1 << 6)) == 1 << 6; set => DistByte = (byte)((DistByte & ~(1 << 6)) | (value ? 1 << 6 : 0)); } public bool Dist8 { get => (DistByte & (1 << 7)) == 1 << 7; set => DistByte = (byte)((DistByte & ~(1 << 7)) | (value ? 1 << 7 : 0)); } - public uint FormDuration { get => BitConverter.ToUInt32(Data, 0x3C); set => BitConverter.GetBytes(value).CopyTo(Data, 0x3C); } + public uint FormArgument { get => BitConverter.ToUInt32(Data, 0x3C); set => BitConverter.GetBytes(value).CopyTo(Data, 0x3C); } #endregion #region Block B public override string Nickname diff --git a/PKHeX.Core/PKM/PK8.cs b/PKHeX.Core/PKM/PK8.cs index fa7f56427..e6b49ae48 100644 --- a/PKHeX.Core/PKM/PK8.cs +++ b/PKHeX.Core/PKM/PK8.cs @@ -6,7 +6,7 @@ namespace PKHeX.Core /// Generation 8 format. public sealed class PK8 : PKM, IRibbonSetEvent3, IRibbonSetEvent4, IRibbonSetCommon3, IRibbonSetCommon4, IRibbonSetCommon6, IRibbonSetCommon7, IRibbonSetCommon8, IRibbonSetMark8, - IContestStats, IHyperTrain, IScaledSize, IGigantamax, IFavorite, IDynamaxLevel, IRibbonIndex, IHandlerLanguage + IContestStats, IHyperTrain, IScaledSize, IGigantamax, IFavorite, IDynamaxLevel, IRibbonIndex, IHandlerLanguage, IFormArgument { private static readonly ushort[] Unused = { @@ -486,7 +486,7 @@ public void SetFromArrayC1(int index, byte value) public override int ConsoleRegion { get => Data[0xE1]; set => Data[0xE1] = (byte)value; } public override int Language { get => Data[0xE2]; set => Data[0xE2] = (byte)value; } public int UnkE3 { get => Data[0xE3]; set => Data[0xE3] = (byte)value; } - public uint FormDuration { get => BitConverter.ToUInt32(Data, 0xE4); set => BitConverter.GetBytes(value).CopyTo(Data, 0xE4); } + public uint FormArgument { get => BitConverter.ToUInt32(Data, 0xE4); set => BitConverter.GetBytes(value).CopyTo(Data, 0xE4); } public sbyte AffixedRibbon { get => (sbyte)Data[0xE8]; set => Data[0xE8] = (byte)value; } // selected ribbon public byte GetFromArrayC2(int index) diff --git a/PKHeX.Core/PKM/Shared/IFormArgument.cs b/PKHeX.Core/PKM/Shared/IFormArgument.cs new file mode 100644 index 000000000..5334e8e7a --- /dev/null +++ b/PKHeX.Core/PKM/Shared/IFormArgument.cs @@ -0,0 +1,18 @@ +namespace PKHeX.Core +{ + /// + /// Alternate form data has an associated value. + /// + /// + /// How long (days) the form can last before reverting to AltForm-0 (5 days max) + /// : How long (days) the form can last before reverting to AltForm-0 (3 days max) + /// : Topping (Strawberry, Star, etc); [0,7] + /// + public interface IFormArgument + { + /// + /// Argument for the associated + /// + uint FormArgument { get; set; } + } +} \ No newline at end of file diff --git a/PKHeX.Core/PKM/Util/FormConverter.cs b/PKHeX.Core/PKM/Util/FormConverter.cs index 39ce6d8be..f08e1946e 100644 --- a/PKHeX.Core/PKM/Util/FormConverter.cs +++ b/PKHeX.Core/PKM/Util/FormConverter.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using static PKHeX.Core.Species; namespace PKHeX.Core @@ -954,5 +955,19 @@ public static string[] GetAlcremieFormList(IReadOnlyList forms) return result; } + + public static string[] GetFormArgumentStrings(int species, int form, int generation) + { + if (generation < 8) + return EMPTY; + + return species switch + { + (int) Furfrou when form != 0 => new[] {"0", "1", "2", "3", "4", "5"}, + (int) Hoopa when form == 1 => new[] {"0", "1", "2", "3"}, + (int) Alcremie => Enum.GetNames(typeof(AlcremieDecoration)), + _ => EMPTY + }; + } } } diff --git a/PKHeX.Core/Saves/SAV6.cs b/PKHeX.Core/Saves/SAV6.cs index 73c5ff439..cc618ffda 100644 --- a/PKHeX.Core/Saves/SAV6.cs +++ b/PKHeX.Core/Saves/SAV6.cs @@ -132,10 +132,10 @@ private void AddCountAcquired(PKM pkm) protected override void SetPartyValues(PKM pkm, bool isParty) { base.SetPartyValues(pkm, isParty); - ((PK6)pkm).FormDuration = GetFormDuration(pkm, isParty); + ((PK6)pkm).FormArgument = GetFormArgument(pkm, isParty); } - private static uint GetFormDuration(PKM pkm, bool isParty) + private static uint GetFormArgument(PKM pkm, bool isParty) { if (!isParty || pkm.AltForm == 0) return 0; diff --git a/PKHeX.Core/Saves/SAV7.cs b/PKHeX.Core/Saves/SAV7.cs index f01ae563b..6ba1640b2 100644 --- a/PKHeX.Core/Saves/SAV7.cs +++ b/PKHeX.Core/Saves/SAV7.cs @@ -207,10 +207,10 @@ private void AddCountAcquired(PKM pkm) protected override void SetPartyValues(PKM pkm, bool isParty) { base.SetPartyValues(pkm, isParty); - ((PK7)pkm).FormDuration = GetFormDuration(pkm, isParty); + ((PK7)pkm).FormArgument = GetFormArgument(pkm, isParty); } - private static uint GetFormDuration(PKM pkm, bool isParty) + private static uint GetFormArgument(PKM pkm, bool isParty) { if (!isParty || pkm.AltForm == 0) return 0; diff --git a/PKHeX.Core/Saves/SAV8.cs b/PKHeX.Core/Saves/SAV8.cs index d8fcece25..2a51e9c7e 100644 --- a/PKHeX.Core/Saves/SAV8.cs +++ b/PKHeX.Core/Saves/SAV8.cs @@ -112,18 +112,6 @@ private void AddCountAcquired(PKM pkm) { } - private static uint GetFormDuration(PKM pkm, bool isParty) - { - if (!isParty || pkm.AltForm == 0) - return 0; - return pkm.Species switch - { - (int)Species.Furfrou => 5u, // Furfrou - (int)Species.Hoopa => 3u, // Hoopa - _ => 0u - }; - } - protected override void SetDex(PKM pkm) => Zukan.SetDex(pkm); public override bool GetCaught(int species) => Zukan.GetCaught(species); public override bool GetSeen(int species) => Zukan.GetSeen(species); diff --git a/PKHeX.Core/Saves/SAV8SWSH.cs b/PKHeX.Core/Saves/SAV8SWSH.cs index f1a507676..3a75a605e 100644 --- a/PKHeX.Core/Saves/SAV8SWSH.cs +++ b/PKHeX.Core/Saves/SAV8SWSH.cs @@ -84,13 +84,13 @@ private void Initialize() protected override void SetPartyValues(PKM pkm, bool isParty) { base.SetPartyValues(pkm, isParty); - ((PK8)pkm).FormDuration = GetFormDuration((PK8)pkm, isParty); + ((PK8)pkm).FormArgument = GetFormArgument((PK8)pkm, isParty); } - private static uint GetFormDuration(PK8 pkm, bool isParty) + private static uint GetFormArgument(PK8 pkm, bool isParty) { if (pkm.Species == (int) Species.Alcremie) - return pkm.FormDuration & 7; + return pkm.FormArgument & 7; if (!isParty || pkm.AltForm == 0) return 0; diff --git a/PKHeX.Core/Saves/Substructures/PokeDex/Zukan8.cs b/PKHeX.Core/Saves/Substructures/PokeDex/Zukan8.cs index ecf9ee8e8..cf20b78ed 100644 --- a/PKHeX.Core/Saves/Substructures/PokeDex/Zukan8.cs +++ b/PKHeX.Core/Saves/Substructures/PokeDex/Zukan8.cs @@ -271,7 +271,7 @@ public override void SetDex(PKM pkm) if (species == (int)Species.Alcremie) { form *= 7; - form += (int)((PK8)pkm).FormDuration; // alteration byte + form += (int)((PK8)pkm).FormArgument; // alteration byte } else if (species == (int) Species.Eternatus && pkm.AltForm == 1) { diff --git a/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs b/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs index 760d9cb43..002051fc7 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs @@ -171,6 +171,9 @@ private void LoadMisc2(PKM pk) CHK_IsEgg.Checked = pk.IsEgg; CB_HeldItem.SelectedValue = pk.HeldItem; CB_Form.SelectedIndex = CB_Form.Items.Count > pk.AltForm ? pk.AltForm : CB_Form.Items.Count - 1; + if (pk is IFormArgument f) + CB_FormArgument.SelectedIndex = (int)f.FormArgument; + TB_Friendship.Text = pk.CurrentFriendship.ToString(); Label_HatchCounter.Visible = CHK_IsEgg.Checked && Entity.Format > 1; @@ -183,6 +186,8 @@ private void SaveMisc2(PKM pk) pk.IsEgg = CHK_IsEgg.Checked; pk.HeldItem = WinFormsUtil.GetIndex(CB_HeldItem); pk.AltForm = (MT_Form.Enabled ? Convert.ToInt32(MT_Form.Text) : CB_Form.Enabled ? CB_Form.SelectedIndex : 0) & 0x1F; + if (Entity is IFormArgument f) + f.FormArgument = (uint)Math.Max(0, CB_FormArgument.SelectedIndex); pk.CurrentFriendship = Util.ToInt32(TB_Friendship.Text); } diff --git a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.Designer.cs b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.Designer.cs index cdbe0adaa..34f63a7f8 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.Designer.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.Designer.cs @@ -116,12 +116,9 @@ private void InitializeComponent() this.CHK_Shadow = new System.Windows.Forms.CheckBox(); this.FLP_ShinyLeaf = new System.Windows.Forms.FlowLayoutPanel(); this.L_ShinyLeaf = new System.Windows.Forms.Label(); - this.ShinyLeaf = new PKHeX.WinForms.Controls.ShinyLeaf(); this.FLP_CatchRate = new System.Windows.Forms.FlowLayoutPanel(); this.L_CatchRate = new System.Windows.Forms.Label(); - this.CR_PK1 = new PKHeX.WinForms.Controls.CatchRate(); this.FLP_SizeCP = new System.Windows.Forms.FlowLayoutPanel(); - this.SizeCP = new PKHeX.WinForms.Controls.SizeCP(); this.Tab_Met = new System.Windows.Forms.TabPage(); this.CHK_AsEgg = new System.Windows.Forms.CheckBox(); this.GB_EggConditions = new System.Windows.Forms.GroupBox(); @@ -157,8 +154,6 @@ private void InitializeComponent() this.L_MetTimeOfDay = new System.Windows.Forms.Label(); this.CB_MetTimeOfDay = new System.Windows.Forms.ComboBox(); this.Tab_Stats = new System.Windows.Forms.TabPage(); - this.Stats = new PKHeX.WinForms.Controls.StatEditor(); - this.Contest = new PKHeX.WinForms.Controls.ContestStat(); this.Tab_Attacks = new System.Windows.Forms.TabPage(); this.B_Records = new System.Windows.Forms.Button(); this.PB_WarnMove4 = new System.Windows.Forms.PictureBox(); @@ -216,7 +211,6 @@ private void InitializeComponent() this.TB_ExtraByte = new System.Windows.Forms.MaskedTextBox(); this.CB_ExtraBytes = new System.Windows.Forms.ComboBox(); this.GB_OT = new System.Windows.Forms.GroupBox(); - this.TID_Trainer = new PKHeX.WinForms.Controls.TrainerID(); this.Label_OTGender = new System.Windows.Forms.Label(); this.TB_OT = new System.Windows.Forms.TextBox(); this.Label_OT = new System.Windows.Forms.Label(); @@ -224,6 +218,13 @@ private void InitializeComponent() this.SpeciesIDTip = new System.Windows.Forms.ToolTip(this.components); this.NatureTip = new System.Windows.Forms.ToolTip(this.components); this.Tip3 = new System.Windows.Forms.ToolTip(this.components); + this.CB_FormArgument = new System.Windows.Forms.ComboBox(); + this.ShinyLeaf = new PKHeX.WinForms.Controls.ShinyLeaf(); + this.CR_PK1 = new PKHeX.WinForms.Controls.CatchRate(); + this.SizeCP = new PKHeX.WinForms.Controls.SizeCP(); + this.Stats = new PKHeX.WinForms.Controls.StatEditor(); + this.Contest = new PKHeX.WinForms.Controls.ContestStat(); + this.TID_Trainer = new PKHeX.WinForms.Controls.TrainerID(); this.tabMain.SuspendLayout(); this.Tab_Main.SuspendLayout(); this.FLP_Main.SuspendLayout(); @@ -317,7 +318,7 @@ private void InitializeComponent() this.tabMain.Location = new System.Drawing.Point(0, 0); this.tabMain.Name = "tabMain"; this.tabMain.SelectedIndex = 0; - this.tabMain.Size = new System.Drawing.Size(280, 565); + this.tabMain.Size = new System.Drawing.Size(315, 565); this.tabMain.TabIndex = 1; // // Tab_Main @@ -326,16 +327,13 @@ private void InitializeComponent() this.Tab_Main.Controls.Add(this.FLP_Main); this.Tab_Main.Location = new System.Drawing.Point(4, 22); this.Tab_Main.Name = "Tab_Main"; - this.Tab_Main.Padding = new System.Windows.Forms.Padding(3); - this.Tab_Main.Size = new System.Drawing.Size(272, 539); + this.Tab_Main.Size = new System.Drawing.Size(307, 539); this.Tab_Main.TabIndex = 0; this.Tab_Main.Text = "Main"; this.Tab_Main.UseVisualStyleBackColor = true; // // FLP_Main // - this.FLP_Main.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left))); this.FLP_Main.Controls.Add(this.FLP_PID); this.FLP_Main.Controls.Add(this.FLP_Species); this.FLP_Main.Controls.Add(this.FLP_Nickname); @@ -357,9 +355,11 @@ private void InitializeComponent() this.FLP_Main.Controls.Add(this.FLP_ShinyLeaf); this.FLP_Main.Controls.Add(this.FLP_CatchRate); this.FLP_Main.Controls.Add(this.FLP_SizeCP); - this.FLP_Main.Location = new System.Drawing.Point(0, 2); + this.FLP_Main.Dock = System.Windows.Forms.DockStyle.Fill; + this.FLP_Main.Location = new System.Drawing.Point(0, 0); + this.FLP_Main.Margin = new System.Windows.Forms.Padding(0); this.FLP_Main.Name = "FLP_Main"; - this.FLP_Main.Size = new System.Drawing.Size(272, 536); + this.FLP_Main.Size = new System.Drawing.Size(307, 539); this.FLP_Main.TabIndex = 103; // // FLP_PID @@ -430,7 +430,7 @@ private void InitializeComponent() this.Label_IsShiny2.Anchor = System.Windows.Forms.AnchorStyles.Right; this.Label_IsShiny2.Image = global::PKHeX.WinForms.Properties.Resources.rare_icon_2; this.Label_IsShiny2.InitialImage = global::PKHeX.WinForms.Properties.Resources.rare_icon_2; - this.Label_IsShiny2.Location = new System.Drawing.Point(36, 2); + this.Label_IsShiny2.Location = new System.Drawing.Point(14, 2); this.Label_IsShiny2.Margin = new System.Windows.Forms.Padding(0, 2, 2, 0); this.Label_IsShiny2.Name = "Label_IsShiny2"; this.Label_IsShiny2.Size = new System.Drawing.Size(20, 20); @@ -771,7 +771,7 @@ private void InitializeComponent() this.FLP_FriendshipForm.Location = new System.Drawing.Point(0, 149); this.FLP_FriendshipForm.Margin = new System.Windows.Forms.Padding(0); this.FLP_FriendshipForm.Name = "FLP_FriendshipForm"; - this.FLP_FriendshipForm.Size = new System.Drawing.Size(272, 21); + this.FLP_FriendshipForm.Size = new System.Drawing.Size(307, 21); this.FLP_FriendshipForm.TabIndex = 6; // // FLP_FriendshipFormLeft @@ -814,10 +814,11 @@ private void InitializeComponent() this.FLP_FriendshipFormRight.Controls.Add(this.Label_Form); this.FLP_FriendshipFormRight.Controls.Add(this.CB_Form); this.FLP_FriendshipFormRight.Controls.Add(this.MT_Form); + this.FLP_FriendshipFormRight.Controls.Add(this.CB_FormArgument); this.FLP_FriendshipFormRight.Location = new System.Drawing.Point(110, 0); this.FLP_FriendshipFormRight.Margin = new System.Windows.Forms.Padding(0); this.FLP_FriendshipFormRight.Name = "FLP_FriendshipFormRight"; - this.FLP_FriendshipFormRight.Size = new System.Drawing.Size(162, 21); + this.FLP_FriendshipFormRight.Size = new System.Drawing.Size(197, 21); this.FLP_FriendshipFormRight.TabIndex = 104; // // TB_Friendship @@ -1376,14 +1377,6 @@ private void InitializeComponent() this.L_ShinyLeaf.TextAlign = System.Drawing.ContentAlignment.MiddleRight; this.L_ShinyLeaf.Click += new System.EventHandler(this.ClickShinyLeaf); // - // ShinyLeaf - // - this.ShinyLeaf.Location = new System.Drawing.Point(110, 0); - this.ShinyLeaf.Margin = new System.Windows.Forms.Padding(0); - this.ShinyLeaf.Name = "ShinyLeaf"; - this.ShinyLeaf.Size = new System.Drawing.Size(140, 56); - this.ShinyLeaf.TabIndex = 116; - // // FLP_CatchRate // this.FLP_CatchRate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); @@ -1405,14 +1398,6 @@ private void InitializeComponent() this.L_CatchRate.Text = "Catch Rate:"; this.L_CatchRate.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // - // CR_PK1 - // - this.CR_PK1.Location = new System.Drawing.Point(110, 0); - this.CR_PK1.Margin = new System.Windows.Forms.Padding(0); - this.CR_PK1.Name = "CR_PK1"; - this.CR_PK1.Size = new System.Drawing.Size(162, 25); - this.CR_PK1.TabIndex = 10; - // // FLP_SizeCP // this.FLP_SizeCP.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); @@ -1423,15 +1408,6 @@ private void InitializeComponent() this.FLP_SizeCP.Size = new System.Drawing.Size(272, 72); this.FLP_SizeCP.TabIndex = 117; // - // SizeCP - // - this.SizeCP.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.SizeCP.Location = new System.Drawing.Point(50, 0); - this.SizeCP.Margin = new System.Windows.Forms.Padding(50, 0, 0, 0); - this.SizeCP.Name = "SizeCP"; - this.SizeCP.Size = new System.Drawing.Size(204, 68); - this.SizeCP.TabIndex = 0; - // // Tab_Met // this.Tab_Met.AllowDrop = true; @@ -1441,7 +1417,7 @@ private void InitializeComponent() this.Tab_Met.Location = new System.Drawing.Point(4, 22); this.Tab_Met.Name = "Tab_Met"; this.Tab_Met.Padding = new System.Windows.Forms.Padding(3); - this.Tab_Met.Size = new System.Drawing.Size(192, 74); + this.Tab_Met.Size = new System.Drawing.Size(307, 539); this.Tab_Met.TabIndex = 1; this.Tab_Met.Text = "Met"; this.Tab_Met.UseVisualStyleBackColor = true; @@ -1832,38 +1808,11 @@ private void InitializeComponent() this.Tab_Stats.Location = new System.Drawing.Point(4, 22); this.Tab_Stats.Name = "Tab_Stats"; this.Tab_Stats.Padding = new System.Windows.Forms.Padding(3); - this.Tab_Stats.Size = new System.Drawing.Size(272, 539); + this.Tab_Stats.Size = new System.Drawing.Size(307, 539); this.Tab_Stats.TabIndex = 2; this.Tab_Stats.Text = "Stats"; this.Tab_Stats.UseVisualStyleBackColor = true; // - // Stats - // - this.Stats.EVsFishy = System.Drawing.Color.LightYellow; - this.Stats.EVsInvalid = System.Drawing.Color.Red; - this.Stats.EVsMaxed = System.Drawing.Color.Honeydew; - this.Stats.Location = new System.Drawing.Point(0, 0); - this.Stats.Name = "Stats"; - this.Stats.Size = new System.Drawing.Size(270, 264); - this.Stats.StatDecreased = System.Drawing.Color.Blue; - this.Stats.StatHyperTrained = System.Drawing.Color.LightGreen; - this.Stats.StatIncreased = System.Drawing.Color.Red; - this.Stats.TabIndex = 118; - // - // Contest - // - this.Contest.CNT_Beauty = 0; - this.Contest.CNT_Cool = 0; - this.Contest.CNT_Cute = 0; - this.Contest.CNT_Sheen = 0; - this.Contest.CNT_Smart = 0; - this.Contest.CNT_Tough = 0; - this.Contest.Location = new System.Drawing.Point(21, 265); - this.Contest.Margin = new System.Windows.Forms.Padding(0); - this.Contest.Name = "Contest"; - this.Contest.Size = new System.Drawing.Size(230, 50); - this.Contest.TabIndex = 117; - // // Tab_Attacks // this.Tab_Attacks.AllowDrop = true; @@ -1877,7 +1826,7 @@ private void InitializeComponent() this.Tab_Attacks.Location = new System.Drawing.Point(4, 22); this.Tab_Attacks.Name = "Tab_Attacks"; this.Tab_Attacks.Padding = new System.Windows.Forms.Padding(3); - this.Tab_Attacks.Size = new System.Drawing.Size(272, 539); + this.Tab_Attacks.Size = new System.Drawing.Size(307, 539); this.Tab_Attacks.TabIndex = 3; this.Tab_Attacks.Text = "Attacks"; this.Tab_Attacks.UseVisualStyleBackColor = true; @@ -2275,7 +2224,7 @@ private void InitializeComponent() this.Tab_OTMisc.Location = new System.Drawing.Point(4, 22); this.Tab_OTMisc.Name = "Tab_OTMisc"; this.Tab_OTMisc.Padding = new System.Windows.Forms.Padding(3); - this.Tab_OTMisc.Size = new System.Drawing.Size(192, 74); + this.Tab_OTMisc.Size = new System.Drawing.Size(307, 539); this.Tab_OTMisc.TabIndex = 4; this.Tab_OTMisc.Text = "OT/Misc"; this.Tab_OTMisc.UseVisualStyleBackColor = true; @@ -2605,13 +2554,6 @@ private void InitializeComponent() this.GB_OT.TabStop = false; this.GB_OT.Text = "Trainer Information"; // - // TID_Trainer - // - this.TID_Trainer.Location = new System.Drawing.Point(13, 18); - this.TID_Trainer.Name = "TID_Trainer"; - this.TID_Trainer.Size = new System.Drawing.Size(178, 27); - this.TID_Trainer.TabIndex = 57; - // // Label_OTGender // this.Label_OTGender.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); @@ -2652,12 +2594,82 @@ private void InitializeComponent() this.Label_EncryptionConstant.Text = "Encryption Constant:"; this.Label_EncryptionConstant.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // + // CB_Form2 + // + this.CB_FormArgument.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CB_FormArgument.DropDownWidth = 90; + this.CB_FormArgument.FormattingEnabled = true; + this.CB_FormArgument.Location = new System.Drawing.Point(145, 0); + this.CB_FormArgument.Margin = new System.Windows.Forms.Padding(0); + this.CB_FormArgument.Name = "CB_FormArgument"; + this.CB_FormArgument.Size = new System.Drawing.Size(52, 21); + this.CB_FormArgument.TabIndex = 19; + // + // ShinyLeaf + // + this.ShinyLeaf.Location = new System.Drawing.Point(110, 0); + this.ShinyLeaf.Margin = new System.Windows.Forms.Padding(0); + this.ShinyLeaf.Name = "ShinyLeaf"; + this.ShinyLeaf.Size = new System.Drawing.Size(140, 56); + this.ShinyLeaf.TabIndex = 116; + // + // CR_PK1 + // + this.CR_PK1.Location = new System.Drawing.Point(110, 0); + this.CR_PK1.Margin = new System.Windows.Forms.Padding(0); + this.CR_PK1.Name = "CR_PK1"; + this.CR_PK1.Size = new System.Drawing.Size(162, 25); + this.CR_PK1.TabIndex = 10; + // + // SizeCP + // + this.SizeCP.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.SizeCP.Location = new System.Drawing.Point(50, 0); + this.SizeCP.Margin = new System.Windows.Forms.Padding(50, 0, 0, 0); + this.SizeCP.Name = "SizeCP"; + this.SizeCP.Size = new System.Drawing.Size(204, 68); + this.SizeCP.TabIndex = 0; + // + // Stats + // + this.Stats.EVsFishy = System.Drawing.Color.LightYellow; + this.Stats.EVsInvalid = System.Drawing.Color.Red; + this.Stats.EVsMaxed = System.Drawing.Color.Honeydew; + this.Stats.Location = new System.Drawing.Point(0, 0); + this.Stats.Name = "Stats"; + this.Stats.Size = new System.Drawing.Size(270, 264); + this.Stats.StatDecreased = System.Drawing.Color.Blue; + this.Stats.StatHyperTrained = System.Drawing.Color.LightGreen; + this.Stats.StatIncreased = System.Drawing.Color.Red; + this.Stats.TabIndex = 118; + // + // Contest + // + this.Contest.CNT_Beauty = 0; + this.Contest.CNT_Cool = 0; + this.Contest.CNT_Cute = 0; + this.Contest.CNT_Sheen = 0; + this.Contest.CNT_Smart = 0; + this.Contest.CNT_Tough = 0; + this.Contest.Location = new System.Drawing.Point(21, 265); + this.Contest.Margin = new System.Windows.Forms.Padding(0); + this.Contest.Name = "Contest"; + this.Contest.Size = new System.Drawing.Size(230, 50); + this.Contest.TabIndex = 117; + // + // TID_Trainer + // + this.TID_Trainer.Location = new System.Drawing.Point(13, 18); + this.TID_Trainer.Name = "TID_Trainer"; + this.TID_Trainer.Size = new System.Drawing.Size(178, 27); + this.TID_Trainer.TabIndex = 57; + // // PKMEditor // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; this.Controls.Add(this.tabMain); this.Name = "PKMEditor"; - this.Size = new System.Drawing.Size(280, 565); + this.Size = new System.Drawing.Size(315, 565); this.tabMain.ResumeLayout(false); this.Tab_Main.ResumeLayout(false); this.FLP_Main.ResumeLayout(false); @@ -2959,5 +2971,6 @@ private void InitializeComponent() private System.Windows.Forms.PictureBox PB_Origin; private System.Windows.Forms.ComboBox CB_HTLanguage; private System.Windows.Forms.Button B_Records; + private System.Windows.Forms.ComboBox CB_FormArgument; } } diff --git a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs index 8aaf19e0e..f9125cb83 100644 --- a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs +++ b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs @@ -915,6 +915,7 @@ private void UpdateForm(object sender, EventArgs e) UpdateGender(); } + RefreshFormArguments(); if (ChangingFields) return; ChangingFields = true; @@ -924,6 +925,18 @@ private void UpdateForm(object sender, EventArgs e) UpdateSprite(); } + private void RefreshFormArguments() + { + int index = CB_FormArgument.SelectedIndex; + var items = FormConverter.GetFormArgumentStrings(Entity.Species, Entity.AltForm, Entity.Format); + CB_FormArgument.Items.Clear(); + CB_FormArgument.Items.AddRange(items); + CB_FormArgument.Visible = !string.IsNullOrWhiteSpace(items[0]); + if (ChangingFields) + return; + CB_FormArgument.SelectedIndex = index < items.Length ? index : 0; + } + private void UpdateHaXForm(object sender, EventArgs e) { if (ChangingFields)