From 4d7c88e82157d3f49038a29134b702a4eaa5f5e3 Mon Sep 17 00:00:00 2001 From: Tony Pohto <tmpoht@utu.fi> Date: Sat, 2 Mar 2019 14:37:26 +0200 Subject: [PATCH] Global event system --- Assets/Scripts/EventSystem.cs | 25 +++++++++++++++++++++++++ Assets/Scripts/EventSystem.cs.meta | 11 +++++++++++ Assets/Scripts/EventType.cs | 8 ++++++++ Assets/Scripts/EventType.cs.meta | 11 +++++++++++ Assets/Scripts/IAction.cs | 8 ++++++++ Assets/Scripts/IAction.cs.meta | 11 +++++++++++ 6 files changed, 74 insertions(+) create mode 100644 Assets/Scripts/EventSystem.cs create mode 100644 Assets/Scripts/EventSystem.cs.meta create mode 100644 Assets/Scripts/EventType.cs create mode 100644 Assets/Scripts/EventType.cs.meta create mode 100644 Assets/Scripts/IAction.cs create mode 100644 Assets/Scripts/IAction.cs.meta diff --git a/Assets/Scripts/EventSystem.cs b/Assets/Scripts/EventSystem.cs new file mode 100644 index 0000000..aeb877e --- /dev/null +++ b/Assets/Scripts/EventSystem.cs @@ -0,0 +1,25 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public static class EventSystem +{ + static Dictionary<EventType, List<IAction>> events = new Dictionary<EventType, List<IAction>>(); + + + public static void AddEvent(EventType name, IAction target) { + if (!events.ContainsKey(name)) + events.Add(name, new List<IAction>()); + events[name].Add(target); + } + + public static void EventHappened(EventType name) + { + if (events.ContainsKey(name)) + { + foreach (IAction e in events.Values){ + e.React(); + } + } + } +} diff --git a/Assets/Scripts/EventSystem.cs.meta b/Assets/Scripts/EventSystem.cs.meta new file mode 100644 index 0000000..dfe7177 --- /dev/null +++ b/Assets/Scripts/EventSystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8035379af60d7a344bf9033fff4a1f3f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/EventType.cs b/Assets/Scripts/EventType.cs new file mode 100644 index 0000000..97a4e41 --- /dev/null +++ b/Assets/Scripts/EventType.cs @@ -0,0 +1,8 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public enum EventType +{ + TimePeriodChanged +} diff --git a/Assets/Scripts/EventType.cs.meta b/Assets/Scripts/EventType.cs.meta new file mode 100644 index 0000000..deca570 --- /dev/null +++ b/Assets/Scripts/EventType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 173740ad07280db429023b38a0e230a7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/IAction.cs b/Assets/Scripts/IAction.cs new file mode 100644 index 0000000..51d28e5 --- /dev/null +++ b/Assets/Scripts/IAction.cs @@ -0,0 +1,8 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public interface IAction +{ + void React(); +} diff --git a/Assets/Scripts/IAction.cs.meta b/Assets/Scripts/IAction.cs.meta new file mode 100644 index 0000000..8ecd36f --- /dev/null +++ b/Assets/Scripts/IAction.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3804ff07da1145d4dafd154188b42f89 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: -- GitLab