13
13
using System . Collections . Generic ;
14
14
using System . Linq ;
15
15
using Mpf . Vpe ;
16
+ using NLog ;
16
17
using UnityEngine ;
17
18
using VisualPinball . Engine . Game . Engines ;
18
19
using VisualPinball . Unity ;
20
+ using Logger = NLog . Logger ;
19
21
20
22
namespace VisualPinball . Engine . Mpf . Unity
21
23
{
@@ -46,14 +48,20 @@ public class MpfGamelogicEngine : MonoBehaviour, IGamelogicEngine
46
48
[ SerializeField ] private GamelogicEngineCoil [ ] availableCoils = new GamelogicEngineCoil [ 0 ] ;
47
49
[ SerializeField ] private GamelogicEngineLamp [ ] availableLamps = new GamelogicEngineLamp [ 0 ] ;
48
50
51
+ private Player _player ;
49
52
private Dictionary < string , int > _switchIds = new Dictionary < string , int > ( ) ;
53
+ private Dictionary < string , string > _switchNames = new Dictionary < string , string > ( ) ;
50
54
private Dictionary < string , string > _coilNames = new Dictionary < string , string > ( ) ;
51
55
52
- private void Awake ( )
56
+ private static readonly Logger Logger = LogManager . GetCurrentClassLogger ( ) ;
57
+
58
+ public void OnInit ( Player player , TableApi tableApi , BallManager ballManager )
53
59
{
60
+ _player = player ;
54
61
_switchIds . Clear ( ) ;
55
62
foreach ( var sw in availableSwitches ) {
56
63
_switchIds [ sw . Id ] = sw . InternalId ;
64
+ _switchNames [ sw . InternalId . ToString ( ) ] = sw . Id ;
57
65
}
58
66
_coilNames . Clear ( ) ;
59
67
foreach ( var coil in availableCoils ) {
@@ -68,10 +76,7 @@ private void Awake()
68
76
_api . Client . OnConfigureHardwareRule += OnConfigureHardwareRule ;
69
77
_api . Client . OnRemoveHardwareRule += OnRemoveHardwareRule ;
70
78
_api . Client . OnFadeLight += OnFadeLight ;
71
- }
72
79
73
- public void OnInit ( Player player , TableApi tableApi , BallManager ballManager )
74
- {
75
80
_api . StartGame ( player . SwitchStatusesClosed ) ;
76
81
}
77
82
@@ -80,7 +85,7 @@ public void Switch(string id, bool isClosed)
80
85
if ( _switchIds . ContainsKey ( id ) ) {
81
86
_api . Switch ( _switchIds [ id ] . ToString ( ) , isClosed ) ;
82
87
} else {
83
- Debug . LogError ( "Unmapped MPF switch " + id ) ;
88
+ Logger . Error ( "Unmapped MPF switch " + id ) ;
84
89
}
85
90
}
86
91
@@ -97,7 +102,7 @@ private void OnEnableCoil(object sender, EnableCoilRequest e)
97
102
if ( _coilNames . ContainsKey ( e . CoilNumber ) ) {
98
103
OnCoilChanged ? . Invoke ( this , new CoilEventArgs ( _coilNames [ e . CoilNumber ] , true ) ) ;
99
104
} else {
100
- Debug . LogError ( "Unmapped MPF coil " + e . CoilNumber ) ;
105
+ Logger . Error ( "Unmapped MPF coil " + e . CoilNumber ) ;
101
106
}
102
107
}
103
108
@@ -106,26 +111,49 @@ private void OnDisableCoil(object sender, DisableCoilRequest e)
106
111
if ( _coilNames . ContainsKey ( e . CoilNumber ) ) {
107
112
OnCoilChanged ? . Invoke ( this , new CoilEventArgs ( _coilNames [ e . CoilNumber ] , false ) ) ;
108
113
} else {
109
- Debug . LogError ( "Unmapped MPF coil " + e . CoilNumber ) ;
114
+ Logger . Error ( "Unmapped MPF coil " + e . CoilNumber ) ;
110
115
}
111
116
}
112
117
113
118
private void OnPulseCoil ( object sender , PulseCoilRequest e )
114
119
{
120
+ Logger . Info ( $ "PULSING COIL { e . CoilNumber } ") ;
115
121
}
116
122
117
123
private void OnFadeLight ( object sender , FadeLightRequest e )
118
124
{
125
+ Logger . Info ( "FADING SOME LIGHTS" ) ;
119
126
}
120
127
121
- private void OnRemoveHardwareRule ( object sender , RemoveHardwareRuleRequest e )
128
+ private void OnConfigureHardwareRule ( object sender , ConfigureHardwareRuleRequest e )
122
129
{
130
+ if ( ! _switchNames . ContainsKey ( e . SwitchNumber ) ) {
131
+ Logger . Error ( "Unmapped MPF switch " + e . SwitchNumber ) ;
132
+ return ;
133
+ }
134
+ if ( ! _coilNames . ContainsKey ( e . CoilNumber ) ) {
135
+ Logger . Error ( "Unmapped MPF coil " + e . CoilNumber ) ;
136
+ return ;
137
+ }
138
+
139
+ _player . AddDynamicWire ( _switchNames [ e . SwitchNumber ] , _coilNames [ e . CoilNumber ] ) ;
140
+ Logger . Info ( $ "Added new hardware rule: { _switchNames [ e . SwitchNumber ] } -> { _coilNames [ e . CoilNumber ] } .") ;
123
141
}
124
142
125
- private void OnConfigureHardwareRule ( object sender , ConfigureHardwareRuleRequest e )
143
+ private void OnRemoveHardwareRule ( object sender , RemoveHardwareRuleRequest e )
126
144
{
127
- }
145
+ if ( ! _switchNames . ContainsKey ( e . SwitchNumber ) ) {
146
+ Logger . Error ( "Unmapped MPF coil " + e . SwitchNumber ) ;
147
+ return ;
148
+ }
149
+ if ( ! _coilNames . ContainsKey ( e . CoilNumber ) ) {
150
+ Logger . Error ( "Unmapped MPF coil " + e . CoilNumber ) ;
151
+ return ;
152
+ }
128
153
154
+ _player . RemoveDynamicWire ( _switchNames [ e . SwitchNumber ] , _coilNames [ e . CoilNumber ] ) ;
155
+ Logger . Info ( $ "Removed hardware rule: { _switchNames [ e . SwitchNumber ] } -> { _coilNames [ e . CoilNumber ] } .") ;
156
+ }
129
157
130
158
private void OnDestroy ( )
131
159
{
0 commit comments