zhaoyang 2 ani în urmă
părinte
comite
fd3daf38de

+ 5 - 2
GameClient/Assets/Game/HotUpdate/Controller/GameController.cs

@@ -244,8 +244,11 @@ namespace GFGGame
             TravelSProxy.ReqTravelInfo().Coroutine();
             TravelSProxy.ReqTravelGuideInfo().Coroutine();
             PoemGallerySProxy.ReqGalleryTheme().Coroutine();
-            ArenaSproxy.ReqArenaInfos().Coroutine();
-            ArenaSproxy.ReqArenaHistory().Coroutine();
+            if (FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(ArenaView).Name))
+            {
+                ArenaSproxy.ReqArenaInfos().Coroutine();
+                ArenaSproxy.ReqArenaHistory().Coroutine();
+            }
 
             int storageAutoPlay = StorageDataManager.Instance.GetStorageValue(ConstStorageId.STORAGE_AUTO_PLAY);
             FightDataManager.Instance.autoPlay = storageAutoPlay <= 0 ? false : true;

+ 28 - 87
GameClient/Assets/Game/HotUpdate/Data/ArenaDataManager.cs

@@ -8,6 +8,7 @@ namespace GFGGame
 {
     public class ArenaDataManager : SingletonBase<ArenaDataManager>
     {
+        public long LastFightTime = 0;
         public List<int> ThemeList = new List<int>() { 1, 2, 3 };//本周主题列表
         public string Tag = "异域";//本周标签
         public int SeasonId = 1;// 赛季id
@@ -65,6 +66,7 @@ namespace GFGGame
         }
         public void Clear()
         {
+            ThemeList.Clear();
             DressupList.Clear();
             Targets.Clear();
             RankDatasDic.Clear();
@@ -104,6 +106,22 @@ namespace GFGGame
             }
         }
         /// <summary>
+        /// 赛季是否开启
+        /// </summary>
+        /// <value></value>
+        public bool IsSeasonOpen
+        {
+            get
+            {
+                ArenaOpenCfg cfg = ArenaOpenCfgArray.Instance.GetCfg(SeasonId);
+                if (TimeUtil.IsBeforeCurTime(cfg.openTime) && TimeUtil.IsLaterCurTime(cfg.endTime))
+                {
+                    return true;
+                }
+                return false;
+            }
+        }
+        /// <summary>
         /// 试图更新最高段位、排行数据
         /// </summary>
         public void TryUpdateHighest()
@@ -398,98 +416,21 @@ namespace GFGGame
         }
 
         /************************************************************************************************************/
-        public void SetTestInfo()
-        {
-            Targets.Add(ArenaSproxy.GetArenaTargetData(GetArenaTargetProto()));
-            Targets[0].FightDatas[0].cardId = 2000009;
-            Targets[0].FightDatas[0].cardScore = 100;
-            Targets[0].FightDatas[0].skillLvs = new List<int>() { 1, 1, 1 };
-            Targets[0].FightDatas[0].type = FightTargetType.PLAYER;
-            Targets[0].FightDatas[0].itemScoreList = new List<int>() { 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100 };
-            Targets[0].FightDatas[1].cardId = 2000009;
-            Targets[0].FightDatas[1].cardScore = 100;
-            Targets[0].FightDatas[1].skillLvs = new List<int>() { 1, 1, 1 };
-            Targets[0].FightDatas[1].type = FightTargetType.PLAYER;
-            Targets[0].FightDatas[1].itemScoreList = new List<int>() { 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100 };
-            Targets[0].FightDatas[2].cardId = 2000009;
-            Targets[0].FightDatas[2].cardScore = 100;
-            Targets[0].FightDatas[2].skillLvs = new List<int>() { 1, 1, 1 };
-            Targets[0].FightDatas[2].type = FightTargetType.PLAYER;
-            Targets[0].FightDatas[2].itemScoreList = new List<int>() { 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100 };
-            Targets.Add(ArenaSproxy.GetArenaTargetData(GetArenaTargetProto()));
-            Targets[1].FightDatas[0].cardId = 2000009;
-            Targets[1].FightDatas[0].cardScore = 100;
-            Targets[1].FightDatas[0].skillLvs = new List<int>() { 1, 1, 1 };
-            Targets[1].FightDatas[0].type = FightTargetType.PLAYER;
-            Targets[1].FightDatas[0].itemScoreList = new List<int>() { 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100 };
-            Targets[1].FightDatas[1].cardId = 2000009;
-            Targets[1].FightDatas[1].cardScore = 100;
-            Targets[1].FightDatas[1].skillLvs = new List<int>() { 1, 1, 1 };
-            Targets[1].FightDatas[1].type = FightTargetType.PLAYER;
-            Targets[1].FightDatas[1].itemScoreList = new List<int>() { 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100 };
-            Targets[1].FightDatas[2].cardId = 2000009;
-            Targets[1].FightDatas[2].cardScore = 100;
-            Targets[1].FightDatas[2].skillLvs = new List<int>() { 1, 1, 1 };
-            Targets[1].FightDatas[2].type = FightTargetType.PLAYER;
-            Targets[1].FightDatas[2].itemScoreList = new List<int>() { 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100 };
-            Targets.Add(ArenaSproxy.GetArenaTargetData(GetArenaTargetProto1()));
-
-            Targets[2].FightDatas[0] = ArenaSproxy.GetFightRobotData(GetArenaTargetProto1().RobotDressupInfo, 0);
-            Targets[2].FightDatas[1] = ArenaSproxy.GetFightRobotData(GetArenaTargetProto1().RobotDressupInfo, 0);
-            Targets[2].FightDatas[2] = ArenaSproxy.GetFightRobotData(GetArenaTargetProto1().RobotDressupInfo, 0);
-
-            DressupList.Add(new FightData());
-            DressupList[0].tags = new string[] { Tag };
-            DressupList[0].type = FightTargetType.PLAYER;
-            DressupList.Add(new FightData());
-            DressupList[1].type = FightTargetType.PLAYER;
-            DressupList.Add(new FightData());
-            DressupList[2].type = FightTargetType.PLAYER;
-            // DressupList[0].skillLvs = new List<int>() { 1, 1, 1 };
-            // DressupList[1].skillLvs = new List<int>() { 1, 1, 1 };
-            // DressupList[2].skillLvs = new List<int>() { 1, 1, 1 };
 
-        }
-        private ArenaTargetProto GetArenaTargetProto()
+        public void AddCheckSeasonOpenTimer()
         {
-            ArenaTargetProto proto = new ArenaTargetProto();
-            proto.Grade = 1;
-            proto.RankInGrade = 10000;
-            proto.Type = FightTargetType.PLAYER;
-            proto.RoleInfo = new OtherRoleInfoProto();
-            proto.RoleInfo.RoleName = "玩家";
-            proto.RoleInfo.HeadItemId = 5000002;
-            proto.RoleInfo.RoleLvl = 10;
-            ArenaDressupProto dressupProto0 = new ArenaDressupProto();
-            dressupProto0.CardId = 2000009;
-            dressupProto0.EquipIds = new List<int>(SuitCfgArray.Instance.GetCfg(201005).partsArr);
-            proto.PlayerDressupList.Add(dressupProto0);
-            ArenaDressupProto dressupProto1 = new ArenaDressupProto();
-            dressupProto1.CardId = 2000010;
-            dressupProto1.EquipIds = new List<int>(SuitCfgArray.Instance.GetCfg(201006).partsArr);
-            proto.PlayerDressupList.Add(dressupProto1);
-            ArenaDressupProto dressupProto2 = new ArenaDressupProto();
-            dressupProto2.CardId = 2000011;
-            dressupProto2.EquipIds = new List<int>(SuitCfgArray.Instance.GetCfg(201007).partsArr);
-            proto.PlayerDressupList.Add(dressupProto2);
-            return proto;
+            Timers.inst.Add(1, 0, OnTimeUpdate);
         }
-        private ArenaTargetProto GetArenaTargetProto1()
+        private void OnTimeUpdate(object param)
         {
-            ArenaTargetProto proto = new ArenaTargetProto();
-            proto.Grade = 1;
-            proto.RankInGrade = 10000;
-            proto.Type = FightTargetType.ROBOT;
-            proto.RoleInfo = new OtherRoleInfoProto();
-            proto.RoleInfo.RoleName = "机器人";
-            ArenaRobotProto robotProto = new ArenaRobotProto();
-            robotProto.RobotId = 5;
-            robotProto.Random = 9000;
-            robotProto.CardIdList = new List<int>() { 2000009, 2000010, 20000011 };
-            robotProto.SuitList = new List<int>() { 201011, 201012, 201013 };
-            proto.RobotDressupInfo = robotProto;
-            return proto;
+            if (!IsSeasonOpen) return;
+
+            RemoveCheckSeasonOpenTimer();
+        }
 
+        private void RemoveCheckSeasonOpenTimer()
+        {
+            Timers.inst.Remove(OnTimeUpdate);
         }
     }
 }

+ 10 - 0
GameClient/Assets/Game/HotUpdate/Data/FunctionOpenDataManager.cs

@@ -74,6 +74,7 @@ namespace GFGGame
                 if (cfgs[i].storyLevelId != storyLevelCfgId || !CheckIsChapterFunOpen(cfgs[i], false)) continue;
                 // if (CheckIsLvFunOpen(cfgs[i], false)) continue;
                 listCfg.Add(cfgs[i].id);
+                if (cfgs[i].id == typeof(ArenaView).Name) ResetArenaInfo();
             }
             if (listCfg.Count > 0)
             {
@@ -100,6 +101,8 @@ namespace GFGGame
                 if (oldLv >= cfgs[i].lv || lv < cfgs[i].lv || !CheckIsLvFunOpen(cfgs[i], false)) continue;
                 // if (CheckIsChapterFunOpen(cfgs[i], false)) continue;
                 listCfg.Add(cfgs[i].id);
+                if (cfgs[i].id == typeof(ArenaView).Name) ResetArenaInfo();
+
             }
             if (listCfg.Count > 0)
             {
@@ -124,6 +127,7 @@ namespace GFGGame
                 if (CheckIsSpecialFunOpen(cfgs[i], false))
                 {
                     listCfg.Add(cfgs[i].id);
+                    if (cfgs[i].id == typeof(ArenaView).Name) ResetArenaInfo();
                 }
             }
             if (listCfg.Count > 0)
@@ -225,5 +229,11 @@ namespace GFGGame
             }
             return strTips;
         }
+
+        private void ResetArenaInfo()
+        {
+            ArenaSproxy.ReqArenaInfos().Coroutine();
+            ArenaSproxy.ReqArenaHistory().Coroutine();
+        }
     }
 }

+ 8 - 6
GameClient/Assets/Game/HotUpdate/ServerProxy/ArenaSproxy.cs

@@ -42,6 +42,7 @@ namespace GFGGame
             {
                 if (response.Error == ErrorCode.ERR_Success)
                 {
+                    ArenaDataManager.Instance.LastFightTime = response.LastFightTime;
                     ArenaDataManager.Instance.ThemeList = response.ThemeList;
                     ArenaDataManager.Instance.Tag = response.Tag;
                     ArenaDataManager.Instance.SeasonId = response.SeasonId;
@@ -165,6 +166,7 @@ namespace GFGGame
                 if (response.Error == ErrorCode.ERR_Success)
                 {
                     //记录老数据,用于结算展示
+                    ArenaDataManager.Instance.LastFightTime = response.LastFightTime;
                     ArenaDataManager.Instance.LastGrade = ArenaDataManager.Instance.Grade;
                     ArenaDataManager.Instance.LastRank = ArenaDataManager.Instance.Rank;
                     ArenaDataManager.Instance.LastTargetInfo.roleName = targetData.RoleInfo.roleName;
@@ -172,7 +174,6 @@ namespace GFGGame
                     ArenaDataManager.Instance.LastTargetInfo.headRes = targetData.RoleInfo.headRes;
                     ArenaDataManager.Instance.BonusList = ItemUtil.CreateItemDataList(response.rewards);
                     ArenaDataManager.Instance.LastTargets = new List<ArenaTargetData>(ArenaDataManager.Instance.Targets);
-
                     //更新新数据
                     ArenaDataManager.Instance.Targets.Clear();
                     for (int i = 0; i < response.targets.Count; i++)
@@ -347,7 +348,8 @@ namespace GFGGame
             {
                 if (arenaTarget.Type == FightTargetType.PLAYER)
                 {
-                    FightData roleData = GetFightRoleData(arenaTargetProto.PlayerDressupList[i], arenaTarget.RoleInfo, i);
+
+                    FightData roleData = GetFightRoleData(arenaTargetProto.PlayerDressupList.Count <= i ? null : arenaTargetProto.PlayerDressupList[i], arenaTarget.RoleInfo, i);
                     arenaTarget.FightDatas.Add(roleData);
                 }
                 else if (arenaTarget.Type == FightTargetType.ROBOT)
@@ -365,12 +367,12 @@ namespace GFGGame
             fightData.name = roleInfo.roleName;
             fightData.scoreType = ArenaDataManager.Instance.ThemeList[index];
             fightData.baseScore = RoleLevelCfgArray.Instance.GetCfg(roleInfo.roleLv).baseScore;
-            fightData.cardId = dressupProto.CardId;
             if (index == 0) fightData.tags = new string[1] { ArenaDataManager.Instance.Tag };
 
             fightData.type = FightTargetType.PLAYER;
             fightData.headId = roleInfo.headId;
-            fightData.itemList = dressupProto.EquipIds;
+            fightData.cardId = dressupProto == null ? 0 : dressupProto.CardId;
+            fightData.itemList = dressupProto == null ? fightData.itemList : dressupProto.EquipIds;//上赛季没有穿戴数据
 
 
             return fightData;
@@ -382,7 +384,7 @@ namespace GFGGame
             fightData.name = robotCfg.gradeName;
             fightData.scoreType = ArenaDataManager.Instance.ThemeList[index];
             fightData.baseScore = RoleLevelCfgArray.Instance.GetCfg(robotCfg.level).baseScore;
-            fightData.cardId = robotProto.CardIdList[index];
+            fightData.cardId = robotProto.CardIdList.Count <= index ? 0 : robotProto.CardIdList[index];//上赛季没有穿戴数据
             if (index == 0)//只有第一个主题才计算标签
             {
                 fightData.tags = new string[1] { ArenaDataManager.Instance.Tag };
@@ -395,7 +397,7 @@ namespace GFGGame
             double cardScore = (double)robotCfg.cardScore * (double)robotProto.Random / 10000;
             fightData.cardScore = (int)Math.Ceiling(cardScore);
             fightData.skillLvs.Add(robotCfg.skillLvs);
-            fightData.showSuitId = robotProto.SuitList[index];
+            fightData.showSuitId = robotProto.SuitList.Count <= index ? 0 : robotProto.SuitList[index];//上赛季没有穿戴数据
 
             return fightData;
         }

+ 6 - 1
GameClient/Assets/Game/HotUpdate/Views/Arena/ArenaDanRewardView.cs

@@ -41,7 +41,7 @@ namespace GFGGame
         protected override void OnShown()
         {
             base.OnShown();
-
+            _ui.m_c1.selectedIndex = 0;
             _ui.m_listWeekDanReward.numItems = ArenaRewardCfgArray.Instance.dataArray.Length;
             _ui.m_listUpDanReward.numItems = ArenaRankCfgArray.Instance.dataArray.Length;
 
@@ -64,6 +64,7 @@ namespace GFGGame
 
         private void UpdateMyReward()
         {
+
             UI_ComMyDanReward com = UI_ComMyDanReward.Proxy(_ui.m_comMyDanReward.target);
 
             ArenaViewManager.Instance.UpdateDanIcon(com.m_loaDanIcon, ArenaDataManager.Instance.Grade);
@@ -85,6 +86,10 @@ namespace GFGGame
             }
             com.m_listReward.data = rewards;
             com.m_listReward.numItems = rewards.Length;
+            if (ArenaDataManager.Instance.LastFightTime == 0)
+            {
+                com.m_listReward.visible = false;
+            }
             UI_ComMyDanReward.ProxyEnd();
 
         }

+ 16 - 1
GameClient/Assets/Game/HotUpdate/Views/Arena/ArenaRankView.cs

@@ -239,8 +239,21 @@ namespace GFGGame
             else
             {
                 item.m_txtName.text = arenaData.RoleInfo.roleName;
+
                 long fightScore = ArenaDataManager.Instance.GetAllFightScore(arenaData.FightDatas);
-                item.m_txtFightScore.text = string.Format("竞技场战力:{0}", fightScore);
+                if (arenaData.Type == FightTargetType.PLAYER)
+                {
+                    //上榜的玩家一定战斗过,可以直接计算
+                    item.m_txtFightScore.text = string.Format("竞技场战力:{0}", ArenaDataManager.Instance.GetAllFightScore(arenaData.FightScores));
+                    RoleInfoManager.Instance.UpdateHead(item.m_comHead, arenaData.RoleInfo.headId, 0);
+                }
+                else
+                {
+                    //上榜的机器人不一定战斗过,所以不一定有竞技场战力数据,所以机器人需要重新计算
+                    item.m_txtFightScore.text = string.Format("竞技场战力:{0}", ArenaDataManager.Instance.GetAllFightScore(arenaData.FightDatas));
+                    RoleInfoManager.Instance.UpdateNpcHead(item.m_comHead, arenaData.RoleInfo.headRes);
+                }
+                // item.m_txtFightScore.text = string.Format("竞技场战力:{0}", fightScore);
                 item.m_txtDanRank.text = string.Format("段位排行:{0}", arenaData.Grade);
                 ArenaViewManager.Instance.UpdateDanIcon(item.m_loaDanIcon, arenaData.Grade);
                 RoleInfoManager.Instance.UpdateLv(item.m_comLv, arenaData.RoleInfo.roleLv);
@@ -253,6 +266,7 @@ namespace GFGGame
                     RoleInfoManager.Instance.UpdateNpcHead(item.m_comHead, arenaData.RoleInfo.headRes);
                 }
             }
+            item.m_btnLook.visible = _rankType != ArenaRankType.LAST_SEASON;
             if (item.m_btnLook.data == null)
             {
                 item.m_btnLook.onClick.Add(OnBtnLookClick);
@@ -299,6 +313,7 @@ namespace GFGGame
                     RoleInfoManager.Instance.UpdateNpcHead(item.m_comHead, arenaData.RoleInfo.headRes);
                 }
             }
+            item.m_btnLook.visible = _rankType != ArenaRankType.LAST_SEASON;
             if (item.m_btnLook.data == null)
             {
                 item.m_btnLook.onClick.Add(OnBtnLookClick);

+ 5 - 1
GameClient/Assets/Game/HotUpdate/Views/MainUI/MainUIView.cs

@@ -481,7 +481,11 @@ namespace GFGGame
         private void OnClickBtnArena()
         {
             // LogServerHelper.SendNodeLog((int)PlayParticipationEnum.TIAN_YE_DIAO_CHA, 1);
-
+            if (!ArenaDataManager.Instance.IsArenaClearing)
+            {
+                PromptController.Instance.ShowFloatTextPrompt("赛季未开始");
+                return;
+            }
             ViewManager.Show<ArenaView>(null, new object[] { ViewName.MAINUI_VIEW, this.viewData }, true);
         }
         private void OnClickBtnTravel()