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) {