mirror of
https://github.com/kwsch/PKHeX
synced 2024-11-23 12:33:06 +00:00
39 lines
1 KiB
C#
39 lines
1 KiB
C#
using System;
|
|
|
|
namespace PKHeX.Core;
|
|
|
|
/// <summary>
|
|
/// Mystery Gift backed by serialized fields from ROM/SAV data, rather than observed specifications.
|
|
/// </summary>
|
|
public abstract class DataMysteryGift : MysteryGift
|
|
{
|
|
public readonly byte[] Data;
|
|
|
|
protected DataMysteryGift(byte[] data) => Data = data;
|
|
|
|
/// <summary>
|
|
/// Returns an array for exporting outside the program (to disk, etc).
|
|
/// </summary>
|
|
public virtual byte[] Write() => Data;
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
int hash = 17;
|
|
foreach (var b in Data)
|
|
hash = (hash * 31) + b;
|
|
return hash;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Creates a deep copy of the <see cref="MysteryGift"/> object data.
|
|
/// </summary>
|
|
public override MysteryGift Clone()
|
|
{
|
|
byte[] data = (byte[])Data.Clone();
|
|
var result = GetMysteryGift(data);
|
|
ArgumentNullException.ThrowIfNull(result);
|
|
return result;
|
|
}
|
|
|
|
public override bool Empty => Data.AsSpan().IndexOfAnyExcept<byte>(0) == -1;
|
|
}
|