mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
Create and use DisplayType, LoadFlag enums
This commit is contained in:
@@ -4,6 +4,7 @@ using System.Linq;
|
||||
using SabreTools.Library.Filtering;
|
||||
using SabreTools.Library.Tools;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Converters;
|
||||
|
||||
namespace SabreTools.Library.DatItems
|
||||
{
|
||||
@@ -25,7 +26,8 @@ namespace SabreTools.Library.DatItems
|
||||
/// Display type
|
||||
/// </summary>
|
||||
[JsonProperty("type", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string DisplayType { get; set; } // TODO: (raster|vector|lcd|svg|unknown)
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public DisplayType DisplayType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Display rotation
|
||||
@@ -117,7 +119,7 @@ namespace SabreTools.Library.DatItems
|
||||
Tag = mappings[Field.DatItem_Tag];
|
||||
|
||||
if (mappings.Keys.Contains(Field.DatItem_DisplayType))
|
||||
DisplayType = mappings[Field.DatItem_DisplayType];
|
||||
DisplayType = mappings[Field.DatItem_DisplayType].AsDisplayType();
|
||||
|
||||
if (mappings.Keys.Contains(Field.DatItem_Rotate))
|
||||
Rotate = mappings[Field.DatItem_Rotate];
|
||||
@@ -252,9 +254,9 @@ namespace SabreTools.Library.DatItems
|
||||
return false;
|
||||
|
||||
// Filter on display type
|
||||
if (filter.DatItem_DisplayType.MatchesPositiveSet(DisplayType) == false)
|
||||
if (filter.DatItem_DisplayType.MatchesPositive(DisplayType.NULL, DisplayType) == false)
|
||||
return false;
|
||||
if (filter.DatItem_DisplayType.MatchesNegativeSet(DisplayType) == true)
|
||||
if (filter.DatItem_DisplayType.MatchesNegative(DisplayType.NULL, DisplayType) == true)
|
||||
return false;
|
||||
|
||||
// Filter on rotation
|
||||
@@ -344,7 +346,7 @@ namespace SabreTools.Library.DatItems
|
||||
Tag = null;
|
||||
|
||||
if (fields.Contains(Field.DatItem_DisplayType))
|
||||
DisplayType = null;
|
||||
DisplayType = DisplayType.NULL;
|
||||
|
||||
if (fields.Contains(Field.DatItem_Rotate))
|
||||
Rotate = null;
|
||||
|
||||
@@ -17,6 +17,24 @@ namespace SabreTools.Library.DatItems
|
||||
Audio = 1 << 1,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determine the display type
|
||||
/// </summary>
|
||||
[Flags]
|
||||
public enum DisplayType
|
||||
{
|
||||
/// <summary>
|
||||
/// This is a fake flag that is used for filter only
|
||||
/// </summary>
|
||||
NULL = 0,
|
||||
|
||||
Raster = 1 << 0,
|
||||
Vector = 1 << 1,
|
||||
LCD = 1 << 2,
|
||||
SVG = 1 << 3,
|
||||
Unknown = 1 << 4,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determines which type of duplicate a file is
|
||||
/// </summary>
|
||||
@@ -78,7 +96,6 @@ namespace SabreTools.Library.DatItems
|
||||
/// List of valid field types within a DatItem/Machine
|
||||
/// </summary>
|
||||
/// TODO: Move this to a more common location
|
||||
/// TODO: Ensure the order of these after all shuffling
|
||||
public enum Field : int
|
||||
{
|
||||
NULL = 0,
|
||||
@@ -469,19 +486,30 @@ namespace SabreTools.Library.DatItems
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determine which OpenMSX subtype an item is
|
||||
/// Determine the loadflag value
|
||||
/// </summary>
|
||||
[Flags]
|
||||
public enum OpenMSXSubType
|
||||
public enum LoadFlag
|
||||
{
|
||||
/// <summary>
|
||||
/// This is a fake flag that is used for filter only
|
||||
/// </summary>
|
||||
NULL = 0,
|
||||
|
||||
Rom = 1 << 0,
|
||||
MegaRom = 1 << 1,
|
||||
SCCPlusCart = 1 << 2,
|
||||
Load16Byte = 1 << 0,
|
||||
Load16Word = 1 << 1,
|
||||
Load16WordSwap = 1 << 2,
|
||||
Load32Byte = 1 << 3,
|
||||
Load32Word = 1 << 4,
|
||||
Load32WordSwap = 1 << 5,
|
||||
Load32DWord = 1 << 6,
|
||||
Load64Word = 1 << 7,
|
||||
Load64WordSwap = 1 << 8,
|
||||
Reload = 1 << 9,
|
||||
Fill = 1 << 10,
|
||||
Continue = 1 << 11,
|
||||
ReloadPlain = 1 << 12,
|
||||
Ignore = 1 << 13,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -500,6 +528,22 @@ namespace SabreTools.Library.DatItems
|
||||
Mechanical = 1 << 3,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determine which OpenMSX subtype an item is
|
||||
/// </summary>
|
||||
[Flags]
|
||||
public enum OpenMSXSubType
|
||||
{
|
||||
/// <summary>
|
||||
/// This is a fake flag that is used for filter only
|
||||
/// </summary>
|
||||
NULL = 0,
|
||||
|
||||
Rom = 1 << 0,
|
||||
MegaRom = 1 << 1,
|
||||
SCCPlusCart = 1 << 2,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determine machine runnable status
|
||||
/// </summary>
|
||||
|
||||
@@ -402,9 +402,6 @@ namespace SabreTools.Library.DatItems
|
||||
if (mappings.Keys.Contains(Field.Machine_Supported))
|
||||
Supported = mappings[Field.Machine_Supported].AsSupported();
|
||||
|
||||
// TODO: Add Machine_Info*
|
||||
// TODO: Add Machine_SharedFeature*
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
|
||||
@@ -235,8 +235,8 @@ namespace SabreTools.Library.DatItems
|
||||
/// Loading flag
|
||||
/// </summary>
|
||||
[JsonProperty("loadflag", DefaultValueHandling = DefaultValueHandling.Ignore)]
|
||||
public string LoadFlag { get; set; } // TODO: (load16_byte|load16_word|load16_word_swap|load32_byte|load32_word|load32_word_swap|load32_dword|load64_word|load64_word_swap|reload|fill|continue|reload_plain|ignore)
|
||||
|
||||
[JsonConverter(typeof(StringEnumConverter))]
|
||||
public LoadFlag LoadFlag { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Original hardware part associated with the item
|
||||
@@ -401,7 +401,7 @@ namespace SabreTools.Library.DatItems
|
||||
}
|
||||
|
||||
if (mappings.Keys.Contains(Field.DatItem_LoadFlag))
|
||||
LoadFlag = mappings[Field.DatItem_LoadFlag];
|
||||
LoadFlag = mappings[Field.DatItem_LoadFlag].AsLoadFlag();
|
||||
|
||||
if (mappings.Keys.Contains(Field.DatItem_Part_Name))
|
||||
{
|
||||
@@ -919,9 +919,9 @@ namespace SabreTools.Library.DatItems
|
||||
return false;
|
||||
|
||||
// Filter on load flag
|
||||
if (filter.DatItem_LoadFlag.MatchesPositiveSet(LoadFlag) == false)
|
||||
if (filter.DatItem_LoadFlag.MatchesPositive(LoadFlag.NULL, LoadFlag) == false)
|
||||
return false;
|
||||
if (filter.DatItem_LoadFlag.MatchesNegativeSet(LoadFlag) == true)
|
||||
if (filter.DatItem_LoadFlag.MatchesNegative(LoadFlag.NULL, LoadFlag) == true)
|
||||
return false;
|
||||
|
||||
// Filter on part name
|
||||
@@ -942,7 +942,7 @@ namespace SabreTools.Library.DatItems
|
||||
if (filter.DatItem_Value.MatchesNegativeSet(Value) == true)
|
||||
return false;
|
||||
|
||||
// TODO: Handle DatItem_Feature*
|
||||
// TODO: Handle DatItem_Part_Feature*
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -1073,7 +1073,7 @@ namespace SabreTools.Library.DatItems
|
||||
}
|
||||
|
||||
if (fields.Contains(Field.DatItem_LoadFlag))
|
||||
LoadFlag = null;
|
||||
LoadFlag = LoadFlag.NULL;
|
||||
|
||||
if (fields.Contains(Field.DatItem_Part_Name) && Part != null)
|
||||
Part.Name = null;
|
||||
@@ -1081,7 +1081,7 @@ namespace SabreTools.Library.DatItems
|
||||
if (fields.Contains(Field.DatItem_Part_Interface) && Part != null)
|
||||
Part.Interface = null;
|
||||
|
||||
// TODO: Handle DatItem_Feature*
|
||||
// TODO: Handle DatItem_Part_Feature*
|
||||
|
||||
if (fields.Contains(Field.DatItem_Value))
|
||||
Value = null;
|
||||
|
||||
Reference in New Issue
Block a user