mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-03-21 17:48:28 -05:00
Minor tweaks
Remove GameSync/SecureValue from SAV tab (still lives in Block Data) Remove inaccessible items from FRLG/E key items
This commit is contained in:
parent
d827cec5a7
commit
8b08f263e5
|
|
@ -205,10 +205,10 @@ public ModifyResult TryModify(TObject entity, IEnumerable<StringInstruction> fil
|
|||
return result;
|
||||
}
|
||||
|
||||
private static Dictionary<string, PropertyInfo>.AlternateLookup<ReadOnlySpan<char>>[] GetPropertyDictionaries(IReadOnlyList<Type> types, int expectedMax)
|
||||
private static Dictionary<string, PropertyInfo>.AlternateLookup<ReadOnlySpan<char>>[] GetPropertyDictionaries(ReadOnlySpan<Type> types, int expectedMax)
|
||||
{
|
||||
var result = new Dictionary<string, PropertyInfo>.AlternateLookup<ReadOnlySpan<char>>[types.Count];
|
||||
for (int i = 0; i < types.Count; i++)
|
||||
var result = new Dictionary<string, PropertyInfo>.AlternateLookup<ReadOnlySpan<char>>[types.Length];
|
||||
for (int i = 0; i < types.Length; i++)
|
||||
result[i] = GetPropertyDictionary(types[i], ReflectUtil.GetAllPropertyInfoPublic, expectedMax).GetAlternateLookup<ReadOnlySpan<char>>();
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,21 +1,12 @@
|
|||
using System;
|
||||
using System;
|
||||
|
||||
namespace PKHeX.Core;
|
||||
|
||||
/// <summary>
|
||||
/// Base class for defining a manipulation of box data.
|
||||
/// </summary>
|
||||
public abstract class BoxManipBase : IBoxManip
|
||||
public abstract record BoxManipBase(BoxManipType Type, Func<SaveFile, bool> Usable) : IBoxManip
|
||||
{
|
||||
public BoxManipType Type { get; }
|
||||
public Func<SaveFile, bool> Usable { get; }
|
||||
|
||||
protected BoxManipBase(BoxManipType type, Func<SaveFile, bool> usable)
|
||||
{
|
||||
Type = type;
|
||||
Usable = usable;
|
||||
}
|
||||
|
||||
public abstract string GetPrompt(bool all);
|
||||
public abstract string GetFail(bool all);
|
||||
public abstract string GetSuccess(bool all);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ namespace PKHeX.Core;
|
|||
/// <summary>
|
||||
/// Clears contents of boxes by deleting all that satisfy a criteria.
|
||||
/// </summary>
|
||||
public sealed class BoxManipClear(BoxManipType Type, Func<PKM, bool> criteria, Func<SaveFile, bool> Usable) : BoxManipBase(Type, Usable)
|
||||
public sealed record BoxManipClear(BoxManipType Type, Func<PKM, bool> Criteria, Func<SaveFile, bool> Usable) : BoxManipBase(Type, Usable)
|
||||
{
|
||||
public BoxManipClear(BoxManipType Type, Func<PKM, bool> Criteria) : this(Type, Criteria, _ => true) { }
|
||||
|
||||
|
|
@ -18,6 +18,6 @@ public override int Execute(SaveFile sav, BoxManipParam param)
|
|||
var (start, stop, reverse) = param;
|
||||
return sav.ClearBoxes(start, stop, Method);
|
||||
|
||||
bool Method(PKM p) => reverse ^ criteria(p);
|
||||
bool Method(PKM p) => reverse ^ Criteria(p);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ namespace PKHeX.Core;
|
|||
/// <summary>
|
||||
/// Clears contents of boxes by deleting all that satisfy a criteria based on a <see cref="SaveFile"/>.
|
||||
/// </summary>
|
||||
public sealed class BoxManipClearComplex(BoxManipType Type, Func<PKM, SaveFile, bool> criteria, Func<SaveFile, bool> Usable) : BoxManipBase(Type, Usable)
|
||||
public sealed record BoxManipClearComplex(BoxManipType Type, Func<PKM, SaveFile, bool> Criteria, Func<SaveFile, bool> Usable) : BoxManipBase(Type, Usable)
|
||||
{
|
||||
public BoxManipClearComplex(BoxManipType Type, Func<PKM, SaveFile, bool> Criteria) : this(Type, Criteria, _ => true) { }
|
||||
|
||||
|
|
@ -18,6 +18,6 @@ public override int Execute(SaveFile sav, BoxManipParam param)
|
|||
var (start, stop, reverse) = param;
|
||||
return sav.ClearBoxes(start, stop, Method);
|
||||
|
||||
bool Method(PKM p) => reverse ^ criteria(p, sav);
|
||||
bool Method(PKM p) => reverse ^ Criteria(p, sav);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ namespace PKHeX.Core;
|
|||
/// Clears contents of boxes by deleting all but the first duplicate detected.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Base type of the "is duplicate" hash for the duplicate detection.</typeparam>
|
||||
public sealed class BoxManipClearDuplicate<T> : BoxManipBase
|
||||
public sealed record BoxManipClearDuplicate<T> : BoxManipBase
|
||||
{
|
||||
private readonly HashSet<T> HashSet = [];
|
||||
private readonly Func<PKM, bool> Criteria;
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@ namespace PKHeX.Core;
|
|||
/// <summary>
|
||||
/// Modifies contents of boxes by using an <see cref="Action"/> to change data.
|
||||
/// </summary>
|
||||
public sealed class BoxManipModify(BoxManipType type, Action<PKM> Action, Func<SaveFile, bool> Usable)
|
||||
: BoxManipBase(type, Usable)
|
||||
public sealed record BoxManipModify(BoxManipType Type, Action<PKM> Action, Func<SaveFile, bool> Usable)
|
||||
: BoxManipBase(Type, Usable)
|
||||
{
|
||||
public BoxManipModify(BoxManipType type, Action<PKM> Action) : this(type, Action, _ => true) { }
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ namespace PKHeX.Core;
|
|||
/// <summary>
|
||||
/// Modifies contents of boxes by using an <see cref="Action"/> (referencing a Save File) to change data.
|
||||
/// </summary>
|
||||
public sealed class BoxManipModifyComplex(BoxManipType Type, Action<PKM, SaveFile> Action, Func<SaveFile, bool> Usable)
|
||||
public sealed record BoxManipModifyComplex(BoxManipType Type, Action<PKM, SaveFile> Action, Func<SaveFile, bool> Usable)
|
||||
: BoxManipBase(Type, Usable)
|
||||
{
|
||||
public BoxManipModifyComplex(BoxManipType Type, Action<PKM, SaveFile> Action) : this(Type, Action, _ => true) { }
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ namespace PKHeX.Core;
|
|||
/// <summary>
|
||||
/// Sorts contents of boxes by using a Sorter to determine the order.
|
||||
/// </summary>
|
||||
public sealed class BoxManipSort(BoxManipType Type, Func<IEnumerable<PKM>, IEnumerable<PKM>> Sorter, Func<SaveFile, bool> Usable) : BoxManipBase(Type, Usable)
|
||||
public sealed record BoxManipSort(BoxManipType Type, Func<IEnumerable<PKM>, IEnumerable<PKM>> Sorter, Func<SaveFile, bool> Usable) : BoxManipBase(Type, Usable)
|
||||
{
|
||||
public BoxManipSort(BoxManipType Type, Func<IEnumerable<PKM>, IEnumerable<PKM>> Sorter) : this(Type, Sorter, _ => true) { }
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace PKHeX.Core;
|
||||
|
|
@ -6,7 +6,7 @@ namespace PKHeX.Core;
|
|||
/// <summary>
|
||||
/// Sorts contents of boxes by using a <see cref="Sorter"/> (referencing a Save File) to determine the order.
|
||||
/// </summary>
|
||||
public sealed class BoxManipSortComplex : BoxManipBase
|
||||
public sealed record BoxManipSortComplex : BoxManipBase
|
||||
{
|
||||
private readonly Func<IEnumerable<PKM>, SaveFile, int, IEnumerable<PKM>> Sorter;
|
||||
public BoxManipSortComplex(BoxManipType type, Func<IEnumerable<PKM>, SaveFile, IEnumerable<PKM>> sorter) : this(type, sorter, _ => true) { }
|
||||
|
|
|
|||
|
|
@ -13,9 +13,9 @@ public sealed class ItemStorage3E : IItemStorage
|
|||
public static ReadOnlySpan<ushort> Key =>
|
||||
[
|
||||
// R/S
|
||||
259, 260, 261, 262, 263, 264, 265, 266, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
|
||||
259, 260, 261, 262, 263, 264, 265, 266, 268, 269, 270, 271, 272, 273, 274, 275, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
|
||||
// FR/LG
|
||||
349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
|
||||
372,
|
||||
// E
|
||||
375, 376,
|
||||
];
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ public sealed class ItemStorage3FRLG : IItemStorage
|
|||
public static ReadOnlySpan<ushort> Key =>
|
||||
[
|
||||
// R/S
|
||||
259, 260, 261, 262, 263, 264, 265, 266, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
|
||||
260, 261, 262, 263, 264, 265,
|
||||
// FR/LG
|
||||
349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
|
||||
];
|
||||
|
|
@ -55,7 +55,7 @@ public sealed class ItemStorage3FRLG_VC : IItemStorage // TODO VC RSE: delete me
|
|||
|
||||
// Unobtainable
|
||||
044, // Berry Juice
|
||||
|
||||
|
||||
// TODO RSE VC: Remove these
|
||||
046, 047, // Shoal Salt, Shoal Shell
|
||||
048, 049, 050, 051, // Shards
|
||||
|
|
@ -71,7 +71,7 @@ public sealed class ItemStorage3FRLG_VC : IItemStorage // TODO VC RSE: delete me
|
|||
173, // Lansat Berry (Event)
|
||||
174, // Starf Berry (Event)
|
||||
175, // Enigma Berry (Event)
|
||||
|
||||
|
||||
// TODO RSE VC: Remove these
|
||||
179, // BrightPowder
|
||||
180, // White Herb
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq;
|
||||
using static System.Buffers.Binary.BinaryPrimitives;
|
||||
|
|
@ -33,6 +34,7 @@ protected SAV_BEEF([ConstantExpected] int size, [ConstantExpected] int biOffset)
|
|||
/// <summary>
|
||||
/// Timestamp that the save file was last saved at (Secure Value)
|
||||
/// </summary>
|
||||
[TypeConverter(typeof(TypeConverterU64))]
|
||||
public ulong TimeStampCurrent
|
||||
{
|
||||
get => ReadUInt64LittleEndian(Data[BlockInfoOffset..]);
|
||||
|
|
@ -42,6 +44,7 @@ public ulong TimeStampCurrent
|
|||
/// <summary>
|
||||
/// Timestamp that the save file was saved at prior to the <see cref="TimeStampCurrent"/> (Secure Value)
|
||||
/// </summary>
|
||||
[TypeConverter(typeof(TypeConverterU64))]
|
||||
public ulong TimeStampPrevious
|
||||
{
|
||||
get => ReadUInt64LittleEndian(Data[(BlockInfoOffset + 8)..]);
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ namespace PKHeX.WinForms.Controls;
|
|||
public partial class EntitySearchControl : UserControl
|
||||
{
|
||||
private EntityContext SaveContext { get; set; } = Latest.Context;
|
||||
|
||||
|
||||
public EntitySearchControl() => InitializeComponent();
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -107,7 +107,7 @@ public void InitializeSelections(SaveFile sav, bool showContext = true)
|
|||
}
|
||||
L_Format.Visible = CB_FormatComparator.Visible = CB_Format.Visible = showContext;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Sets the localized text for the format "Any" option.
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -111,12 +111,6 @@ private void InitializeComponent()
|
|||
B_ConvertKorean = new System.Windows.Forms.Button();
|
||||
CB_SaveSlot = new System.Windows.Forms.ComboBox();
|
||||
L_SaveSlot = new System.Windows.Forms.Label();
|
||||
L_Secure2 = new System.Windows.Forms.Label();
|
||||
TB_Secure2 = new System.Windows.Forms.TextBox();
|
||||
L_Secure1 = new System.Windows.Forms.Label();
|
||||
TB_Secure1 = new System.Windows.Forms.TextBox();
|
||||
L_GameSync = new System.Windows.Forms.Label();
|
||||
TB_GameSync = new System.Windows.Forms.TextBox();
|
||||
tabBoxMulti.SuspendLayout();
|
||||
Tab_Box.SuspendLayout();
|
||||
PopoutMenu.SuspendLayout();
|
||||
|
|
@ -410,12 +404,6 @@ private void InitializeComponent()
|
|||
Tab_SAV.Controls.Add(FLP_SAVToolsMisc);
|
||||
Tab_SAV.Controls.Add(CB_SaveSlot);
|
||||
Tab_SAV.Controls.Add(L_SaveSlot);
|
||||
Tab_SAV.Controls.Add(L_Secure2);
|
||||
Tab_SAV.Controls.Add(TB_Secure2);
|
||||
Tab_SAV.Controls.Add(L_Secure1);
|
||||
Tab_SAV.Controls.Add(TB_Secure1);
|
||||
Tab_SAV.Controls.Add(L_GameSync);
|
||||
Tab_SAV.Controls.Add(TB_GameSync);
|
||||
Tab_SAV.Location = new System.Drawing.Point(4, 26);
|
||||
Tab_SAV.Name = "Tab_SAV";
|
||||
Tab_SAV.Size = new System.Drawing.Size(441, 333);
|
||||
|
|
@ -1040,72 +1028,6 @@ private void InitializeComponent()
|
|||
L_SaveSlot.Text = "Save Slot:";
|
||||
L_SaveSlot.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// L_Secure2
|
||||
//
|
||||
L_Secure2.Location = new System.Drawing.Point(32, 112);
|
||||
L_Secure2.Name = "L_Secure2";
|
||||
L_Secure2.Size = new System.Drawing.Size(120, 24);
|
||||
L_Secure2.TabIndex = 18;
|
||||
L_Secure2.Text = "Secure Value 2:";
|
||||
L_Secure2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// TB_Secure2
|
||||
//
|
||||
TB_Secure2.Enabled = false;
|
||||
TB_Secure2.Font = new System.Drawing.Font("Courier New", 8.25F);
|
||||
TB_Secure2.Location = new System.Drawing.Point(152, 112);
|
||||
TB_Secure2.MaxLength = 16;
|
||||
TB_Secure2.MinimumSize = new System.Drawing.Size(120, 24);
|
||||
TB_Secure2.Name = "TB_Secure2";
|
||||
TB_Secure2.PlaceholderText = "0000000000000000";
|
||||
TB_Secure2.Size = new System.Drawing.Size(120, 24);
|
||||
TB_Secure2.TabIndex = 17;
|
||||
TB_Secure2.Validated += UpdateStringSeed;
|
||||
//
|
||||
// L_Secure1
|
||||
//
|
||||
L_Secure1.Location = new System.Drawing.Point(32, 88);
|
||||
L_Secure1.Name = "L_Secure1";
|
||||
L_Secure1.Size = new System.Drawing.Size(120, 24);
|
||||
L_Secure1.TabIndex = 16;
|
||||
L_Secure1.Text = "Secure Value 1:";
|
||||
L_Secure1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// TB_Secure1
|
||||
//
|
||||
TB_Secure1.Enabled = false;
|
||||
TB_Secure1.Font = new System.Drawing.Font("Courier New", 8.25F);
|
||||
TB_Secure1.Location = new System.Drawing.Point(152, 88);
|
||||
TB_Secure1.MaxLength = 16;
|
||||
TB_Secure1.MinimumSize = new System.Drawing.Size(120, 24);
|
||||
TB_Secure1.Name = "TB_Secure1";
|
||||
TB_Secure1.PlaceholderText = "0000000000000000";
|
||||
TB_Secure1.Size = new System.Drawing.Size(120, 24);
|
||||
TB_Secure1.TabIndex = 15;
|
||||
TB_Secure1.Validated += UpdateStringSeed;
|
||||
//
|
||||
// L_GameSync
|
||||
//
|
||||
L_GameSync.Location = new System.Drawing.Point(32, 64);
|
||||
L_GameSync.Name = "L_GameSync";
|
||||
L_GameSync.Size = new System.Drawing.Size(120, 24);
|
||||
L_GameSync.TabIndex = 11;
|
||||
L_GameSync.Text = "Game Sync ID:";
|
||||
L_GameSync.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// TB_GameSync
|
||||
//
|
||||
TB_GameSync.Enabled = false;
|
||||
TB_GameSync.Font = new System.Drawing.Font("Courier New", 8.25F);
|
||||
TB_GameSync.Location = new System.Drawing.Point(152, 64);
|
||||
TB_GameSync.MaxLength = 16;
|
||||
TB_GameSync.MinimumSize = new System.Drawing.Size(120, 24);
|
||||
TB_GameSync.Name = "TB_GameSync";
|
||||
TB_GameSync.PlaceholderText = "0000000000000000";
|
||||
TB_GameSync.Size = new System.Drawing.Size(120, 24);
|
||||
TB_GameSync.TabIndex = 10;
|
||||
TB_GameSync.Validated += UpdateStringSeed;
|
||||
//
|
||||
// SAVEditor
|
||||
//
|
||||
AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
|
||||
|
|
@ -1152,13 +1074,7 @@ private void InitializeComponent()
|
|||
private System.Windows.Forms.TabPage Tab_SAV;
|
||||
private System.Windows.Forms.ComboBox CB_SaveSlot;
|
||||
private System.Windows.Forms.Label L_SaveSlot;
|
||||
private System.Windows.Forms.Label L_Secure2;
|
||||
private System.Windows.Forms.TextBox TB_Secure2;
|
||||
private System.Windows.Forms.Label L_Secure1;
|
||||
private System.Windows.Forms.TextBox TB_Secure1;
|
||||
private System.Windows.Forms.Button B_JPEG;
|
||||
private System.Windows.Forms.Label L_GameSync;
|
||||
private System.Windows.Forms.TextBox TB_GameSync;
|
||||
private System.Windows.Forms.Button B_SaveBoxBin;
|
||||
private System.Windows.Forms.Button B_VerifyCHK;
|
||||
private System.Windows.Forms.FlowLayoutPanel FLP_SAVtools;
|
||||
|
|
|
|||
|
|
@ -38,12 +38,6 @@ public void SetEditEnvironment(SaveDataEditor<PictureBox> value)
|
|||
public bool HaX;
|
||||
public bool ModifyPKM { private get; set; }
|
||||
|
||||
public bool HideSecretDetails
|
||||
{
|
||||
private get;
|
||||
set => ToggleSecrets(SAV, field = value);
|
||||
}
|
||||
|
||||
public ToolStripMenuItem Menu_Redo { get; set; } = null!;
|
||||
public ToolStripMenuItem Menu_Undo { get; set; } = null!;
|
||||
private bool FieldsLoaded;
|
||||
|
|
@ -511,8 +505,7 @@ private void OpenBoxViewer()
|
|||
z.BringToFront();
|
||||
return;
|
||||
}
|
||||
var form = new SAV_BoxViewer(this, M, Box.CurrentBox);
|
||||
form.Owner = FindForm();
|
||||
var form = new SAV_BoxViewer(this, M, Box.CurrentBox) { Owner = FindForm() };
|
||||
form.Show();
|
||||
}
|
||||
|
||||
|
|
@ -579,21 +572,6 @@ private void UpdateStringSeed(object sender, EventArgs e)
|
|||
if (GetCurrentDaycare() is { } s)
|
||||
SetDaycareSeed(s, filterText);
|
||||
}
|
||||
else if (tb == TB_GameSync && SAV is IGameSync sync)
|
||||
{
|
||||
var value = filterText.PadLeft(sync.GameSyncIDSize, '0');
|
||||
sync.GameSyncID = value;
|
||||
SAV.State.Edited = true;
|
||||
}
|
||||
else if (SAV is ISecureValueStorage s)
|
||||
{
|
||||
var value = Convert.ToUInt64(filterText, 16);
|
||||
if (tb == TB_Secure1)
|
||||
s.TimeStampCurrent = value;
|
||||
else if (tb == TB_Secure2)
|
||||
s.TimeStampPrevious = value;
|
||||
SAV.State.Edited = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void SetDaycareSeed(IDaycareStorage daycare, string filterText)
|
||||
|
|
@ -1357,7 +1335,6 @@ private void ToggleViewSubEditors(SaveFile sav)
|
|||
private void ToggleViewMisc(SaveFile sav)
|
||||
{
|
||||
// Generational Interface
|
||||
ToggleSecrets(sav, HideSecretDetails);
|
||||
B_VerifyCHK.Visible = SAV.State.Exportable;
|
||||
Menu_ExportBAK.Visible = SAV.State.Exportable && SAV.Metadata.FilePath is not null;
|
||||
|
||||
|
|
@ -1374,27 +1351,6 @@ private void ToggleViewMisc(SaveFile sav)
|
|||
{
|
||||
L_SaveSlot.Visible = CB_SaveSlot.Visible = false;
|
||||
}
|
||||
|
||||
if (sav is ISecureValueStorage s)
|
||||
{
|
||||
TB_Secure1.Text = s.TimeStampCurrent.ToString("X16");
|
||||
TB_Secure2.Text = s.TimeStampPrevious.ToString("X16");
|
||||
}
|
||||
|
||||
if (sav is IGameSync sync)
|
||||
{
|
||||
var gsid = sync.GameSyncID;
|
||||
TB_GameSync.Enabled = !string.IsNullOrEmpty(gsid);
|
||||
TB_GameSync.MaxLength = sync.GameSyncIDSize;
|
||||
TB_GameSync.Text = (string.IsNullOrEmpty(gsid) ? 0.ToString() : gsid).PadLeft(sync.GameSyncIDSize, '0');
|
||||
}
|
||||
}
|
||||
|
||||
private void ToggleSecrets(SaveFile sav, bool hide)
|
||||
{
|
||||
var shouldShow = sav.State.Exportable && !hide;
|
||||
TB_Secure1.Visible = TB_Secure2.Visible = L_Secure1.Visible = L_Secure2.Visible = shouldShow && sav is ISecureValueStorage;
|
||||
TB_GameSync.Visible = L_GameSync.Visible = shouldShow && sav is IGameSync;
|
||||
}
|
||||
|
||||
// DragDrop
|
||||
|
|
@ -1615,7 +1571,7 @@ private void B_SearchBox_Click(object sender, EventArgs e)
|
|||
return;
|
||||
}
|
||||
}
|
||||
if (_searchForm is null || !_searchForm.IsSameSaveFile(SAV))
|
||||
if (_searchForm?.IsSameSaveFile(SAV) != true)
|
||||
_searchForm = CreateSearcher(SAV, EditEnv.PKMEditor);
|
||||
|
||||
// Set the searcher Position immediately to the right of this parent form, and vertically aligned tops of forms.
|
||||
|
|
|
|||
|
|
@ -362,7 +362,7 @@ private void ReloadProgramSettings(PKHeXSettings settings, bool skipCore = false
|
|||
C_SAV.ModifyPKM = PKME_Tabs.ModifyPKM = settings.SlotWrite.SetUpdatePKM;
|
||||
C_SAV.FlagIllegal = settings.Display.FlagIllegal;
|
||||
C_SAV.M.Hover.GlowHover = settings.Hover.HoverSlotGlowEdges;
|
||||
PKME_Tabs.HideSecretValues = C_SAV.HideSecretDetails = settings.Privacy.HideSecretDetails;
|
||||
PKME_Tabs.HideSecretValues = settings.Privacy.HideSecretDetails;
|
||||
WinFormsUtil.DetectSaveFileOnFileOpen = settings.Startup.TryDetectRecentSave;
|
||||
SelectablePictureBox.FocusBorderDeflate = GenderToggle.FocusBorderDeflate = settings.Display.FocusBorderDeflate;
|
||||
|
||||
|
|
|
|||
|
|
@ -471,7 +471,6 @@ Main.L_DC2=2:
|
|||
Main.L_DynamaxLevel=Dynamax Level:
|
||||
Main.L_ExtraBytes=Extra Bytes:
|
||||
Main.L_FormArgument=Form Argument:
|
||||
Main.L_GameSync=Spielsynchro ID:
|
||||
Main.L_HeartGauge=Crypto-Meter:
|
||||
Main.L_Height=Höhe:
|
||||
Main.L_HomeTracker=HOME Tracker:
|
||||
|
|
@ -485,8 +484,6 @@ Main.L_PokeStarFame=Fame:
|
|||
Main.L_ReadOnlyOther=Dieser Tab ist nur lesbar.
|
||||
Main.L_SaveSlot=Speicher Slot:
|
||||
Main.L_Scale=Scale:
|
||||
Main.L_Secure1=Secure Value 1:
|
||||
Main.L_Secure2=Secure Value 2:
|
||||
Main.L_ShadowID=Crypto ID:
|
||||
Main.L_Spirit7b=Spirit:
|
||||
Main.L_TeraTypeOriginal=Original Tera Typ:
|
||||
|
|
|
|||
|
|
@ -471,7 +471,6 @@ Main.L_DC2=2:
|
|||
Main.L_DynamaxLevel=Dynamax Level:
|
||||
Main.L_ExtraBytes=Extra Bytes:
|
||||
Main.L_FormArgument=Form Argument:
|
||||
Main.L_GameSync=Game Sync ID:
|
||||
Main.L_HeartGauge=Heart Gauge:
|
||||
Main.L_Height=Height:
|
||||
Main.L_HomeTracker=HOME Tracker:
|
||||
|
|
@ -485,8 +484,6 @@ Main.L_PokeStarFame=Fame:
|
|||
Main.L_ReadOnlyOther=This tab is read only.
|
||||
Main.L_SaveSlot=Save Slot:
|
||||
Main.L_Scale=Scale:
|
||||
Main.L_Secure1=Secure Value 1:
|
||||
Main.L_Secure2=Secure Value 2:
|
||||
Main.L_ShadowID=Shadow ID:
|
||||
Main.L_Spirit7b=Spirit:
|
||||
Main.L_TeraTypeOriginal=Original Tera Type:
|
||||
|
|
|
|||
|
|
@ -471,7 +471,6 @@ Main.L_DC2=2:
|
|||
Main.L_DynamaxLevel=Nivel Dinamax:
|
||||
Main.L_ExtraBytes=Bytes extras:
|
||||
Main.L_FormArgument=Forma:
|
||||
Main.L_GameSync=ID de Sincronización:
|
||||
Main.L_HeartGauge=Medidor de Corazón:
|
||||
Main.L_Height=Altura:
|
||||
Main.L_HomeTracker=Rastreador HOME:
|
||||
|
|
@ -485,8 +484,6 @@ Main.L_PokeStarFame=Fame:
|
|||
Main.L_ReadOnlyOther=Sólo lectura.
|
||||
Main.L_SaveSlot=Ranura de guardado:
|
||||
Main.L_Scale=Escala:
|
||||
Main.L_Secure1=Valor seguro 1:
|
||||
Main.L_Secure2=Valor seguro 2:
|
||||
Main.L_ShadowID=ID Oscuro:
|
||||
Main.L_Spirit7b=Spirit:
|
||||
Main.L_TeraTypeOriginal=Teratipo original:
|
||||
|
|
|
|||
|
|
@ -471,7 +471,6 @@ Main.L_DC2=2:
|
|||
Main.L_DynamaxLevel=Nivel Dinamax:
|
||||
Main.L_ExtraBytes=Bytes extras:
|
||||
Main.L_FormArgument=Forma:
|
||||
Main.L_GameSync=ID de Sincronización:
|
||||
Main.L_HeartGauge=Medidor de Corazón:
|
||||
Main.L_Height=Altura:
|
||||
Main.L_HomeTracker=Rastreador HOME:
|
||||
|
|
@ -485,8 +484,6 @@ Main.L_PokeStarFame=Salón:
|
|||
Main.L_ReadOnlyOther=Sólo lectura.
|
||||
Main.L_SaveSlot=Ranura de guardado:
|
||||
Main.L_Scale=Escala:
|
||||
Main.L_Secure1=Valor seguro 1:
|
||||
Main.L_Secure2=Valor seguro 2:
|
||||
Main.L_ShadowID=ID Oscuro:
|
||||
Main.L_Spirit7b=Espíritu:
|
||||
Main.L_TeraTypeOriginal=Teratipo original:
|
||||
|
|
|
|||
|
|
@ -471,7 +471,6 @@ Main.L_DC2=2 :
|
|||
Main.L_DynamaxLevel=Niveau Dynamax :
|
||||
Main.L_ExtraBytes=Octets supplé. :
|
||||
Main.L_FormArgument=Argument de forme :
|
||||
Main.L_GameSync=ID de synchronisation de jeu :
|
||||
Main.L_HeartGauge=Jauge cœur :
|
||||
Main.L_Height=Taille :
|
||||
Main.L_HomeTracker=Tracker HOME :
|
||||
|
|
@ -485,8 +484,6 @@ Main.L_PokeStarFame=Prestige :
|
|||
Main.L_ReadOnlyOther=Cet onglet est en lecture seule.
|
||||
Main.L_SaveSlot=Sauvegarde :
|
||||
Main.L_Scale=Échelle :
|
||||
Main.L_Secure1=Valeur sécurité 1 :
|
||||
Main.L_Secure2=Valeur sécurité 2 :
|
||||
Main.L_ShadowID=ID Obscur :
|
||||
Main.L_Spirit7b=Esprit :
|
||||
Main.L_TeraTypeOriginal=Type Téra d'origine :
|
||||
|
|
|
|||
|
|
@ -471,7 +471,6 @@ Main.L_DC2=2:
|
|||
Main.L_DynamaxLevel=Livello Dynamax:
|
||||
Main.L_ExtraBytes=Byte Extra:
|
||||
Main.L_FormArgument=Form Argument:
|
||||
Main.L_GameSync=Game Sync ID:
|
||||
Main.L_HeartGauge=Cuore:
|
||||
Main.L_Height=Altezza:
|
||||
Main.L_HomeTracker=Monitoraggio HOME:
|
||||
|
|
@ -485,8 +484,6 @@ Main.L_PokeStarFame=Fame:
|
|||
Main.L_ReadOnlyOther=Questa sezione è di sola lettura.
|
||||
Main.L_SaveSlot=Slot Salvataggio:
|
||||
Main.L_Scale=Scala:
|
||||
Main.L_Secure1=Secure Value 1:
|
||||
Main.L_Secure2=Secure Value 2:
|
||||
Main.L_ShadowID=ID Ombra:
|
||||
Main.L_Spirit7b=Spirit:
|
||||
Main.L_TeraTypeOriginal=Teratipo originale:
|
||||
|
|
|
|||
|
|
@ -471,7 +471,6 @@ Main.L_DC2=2:
|
|||
Main.L_DynamaxLevel=ダイマックスレベル:
|
||||
Main.L_ExtraBytes=追加バイト
|
||||
Main.L_FormArgument=フォルム変数
|
||||
Main.L_GameSync=ゲームシンク ID:
|
||||
Main.L_HeartGauge=リライブゲージ
|
||||
Main.L_Height=高さ
|
||||
Main.L_HomeTracker=HOME Tracker
|
||||
|
|
@ -485,8 +484,6 @@ Main.L_PokeStarFame=Fame:
|
|||
Main.L_ReadOnlyOther=このタブは読み取り専用です
|
||||
Main.L_SaveSlot=セーブスロット:
|
||||
Main.L_Scale=サイズ
|
||||
Main.L_Secure1=Secure Value 1:
|
||||
Main.L_Secure2=Secure Value 2:
|
||||
Main.L_ShadowID=ダークポケモンID
|
||||
Main.L_Spirit7b=Spirit:
|
||||
Main.L_TeraTypeOriginal=元のテラスタイプ
|
||||
|
|
|
|||
|
|
@ -471,7 +471,6 @@ Main.L_DC2=2:
|
|||
Main.L_DynamaxLevel=다이맥스 레벨:
|
||||
Main.L_ExtraBytes=추가 바이트:
|
||||
Main.L_FormArgument=Form Argument:
|
||||
Main.L_GameSync=게임싱크 ID:
|
||||
Main.L_HeartGauge=배부름 게이지:
|
||||
Main.L_Height=키:
|
||||
Main.L_HomeTracker=HOME Tracker:
|
||||
|
|
@ -485,8 +484,6 @@ Main.L_PokeStarFame=Fame:
|
|||
Main.L_ReadOnlyOther=이 탭은 읽기 전용입니다.
|
||||
Main.L_SaveSlot=세이브 슬롯:
|
||||
Main.L_Scale=Scale:
|
||||
Main.L_Secure1=보안 값 1:
|
||||
Main.L_Secure2=보안 값 2:
|
||||
Main.L_ShadowID=다크 ID:
|
||||
Main.L_Spirit7b=Spirit:
|
||||
Main.L_TeraTypeOriginal=Original Tera Type:
|
||||
|
|
|
|||
|
|
@ -471,7 +471,6 @@ Main.L_DC2=2:
|
|||
Main.L_DynamaxLevel=极巨等级:
|
||||
Main.L_ExtraBytes=额外字节:
|
||||
Main.L_FormArgument=形态参数:
|
||||
Main.L_GameSync=游戏同步ID:
|
||||
Main.L_HeartGauge=净化计:
|
||||
Main.L_Height=身高:
|
||||
Main.L_HomeTracker=HOME追踪:
|
||||
|
|
@ -485,8 +484,6 @@ Main.L_PokeStarFame=名声:
|
|||
Main.L_ReadOnlyOther=此选项卡不可编辑。
|
||||
Main.L_SaveSlot=存档槽:
|
||||
Main.L_Scale=大小:
|
||||
Main.L_Secure1=安全值 1:
|
||||
Main.L_Secure2=安全值 2:
|
||||
Main.L_ShadowID=黑暗ID:
|
||||
Main.L_Spirit7b=心情:
|
||||
Main.L_TeraTypeOriginal=原始太晶属性:
|
||||
|
|
|
|||
|
|
@ -471,7 +471,6 @@ Main.L_DC2=2:
|
|||
Main.L_DynamaxLevel=極巨化等級:
|
||||
Main.L_ExtraBytes=額外位元組:
|
||||
Main.L_FormArgument=形態參數:
|
||||
Main.L_GameSync=遊戲同步ID:
|
||||
Main.L_HeartGauge=心靈計:
|
||||
Main.L_Height=身高:
|
||||
Main.L_HomeTracker=HOME追蹤碼:
|
||||
|
|
@ -485,8 +484,6 @@ Main.L_PokeStarFame=Fame:
|
|||
Main.L_ReadOnlyOther=此選項卡不可編輯。
|
||||
Main.L_SaveSlot=儲存資料槽:
|
||||
Main.L_Scale=尺寸:
|
||||
Main.L_Secure1=安保值 1:
|
||||
Main.L_Secure2=安保值 2:
|
||||
Main.L_ShadowID=黑暗ID:
|
||||
Main.L_Spirit7b=Spirit:
|
||||
Main.L_TeraTypeOriginal=原始太晶屬性:
|
||||
|
|
|
|||
|
|
@ -84,7 +84,6 @@ protected override void OnFormClosing(FormClosingEventArgs e)
|
|||
Hide();
|
||||
return;
|
||||
}
|
||||
CurrentSave = null;
|
||||
SearchFilter = null;
|
||||
base.OnFormClosing(e);
|
||||
}
|
||||
|
|
@ -137,7 +136,7 @@ private void B_Add_Click(object? sender, EventArgs e)
|
|||
tb.AppendText(s);
|
||||
}
|
||||
|
||||
public bool IsSameSaveFile(SaveFile sav) => CurrentSave is not null && CurrentSave == sav;
|
||||
public bool IsSameSaveFile(SaveFile sav) => CurrentSave == sav;
|
||||
|
||||
public void ForceReset()
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user