@@ -131,6 +131,8 @@ public GamelogicEngineLamp[] RequestedLamps {
131
131
private Dictionary < int , PinMameMechComponent > _registeredMechs = new ( ) ;
132
132
private HashSet < int > _mechSwitches = new ( ) ;
133
133
134
+ private bool _toggleSpeed = false ;
135
+
134
136
#endregion
135
137
136
138
#region Lifecycle
@@ -197,7 +199,7 @@ private void OnDestroy()
197
199
_pinMame . OnMechAvailable -= OnMechAvailable ;
198
200
_pinMame . OnMechUpdated -= OnMechUpdated ;
199
201
_pinMame . OnSolenoidUpdated -= OnSolenoidUpdated ;
200
-
202
+ _pinMame . IsKeyPressed -= IsKeyPressed ;
201
203
}
202
204
_frameBuffer . Clear ( ) ;
203
205
_dmdLevels . Clear ( ) ;
@@ -255,6 +257,8 @@ public void OnInit(Player player, TableApi tableApi, BallManager ballManager)
255
257
_pinMame . OnMechAvailable += OnMechAvailable ;
256
258
_pinMame . OnMechUpdated += OnMechUpdated ;
257
259
_pinMame . OnSolenoidUpdated += OnSolenoidUpdated ;
260
+ _pinMame . IsKeyPressed += IsKeyPressed ;
261
+
258
262
_player = player ;
259
263
260
264
_solenoidsEnabled = SolenoidDelay == 0 ;
@@ -267,6 +271,14 @@ public void OnInit(Player player, TableApi tableApi, BallManager ballManager)
267
271
}
268
272
}
269
273
274
+ public void ToggleSpeed ( )
275
+ {
276
+ Logger . Info ( $ "[PinMAME] Toggle speed.") ;
277
+
278
+ _pinMame . SetHandleKeyboard ( true ) ;
279
+ _toggleSpeed = true ;
280
+ }
281
+
270
282
private void OnGameStarted ( )
271
283
{
272
284
Logger . Info ( $ "[PinMAME] Game started.") ;
@@ -311,7 +323,7 @@ private void UpdateCaches()
311
323
312
324
#region Displays
313
325
314
- private void OnDisplayRequested ( int index , int displayCount , PinMameDisplayLayout displayLayout )
326
+ private void OnDisplayRequested ( int index , int displayCount , PinMameDisplayLayout displayLayout )
315
327
{
316
328
if ( displayLayout . IsDmd ) {
317
329
lock ( _dispatchQueue ) {
@@ -433,7 +445,7 @@ public static DisplayFrameFormat GetDisplayFrameFormat(PinMameDisplayLayout layo
433
445
434
446
#region Audio
435
447
436
- private int OnAudioAvailable ( PinMameAudioInfo audioInfo )
448
+ private int OnAudioAvailable ( PinMameAudioInfo audioInfo )
437
449
{
438
450
Logger . Info ( "Game audio available: " + audioInfo ) ;
439
451
@@ -700,5 +712,20 @@ private void SendMechs()
700
712
}
701
713
702
714
#endregion
715
+
716
+ private int IsKeyPressed ( PinMameKeycode keycode )
717
+ {
718
+ if ( keycode == PinMameKeycode . F10 ) {
719
+ if ( _toggleSpeed ) {
720
+ _toggleSpeed = false ;
721
+
722
+ _pinMame . SetHandleKeyboard ( false ) ;
723
+
724
+ return 1 ;
725
+ }
726
+ }
727
+
728
+ return 0 ;
729
+ }
703
730
}
704
731
}
0 commit comments