mirror of
https://github.com/kwsch/pkNX.git
synced 2026-04-24 23:06:56 -05:00
Merge 0b3de10461 into 898f9d7708
This commit is contained in:
commit
682c14a5c4
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user