using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 这里主要处理和登录相关的UI /// /// public class PopUIManager : MonoBehaviour { [SerializeField] private PopBase[] popAry;//所有的POP弹框 private Dictionary popDict = new Dictionary(); void Start () { InitPops(); MessageCenterController.Instance.Register(GameEnum.MESSAGE_ENTER_COURSE, EnterCourse);//创建房间后 进入房间 MessageCenterController.Instance.Register(GameEnum.MESSAGE_EXIT_COURSE, ExitCourse);//退出房间 MessageCenterController.Instance.Register(GameEnum.MESSAGE_SHOW_RECONNECT_POP, ShowReConnect);//重连 MessageCenterController.Instance.Register(GameEnum.MESSAGE_SHOW_LOGOUT, ShowLogOut);//登出 MessageCenterController.Instance.Register(GameEnum.MESSAGE_RESET_ACCOUNT, ShowResetLogin);//账号重置 MessageCenterController.Instance.Register(GameEnum.MESSAGE_SHOW_MSG_POP, ShowMsgPop);//消息提示框弹出 MessageCenterController.Instance.Register(GameEnum.MESSAGE_SHOW_CHANGE_CONFIRM_POP, ShowChangeConfirm); MessageCenterController.Instance.Register(GameEnum.MESSAGE_SHOW_IMAGE_POP, ShowImagePop); MessageCenterController.Instance.Register(GameEnum.MESSAGE_HIDE_IMAGE_POP, HIdeImagePop); MessageCenterController.Instance.Register(GameEnum.MESSAGE_HIDE_POP_BY_TYPE, HidePop);//影藏弹框 MessageCenterController.Instance.Register(GameEnum.MESSAGE_SHOW_POP_BY_TYPE, ShowPop);//显示弹框 } private void OnDestroy() { MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_ENTER_COURSE, EnterCourse);//创建房间后 进入房间 MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_SHOW_RECONNECT_POP, ShowReConnect);//重连 MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_SHOW_LOGOUT, ShowLogOut);//登出 MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_RESET_ACCOUNT, ShowResetLogin);//账号重置 MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_SHOW_MSG_POP, ShowMsgPop);//消息提示框弹出 MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_SHOW_CHANGE_CONFIRM_POP, ShowChangeConfirm); MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_SHOW_IMAGE_POP, ShowImagePop); MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_HIDE_IMAGE_POP, HIdeImagePop); MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_HIDE_POP_BY_TYPE, HidePop);//影藏弹框 MessageCenterController.Instance.UnRegister(GameEnum.MESSAGE_SHOW_POP_BY_TYPE, ShowPop);//显示弹框 } private void InitPops() { //初始化POP的列表 for (int i = 0; i < popAry.Length; i++) { if (popDict.ContainsKey(popAry[i].MType)) { CDebug.Log(popAry[i].name + " 类型异常"); } else { if (popAry[i].MType == PopType.Login) { popAry[i].Show(); } else { popAry[i].gameObject.SetActive(false); } popDict.Add(popAry[i].MType, popAry[i]); } } } private void SetPop(PopType t, bool v, System.Object datas = null) { if (v) { if (datas != null) { GetPopByType(t).Show(datas); } else { GetPopByType(t).Show(); } } else { GetPopByType(t).Hide(); } } private PopBase GetPopByType(PopType t) { //CDebug.Log(t.ToString()); if(!popDict.ContainsKey(t)) { CDebug.Log(t.ToString() + "不存在"); } return popDict[t]; } private void EnterCourse(System.Object datas = null) { SetPop(PopType.Login, false); SetPop(PopType.RoomList, false); SetPop(PopType.CourseList, false); } private void ExitCourse(System.Object datas = null) { SetPop(PopType.RoomList, true); HIdeImagePop(null); } //检查重连 public void ShowReConnect(System.Object datas = null) { SetPop(PopType.Reconnect, true); } private void ShowImagePop(System.Object datas) { SetPop(PopType.Image, true, datas); } private void HIdeImagePop(System.Object datas) { SetPop(PopType.Image, false); } private void ShowMsgPop(System.Object datas = null) { SetPop(PopType.Msg, true, datas); } //切换房主 private void ShowChangeConfirm(System.Object datas = null) { SetPop(PopType.ChangeMaster, true, datas); } private void ShowLogOut(System.Object data = null) { SetPop(PopType.Login, true, true); SetPop(PopType.Msg, true, "账号登出"); SetPop(PopType.RoomList, false); SetPop(PopType.CourseList, false); } public void ShowResetLogin(System.Object data = null) { SetPop(PopType.Login, true, true); SetPop(PopType.RoomList, false); SetPop(PopType.CourseList, false); } private void ShowNotice(System.Object data = null) { //CDebug.Log("ShowNotice-->" + data.ToString()); SetPop(PopType.BadConnecting, true, data); } private void HideNotice(System.Object data = null) { //CDebug.Log("HideNotice-->"); SetPop(PopType.BadConnecting, false, data); } private void ShowAnswerPop(System.Object datas = null) { SetPop(PopType.Answer, true, datas); } private void HideAnswerPop(System.Object datas = null) { SetPop(PopType.Answer, false); } private void HidePop(System.Object data = null) { PopType t = (PopType)data; SetPop(t, false); } private void ShowPop(System.Object data = null) { ShowPopData t = data as ShowPopData; SetPop(t.t, true, t.data); } }