PKHeX/PKHeX.Core/MysteryGifts/WC6Full.cs
Kurt fc754b346b
File scoped namespaces (#3529)
[Language Reference](https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-10.0/file-scoped-namespaces)

Updates all the files, one less level of indentation.

Some small changes were made to API surfaces, renaming `PKM pkm` -> `PKM pk`, and `LegalityAnalysis.pkm` -> `LegalityAnalysis.Entity`
2022-06-18 11:04:24 -07:00

58 lines
1.8 KiB
C#

using System;
namespace PKHeX.Core;
public sealed class WC6Full
{
public const int Size = 0x310;
private const int GiftStart = Size - WC6.Size;
public readonly byte[] Data;
public readonly WC6 Gift;
public byte RestrictVersion { get => Data[0]; set => Data[0] = value; }
public byte RestrictLanguage { get => Data[0x1FF]; set => Data[0x1FF] = value; }
public WC6Full(byte[] data)
{
Data = data;
var wc6 = data.SliceEnd(GiftStart);
Gift = new WC6(wc6);
var now = DateTime.Now;
Gift.RawDate = WC6.SetDate((uint)now.Year, (uint)now.Month, (uint)now.Day);
Gift.RestrictVersion = RestrictVersion;
Gift.RestrictLanguage = RestrictLanguage;
}
public static WC6[] GetArray(ReadOnlySpan<byte> WC6Full, ReadOnlySpan<byte> data)
{
var countfull = WC6Full.Length / Size;
var countgift = data.Length / WC6.Size;
var result = new WC6[countfull + countgift];
var now = DateTime.Now;
for (int i = 0; i < countfull; i++)
result[i] = ReadWC6(WC6Full, i * Size, now);
for (int i = 0; i < countgift; i++)
result[i + countfull] = ReadWC6Only(data, i * WC6.Size);
return result;
}
private static WC6 ReadWC6(ReadOnlySpan<byte> data, int ofs, DateTime date)
{
var slice = data.Slice(ofs + GiftStart, WC6.Size).ToArray();
return new WC6(slice)
{
RestrictVersion = data[ofs],
RestrictLanguage = data[ofs + 0x1FF],
RawDate = WC6.SetDate((uint)date.Year, (uint)date.Month, (uint)date.Day),
};
}
private static WC6 ReadWC6Only(ReadOnlySpan<byte> data, int ofs)
{
var slice = data.Slice(ofs, WC6.Size).ToArray();
return new WC6(slice);
}
}