From 2fb38b368a25ed7ec7caaf5903840b44becebc7b Mon Sep 17 00:00:00 2001 From: Kurt Date: Sun, 24 May 2026 00:13:08 -0500 Subject: [PATCH] B2W2: extract medal editor, add habitat list A bit more coherent to see a list of medals rather than one at a time. Add a few more properties, along with the Habitat List. Remove maximize box from Join Avenue editor, consistent with other editors. --- PKHeX.Core/Saves/Substructures/Gen5/Medal5.cs | 34 +- .../Saves/Substructures/Gen5/MedalList5.cs | 229 ++++++- .../Controls/SAV Editor/SAVEditor.Designer.cs | 14 + .../Controls/SAV Editor/SAVEditor.cs | 2 + PKHeX.WinForms/Resources/text/lang_de.txt | 48 +- PKHeX.WinForms/Resources/text/lang_en.txt | 48 +- PKHeX.WinForms/Resources/text/lang_es-419.txt | 48 +- PKHeX.WinForms/Resources/text/lang_es.txt | 48 +- PKHeX.WinForms/Resources/text/lang_fr.txt | 48 +- PKHeX.WinForms/Resources/text/lang_it.txt | 48 +- PKHeX.WinForms/Resources/text/lang_ja.txt | 48 +- PKHeX.WinForms/Resources/text/lang_ko.txt | 48 +- .../Resources/text/lang_zh-Hans.txt | 48 +- .../Resources/text/lang_zh-Hant.txt | 48 +- .../Join Avenue/SAV_JoinAvenue.Designer.cs | 3 +- .../Save Editors/Gen5/SAV_Medals5.Designer.cs | 639 ++++++++++++++++++ .../Subforms/Save Editors/Gen5/SAV_Medals5.cs | 472 +++++++++++++ .../Save Editors/Gen5/SAV_Misc5.Designer.cs | 89 --- .../Subforms/Save Editors/Gen5/SAV_Misc5.cs | 87 --- PKHeX.WinForms/Util/DevUtil.cs | 3 + 20 files changed, 1820 insertions(+), 232 deletions(-) create mode 100644 PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Medals5.Designer.cs create mode 100644 PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Medals5.cs diff --git a/PKHeX.Core/Saves/Substructures/Gen5/Medal5.cs b/PKHeX.Core/Saves/Substructures/Gen5/Medal5.cs index 1e05d51cb..94ba26f02 100644 --- a/PKHeX.Core/Saves/Substructures/Gen5/Medal5.cs +++ b/PKHeX.Core/Saves/Substructures/Gen5/Medal5.cs @@ -3,10 +3,10 @@ namespace PKHeX.Core; -public sealed class Medal5(Memory Data) +public struct Medal5(Memory Data) { public const int SIZE = 4; - private Span Span => Data.Span; + private readonly Span Span => Data.Span; // Structure: // ushort Date:7 @@ -23,53 +23,53 @@ public sealed class Medal5(Memory Data) public ushort RawDate { - get => ReadUInt16LittleEndian(Span); + readonly get => ReadUInt16LittleEndian(Span); set => WriteUInt16LittleEndian(Span, value); } public int Year { - get => (RawDate & 0x007F) + EpochYear; + readonly get => (RawDate & 0x007F) + EpochYear; set => RawDate = (ushort)((RawDate & 0xFF80) | ((value - EpochYear) & 0x007F)); } public int Month { - get => (RawDate & 0x0780) >> 7; + readonly get => (RawDate & 0x0780) >> 7; set => RawDate = (ushort)((RawDate & 0xF87F) | ((value & 0x0F) << 7)); } public int Day { - get => RawDate >> 11; + readonly get => RawDate >> 11; set => RawDate = (ushort)((RawDate & 0x07FF) | ((value & 0x1F) << 11)); } - public Medal5State State + public MedalState5 State { - get => (Medal5State)(Span[2] & 0b0111); + readonly get => (MedalState5)(Span[2] & 0b0111); set => Span[2] = (byte)((Span[2] & 0b1000) | ((int)value & 0b0111)); } public bool IsUnread { - get => FlagUtil.GetFlag(Span, 2, 3); + readonly get => FlagUtil.GetFlag(Span, 2, 3); set => FlagUtil.SetFlag(Span, 2, 3, value); } public bool CanHaveDate => State switch { - Medal5State.HintObtained => true, - Medal5State.Obtained => true, - Medal5State.ObtainReady => HasDate, + MedalState5.HintObtained => true, + MedalState5.Obtained => true, + MedalState5.ObtainReady => HasDate, _ => false, }; - public bool HasDate => RawDate != 0; - public bool IsObtained => State == Medal5State.Obtained; + public readonly bool HasDate => RawDate != 0; + public readonly bool IsObtained => State == MedalState5.Obtained; public void Clear() => Span.Clear(); - public DateOnly Date { get => GetDate(RawDate); set => RawDate = GetDate(value); } + public DateOnly Date { readonly get => GetDate(RawDate); set => RawDate = GetDate(value); } private static ushort GetDate(DateOnly date) { @@ -90,12 +90,12 @@ public static DateOnly GetDate(ushort date) public void Obtain(DateOnly time, bool unread = true) { RawDate = GetDate(time); - State = Medal5State.Obtained; + State = MedalState5.Obtained; IsUnread = unread; } } -public enum Medal5State +public enum MedalState5 { Unobtained = 0, HintReady = 1, diff --git a/PKHeX.Core/Saves/Substructures/Gen5/MedalList5.cs b/PKHeX.Core/Saves/Substructures/Gen5/MedalList5.cs index d1769c800..8dfce612f 100644 --- a/PKHeX.Core/Saves/Substructures/Gen5/MedalList5.cs +++ b/PKHeX.Core/Saves/Substructures/Gen5/MedalList5.cs @@ -1,32 +1,49 @@ using System; +using static System.Buffers.Binary.BinaryPrimitives; namespace PKHeX.Core; public sealed class MedalList5(SAV5B2W2 SAV, Memory raw) : SaveBlock(SAV, raw) { - private const int MAX_MEDALS = 255; + // amount of medals needed to reach a specific rank + public const int RankRookie = 50; + public const int RankElite = 100; + public const int RankMaster = 150; + public const int RankLegend = 200; + private const int MAX_MEDALS = 255; // Top Medalist - public static Medal5[] GetMedals(Memory memory) + public static Medal5[] GetMedals(Memory raw) { - var count = memory.Length / Medal5.SIZE; + var count = Math.Min(MAX_MEDALS, raw.Length / Medal5.SIZE); var result = new Medal5[count]; for (int i = 0; i < result.Length; i++) - result[i] = GetMedal(memory, i); + result[i] = GetMedal(raw, i); return result; } - public static Medal5 GetMedal(Memory memory, int index) + public static Medal5 GetMedal(Memory raw, int index) { ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual((uint)index, MAX_MEDALS); - return new Medal5(memory.Slice(index * Medal5.SIZE, Medal5.SIZE)); + return new Medal5(raw.Slice(index * Medal5.SIZE, Medal5.SIZE)); } public Medal5 this[int index] => GetMedal(Raw, index); - public void ObtainAll(DateOnly date, bool unread = true) + public void ObtainAll(DateOnly date, bool unread = true, bool skipAlreadyObtained = true) { for (int i = 0; i < MAX_MEDALS; i++) - this[i].Obtain(date, unread); + { + var medal = this[i]; + if (skipAlreadyObtained && medal.IsObtained) + continue; + medal.Obtain(date, unread); + } + } + + public void GiveAll(DateOnly date, bool unread = true) + { + ObtainAll(date, unread); + Rank = CalculateRank(MAX_MEDALS); } public static MedalType5 GetMedalType(int index) => (uint)index switch @@ -38,6 +55,166 @@ public void ObtainAll(DateOnly date, bool unread = true) < MAX_MEDALS => MedalType5.Challenge, _ => throw new ArgumentOutOfRangeException(nameof(index)), }; + + public const int LengthAllMedals = MAX_MEDALS * Medal5.SIZE; + public Span AllMedals => Data[..LengthAllMedals]; + + public const byte PinnedMedalNone = MAX_MEDALS; + + public byte PinnedMedal + { + get => Data[0x3FC]; + set => Data[0x3FC] = value; + } + + public MedalRank5 Rank + { + get => (MedalRank5)Data[0x3FD]; + set => Data[0x3FD] = (byte)value; + } + + public bool IsTutorialComplete + { + get => Data[0x3FE] != 0; + set => Data[0x3FE] = (byte)(value ? 1 : 0); + } + // 3FF unused + + public HabitatList5 HabitatList => new(Raw.Slice(0x400, HabitatList5.SIZE)); + // 2 bytes alignment, total length 0x498 + + public static MedalRank5 CalculateRank(int count) => count switch + { + < RankRookie => MedalRank5.None, + < RankElite => MedalRank5.Rookie, + < RankMaster => MedalRank5.Elite, + < RankLegend => MedalRank5.Master, + _ => MedalRank5.Legend, + }; + + public MedalRank5 CalculateRank() + { + var count = GetCountObtained(); + return CalculateRank(count); + } + + public int GetCountObtained() + { + int count = 0; + for (int i = 0; i < MAX_MEDALS; i++) + { + if (this[i].IsObtained) + count++; + } + return count; + } +} + +public sealed class HabitatList5(Memory raw) +{ + public const int SIZE = 0x96; // starts with some unused data + + public const int HabitatCount = 90; + + private Span Data => raw.Span; + + public Span Unused => Data[..0x36]; + + public HabitatStatus5 GetHabitat(int index) + { + ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual(index, HabitatCount); + return new(raw.Slice(0x36 + (index * HabitatStatus5.SIZE), HabitatStatus5.SIZE)); + } + + public ushort Unknown90 + { + get => ReadUInt16LittleEndian(Data[0x90..]); + set => WriteUInt16LittleEndian(Data[0x90..], value); + } + + public byte Unknown92 { get => Data[0x92]; set => Data[0x92] = value; } + + public HabitatEncounterType5 LastEncounterType + { + get => (HabitatEncounterType5)Data[0x93]; + set => Data[0x93] = (byte)value; + } + public bool IsTutorialViewed { get => Data[0x94] != 0; set => Data[0x94] = (byte)(value ? 1 : 0); } + public bool IsTutorialCompleteCapture { get => Data[0x95] != 0; set => Data[0x95] = (byte)(value ? 1 : 0); } + + public void CompleteAll() + { + for (int i = 0; i < HabitatCount; i++) + GetHabitat(i).SetComplete(); + } +} + +public struct HabitatStatus5(Memory data) +{ + // a fun single-byte struct. + // not sure if it's worthwhile figuring out how to make this less heavy... + // feels great storing (byte*,int) to represent a single byte value, maybe as a ref byte, but for now this is fine. + public const int SIZE = 1; + private readonly Span Data => data.Span; + + public byte Value + { + readonly get => Data[0]; + set => Data[0] = value; + } + + public HabitatCompletion5 Grass + { + readonly get => (HabitatCompletion5)(Data[0] & 0b0000_0011); + set => Data[0] = (byte)((Data[0] & ~0b0000_0011) | ((byte)value & 0b11)); + } + + public HabitatCompletion5 Surf + { + readonly get => (HabitatCompletion5)((Data[0] >> 2) & 0b11); + set => Data[0] = (byte)((Data[0] & ~0b0000_1100) | (((byte)value & 0b11) << 2)); + } + + public HabitatCompletion5 Fish + { + readonly get => (HabitatCompletion5)((Data[0] >> 4) & 0b11); + set => Data[0] = (byte)((Data[0] & ~0b0011_0000) | (((byte)value & 0b11) << 4)); + } + + public bool IsComplete + { + readonly get => FlagUtil.GetFlag(Data, 0, 6); + set => FlagUtil.SetFlag(Data, 0, 6, value); + } + + public HabitatCompletion5 GetStatus(HabitatEncounterType5 type) => type switch + { + HabitatEncounterType5.Grass => Grass, + HabitatEncounterType5.Surf => Surf, + HabitatEncounterType5.Fish => Fish, + _ => throw new ArgumentOutOfRangeException(nameof(type)), + }; + + public void SetStatus(HabitatEncounterType5 type, HabitatCompletion5 value) + { + switch (type) + { + case HabitatEncounterType5.Grass: + Grass = value; + break; + case HabitatEncounterType5.Surf: + Surf = value; + break; + case HabitatEncounterType5.Fish: + Fish = value; + break; + default: + throw new ArgumentOutOfRangeException(nameof(type)); + } + } + + public void SetComplete() => Value = 0b_1_11_11_11; // sets all 3 habitats to complete and the IsComplete flag to true + public void Clear() => Value = 0; } public enum MedalType5 @@ -48,3 +225,39 @@ public enum MedalType5 Entertainment, Challenge, } + +public enum MedalRank5 : byte +{ + None = 0, + Rookie = 1, + Elite = 2, + Master = 3, + Legend = 4, + // nothing above 200 +} + +public enum HabitatCompletion5 : byte +{ + None = 0, + Seen = 1, + Caught = 2, + Complete = 3, +} + +public enum HabitatEncounterType5 : byte +{ + /// + /// + /// + Grass = 0, + + /// + /// + /// + Surf = 1, + + /// + /// + /// + Fish = 2, +} diff --git a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.Designer.cs b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.Designer.cs index b0d985cbf..dfba5cc49 100644 --- a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.Designer.cs +++ b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.Designer.cs @@ -87,6 +87,7 @@ private void InitializeComponent() B_OpenGeonetEditor = new System.Windows.Forms.Button(); B_OpenUnityTowerEditor = new System.Windows.Forms.Button(); B_OpenJoinAvenueEditor = new System.Windows.Forms.Button(); + B_OpenMedalsEditor = new System.Windows.Forms.Button(); B_OpenChatterEditor = new System.Windows.Forms.Button(); B_Roamer = new System.Windows.Forms.Button(); B_FestivalPlaza = new System.Windows.Forms.Button(); @@ -442,6 +443,7 @@ private void InitializeComponent() FLP_SAVtools.Controls.Add(B_OpenGeonetEditor); FLP_SAVtools.Controls.Add(B_OpenUnityTowerEditor); FLP_SAVtools.Controls.Add(B_OpenJoinAvenueEditor); + FLP_SAVtools.Controls.Add(B_OpenMedalsEditor); FLP_SAVtools.Controls.Add(B_OpenChatterEditor); FLP_SAVtools.Controls.Add(B_Roamer); FLP_SAVtools.Controls.Add(B_FestivalPlaza); @@ -776,6 +778,17 @@ private void InitializeComponent() B_OpenChatterEditor.UseVisualStyleBackColor = true; B_OpenChatterEditor.Click += B_OpenChatterEditor_Click; // + // B_OpenMedalsEditor + // + B_OpenMedalsEditor.Location = new System.Drawing.Point(316, 364); + B_OpenMedalsEditor.Margin = new System.Windows.Forms.Padding(4); + B_OpenMedalsEditor.Name = "B_OpenMedalsEditor"; + B_OpenMedalsEditor.Size = new System.Drawing.Size(96, 32); + B_OpenMedalsEditor.TabIndex = 1; + B_OpenMedalsEditor.Text = "Medals"; + B_OpenMedalsEditor.UseVisualStyleBackColor = true; + B_OpenMedalsEditor.Click += B_OpenMedalsEditor_Click; + // // B_Roamer // B_Roamer.Location = new System.Drawing.Point(4, 284); @@ -1118,6 +1131,7 @@ private void InitializeComponent() private System.Windows.Forms.Button B_OpenGeonetEditor; private System.Windows.Forms.Button B_OpenUnityTowerEditor; private System.Windows.Forms.Button B_OpenJoinAvenueEditor; + private System.Windows.Forms.Button B_OpenMedalsEditor; private System.Windows.Forms.Button B_OpenChatterEditor; private System.Windows.Forms.Button B_Roamer; private System.Windows.Forms.Button B_FestivalPlaza; diff --git a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs index 2410acd2d..87a7d0c78 100644 --- a/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs +++ b/PKHeX.WinForms/Controls/SAV Editor/SAVEditor.cs @@ -646,6 +646,7 @@ private static void OpenDialog(Form f) private void B_OpenGeonetEditor_Click(object sender, EventArgs e) => OpenDialog(new SAV_Geonet4((SAV4)SAV)); private void B_OpenUnityTowerEditor_Click(object sender, EventArgs e) => OpenDialog(new SAV_UnityTower((SAV5)SAV)); private void B_OpenJoinAvenueEditor_Click(object sender, EventArgs e) => OpenDialog(new SAV_JoinAvenue((SAV5B2W2)SAV)); + private void B_OpenMedalsEditor_Click(object sender, EventArgs e) => OpenDialog(new SAV_Medals5((SAV5B2W2)SAV)); private void B_OpenChatterEditor_Click(object sender, EventArgs e) => OpenDialog(new SAV_Chatter(SAV)); private void B_OpenGear_Click(object sender, EventArgs e) => OpenDialog(new SAV_Gear((SAV4BR)SAV)); private void B_Donuts_Click(object sender, EventArgs e) => OpenDialog(new SAV_Donut9a((SAV9ZA)SAV)); @@ -1312,6 +1313,7 @@ private void ToggleViewSubEditors(SaveFile sav) B_OpenGeonetEditor.Visible = sav is SAV4; B_OpenUnityTowerEditor.Visible = sav is SAV5; B_OpenJoinAvenueEditor.Visible = sav is SAV5B2W2; + B_OpenMedalsEditor.Visible = sav is SAV5B2W2; B_OpenChatterEditor.Visible = sav is SAV4 or SAV5; B_OpenBattlePass.Visible = B_OpenGear.Visible = sav is SAV4BR; B_OpenSealStickers.Visible = B_Poffins.Visible = sav is SAV8BS; diff --git a/PKHeX.WinForms/Resources/text/lang_de.txt b/PKHeX.WinForms/Resources/text/lang_de.txt index 90c98624c..3dea3d382 100644 --- a/PKHeX.WinForms/Resources/text/lang_de.txt +++ b/PKHeX.WinForms/Resources/text/lang_de.txt @@ -39,6 +39,7 @@ SAV_Inventory=Inventar-Editor SAV_JoinAvenue=Einklangspassage SAV_Link6=Pokémon-Link-Tool SAV_MailBox=Briefbox-Editor +SAV_Medals5=Medaillen SAV_Misc2=Sonstiges SAV_Misc3=Sonstiges SAV_Misc4=Sonstiges @@ -235,6 +236,13 @@ GearCategory.Hands=Hände GearCategory.Head=Kopf GearCategory.Shoes=Schuhe GearCategory.Top=Oberteil +HabitatCompletion5.Caught=Gefangen +HabitatCompletion5.Complete=Abgeschlossen +HabitatCompletion5.None=Keine +HabitatCompletion5.Seen=Gesehen +HabitatEncounterType5.Fish=Angeln +HabitatEncounterType5.Grass=Gras +HabitatEncounterType5.Surf=Surfen JoinAvenueCeilingColor5.Blue=Blau JoinAvenueCeilingColor5.Green=Grün JoinAvenueCeilingColor5.Orange=Orange @@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=Honigbaum Main.B_OpenItemPouch=Items Main.B_OpenJoinAvenueEditor=Einklangspassage Main.B_OpenLinkInfo=Pokémon-Link +Main.B_OpenMedalsEditor=Medaillen Main.B_OpenMiscEditor=Sonstiges Main.B_OpenOPowers=O-Kräfte Main.B_OpenPokeBeans=Pokébohnen @@ -661,6 +670,16 @@ Main.Tab_OTMisc=OT/Sonstiges Main.Tab_PartyBattle=Team Main.Tab_SAV=SAV Main.Tab_Stats=Werte +MedalRank5.Elite=Elite +MedalRank5.Legend=Legende +MedalRank5.Master=Meister +MedalRank5.None=Kein Rang +MedalRank5.Rookie=Anfänger +MedalState5.HintObtained=Hinweis erhalten +MedalState5.HintReady=Hinweis verfügbar +MedalState5.Obtained=Erhalten +MedalState5.ObtainReady=Bereit zum Erhalt +MedalState5.Unobtained=Nicht erhalten MemoryAmie.B_ClearAll=Alle leeren MemoryAmie.BTN_Cancel=Abbrechen MemoryAmie.BTN_Save=Speichern @@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=Bisasam: SAV_MailBox.L_PKM4=Bisasam: SAV_MailBox.L_PKM5=Bisasam: SAV_MailBox.L_PKM6=Bisasam: +SAV_Medals5.B_Cancel=Abbrechen +SAV_Medals5.B_ExportAll=Alles exportieren +SAV_Medals5.B_GiveAll=Alle vergeben +SAV_Medals5.B_HabitatClear=Löschen +SAV_Medals5.B_HabitatSetComplete=Als abgeschlossen markieren +SAV_Medals5.B_ImportAll=Alles importieren +SAV_Medals5.B_Save=Speichern +SAV_Medals5.CHK_HabitatTutorialCompleteCapture=Fang-Tutorial abgeschlossen +SAV_Medals5.CHK_HabitatTutorialViewed=Tutorial gesehen +SAV_Medals5.CHK_TutorialComplete=Tutorial abgeschlossen +SAV_Medals5.DGV_HabitatCompleteColumn=Abgeschlossen +SAV_Medals5.DGV_HabitatFishColumn=Angeln +SAV_Medals5.DGV_HabitatGrassColumn=Gras +SAV_Medals5.DGV_HabitatIndexColumn=Index +SAV_Medals5.DGV_HabitatSurfColumn=Surfen +SAV_Medals5.DGV_MedalDateColumn=Datum +SAV_Medals5.DGV_MedalIndexColumn=Index +SAV_Medals5.DGV_MedalNameColumn=Name +SAV_Medals5.DGV_MedalStateColumn=Status +SAV_Medals5.DGV_MedalTypeColumn=Typ +SAV_Medals5.DGV_MedalUnreadColumn=Ungelesen +SAV_Medals5.L_LastEncounterType=Letzte Begegnungsart: +SAV_Medals5.L_PinnedMedal=Angeheftete Medaille: +SAV_Medals5.L_Rank=Rang: +SAV_Medals5.Tab_Habitat=Habitatsliste +SAV_Medals5.Tab_Medals=Medaillen SAV_Misc2.B_Cancel=Abbrechen SAV_Misc2.B_Save=Speichern SAV_Misc2.B_VirtualConsoleGSBall=GS-Ball-Event aktivieren (Virtual Console) @@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=Abbrechen SAV_Misc5.B_DumpFC=Daten exportieren SAV_Misc5.B_FunfestMissions=Alle freischalten SAV_Misc5.B_ImportFC=Daten importieren -SAV_Misc5.B_ObtainAllMedals=Alle Medaillen erhalten SAV_Misc5.B_RandForest=Alle Areale zufällig SAV_Misc5.B_Save=Speichern SAV_Misc5.B_UnlockAllProps=Alle Accessoires freischalten @@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=Doppel SAV_Misc5.CHK_FMNew=NEU SAV_Misc5.CHK_Invisible=Unsichtbar SAV_Misc5.CHK_LibertyPass=Aktiviere Gartenpass -SAV_Misc5.CHK_MedalUnread=Ungelesen SAV_Misc5.CHK_MultiFriendsSet=Freunde SAV_Misc5.CHK_MultiNPCSet=NPC SAV_Misc5.CHK_PropObtained=Erhalten @@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=WeißerWald/SchwarzeStadt SAV_Misc5.TAB_Entralink=Kontaktebene SAV_Misc5.TAB_Forest=Hain SAV_Misc5.TAB_Main=Verschiedenes -SAV_Misc5.TAB_Medals=Medaillen SAV_Misc5.TAB_Muscial=Musical SAV_Misc5.TAB_Subway=Metro SAV_Misc8b.B_Arceus=Arceus Event freischalten diff --git a/PKHeX.WinForms/Resources/text/lang_en.txt b/PKHeX.WinForms/Resources/text/lang_en.txt index 9eb627f47..53356d4ca 100644 --- a/PKHeX.WinForms/Resources/text/lang_en.txt +++ b/PKHeX.WinForms/Resources/text/lang_en.txt @@ -39,6 +39,7 @@ SAV_Inventory=Inventory Editor SAV_JoinAvenue=Join Avenue SAV_Link6=Pokémon Link Tool SAV_MailBox=MailBox Editor +SAV_Medals5=Medals SAV_Misc2=Misc Editor SAV_Misc3=Misc Editor SAV_Misc4=Misc Editor @@ -235,6 +236,13 @@ GearCategory.Hands=Hands GearCategory.Head=Head GearCategory.Shoes=Shoes GearCategory.Top=Top +HabitatCompletion5.Caught=Caught +HabitatCompletion5.Complete=Complete +HabitatCompletion5.None=None +HabitatCompletion5.Seen=Seen +HabitatEncounterType5.Fish=Fish +HabitatEncounterType5.Grass=Grass +HabitatEncounterType5.Surf=Surf JoinAvenueCeilingColor5.Blue=Blue JoinAvenueCeilingColor5.Green=Green JoinAvenueCeilingColor5.Orange=Orange @@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=Honey Tree Main.B_OpenItemPouch=Items Main.B_OpenJoinAvenueEditor=Join Avenue Main.B_OpenLinkInfo=Link Data +Main.B_OpenMedalsEditor=Medals Main.B_OpenMiscEditor=Misc Edits Main.B_OpenOPowers=O-Powers Main.B_OpenPokeBeans=Poké Beans @@ -661,6 +670,16 @@ Main.Tab_OTMisc=OT/Misc Main.Tab_PartyBattle=Party Main.Tab_SAV=SAV Main.Tab_Stats=Stats +MedalRank5.Elite=Elite +MedalRank5.Legend=Legend +MedalRank5.Master=Master +MedalRank5.None=None +MedalRank5.Rookie=Rookie +MedalState5.HintObtained=HintObtained +MedalState5.HintReady=HintReady +MedalState5.Obtained=Obtained +MedalState5.ObtainReady=ObtainReady +MedalState5.Unobtained=Unobtained MemoryAmie.B_ClearAll=Clear All MemoryAmie.BTN_Cancel=Cancel MemoryAmie.BTN_Save=Save @@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=Bulbasaur: SAV_MailBox.L_PKM4=Bulbasaur: SAV_MailBox.L_PKM5=Bulbasaur: SAV_MailBox.L_PKM6=Bulbasaur: +SAV_Medals5.B_Cancel=Cancel +SAV_Medals5.B_ExportAll=Export All +SAV_Medals5.B_GiveAll=Give All +SAV_Medals5.B_HabitatClear=Clear +SAV_Medals5.B_HabitatSetComplete=Set Complete +SAV_Medals5.B_ImportAll=Import All +SAV_Medals5.B_Save=Save +SAV_Medals5.CHK_HabitatTutorialCompleteCapture=Tutorial Capture Done +SAV_Medals5.CHK_HabitatTutorialViewed=Tutorial Viewed +SAV_Medals5.CHK_TutorialComplete=Tutorial Complete +SAV_Medals5.DGV_HabitatCompleteColumn=Complete +SAV_Medals5.DGV_HabitatFishColumn=Fish +SAV_Medals5.DGV_HabitatGrassColumn=Grass +SAV_Medals5.DGV_HabitatIndexColumn=Index +SAV_Medals5.DGV_HabitatSurfColumn=Surf +SAV_Medals5.DGV_MedalDateColumn=Date +SAV_Medals5.DGV_MedalIndexColumn=Index +SAV_Medals5.DGV_MedalNameColumn=Name +SAV_Medals5.DGV_MedalStateColumn=State +SAV_Medals5.DGV_MedalTypeColumn=Type +SAV_Medals5.DGV_MedalUnreadColumn=IsUnread +SAV_Medals5.L_LastEncounterType=Last Encounter Type: +SAV_Medals5.L_PinnedMedal=Pinned Medal: +SAV_Medals5.L_Rank=Rank: +SAV_Medals5.Tab_Habitat=Habitat +SAV_Medals5.Tab_Medals=Medals SAV_Misc2.B_Cancel=Cancel SAV_Misc2.B_Save=Save SAV_Misc2.B_VirtualConsoleGSBall=Enable GS Ball Event (Virtual Console) @@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=Cancel SAV_Misc5.B_DumpFC=Dump Data SAV_Misc5.B_FunfestMissions=Unlock All (w/o No.0) SAV_Misc5.B_ImportFC=Import Data -SAV_Misc5.B_ObtainAllMedals=Obtain All Medals SAV_Misc5.B_RandForest=Randomize All Areas SAV_Misc5.B_Save=Save SAV_Misc5.B_UnlockAllProps=Unlock All Props @@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=Double SAV_Misc5.CHK_FMNew=NEW SAV_Misc5.CHK_Invisible=Invisible SAV_Misc5.CHK_LibertyPass=Activate LibertyPass -SAV_Misc5.CHK_MedalUnread=Unread SAV_Misc5.CHK_MultiFriendsSet=Friends SAV_Misc5.CHK_MultiNPCSet=NPC SAV_Misc5.CHK_PropObtained=Obtained @@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=WhiteForest/BlackCity SAV_Misc5.TAB_Entralink=Entralink SAV_Misc5.TAB_Forest=Forest SAV_Misc5.TAB_Main=Main -SAV_Misc5.TAB_Medals=Medals SAV_Misc5.TAB_Muscial=Musical SAV_Misc5.TAB_Subway=Subway SAV_Misc8b.B_Arceus=Unlock Arceus Event diff --git a/PKHeX.WinForms/Resources/text/lang_es-419.txt b/PKHeX.WinForms/Resources/text/lang_es-419.txt index f1efa5555..68f51f603 100644 --- a/PKHeX.WinForms/Resources/text/lang_es-419.txt +++ b/PKHeX.WinForms/Resources/text/lang_es-419.txt @@ -39,6 +39,7 @@ SAV_Inventory=Editor de Inventario SAV_JoinAvenue=Pasaje Unión SAV_Link6=Editor del Nexo Pokémon SAV_MailBox=Editor de Buzón +SAV_Medals5=Medallas SAV_Misc2=Editor Misceláneo SAV_Misc3=Editor de Datos del Entrenador SAV_Misc4=Editor de Datos del Entrenador @@ -235,6 +236,13 @@ GearCategory.Hands=Manos GearCategory.Head=Gorras GearCategory.Shoes=Calzado GearCategory.Top=Prendas +HabitatCompletion5.Caught=Atrapado +HabitatCompletion5.Complete=Completo +HabitatCompletion5.None=Ninguno +HabitatCompletion5.Seen=Visto +HabitatEncounterType5.Fish=Pesca +HabitatEncounterType5.Grass=Hierba +HabitatEncounterType5.Surf=Surf JoinAvenueCeilingColor5.Blue=Azul JoinAvenueCeilingColor5.Green=Verde JoinAvenueCeilingColor5.Orange=Naranja @@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=Árbol de Miel Main.B_OpenItemPouch=Inventario Main.B_OpenJoinAvenueEditor=Pasaje Unión Main.B_OpenLinkInfo=Datos Nexo +Main.B_OpenMedalsEditor=Medallas Main.B_OpenMiscEditor=Misceláneo Main.B_OpenOPowers=Poder O Main.B_OpenPokeBeans=Pokéhabas @@ -661,6 +670,16 @@ Main.Tab_OTMisc=EO/Misc Main.Tab_PartyBattle=Equipo Main.Tab_SAV=SAV Main.Tab_Stats=Estadísticas +MedalRank5.Elite=Élite +MedalRank5.Legend=Leyenda +MedalRank5.Master=Maestro +MedalRank5.None=Ninguno +MedalRank5.Rookie=Novato +MedalState5.HintObtained=Pista obtenida +MedalState5.HintReady=Pista disponible +MedalState5.Obtained=Obtenida +MedalState5.ObtainReady=Lista para obtener +MedalState5.Unobtained=No obtenida MemoryAmie.B_ClearAll=Limpiar todo MemoryAmie.BTN_Cancel=Cancelar MemoryAmie.BTN_Save=Guardar @@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=Bulbasaur: SAV_MailBox.L_PKM4=Bulbasaur: SAV_MailBox.L_PKM5=Bulbasaur: SAV_MailBox.L_PKM6=Bulbasaur: +SAV_Medals5.B_Cancel=Cancelar +SAV_Medals5.B_ExportAll=Exportar todo +SAV_Medals5.B_GiveAll=Dar todas +SAV_Medals5.B_HabitatClear=Limpiar +SAV_Medals5.B_HabitatSetComplete=Marcar como completo +SAV_Medals5.B_ImportAll=Importar todo +SAV_Medals5.B_Save=Guardar +SAV_Medals5.CHK_HabitatTutorialCompleteCapture=Tutorial de captura completado +SAV_Medals5.CHK_HabitatTutorialViewed=Tutorial visto +SAV_Medals5.CHK_TutorialComplete=Tutorial completado +SAV_Medals5.DGV_HabitatCompleteColumn=Completo +SAV_Medals5.DGV_HabitatFishColumn=Pesca +SAV_Medals5.DGV_HabitatGrassColumn=Hierba +SAV_Medals5.DGV_HabitatIndexColumn=Índice +SAV_Medals5.DGV_HabitatSurfColumn=Surf +SAV_Medals5.DGV_MedalDateColumn=Fecha +SAV_Medals5.DGV_MedalIndexColumn=Índice +SAV_Medals5.DGV_MedalNameColumn=Nombre +SAV_Medals5.DGV_MedalStateColumn=Estado +SAV_Medals5.DGV_MedalTypeColumn=Tipo +SAV_Medals5.DGV_MedalUnreadColumn=No leída +SAV_Medals5.L_LastEncounterType=Último tipo de encuentro: +SAV_Medals5.L_PinnedMedal=Medalla fijada: +SAV_Medals5.L_Rank=Rango: +SAV_Medals5.Tab_Habitat=Lista de hábitats +SAV_Medals5.Tab_Medals=Medallas SAV_Misc2.B_Cancel=Cancelar SAV_Misc2.B_Save=Guardar SAV_Misc2.B_VirtualConsoleGSBall=Activar Evento GS Ball (Virtual Console) @@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=Cancelar SAV_Misc5.B_DumpFC=Exportar datos SAV_Misc5.B_FunfestMissions=Desbloquear todo (sin n.º0) SAV_Misc5.B_ImportFC=Importar datos -SAV_Misc5.B_ObtainAllMedals=Obtener todas las medallas SAV_Misc5.B_RandForest=Aleatorizar todas las áreas SAV_Misc5.B_Save=Guardar SAV_Misc5.B_UnlockAllProps=Desbloq. complementos @@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=Doblr SAV_Misc5.CHK_FMNew=NUEVO SAV_Misc5.CHK_Invisible=Invisible SAV_Misc5.CHK_LibertyPass=Activar Ticket Libertad -SAV_Misc5.CHK_MedalUnread=Sin leer SAV_Misc5.CHK_MultiFriendsSet=Amigos SAV_Misc5.CHK_MultiNPCSet=PNJ SAV_Misc5.CHK_PropObtained=Obtenido @@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=Bosque Blanco/Ciudad Negra SAV_Misc5.TAB_Entralink=Zona Nexo SAV_Misc5.TAB_Forest=Bosque SAV_Misc5.TAB_Main=Inicio -SAV_Misc5.TAB_Medals=Medallas SAV_Misc5.TAB_Muscial=Musical SAV_Misc5.TAB_Subway=Subterráneo SAV_Misc8b.B_Arceus=Desbloquear evento de Arceus diff --git a/PKHeX.WinForms/Resources/text/lang_es.txt b/PKHeX.WinForms/Resources/text/lang_es.txt index fb7008522..7b2c4521a 100644 --- a/PKHeX.WinForms/Resources/text/lang_es.txt +++ b/PKHeX.WinForms/Resources/text/lang_es.txt @@ -39,6 +39,7 @@ SAV_Inventory=Editor de Inventario SAV_JoinAvenue=Galería Unión SAV_Link6=Editor del Nexo Pokémon SAV_MailBox=Editor de Buzón +SAV_Medals5=Medallas SAV_Misc2=Editor de Varios SAV_Misc3=Editor de Datos del Entrenador SAV_Misc4=Editor de Datos del Entrenador @@ -235,6 +236,13 @@ GearCategory.Hands=Manos GearCategory.Head=Gorras GearCategory.Shoes=Calzado GearCategory.Top=Prendas +HabitatCompletion5.Caught=Atrapado +HabitatCompletion5.Complete=Completo +HabitatCompletion5.None=Ninguno +HabitatCompletion5.Seen=Visto +HabitatEncounterType5.Fish=Pesca +HabitatEncounterType5.Grass=Hierba +HabitatEncounterType5.Surf=Surf JoinAvenueCeilingColor5.Blue=Azul JoinAvenueCeilingColor5.Green=Verde JoinAvenueCeilingColor5.Orange=Naranja @@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=Árbol de Miel Main.B_OpenItemPouch=Inventario Main.B_OpenJoinAvenueEditor=Galería Unión Main.B_OpenLinkInfo=Datos Nexo +Main.B_OpenMedalsEditor=Medallas Main.B_OpenMiscEditor=Varios Main.B_OpenOPowers=Poder O Main.B_OpenPokeBeans=Pokéhabas @@ -661,6 +670,16 @@ Main.Tab_OTMisc=EO/Varios Main.Tab_PartyBattle=Equipo Main.Tab_SAV=SAV Main.Tab_Stats=Estadísticas +MedalRank5.Elite=Élite +MedalRank5.Legend=Leyenda +MedalRank5.Master=Maestro +MedalRank5.None=Ninguno +MedalRank5.Rookie=Novato +MedalState5.HintObtained=Pista obtenida +MedalState5.HintReady=Pista disponible +MedalState5.Obtained=Obtenida +MedalState5.ObtainReady=Lista para obtener +MedalState5.Unobtained=No obtenida MemoryAmie.B_ClearAll=Limpiar todo MemoryAmie.BTN_Cancel=Cancelar MemoryAmie.BTN_Save=Guardar @@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=Bulbasaur: SAV_MailBox.L_PKM4=Bulbasaur: SAV_MailBox.L_PKM5=Bulbasaur: SAV_MailBox.L_PKM6=Bulbasaur: +SAV_Medals5.B_Cancel=Cancelar +SAV_Medals5.B_ExportAll=Exportar todo +SAV_Medals5.B_GiveAll=Dar todas +SAV_Medals5.B_HabitatClear=Limpiar +SAV_Medals5.B_HabitatSetComplete=Marcar como completo +SAV_Medals5.B_ImportAll=Importar todo +SAV_Medals5.B_Save=Guardar +SAV_Medals5.CHK_HabitatTutorialCompleteCapture=Tutorial de captura completado +SAV_Medals5.CHK_HabitatTutorialViewed=Tutorial visto +SAV_Medals5.CHK_TutorialComplete=Tutorial completado +SAV_Medals5.DGV_HabitatCompleteColumn=Completo +SAV_Medals5.DGV_HabitatFishColumn=Pesca +SAV_Medals5.DGV_HabitatGrassColumn=Hierba +SAV_Medals5.DGV_HabitatIndexColumn=Índice +SAV_Medals5.DGV_HabitatSurfColumn=Surf +SAV_Medals5.DGV_MedalDateColumn=Fecha +SAV_Medals5.DGV_MedalIndexColumn=Índice +SAV_Medals5.DGV_MedalNameColumn=Nombre +SAV_Medals5.DGV_MedalStateColumn=Estado +SAV_Medals5.DGV_MedalTypeColumn=Tipo +SAV_Medals5.DGV_MedalUnreadColumn=No leída +SAV_Medals5.L_LastEncounterType=Último tipo de encuentro: +SAV_Medals5.L_PinnedMedal=Medalla fijada: +SAV_Medals5.L_Rank=Rango: +SAV_Medals5.Tab_Habitat=Lista de hábitats +SAV_Medals5.Tab_Medals=Medallas SAV_Misc2.B_Cancel=Cancelar SAV_Misc2.B_Save=Guardar SAV_Misc2.B_VirtualConsoleGSBall=Activar Evento GS Ball (Virtual Console) @@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=Cancelar SAV_Misc5.B_DumpFC=Exportar datos SAV_Misc5.B_FunfestMissions=Desbloquear todo (sin n.º0) SAV_Misc5.B_ImportFC=Importar datos -SAV_Misc5.B_ObtainAllMedals=Obtener todas las medallas SAV_Misc5.B_RandForest=Aleatorizar todas las áreas SAV_Misc5.B_Save=Guardar SAV_Misc5.B_UnlockAllProps=Desbloq. complementos @@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=Doblr SAV_Misc5.CHK_FMNew=NUEVO SAV_Misc5.CHK_Invisible=Invisible SAV_Misc5.CHK_LibertyPass=Activar Ticket Libertad -SAV_Misc5.CHK_MedalUnread=Sin leer SAV_Misc5.CHK_MultiFriendsSet=Amigos SAV_Misc5.CHK_MultiNPCSet=PNJ SAV_Misc5.CHK_PropObtained=Obtenido @@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=Bosque Blanco/Ciudad Negra SAV_Misc5.TAB_Entralink=Zona Nexo SAV_Misc5.TAB_Forest=Bosque SAV_Misc5.TAB_Main=Inicio -SAV_Misc5.TAB_Medals=Medallas SAV_Misc5.TAB_Muscial=Musical SAV_Misc5.TAB_Subway=Metro SAV_Misc8b.B_Arceus=Desbloquear evento de Arceus diff --git a/PKHeX.WinForms/Resources/text/lang_fr.txt b/PKHeX.WinForms/Resources/text/lang_fr.txt index 8bf7e715f..8f39b0a5f 100644 --- a/PKHeX.WinForms/Resources/text/lang_fr.txt +++ b/PKHeX.WinForms/Resources/text/lang_fr.txt @@ -39,6 +39,7 @@ SAV_Inventory=Éditeur de l'inventaire SAV_JoinAvenue=Galerie Concorde SAV_Link6=Outil Poké Lien SAV_MailBox=Éditeur de boîtes aux lettres +SAV_Medals5=Médailles SAV_Misc2=Éditeur divers SAV_Misc3=Éditeur divers SAV_Misc4=Éditeur divers @@ -235,6 +236,13 @@ GearCategory.Hands=Mains GearCategory.Head=Tête GearCategory.Shoes=Chaussures GearCategory.Top=Haut +HabitatCompletion5.Caught=Attrapé +HabitatCompletion5.Complete=Complet +HabitatCompletion5.None=Aucun +HabitatCompletion5.Seen=Vu +HabitatEncounterType5.Fish=Pêche +HabitatEncounterType5.Grass=Herbe +HabitatEncounterType5.Surf=Surf JoinAvenueCeilingColor5.Blue=Bleu JoinAvenueCeilingColor5.Green=Vert JoinAvenueCeilingColor5.Orange=Orange @@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=Arbres à miel Main.B_OpenItemPouch=Objets Main.B_OpenJoinAvenueEditor=Galerie Concorde Main.B_OpenLinkInfo=Poké Lien +Main.B_OpenMedalsEditor=Médailles Main.B_OpenMiscEditor=Éditeur divers Main.B_OpenOPowers=O-Auras Main.B_OpenPokeBeans=Poké Fèves @@ -661,6 +670,16 @@ Main.Tab_OTMisc=DO/Divers Main.Tab_PartyBattle=Équipe Main.Tab_SAV=SAV Main.Tab_Stats=Stats +MedalRank5.Elite=Élite +MedalRank5.Legend=Légende +MedalRank5.Master=Maître +MedalRank5.None=Aucun +MedalRank5.Rookie=Débutant +MedalState5.HintObtained=Indice obtenu +MedalState5.HintReady=Indice disponible +MedalState5.Obtained=Obtenue +MedalState5.ObtainReady=Prête à obtenir +MedalState5.Unobtained=Non obtenue MemoryAmie.B_ClearAll=Tout vider MemoryAmie.BTN_Cancel=Annuler MemoryAmie.BTN_Save=Sauver @@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=Bulbizarre : SAV_MailBox.L_PKM4=Bulbizarre : SAV_MailBox.L_PKM5=Bulbizarre : SAV_MailBox.L_PKM6=Bulbizarre : +SAV_Medals5.B_Cancel=Annuler +SAV_Medals5.B_ExportAll=Tout exporter +SAV_Medals5.B_GiveAll=Tout attribuer +SAV_Medals5.B_HabitatClear=Effacer +SAV_Medals5.B_HabitatSetComplete=Marquer complet +SAV_Medals5.B_ImportAll=Tout importer +SAV_Medals5.B_Save=Enregistrer +SAV_Medals5.CHK_HabitatTutorialCompleteCapture=Tutoriel de capture terminé +SAV_Medals5.CHK_HabitatTutorialViewed=Tutoriel vu +SAV_Medals5.CHK_TutorialComplete=Tutoriel terminé +SAV_Medals5.DGV_HabitatCompleteColumn=Complet +SAV_Medals5.DGV_HabitatFishColumn=Pêche +SAV_Medals5.DGV_HabitatGrassColumn=Herbe +SAV_Medals5.DGV_HabitatIndexColumn=Index +SAV_Medals5.DGV_HabitatSurfColumn=Surf +SAV_Medals5.DGV_MedalDateColumn=Date +SAV_Medals5.DGV_MedalIndexColumn=Index +SAV_Medals5.DGV_MedalNameColumn=Nom +SAV_Medals5.DGV_MedalStateColumn=État +SAV_Medals5.DGV_MedalTypeColumn=Type +SAV_Medals5.DGV_MedalUnreadColumn=Non lue +SAV_Medals5.L_LastEncounterType=Dernier type de rencontre : +SAV_Medals5.L_PinnedMedal=Médaille épinglée : +SAV_Medals5.L_Rank=Rang : +SAV_Medals5.Tab_Habitat=Liste des habitats +SAV_Medals5.Tab_Medals=Médailles SAV_Misc2.B_Cancel=Annuler SAV_Misc2.B_Save=Sauvegarder SAV_Misc2.B_VirtualConsoleGSBall=Activer évènement GS Ball (Console Virtuelle) @@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=Annuler SAV_Misc5.B_DumpFC=Exporter données SAV_Misc5.B_FunfestMissions=Tout débloquer (sauf no. 0) SAV_Misc5.B_ImportFC=Importer données -SAV_Misc5.B_ObtainAllMedals=Obtenir toutes les médailles SAV_Misc5.B_RandForest=Randomiser toutes les zones SAV_Misc5.B_Save=Sauvegarder SAV_Misc5.B_UnlockAllProps=Tout donner @@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=Duo SAV_Misc5.CHK_FMNew=NOUV. SAV_Misc5.CHK_Invisible=Invisible SAV_Misc5.CHK_LibertyPass=Activer le Pass Liberté -SAV_Misc5.CHK_MedalUnread=Non vue SAV_Misc5.CHK_MultiFriendsSet=Ami SAV_Misc5.CHK_MultiNPCSet=PNJ SAV_Misc5.CHK_PropObtained=Obtenu @@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=ForêtB/VilleN SAV_Misc5.TAB_Entralink=Heylink SAV_Misc5.TAB_Forest=Forêt SAV_Misc5.TAB_Main=Principal -SAV_Misc5.TAB_Medals=Médailles SAV_Misc5.TAB_Muscial=Music-Hall SAV_Misc5.TAB_Subway=Métro SAV_Misc8b.B_Arceus=Débloquer l'évènement d'Arceus diff --git a/PKHeX.WinForms/Resources/text/lang_it.txt b/PKHeX.WinForms/Resources/text/lang_it.txt index d7cb8f981..11920a8fe 100644 --- a/PKHeX.WinForms/Resources/text/lang_it.txt +++ b/PKHeX.WinForms/Resources/text/lang_it.txt @@ -39,6 +39,7 @@ SAV_Inventory=Editor Inventario SAV_JoinAvenue=Galleria Solidarietà SAV_Link6=Strumenti Link SAV_MailBox=Editor Messaggi +SAV_Medals5=Premi SAV_Misc2=Editor Varie SAV_Misc3=Editor Dati Allenatore SAV_Misc4=Editor Varie @@ -235,6 +236,13 @@ GearCategory.Hands=Mani GearCategory.Head=Testa GearCategory.Shoes=Scarpe GearCategory.Top=Sopra +HabitatCompletion5.Caught=Catturato +HabitatCompletion5.Complete=Completo +HabitatCompletion5.None=Nessuno +HabitatCompletion5.Seen=Visto +HabitatEncounterType5.Fish=Pesca +HabitatEncounterType5.Grass=Erba +HabitatEncounterType5.Surf=Surf JoinAvenueCeilingColor5.Blue=Blu JoinAvenueCeilingColor5.Green=Verde JoinAvenueCeilingColor5.Orange=Arancione @@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=Alberi di Miele Main.B_OpenItemPouch=Strumenti Main.B_OpenJoinAvenueEditor=Galleria Solidarietà Main.B_OpenLinkInfo=Dati Link +Main.B_OpenMedalsEditor=Premi Main.B_OpenMiscEditor=Mod. Varie Main.B_OpenOPowers=Poteri O Main.B_OpenPokeBeans=Pokégioli @@ -661,6 +670,16 @@ Main.Tab_OTMisc=AO/Varie Main.Tab_PartyBattle=Squadra Main.Tab_SAV=SAV Main.Tab_Stats=Statistiche +MedalRank5.Elite=Élite +MedalRank5.Legend=Leggenda +MedalRank5.Master=Maestro +MedalRank5.None=Nessuno +MedalRank5.Rookie=Principiante +MedalState5.HintObtained=Indizio ottenuto +MedalState5.HintReady=Indizio disponibile +MedalState5.Obtained=Ottenuto +MedalState5.ObtainReady=Pronto da ottenere +MedalState5.Unobtained=Non ottenuto MemoryAmie.B_ClearAll=Ripulisci MemoryAmie.BTN_Cancel=Annulla MemoryAmie.BTN_Save=Salva @@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=Bulbasaur: SAV_MailBox.L_PKM4=Bulbasaur: SAV_MailBox.L_PKM5=Bulbasaur: SAV_MailBox.L_PKM6=Bulbasaur: +SAV_Medals5.B_Cancel=Annulla +SAV_Medals5.B_ExportAll=Esporta tutto +SAV_Medals5.B_GiveAll=Assegna tutti +SAV_Medals5.B_HabitatClear=Cancella +SAV_Medals5.B_HabitatSetComplete=Segna completo +SAV_Medals5.B_ImportAll=Importa tutto +SAV_Medals5.B_Save=Salva +SAV_Medals5.CHK_HabitatTutorialCompleteCapture=Tutorial di cattura completato +SAV_Medals5.CHK_HabitatTutorialViewed=Tutorial visto +SAV_Medals5.CHK_TutorialComplete=Tutorial completato +SAV_Medals5.DGV_HabitatCompleteColumn=Completo +SAV_Medals5.DGV_HabitatFishColumn=Pesca +SAV_Medals5.DGV_HabitatGrassColumn=Erba +SAV_Medals5.DGV_HabitatIndexColumn=Indice +SAV_Medals5.DGV_HabitatSurfColumn=Surf +SAV_Medals5.DGV_MedalDateColumn=Data +SAV_Medals5.DGV_MedalIndexColumn=Indice +SAV_Medals5.DGV_MedalNameColumn=Nome +SAV_Medals5.DGV_MedalStateColumn=Stato +SAV_Medals5.DGV_MedalTypeColumn=Tipo +SAV_Medals5.DGV_MedalUnreadColumn=Non letto +SAV_Medals5.L_LastEncounterType=Ultimo tipo d'incontro: +SAV_Medals5.L_PinnedMedal=Premio fissato: +SAV_Medals5.L_Rank=Grado: +SAV_Medals5.Tab_Habitat=Lista zone +SAV_Medals5.Tab_Medals=Premi SAV_Misc2.B_Cancel=Annulla SAV_Misc2.B_Save=Salva SAV_Misc2.B_VirtualConsoleGSBall=Attiva evento Celebi (Virtual Console) @@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=Annulla SAV_Misc5.B_DumpFC=Dump Data SAV_Misc5.B_FunfestMissions=Sblocca Tutto (w/o No.0) SAV_Misc5.B_ImportFC=Import Data -SAV_Misc5.B_ObtainAllMedals=Ottieni tutti i premi SAV_Misc5.B_RandForest=Casualizza Tutti gli Alberi SAV_Misc5.B_Save=Salva SAV_Misc5.B_UnlockAllProps=Sblocca tutti i gadget @@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=Doppie SAV_Misc5.CHK_FMNew=Nuovo SAV_Misc5.CHK_Invisible=Invisibile SAV_Misc5.CHK_LibertyPass=Attiva LiberTicket -SAV_Misc5.CHK_MedalUnread=Non letti SAV_Misc5.CHK_MultiFriendsSet=Amici SAV_Misc5.CHK_MultiNPCSet=NPC SAV_Misc5.CHK_PropObtained=Ottenuto @@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=ForestaBianca/CittàNera SAV_Misc5.TAB_Entralink=Intramondo SAV_Misc5.TAB_Forest=Bosco SAV_Misc5.TAB_Main=Principale -SAV_Misc5.TAB_Medals=Premi SAV_Misc5.TAB_Muscial=Musical SAV_Misc5.TAB_Subway=Metrò SAV_Misc8b.B_Arceus=Sblocca l'Evento di Arceus diff --git a/PKHeX.WinForms/Resources/text/lang_ja.txt b/PKHeX.WinForms/Resources/text/lang_ja.txt index 6519e45f4..a2342716b 100644 --- a/PKHeX.WinForms/Resources/text/lang_ja.txt +++ b/PKHeX.WinForms/Resources/text/lang_ja.txt @@ -39,6 +39,7 @@ SAV_Inventory=アイテム SAV_JoinAvenue=ジョインアベニュー SAV_Link6=ポケモンリンク SAV_MailBox=メールボックス +SAV_Medals5=メダル SAV_Misc2=その他 SAV_Misc3=その他 SAV_Misc4=その他 @@ -235,6 +236,13 @@ GearCategory.Hands=うで GearCategory.Head=あたま GearCategory.Shoes=くつ GearCategory.Top=トップ +HabitatCompletion5.Caught=捕まえた +HabitatCompletion5.Complete=コンプリート +HabitatCompletion5.None=なし +HabitatCompletion5.Seen=見つけた +HabitatEncounterType5.Fish=釣り +HabitatEncounterType5.Grass=草むら +HabitatEncounterType5.Surf=なみのり JoinAvenueCeilingColor5.Blue=青 JoinAvenueCeilingColor5.Green=緑 JoinAvenueCeilingColor5.Orange=オレンジ @@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=ミツの木 Main.B_OpenItemPouch=アイテム Main.B_OpenJoinAvenueEditor=ジョインアベニュー Main.B_OpenLinkInfo=ポケモンリンク +Main.B_OpenMedalsEditor=メダル Main.B_OpenMiscEditor=その他 Main.B_OpenOPowers= Oパワー Main.B_OpenPokeBeans=ポケマメ @@ -661,6 +670,16 @@ Main.Tab_OTMisc=親など Main.Tab_PartyBattle=手持ちポケモン Main.Tab_SAV=セーブ Main.Tab_Stats=ステータス +MedalRank5.Elite=エリートメダリスト +MedalRank5.Legend=レジェンドメダリスト +MedalRank5.Master=マスターメダリスト +MedalRank5.None=なし +MedalRank5.Rookie=ルーキーメダリスト +MedalState5.HintObtained=ヒント取得済み +MedalState5.HintReady=ヒントあり +MedalState5.Obtained=獲得済み +MedalState5.ObtainReady=獲得可能 +MedalState5.Unobtained=未獲得 MemoryAmie.B_ClearAll=全て消去 MemoryAmie.BTN_Cancel=キャンセル MemoryAmie.BTN_Save=保存 @@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=フシギダネ SAV_MailBox.L_PKM4=フシギダネ SAV_MailBox.L_PKM5=フシギダネ SAV_MailBox.L_PKM6=フシギダネ +SAV_Medals5.B_Cancel=キャンセル +SAV_Medals5.B_ExportAll=すべてエクスポート +SAV_Medals5.B_GiveAll=すべて付与 +SAV_Medals5.B_HabitatClear=クリア +SAV_Medals5.B_HabitatSetComplete=コンプリートにする +SAV_Medals5.B_ImportAll=すべてインポート +SAV_Medals5.B_Save=保存 +SAV_Medals5.CHK_HabitatTutorialCompleteCapture=捕獲チュートリアル完了 +SAV_Medals5.CHK_HabitatTutorialViewed=チュートリアル閲覧済み +SAV_Medals5.CHK_TutorialComplete=チュートリアル完了 +SAV_Medals5.DGV_HabitatCompleteColumn=コンプリート +SAV_Medals5.DGV_HabitatFishColumn=釣り +SAV_Medals5.DGV_HabitatGrassColumn=草むら +SAV_Medals5.DGV_HabitatIndexColumn=番号 +SAV_Medals5.DGV_HabitatSurfColumn=なみのり +SAV_Medals5.DGV_MedalDateColumn=日付 +SAV_Medals5.DGV_MedalIndexColumn=番号 +SAV_Medals5.DGV_MedalNameColumn=名前 +SAV_Medals5.DGV_MedalStateColumn=状態 +SAV_Medals5.DGV_MedalTypeColumn=種類 +SAV_Medals5.DGV_MedalUnreadColumn=未読 +SAV_Medals5.L_LastEncounterType=最後の遭遇タイプ: +SAV_Medals5.L_PinnedMedal=ピン留めメダル: +SAV_Medals5.L_Rank=ランク: +SAV_Medals5.Tab_Habitat=生息地リスト +SAV_Medals5.Tab_Medals=メダル SAV_Misc2.B_Cancel=キャンセル SAV_Misc2.B_Save=保存 SAV_Misc2.B_VirtualConsoleGSBall=GSボールイベント有効化(VC) @@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=キャンセル SAV_Misc5.B_DumpFC=データダンプ SAV_Misc5.B_FunfestMissions=全て解除 SAV_Misc5.B_ImportFC=データをインポート -SAV_Misc5.B_ObtainAllMedals=全てのメダル獲得 SAV_Misc5.B_RandForest=ランダム配置 SAV_Misc5.B_Save=保存 SAV_Misc5.B_UnlockAllProps=全てのグッズ解放 @@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=ダブル SAV_Misc5.CHK_FMNew=NEW SAV_Misc5.CHK_Invisible=不可視 SAV_Misc5.CHK_LibertyPass=リバティチケット 有効化 -SAV_Misc5.CHK_MedalUnread=未読 SAV_Misc5.CHK_MultiFriendsSet=フレンド SAV_Misc5.CHK_MultiNPCSet=NPC SAV_Misc5.CHK_PropObtained=獲得 @@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=ホワイトフォレスト/ブラックシティ SAV_Misc5.TAB_Entralink=ハイリンク SAV_Misc5.TAB_Forest=森 SAV_Misc5.TAB_Main=全般 -SAV_Misc5.TAB_Medals=メダル SAV_Misc5.TAB_Muscial=ミュージカル SAV_Misc5.TAB_Subway=サブウェイ SAV_Misc8b.B_Arceus=アルセウスイベント解禁 diff --git a/PKHeX.WinForms/Resources/text/lang_ko.txt b/PKHeX.WinForms/Resources/text/lang_ko.txt index 7b74c805c..d84f80ebd 100644 --- a/PKHeX.WinForms/Resources/text/lang_ko.txt +++ b/PKHeX.WinForms/Resources/text/lang_ko.txt @@ -39,6 +39,7 @@ SAV_Inventory=인벤토리 편집 도구 SAV_JoinAvenue=조인애버뉴 SAV_Link6=포켓몬 링크 도구 SAV_MailBox=메일박스 편집 도구 +SAV_Medals5=메달 SAV_Misc2=기타 편집 도구 SAV_Misc3=트레이너 데이터 편집 도구 SAV_Misc4=기타 편집 도구 @@ -235,6 +236,13 @@ GearCategory.Hands=Hands GearCategory.Head=Head GearCategory.Shoes=Shoes GearCategory.Top=Top +HabitatCompletion5.Caught=잡음 +HabitatCompletion5.Complete=완료 +HabitatCompletion5.None=없음 +HabitatCompletion5.Seen=봄 +HabitatEncounterType5.Fish=낚시 +HabitatEncounterType5.Grass=풀숲 +HabitatEncounterType5.Surf=파도타기 JoinAvenueCeilingColor5.Blue=파랑 JoinAvenueCeilingColor5.Green=초록 JoinAvenueCeilingColor5.Orange=주황 @@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=꿀바른 나무 Main.B_OpenItemPouch=아이템 Main.B_OpenJoinAvenueEditor=조인애버뉴 Main.B_OpenLinkInfo=링크 데이터 +Main.B_OpenMedalsEditor=메달 Main.B_OpenMiscEditor=기타 편집 Main.B_OpenOPowers=O파워 Main.B_OpenPokeBeans=포켓콩 @@ -661,6 +670,16 @@ Main.Tab_OTMisc=어버이/기타 Main.Tab_PartyBattle=파티 Main.Tab_SAV=세이브 Main.Tab_Stats=능력치 +MedalRank5.Elite=엘리트 메달리스트 +MedalRank5.Legend=레전드 메달리스트 +MedalRank5.Master=마스터 메달리스트 +MedalRank5.None=없음 +MedalRank5.Rookie=루키 메달리스트 +MedalState5.HintObtained=힌트 획득 +MedalState5.HintReady=힌트 가능 +MedalState5.Obtained=획득 완료 +MedalState5.ObtainReady=획득 가능 +MedalState5.Unobtained=미획득 MemoryAmie.B_ClearAll=모두 비우기 MemoryAmie.BTN_Cancel=취소 MemoryAmie.BTN_Save=저장 @@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=이상해씨: SAV_MailBox.L_PKM4=이상해씨: SAV_MailBox.L_PKM5=이상해씨: SAV_MailBox.L_PKM6=이상해씨: +SAV_Medals5.B_Cancel=취소 +SAV_Medals5.B_ExportAll=모두 내보내기 +SAV_Medals5.B_GiveAll=모두 지급 +SAV_Medals5.B_HabitatClear=지우기 +SAV_Medals5.B_HabitatSetComplete=완료로 설정 +SAV_Medals5.B_ImportAll=모두 가져오기 +SAV_Medals5.B_Save=저장 +SAV_Medals5.CHK_HabitatTutorialCompleteCapture=포획 튜토리얼 완료 +SAV_Medals5.CHK_HabitatTutorialViewed=튜토리얼 확인 +SAV_Medals5.CHK_TutorialComplete=튜토리얼 완료 +SAV_Medals5.DGV_HabitatCompleteColumn=완료 +SAV_Medals5.DGV_HabitatFishColumn=낚시 +SAV_Medals5.DGV_HabitatGrassColumn=풀숲 +SAV_Medals5.DGV_HabitatIndexColumn=번호 +SAV_Medals5.DGV_HabitatSurfColumn=파도타기 +SAV_Medals5.DGV_MedalDateColumn=날짜 +SAV_Medals5.DGV_MedalIndexColumn=번호 +SAV_Medals5.DGV_MedalNameColumn=이름 +SAV_Medals5.DGV_MedalStateColumn=상태 +SAV_Medals5.DGV_MedalTypeColumn=타입 +SAV_Medals5.DGV_MedalUnreadColumn=읽지 않음 +SAV_Medals5.L_LastEncounterType=마지막 조우 타입: +SAV_Medals5.L_PinnedMedal=고정 메달: +SAV_Medals5.L_Rank=랭크: +SAV_Medals5.Tab_Habitat=서식지 리스트 +SAV_Medals5.Tab_Medals=메달 SAV_Misc2.B_Cancel=취소 SAV_Misc2.B_Save=저장 SAV_Misc2.B_VirtualConsoleGSBall=GS볼 이벤트 활성화 (버추얼 콘솔) @@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=취소 SAV_Misc5.B_DumpFC=데이터 덤프 SAV_Misc5.B_FunfestMissions=모두 해금 (No.0 제외) SAV_Misc5.B_ImportFC=데이터 가져오기 -SAV_Misc5.B_ObtainAllMedals=모든 메달 획득 SAV_Misc5.B_RandForest=모든 구역 랜덤화 SAV_Misc5.B_Save=저장 SAV_Misc5.B_UnlockAllProps=모든 굿즈 해금 @@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=더블 SAV_Misc5.CHK_FMNew=신규 SAV_Misc5.CHK_Invisible=투명 SAV_Misc5.CHK_LibertyPass=리버티티켓 활성화 -SAV_Misc5.CHK_MedalUnread=미확인 SAV_Misc5.CHK_MultiFriendsSet=친구 SAV_Misc5.CHK_MultiNPCSet=NPC SAV_Misc5.CHK_PropObtained=획득함 @@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=화이트포리스트/블랙시티 SAV_Misc5.TAB_Entralink=하일링크 SAV_Misc5.TAB_Forest=숲 SAV_Misc5.TAB_Main=메인 -SAV_Misc5.TAB_Medals=메달 SAV_Misc5.TAB_Muscial=뮤지컬 SAV_Misc5.TAB_Subway=서브웨이 SAV_Misc8b.B_Arceus=아르세우스 이벤트 해제 diff --git a/PKHeX.WinForms/Resources/text/lang_zh-Hans.txt b/PKHeX.WinForms/Resources/text/lang_zh-Hans.txt index eefbca4bf..714bfee3c 100644 --- a/PKHeX.WinForms/Resources/text/lang_zh-Hans.txt +++ b/PKHeX.WinForms/Resources/text/lang_zh-Hans.txt @@ -39,6 +39,7 @@ SAV_Inventory=物品栏 SAV_JoinAvenue=汇合大道 SAV_Link6=宝可梦连接工具 SAV_MailBox=邮箱编辑 +SAV_Medals5=奖牌 SAV_Misc2=杂项编辑 SAV_Misc3=训练家数据编辑 SAV_Misc4=杂项编辑 @@ -235,6 +236,13 @@ GearCategory.Hands=手部 GearCategory.Head=头部 GearCategory.Shoes=鞋子 GearCategory.Top=上装 +HabitatCompletion5.Caught=已捕获 +HabitatCompletion5.Complete=完成 +HabitatCompletion5.None=无 +HabitatCompletion5.Seen=已见 +HabitatEncounterType5.Fish=垂钓 +HabitatEncounterType5.Grass=草丛 +HabitatEncounterType5.Surf=冲浪 JoinAvenueCeilingColor5.Blue=蓝色 JoinAvenueCeilingColor5.Green=绿色 JoinAvenueCeilingColor5.Orange=橙色 @@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=甜甜蜜树 Main.B_OpenItemPouch=道具 Main.B_OpenJoinAvenueEditor=汇合大道 Main.B_OpenLinkInfo=宝可梦连接 +Main.B_OpenMedalsEditor=奖牌 Main.B_OpenMiscEditor=杂项编辑 Main.B_OpenOPowers=O-力量 Main.B_OpenPokeBeans=宝可豆 @@ -661,6 +670,16 @@ Main.Tab_OTMisc=初训家/杂项 Main.Tab_PartyBattle=同行 Main.Tab_SAV=存档 Main.Tab_Stats=数值 +MedalRank5.Elite=精英 +MedalRank5.Legend=传说 +MedalRank5.Master=大师 +MedalRank5.None=无 +MedalRank5.Rookie=新秀 +MedalState5.HintObtained=已获提示 +MedalState5.HintReady=可获提示 +MedalState5.Obtained=已获得 +MedalState5.ObtainReady=可获得 +MedalState5.Unobtained=未获得 MemoryAmie.B_ClearAll=清空 MemoryAmie.BTN_Cancel=取消 MemoryAmie.BTN_Save=保存 @@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=妙蛙种子: SAV_MailBox.L_PKM4=妙蛙种子: SAV_MailBox.L_PKM5=妙蛙种子: SAV_MailBox.L_PKM6=妙蛙种子: +SAV_Medals5.B_Cancel=取消 +SAV_Medals5.B_ExportAll=全部导出 +SAV_Medals5.B_GiveAll=全部给予 +SAV_Medals5.B_HabitatClear=清除 +SAV_Medals5.B_HabitatSetComplete=设为完成 +SAV_Medals5.B_ImportAll=全部导入 +SAV_Medals5.B_Save=保存 +SAV_Medals5.CHK_HabitatTutorialCompleteCapture=捕获教程完成 +SAV_Medals5.CHK_HabitatTutorialViewed=已查看教程 +SAV_Medals5.CHK_TutorialComplete=教程完成 +SAV_Medals5.DGV_HabitatCompleteColumn=完成 +SAV_Medals5.DGV_HabitatFishColumn=垂钓 +SAV_Medals5.DGV_HabitatGrassColumn=草丛 +SAV_Medals5.DGV_HabitatIndexColumn=编号 +SAV_Medals5.DGV_HabitatSurfColumn=冲浪 +SAV_Medals5.DGV_MedalDateColumn=日期 +SAV_Medals5.DGV_MedalIndexColumn=编号 +SAV_Medals5.DGV_MedalNameColumn=名称 +SAV_Medals5.DGV_MedalStateColumn=状态 +SAV_Medals5.DGV_MedalTypeColumn=类型 +SAV_Medals5.DGV_MedalUnreadColumn=未读 +SAV_Medals5.L_LastEncounterType=上次遭遇类型: +SAV_Medals5.L_PinnedMedal=置顶奖牌: +SAV_Medals5.L_Rank=等级: +SAV_Medals5.Tab_Habitat=栖息地列表 +SAV_Medals5.Tab_Medals=奖牌 SAV_Misc2.B_Cancel=取消 SAV_Misc2.B_Save=保存 SAV_Misc2.B_VirtualConsoleGSBall=启用GS球事件(虚拟主机) @@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=取消 SAV_Misc5.B_DumpFC=导出数据 SAV_Misc5.B_FunfestMissions=解锁所有 (除了 No.0) SAV_Misc5.B_ImportFC=导入数据 -SAV_Misc5.B_ObtainAllMedals=获得所有奖章 SAV_Misc5.B_RandForest=随机所有区域 SAV_Misc5.B_Save=保存 SAV_Misc5.B_UnlockAllProps=解锁所有道具 @@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=双打 SAV_Misc5.CHK_FMNew=新纪录 SAV_Misc5.CHK_Invisible=隐性 SAV_Misc5.CHK_LibertyPass=激活自由船票 -SAV_Misc5.CHK_MedalUnread=未读 SAV_Misc5.CHK_MultiFriendsSet=朋友 SAV_Misc5.CHK_MultiNPCSet=NPC SAV_Misc5.CHK_PropObtained=获得 @@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=白森林/黑色市 SAV_Misc5.TAB_Entralink=连入 SAV_Misc5.TAB_Forest=森林 SAV_Misc5.TAB_Main=主界面 -SAV_Misc5.TAB_Medals=奖章 SAV_Misc5.TAB_Muscial=音乐剧 SAV_Misc5.TAB_Subway=地铁 SAV_Misc8b.B_Arceus=解锁阿尔宙斯事件 diff --git a/PKHeX.WinForms/Resources/text/lang_zh-Hant.txt b/PKHeX.WinForms/Resources/text/lang_zh-Hant.txt index 029874bea..f80d99fe0 100644 --- a/PKHeX.WinForms/Resources/text/lang_zh-Hant.txt +++ b/PKHeX.WinForms/Resources/text/lang_zh-Hant.txt @@ -39,6 +39,7 @@ SAV_Inventory=物品欄 SAV_JoinAvenue=匯合大道 SAV_Link6=寶可夢連接工具 SAV_MailBox=郵箱編輯 +SAV_Medals5=獎牌 SAV_Misc2=訓練家資料雜項編輯 SAV_Misc3=訓練家資料雜項編輯 SAV_Misc4=訓練家資料雜項編輯 @@ -235,6 +236,13 @@ GearCategory.Hands=手部 GearCategory.Head=頭部 GearCategory.Shoes=鞋子 GearCategory.Top=上裝 +HabitatCompletion5.Caught=已捕獲 +HabitatCompletion5.Complete=完成 +HabitatCompletion5.None=無 +HabitatCompletion5.Seen=已見 +HabitatEncounterType5.Fish=垂釣 +HabitatEncounterType5.Grass=草叢 +HabitatEncounterType5.Surf=衝浪 JoinAvenueCeilingColor5.Blue=藍色 JoinAvenueCeilingColor5.Green=綠色 JoinAvenueCeilingColor5.Orange=橙色 @@ -418,6 +426,7 @@ Main.B_OpenHoneyTreeEditor=甜甜蜜樹 Main.B_OpenItemPouch=道具 Main.B_OpenJoinAvenueEditor=匯合大道 Main.B_OpenLinkInfo=寶可夢連接 +Main.B_OpenMedalsEditor=獎牌 Main.B_OpenMiscEditor=雜項編輯 Main.B_OpenOPowers=O-力量 Main.B_OpenPokeBeans=寶可豆 @@ -661,6 +670,16 @@ Main.Tab_OTMisc=初訓家/雜項 Main.Tab_PartyBattle=同行 Main.Tab_SAV=存檔 Main.Tab_Stats=數值 +MedalRank5.Elite=精英 +MedalRank5.Legend=傳說 +MedalRank5.Master=大師 +MedalRank5.None=無 +MedalRank5.Rookie=新秀 +MedalState5.HintObtained=已獲提示 +MedalState5.HintReady=可獲提示 +MedalState5.Obtained=已獲得 +MedalState5.ObtainReady=可獲得 +MedalState5.Unobtained=未獲得 MemoryAmie.B_ClearAll=清空 MemoryAmie.BTN_Cancel=取消 MemoryAmie.BTN_Save=儲存 @@ -1500,6 +1519,32 @@ SAV_MailBox.L_PKM3=妙蛙種子: SAV_MailBox.L_PKM4=妙蛙種子: SAV_MailBox.L_PKM5=妙蛙種子: SAV_MailBox.L_PKM6=妙蛙種子: +SAV_Medals5.B_Cancel=取消 +SAV_Medals5.B_ExportAll=全部匯出 +SAV_Medals5.B_GiveAll=全部給予 +SAV_Medals5.B_HabitatClear=清除 +SAV_Medals5.B_HabitatSetComplete=設為完成 +SAV_Medals5.B_ImportAll=全部匯入 +SAV_Medals5.B_Save=儲存 +SAV_Medals5.CHK_HabitatTutorialCompleteCapture=捕獲教學完成 +SAV_Medals5.CHK_HabitatTutorialViewed=已檢視教學 +SAV_Medals5.CHK_TutorialComplete=教學完成 +SAV_Medals5.DGV_HabitatCompleteColumn=完成 +SAV_Medals5.DGV_HabitatFishColumn=垂釣 +SAV_Medals5.DGV_HabitatGrassColumn=草叢 +SAV_Medals5.DGV_HabitatIndexColumn=編號 +SAV_Medals5.DGV_HabitatSurfColumn=衝浪 +SAV_Medals5.DGV_MedalDateColumn=日期 +SAV_Medals5.DGV_MedalIndexColumn=編號 +SAV_Medals5.DGV_MedalNameColumn=名稱 +SAV_Medals5.DGV_MedalStateColumn=狀態 +SAV_Medals5.DGV_MedalTypeColumn=類型 +SAV_Medals5.DGV_MedalUnreadColumn=未讀 +SAV_Medals5.L_LastEncounterType=上次遭遇類型: +SAV_Medals5.L_PinnedMedal=置頂獎牌: +SAV_Medals5.L_Rank=等級: +SAV_Medals5.Tab_Habitat=棲息地列表 +SAV_Medals5.Tab_Medals=獎牌 SAV_Misc2.B_Cancel=取消 SAV_Misc2.B_Save=保存 SAV_Misc2.B_VirtualConsoleGSBall=啟用GS球事件(虛擬主機) @@ -1653,7 +1698,6 @@ SAV_Misc5.B_Cancel=取消 SAV_Misc5.B_DumpFC=導出資料 SAV_Misc5.B_FunfestMissions=解鎖所有 (除了 No.0) SAV_Misc5.B_ImportFC=導入資料 -SAV_Misc5.B_ObtainAllMedals=獲得所有獎章 SAV_Misc5.B_RandForest=隨機所有區域 SAV_Misc5.B_Save=儲存 SAV_Misc5.B_UnlockAllProps=解鎖全部音樂物品 @@ -1662,7 +1706,6 @@ SAV_Misc5.CHK_DoubleSet=雙打 SAV_Misc5.CHK_FMNew=新紀錄 SAV_Misc5.CHK_Invisible=隱性 SAV_Misc5.CHK_LibertyPass=啟動自由船票 -SAV_Misc5.CHK_MedalUnread=未讀 SAV_Misc5.CHK_MultiFriendsSet=朋友 SAV_Misc5.CHK_MultiNPCSet=NPC SAV_Misc5.CHK_PropObtained=獲得 @@ -1743,7 +1786,6 @@ SAV_Misc5.TAB_BWCityForest=白森林/黑色市 SAV_Misc5.TAB_Entralink=連入 SAV_Misc5.TAB_Forest=森林 SAV_Misc5.TAB_Main=主介面 -SAV_Misc5.TAB_Medals=獎章 SAV_Misc5.TAB_Muscial=音樂劇 SAV_Misc5.TAB_Subway=地鐵 SAV_Misc8b.B_Arceus=解鎖阿爾宙斯事件 diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen5/Join Avenue/SAV_JoinAvenue.Designer.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen5/Join Avenue/SAV_JoinAvenue.Designer.cs index 78d8f171c..057905141 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen5/Join Avenue/SAV_JoinAvenue.Designer.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen5/Join Avenue/SAV_JoinAvenue.Designer.cs @@ -120,7 +120,7 @@ private void InitializeComponent() CHK_ScriptFlag.AutoSize = true; CHK_ScriptFlag.Location = new System.Drawing.Point(97, 11); CHK_ScriptFlag.Name = "CHK_ScriptFlag"; - CHK_ScriptFlag.Size = new System.Drawing.Size(74, 21); + CHK_ScriptFlag.Size = new System.Drawing.Size(88, 21); CHK_ScriptFlag.TabIndex = 1; CHK_ScriptFlag.Text = "Script Flag"; CHK_ScriptFlag.UseVisualStyleBackColor = true; @@ -331,6 +331,7 @@ private void InitializeComponent() Controls.Add(B_Cancel); Controls.Add(TC_JoinAvenue); Icon = Properties.Resources.Icon; + MaximizeBox = false; MinimumSize = new System.Drawing.Size(980, 764); Name = "SAV_JoinAvenue"; StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Medals5.Designer.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Medals5.Designer.cs new file mode 100644 index 000000000..9ecc848c1 --- /dev/null +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Medals5.Designer.cs @@ -0,0 +1,639 @@ +namespace PKHeX.WinForms +{ + partial class SAV_Medals5 + { + private System.ComponentModel.IContainer components = null; + + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + components.Dispose(); + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + private void InitializeComponent() + { + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); + TC_Main = new System.Windows.Forms.TabControl(); + Tab_Medals = new System.Windows.Forms.TabPage(); + DGV_Medals = new PKHeX.WinForms.Controls.DoubleBufferedDataGridView(); + MedalIndexColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + MedalNameColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + MedalTypeColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + MedalStateColumn = new System.Windows.Forms.DataGridViewComboBoxColumn(); + MedalUnreadColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + MedalDateColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + MedalSettingsPanel = new System.Windows.Forms.TableLayoutPanel(); + L_PinnedMedal = new System.Windows.Forms.Label(); + CB_PinnedMedal = new System.Windows.Forms.ComboBox(); + L_Rank = new System.Windows.Forms.Label(); + CB_Rank = new System.Windows.Forms.ComboBox(); + CHK_TutorialComplete = new System.Windows.Forms.CheckBox(); + MedalButtonPanel = new System.Windows.Forms.FlowLayoutPanel(); + B_ExportAll = new System.Windows.Forms.Button(); + B_ImportAll = new System.Windows.Forms.Button(); + B_GiveAll = new System.Windows.Forms.Button(); + Tab_Habitat = new System.Windows.Forms.TabPage(); + DGV_Habitat = new PKHeX.WinForms.Controls.DoubleBufferedDataGridView(); + HabitatIndexColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + HabitatCompleteColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + HabitatGrassColumn = new System.Windows.Forms.DataGridViewComboBoxColumn(); + HabitatSurfColumn = new System.Windows.Forms.DataGridViewComboBoxColumn(); + HabitatFishColumn = new System.Windows.Forms.DataGridViewComboBoxColumn(); + HabitatBottomPanel = new System.Windows.Forms.TableLayoutPanel(); + FLP_HabitatActions = new System.Windows.Forms.FlowLayoutPanel(); + B_HabitatClear = new System.Windows.Forms.Button(); + B_HabitatSetComplete = new System.Windows.Forms.Button(); + CHK_HabitatTutorialViewed = new System.Windows.Forms.CheckBox(); + CHK_HabitatTutorialCompleteCapture = new System.Windows.Forms.CheckBox(); + L_Unknown90 = new System.Windows.Forms.Label(); + NUD_Unknown90 = new System.Windows.Forms.NumericUpDown(); + L_Unknown92 = new System.Windows.Forms.Label(); + NUD_Unknown92 = new System.Windows.Forms.NumericUpDown(); + L_LastEncounterType = new System.Windows.Forms.Label(); + CB_LastEncounterType = new System.Windows.Forms.ComboBox(); + ButtonPanel = new System.Windows.Forms.FlowLayoutPanel(); + B_Save = new System.Windows.Forms.Button(); + B_Cancel = new System.Windows.Forms.Button(); + TC_Main.SuspendLayout(); + Tab_Medals.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)DGV_Medals).BeginInit(); + MedalSettingsPanel.SuspendLayout(); + MedalButtonPanel.SuspendLayout(); + Tab_Habitat.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)DGV_Habitat).BeginInit(); + HabitatBottomPanel.SuspendLayout(); + FLP_HabitatActions.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)NUD_Unknown90).BeginInit(); + ((System.ComponentModel.ISupportInitialize)NUD_Unknown92).BeginInit(); + ButtonPanel.SuspendLayout(); + SuspendLayout(); + // + // TC_Main + // + TC_Main.Controls.Add(Tab_Medals); + TC_Main.Controls.Add(Tab_Habitat); + TC_Main.Dock = System.Windows.Forms.DockStyle.Fill; + TC_Main.Location = new System.Drawing.Point(0, 0); + TC_Main.Name = "TC_Main"; + TC_Main.SelectedIndex = 0; + TC_Main.Size = new System.Drawing.Size(984, 522); + TC_Main.TabIndex = 0; + // + // Tab_Medals + // + Tab_Medals.Controls.Add(DGV_Medals); + Tab_Medals.Controls.Add(MedalSettingsPanel); + Tab_Medals.Controls.Add(MedalButtonPanel); + Tab_Medals.Location = new System.Drawing.Point(4, 26); + Tab_Medals.Name = "Tab_Medals"; + Tab_Medals.Padding = new System.Windows.Forms.Padding(3); + Tab_Medals.Size = new System.Drawing.Size(976, 492); + Tab_Medals.TabIndex = 0; + Tab_Medals.Text = "Medals"; + Tab_Medals.UseVisualStyleBackColor = true; + // + // DGV_Medals + // + DGV_Medals.AllowUserToAddRows = false; + DGV_Medals.AllowUserToDeleteRows = false; + DGV_Medals.AllowUserToResizeRows = false; + dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.ControlLight; + DGV_Medals.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle5; + DGV_Medals.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; + DGV_Medals.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + DGV_Medals.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { MedalIndexColumn, MedalNameColumn, MedalTypeColumn, MedalStateColumn, MedalUnreadColumn, MedalDateColumn }); + DGV_Medals.Dock = System.Windows.Forms.DockStyle.Fill; + DGV_Medals.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnEnter; + DGV_Medals.Location = new System.Drawing.Point(3, 3); + DGV_Medals.MultiSelect = false; + DGV_Medals.Name = "DGV_Medals"; + DGV_Medals.RowHeadersVisible = false; + DGV_Medals.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.CellSelect; + DGV_Medals.Size = new System.Drawing.Size(970, 363); + DGV_Medals.TabIndex = 0; + DGV_Medals.CellBeginEdit += DGV_Medals_CellBeginEdit; + DGV_Medals.CellValueChanged += DGV_Medals_CellValueChanged; + DGV_Medals.CellParsing += DGV_Medals_CellParsing; + DGV_Medals.CellValidating += DGV_Medals_CellValidating; + DGV_Medals.CurrentCellDirtyStateChanged += DGV_Medals_CurrentCellDirtyStateChanged; + DGV_Medals.DataError += DGV_Medals_DataError; + DGV_Medals.EditingControlShowing += DGV_Medals_EditingControlShowing; + // + // MedalIndexColumn + // + MedalIndexColumn.FillWeight = 60F; + MedalIndexColumn.HeaderText = "Index"; + MedalIndexColumn.Name = "MedalIndexColumn"; + MedalIndexColumn.ReadOnly = true; + MedalIndexColumn.ValueType = typeof(int); + // + // MedalNameColumn + // + MedalNameColumn.FillWeight = 220F; + MedalNameColumn.HeaderText = "Name"; + MedalNameColumn.Name = "MedalNameColumn"; + MedalNameColumn.ReadOnly = true; + // + // MedalTypeColumn + // + MedalTypeColumn.FillWeight = 120F; + MedalTypeColumn.HeaderText = "Type"; + MedalTypeColumn.Name = "MedalTypeColumn"; + MedalTypeColumn.ReadOnly = true; + // + // MedalStateColumn + // + MedalStateColumn.FillWeight = 170F; + MedalStateColumn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + MedalStateColumn.HeaderText = "State"; + MedalStateColumn.Name = "MedalStateColumn"; + MedalStateColumn.DisplayStyle = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.Nothing; + MedalStateColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True; + MedalStateColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + // + // MedalUnreadColumn + // + MedalUnreadColumn.FillWeight = 90F; + MedalUnreadColumn.HeaderText = "IsUnread"; + MedalUnreadColumn.Name = "MedalUnreadColumn"; + // + // MedalDateColumn + // + MedalDateColumn.FillWeight = 120F; + MedalDateColumn.HeaderText = "Date"; + MedalDateColumn.Name = "MedalDateColumn"; + // + // MedalSettingsPanel + // + MedalSettingsPanel.AutoSize = true; + MedalSettingsPanel.ColumnCount = 4; + MedalSettingsPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + MedalSettingsPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + MedalSettingsPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + MedalSettingsPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + MedalSettingsPanel.Controls.Add(L_PinnedMedal, 0, 0); + MedalSettingsPanel.Controls.Add(CB_PinnedMedal, 1, 0); + MedalSettingsPanel.Controls.Add(L_Rank, 2, 0); + MedalSettingsPanel.Controls.Add(CB_Rank, 3, 0); + MedalSettingsPanel.Controls.Add(CHK_TutorialComplete, 0, 1); + MedalSettingsPanel.Dock = System.Windows.Forms.DockStyle.Bottom; + MedalSettingsPanel.Location = new System.Drawing.Point(3, 366); + MedalSettingsPanel.Name = "MedalSettingsPanel"; + MedalSettingsPanel.Padding = new System.Windows.Forms.Padding(8); + MedalSettingsPanel.RowCount = 2; + MedalSettingsPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); + MedalSettingsPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); + MedalSettingsPanel.Size = new System.Drawing.Size(970, 74); + MedalSettingsPanel.TabIndex = 2; + // + // L_PinnedMedal + // + L_PinnedMedal.Anchor = System.Windows.Forms.AnchorStyles.Right; + L_PinnedMedal.AutoSize = true; + L_PinnedMedal.Location = new System.Drawing.Point(11, 15); + L_PinnedMedal.Name = "L_PinnedMedal"; + L_PinnedMedal.Size = new System.Drawing.Size(91, 17); + L_PinnedMedal.TabIndex = 0; + L_PinnedMedal.Text = "Pinned Medal:"; + // + // CB_PinnedMedal + // + CB_PinnedMedal.Anchor = System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + CB_PinnedMedal.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + CB_PinnedMedal.FormattingEnabled = true; + CB_PinnedMedal.Location = new System.Drawing.Point(108, 11); + CB_PinnedMedal.Name = "CB_PinnedMedal"; + CB_PinnedMedal.Size = new System.Drawing.Size(400, 25); + CB_PinnedMedal.TabIndex = 1; + // + // L_Rank + // + L_Rank.Anchor = System.Windows.Forms.AnchorStyles.Right; + L_Rank.AutoSize = true; + L_Rank.Location = new System.Drawing.Point(514, 15); + L_Rank.Name = "L_Rank"; + L_Rank.Size = new System.Drawing.Size(39, 17); + L_Rank.TabIndex = 2; + L_Rank.Text = "Rank:"; + L_Rank.Click += L_Rank_Click; + // + // CB_Rank + // + CB_Rank.Anchor = System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right; + CB_Rank.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + CB_Rank.FormattingEnabled = true; + CB_Rank.Location = new System.Drawing.Point(559, 11); + CB_Rank.Name = "CB_Rank"; + CB_Rank.Size = new System.Drawing.Size(400, 25); + CB_Rank.TabIndex = 3; + // + // CHK_TutorialComplete + // + CHK_TutorialComplete.Anchor = System.Windows.Forms.AnchorStyles.Left; + CHK_TutorialComplete.AutoSize = true; + MedalSettingsPanel.SetColumnSpan(CHK_TutorialComplete, 2); + CHK_TutorialComplete.Location = new System.Drawing.Point(11, 42); + CHK_TutorialComplete.Name = "CHK_TutorialComplete"; + CHK_TutorialComplete.Size = new System.Drawing.Size(131, 21); + CHK_TutorialComplete.TabIndex = 4; + CHK_TutorialComplete.Text = "Tutorial Complete"; + CHK_TutorialComplete.UseVisualStyleBackColor = true; + // + // MedalButtonPanel + // + MedalButtonPanel.AutoSize = true; + MedalButtonPanel.Controls.Add(B_ExportAll); + MedalButtonPanel.Controls.Add(B_ImportAll); + MedalButtonPanel.Controls.Add(B_GiveAll); + MedalButtonPanel.Dock = System.Windows.Forms.DockStyle.Bottom; + MedalButtonPanel.FlowDirection = System.Windows.Forms.FlowDirection.RightToLeft; + MedalButtonPanel.Location = new System.Drawing.Point(3, 440); + MedalButtonPanel.Name = "MedalButtonPanel"; + MedalButtonPanel.Padding = new System.Windows.Forms.Padding(8); + MedalButtonPanel.RightToLeft = System.Windows.Forms.RightToLeft.Yes; + MedalButtonPanel.Size = new System.Drawing.Size(970, 49); + MedalButtonPanel.TabIndex = 1; + MedalButtonPanel.WrapContents = false; + // + // B_ExportAll + // + B_ExportAll.AutoSize = true; + B_ExportAll.Location = new System.Drawing.Point(11, 11); + B_ExportAll.Name = "B_ExportAll"; + B_ExportAll.Size = new System.Drawing.Size(77, 27); + B_ExportAll.TabIndex = 0; + B_ExportAll.Text = "Export All"; + B_ExportAll.UseVisualStyleBackColor = true; + B_ExportAll.Click += B_ExportAll_Click; + // + // B_ImportAll + // + B_ImportAll.AutoSize = true; + B_ImportAll.Location = new System.Drawing.Point(94, 11); + B_ImportAll.Name = "B_ImportAll"; + B_ImportAll.Size = new System.Drawing.Size(77, 27); + B_ImportAll.TabIndex = 1; + B_ImportAll.Text = "Import All"; + B_ImportAll.UseVisualStyleBackColor = true; + B_ImportAll.Click += B_ImportAll_Click; + // + // B_GiveAll + // + B_GiveAll.AutoSize = true; + B_GiveAll.Location = new System.Drawing.Point(177, 11); + B_GiveAll.Name = "B_GiveAll"; + B_GiveAll.Size = new System.Drawing.Size(65, 27); + B_GiveAll.TabIndex = 2; + B_GiveAll.Text = "Give All"; + B_GiveAll.UseVisualStyleBackColor = true; + B_GiveAll.Click += B_GiveAll_Click; + // + // Tab_Habitat + // + Tab_Habitat.Controls.Add(DGV_Habitat); + Tab_Habitat.Controls.Add(HabitatBottomPanel); + Tab_Habitat.Location = new System.Drawing.Point(4, 26); + Tab_Habitat.Name = "Tab_Habitat"; + Tab_Habitat.Padding = new System.Windows.Forms.Padding(3); + Tab_Habitat.Size = new System.Drawing.Size(976, 492); + Tab_Habitat.TabIndex = 1; + Tab_Habitat.Text = "Habitat"; + Tab_Habitat.UseVisualStyleBackColor = true; + // + // DGV_Habitat + // + DGV_Habitat.AllowUserToAddRows = false; + DGV_Habitat.AllowUserToDeleteRows = false; + DGV_Habitat.AllowUserToResizeRows = false; + dataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.ControlLight; + DGV_Habitat.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle6; + DGV_Habitat.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; + DGV_Habitat.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + DGV_Habitat.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { HabitatIndexColumn, HabitatCompleteColumn, HabitatGrassColumn, HabitatSurfColumn, HabitatFishColumn }); + DGV_Habitat.Dock = System.Windows.Forms.DockStyle.Fill; + DGV_Habitat.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnEnter; + DGV_Habitat.Location = new System.Drawing.Point(3, 3); + DGV_Habitat.Name = "DGV_Habitat"; + DGV_Habitat.RowHeadersVisible = false; + DGV_Habitat.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + DGV_Habitat.Size = new System.Drawing.Size(970, 381); + DGV_Habitat.TabIndex = 0; + DGV_Habitat.CellValueChanged += DGV_Habitat_CellValueChanged; + DGV_Habitat.CurrentCellDirtyStateChanged += DGV_Habitat_CurrentCellDirtyStateChanged; + DGV_Habitat.DataError += DGV_Habitat_DataError; + DGV_Habitat.EditingControlShowing += DGV_Habitat_EditingControlShowing; + // + // HabitatIndexColumn + // + HabitatIndexColumn.FillWeight = 70F; + HabitatIndexColumn.HeaderText = "Index"; + HabitatIndexColumn.Name = "HabitatIndexColumn"; + HabitatIndexColumn.ReadOnly = true; + HabitatIndexColumn.ValueType = typeof(int); + // + // HabitatCompleteColumn + // + HabitatCompleteColumn.FillWeight = 90F; + HabitatCompleteColumn.HeaderText = "Complete"; + HabitatCompleteColumn.Name = "HabitatCompleteColumn"; + // + // HabitatGrassColumn + // + HabitatGrassColumn.FillWeight = 120F; + HabitatGrassColumn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + HabitatGrassColumn.HeaderText = "Grass"; + HabitatGrassColumn.Name = "HabitatGrassColumn"; + HabitatGrassColumn.DisplayStyle = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.Nothing; + HabitatGrassColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True; + HabitatGrassColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + // + // HabitatSurfColumn + // + HabitatSurfColumn.FillWeight = 120F; + HabitatSurfColumn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + HabitatSurfColumn.HeaderText = "Surf"; + HabitatSurfColumn.Name = "HabitatSurfColumn"; + HabitatSurfColumn.DisplayStyle = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.Nothing; + HabitatSurfColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True; + HabitatSurfColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + // + // HabitatFishColumn + // + HabitatFishColumn.FillWeight = 120F; + HabitatFishColumn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + HabitatFishColumn.HeaderText = "Fish"; + HabitatFishColumn.Name = "HabitatFishColumn"; + HabitatFishColumn.DisplayStyle = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.Nothing; + HabitatFishColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True; + HabitatFishColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + // + // HabitatBottomPanel + // + HabitatBottomPanel.AutoSize = true; + HabitatBottomPanel.ColumnCount = 6; + HabitatBottomPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + HabitatBottomPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + HabitatBottomPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + HabitatBottomPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + HabitatBottomPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + HabitatBottomPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + HabitatBottomPanel.Controls.Add(FLP_HabitatActions, 5, 0); + HabitatBottomPanel.Controls.Add(CHK_HabitatTutorialViewed, 0, 0); + HabitatBottomPanel.Controls.Add(CHK_HabitatTutorialCompleteCapture, 1, 0); + HabitatBottomPanel.Controls.Add(L_Unknown90, 0, 1); + HabitatBottomPanel.Controls.Add(NUD_Unknown90, 1, 1); + HabitatBottomPanel.Controls.Add(L_Unknown92, 2, 1); + HabitatBottomPanel.Controls.Add(NUD_Unknown92, 3, 1); + HabitatBottomPanel.Controls.Add(L_LastEncounterType, 0, 2); + HabitatBottomPanel.Controls.Add(CB_LastEncounterType, 1, 2); + HabitatBottomPanel.Dock = System.Windows.Forms.DockStyle.Bottom; + HabitatBottomPanel.Location = new System.Drawing.Point(3, 384); + HabitatBottomPanel.Name = "HabitatBottomPanel"; + HabitatBottomPanel.Padding = new System.Windows.Forms.Padding(8); + HabitatBottomPanel.RowCount = 3; + HabitatBottomPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); + HabitatBottomPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); + HabitatBottomPanel.RowStyles.Add(new System.Windows.Forms.RowStyle()); + HabitatBottomPanel.Size = new System.Drawing.Size(970, 105); + HabitatBottomPanel.TabIndex = 1; + // + // FLP_HabitatActions + // + FLP_HabitatActions.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right; + FLP_HabitatActions.AutoSize = true; + FLP_HabitatActions.Controls.Add(B_HabitatClear); + FLP_HabitatActions.Controls.Add(B_HabitatSetComplete); + FLP_HabitatActions.FlowDirection = System.Windows.Forms.FlowDirection.RightToLeft; + FLP_HabitatActions.Location = new System.Drawing.Point(810, 8); + FLP_HabitatActions.Margin = new System.Windows.Forms.Padding(0); + FLP_HabitatActions.Name = "FLP_HabitatActions"; + HabitatBottomPanel.SetRowSpan(FLP_HabitatActions, 3); + FLP_HabitatActions.Size = new System.Drawing.Size(152, 27); + FLP_HabitatActions.TabIndex = 8; + FLP_HabitatActions.WrapContents = false; + // + // B_HabitatClear + // + B_HabitatClear.AutoSize = true; + B_HabitatClear.Location = new System.Drawing.Point(104, 0); + B_HabitatClear.Margin = new System.Windows.Forms.Padding(0); + B_HabitatClear.Name = "B_HabitatClear"; + B_HabitatClear.Size = new System.Drawing.Size(48, 27); + B_HabitatClear.TabIndex = 0; + B_HabitatClear.Text = "Clear"; + B_HabitatClear.UseVisualStyleBackColor = true; + B_HabitatClear.Click += B_HabitatClear_Click; + // + // B_HabitatSetComplete + // + B_HabitatSetComplete.AutoSize = true; + B_HabitatSetComplete.Location = new System.Drawing.Point(0, 0); + B_HabitatSetComplete.Margin = new System.Windows.Forms.Padding(0, 0, 8, 0); + B_HabitatSetComplete.Name = "B_HabitatSetComplete"; + B_HabitatSetComplete.Size = new System.Drawing.Size(96, 27); + B_HabitatSetComplete.TabIndex = 1; + B_HabitatSetComplete.Text = "Set Complete"; + B_HabitatSetComplete.UseVisualStyleBackColor = true; + B_HabitatSetComplete.Click += B_HabitatSetComplete_Click; + // + // CHK_HabitatTutorialViewed + // + CHK_HabitatTutorialViewed.Anchor = System.Windows.Forms.AnchorStyles.Left; + CHK_HabitatTutorialViewed.AutoSize = true; + CHK_HabitatTutorialViewed.Location = new System.Drawing.Point(11, 11); + CHK_HabitatTutorialViewed.Name = "CHK_HabitatTutorialViewed"; + CHK_HabitatTutorialViewed.Size = new System.Drawing.Size(117, 21); + CHK_HabitatTutorialViewed.TabIndex = 0; + CHK_HabitatTutorialViewed.Text = "Tutorial Viewed"; + CHK_HabitatTutorialViewed.UseVisualStyleBackColor = true; + // + // CHK_HabitatTutorialCompleteCapture + // + CHK_HabitatTutorialCompleteCapture.Anchor = System.Windows.Forms.AnchorStyles.Left; + CHK_HabitatTutorialCompleteCapture.AutoSize = true; + HabitatBottomPanel.SetColumnSpan(CHK_HabitatTutorialCompleteCapture, 2); + CHK_HabitatTutorialCompleteCapture.Location = new System.Drawing.Point(144, 11); + CHK_HabitatTutorialCompleteCapture.Name = "CHK_HabitatTutorialCompleteCapture"; + CHK_HabitatTutorialCompleteCapture.Size = new System.Drawing.Size(156, 21); + CHK_HabitatTutorialCompleteCapture.TabIndex = 1; + CHK_HabitatTutorialCompleteCapture.Text = "Tutorial Capture Done"; + CHK_HabitatTutorialCompleteCapture.UseVisualStyleBackColor = true; + // + // L_Unknown90 + // + L_Unknown90.Anchor = System.Windows.Forms.AnchorStyles.Right; + L_Unknown90.AutoSize = true; + L_Unknown90.Location = new System.Drawing.Point(60, 42); + L_Unknown90.Name = "L_Unknown90"; + L_Unknown90.Size = new System.Drawing.Size(78, 17); + L_Unknown90.TabIndex = 2; + L_Unknown90.Text = "Unknown90:"; + // + // NUD_Unknown90 + // + NUD_Unknown90.Location = new System.Drawing.Point(144, 38); + NUD_Unknown90.Maximum = new decimal(new int[] { 65535, 0, 0, 0 }); + NUD_Unknown90.Name = "NUD_Unknown90"; + NUD_Unknown90.Size = new System.Drawing.Size(64, 25); + NUD_Unknown90.TabIndex = 3; + // + // L_Unknown92 + // + L_Unknown92.Anchor = System.Windows.Forms.AnchorStyles.Right; + L_Unknown92.AutoSize = true; + L_Unknown92.Location = new System.Drawing.Point(246, 42); + L_Unknown92.Name = "L_Unknown92"; + L_Unknown92.Size = new System.Drawing.Size(78, 17); + L_Unknown92.TabIndex = 4; + L_Unknown92.Text = "Unknown92:"; + // + // NUD_Unknown92 + // + NUD_Unknown92.Location = new System.Drawing.Point(330, 38); + NUD_Unknown92.Maximum = new decimal(new int[] { 255, 0, 0, 0 }); + NUD_Unknown92.Name = "NUD_Unknown92"; + NUD_Unknown92.Size = new System.Drawing.Size(48, 25); + NUD_Unknown92.TabIndex = 5; + // + // L_LastEncounterType + // + L_LastEncounterType.Anchor = System.Windows.Forms.AnchorStyles.Right; + L_LastEncounterType.AutoSize = true; + L_LastEncounterType.Location = new System.Drawing.Point(11, 73); + L_LastEncounterType.Name = "L_LastEncounterType"; + L_LastEncounterType.Size = new System.Drawing.Size(127, 17); + L_LastEncounterType.TabIndex = 6; + L_LastEncounterType.Text = "Last Encounter Type:"; + // + // CB_LastEncounterType + // + CB_LastEncounterType.Anchor = System.Windows.Forms.AnchorStyles.Left; + HabitatBottomPanel.SetColumnSpan(CB_LastEncounterType, 2); + CB_LastEncounterType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + CB_LastEncounterType.FormattingEnabled = true; + CB_LastEncounterType.Location = new System.Drawing.Point(144, 69); + CB_LastEncounterType.Name = "CB_LastEncounterType"; + CB_LastEncounterType.Size = new System.Drawing.Size(180, 25); + CB_LastEncounterType.TabIndex = 7; + // + // ButtonPanel + // + ButtonPanel.AutoSize = true; + ButtonPanel.Controls.Add(B_Save); + ButtonPanel.Controls.Add(B_Cancel); + ButtonPanel.Dock = System.Windows.Forms.DockStyle.Bottom; + ButtonPanel.Location = new System.Drawing.Point(0, 522); + ButtonPanel.Name = "ButtonPanel"; + ButtonPanel.Padding = new System.Windows.Forms.Padding(8); + ButtonPanel.RightToLeft = System.Windows.Forms.RightToLeft.Yes; + ButtonPanel.Size = new System.Drawing.Size(984, 49); + ButtonPanel.TabIndex = 1; + ButtonPanel.WrapContents = false; + // + // B_Save + // + B_Save.AutoSize = true; + B_Save.Location = new System.Drawing.Point(913, 11); + B_Save.Name = "B_Save"; + B_Save.Size = new System.Drawing.Size(52, 27); + B_Save.TabIndex = 0; + B_Save.Text = "Save"; + B_Save.UseVisualStyleBackColor = true; + B_Save.Click += B_Save_Click; + // + // B_Cancel + // + B_Cancel.AutoSize = true; + B_Cancel.Location = new System.Drawing.Point(844, 11); + B_Cancel.Name = "B_Cancel"; + B_Cancel.Size = new System.Drawing.Size(63, 27); + B_Cancel.TabIndex = 1; + B_Cancel.Text = "Cancel"; + B_Cancel.UseVisualStyleBackColor = true; + B_Cancel.Click += B_Cancel_Click; + // + // SAV_Medals5 + // + AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F); + AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + ClientSize = new System.Drawing.Size(984, 571); + Controls.Add(TC_Main); + Controls.Add(ButtonPanel); + Icon = Properties.Resources.Icon; + MaximizeBox = false; + MinimumSize = new System.Drawing.Size(760, 420); + Name = "SAV_Medals5"; + StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + Text = "Medals"; + TC_Main.ResumeLayout(false); + Tab_Medals.ResumeLayout(false); + Tab_Medals.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)DGV_Medals).EndInit(); + MedalSettingsPanel.ResumeLayout(false); + MedalSettingsPanel.PerformLayout(); + MedalButtonPanel.ResumeLayout(false); + MedalButtonPanel.PerformLayout(); + Tab_Habitat.ResumeLayout(false); + Tab_Habitat.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)DGV_Habitat).EndInit(); + HabitatBottomPanel.ResumeLayout(false); + HabitatBottomPanel.PerformLayout(); + FLP_HabitatActions.ResumeLayout(false); + FLP_HabitatActions.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)NUD_Unknown90).EndInit(); + ((System.ComponentModel.ISupportInitialize)NUD_Unknown92).EndInit(); + ButtonPanel.ResumeLayout(false); + ButtonPanel.PerformLayout(); + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private System.Windows.Forms.TabControl TC_Main; + private System.Windows.Forms.TabPage Tab_Medals; + private PKHeX.WinForms.Controls.DoubleBufferedDataGridView DGV_Medals; + private System.Windows.Forms.FlowLayoutPanel MedalButtonPanel; + private System.Windows.Forms.Button B_ExportAll; + private System.Windows.Forms.Button B_ImportAll; + private System.Windows.Forms.Button B_GiveAll; + private System.Windows.Forms.TableLayoutPanel MedalSettingsPanel; + private System.Windows.Forms.Label L_PinnedMedal; + private System.Windows.Forms.ComboBox CB_PinnedMedal; + private System.Windows.Forms.Label L_Rank; + private System.Windows.Forms.ComboBox CB_Rank; + private System.Windows.Forms.CheckBox CHK_TutorialComplete; + private System.Windows.Forms.TabPage Tab_Habitat; + private PKHeX.WinForms.Controls.DoubleBufferedDataGridView DGV_Habitat; + private System.Windows.Forms.TableLayoutPanel HabitatBottomPanel; + private System.Windows.Forms.FlowLayoutPanel FLP_HabitatActions; + private System.Windows.Forms.Button B_HabitatClear; + private System.Windows.Forms.Button B_HabitatSetComplete; + private System.Windows.Forms.CheckBox CHK_HabitatTutorialViewed; + private System.Windows.Forms.CheckBox CHK_HabitatTutorialCompleteCapture; + private System.Windows.Forms.Label L_Unknown90; + private System.Windows.Forms.NumericUpDown NUD_Unknown90; + private System.Windows.Forms.Label L_Unknown92; + private System.Windows.Forms.NumericUpDown NUD_Unknown92; + private System.Windows.Forms.Label L_LastEncounterType; + private System.Windows.Forms.ComboBox CB_LastEncounterType; + private System.Windows.Forms.FlowLayoutPanel ButtonPanel; + private System.Windows.Forms.Button B_Save; + private System.Windows.Forms.Button B_Cancel; + private System.Windows.Forms.DataGridViewTextBoxColumn MedalIndexColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn MedalNameColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn MedalTypeColumn; + private System.Windows.Forms.DataGridViewComboBoxColumn MedalStateColumn; + private System.Windows.Forms.DataGridViewCheckBoxColumn MedalUnreadColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn MedalDateColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn HabitatIndexColumn; + private System.Windows.Forms.DataGridViewCheckBoxColumn HabitatCompleteColumn; + private System.Windows.Forms.DataGridViewComboBoxColumn HabitatGrassColumn; + private System.Windows.Forms.DataGridViewComboBoxColumn HabitatSurfColumn; + private System.Windows.Forms.DataGridViewComboBoxColumn HabitatFishColumn; + } +} diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Medals5.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Medals5.cs new file mode 100644 index 000000000..62ecd8913 --- /dev/null +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Medals5.cs @@ -0,0 +1,472 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Windows.Forms; +using PKHeX.Core; + +namespace PKHeX.WinForms; + +public sealed partial class SAV_Medals5 : Form +{ + private const string MedalListFilter = "Medal List 5|*.ml5"; + private const string DateFormat = "yyyy-MM-dd"; + + private readonly SAV5B2W2 Origin; + private readonly SAV5B2W2 SAV; + private readonly MedalList5 Medals; + private readonly HabitatList5 Habitat; + + private readonly string[] MedalNames = Util.GetStringList("medals", Main.CurrentLanguage); + private readonly string[] MedalTypeNames = Util.GetStringList("medal_types", Main.CurrentLanguage); + private readonly string[] MedalStateNames = WinFormsTranslator.GetEnumTranslation(Main.CurrentLanguage); + private readonly string[] MedalRankNames = WinFormsTranslator.GetEnumTranslation(Main.CurrentLanguage); + private readonly string[] HabitatCompletionNames = WinFormsTranslator.GetEnumTranslation(Main.CurrentLanguage); + private readonly string[] HabitatEncounterTypeNames = WinFormsTranslator.GetEnumTranslation(Main.CurrentLanguage); + + private static readonly DateOnly MinimumDate = new(2000, 1, 1); + private static readonly DateOnly MaximumDate = new(2099, 12, 31); + + public SAV_Medals5(SAV5B2W2 sav) + { + InitializeComponent(); + WinFormsUtil.TranslateInterface(this, Main.CurrentLanguage); + + Origin = sav; + SAV = (SAV5B2W2)sav.Clone(); + Medals = SAV.Medals; + Habitat = Medals.HabitatList; + + InitializeMedalGrid(); + InitializeHabitatGrid(); + LoadData(); + } + + private void B_Save_Click(object sender, EventArgs e) + { + CommitPendingGridEdits(); + if (!ValidateChildren()) + return; + + Medals.PinnedMedal = (byte)WinFormsUtil.GetIndex(CB_PinnedMedal); + Medals.Rank = (MedalRank5)WinFormsUtil.GetIndex(CB_Rank); + Medals.IsTutorialComplete = CHK_TutorialComplete.Checked; + + SaveHabitatSettings(); + Origin.CopyChangesFrom(SAV); + Close(); + } + + private void B_Cancel_Click(object sender, EventArgs e) => Close(); + + private void B_GiveAll_Click(object sender, EventArgs e) + { + var now = EncounterDate.GetDateNDS(); + Medals.GiveAll(now, unread: true); + LoadMedalData(); + WinFormsUtil.Asterisk(); + } + + private void B_ImportAll_Click(object sender, EventArgs e) + { + using var ofd = new OpenFileDialog(); + ofd.Filter = MedalListFilter; + ofd.FileName = GetDefaultFileName(); + if (ofd.ShowDialog() != DialogResult.OK) + return; + + var fi = new FileInfo(ofd.FileName); + if (fi.Length != MedalList5.LengthAllMedals) + { + WinFormsUtil.Alert(string.Format(MessageStrings.MsgFileSizeIncorrect, fi.Length, MedalList5.LengthAllMedals)); + return; + } + + var data = File.ReadAllBytes(ofd.FileName); + data.AsSpan().CopyTo(Medals.AllMedals); + LoadMedalData(); + WinFormsUtil.Asterisk(); + } + + private void B_ExportAll_Click(object sender, EventArgs e) + { + using var sfd = new SaveFileDialog(); + sfd.Filter = MedalListFilter; + sfd.FileName = GetDefaultFileName(); + if (sfd.ShowDialog() != DialogResult.OK) + return; + + File.WriteAllBytes(sfd.FileName, Medals.AllMedals.ToArray()); + } + + private void B_HabitatSetComplete_Click(object sender, EventArgs e) + { + if (DGV_Habitat.SelectedRows.Count == 0) + { + Habitat.CompleteAll(); + } + else + { + foreach (var row in GetSelectedHabitatRows()) + Habitat.GetHabitat(row.Index).SetComplete(); + } + + LoadHabitatData(); + WinFormsUtil.Asterisk(); + } + + private void B_HabitatClear_Click(object sender, EventArgs e) + { + foreach (var row in GetSelectedHabitatRows()) + Habitat.GetHabitat(row.Index).Clear(); + + LoadHabitatData(); + WinFormsUtil.Asterisk(); + } + + private void L_Rank_Click(object? sender, EventArgs e) + { + CommitPendingGridEdits(); + CB_Rank.SelectedValue = (int)Medals.CalculateRank(); + WinFormsUtil.Asterisk(); + } + + private void DGV_Medals_CellBeginEdit(object? sender, DataGridViewCellCancelEventArgs e) + { + if (e.RowIndex < 0 || e.ColumnIndex != MedalDateColumn.Index) + return; + + if (!CanEditMedalDate(e.RowIndex)) + e.Cancel = true; + } + + private void DGV_Medals_CellParsing(object? sender, DataGridViewCellParsingEventArgs e) + { + if (e.RowIndex < 0 || e.ColumnIndex != MedalDateColumn.Index) + return; + + if (e.Value is not string text) + return; + + if (!TryParseDate(text, out var date)) + return; + + e.Value = date.ToString(DateFormat, CultureInfo.InvariantCulture); + e.ParsingApplied = true; + } + + private void DGV_Medals_CellValidating(object? sender, DataGridViewCellValidatingEventArgs e) + { + if (e.RowIndex < 0) + return; + + if (e.ColumnIndex == MedalDateColumn.Index) + { + if (!CanEditMedalDate(e.RowIndex)) + return; + + if (e.FormattedValue is not string text || !TryParseDate(text, out _)) + { + DGV_Medals.Rows[e.RowIndex].ErrorText = $"Date must be between {MinimumDate:yyyy-MM-dd} and {MaximumDate:yyyy-MM-dd}."; + e.Cancel = true; + } + else + { + DGV_Medals.Rows[e.RowIndex].ErrorText = string.Empty; + } + + return; + } + + DGV_Medals.Rows[e.RowIndex].ErrorText = string.Empty; + } + + private void DGV_Medals_CurrentCellDirtyStateChanged(object? sender, EventArgs e) + { + if (DGV_Medals.IsCurrentCellDirty) + DGV_Medals.CommitEdit(DataGridViewDataErrorContexts.Commit); + } + + private void DGV_Medals_DataError(object? sender, DataGridViewDataErrorEventArgs e) + { + e.Cancel = false; + e.ThrowException = false; + } + + private void DGV_Medals_EditingControlShowing(object? sender, DataGridViewEditingControlShowingEventArgs e) + { + if (e.Control is ComboBox combo && DGV_Medals.CurrentCell?.OwningColumn is DataGridViewComboBoxColumn) + { + DGV_Medals.BeginInvoke((MethodInvoker)(() => combo.DroppedDown = true)); + return; + } + + if (DGV_Medals.CurrentCell?.ColumnIndex != MedalDateColumn.Index) + return; + + if (e.Control is TextBox tb) + tb.SelectAll(); + } + + private void DGV_Habitat_CurrentCellDirtyStateChanged(object? sender, EventArgs e) + { + if (DGV_Habitat.IsCurrentCellDirty) + DGV_Habitat.CommitEdit(DataGridViewDataErrorContexts.Commit); + } + + private void DGV_Habitat_DataError(object? sender, DataGridViewDataErrorEventArgs e) + { + e.Cancel = false; + e.ThrowException = false; + } + + private void DGV_Habitat_EditingControlShowing(object? sender, DataGridViewEditingControlShowingEventArgs e) + { + if (e.Control is ComboBox combo && DGV_Habitat.CurrentCell?.OwningColumn is DataGridViewComboBoxColumn) + DGV_Habitat.BeginInvoke((MethodInvoker)(() => combo.DroppedDown = true)); + } + + private void InitializeMedalGrid() + { + MedalStateColumn.Items.AddRange(MedalStateNames); + + var medalItems = MedalNames.Select((z, i) => new ComboItem(z, i)).ToList(); + medalItems.Insert(0, new ComboItem(GameInfo.Strings.specieslist[0], MedalList5.PinnedMedalNone)); + CB_PinnedMedal.InitializeBinding(); + CB_PinnedMedal.DataSource = new BindingSource(medalItems, string.Empty); + + var rankValues = Enum.GetValues(); + var rankItems = new ComboItem[rankValues.Length]; + for (int i = 0; i < rankItems.Length; i++) + rankItems[i] = new ComboItem(MedalRankNames[i], (int)rankValues[i]); + CB_Rank.InitializeBinding(); + CB_Rank.DataSource = new BindingSource(rankItems, string.Empty); + } + + private void InitializeHabitatGrid() + { + HabitatGrassColumn.Items.AddRange(HabitatCompletionNames); + HabitatSurfColumn.Items.AddRange(HabitatCompletionNames); + HabitatFishColumn.Items.AddRange(HabitatCompletionNames); + + CB_LastEncounterType.Items.AddRange(HabitatEncounterTypeNames); + } + + private void LoadData() + { + LoadMedalData(); + LoadHabitatData(); + LoadHabitatSettings(); + } + + private void LoadMedalData() + { + DGV_Medals.Rows.Clear(); + DGV_Medals.Rows.Add(MedalNames.Length); + for (int i = 0; i < MedalNames.Length; i++) + LoadMedalRow(i); + + CB_PinnedMedal.SelectedValue = (int)Medals.PinnedMedal; + CB_Rank.SelectedValue = (int)Medals.Rank; + CHK_TutorialComplete.Checked = Medals.IsTutorialComplete; + } + + private void LoadMedalRow(int index) + { + var medal = Medals[index]; + var row = DGV_Medals.Rows[index]; + var cells = row.Cells; + cells[MedalIndexColumn.Index].Value = index; + cells[MedalNameColumn.Index].Value = MedalNames[index]; + cells[MedalTypeColumn.Index].Value = MedalTypeNames[(int)MedalList5.GetMedalType(index)]; + cells[MedalStateColumn.Index].Value = MedalStateNames[(int)medal.State]; + cells[MedalUnreadColumn.Index].Value = medal.IsUnread; + cells[MedalDateColumn.Index].Value = GetDisplayedDate(medal); + row.ErrorText = string.Empty; + SetMedalDateCellState(row, medal.CanHaveDate); + } + + private void LoadHabitatData() + { + DGV_Habitat.Rows.Clear(); + DGV_Habitat.Rows.Add(HabitatList5.HabitatCount); + for (int i = 0; i < HabitatList5.HabitatCount; i++) + LoadHabitatRow(i); + } + + private void LoadHabitatRow(int index) + { + var habitat = Habitat.GetHabitat(index); + var row = DGV_Habitat.Rows[index]; + var cells = row.Cells; + cells[HabitatIndexColumn.Index].Value = index; + cells[HabitatCompleteColumn.Index].Value = habitat.IsComplete; + cells[HabitatGrassColumn.Index].Value = HabitatCompletionNames[(int)habitat.GetStatus(HabitatEncounterType5.Grass)]; + cells[HabitatSurfColumn.Index].Value = HabitatCompletionNames[(int)habitat.GetStatus(HabitatEncounterType5.Surf)]; + cells[HabitatFishColumn.Index].Value = HabitatCompletionNames[(int)habitat.GetStatus(HabitatEncounterType5.Fish)]; + row.ErrorText = string.Empty; + } + + private void LoadHabitatSettings() + { + CHK_HabitatTutorialViewed.Checked = Habitat.IsTutorialViewed; + CHK_HabitatTutorialCompleteCapture.Checked = Habitat.IsTutorialCompleteCapture; + NUD_Unknown90.Value = Habitat.Unknown90; + NUD_Unknown92.Value = Habitat.Unknown92; + CB_LastEncounterType.SelectedIndex = (int)Habitat.LastEncounterType; + } + + private void SaveHabitatSettings() + { + Habitat.IsTutorialViewed = CHK_HabitatTutorialViewed.Checked; + Habitat.IsTutorialCompleteCapture = CHK_HabitatTutorialCompleteCapture.Checked; + Habitat.Unknown90 = (ushort)NUD_Unknown90.Value; + Habitat.Unknown92 = (byte)NUD_Unknown92.Value; + if (CB_LastEncounterType.SelectedIndex >= 0) + Habitat.LastEncounterType = (HabitatEncounterType5)CB_LastEncounterType.SelectedIndex; + } + + private void SetMedalDateCellState(DataGridViewRow row, bool enabled) + { + var cell = row.Cells[MedalDateColumn.Index]; + cell.ReadOnly = !enabled; + cell.Style.BackColor = enabled ? DGV_Medals.DefaultCellStyle.BackColor : SystemColors.Control; + cell.Style.ForeColor = enabled ? DGV_Medals.DefaultCellStyle.ForeColor : SystemColors.GrayText; + cell.Style.SelectionBackColor = enabled ? DGV_Medals.DefaultCellStyle.SelectionBackColor : SystemColors.Control; + cell.Style.SelectionForeColor = enabled ? DGV_Medals.DefaultCellStyle.SelectionForeColor : SystemColors.GrayText; + } + + private bool CanEditMedalDate(int rowIndex) + { + var medal = Medals[rowIndex]; + return medal.CanHaveDate; + } + + private static string GetDisplayedDate(Medal5 medal) => medal is { CanHaveDate: true, HasDate: true } + ? medal.Date.ToString(DateFormat, CultureInfo.InvariantCulture) + : string.Empty; + + private static bool TryParseDate(string text, out DateOnly date) + { + text = text.Trim(); + if (string.IsNullOrWhiteSpace(text)) + { + date = default; + return false; + } + + if (!DateOnly.TryParse(text, CultureInfo.CurrentCulture, DateTimeStyles.None, out date) && + !DateOnly.TryParseExact(text, DateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out date)) + { + return false; + } + + return EncounterDate.IsValidDateNDS(date); + } + + private string GetDefaultFileName() => PathUtil.CleanFileName($"{SAV.OT} {SAV.Version}.ml5"); + + private void CommitPendingGridEdits() + { + if (DGV_Medals.IsCurrentCellDirty) + DGV_Medals.CommitEdit(DataGridViewDataErrorContexts.Commit); + if (DGV_Habitat.IsCurrentCellDirty) + DGV_Habitat.CommitEdit(DataGridViewDataErrorContexts.Commit); + DGV_Medals.EndEdit(); + DGV_Habitat.EndEdit(); + } + + private void DGV_Medals_CellValueChanged(object? sender, DataGridViewCellEventArgs e) + { + if (e.RowIndex < 0) + return; + + var medal = Medals[e.RowIndex]; + var row = DGV_Medals.Rows[e.RowIndex]; + if (e.ColumnIndex == MedalStateColumn.Index) + { + if (row.Cells[MedalStateColumn.Index].Value is string state) + { + int index = Array.IndexOf(MedalStateNames, state); + if (index >= 0) + medal.State = (MedalState5)index; + } + + if (medal is { CanHaveDate: true, HasDate: false }) + medal.Date = EncounterDate.GetDateNDS(); + + LoadMedalRow(e.RowIndex); + return; + } + + if (e.ColumnIndex == MedalUnreadColumn.Index) + { + medal.IsUnread = row.Cells[MedalUnreadColumn.Index].Value is true; + return; + } + + if (e.ColumnIndex == MedalDateColumn.Index) + { + var value = row.Cells[MedalDateColumn.Index].Value?.ToString(); + if (value is null || !TryParseDate(value, out var date)) + return; + + medal.Date = date; + row.Cells[MedalDateColumn.Index].Value = date.ToString(DateFormat, CultureInfo.InvariantCulture); + row.ErrorText = string.Empty; + } + } + + private void DGV_Habitat_CellValueChanged(object? sender, DataGridViewCellEventArgs e) + { + if (e.RowIndex < 0) + return; + + var row = DGV_Habitat.Rows[e.RowIndex]; + var habitat = Habitat.GetHabitat(e.RowIndex); + + if (e.ColumnIndex == HabitatCompleteColumn.Index) + { + habitat.IsComplete = row.Cells[HabitatCompleteColumn.Index].Value is true; + return; + } + + if (e.ColumnIndex == HabitatGrassColumn.Index) + { + TrySetHabitatCompletion(row.Cells[HabitatGrassColumn.Index].Value, value => habitat.SetStatus(HabitatEncounterType5.Grass, value)); + return; + } + + if (e.ColumnIndex == HabitatSurfColumn.Index) + { + TrySetHabitatCompletion(row.Cells[HabitatSurfColumn.Index].Value, value => habitat.SetStatus(HabitatEncounterType5.Surf, value)); + return; + } + + if (e.ColumnIndex == HabitatFishColumn.Index) + TrySetHabitatCompletion(row.Cells[HabitatFishColumn.Index].Value, value => habitat.SetStatus(HabitatEncounterType5.Fish, value)); + } + + private void TrySetHabitatCompletion(object? cellValue, Action setter) + { + if (cellValue is not string text) + return; + + int index = Array.IndexOf(HabitatCompletionNames, text); + if (index >= 0) + setter((HabitatCompletion5)index); + } + + private IEnumerable GetSelectedHabitatRows() + { + if (DGV_Habitat.SelectedRows.Count != 0) + return DGV_Habitat.SelectedRows.Cast().OrderBy(z => z.Index); + + return DGV_Habitat.SelectedCells.Cast() + .Select(z => z.OwningRow).OfType() + .Distinct() + .OrderBy(z => z.Index); + } +} diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Misc5.Designer.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Misc5.Designer.cs index af003c21f..c19702e9b 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Misc5.Designer.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Misc5.Designer.cs @@ -181,13 +181,6 @@ private void InitializeComponent() L_FC = new System.Windows.Forms.Label(); B_ImportFC = new System.Windows.Forms.Button(); B_DumpFC = new System.Windows.Forms.Button(); - TAB_Medals = new System.Windows.Forms.TabPage(); - TB_MedalType = new System.Windows.Forms.TextBox(); - B_ObtainAllMedals = new System.Windows.Forms.Button(); - CAL_MedalDate = new System.Windows.Forms.DateTimePicker(); - CHK_MedalUnread = new System.Windows.Forms.CheckBox(); - CB_MedalState = new System.Windows.Forms.ComboBox(); - CB_CurrentMedal = new System.Windows.Forms.ComboBox(); TAB_Muscial = new System.Windows.Forms.TabPage(); B_UnlockAllProps = new System.Windows.Forms.Button(); CHK_PropObtained = new System.Windows.Forms.CheckBox(); @@ -252,7 +245,6 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)NUD_SingleRecord).BeginInit(); ((System.ComponentModel.ISupportInitialize)NUD_SinglePast).BeginInit(); TAB_BWCityForest.SuspendLayout(); - TAB_Medals.SuspendLayout(); TAB_Muscial.SuspendLayout(); SuspendLayout(); // @@ -288,7 +280,6 @@ private void InitializeComponent() TC_Misc.Controls.Add(TAB_Forest); TC_Misc.Controls.Add(TAB_Subway); TC_Misc.Controls.Add(TAB_BWCityForest); - TC_Misc.Controls.Add(TAB_Medals); TC_Misc.Controls.Add(TAB_Muscial); TC_Misc.Location = new System.Drawing.Point(14, 17); TC_Misc.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); @@ -2061,77 +2052,6 @@ private void InitializeComponent() B_DumpFC.UseVisualStyleBackColor = true; B_DumpFC.Click += B_DumpFC_Click; // - // TAB_Medals - // - TAB_Medals.Controls.Add(TB_MedalType); - TAB_Medals.Controls.Add(B_ObtainAllMedals); - TAB_Medals.Controls.Add(CAL_MedalDate); - TAB_Medals.Controls.Add(CHK_MedalUnread); - TAB_Medals.Controls.Add(CB_MedalState); - TAB_Medals.Controls.Add(CB_CurrentMedal); - TAB_Medals.Location = new System.Drawing.Point(4, 24); - TAB_Medals.Name = "TAB_Medals"; - TAB_Medals.Size = new System.Drawing.Size(390, 338); - TAB_Medals.TabIndex = 5; - TAB_Medals.Text = "Medals"; - TAB_Medals.UseVisualStyleBackColor = true; - // - // TB_MedalType - // - TB_MedalType.Location = new System.Drawing.Point(212, 103); - TB_MedalType.Name = "TB_MedalType"; - TB_MedalType.ReadOnly = true; - TB_MedalType.Size = new System.Drawing.Size(175, 23); - TB_MedalType.TabIndex = 4; - TB_MedalType.TabStop = false; - // - // B_ObtainAllMedals - // - B_ObtainAllMedals.Location = new System.Drawing.Point(3, 264); - B_ObtainAllMedals.Name = "B_ObtainAllMedals"; - B_ObtainAllMedals.Size = new System.Drawing.Size(117, 71); - B_ObtainAllMedals.TabIndex = 5; - B_ObtainAllMedals.Text = "Obtain All Medals"; - B_ObtainAllMedals.UseVisualStyleBackColor = true; - B_ObtainAllMedals.Click += B_ObtainAllMedals_Click; - // - // CAL_MedalDate - // - CAL_MedalDate.Location = new System.Drawing.Point(3, 74); - CAL_MedalDate.Name = "CAL_MedalDate"; - CAL_MedalDate.Size = new System.Drawing.Size(384, 23); - CAL_MedalDate.TabIndex = 2; - CAL_MedalDate.ValueChanged += CAL_MedalDate_ValueChanged; - // - // CHK_MedalUnread - // - CHK_MedalUnread.AutoSize = true; - CHK_MedalUnread.Location = new System.Drawing.Point(3, 103); - CHK_MedalUnread.Name = "CHK_MedalUnread"; - CHK_MedalUnread.Size = new System.Drawing.Size(64, 19); - CHK_MedalUnread.TabIndex = 3; - CHK_MedalUnread.Text = "Unread"; - CHK_MedalUnread.UseVisualStyleBackColor = true; - CHK_MedalUnread.CheckedChanged += CHK_MedalUnread_CheckedChanged; - // - // CB_MedalState - // - CB_MedalState.FormattingEnabled = true; - CB_MedalState.Location = new System.Drawing.Point(3, 45); - CB_MedalState.Name = "CB_MedalState"; - CB_MedalState.Size = new System.Drawing.Size(384, 23); - CB_MedalState.TabIndex = 1; - CB_MedalState.SelectedIndexChanged += CB_MedalState_SelectedIndexChanged; - // - // CB_CurrentMedal - // - CB_CurrentMedal.FormattingEnabled = true; - CB_CurrentMedal.Location = new System.Drawing.Point(3, 16); - CB_CurrentMedal.Name = "CB_CurrentMedal"; - CB_CurrentMedal.Size = new System.Drawing.Size(384, 23); - CB_CurrentMedal.TabIndex = 0; - CB_CurrentMedal.SelectedIndexChanged += CB_CurrentMedal_SelectedIndexChanged; - // // TAB_Muscial // TAB_Muscial.Controls.Add(B_UnlockAllProps); @@ -2251,8 +2171,6 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)NUD_SingleRecord).EndInit(); ((System.ComponentModel.ISupportInitialize)NUD_SinglePast).EndInit(); TAB_BWCityForest.ResumeLayout(false); - TAB_Medals.ResumeLayout(false); - TAB_Medals.PerformLayout(); TAB_Muscial.ResumeLayout(false); TAB_Muscial.PerformLayout(); ResumeLayout(false); @@ -2406,12 +2324,6 @@ private void InitializeComponent() private System.Windows.Forms.Label L_FC; private System.Windows.Forms.Button B_ImportFC; private System.Windows.Forms.Button B_DumpFC; - private System.Windows.Forms.TabPage TAB_Medals; - private System.Windows.Forms.ComboBox CB_CurrentMedal; - private System.Windows.Forms.ComboBox CB_MedalState; - private System.Windows.Forms.DateTimePicker CAL_MedalDate; - private System.Windows.Forms.CheckBox CHK_MedalUnread; - private System.Windows.Forms.Button B_ObtainAllMedals; private System.Windows.Forms.TabPage TAB_Muscial; private System.Windows.Forms.ComboBox CB_Prop; private System.Windows.Forms.CheckBox CHK_PropObtained; @@ -2424,6 +2336,5 @@ private void InitializeComponent() private System.Windows.Forms.NumericUpDown NUD_Record32; private System.Windows.Forms.NumericUpDown NUD_Record16V; private System.Windows.Forms.NumericUpDown NUD_Record16; - private System.Windows.Forms.TextBox TB_MedalType; } } diff --git a/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Misc5.cs b/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Misc5.cs index 0c060b170..41230cc6b 100644 --- a/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Misc5.cs +++ b/PKHeX.WinForms/Subforms/Save Editors/Gen5/SAV_Misc5.cs @@ -34,7 +34,6 @@ public SAV_Misc5(SAV5 sav) LoadForest(); ReadSubway(); ReadEntralink(); - ReadMedals(); ReadMusical(); ReadRecord(); } @@ -126,7 +125,6 @@ private void ReadMain() if (SAV is SAV5BW bw) { - TC_Misc.TabPages.Remove(TAB_Medals); GB_KeySystem.Visible = false; // Roamer cbr = [CB_Roamer642, CB_Roamer641]; @@ -850,91 +848,6 @@ private void B_ImportFC_Click(object sender, EventArgs e) bw.SetData(bw.Forest.ForestCity.Span, data); } - private readonly string[] MedalNames = Util.GetStringList("medals", Main.CurrentLanguage); - private readonly string[] MedalTypeNames = Util.GetStringList("medal_types", Main.CurrentLanguage); - - private void ReadMedals() - { - if (SAV is SAV5B2W2) - { - CB_CurrentMedal.Items.AddRange(MedalNames); - CB_MedalState.Items.AddRange("Unobtained", "Can Obtain Hint Medal", "Hint Medal Obtained", "Can Obtain Medal", "Medal Obtained"); - CB_CurrentMedal.SelectedIndex = 0; - } - } - - private void CB_CurrentMedal_SelectedIndexChanged(object sender, EventArgs e) - { - if (SAV is SAV5B2W2 b2w2) - { - var index = CB_CurrentMedal.SelectedIndex; - var medal = b2w2.Medals[index]; - var type = MedalList5.GetMedalType(index); - TB_MedalType.Text = MedalTypeNames[(int)type]; - CB_MedalState.SelectedIndex = (int)medal.State; - if (medal.CanHaveDate) - { - CAL_MedalDate.Value = medal.Date.ToDateTime(new TimeOnly()); - CAL_MedalDate.Enabled = true; - } - else - { - CAL_MedalDate.Enabled = false; - CAL_MedalDate.ValueChanged -= CAL_MedalDate_ValueChanged; - CAL_MedalDate.Value = EncounterDate.GetDateNDS().ToDateTime(new TimeOnly()); - CAL_MedalDate.ValueChanged += CAL_MedalDate_ValueChanged; - } - CHK_MedalUnread.Checked = medal.IsUnread; - } - } - - private void CB_MedalState_SelectedIndexChanged(object sender, EventArgs e) - { - if (SAV is SAV5B2W2 b2w2) - { - var medal = b2w2.Medals[CB_CurrentMedal.SelectedIndex]; - medal.State = (Medal5State)CB_MedalState.SelectedIndex; - if (medal.CanHaveDate) - { - if (!medal.HasDate) - medal.Date = EncounterDate.GetDateNDS(); - CAL_MedalDate.Enabled = true; - } - else - { - CAL_MedalDate.Enabled = false; - } - } - } - - private void CAL_MedalDate_ValueChanged(object? sender, EventArgs e) - { - if (SAV is SAV5B2W2 b2w2) - { - var medal = b2w2.Medals[CB_CurrentMedal.SelectedIndex]; - medal.Date = DateOnly.FromDateTime(CAL_MedalDate.Value); - } - } - - private void CHK_MedalUnread_CheckedChanged(object sender, EventArgs e) - { - if (SAV is SAV5B2W2 b2w2) - { - var medal = b2w2.Medals[CB_CurrentMedal.SelectedIndex]; - medal.IsUnread = CHK_MedalUnread.Checked; - } - } - - private void B_ObtainAllMedals_Click(object sender, EventArgs e) - { - if (SAV is SAV5B2W2 b2w2) - { - var now = EncounterDate.GetDateNDS(); - b2w2.Medals.ObtainAll(now, unread: true); - WinFormsUtil.Asterisk(); - } - } - private readonly string[] PropNames = Util.GetStringList("props", Main.CurrentLanguage); private void ReadMusical() diff --git a/PKHeX.WinForms/Util/DevUtil.cs b/PKHeX.WinForms/Util/DevUtil.cs index c9b4dbd18..7dd7dc337 100644 --- a/PKHeX.WinForms/Util/DevUtil.cs +++ b/PKHeX.WinForms/Util/DevUtil.cs @@ -182,6 +182,8 @@ private static void UpdateTranslations() typeof(PassPower5), typeof(Funfest5Mission), typeof(JoinAvenueCeilingColor5), + typeof(MedalRank5), + typeof(HabitatCompletion5), typeof(BattleChateauRank6), typeof(OPower6Index), typeof(OPower6FieldType), @@ -249,6 +251,7 @@ private static IEnumerable GetExtraControls() $"{nameof(SAV_JoinAvenue)}.L_Unk", $"{nameof(SAV_JoinAvenue)}.L_IsFlag", $"{nameof(SAV_JoinAvenue)}.L_Unused", + $"{nameof(SAV_Medals5)}.L_Unknown", SlotList.DynamicLabelPrefix, $"{nameof(StorageSlotType)}.{nameof(StorageSlotType.None)}",