summaryrefslogtreecommitdiff
path: root/SurvivalTest/Assets/Scripts/Utils
diff options
context:
space:
mode:
Diffstat (limited to 'SurvivalTest/Assets/Scripts/Utils')
-rw-r--r--SurvivalTest/Assets/Scripts/Utils/EventCenter.cs48
-rw-r--r--SurvivalTest/Assets/Scripts/Utils/EventCenter.cs.meta11
-rw-r--r--SurvivalTest/Assets/Scripts/Utils/EventType.cs12
-rw-r--r--SurvivalTest/Assets/Scripts/Utils/EventType.cs.meta11
4 files changed, 82 insertions, 0 deletions
diff --git a/SurvivalTest/Assets/Scripts/Utils/EventCenter.cs b/SurvivalTest/Assets/Scripts/Utils/EventCenter.cs
new file mode 100644
index 0000000..eef3646
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Utils/EventCenter.cs
@@ -0,0 +1,48 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class EventCenter : Singleton<EventCenter>
+{
+ public delegate void EventHandler(params object [] param);
+
+ private Dictionary<EventMsgType, List<EventHandler>> m_EventHandlers = new Dictionary<EventMsgType, List<EventHandler>>();
+
+ public void Register(EventMsgType evt, EventHandler handler)
+ {
+ List<EventHandler> handlers;
+ if (!m_EventHandlers.TryGetValue(evt, out handlers))
+ {
+ handlers = new List<EventHandler>();
+ m_EventHandlers.Add(evt, handlers);
+ }
+ if (!handlers.Contains(handler))
+ {
+ handlers.Add(handler);
+ }
+ else
+ {
+ Debug.LogError("Event has already registed, eventType=" + evt);
+ }
+ }
+
+ public void UnRegister(EventMsgType evt, EventHandler handler)
+ {
+ List<EventHandler> handlers;
+ if (m_EventHandlers.TryGetValue(evt, out handlers))
+ {
+ if(handlers.Contains(handler))
+ handlers.Remove(handler);
+ }
+ }
+
+ public void Publish(EventMsgType evt, params object[] objs)
+ {
+ List<EventHandler> handlers;
+ if (m_EventHandlers.TryGetValue(evt, out handlers))
+ {
+ handlers.ForEach(h => h(objs));
+ }
+ }
+
+} \ No newline at end of file
diff --git a/SurvivalTest/Assets/Scripts/Utils/EventCenter.cs.meta b/SurvivalTest/Assets/Scripts/Utils/EventCenter.cs.meta
new file mode 100644
index 0000000..f87c419
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Utils/EventCenter.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 224d79fa30383194d86f18f391400340
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/SurvivalTest/Assets/Scripts/Utils/EventType.cs b/SurvivalTest/Assets/Scripts/Utils/EventType.cs
new file mode 100644
index 0000000..92bc690
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Utils/EventType.cs
@@ -0,0 +1,12 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public enum EventMsgType
+{
+
+ // UI
+ ToggleAutoFire, // 自动开火
+ ToggleLockAim, // 锁定方向
+}
+
diff --git a/SurvivalTest/Assets/Scripts/Utils/EventType.cs.meta b/SurvivalTest/Assets/Scripts/Utils/EventType.cs.meta
new file mode 100644
index 0000000..90ea046
--- /dev/null
+++ b/SurvivalTest/Assets/Scripts/Utils/EventType.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2cca452167d1ce34cb98da00cae563b0
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: