105 lines
2.5 KiB
C#
105 lines
2.5 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using static EventCenter;
|
|
|
|
public class EventCenter : SingleTon<EventCenter>
|
|
{
|
|
public delegate void EventListenerDelegate(Message evt);
|
|
public static Dispatcher dispatcher;
|
|
public void Init()
|
|
{
|
|
dispatcher = new Dispatcher();
|
|
}
|
|
}
|
|
public class Dispatcher
|
|
{
|
|
private Dictionary<MsgType, EventListenerDelegate> events = new Dictionary<MsgType, EventListenerDelegate>();
|
|
|
|
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,
|
|
/// <summary>
|
|
/// ²¡È˸öÈË×ÊÁÏ
|
|
/// </summary>
|
|
OnGetPeopleInfo2,
|
|
OnGetAskReason,
|
|
OnGetHistoryInfo,
|
|
OnGetLifeType,
|
|
OnGetHealing,
|
|
OnGetCheckReason,
|
|
OnGetOtherInfo,
|
|
OnGetBodyNum,
|
|
OnGetBodyInfo,
|
|
OnGetBodyPosInfo,
|
|
OnGetAllStyle,
|
|
OnGetRoom,
|
|
OnSetRoom,
|
|
OnGetCode,
|
|
OnGetStudentInfo
|
|
} |