diff --git a/VisualPinball.Unity/VisualPinball.Unity/Game/CoilPlayer.cs b/VisualPinball.Unity/VisualPinball.Unity/Game/CoilPlayer.cs
index c1e0692bc..fc5f7efb9 100644
--- a/VisualPinball.Unity/VisualPinball.Unity/Game/CoilPlayer.cs
+++ b/VisualPinball.Unity/VisualPinball.Unity/Game/CoilPlayer.cs
@@ -107,18 +107,32 @@ public void OnStart()
}
}
+ ///
+ /// Assigns a coil mapping with the coil's ID, but also with an int-parsed ID,
+ /// so we can name them "01" and it still works with PinMAME.
+ ///
+ /// Mapping to assign
+ /// If it's a flasher
private void AssignCoilMapping(CoilMapping coilMapping, bool isLampCoil)
{
- if (!_coilAssignments.ContainsKey(coilMapping.Id)) {
- _coilAssignments[coilMapping.Id] = new List();
+ AssignCoilMapping(coilMapping.Id, coilMapping, isLampCoil);
+ if (int.TryParse(coilMapping.Id, out var id) && id.ToString() != coilMapping.Id) {
+ AssignCoilMapping(id.ToString(), coilMapping, isLampCoil);
+ }
+ }
+
+ private void AssignCoilMapping(string id, CoilMapping coilMapping, bool isLampCoil)
+ {
+ if (!_coilAssignments.ContainsKey(id)) {
+ _coilAssignments[id] = new List();
}
var hasDynamicWire = _tableComponent!.MappingConfig.Wires.FirstOrDefault(w =>
w.DestinationDevice == coilMapping.Device &&
w.DestinationDeviceItem == coilMapping.DeviceItem &&
w.IsDynamic) != null;
- _coilAssignments[coilMapping.Id].Add(new CoilDestConfig(coilMapping.Device, coilMapping.DeviceItem, isLampCoil, hasDynamicWire));
- CoilStatuses[coilMapping.Id] = false;
+ _coilAssignments[id].Add(new CoilDestConfig(coilMapping.Device, coilMapping.DeviceItem, isLampCoil, hasDynamicWire));
+ CoilStatuses[id] = false;
}
private void HandleCoilEvent(object sender, CoilEventArgs coilEvent)