瀏覽代碼

修复雅集答题,切出去,再进入答题会偶然报错的问题

hexiaojie 2 年之前
父節點
當前提交
358e8bba44
共有 1 個文件被更改,包括 43 次插入39 次删除
  1. 43 39
      GameClient/Assets/Game/HotUpdate/Views/League/LeagueAnsweringView.cs

+ 43 - 39
GameClient/Assets/Game/HotUpdate/Views/League/LeagueAnsweringView.cs

@@ -13,7 +13,6 @@ namespace GFGGame
         private UI_LeagueAnsweringUI _ui;
         private EffectUI _effectUI1;
         private EffectUI _effectUI2;
-        private LeagueDataManager _dataManager;
         private List<long> _memberIds;
 
         public override void Dispose()
@@ -65,10 +64,21 @@ namespace GFGGame
             EventAgent.AddEventListener(ConstMessage.LEAGUE_ANSWER_MEMBER_CHANGE, UpdateJoinList);
             EventAgent.AddEventListener(ConstMessage.NOTICE_CHAT_MESSAGE, UpdateChatList);
         }
+
+        protected override void RemoveEventListener()
+        {
+            EventAgent.RemoveEventListener(ConstMessage.LEAGUE_ANSWER_START, UpdateQuestion);
+            EventAgent.RemoveEventListener(ConstMessage.LEAGUE_ANSWER_END, UpdateResult);
+            EventAgent.RemoveEventListener(ConstMessage.LEAGUE_ANSWER_RESULT_CHANGE, UpdateResult);
+            EventAgent.RemoveEventListener(ConstMessage.LEAGUE_ANSWER_RESULT_CHANGE, UpdateJoinList);
+            EventAgent.RemoveEventListener(ConstMessage.LEAGUE_ANSWER_MEMBER_CHANGE, UpdateJoinList);
+            EventAgent.RemoveEventListener(ConstMessage.NOTICE_CHAT_MESSAGE, UpdateChatList);
+            base.RemoveEventListener();
+        }
+        
         protected override async void OnShown()
         {
             base.OnShown();
-            _dataManager = LeagueDataManager.Instance;
 
             bool result = await LeagueSproxy.ReqJoinAnswer();
             if (result)
@@ -88,16 +98,10 @@ namespace GFGGame
             Timers.inst.Remove(UpdateActiveTime);
             _ui.m_holderHead.visible = false;
         }
-
-        protected override void RemoveEventListener()
-        {
-            base.RemoveEventListener();
-
-        }
-
+        
         private void OnBtnBackClick()
         {
-            if (_dataManager.LastAnswerRoleData.LastQuestionResult == LastQuestionResult.Ending)
+            if (LeagueDataManager.Instance.LastAnswerRoleData.LastQuestionResult == LastQuestionResult.Ending)
             {
                 LeagueSproxy.ReqQuitAnswer().Coroutine();
                 ViewManager.GoBackFrom(typeof(LeagueAnsweringView).FullName);
@@ -159,7 +163,7 @@ namespace GFGGame
         }
         private void UpdateQuestionState()
         {
-            if (_dataManager.GetNumeriValue(LeagueNumericType.LeagueQuestionStatus) == LeagueQuestionStatus.Open)//答题中
+            if (LeagueDataManager.Instance.GetNumeriValue(LeagueNumericType.LeagueQuestionStatus) == LeagueQuestionStatus.Open)//答题中
             {
                 UpdateQuestion();
             }
@@ -172,21 +176,21 @@ namespace GFGGame
         private void UpdateQuestion()
         {
             _ui.m_holderHead.visible = false;
-            _ui.m_txtRightCount.SetVar("value", _dataManager.GetNumeriValue(LeagueNumericType.LeagueQuestionTrueCount).ToString()).FlushVars(); ;
-            _ui.m_txtRightCount1.SetVar("value", _dataManager.GetNumeriValue(LeagueNumericType.LeagueQuestionTrueCount).ToString()).FlushVars(); ;
+            _ui.m_txtRightCount.SetVar("value", LeagueDataManager.Instance.GetNumeriValue(LeagueNumericType.LeagueQuestionTrueCount).ToString()).FlushVars(); ;
+            _ui.m_txtRightCount1.SetVar("value", LeagueDataManager.Instance.GetNumeriValue(LeagueNumericType.LeagueQuestionTrueCount).ToString()).FlushVars(); ;
             _ui.m_ctrlQuestionState.selectedIndex = 0;
-            int questionId = (int)_dataManager.GetNumeriValue(LeagueNumericType.LeagueQuestionId);
+            int questionId = (int)LeagueDataManager.Instance.GetNumeriValue(LeagueNumericType.LeagueQuestionId);
             LeagueQuestionCfg questionCfg = LeagueQuestionCfgArray.Instance.GetCfg(questionId);
 
-            _ui.m_txtAnswerNum.text = string.Format("第{0}/{1}题", _dataManager.GetNumeriValue(LeagueNumericType.LeagueQuestionCount), GlobalCfgArray.globalCfg.leagueQuestionNum);
+            _ui.m_txtAnswerNum.text = string.Format("第{0}/{1}题", LeagueDataManager.Instance.GetNumeriValue(LeagueNumericType.LeagueQuestionCount), GlobalCfgArray.globalCfg.leagueQuestionNum);
             _ui.m_ctrlHasIcon.selectedIndex = string.IsNullOrEmpty(questionCfg.res) ? 1 : 0;
             _ui.m_loaIocn.url = string.IsNullOrEmpty(questionCfg.res) ? "" : ResPathUtil.GetIconPath(questionCfg.res, "png");
             _ui.m_txtContent.text = questionCfg.question;
 
-            bool isAnswer = !string.IsNullOrEmpty(_dataManager.LastAnswerRoleData.MyAnswer) && _dataManager.LastAnswerRoleData.LastQuestionId == _dataManager.GetNumeriValue(LeagueNumericType.LeagueQuestionId);
-            _ui.m_txtResult.text = isAnswer ? _dataManager.LastAnswerRoleData.MyAnswer : "";
-            _ui.m_txtResult.enabled = !(isAnswer && _dataManager.LastAnswerRoleData.MyAnswer != questionCfg.answerCorrect);
-            _ui.m_imgFault.visible = isAnswer && _dataManager.LastAnswerRoleData.MyAnswer != questionCfg.answerCorrect;
+            bool isAnswer = !string.IsNullOrEmpty(LeagueDataManager.Instance.LastAnswerRoleData.MyAnswer) && LeagueDataManager.Instance.LastAnswerRoleData.LastQuestionId == LeagueDataManager.Instance.GetNumeriValue(LeagueNumericType.LeagueQuestionId);
+            _ui.m_txtResult.text = isAnswer ? LeagueDataManager.Instance.LastAnswerRoleData.MyAnswer : "";
+            _ui.m_txtResult.enabled = !(isAnswer && LeagueDataManager.Instance.LastAnswerRoleData.MyAnswer != questionCfg.answerCorrect);
+            _ui.m_imgFault.visible = isAnswer && LeagueDataManager.Instance.LastAnswerRoleData.MyAnswer != questionCfg.answerCorrect;
             _ui.m_ctrlQuestionType.selectedIndex = questionCfg.type;
             if (questionCfg.type == 1)
             {
@@ -213,19 +217,19 @@ namespace GFGGame
         }
         private void UpdateResult()
         {
-            _ui.m_ctrlResult.selectedIndex = _dataManager.LastAnswerRoleData.LastQuestionResult;
-            _ui.m_txtRightCount.text = string.Format("全员已答对{0}题", _dataManager.GetNumeriValue(LeagueNumericType.LeagueQuestionTrueCount));
-            _ui.m_txtRightCount.SetVar("value", _dataManager.GetNumeriValue(LeagueNumericType.LeagueQuestionTrueCount).ToString()).FlushVars();
-            _ui.m_txtRightCount1.SetVar("value", _dataManager.GetNumeriValue(LeagueNumericType.LeagueQuestionTrueCount).ToString()).FlushVars();
+            _ui.m_ctrlResult.selectedIndex = LeagueDataManager.Instance.LastAnswerRoleData.LastQuestionResult;
+            _ui.m_txtRightCount.text = string.Format("全员已答对{0}题", LeagueDataManager.Instance.GetNumeriValue(LeagueNumericType.LeagueQuestionTrueCount));
+            _ui.m_txtRightCount.SetVar("value", LeagueDataManager.Instance.GetNumeriValue(LeagueNumericType.LeagueQuestionTrueCount).ToString()).FlushVars();
+            _ui.m_txtRightCount1.SetVar("value", LeagueDataManager.Instance.GetNumeriValue(LeagueNumericType.LeagueQuestionTrueCount).ToString()).FlushVars();
             _ui.m_txtCdTime.SetVar("value", GlobalCfgArray.globalCfg.leagueQuestionNextTime.ToString()).FlushVars();
             _ui.m_ctrlQuestionState.selectedIndex = 1;
 
-            if (_dataManager.LastAnswerRoleData.LastQuestionResult == LastQuestionResult.SomeBodyRight)
+            if (LeagueDataManager.Instance.LastAnswerRoleData.LastQuestionResult == LastQuestionResult.SomeBodyRight)
             {
 
                 _ui.m_comRightHead.target.visible = true;
                 _ui.m_imgFail.visible = false;
-                OtherRoleInfoData roleInfoData = _dataManager.GetMemberRoleInfo(_dataManager.LastAnswerRoleData.RightRoleId);
+                OtherRoleInfoData roleInfoData = LeagueDataManager.Instance.GetMemberRoleInfo(LeagueDataManager.Instance.LastAnswerRoleData.RightRoleId);
                 ItemCfg headCfg = ItemCfgArray.Instance.GetCfg(roleInfoData.headId == 0 ? ConstItemID.HEADID : roleInfoData.headId);
                 _ui.m_comRightHead.m_loaIcon.url = ResPathUtil.GetHeadPath(headCfg.res);
                 _ui.m_txtInfo.text = string.Format("{0} 答对了!", roleInfoData.roleName);
@@ -233,7 +237,7 @@ namespace GFGGame
                 Timers.inst.Remove(UpdateResultTime);
                 Timers.inst.Add(1, 0, UpdateResultTime);
             }
-            else if (_dataManager.LastAnswerRoleData.LastQuestionResult == LastQuestionResult.NobodyRight)
+            else if (LeagueDataManager.Instance.LastAnswerRoleData.LastQuestionResult == LastQuestionResult.NobodyRight)
             {
                 _ui.m_comRightHead.target.visible = false;
                 _ui.m_imgFail.visible = true;
@@ -245,7 +249,7 @@ namespace GFGGame
             {
                 _ui.m_comRightHead.target.visible = false;
                 _ui.m_imgFail.visible = false;
-                if (_dataManager.GetNumeriValue(LeagueNumericType.LeagueQuestionCount) == GlobalCfgArray.globalCfg.leagueQuestionNum)//全部答完
+                if (LeagueDataManager.Instance.GetNumeriValue(LeagueNumericType.LeagueQuestionCount) == GlobalCfgArray.globalCfg.leagueQuestionNum)//全部答完
                 {
                     _ui.m_txtInfo.text = "全部题目答完啦~";
                 }
@@ -270,16 +274,16 @@ namespace GFGGame
         }
         private void UpdateJoinList()
         {
-            _memberIds = new List<long>(_dataManager.ListAnsweringDatas.Keys);
+            _memberIds = new List<long>(LeagueDataManager.Instance.ListAnsweringDatas.Keys);
             _ui.m_listJoin.numItems = _memberIds.Count;
-            _ui.m_txtJoinNum.text = string.Format("当前参与人员:{0}/{1}", _memberIds.Count, _dataManager.LeagueData.LeagueMemberDatas.Count);
+            _ui.m_txtJoinNum.text = string.Format("当前参与人员:{0}/{1}", _memberIds.Count, LeagueDataManager.Instance.LeagueData.LeagueMemberDatas.Count);
         }
         private void UpdateChatList()
         {
             _memberIds.Sort((long a, long b) =>
             {
-                int countA = _dataManager.ListAnsweringDatas[a];
-                int countB = _dataManager.ListAnsweringDatas[b];
+                int countA = LeagueDataManager.Instance.ListAnsweringDatas[a];
+                int countB = LeagueDataManager.Instance.ListAnsweringDatas[b];
                 if (countA > countB) return -1;
                 if (countB > countA) return 1;
                 return countB - countA;
@@ -289,7 +293,7 @@ namespace GFGGame
         }
         private void RenderListResultItem(int index, GObject obj)
         {
-            int questionId = (int)_dataManager.GetNumeriValue(LeagueNumericType.LeagueQuestionId);
+            int questionId = (int)LeagueDataManager.Instance.GetNumeriValue(LeagueNumericType.LeagueQuestionId);
             LeagueQuestionCfg cfg = LeagueQuestionCfgArray.Instance.GetCfg(questionId); ;
             UI_Button123 item = UI_Button123.Proxy(obj);
             int data = index + 1;
@@ -301,8 +305,8 @@ namespace GFGGame
             //    item.target.title = string.Format("{0}.{1} 正确", data, cfg.answerArr[index]);
             //}
             
-            string myAnswer = _dataManager.LastAnswerRoleData.MyAnswer;
-            bool isAnswer = !string.IsNullOrEmpty(_dataManager.LastAnswerRoleData.MyAnswer) && _dataManager.LastAnswerRoleData.LastQuestionId == _dataManager.GetNumeriValue(LeagueNumericType.LeagueQuestionId);
+            string myAnswer = LeagueDataManager.Instance.LastAnswerRoleData.MyAnswer;
+            bool isAnswer = !string.IsNullOrEmpty(LeagueDataManager.Instance.LastAnswerRoleData.MyAnswer) && LeagueDataManager.Instance.LastAnswerRoleData.LastQuestionId == LeagueDataManager.Instance.GetNumeriValue(LeagueNumericType.LeagueQuestionId);
             item.target.touchable = !isAnswer;
             item.m_c1.selectedIndex = isAnswer && myAnswer == data.ToString() && myAnswer != cfg.answerCorrect.ToString() ? 0 : 1;
             if (item.target.data == null)
@@ -316,7 +320,7 @@ namespace GFGGame
         {
             GObject obj = context.sender as GObject;
             string answer = obj.data.ToString();
-            int questionId = (int)_dataManager.GetNumeriValue(LeagueNumericType.LeagueQuestionId);
+            int questionId = (int)LeagueDataManager.Instance.GetNumeriValue(LeagueNumericType.LeagueQuestionId);
             LeagueQuestionCfg cfg = LeagueQuestionCfgArray.Instance.GetCfg(questionId);
             bool result = await LeagueSproxy.ReqAnswerQuestion(questionId, answer);
             if (result)
@@ -331,7 +335,7 @@ namespace GFGGame
                 PromptController.Instance.ShowFloatTextPrompt("还没有输入答案哦");
                 return;
             }
-            int questionId = (int)_dataManager.GetNumeriValue(LeagueNumericType.LeagueQuestionId);
+            int questionId = (int)LeagueDataManager.Instance.GetNumeriValue(LeagueNumericType.LeagueQuestionId);
             bool result = await LeagueSproxy.ReqAnswerQuestion(questionId, _ui.m_txtResult.text);
             if (result)
             {
@@ -342,11 +346,11 @@ namespace GFGGame
         }
         private void RenderListJoinItem(int index, GObject obj)
         {
-            OtherRoleInfoData roleInfo = _dataManager.GetMemberRoleInfo(_memberIds[index]);
+            OtherRoleInfoData roleInfo = LeagueDataManager.Instance.GetMemberRoleInfo(_memberIds[index]);
             UI_ListAnswerJoinItem item = UI_ListAnswerJoinItem.Proxy(obj);
             RoleInfoManager.Instance.UpdateHead(item.m_comHead, roleInfo.headId, roleInfo.headBorderId);
             item.m_txtName.text = roleInfo.roleName;
-            item.m_txtAnswerCount.text = _dataManager.ListAnsweringDatas[roleInfo.roleId].ToString();
+            item.m_txtAnswerCount.text = LeagueDataManager.Instance.ListAnsweringDatas[roleInfo.roleId].ToString();
             UI_ListAnswerJoinItem.ProxyEnd();
         }
         private void RenderListChatItem(int index, GObject obj)
@@ -358,7 +362,7 @@ namespace GFGGame
             RoleInfoManager.Instance.UpdateHeadWithLv(item.m_comHead, roleInfo.headId, roleInfo.headBorderId, roleInfo.roleLv);
             item.m_txtName.text = roleInfo.roleName;
             int roldRank = _memberIds.IndexOf(roleInfo.roleId);
-            item.m_c1.selectedIndex = roldRank < 3 && _dataManager.ListAnsweringDatas[roleInfo.roleId] > 0 ? roldRank : 3;
+            item.m_c1.selectedIndex = roldRank < 3 && LeagueDataManager.Instance.ListAnsweringDatas[roleInfo.roleId] > 0 ? roldRank : 3;
             string content = "";
             for (int i = 0; i < chatData.Content.Length; i++)
             {