diff --git a/SabreTools.Data.Extensions/MetadataExtensions.cs b/SabreTools.Data.Extensions/MetadataExtensions.cs
index 04bb71b0..38e5831a 100644
--- a/SabreTools.Data.Extensions/MetadataExtensions.cs
+++ b/SabreTools.Data.Extensions/MetadataExtensions.cs
@@ -286,6 +286,9 @@ namespace SabreTools.Data.Extensions
}
else if (self is Input selfInput && clone is Input cloneInput)
{
+ cloneInput.Buttons = selfInput.Buttons;
+ cloneInput.Coins = selfInput.Coins;
+ cloneInput.Players = selfInput.Players;
cloneInput.Service = selfInput.Service;
cloneInput.Tilt = selfInput.Tilt;
}
diff --git a/SabreTools.Data.Models/ClrMamePro/Input.cs b/SabreTools.Data.Models/ClrMamePro/Input.cs
index a956575a..94217a4c 100644
--- a/SabreTools.Data.Models/ClrMamePro/Input.cs
+++ b/SabreTools.Data.Models/ClrMamePro/Input.cs
@@ -4,19 +4,19 @@ namespace SabreTools.Data.Models.ClrMamePro
/// input
public class Input
{
- /// "players", Numeric/remarks>
+ /// "players"/remarks>
[Required]
- public string? Players { get; set; }
+ public long? Players { get; set; }
/// "control"
public string? Control { get; set; }
- /// "buttons", Numeric
+ /// "buttons"
[Required]
- public string? Buttons { get; set; }
+ public long? Buttons { get; set; }
- /// "coins", Numeric
- public string? Coins { get; set; }
+ /// "coins"
+ public long? Coins { get; set; }
/// "tilt", (yes|no) "no"
public bool? Tilt { get; set; }
diff --git a/SabreTools.Data.Models/Listxml/Input.cs b/SabreTools.Data.Models/Listxml/Input.cs
index 438e7a6c..e6f62971 100644
--- a/SabreTools.Data.Models/Listxml/Input.cs
+++ b/SabreTools.Data.Models/Listxml/Input.cs
@@ -14,22 +14,20 @@ namespace SabreTools.Data.Models.Listxml
[XmlAttribute("tilt")]
public bool? Tilt { get; set; }
- /// Numeric
[Required]
[XmlAttribute("players")]
- public string? Players { get; set; }
+ public long? Players { get; set; }
/// Only present in older versions
[XmlAttribute("control")]
public string? ControlAttr { get; set; }
- /// Only present in older versions, Numeric?
+ /// Only present in older versions
[XmlAttribute("buttons")]
- public string? Buttons { get; set; }
+ public long? Buttons { get; set; }
- /// Numeric?
[XmlAttribute("coins")]
- public string? Coins { get; set; }
+ public long? Coins { get; set; }
[XmlElement("control")]
public Control[]? Control { get; set; }
diff --git a/SabreTools.Data.Models/Metadata/Input.cs b/SabreTools.Data.Models/Metadata/Input.cs
index 47d9069b..9496337c 100644
--- a/SabreTools.Data.Models/Metadata/Input.cs
+++ b/SabreTools.Data.Models/Metadata/Input.cs
@@ -8,6 +8,12 @@ namespace SabreTools.Data.Models.Metadata
{
#region Properties
+ public long? Buttons { get; set; }
+
+ public long? Coins { get; set; }
+
+ public long? Players { get; set; }
+
/// (yes|no) "no"
public bool? Service { get; set; }
@@ -18,18 +24,9 @@ namespace SabreTools.Data.Models.Metadata
#region Keys
- /// long
- public const string ButtonsKey = "buttons";
-
- /// long
- public const string CoinsKey = "coins";
-
/// string / Control[]
public const string ControlKey = "control";
- /// long
- public const string PlayersKey = "players";
-
#endregion
public Input() => ItemType = ItemType.Input;
diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs
index 2cb6f275..d28bbfbc 100644
--- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs
+++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.FromMetadata.cs
@@ -662,10 +662,10 @@ namespace SabreTools.Metadata.DatFiles.Test
{
return new Data.Models.Metadata.Input
{
- [Data.Models.Metadata.Input.ButtonsKey] = 12345L,
- [Data.Models.Metadata.Input.CoinsKey] = 12345L,
+ Buttons = 12345,
+ Coins = 12345,
[Data.Models.Metadata.Input.ControlKey] = new Data.Models.Metadata.Control[] { CreateMetadataControl() },
- [Data.Models.Metadata.Input.PlayersKey] = 12345L,
+ Players = 12345,
Service = true,
Tilt = true,
};
@@ -1413,9 +1413,9 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateInput(Input? input)
{
Assert.NotNull(input);
- Assert.Equal(12345L, input.ReadLong(Data.Models.Metadata.Input.ButtonsKey));
- Assert.Equal(12345L, input.ReadLong(Data.Models.Metadata.Input.CoinsKey));
- Assert.Equal(12345L, input.ReadLong(Data.Models.Metadata.Input.PlayersKey));
+ Assert.Equal(12345, input.Buttons);
+ Assert.Equal(12345, input.Coins);
+ Assert.Equal(12345, input.Players);
Assert.True(input.Service);
Assert.True(input.Tilt);
@@ -1665,8 +1665,8 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateVideo(Display? display)
{
Assert.NotNull(display);
- Assert.Equal(12345L, display.AspectX);
- Assert.Equal(12345L, display.AspectY);
+ Assert.Equal(12345, display.AspectX);
+ Assert.Equal(12345, display.AspectY);
Assert.Equal(Data.Models.Metadata.DisplayType.Vector, display.DisplayType);
Assert.Equal(12345, display.Height);
Assert.Equal(123.45, display.Refresh);
diff --git a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs
index a9597646..3734d6ba 100644
--- a/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs
+++ b/SabreTools.Metadata.DatFiles.Test/DatFileTests.ToMetadata.cs
@@ -894,7 +894,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Emulation);
Assert.True(driver.Incomplete);
Assert.True(driver.NoSoundHardware);
- Assert.Equal("pallettesize", driver.PaletteSize);
+ Assert.Equal("palettesize", driver.PaletteSize);
Assert.True(driver.RequiresArtwork);
Assert.Equal(Data.Models.Metadata.Supported.Yes, driver.SaveState);
Assert.Equal(Data.Models.Metadata.SupportStatus.Good, driver.Sound);
@@ -928,9 +928,9 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateMetadataInput(Data.Models.Metadata.Input? input)
{
Assert.NotNull(input);
- Assert.Equal(12345, input.ReadLong(Data.Models.Metadata.Input.ButtonsKey));
- Assert.Equal(12345, input.ReadLong(Data.Models.Metadata.Input.CoinsKey));
- Assert.Equal(12345, input.ReadLong(Data.Models.Metadata.Input.PlayersKey));
+ Assert.Equal(12345, input.Buttons);
+ Assert.Equal(12345, input.Coins);
+ Assert.Equal(12345, input.Players);
Assert.True(input.Service);
Assert.True(input.Tilt);
diff --git a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs
index 22ea4e17..30522099 100644
--- a/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs
+++ b/SabreTools.Metadata.DatFiles.Test/FormatsTests.cs
@@ -229,7 +229,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
- Data.Models.Metadata.Input.PlayersKey,
+ nameof(Data.Models.Metadata.Input.Players),
Data.Models.Metadata.Input.ControlKey,
]));
}
@@ -908,7 +908,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
- Data.Models.Metadata.Input.PlayersKey,
+ nameof(Data.Models.Metadata.Input.Players),
]));
}
diff --git a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs
index fe2ef399..504f0966 100644
--- a/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs
+++ b/SabreTools.Metadata.DatFiles/Formats/ClrMamePro.cs
@@ -152,8 +152,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
break;
case Input input:
- if (input.ReadLong(Data.Models.Metadata.Input.PlayersKey) is null)
- missingFields.Add(Data.Models.Metadata.Input.PlayersKey);
+ if (input.Players is null)
+ missingFields.Add(nameof(Data.Models.Metadata.Input.Players));
if (!input.ControlsSpecified)
missingFields.Add(Data.Models.Metadata.Input.ControlKey);
break;
diff --git a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs
index 9f902b1a..6188a981 100644
--- a/SabreTools.Metadata.DatFiles/Formats/Listxml.cs
+++ b/SabreTools.Metadata.DatFiles/Formats/Listxml.cs
@@ -320,8 +320,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
break;
case Input input:
- if (input.ReadLong(Data.Models.Metadata.Input.PlayersKey) is null)
- missingFields.Add(Data.Models.Metadata.Input.PlayersKey);
+ if (input.Players is null)
+ missingFields.Add(nameof(Data.Models.Metadata.Input.Players));
break;
case DipSwitch dipswitch:
diff --git a/SabreTools.Metadata.DatItems/Formats/Input.cs b/SabreTools.Metadata.DatItems/Formats/Input.cs
index 72871570..7a742ef5 100644
--- a/SabreTools.Metadata.DatItems/Formats/Input.cs
+++ b/SabreTools.Metadata.DatItems/Formats/Input.cs
@@ -13,6 +13,18 @@ namespace SabreTools.Metadata.DatItems.Formats
{
#region Fields
+ public long? Buttons
+ {
+ get => (_internal as Data.Models.Metadata.Input)?.Buttons;
+ set => (_internal as Data.Models.Metadata.Input)?.Buttons = value;
+ }
+
+ public long? Coins
+ {
+ get => (_internal as Data.Models.Metadata.Input)?.Coins;
+ set => (_internal as Data.Models.Metadata.Input)?.Coins = value;
+ }
+
[JsonIgnore]
public bool ControlsSpecified
{
@@ -27,6 +39,12 @@ namespace SabreTools.Metadata.DatItems.Formats
public override Data.Models.Metadata.ItemType ItemType
=> Data.Models.Metadata.ItemType.Input;
+ public long? Players
+ {
+ get => (_internal as Data.Models.Metadata.Input)?.Players;
+ set => (_internal as Data.Models.Metadata.Input)?.Players = value;
+ }
+
public bool? Service
{
get => (_internal as Data.Models.Metadata.Input)?.Service;
@@ -47,19 +65,6 @@ namespace SabreTools.Metadata.DatItems.Formats
public Input(Data.Models.Metadata.Input item) : base(item)
{
- // Process flag values
- long? buttons = ReadLong(Data.Models.Metadata.Input.ButtonsKey);
- if (buttons is not null)
- Write(Data.Models.Metadata.Input.ButtonsKey, buttons.ToString());
-
- long? coins = ReadLong(Data.Models.Metadata.Input.CoinsKey);
- if (coins is not null)
- Write(Data.Models.Metadata.Input.CoinsKey, coins.ToString());
-
- long? players = ReadLong(Data.Models.Metadata.Input.PlayersKey);
- if (players is not null)
- Write(Data.Models.Metadata.Input.PlayersKey, players.ToString());
-
// Handle subitems
var controls = item.ReadArray(Data.Models.Metadata.Input.ControlKey);
if (controls is not null)
diff --git a/SabreTools.Metadata.Filter/FilterObject.cs b/SabreTools.Metadata.Filter/FilterObject.cs
index 2ebd2066..8bb2900c 100644
--- a/SabreTools.Metadata.Filter/FilterObject.cs
+++ b/SabreTools.Metadata.Filter/FilterObject.cs
@@ -714,6 +714,15 @@ namespace SabreTools.Metadata.Filter
checkValue = item.Value;
return true;
+ case Input item when fieldName == "buttons":
+ checkValue = item.Buttons?.ToString();
+ return true;
+ case Input item when fieldName == "coins":
+ checkValue = item.Coins?.ToString();
+ return true;
+ case Input item when fieldName == "players":
+ checkValue = item.Players?.ToString();
+ return true;
case Input item when fieldName == "service":
checkValue = item.Service.FromYesNo();
return true;
diff --git a/SabreTools.Metadata/DictionaryBaseExtensions.cs b/SabreTools.Metadata/DictionaryBaseExtensions.cs
index 563cc6b8..55352261 100644
--- a/SabreTools.Metadata/DictionaryBaseExtensions.cs
+++ b/SabreTools.Metadata/DictionaryBaseExtensions.cs
@@ -254,6 +254,12 @@ namespace SabreTools.Metadata
}
else if (self is Input selfInput && other is Input otherInput)
{
+ if (selfInput.Buttons != otherInput.Buttons)
+ return false;
+ if (selfInput.Coins != otherInput.Coins)
+ return false;
+ if (selfInput.Players != otherInput.Players)
+ return false;
if (selfInput.Service != otherInput.Service)
return false;
if (selfInput.Tilt != otherInput.Tilt)
diff --git a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs
index 85181f09..2ad54d8e 100644
--- a/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs
+++ b/SabreTools.Serialization.CrossModel.Test/ClrMameProTests.cs
@@ -180,10 +180,10 @@ namespace SabreTools.Serialization.CrossModel.Test
var input = new Data.Models.ClrMamePro.Input
{
- Players = "XXXXXX",
+ Players = 12345,
Control = "XXXXXX",
- Buttons = "XXXXXX",
- Coins = "XXXXXX",
+ Buttons = 12345,
+ Coins = 12345,
Tilt = true,
Service = true,
};
@@ -475,10 +475,10 @@ namespace SabreTools.Serialization.CrossModel.Test
private static void Validate(Data.Models.ClrMamePro.Input? input)
{
Assert.NotNull(input);
- Assert.Equal("XXXXXX", input.Players);
+ Assert.Equal(12345, input.Players);
Assert.Equal("XXXXXX", input.Control);
- Assert.Equal("XXXXXX", input.Buttons);
- Assert.Equal("XXXXXX", input.Coins);
+ Assert.Equal(12345, input.Buttons);
+ Assert.Equal(12345, input.Coins);
Assert.Equal(true, input.Tilt);
Assert.Equal(true, input.Service);
}
diff --git a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs
index bd9b6757..b9317bcc 100644
--- a/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs
+++ b/SabreTools.Serialization.CrossModel.Test/ListxmlTests.cs
@@ -172,10 +172,10 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Service = true,
Tilt = true,
- Players = "XXXXXX",
+ Players = 12345,
//ControlAttr = "XXXXXX", // Mututally exclusive with input.Control
- Buttons = "XXXXXX",
- Coins = "XXXXXX",
+ Buttons = 12345,
+ Coins = 12345,
Control = [control],
};
@@ -600,10 +600,10 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.NotNull(input);
Assert.Equal(true, input.Service);
Assert.Equal(true, input.Tilt);
- Assert.Equal("XXXXXX", input.Players);
+ Assert.Equal(12345, input.Players);
//Assert.Equal("XXXXXX", input.ControlAttr); // Mututally exclusive with input.Control
- Assert.Equal("XXXXXX", input.Buttons);
- Assert.Equal("XXXXXX", input.Coins);
+ Assert.Equal(12345, input.Buttons);
+ Assert.Equal(12345, input.Coins);
Assert.NotNull(input.Control);
var control = Assert.Single(input.Control);
diff --git a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs
index 24be266c..a801540f 100644
--- a/SabreTools.Serialization.CrossModel.Test/M1Tests.cs
+++ b/SabreTools.Serialization.CrossModel.Test/M1Tests.cs
@@ -168,10 +168,10 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Service = true,
Tilt = true,
- Players = "XXXXXX",
+ Players = 12345,
//ControlAttr = "XXXXXX", // Mututally exclusive with input.Control
- Buttons = "XXXXXX",
- Coins = "XXXXXX",
+ Buttons = 12345,
+ Coins = 12345,
Control = [control],
};
@@ -594,10 +594,10 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.NotNull(input);
Assert.Equal(true, input.Service);
Assert.Equal(true, input.Tilt);
- Assert.Equal("XXXXXX", input.Players);
+ Assert.Equal(12345, input.Players);
//Assert.Equal("XXXXXX", input.ControlAttr); // Mututally exclusive with input.Control
- Assert.Equal("XXXXXX", input.Buttons);
- Assert.Equal("XXXXXX", input.Coins);
+ Assert.Equal(12345, input.Buttons);
+ Assert.Equal(12345, input.Coins);
Assert.NotNull(input.Control);
var control = Assert.Single(input.Control);
diff --git a/SabreTools.Serialization.CrossModel.Test/MessTests.cs b/SabreTools.Serialization.CrossModel.Test/MessTests.cs
index 2b3a7123..d282641f 100644
--- a/SabreTools.Serialization.CrossModel.Test/MessTests.cs
+++ b/SabreTools.Serialization.CrossModel.Test/MessTests.cs
@@ -168,10 +168,10 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Service = true,
Tilt = true,
- Players = "XXXXXX",
+ Players = 12345,
//ControlAttr = "XXXXXX", // Mututally exclusive with input.Control
- Buttons = "XXXXXX",
- Coins = "XXXXXX",
+ Buttons = 12345,
+ Coins = 12345,
Control = [control],
};
@@ -594,10 +594,10 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.NotNull(input);
Assert.Equal(true, input.Service);
Assert.Equal(true, input.Tilt);
- Assert.Equal("XXXXXX", input.Players);
+ Assert.Equal(12345, input.Players);
//Assert.Equal("XXXXXX", input.ControlAttr); // Mututally exclusive with input.Control
- Assert.Equal("XXXXXX", input.Buttons);
- Assert.Equal("XXXXXX", input.Coins);
+ Assert.Equal(12345, input.Buttons);
+ Assert.Equal(12345, input.Coins);
Assert.NotNull(input.Control);
var control = Assert.Single(input.Control);
diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs
index de70e18f..c793ed03 100644
--- a/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs
+++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Deserializer.cs
@@ -229,10 +229,10 @@ namespace SabreTools.Serialization.CrossModel
{
var input = new Input
{
- Players = item.ReadString(Data.Models.Metadata.Input.PlayersKey),
+ Players = item.Players,
Control = item.ReadString(Data.Models.Metadata.Input.ControlKey),
- Buttons = item.ReadString(Data.Models.Metadata.Input.ButtonsKey),
- Coins = item.ReadString(Data.Models.Metadata.Input.CoinsKey),
+ Buttons = item.Buttons,
+ Coins = item.Coins,
Tilt = item.Tilt,
Service = item.Service,
};
diff --git a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs
index 70e45824..ef95a63d 100644
--- a/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs
+++ b/SabreTools.Serialization.CrossModel/ClrMamePro.Serializer.cs
@@ -242,10 +242,10 @@ namespace SabreTools.Serialization.CrossModel
{
var input = new Data.Models.Metadata.Input
{
- [Data.Models.Metadata.Input.PlayersKey] = item.Players,
+ Players = item.Players,
[Data.Models.Metadata.Input.ControlKey] = item.Control,
- [Data.Models.Metadata.Input.ButtonsKey] = item.Buttons,
- [Data.Models.Metadata.Input.CoinsKey] = item.Coins,
+ Buttons = item.Buttons,
+ Coins = item.Coins,
Tilt = item.Tilt,
Service = item.Service,
};
diff --git a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs
index c7137dfc..53354b34 100644
--- a/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs
+++ b/SabreTools.Serialization.CrossModel/Listxml.Deserializer.cs
@@ -498,9 +498,9 @@ namespace SabreTools.Serialization.CrossModel
{
Service = item.Service,
Tilt = item.Tilt,
- Players = item.ReadString(Data.Models.Metadata.Input.PlayersKey),
- Buttons = item.ReadString(Data.Models.Metadata.Input.ButtonsKey),
- Coins = item.ReadString(Data.Models.Metadata.Input.CoinsKey),
+ Players = item.Players,
+ Buttons = item.Buttons,
+ Coins = item.Coins,
};
var controlAttr = item.ReadString(Data.Models.Metadata.Input.ControlKey);
diff --git a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs
index 72bcd54c..3ecd6045 100644
--- a/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs
+++ b/SabreTools.Serialization.CrossModel/Listxml.Serializer.cs
@@ -536,10 +536,10 @@ namespace SabreTools.Serialization.CrossModel
{
Service = item.Service,
Tilt = item.Tilt,
- [Data.Models.Metadata.Input.PlayersKey] = item.Players,
+ Players = item.Players,
[Data.Models.Metadata.Input.ControlKey] = item.ControlAttr,
- [Data.Models.Metadata.Input.ButtonsKey] = item.Buttons,
- [Data.Models.Metadata.Input.CoinsKey] = item.Coins,
+ Buttons = item.Buttons,
+ Coins = item.Coins,
};
if (item.Control is not null && item.Control.Length > 0)
diff --git a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs
index cdfa1bc9..eb63d1fd 100644
--- a/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs
+++ b/SabreTools.Serialization.Readers.Test/ClrMameProTests.cs
@@ -297,10 +297,10 @@ namespace SabreTools.Serialization.Readers.Test
var input = new Data.Models.ClrMamePro.Input
{
- Players = "XXXXXX",
+ Players = 12345,
Control = "XXXXXX",
- Buttons = "XXXXXX",
- Coins = "XXXXXX",
+ Buttons = 12345,
+ Coins = 12345,
Tilt = true,
Service = true,
};
@@ -592,10 +592,10 @@ namespace SabreTools.Serialization.Readers.Test
private static void Validate(Data.Models.ClrMamePro.Input? input)
{
Assert.NotNull(input);
- Assert.Equal("XXXXXX", input.Players);
+ Assert.Equal(12345, input.Players);
Assert.Equal("XXXXXX", input.Control);
- Assert.Equal("XXXXXX", input.Buttons);
- Assert.Equal("XXXXXX", input.Coins);
+ Assert.Equal(12345, input.Buttons);
+ Assert.Equal(12345, input.Coins);
Assert.Equal(true, input.Tilt);
Assert.Equal(true, input.Service);
}
diff --git a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs
index dda27d9c..d486c2fe 100644
--- a/SabreTools.Serialization.Readers.Test/ListxmlTests.cs
+++ b/SabreTools.Serialization.Readers.Test/ListxmlTests.cs
@@ -239,10 +239,10 @@ namespace SabreTools.Serialization.Readers.Test
{
Service = true,
Tilt = true,
- Players = "XXXXXX",
+ Players = 12345,
ControlAttr = "XXXXXX",
- Buttons = "XXXXXX",
- Coins = "XXXXXX",
+ Buttons = 12345,
+ Coins = 12345,
Control = [control],
};
@@ -667,10 +667,10 @@ namespace SabreTools.Serialization.Readers.Test
Assert.NotNull(input);
Assert.Equal(true, input.Service);
Assert.Equal(true, input.Tilt);
- Assert.Equal("XXXXXX", input.Players);
+ Assert.Equal(12345, input.Players);
Assert.Equal("XXXXXX", input.ControlAttr); // Mututally exclusive with input.Control
- Assert.Equal("XXXXXX", input.Buttons);
- Assert.Equal("XXXXXX", input.Coins);
+ Assert.Equal(12345, input.Buttons);
+ Assert.Equal(12345, input.Coins);
Assert.NotNull(input.Control);
var control = Assert.Single(input.Control);
diff --git a/SabreTools.Serialization.Readers.Test/M1Tests.cs b/SabreTools.Serialization.Readers.Test/M1Tests.cs
index 3ed419ce..bd7bac20 100644
--- a/SabreTools.Serialization.Readers.Test/M1Tests.cs
+++ b/SabreTools.Serialization.Readers.Test/M1Tests.cs
@@ -235,10 +235,10 @@ namespace SabreTools.Serialization.Readers.Test
{
Service = true,
Tilt = true,
- Players = "XXXXXX",
+ Players = 12345,
//ControlAttr = "XXXXXX", // Mututally exclusive with input.Control
- Buttons = "XXXXXX",
- Coins = "XXXXXX",
+ Buttons = 12345,
+ Coins = 12345,
Control = [control],
};
@@ -661,10 +661,10 @@ namespace SabreTools.Serialization.Readers.Test
Assert.NotNull(input);
Assert.Equal(true, input.Service);
Assert.Equal(true, input.Tilt);
- Assert.Equal("XXXXXX", input.Players);
+ Assert.Equal(12345, input.Players);
//Assert.Equal("XXXXXX", input.ControlAttr); // Mututally exclusive with input.Control
- Assert.Equal("XXXXXX", input.Buttons);
- Assert.Equal("XXXXXX", input.Coins);
+ Assert.Equal(12345, input.Buttons);
+ Assert.Equal(12345, input.Coins);
Assert.NotNull(input.Control);
var control = Assert.Single(input.Control);
diff --git a/SabreTools.Serialization.Readers.Test/MessTests.cs b/SabreTools.Serialization.Readers.Test/MessTests.cs
index 4a161057..c1374f68 100644
--- a/SabreTools.Serialization.Readers.Test/MessTests.cs
+++ b/SabreTools.Serialization.Readers.Test/MessTests.cs
@@ -235,10 +235,10 @@ namespace SabreTools.Serialization.Readers.Test
{
Service = true,
Tilt = true,
- Players = "XXXXXX",
+ Players = 12345,
//ControlAttr = "XXXXXX", // Mututally exclusive with input.Control
- Buttons = "XXXXXX",
- Coins = "XXXXXX",
+ Buttons = 12345,
+ Coins = 12345,
Control = [control],
};
@@ -661,10 +661,10 @@ namespace SabreTools.Serialization.Readers.Test
Assert.NotNull(input);
Assert.Equal(true, input.Service);
Assert.Equal(true, input.Tilt);
- Assert.Equal("XXXXXX", input.Players);
+ Assert.Equal(12345, input.Players);
//Assert.Equal("XXXXXX", input.ControlAttr); // Mututally exclusive with input.Control
- Assert.Equal("XXXXXX", input.Buttons);
- Assert.Equal("XXXXXX", input.Coins);
+ Assert.Equal(12345, input.Buttons);
+ Assert.Equal(12345, input.Coins);
Assert.NotNull(input.Control);
var control = Assert.Single(input.Control);
diff --git a/SabreTools.Serialization.Readers/ClrMamePro.cs b/SabreTools.Serialization.Readers/ClrMamePro.cs
index 95887124..8977b88c 100644
--- a/SabreTools.Serialization.Readers/ClrMamePro.cs
+++ b/SabreTools.Serialization.Readers/ClrMamePro.cs
@@ -875,16 +875,16 @@ namespace SabreTools.Serialization.Readers
switch (kvp.Key?.ToLowerInvariant())
{
case "players":
- input.Players = kvp.Value;
+ input.Players = NumberHelper.ConvertToInt64(kvp.Value);
break;
case "control":
input.Control = kvp.Value;
break;
case "buttons":
- input.Buttons = kvp.Value;
+ input.Buttons = NumberHelper.ConvertToInt64(kvp.Value);
break;
case "coins":
- input.Coins = kvp.Value;
+ input.Coins = NumberHelper.ConvertToInt64(kvp.Value);
break;
case "tilt":
input.Tilt = kvp.Value.AsYesNo();
diff --git a/SabreTools.Serialization.Readers/Listxml.cs b/SabreTools.Serialization.Readers/Listxml.cs
index faec7c67..594d34d8 100644
--- a/SabreTools.Serialization.Readers/Listxml.cs
+++ b/SabreTools.Serialization.Readers/Listxml.cs
@@ -923,10 +923,10 @@ namespace SabreTools.Serialization.Readers
obj.Service = reader.GetAttribute("service").AsYesNo();
obj.Tilt = reader.GetAttribute("tilt").AsYesNo();
- obj.Players = reader.GetAttribute("players");
+ obj.Players = NumberHelper.ConvertToInt64(reader.GetAttribute("players"));
obj.ControlAttr = reader.GetAttribute("control");
- obj.Buttons = reader.GetAttribute("buttons");
- obj.Coins = reader.GetAttribute("coins");
+ obj.Buttons = NumberHelper.ConvertToInt64(reader.GetAttribute("buttons"));
+ obj.Coins = NumberHelper.ConvertToInt64(reader.GetAttribute("coins"));
List controls = [];
diff --git a/SabreTools.Serialization.Readers/M1.cs b/SabreTools.Serialization.Readers/M1.cs
index e499739f..83b3202a 100644
--- a/SabreTools.Serialization.Readers/M1.cs
+++ b/SabreTools.Serialization.Readers/M1.cs
@@ -921,10 +921,10 @@ namespace SabreTools.Serialization.Readers
obj.Service = reader.GetAttribute("service").AsYesNo();
obj.Tilt = reader.GetAttribute("tilt").AsYesNo();
- obj.Players = reader.GetAttribute("players");
+ obj.Players = NumberHelper.ConvertToInt64(reader.GetAttribute("players"));
obj.ControlAttr = reader.GetAttribute("control");
- obj.Buttons = reader.GetAttribute("buttons");
- obj.Coins = reader.GetAttribute("coins");
+ obj.Buttons = NumberHelper.ConvertToInt64(reader.GetAttribute("buttons"));
+ obj.Coins = NumberHelper.ConvertToInt64(reader.GetAttribute("coins"));
List controls = [];
diff --git a/SabreTools.Serialization.Readers/Mess.cs b/SabreTools.Serialization.Readers/Mess.cs
index 1ff991d9..97a581da 100644
--- a/SabreTools.Serialization.Readers/Mess.cs
+++ b/SabreTools.Serialization.Readers/Mess.cs
@@ -921,10 +921,10 @@ namespace SabreTools.Serialization.Readers
obj.Service = reader.GetAttribute("service").AsYesNo();
obj.Tilt = reader.GetAttribute("tilt").AsYesNo();
- obj.Players = reader.GetAttribute("players");
+ obj.Players = NumberHelper.ConvertToInt64(reader.GetAttribute("players"));
obj.ControlAttr = reader.GetAttribute("control");
- obj.Buttons = reader.GetAttribute("buttons");
- obj.Coins = reader.GetAttribute("coins");
+ obj.Buttons = NumberHelper.ConvertToInt64(reader.GetAttribute("buttons"));
+ obj.Coins = NumberHelper.ConvertToInt64(reader.GetAttribute("coins"));
List controls = [];
diff --git a/SabreTools.Serialization.Writers/ClrMamePro.cs b/SabreTools.Serialization.Writers/ClrMamePro.cs
index b47f3598..7bdce944 100644
--- a/SabreTools.Serialization.Writers/ClrMamePro.cs
+++ b/SabreTools.Serialization.Writers/ClrMamePro.cs
@@ -451,10 +451,10 @@ namespace SabreTools.Serialization.Writers
return;
writer.WriteStartElement("input");
- writer.WriteRequiredAttributeString("players", input.Players, throwOnError: true);
+ writer.WriteRequiredAttributeString("players", input.Players?.ToString(), throwOnError: true);
writer.WriteOptionalAttributeString("control", input.Control);
- writer.WriteRequiredAttributeString("buttons", input.Buttons, throwOnError: true);
- writer.WriteOptionalAttributeString("coins", input.Coins);
+ writer.WriteRequiredAttributeString("buttons", input.Buttons?.ToString(), throwOnError: true);
+ writer.WriteOptionalAttributeString("coins", input.Coins?.ToString());
writer.WriteOptionalAttributeString("tilt", input.Tilt.FromYesNo());
writer.WriteOptionalAttributeString("service", input.Service.FromYesNo());
writer.WriteEndElement(); // input
diff --git a/SabreTools.Serialization.Writers/Listxml.cs b/SabreTools.Serialization.Writers/Listxml.cs
index 3ac3a672..78c12a3f 100644
--- a/SabreTools.Serialization.Writers/Listxml.cs
+++ b/SabreTools.Serialization.Writers/Listxml.cs
@@ -649,10 +649,10 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("service", obj.Service.FromYesNo());
writer.WriteOptionalAttributeString("tilt", obj.Tilt.FromYesNo());
- writer.WriteRequiredAttributeString("players", obj.Players);
+ writer.WriteRequiredAttributeString("players", obj.Players?.ToString());
writer.WriteOptionalAttributeString("control", obj.ControlAttr);
- writer.WriteOptionalAttributeString("buttons", obj.Buttons);
- writer.WriteOptionalAttributeString("coins", obj.Coins);
+ writer.WriteOptionalAttributeString("buttons", obj.Buttons?.ToString());
+ writer.WriteOptionalAttributeString("coins", obj.Coins?.ToString());
if (obj.Control is not null && obj.Control.Length > 0)
{
diff --git a/SabreTools.Serialization.Writers/M1.cs b/SabreTools.Serialization.Writers/M1.cs
index fbbb0b60..7fcbbcf3 100644
--- a/SabreTools.Serialization.Writers/M1.cs
+++ b/SabreTools.Serialization.Writers/M1.cs
@@ -647,10 +647,10 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("service", obj.Service.FromYesNo());
writer.WriteOptionalAttributeString("tilt", obj.Tilt.FromYesNo());
- writer.WriteRequiredAttributeString("players", obj.Players);
+ writer.WriteRequiredAttributeString("players", obj.Players?.ToString());
writer.WriteOptionalAttributeString("control", obj.ControlAttr);
- writer.WriteOptionalAttributeString("buttons", obj.Buttons);
- writer.WriteOptionalAttributeString("coins", obj.Coins);
+ writer.WriteOptionalAttributeString("buttons", obj.Buttons?.ToString());
+ writer.WriteOptionalAttributeString("coins", obj.Coins?.ToString());
if (obj.Control is not null && obj.Control.Length > 0)
{
diff --git a/SabreTools.Serialization.Writers/Mess.cs b/SabreTools.Serialization.Writers/Mess.cs
index d6f1b754..f616b2b1 100644
--- a/SabreTools.Serialization.Writers/Mess.cs
+++ b/SabreTools.Serialization.Writers/Mess.cs
@@ -647,10 +647,10 @@ namespace SabreTools.Serialization.Writers
writer.WriteOptionalAttributeString("service", obj.Service.FromYesNo());
writer.WriteOptionalAttributeString("tilt", obj.Tilt.FromYesNo());
- writer.WriteRequiredAttributeString("players", obj.Players);
+ writer.WriteRequiredAttributeString("players", obj.Players?.ToString());
writer.WriteOptionalAttributeString("control", obj.ControlAttr);
- writer.WriteOptionalAttributeString("buttons", obj.Buttons);
- writer.WriteOptionalAttributeString("coins", obj.Coins);
+ writer.WriteOptionalAttributeString("buttons", obj.Buttons?.ToString());
+ writer.WriteOptionalAttributeString("coins", obj.Coins?.ToString());
if (obj.Control is not null && obj.Control.Length > 0)
{