NHSE/NHSE.Core/Save/Offsets/MainSaveOffsets.cs
Kurt 8db30c02da Simplify purpose of inventory editor
Edits an array of items
Add editing for the Recycle Bin -- main save (map).
2020-03-28 23:28:47 -07:00

34 lines
1.0 KiB
C#

using System;
namespace NHSE.Core
{
/// <summary>
/// Offset info and object retrieval logic for <see cref="MainSave"/>
/// </summary>
public abstract class MainSaveOffsets
{
public abstract int Villager { get; }
public const int VillagerSize = 0x12AB0;
public abstract int RecycleBin { get; }
public const int RecycleBinCount = 40;
public static MainSaveOffsets GetOffsets(FileHeaderInfo Info)
{
var rev = Info.GetKnownRevisionIndex();
return rev switch
{
0 => new MainSaveOffsets10(),
1 => new MainSaveOffsets11(),
2 => new MainSaveOffsets11(),
_ => throw new IndexOutOfRangeException("Unknown revision!"),
};
}
public abstract Villager ReadVillager(byte[] data, int index);
public void WriteVillager(Villager v, byte[] data, int index)
{
v.Data.CopyTo(data, Villager + (index * VillagerSize));
}
}
}