mirror of
https://github.com/kwsch/pkNX.git
synced 2026-03-22 10:14:22 -05:00
File scoped namespaces for all lib projects netstandard2.0 => net6; now uniform. bye netframework!
70 lines
1.8 KiB
C#
70 lines
1.8 KiB
C#
using System;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
|
|
namespace pkNX.Structures;
|
|
|
|
public class MegaEvolutionSet
|
|
{
|
|
private readonly byte[] Data;
|
|
private const int OFS_FORM = 0;
|
|
private const int OFS_METHOD = 2;
|
|
private const int OFS_ARGUMENT = 4;
|
|
public const int SIZE = 8;
|
|
|
|
public MegaEvolutionSet(byte[] data, int index)
|
|
{
|
|
Debug.Assert(data.Length % SIZE == 0);
|
|
Data = new byte[SIZE];
|
|
Array.Copy(data, index*SIZE, Data, 0, SIZE);
|
|
}
|
|
|
|
public static MegaEvolutionSet[] ReadArray(byte[] data)
|
|
{
|
|
var count = data.Length / SIZE;
|
|
var result = new MegaEvolutionSet[count];
|
|
for (int i = 0; i < count; i++)
|
|
result[i] = new MegaEvolutionSet(data, i);
|
|
return result;
|
|
}
|
|
|
|
public static byte[] WriteArray(MegaEvolutionSet[] data)
|
|
{
|
|
return data.SelectMany(z => z.Write()).ToArray();
|
|
}
|
|
|
|
public int ToForm
|
|
{
|
|
get => BitConverter.ToUInt16(Data, OFS_FORM);
|
|
set => BitConverter.GetBytes((ushort) value).CopyTo(Data, OFS_FORM);
|
|
}
|
|
|
|
public int Method
|
|
{
|
|
get => BitConverter.ToUInt16(Data, OFS_METHOD);
|
|
set => BitConverter.GetBytes((ushort)value).CopyTo(Data, OFS_METHOD);
|
|
}
|
|
|
|
public int Argument
|
|
{
|
|
get => BitConverter.ToUInt16(Data, OFS_ARGUMENT);
|
|
set => BitConverter.GetBytes((ushort)value).CopyTo(Data, OFS_ARGUMENT);
|
|
}
|
|
|
|
public void Clear()
|
|
{
|
|
for (int i = 0; i < Data.Length; i++)
|
|
Data[i] = 0;
|
|
}
|
|
|
|
public byte[] Write() => (byte[])Data.Clone();
|
|
|
|
public void Write(byte[] data, int index) => Data.CopyTo(data, index * SIZE);
|
|
|
|
public void RemoveRestrictions()
|
|
{
|
|
if (Method != (int) MegaEvolutionMethod.None)
|
|
Method = (int) MegaEvolutionMethod.NoRequirement;
|
|
}
|
|
}
|