123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- using System;
- using System.Collections;
- using Api;
- using Plugins.CxShine.Singleton;
- using UnityEngine;
- namespace Message
- {
- public class MessageComp : UnitySingleton<MessageComp>
- {
- public bool OpenWhile = true;
- public bool EnterHall = false;
- public float IntervalTime = 1.0f;
- // public bool MsgConsume = false;
- public Action<int, MsgContent> OnBattleRequest;
- public Action<int, MsgContent> OnBattleAgree;
- public Action<MsgContent> OnBattleStart;
- public Action<int, MsgContent> OnBattlePlayerReady;
- public Action<int, MsgContent> OnBattleClientMsg;
- private bool end = false;
- private void Start()
- {
- StartCoroutine(ExecuteEveryFewSeconds());
- }
- private void OnDestroy()
- {
- OpenWhile = false;
- Debug.Log("Meesage Comp Destroy");
- }
- public void ClearMessage()
- {
- ApiComp.Instance.ClearMsgs();
- }
- IEnumerator ExecuteEveryFewSeconds()
- {
- while (true)
- {
- //
- if (OpenWhile)
- {
- // Debug.Log("sync msgs..");
- if (EnterHall)
- {
- ApiComp.Instance.GetMsgList(data =>
- {
- foreach (Api.Msg msg in data.msgs)
- {
- // Debug.Log(">>>>"+msg.type+">>"+msg.id);
- if (msg.type == MessageTypes.MsgRequestBattle.GetHashCode())
- {
- OnBattleRequest?.Invoke(msg.msgFromPlayer, msg.content);
- }
- else if (msg.type == MessageTypes.MsgBattleAgree.GetHashCode())
- {
- OnBattleAgree?.Invoke(msg.msgFromPlayer, msg.content);
- }
- else if (msg.type == MessageTypes.MsgBattleStart.GetHashCode())
- {
- OnBattleStart?.Invoke(msg.content);
- }
- else if (msg.type == MessageTypes.OnBattleClientMsg.GetHashCode())
- {
- Debug.Log("zane client msg:" + msg);
- OnBattleClientMsg?.Invoke(msg.msgFromPlayer, msg.content);
- }
- else if (msg.type == MessageTypes.MsgPlayerReady.GetHashCode())
- {
- OnBattlePlayerReady?.Invoke(msg.msgFromPlayer, msg.content);
- }
- ApiComp.Instance.EndMessage(msg.id);
- }
- }, (code, msg) => { });
- }
- }
- // 等待几秒钟
- if (end)
- {
- yield return null;
- }
- else
- {
- yield return new WaitForSeconds(IntervalTime);
- }
- }
- }
- }
- }
|