This commit is contained in:
Dr. Victor Vasconcelos 2025-08-09 19:30:09 -04:00 committed by GitHub
commit 682c14a5c4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -11,6 +11,8 @@
using pkNX.Structures.FlatBuffers.Arceus;
using static pkNX.Structures.Species;
using Util = pkNX.Randomization.Util;
using FlatSharp;
using System.Buffers;
namespace pkNX.WinForms.Subforms;
@ -165,9 +167,38 @@ private void B_Save_Click(object sender, EventArgs e)
private void AreaEditor8a_FormClosing(object sender, FormClosingEventArgs e)
{
if (Save)
if (Save){
SaveArea();
else
SaveSettings();
}
else {
Resident.CancelEdits();
}
}
private void SaveSettings()
{
TryWrite("bin/field/resident/AreaSettings.bin", Settings);
}
private static byte[] Write<T>(T obj) where T : class, IFlatBufferSerializable<T>
{
var pool = ArrayPool<byte>.Shared;
var serializer = obj.Serializer;
var data = pool.Rent(serializer.GetMaxSize(obj));
var len = serializer.Write(data, obj);
var result = data.AsSpan(0, len).ToArray();
pool.Return(data);
return result;
}
private void TryWrite<T>(string path, T obj) where T : class, IFlatBufferSerializable<T>
{
var index = Resident.GetIndexFull(path);
if (index == -1)
return;
byte[] result = Write(obj);
Resident[index] = result;
}
}