using System.Collections; using System.Collections.Generic; using UnityEngine; public enum EEventType { OnStartNormalGame, OnChallengeStart, OnReturnToHome, OnReturnToHunting, OnSynchronizeScore, OnSynchronizeGold, OnSynchronizeHeart, OnSynchronizeKey, OnSynchronizeAIChllengeModeAIData, OnInitializeGame, OnDistributeCardCompletedToCenter, OnSynchronizeGameData, MoveToStore_Heart, MoveToStore_Heart_DuringGame, MoveToStore_Key, OnReturnFullView, OnGameEnd, OnSynchronizeNormalGameData, OnReturnToGameFromStore, /// [ECardType] OnDiscard, /// [int] textureIndex [string] script OnClickFullView, ShowPanel, } public class EventManager : MonoBehaviour { private Dictionary _dicBasicEvents_none; private Dictionary> _dicBasicEvents_one; private Dictionary> _dicBasicEvents_two; private Dictionary> _dicBasicEvents_three; private Dictionary> _dicBasicEvents_four; private void Awake() { _dicBasicEvents_none = new Dictionary(); _dicBasicEvents_one = new Dictionary>(); _dicBasicEvents_two = new Dictionary>(); _dicBasicEvents_three = new Dictionary>(); _dicBasicEvents_four = new Dictionary>(); } #region ## Regist and Remove ## // Regist ===================================================================================== public void RegistEvent(EEventType evtType, System.Action action) { if (_dicBasicEvents_none.ContainsKey(evtType)) { _dicBasicEvents_none[evtType] += action; } else { _dicBasicEvents_none.Add(evtType, action); } } public void RegistEvent(EEventType evtType, System.Action action) { if (_dicBasicEvents_one.ContainsKey(evtType)) { _dicBasicEvents_one[evtType] += action; } else { _dicBasicEvents_one.Add(evtType, action); } } public void RegistEvent(EEventType evtType, System.Action action) { if (_dicBasicEvents_two.ContainsKey(evtType)) { _dicBasicEvents_two[evtType] += action; } else { _dicBasicEvents_two.Add(evtType, action); } } public void RegistEvent(EEventType evtType, System.Action action) { if (_dicBasicEvents_three.ContainsKey(evtType)) { _dicBasicEvents_three[evtType] += action; } else { _dicBasicEvents_three.Add(evtType, action); } } public void RegistEvent(EEventType evtType, System.Action action) { if (_dicBasicEvents_four.ContainsKey(evtType)) { _dicBasicEvents_four[evtType] += action; } else { _dicBasicEvents_four.Add(evtType, action); } } // Remove ===================================================================================== public void RemoveEvent(EEventType evtType, System.Action action) { if (_dicBasicEvents_none.ContainsKey(evtType)) { _dicBasicEvents_none[evtType] -= action; } else { #if UNITY_EDITOR Debug.LogWarning($"{nameof(_dicBasicEvents_none)}.{evtType} is Already Empry In Dictionary."); #endif } } public void RemoveEvent(EEventType evtType, System.Action action) { if (_dicBasicEvents_one.ContainsKey(evtType)) { _dicBasicEvents_one[evtType] -= action; } else { #if UNITY_EDITOR Debug.LogWarning($"{nameof(_dicBasicEvents_one)}.{evtType} is Already Empry In Dictionary."); #endif } } public void RemoveEvent(EEventType evtType, System.Action action) { if (_dicBasicEvents_two.ContainsKey(evtType)) { _dicBasicEvents_two[evtType] -= action; } else { #if UNITY_EDITOR Debug.LogWarning($"{nameof(_dicBasicEvents_two)}.{evtType} is Already Empry In Dictionary."); #endif } } public void RemoveEvent(EEventType evtType, System.Action action) { if (_dicBasicEvents_three.ContainsKey(evtType)) { _dicBasicEvents_three[evtType] -= action; } else { #if UNITY_EDITOR Debug.LogWarning($"{nameof(_dicBasicEvents_three)}.{evtType} is Already Empry In Dictionary."); #endif } } public void RemoveEvent(EEventType evtType, System.Action action) { if (_dicBasicEvents_four.ContainsKey(evtType)) { _dicBasicEvents_four[evtType] -= action; } else { #if UNITY_EDITOR Debug.LogWarning($"{nameof(_dicBasicEvents_four)}.{evtType} is Already Empry In Dictionary."); #endif } } #endregion #region ## Invoke ## public void InvokeEvent(EEventType type) { if (_dicBasicEvents_none.ContainsKey(type)) { _dicBasicEvents_none[type]?.Invoke(); } else { #if UNITY_EDITOR Debug.LogWarning($"\n{nameof(EventManager)}.{nameof(_dicBasicEvents_none)} has not {type}.\n Please Check.\n"); #endif } } public void InvokeEvent(EEventType type, object param1) { if (_dicBasicEvents_one.ContainsKey(type)) { _dicBasicEvents_one[type]?.Invoke(param1); } else { #if UNITY_EDITOR Debug.LogWarning($"\n{nameof(EventManager)}.{nameof(_dicBasicEvents_one)} has not {type}.\n Please Check.\n"); #endif } } public void InvokeEvent(EEventType type, object param1, object param2) { if (_dicBasicEvents_two.ContainsKey(type)) { _dicBasicEvents_two[type]?.Invoke(param1, param2); } else { #if UNITY_EDITOR Debug.LogWarning($"\n{nameof(EventManager)}.{nameof(_dicBasicEvents_two)} has not {type}.\n Please Check.\n"); #endif } } public void InvokeEvent(EEventType type, object param1, object param2, object param3) { if (_dicBasicEvents_three.ContainsKey(type)) { _dicBasicEvents_three[type]?.Invoke(param1, param2, param3); } else { #if UNITY_EDITOR Debug.LogWarning($"\n{nameof(EventManager)}.{nameof(_dicBasicEvents_three)} has not {type}.\n Please Check.\n"); #endif } } public void InvokeEvent(EEventType type, object param1, object param2, object param3, object param4) { if (_dicBasicEvents_four.ContainsKey(type)) { _dicBasicEvents_four[type]?.Invoke(param1, param2, param3, param4); } else { #if UNITY_EDITOR Debug.LogWarning($"\n{nameof(EventManager)}.{nameof(_dicBasicEvents_four)} has not {type}.\n Please Check.\n"); #endif } } #endregion }