Add HoF time block accessor object

Not gonna add it to the interface
Closes #2691

Co-Authored-By: canoehope <canoehope@users.noreply.github.com>
This commit is contained in:
Kurt 2020-02-07 15:59:36 -08:00
parent c08cf9c95f
commit a73f14836d
2 changed files with 42 additions and 0 deletions

View file

@ -21,6 +21,7 @@ namespace PKHeX.Core
public RaidSpawnList8 Raid { get; }
public TitleScreen8 TitleScreen { get; }
public TeamIndexes8 TeamIndexes { get; }
public HallOfFameTime8 FameTime { get; }
public SaveBlockAccessor8SWSH(SAV8SWSH sav)
{
@ -41,6 +42,7 @@ namespace PKHeX.Core
Raid = new RaidSpawnList8(sav, GetBlock(KRaidSpawnList));
TitleScreen = new TitleScreen8(sav, GetBlock(KTitleScreenTeam));
TeamIndexes = new TeamIndexes8(sav, GetBlock(KTeamIndexes));
FameTime = new HallOfFameTime8(sav, GetBlock(KEnteredHallOfFame));
}
/* To dump key list of current format, use the following in the immediate window, and update Meta8

View file

@ -0,0 +1,40 @@
using System;
using System.Diagnostics;
using System.ComponentModel;
namespace PKHeX.Core
{
public sealed class HallOfFameTime8 : SaveBlock
{
public HallOfFameTime8(SAV8SWSH sav, SCBlock block) : base(sav, block.Data)
{
Debug.Assert(Data.Length == 8);
}
private const string General = nameof(General);
[Category(General), Description("Raw amount of seconds since 1970 (Unix Timestamp)")]
public long TimeStamp
{
get => BitConverter.ToInt64(Data, Offset + 0);
set => SAV.SetData(Data, BitConverter.GetBytes(value), Offset + 0);
}
[Category(General), Description("Date and Time (UTC) the player entered the Hall Of Fame")]
public DateTime Date
{
get
{
var epoch = new DateTime(1970, 1, 1);
var date = epoch.AddSeconds(TimeStamp);
return date;
}
set
{
var epoch = new DateTime(1970, 1, 1);
var delta = value.Subtract(epoch);
TimeStamp = (long)delta.TotalSeconds;
}
}
}
}