using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using static EventCenter; public class EventCenter : SingleTon { public delegate void EventListenerDelegate(Message evt); public static Dispatcher dispatcher; public void Init() { dispatcher = new Dispatcher(); } } public class Dispatcher { private Dictionary events = new Dictionary(); public void AddListener(MsgType type, EventListenerDelegate listener) { if (listener == null) { Debug.LogError("AddListener: listener不能为空"); return; } EventListenerDelegate myListener = null; events.TryGetValue(type, out myListener); events[type] = (EventListenerDelegate)Delegate.Combine(myListener, listener); } public void RemoveListener(MsgType type, EventListenerDelegate listener) { if (listener == null) { Debug.LogError("RemoveListener: listener不能为空"); return; } events[type] = (EventListenerDelegate)Delegate.Remove(events[type], listener); } public void SendMessage(MsgType type, object param) { EventListenerDelegate listenerDelegate; if (events.TryGetValue(type, out listenerDelegate)) { Message evt = new Message(type, param); try { if (listenerDelegate != null) { listenerDelegate(evt); } } catch (System.Exception e) { Debug.Log("SendMessage:" + evt.msgType.ToString() + " " + e.Message + " " + e.StackTrace + " " + e); } } } public void Clear() { events.Clear(); } } public class Message { public MsgType msgType; public object MsgParams; public Message(MsgType _msgType, object _MsgParams) { msgType = _msgType; MsgParams = _MsgParams; } } public enum MsgType { OnGetPeopleInfo, OnGetCurrentPeopleProgress, OnGetPeopleQuetionList, OnSubmitQuestion, OnGetTalkMsg, /// /// 病人个人资料 /// OnGetPeopleInfo2, OnGetAskReason, OnGetHistoryInfo, OnGetLifeType, OnGetHealing, OnGetCheckReason, OnGetOtherInfo, OnGetBodyNum, OnGetBodyInfo, OnGetBodyPosInfo, OnGetAllStyle, OnGetRoom, OnSetRoom, OnGetCode, OnGetStudentInfo }