Skip to content

Commit 0095182

Browse files
committed
fix: Update new APIs.
1 parent 2af3a0f commit 0095182

File tree

3 files changed

+32
-6
lines changed

3 files changed

+32
-6
lines changed

VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameGamelogicEngine.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
using NLog;
2828
using PinMame;
2929
using UnityEngine;
30+
using UnityEngine.InputSystem;
3031
using VisualPinball.Engine.Game.Engines;
3132
using VisualPinball.Unity;
3233
using Logger = NLog.Logger;
@@ -36,7 +37,7 @@ namespace VisualPinball.Engine.PinMAME
3637
[Serializable]
3738
[DisallowMultipleComponent]
3839
[RequireComponent(typeof(AudioSource))]
39-
[AddComponentMenu("Visual Pinball/Gamelogic Engine/PinMAME")]
40+
[AddComponentMenu("Pinball/Gamelogic Engine/PinMAME")]
4041
public class PinMameGamelogicEngine : MonoBehaviour, IGamelogicEngine
4142
{
4243
public string Name { get; } = "PinMAME Gamelogic Engine";
@@ -150,6 +151,7 @@ public GamelogicEngineLamp[] RequestedLamps {
150151
private HashSet<int> _mechSwitches = new();
151152

152153
private bool _toggleSpeed = false;
154+
private Keyboard _keyboard;
153155

154156
#endregion
155157

@@ -158,6 +160,7 @@ public GamelogicEngineLamp[] RequestedLamps {
158160
private void Awake()
159161
{
160162
Logger.Info("Project audio sample rate: " + AudioSettings.outputSampleRate);
163+
_keyboard = Keyboard.current;
161164
}
162165

163166
private void Start()
@@ -199,6 +202,12 @@ private void Update()
199202
Logger.Info($"No GI {changedGi.Id} found.");
200203
}*/
201204
}
205+
206+
// if (_keyboard != null && _keyboard.cKey.wasPressedThisFrame)
207+
// {
208+
// OnCoilChanged.Invoke(this, new CoilEventArgs("28", true));
209+
// OnCoilChanged.Invoke(this, new CoilEventArgs("28", false));
210+
// }
202211
}
203212

204213
private void OnDestroy()

VisualPinball.Engine.PinMAME.Unity/Runtime/PinMameMechComponent.cs

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@
2828

2929
namespace VisualPinball.Engine.PinMAME
3030
{
31-
[AddComponentMenu("Visual Pinball/Mechs/PinMAME Mech Handler")]
32-
public class PinMameMechComponent : MonoBehaviour, IMechHandler, ISwitchDeviceComponent, ICoilDeviceComponent, ISerializationCallbackReceiver
31+
[AddComponentMenu("Pinball/Mechs/PinMAME Mech Handler")]
32+
public class PinMameMechComponent : MonoBehaviour, IMechHandler, ISwitchDeviceComponent, ICoilDeviceComponent,
33+
IPinballEventEmitter, ISerializationCallbackReceiver
3334
{
3435
#region Data
3536

@@ -78,6 +79,11 @@ public class PinMameMechComponent : MonoBehaviour, IMechHandler, ISwitchDeviceCo
7879
[SerializeField] private string _solenoid2;
7980

8081
public event EventHandler<MechEventArgs> OnMechUpdate;
82+
public event EventHandler<PinballEventArgs> OnPinballEvent;
83+
public PinballEvent[] Events => new[] {
84+
new PinballEvent(EventNameSpeed, PinballEventUnit.DegreesPerSecond),
85+
new PinballEvent(EventNamePosition, PinballEventUnit.Degrees),
86+
};
8187

8288
public PinMameMechConfig Config(List<SwitchMapping> switchMappings, List<CoilMapping> coilMappings, Dictionary<string, int> switchIdToPinMameIdMappings, Dictionary<string, int> coilIdToPinMameIdMappings)
8389
{
@@ -155,6 +161,9 @@ public PinMameMechConfig Config(List<SwitchMapping> switchMappings, List<CoilMap
155161

156162
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
157163

164+
private const string EventNameSpeed = "Mech Speed";
165+
private const string EventNamePosition = "Mech Position";
166+
158167
#endregion
159168

160169
#region Wiring
@@ -173,15 +182,16 @@ public PinMameMechConfig Config(List<SwitchMapping> switchMappings, List<CoilMap
173182

174183
public IEnumerable<GamelogicEngineCoil> AvailableCoils {
175184
get {
176-
switch (Type)
177-
{
185+
switch (Type) {
178186
case PinMameMechType.OneSolenoid:
179187
return new[] { new GamelogicEngineCoil(_solenoid1) { Description = "Motor Power" } };
188+
180189
case PinMameMechType.OneDirectionalSolenoid:
181190
return new[] {
182191
new GamelogicEngineCoil(_solenoid1) { Description = "Motor Power" },
183192
new GamelogicEngineCoil(_solenoid2) { Description = "Motor Direction" },
184193
};
194+
185195
case PinMameMechType.TwoDirectionalSolenoids:
186196
return new[] {
187197
new GamelogicEngineCoil(_solenoid1) { Description = "Motor Clockwise" },
@@ -193,16 +203,20 @@ public IEnumerable<GamelogicEngineCoil> AvailableCoils {
193203
new GamelogicEngineCoil(_solenoid1) { Description = "Stepper 1" },
194204
new GamelogicEngineCoil(_solenoid2) { Description = "Stepper 2" },
195205
};
206+
196207
case PinMameMechType.FourStepperSolenoids:
197208
return new[] {
198209
new GamelogicEngineCoil(_solenoid1) { Description = "First Stepper" },
199210
};
211+
200212
default:
201213
throw new ArgumentOutOfRangeException();
202214
}
203215
}
204216
}
205217

218+
IApiCoil ICoilDeviceComponent.CoilDevice(string deviceId) => null; // fixme
219+
206220
#endregion
207221

208222
#region Runtime
@@ -225,6 +239,8 @@ private void Start()
225239
public void UpdateMech(PinMameMechInfo data)
226240
{
227241
OnMechUpdate?.Invoke(this, new MechEventArgs(data.Speed, data.Pos));
242+
OnPinballEvent?.Invoke(this, new PinballEventArgs(EventNameSpeed, data.Speed, PinballEventUnit.MetersPerSecond));
243+
OnPinballEvent?.Invoke(this, new PinballEventArgs(EventNamePosition, data.Pos, PinballEventUnit.Degrees));
228244
}
229245

230246
#endregion

VisualPinball.Engine.PinMAME.Unity/Runtime/VisualPinball.Engine.PinMAME.Unity.asmdef

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
"rootNamespace": "VisualPinball.Engine.PinMAME.Unity",
44
"references": [
55
"VisualPinball.Engine",
6-
"VisualPinball.Unity"
6+
"VisualPinball.Unity",
7+
"Unity.InputSystem"
78
],
89
"includePlatforms": [],
910
"excludePlatforms": [],

0 commit comments

Comments
 (0)