Skip to content
This repository was archived by the owner on Aug 10, 2021. It is now read-only.

Commit e2addab

Browse files
committed
Create base game event class to use interface methods
1 parent 580db6a commit e2addab

File tree

8 files changed

+88
-47
lines changed

8 files changed

+88
-47
lines changed
Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,10 @@
11
using GameEvents.Generic;
22
using UnityEngine;
3-
using UnityEngine.Events;
43

54
namespace GameEvents.Game
65
{
76
[AddComponentMenu("Game Events/Game Event Listener")]
8-
public class GameEventListener : MonoBehaviour, IGameEventListener
7+
public class GameEventListener : BaseGameEventListener<GameEvent>
98
{
10-
[SerializeField]
11-
[Tooltip("Game event to listen to which will trigger the onGameEvent event")]
12-
private GameEvent gameEvent = default;
13-
14-
[SerializeField]
15-
[Tooltip("Called when the listener is triggered with an argument")]
16-
private UnityEvent onGameEvent = default;
17-
18-
private void OnEnable()
19-
{
20-
if (gameEvent == null)
21-
{
22-
Debug.LogWarning($"Game Event on listener {name} is not set");
23-
return;
24-
}
25-
26-
gameEvent.RegisterListener(this);
27-
}
28-
29-
private void OnDisable()
30-
{
31-
if (gameEvent == null)
32-
{
33-
Debug.LogWarning($"Game Event on listener {name} is not set");
34-
return;
35-
}
36-
37-
gameEvent.UnregisterListener(this);
38-
}
39-
40-
public void OnGameEvent()
41-
{
42-
onGameEvent.Invoke();
43-
}
449
}
4510
}

Runtime/GameEvents/Game/GameEventListener.cs.meta

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
using UnityEngine;
2+
using UnityEngine.Events;
3+
4+
namespace GameEvents.Generic
5+
{
6+
public abstract class BaseGameEventListener<TGameEvent>
7+
: MonoBehaviour, IGameEventListener
8+
where TGameEvent : IGameEvent
9+
{
10+
[SerializeField]
11+
[Tooltip("Game event to listen to which will trigger the onGameEvent event")]
12+
private TGameEvent gameEvent = default;
13+
14+
[SerializeField]
15+
[Tooltip("Called when the listener is triggered with an argument")]
16+
private UnityEvent onGameEvent = default;
17+
18+
private void OnEnable()
19+
{
20+
if (gameEvent == null)
21+
{
22+
Debug.LogWarning($"Game Event on listener {name} is not set");
23+
return;
24+
}
25+
26+
gameEvent.RegisterListener(this);
27+
}
28+
29+
private void OnDisable()
30+
{
31+
if (gameEvent == null)
32+
{
33+
Debug.LogWarning($"Game Event on listener {name} is not set");
34+
return;
35+
}
36+
37+
gameEvent.UnregisterListener(this);
38+
}
39+
40+
public void OnGameEvent()
41+
{
42+
onGameEvent.Invoke();
43+
}
44+
}
45+
}

Runtime/GameEvents/Generic/BaseGameEventListener.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Runtime/GameEvents/Generic/IGameEvent.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@ public interface IGameEvent
77
/// </summary>
88
void RaiseGameEvent();
99

10-
// TODO UNUSED
1110
/// <summary>
1211
/// Register a listener to this event.
1312
/// </summary>
1413
void RegisterListener(IGameEventListener listener);
1514

16-
// TODO UNUSED
1715
/// <summary>
1816
/// Unregister a listener from this event.
1917
/// </summary>

Samples/GameEvents/Prefabs/ScoreHandler.prefab

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ GameObject:
1111
- component: {fileID: 3201492554182924232}
1212
- component: {fileID: 3201492554182924238}
1313
- component: {fileID: 3201492554182924233}
14-
- component: {fileID: 3201492554182924236}
14+
- component: {fileID: 3197890015597547032}
1515
- component: {fileID: 3201492554182924239}
1616
m_Layer: 5
1717
m_Name: ScoreHandler
@@ -80,7 +80,7 @@ MonoBehaviour:
8080
m_VerticalOverflow: 0
8181
m_LineSpacing: 1
8282
m_Text:
83-
--- !u!114 &3201492554182924236
83+
--- !u!114 &3197890015597547032
8484
MonoBehaviour:
8585
m_ObjectHideFlags: 0
8686
m_CorrespondingSourceObject: {fileID: 0}
@@ -89,7 +89,7 @@ MonoBehaviour:
8989
m_GameObject: {fileID: 3201492554182924235}
9090
m_Enabled: 1
9191
m_EditorHideFlags: 0
92-
m_Script: {fileID: 11500000, guid: 3290c72cf08c4aadae834ba05ae7d0e0, type: 3}
92+
m_Script: {fileID: 11500000, guid: a0b2f85583a54b21922069d1d0951342, type: 3}
9393
m_Name:
9494
m_EditorClassIdentifier:
9595
gameEvent: {fileID: 11400000, guid: ba3e9660171fc3e499829b9d9ed8b9cb, type: 2}

Samples/GameEvents/Prefabs/Spawner.prefab

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ GameObject:
1010
m_Component:
1111
- component: {fileID: 3952613158653746744}
1212
- component: {fileID: 3952613158653746750}
13-
- component: {fileID: 3952613158653746751}
13+
- component: {fileID: 1775778486484008960}
1414
- component: {fileID: 3952613158653746745}
1515
m_Layer: 2
1616
m_Name: Spawner
@@ -46,7 +46,7 @@ BoxCollider:
4646
serializedVersion: 2
4747
m_Size: {x: 15, y: 15, z: 1}
4848
m_Center: {x: 0, y: 0, z: 0}
49-
--- !u!114 &3952613158653746751
49+
--- !u!114 &1775778486484008960
5050
MonoBehaviour:
5151
m_ObjectHideFlags: 0
5252
m_CorrespondingSourceObject: {fileID: 0}
@@ -55,7 +55,7 @@ MonoBehaviour:
5555
m_GameObject: {fileID: 3952613158653746747}
5656
m_Enabled: 1
5757
m_EditorHideFlags: 0
58-
m_Script: {fileID: 11500000, guid: 3290c72cf08c4aadae834ba05ae7d0e0, type: 3}
58+
m_Script: {fileID: 11500000, guid: a0b2f85583a54b21922069d1d0951342, type: 3}
5959
m_Name:
6060
m_EditorClassIdentifier:
6161
gameEvent: {fileID: 11400000, guid: ba3e9660171fc3e499829b9d9ed8b9cb, type: 2}

Samples/GameEvents/Scenes/GameEvents.unity

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ LightmapSettings:
9898
m_TrainingDataDestination: TrainingData
9999
m_LightProbeSampleCountMultiplier: 4
100100
m_LightingDataAsset: {fileID: 0}
101-
m_UseShadowmask: 1
101+
m_UseShadowmask: 0
102102
--- !u!196 &4
103103
NavMeshSettings:
104104
serializedVersion: 2
@@ -245,6 +245,36 @@ Transform:
245245
m_Father: {fileID: 179482125}
246246
m_RootOrder: 0
247247
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
248+
--- !u!1 &266185453
249+
GameObject:
250+
m_ObjectHideFlags: 0
251+
m_CorrespondingSourceObject: {fileID: 0}
252+
m_PrefabInstance: {fileID: 0}
253+
m_PrefabAsset: {fileID: 0}
254+
serializedVersion: 6
255+
m_Component:
256+
- component: {fileID: 266185454}
257+
m_Layer: 0
258+
m_Name: GameObject
259+
m_TagString: Untagged
260+
m_Icon: {fileID: 0}
261+
m_NavMeshLayer: 0
262+
m_StaticEditorFlags: 0
263+
m_IsActive: 1
264+
--- !u!4 &266185454
265+
Transform:
266+
m_ObjectHideFlags: 0
267+
m_CorrespondingSourceObject: {fileID: 0}
268+
m_PrefabInstance: {fileID: 0}
269+
m_PrefabAsset: {fileID: 0}
270+
m_GameObject: {fileID: 266185453}
271+
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
272+
m_LocalPosition: {x: -69.46671, y: 70.1782, z: -80.441826}
273+
m_LocalScale: {x: 1, y: 1, z: 1}
274+
m_Children: []
275+
m_Father: {fileID: 0}
276+
m_RootOrder: 4
277+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
248278
--- !u!224 &530501970 stripped
249279
RectTransform:
250280
m_CorrespondingSourceObject: {fileID: 3201492554182924232, guid: 29b95b1c8d09d5942a41b5a2e00ec62e,

0 commit comments

Comments
 (0)