14
14
15
15
namespace VisualPinball . Engine . Mpf . Unity . MediaController
16
16
{
17
- public class MpfEventRequester < TEvent >
17
+ /// <summary>
18
+ /// Used to request certain categories of messages to be sent from MPF. The categories are eiter
19
+ /// <c>MonitoringCategory</c> for various BCP messages or <c>string</c> to request arbitrary
20
+ /// MPF events to be sent as 'trigger' messages whenever they occur.
21
+ /// </summary>
22
+ /// <typeparam name="T">The type of each message category</typeparam>
23
+ public class MpfEventRequester < T >
18
24
{
19
- public delegate ISentMessage CreateMessage ( TEvent @event ) ;
25
+ public delegate ISentMessage CreateMessage ( T @event ) ;
20
26
21
27
private readonly BcpInterface _bcpInterface ;
22
28
private readonly CreateMessage _createStartListeningMessage ;
23
29
private readonly CreateMessage _createStopListeningMessage ;
24
- private readonly Dictionary < TEvent , HashSet < object > > _listeners = new ( ) ;
30
+ private readonly Dictionary < T , HashSet < object > > _listeners = new ( ) ;
25
31
private bool _canSendMonitoringRequests = false ;
26
32
private bool CanSendMonitoringRequests
27
33
{
@@ -55,7 +61,7 @@ CreateMessage createStopListeningMessage
55
61
_createStopListeningMessage = createStopListeningMessage ;
56
62
}
57
63
58
- public void AddListener ( object listener , TEvent @event )
64
+ public void AddListener ( object listener , T @event )
59
65
{
60
66
if ( _listeners . TryAdd ( @event , new HashSet < object > { listener } ) )
61
67
{
@@ -69,7 +75,7 @@ public void AddListener(object listener, TEvent @event)
69
75
) ;
70
76
}
71
77
72
- public void RemoveListener ( object listener , TEvent @event )
78
+ public void RemoveListener ( object listener , T @event )
73
79
{
74
80
if (
75
81
_listeners . TryGetValue ( @event , out var listenersForThisEvent )
@@ -89,13 +95,13 @@ public void RemoveListener(object listener, TEvent @event)
89
95
) ;
90
96
}
91
97
92
- private void SendStartMonitoringRequest ( TEvent @event )
98
+ private void SendStartMonitoringRequest ( T @event )
93
99
{
94
100
var startListeningMsg = _createStartListeningMessage ( @event ) ;
95
101
_bcpInterface . EnqueueMessage ( startListeningMsg ) ;
96
102
}
97
103
98
- private void SendStopMonitoringRequest ( TEvent @event )
104
+ private void SendStopMonitoringRequest ( T @event )
99
105
{
100
106
var stopListeningMsg = _createStopListeningMessage ( @event ) ;
101
107
_bcpInterface . EnqueueMessage ( stopListeningMsg ) ;
0 commit comments