@@ -52,6 +52,7 @@ public class MpfGamelogicEngine : MonoBehaviour, IGamelogicEngine
52
52
private Dictionary < string , int > _switchIds = new Dictionary < string , int > ( ) ;
53
53
private Dictionary < string , string > _switchNames = new Dictionary < string , string > ( ) ;
54
54
private Dictionary < string , string > _coilNames = new Dictionary < string , string > ( ) ;
55
+ private Dictionary < string , string > _lampNames = new Dictionary < string , string > ( ) ;
55
56
56
57
private static readonly Logger Logger = LogManager . GetCurrentClassLogger ( ) ;
57
58
@@ -67,6 +68,10 @@ public void OnInit(Player player, TableApi tableApi, BallManager ballManager)
67
68
foreach ( var coil in availableCoils ) {
68
69
_coilNames [ coil . InternalId . ToString ( ) ] = coil . Id ;
69
70
}
71
+ _lampNames . Clear ( ) ;
72
+ foreach ( var lamp in availableLamps ) {
73
+ _lampNames [ lamp . InternalId . ToString ( ) ] = lamp . Id ;
74
+ }
70
75
_api = new MpfApi ( machineFolder ) ;
71
76
_api . Launch ( new MpfConsoleOptions {
72
77
ShowLogInsteadOfConsole = false ,
@@ -149,7 +154,17 @@ private void OnPulseCoil(object sender, PulseCoilRequest e)
149
154
150
155
private void OnFadeLight ( object sender , FadeLightRequest e )
151
156
{
152
- _player . Queue ( ( ) => Logger . Error ( "TODO: FADE LIGHTS." ) ) ;
157
+ var args = new List < LampEventArgs > ( ) ;
158
+ foreach ( var fade in e . Fades ) {
159
+ if ( _lampNames . ContainsKey ( fade . LightNumber ) ) {
160
+ args . Add ( new LampEventArgs ( _lampNames [ fade . LightNumber ] , ( int ) ( fade . TargetBrightness * 255 ) ) ) ;
161
+ } else {
162
+ Logger . Error ( "Unmapped MPF lamp " + fade . LightNumber ) ;
163
+ }
164
+ }
165
+ _player . Queue ( ( ) => {
166
+ OnLampsChanged ? . Invoke ( this , new LampsEventArgs ( args . ToArray ( ) ) ) ;
167
+ } ) ;
153
168
}
154
169
155
170
private void OnConfigureHardwareRule ( object sender , ConfigureHardwareRuleRequest e )
@@ -184,13 +199,15 @@ private void OnRemoveHardwareRule(object sender, RemoveHardwareRuleRequest e)
184
199
185
200
private void OnDestroy ( )
186
201
{
187
- _api . Client . OnEnableCoil -= OnEnableCoil ;
188
- _api . Client . OnDisableCoil -= OnDisableCoil ;
189
- _api . Client . OnPulseCoil -= OnPulseCoil ;
190
- _api . Client . OnConfigureHardwareRule -= OnConfigureHardwareRule ;
191
- _api . Client . OnRemoveHardwareRule -= OnRemoveHardwareRule ;
192
- _api . Client . OnFadeLight -= OnFadeLight ;
193
- _api . Dispose ( ) ;
202
+ if ( _api != null ) {
203
+ _api . Client . OnEnableCoil -= OnEnableCoil ;
204
+ _api . Client . OnDisableCoil -= OnDisableCoil ;
205
+ _api . Client . OnPulseCoil -= OnPulseCoil ;
206
+ _api . Client . OnConfigureHardwareRule -= OnConfigureHardwareRule ;
207
+ _api . Client . OnRemoveHardwareRule -= OnRemoveHardwareRule ;
208
+ _api . Client . OnFadeLight -= OnFadeLight ;
209
+ _api . Dispose ( ) ;
210
+ }
194
211
}
195
212
}
196
213
}
0 commit comments