diff --git a/PKHeX.Core/Saves/SAV1.cs b/PKHeX.Core/Saves/SAV1.cs index f98b6d0ee..1dcca0713 100644 --- a/PKHeX.Core/Saves/SAV1.cs +++ b/PKHeX.Core/Saves/SAV1.cs @@ -555,7 +555,7 @@ public bool[] EventSpawnFlags } } - public override string GetString(int Offset, int Length) => StringConverter.GetString1(Data, Offset, Length, Japanese); + public override string GetString(byte[] data, int offset, int length) => StringConverter.GetString1(data, offset, length, Japanese); public override byte[] SetString(string value, int maxLength, int PadToSize = 0, ushort PadWith = 0) { diff --git a/PKHeX.Core/Saves/SAV2.cs b/PKHeX.Core/Saves/SAV2.cs index 52d007584..cd60bf5b7 100644 --- a/PKHeX.Core/Saves/SAV2.cs +++ b/PKHeX.Core/Saves/SAV2.cs @@ -657,11 +657,11 @@ public void UnlockAllDecorations() SetEventFlag(i, true); } - public override string GetString(int Offset, int Length) + public override string GetString(byte[] data, int offset, int length) { if (Korean) - return StringConverter.GetString2KOR(Data, Offset, Length); - return StringConverter.GetString1(Data, Offset, Length, Japanese); + return StringConverter.GetString2KOR(data, offset, length); + return StringConverter.GetString1(data, offset, length, Japanese); } public override byte[] SetString(string value, int maxLength, int PadToSize = 0, ushort PadWith = 0) diff --git a/PKHeX.Core/Saves/SAV3.cs b/PKHeX.Core/Saves/SAV3.cs index 5adf604e3..78995a96f 100644 --- a/PKHeX.Core/Saves/SAV3.cs +++ b/PKHeX.Core/Saves/SAV3.cs @@ -776,7 +776,7 @@ public bool NationalDex } } - public override string GetString(int Offset, int Length) => StringConverter.GetString3(Data, Offset, Length, Japanese); + public override string GetString(byte[] data, int offset, int length) => StringConverter.GetString3(data, offset, length, Japanese); public override byte[] SetString(string value, int maxLength, int PadToSize = 0, ushort PadWith = 0) { diff --git a/PKHeX.Core/Saves/SAV3Colosseum.cs b/PKHeX.Core/Saves/SAV3Colosseum.cs index dcfc28da0..b2409fa95 100644 --- a/PKHeX.Core/Saves/SAV3Colosseum.cs +++ b/PKHeX.Core/Saves/SAV3Colosseum.cs @@ -411,7 +411,7 @@ public override InventoryPouch[] Inventory public override void SetDaycareEXP(int loc, int slot, uint EXP) { } public override void SetDaycareOccupied(int loc, int slot, bool occupied) { } - public override string GetString(int Offset, int Length) => StringConverter.GetBEString3(Data, Offset, Length); + public override string GetString(byte[] data, int offset, int length) => StringConverter.GetBEString3(data, offset, length); public override byte[] SetString(string value, int maxLength, int PadToSize = 0, ushort PadWith = 0) { diff --git a/PKHeX.Core/Saves/SAV3RSBox.cs b/PKHeX.Core/Saves/SAV3RSBox.cs index 8908e71dd..9bed8c835 100644 --- a/PKHeX.Core/Saves/SAV3RSBox.cs +++ b/PKHeX.Core/Saves/SAV3RSBox.cs @@ -201,7 +201,7 @@ public override void SetStoredSlot(PKM pkm, int offset, bool? trade = null, bool Edited = true; } - public override string GetString(int Offset, int Length) => StringConverter.GetString3(Data, Offset, Length, Japanese); + public override string GetString(byte[] data, int offset, int length) => StringConverter.GetString3(data, offset, length, Japanese); public override byte[] SetString(string value, int maxLength, int PadToSize = 0, ushort PadWith = 0) { diff --git a/PKHeX.Core/Saves/SAV3XD.cs b/PKHeX.Core/Saves/SAV3XD.cs index f10f3fe55..2d5deafa4 100644 --- a/PKHeX.Core/Saves/SAV3XD.cs +++ b/PKHeX.Core/Saves/SAV3XD.cs @@ -377,7 +377,7 @@ public override InventoryPouch[] Inventory public override void SetDaycareEXP(int loc, int slot, uint EXP) { } public override void SetDaycareOccupied(int loc, int slot, bool occupied) { } - public override string GetString(int Offset, int Length) => StringConverter.GetBEString3(Data, Offset, Length); + public override string GetString(byte[] data, int offset, int length) => StringConverter.GetBEString3(data, offset, length); public override byte[] SetString(string value, int maxLength, int PadToSize = 0, ushort PadWith = 0) { diff --git a/PKHeX.Core/Saves/SAV4.cs b/PKHeX.Core/Saves/SAV4.cs index f12817062..7fb9d16bf 100644 --- a/PKHeX.Core/Saves/SAV4.cs +++ b/PKHeX.Core/Saves/SAV4.cs @@ -1301,7 +1301,7 @@ public bool[] PokewalkerCoursesUnlocked public int GetApricornCount(int i) => !HGSS ? -1 : Data[0xE558 + GBO + i]; public void SetApricornCount(int i, int count) => Data[0xE558 + GBO + i] = (byte)count; - public override string GetString(int Offset, int Length) => StringConverter.GetString4(Data, Offset, Length); + public override string GetString(byte[] data, int offset, int length) => StringConverter.GetString4(data, offset, length); public override byte[] SetString(string value, int maxLength, int PadToSize = 0, ushort PadWith = 0) { diff --git a/PKHeX.Core/Saves/SAV4BR.cs b/PKHeX.Core/Saves/SAV4BR.cs index 7eb2cb1e2..184748ce3 100644 --- a/PKHeX.Core/Saves/SAV4BR.cs +++ b/PKHeX.Core/Saves/SAV4BR.cs @@ -326,7 +326,7 @@ private static void SetChecksum(byte[] input, int offset, int len, int checksum_ } } - public override string GetString(int Offset, int Length) => StringConverter.GetBEString4(Data, Offset, Length); + public override string GetString(byte[] data, int offset, int length) => StringConverter.GetBEString4(data, offset, length); public override byte[] SetString(string value, int maxLength, int PadToSize = 0, ushort PadWith = 0) { diff --git a/PKHeX.Core/Saves/SAV5.cs b/PKHeX.Core/Saves/SAV5.cs index b5e709421..2b2f76bde 100644 --- a/PKHeX.Core/Saves/SAV5.cs +++ b/PKHeX.Core/Saves/SAV5.cs @@ -546,7 +546,7 @@ public override bool GetSeen(int species) return false; } - public override string GetString(int Offset, int Length) => StringConverter.GetString5(Data, Offset, Length); + public override string GetString(byte[] data, int offset, int length) => StringConverter.GetString5(data, offset, length); public override byte[] SetString(string value, int maxLength, int PadToSize = 0, ushort PadWith = 0) { diff --git a/PKHeX.Core/Saves/SAV6.cs b/PKHeX.Core/Saves/SAV6.cs index 25552e22d..f09a55f0d 100644 --- a/PKHeX.Core/Saves/SAV6.cs +++ b/PKHeX.Core/Saves/SAV6.cs @@ -1086,7 +1086,7 @@ public override string MiscSaveChecks() public override string MiscSaveInfo() => string.Join(Environment.NewLine, Blocks.Select(b => b.Summary)); - public override string GetString(int Offset, int Length) => StringConverter.GetString6(Data, Offset, Length); + public override string GetString(byte[] data, int offset, int length) => StringConverter.GetString6(data, offset, length); public override byte[] SetString(string value, int maxLength, int PadToSize = 0, ushort PadWith = 0) { diff --git a/PKHeX.Core/Saves/SAV7.cs b/PKHeX.Core/Saves/SAV7.cs index 2c0f39f9f..c51c6c763 100644 --- a/PKHeX.Core/Saves/SAV7.cs +++ b/PKHeX.Core/Saves/SAV7.cs @@ -1510,7 +1510,7 @@ public bool ZMoveUnlocked set => Data[TrainerCard + 0x78] = (byte)((Data[TrainerCard + 0x78] & ~2) | (value ? 2 : 0)); // in battle } - public override string GetString(int Offset, int Length) => StringConverter.GetString7(Data, Offset, Length); + public override string GetString(byte[] data, int offset, int length) => StringConverter.GetString7(data, offset, length); public override byte[] SetString(string value, int maxLength, int PadToSize = 0, ushort PadWith = 0) { diff --git a/PKHeX.Core/Saves/SAV7b.cs b/PKHeX.Core/Saves/SAV7b.cs index a67e9a862..17a1e7d63 100644 --- a/PKHeX.Core/Saves/SAV7b.cs +++ b/PKHeX.Core/Saves/SAV7b.cs @@ -178,7 +178,7 @@ protected override void SetPKM(PKM pkm) public override string GetBoxName(int box) => $"Box {box + 1}"; public override void SetBoxName(int box, string value) { } - public override string GetString(int Offset, int Length) => StringConverter.GetString7(Data, Offset, Length); + public override string GetString(byte[] data, int offset, int length) => StringConverter.GetString7(data, offset, length); public override byte[] SetString(string value, int maxLength, int PadToSize = 0, ushort PadWith = 0) { diff --git a/PKHeX.Core/Saves/SaveFile.cs b/PKHeX.Core/Saves/SaveFile.cs index 077e18e64..64a1b1745 100644 --- a/PKHeX.Core/Saves/SaveFile.cs +++ b/PKHeX.Core/Saves/SaveFile.cs @@ -455,6 +455,7 @@ public bool IsPartyAllEggs(params int[] except) protected int[] LockedSlots = Array.Empty(); protected int[] TeamSlots = Array.Empty(); protected virtual IList[] SlotPointers => new[] {LockedSlots,TeamSlots}; + public virtual StorageSlotFlag GetSlotFlags(int index) => StorageSlotFlag.None; public bool MoveBox(int box, int insertBeforeBox) { @@ -467,8 +468,6 @@ public bool MoveBox(int box, int insertBeforeBox) int pos2 = BoxSlotCount*insertBeforeBox; int min = Math.Min(pos1, pos2); int max = Math.Max(pos1, pos2); - if (LockedSlots.Any(slot => min <= slot && slot < max)) // slots locked within operation range - return false; int len = BoxSlotCount*SIZE_STORED; byte[] boxdata = GetData(GetBoxOffset(0), len*BoxCount); // get all boxes @@ -835,7 +834,8 @@ public bool IsRangeAll(int Offset, int Length, int value) public virtual bool IsPKMPresent(int Offset) => PKX.IsPKMPresent(Data, Offset); - public abstract string GetString(int Offset, int Length); + public abstract string GetString(byte[] data, int offset, int length); + public string GetString(int offset, int length) => GetString(Data, offset, length); public abstract byte[] SetString(string value, int maxLength, int PadToSize = 0, ushort PadWith = 0); public virtual string EBerryName => string.Empty; diff --git a/PKHeX.Core/Saves/Storage/BulkStorage.cs b/PKHeX.Core/Saves/Storage/BulkStorage.cs index 632589dfe..42635d6c6 100644 --- a/PKHeX.Core/Saves/Storage/BulkStorage.cs +++ b/PKHeX.Core/Saves/Storage/BulkStorage.cs @@ -64,8 +64,8 @@ protected BulkStorage(byte[] data, Type t, int start, int slotsPerBox = 30) public override void SetBoxName(int box, string value) { } public override int GetPartyOffset(int slot) => int.MinValue; - public override string GetString(int Offset, int Length) - => StringConverter.GetString(Data, Generation, blank.Japanese, BigEndian, Length, Offset); + public override string GetString(byte[] data, int offset, int length) + => StringConverter.GetString(data, Generation, blank.Japanese, BigEndian, length, offset); public override byte[] SetString(string value, int maxLength, int PadToSize = 0, ushort PadWith = 0) => StringConverter.SetString(value, Generation, blank.Japanese, BigEndian, maxLength, padTo: PadToSize, padWith: PadWith); diff --git a/PKHeX.WinForms/Subforms/PKM Editors/Text.cs b/PKHeX.WinForms/Subforms/PKM Editors/Text.cs index 1b3049a84..cbf1ec8f9 100644 --- a/PKHeX.WinForms/Subforms/PKM Editors/Text.cs +++ b/PKHeX.WinForms/Subforms/PKM Editors/Text.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Drawing; -using System.Linq; using System.Windows.Forms; using PKHeX.Core; @@ -16,7 +15,6 @@ public TrashEditor(TextBoxBase TB_NN, byte[] raw, SaveFile sav) InitializeComponent(); WinFormsUtil.TranslateInterface(this, Main.CurrentLanguage); SAV = sav; - bigendian = new[] { GameVersion.COLO, GameVersion.XD, GameVersion.BATREV, }.Contains(SAV.Version); FinalString = TB_NN.Text; Raw = FinalBytes = raw; @@ -51,7 +49,6 @@ public TrashEditor(TextBoxBase TB_NN, byte[] raw, SaveFile sav) public byte[] FinalBytes { get; private set; } private readonly byte[] Raw; private bool editing; - private readonly bool bigendian; private void B_Cancel_Click(object sender, EventArgs e) => Close(); private void B_Save_Click(object sender, EventArgs e) @@ -175,21 +172,8 @@ private void B_ClearTrash_Click(object sender, EventArgs e) Bytes[i].Value = 0; } - private byte[] SetString(string text) - { - if (SAV is SAV2 s && s.Korean) - return StringConverter.SetString2KOR(text, Raw.Length); - if (SAV is SAV7b) - return StringConverter.SetString7b(text, SAV.Generation, Raw.Length, SAV.Language); - return StringConverter.SetString(text, SAV.Generation, SAV.Japanese, bigendian, Raw.Length, SAV.Language); - } - - private string GetString() - { - return SAV is SAV2 s && s.Korean - ? StringConverter.GetString2KOR(Raw, 0, Raw.Length) - : StringConverter.GetString(Raw, SAV.Generation, SAV.Japanese, bigendian, Raw.Length); - } + private byte[] SetString(string text) => SAV.SetString(text, Raw.Length); + private string GetString() => SAV.GetString(Raw, 0, Raw.Length); // Helpers private static Label GetLabel(string str) => new Label {Text = str, AutoSize = true};