mirror of
https://github.com/kwsch/pkNX.git
synced 2026-08-25 03:44:29 -05:00
Add static/gift/trade generic editors
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
namespace pkNX.Structures
|
||||
{
|
||||
public class EncounterGift8Archive
|
||||
public class EncounterGift8Archive : IFlatBufferArchive<EncounterGift8>
|
||||
{
|
||||
public EncounterGift8[] Encounters { get; set; }
|
||||
public EncounterGift8[] Table { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
namespace pkNX.Structures
|
||||
{
|
||||
public class EncounterStatic8Archive
|
||||
public class EncounterStatic8Archive : IFlatBufferArchive<EncounterStatic8>
|
||||
{
|
||||
public EncounterStatic8[] Encounters { get; set; }
|
||||
public EncounterStatic8[] Table { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace pkNX.Structures
|
||||
{
|
||||
public interface IFlatBufferArchive<T> where T : class
|
||||
{
|
||||
T[] Table { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
namespace pkNX.Structures
|
||||
{
|
||||
public class EncounterTrade8Archive
|
||||
public class EncounterTrade8Archive : IFlatBufferArchive<EncounterTrade8>
|
||||
{
|
||||
public EncounterTrade8[] Table { get; set; }
|
||||
}
|
||||
|
||||
@@ -266,7 +266,7 @@ public void DumpGifts()
|
||||
{
|
||||
var path = ROM.GetFile(GameFile.EncounterGift).FilePath;
|
||||
var gifts = FlatBufferConverter.DeserializeFrom<EncounterGift8Archive>(path);
|
||||
var table = TableUtil.GetTable(gifts.Encounters);
|
||||
var table = TableUtil.GetTable(gifts.Table);
|
||||
var fn = GetPath("GiftEncounters.txt");
|
||||
File.WriteAllText(fn, table);
|
||||
}
|
||||
@@ -275,7 +275,7 @@ public void DumpStatic()
|
||||
{
|
||||
var path = ROM.GetFile(GameFile.EncounterStatic).FilePath;
|
||||
var gifts = FlatBufferConverter.DeserializeFrom<EncounterStatic8Archive>(path);
|
||||
var table = TableUtil.GetTable(gifts.Encounters);
|
||||
var table = TableUtil.GetTable(gifts.Table);
|
||||
var fn = GetPath("StaticEncounters.txt");
|
||||
File.WriteAllText(fn, table);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using pkNX.Containers;
|
||||
using pkNX.Game;
|
||||
using pkNX.Structures;
|
||||
@@ -203,7 +204,7 @@ private void PopWildEdit(string file)
|
||||
|
||||
using var form = new SSWE(ROM, s, h);
|
||||
form.ShowDialog();
|
||||
if (!form.Saved)
|
||||
if (!form.Modified)
|
||||
return;
|
||||
|
||||
var sd = FlatBufferConverter.SerializeFrom(s);
|
||||
@@ -214,6 +215,49 @@ private void PopWildEdit(string file)
|
||||
fp[0] = data_table.Write();
|
||||
}
|
||||
|
||||
public void EditStatic()
|
||||
{
|
||||
var arc = ROM.GetFile(GameFile.EncounterStatic);
|
||||
var data = arc[0];
|
||||
if (CreateGenericEditor<EncounterStatic8Archive, EncounterStatic8>(ref data, "Static Encounters"))
|
||||
arc[0] = data;
|
||||
}
|
||||
|
||||
public void EditGift()
|
||||
{
|
||||
var arc = ROM.GetFile(GameFile.EncounterGift);
|
||||
var data = arc[0];
|
||||
if (CreateGenericEditor<EncounterGift8Archive, EncounterGift8>(ref data, "Gift Encounters"))
|
||||
arc[0] = data;
|
||||
}
|
||||
|
||||
public void EditTrade()
|
||||
{
|
||||
var arc = ROM.GetFile(GameFile.EncounterTrade);
|
||||
var data = arc[0];
|
||||
if (CreateGenericEditor<EncounterTrade8Archive, EncounterTrade8>(ref data, "Trade Encounters"))
|
||||
arc[0] = data;
|
||||
}
|
||||
|
||||
private bool CreateGenericEditor<TA, T1>(ref byte[] data, string title, string[] names = null) where TA : IFlatBufferArchive<T1> where T1 : class
|
||||
{
|
||||
var objs = FlatBufferConverter.DeserializeFrom<TA>(data);
|
||||
if (names == null)
|
||||
names = Enumerable.Range(1, objs.Table.Length).Select(z => z.ToString()).ToArray();
|
||||
var result = PopEdit(objs.Table, title, names);
|
||||
if (result)
|
||||
data = FlatBufferConverter.SerializeFrom(objs);
|
||||
return result;
|
||||
}
|
||||
|
||||
private bool PopEdit<T>(T[] data, string title, string[] names) where T : class
|
||||
{
|
||||
var cache = new DirectCache<T>(data);
|
||||
using var form = new GenericEditor<T>(cache, names, title);
|
||||
form.ShowDialog();
|
||||
return form.Modified;
|
||||
}
|
||||
|
||||
public void EditMasterDump()
|
||||
{
|
||||
using var md = new DumperSWSH((GameManagerSWSH)ROM);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
namespace pkNX.Structures;
|
||||
|
||||
table EncounterGift8Archive {
|
||||
Encounters:[EncounterGift8];
|
||||
Table:[EncounterGift8];
|
||||
}
|
||||
|
||||
table EncounterGift8 {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
namespace pkNX.Structures;
|
||||
|
||||
table EncounterStatic8Archive {
|
||||
Encounters:[EncounterStatic8];
|
||||
Table:[EncounterStatic8];
|
||||
}
|
||||
|
||||
table EncounterStatic8 {
|
||||
|
||||
@@ -52,7 +52,7 @@ public LocationHash(ulong hash, string loc)
|
||||
}
|
||||
}
|
||||
|
||||
public bool Saved { get; private set; }
|
||||
public bool Modified { get; private set; }
|
||||
|
||||
public void LoadLocations()
|
||||
{
|
||||
@@ -136,7 +136,7 @@ void Save(EncounterList8[] arr, EncounterArchive8 arc)
|
||||
private void B_Save_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveEntry(entry);
|
||||
Saved = true;
|
||||
Modified = true;
|
||||
Close();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user