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