Implement SetFields

This commit is contained in:
Matt Nadareski
2020-08-21 10:16:05 -07:00
parent be71748d14
commit 2ffa22ebaa
6 changed files with 379 additions and 1 deletions

View File

@@ -1,4 +1,6 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using SabreTools.Library.Data;
using SabreTools.Library.DatFiles;
@@ -236,6 +238,70 @@ namespace SabreTools.Library.DatItems
return fieldValue;
}
/// <summary>
/// Set fields with given values
/// </summary>
/// <param name="mappings">Mappings dictionary</param>
public override void SetFields(Dictionary<Field, string> mappings)
{
// Set base fields
base.SetFields(mappings);
// Handle Rom-specific fields
if (mappings.Keys.Contains(Field.Bios))
Bios = mappings[Field.Bios];
if (mappings.Keys.Contains(Field.Size))
{
if (Int64.TryParse(mappings[Field.Size], out long size))
Size = size;
}
if (mappings.Keys.Contains(Field.CRC))
CRC = mappings[Field.CRC];
if (mappings.Keys.Contains(Field.MD5))
MD5 = mappings[Field.MD5];
#if NET_FRAMEWORK
if (mappings.Keys.Contains(Field.RIPEMD160))
RIPEMD160 = mappings[Field.RIPEMD160];
#endif
if (mappings.Keys.Contains(Field.SHA1))
SHA1 = mappings[Field.SHA1];
if (mappings.Keys.Contains(Field.SHA256))
SHA256 = mappings[Field.SHA256];
if (mappings.Keys.Contains(Field.SHA384))
SHA384 = mappings[Field.SHA384];
if (mappings.Keys.Contains(Field.SHA512))
SHA512 = mappings[Field.SHA512];
if (mappings.Keys.Contains(Field.Merge))
MergeTag = mappings[Field.Merge];
if (mappings.Keys.Contains(Field.Region))
Region = mappings[Field.Region];
if (mappings.Keys.Contains(Field.Offset))
Offset = mappings[Field.Offset];
if (mappings.Keys.Contains(Field.Date))
Date = mappings[Field.Date];
if (mappings.Keys.Contains(Field.Status))
ItemStatus = mappings[Field.Status].AsItemStatus();
if (mappings.Keys.Contains(Field.Optional))
Optional = mappings[Field.Optional].AsYesNo();
if (mappings.Keys.Contains(Field.Inverted))
Inverted = mappings[Field.Optional].AsYesNo();
}
#endregion
#region Constructors