From 8a9a9686c50c5000163cd33aa068b2a86ac07950 Mon Sep 17 00:00:00 2001 From: Kurt Date: Sat, 3 Mar 2018 23:03:11 -0800 Subject: [PATCH] Use cached learnset for learnset editors Closes #298 --- pk3DS.Core/StructConverter.cs | 7 +++---- pk3DS/Main.cs | 9 +++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pk3DS.Core/StructConverter.cs b/pk3DS.Core/StructConverter.cs index 1de1890..224bc91 100644 --- a/pk3DS.Core/StructConverter.cs +++ b/pk3DS.Core/StructConverter.cs @@ -7,10 +7,9 @@ public static class StructConverter { public static T ToStructure(this byte[] bytes) where T : struct { - GCHandle handle = GCHandle.Alloc(bytes, GCHandleType.Pinned); - T obj = (T)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(T)); - handle.Free(); - return obj; + var handle = GCHandle.Alloc(bytes, GCHandleType.Pinned); + try { return (T)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(T)); } + finally { handle.Free(); } } public static byte[] ToBytes(this T obj) where T : struct { diff --git a/pk3DS/Main.cs b/pk3DS/Main.cs index 005070d..99827f8 100644 --- a/pk3DS/Main.cs +++ b/pk3DS/Main.cs @@ -781,6 +781,7 @@ private void B_Move_Click(object sender, EventArgs e) break; } g.Save(); + Config.InitializeMoves(); }).Start(); } private void B_LevelUp_Click(object sender, EventArgs e) @@ -788,8 +789,7 @@ private void B_LevelUp_Click(object sender, EventArgs e) if (threadActive()) return; new Thread(() => { - var g = Config.getGARCData("levelup"); - byte[][] d = g.Files; + byte[][] d = Config.GARCLearnsets.Files; switch (Config.Generation) { case 6: @@ -799,8 +799,9 @@ private void B_LevelUp_Click(object sender, EventArgs e) Invoke((Action)(() => new LevelUpEditor7(d).ShowDialog())); break; } - g.Files = d; - g.Save(); + Config.GARCLearnsets.Files = d; + Config.GARCLearnsets.Save(); + Config.InitializePersonal(); }).Start(); } private void B_EggMove_Click(object sender, EventArgs e)