zhaoyang 2 жил өмнө
parent
commit
c5eb87ad83

+ 5 - 0
FGUIProject/assets/Arena/components/ComMyDanReward.xml

@@ -1,13 +1,18 @@
 <?xml version="1.0" encoding="utf-8"?>
 <component size="970,173" overflow="hidden">
+  <controller name="c1" pages="0,,1," selected="0"/>
   <displayList>
     <image id="n4_jcej" name="n4" src="jcej3f" fileName="images/dwjl_zjzj.png" xy="0,0"/>
     <list id="n0_psph" name="listReward" xy="260,-24" size="769,222" layout="row" colGap="-20" defaultItem="ui://eg2y0ldpj48o98" align="center" vAlign="middle" autoClearItems="true">
+      <gearDisplay controller="c1" pages="1"/>
       <item/>
       <item/>
       <item/>
     </list>
     <loader id="n2_psph" name="loaDanIcon" xy="159,87" pivot="0.5,0.5" anchor="true" size="149,153" url="ui://4lc5fhlbpsphz" fill="scale"/>
     <loader id="n3_psph" name="loaSelf" xy="275,0" size="48,98" url="ui://4lc5fhlbjcej3o" autoSize="true"/>
+    <text id="n5_u10a" name="n5" xy="524,63" size="220,49" font="ui://eg2y0ldpwonotjc" fontSize="36" color="#c09c6d" text="尚未参与挑战">
+      <gearDisplay controller="c1" pages="0"/>
+    </text>
   </displayList>
 </component>

+ 7 - 3
GameClient/Assets/Game/HotUpdate/Controller/GameController.cs

@@ -244,10 +244,14 @@ namespace GFGGame
             TravelSProxy.ReqTravelInfo().Coroutine();
             TravelSProxy.ReqTravelGuideInfo().Coroutine();
             PoemGallerySProxy.ReqGalleryTheme().Coroutine();
-            if (FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(ArenaView).Name))
+
+            if (ArenaDataManager.Instance.IsSeasonOpen)
+            {
+                ArenaDataManager.Instance.ReqArenaInfo();
+            }
+            else
             {
-                ArenaSproxy.ReqArenaInfos().Coroutine();
-                ArenaSproxy.ReqArenaHistory().Coroutine();
+                ArenaDataManager.Instance.AddCheckSeasonOpenTimer();
             }
 
             int storageAutoPlay = StorageDataManager.Instance.GetStorageValue(ConstStorageId.STORAGE_AUTO_PLAY);

+ 14 - 3
GameClient/Assets/Game/HotUpdate/Data/ArenaDataManager.cs

@@ -8,7 +8,7 @@ namespace GFGGame
 {
     public class ArenaDataManager : SingletonBase<ArenaDataManager>
     {
-        public long LastFightTime = 0;
+        public long LastFightTime = 0;//上次战斗时间,时间为0,说明未战斗过,则没有段位奖励
         public List<int> ThemeList = new List<int>() { 1, 2, 3 };//本周主题列表
         public string Tag = "异域";//本周标签
         public int SeasonId = 1;// 赛季id
@@ -419,15 +419,26 @@ namespace GFGGame
 
         public void AddCheckSeasonOpenTimer()
         {
+            RemoveCheckSeasonOpenTimer();
             Timers.inst.Add(1, 0, OnTimeUpdate);
         }
         private void OnTimeUpdate(object param)
         {
             if (!IsSeasonOpen) return;
-
+            if (ThemeList.Count == 0)
+            {
+                ReqArenaInfo();
+            }
             RemoveCheckSeasonOpenTimer();
         }
-
+        public void ReqArenaInfo()
+        {
+            if (FunctionOpenDataManager.Instance.CheckIsFunOpenById(typeof(ArenaView).Name))
+            {
+                ArenaSproxy.ReqArenaInfos().Coroutine();
+                ArenaSproxy.ReqArenaHistory().Coroutine();
+            }
+        }
         private void RemoveCheckSeasonOpenTimer()
         {
             Timers.inst.Remove(OnTimeUpdate);

+ 6 - 8
GameClient/Assets/Game/HotUpdate/Data/FunctionOpenDataManager.cs

@@ -74,7 +74,8 @@ 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 (cfgs[i].id == typeof(ArenaView).Name) ArenaDataManager.Instance.ReqArenaInfo();
             }
             if (listCfg.Count > 0)
             {
@@ -101,7 +102,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 (cfgs[i].id == typeof(ArenaView).Name) ArenaDataManager.Instance.ReqArenaInfo();
 
             }
             if (listCfg.Count > 0)
@@ -127,7 +129,8 @@ namespace GFGGame
                 if (CheckIsSpecialFunOpen(cfgs[i], false))
                 {
                     listCfg.Add(cfgs[i].id);
-                    if (cfgs[i].id == typeof(ArenaView).Name) ResetArenaInfo();
+
+                    if (cfgs[i].id == typeof(ArenaView).Name) ArenaDataManager.Instance.ReqArenaInfo();
                 }
             }
             if (listCfg.Count > 0)
@@ -230,10 +233,5 @@ namespace GFGGame
             return strTips;
         }
 
-        private void ResetArenaInfo()
-        {
-            ArenaSproxy.ReqArenaInfos().Coroutine();
-            ArenaSproxy.ReqArenaHistory().Coroutine();
-        }
     }
 }

+ 3 - 0
GameClient/Assets/Game/HotUpdate/FairyGUI/GenCode/Arena/UI_ComMyDanReward.cs

@@ -7,6 +7,7 @@ namespace UI.Arena
     public partial class UI_ComMyDanReward
     {
         public GComponent target;
+        public Controller m_c1;
         public GList m_listReward;
         public GLoader m_loaDanIcon;
         public GLoader m_loaSelf;
@@ -57,12 +58,14 @@ namespace UI.Arena
 
         private void Init(GComponent comp)
         {
+            m_c1 = comp.GetController("c1");
             m_listReward = (GList)comp.GetChild("listReward");
             m_loaDanIcon = (GLoader)comp.GetChild("loaDanIcon");
             m_loaSelf = (GLoader)comp.GetChild("loaSelf");
         }
         public void Dispose(bool disposeTarget = false)
         {
+            m_c1 = null;
             m_listReward = null;
             m_loaDanIcon = null;
             m_loaSelf = null;

+ 28 - 0
GameClient/Assets/Game/HotUpdate/ServerProxy/ArenaSproxy.cs

@@ -31,6 +31,34 @@ namespace GFGGame
             await ETTask.CompletedTask;
         }
     }
+    public class NoticeArenaWeekClear : AMHandler<SC_ArenaWeekClear>
+    {
+        protected override async ETTask Run(Session session, SC_ArenaWeekClear message)
+        {
+            ArenaDataManager.Instance.Tag = message.Tag;
+            ArenaDataManager.Instance.ThemeList = message.Themes;
+            if (ViewManager.isViewOpen(typeof(ArenaView).FullName))
+            {
+                ViewManager.Show<ArenaView>();
+                PromptController.Instance.ShowFloatTextPrompt("周结算已更新");
+            }
+            await ETTask.CompletedTask;
+        }
+    }
+    public class NoticeArenaSeasonEnd : AMHandler<SC_ArenaSeasonEnd>
+    {
+        protected override async ETTask Run(Session session, SC_ArenaSeasonEnd message)
+        {
+            if (ViewManager.isViewOpen(typeof(ArenaView).FullName))
+            {
+                ViewManager.GoBackFrom(typeof(ArenaView).FullName);
+                PromptController.Instance.ShowFloatTextPrompt("赛季已结束");
+            }
+            ArenaDataManager.Instance.Clear();
+            ArenaDataManager.Instance.AddCheckSeasonOpenTimer();
+            await ETTask.CompletedTask;
+        }
+    }
     public static class ArenaSproxy
     {
         //获取竞技场信息

+ 2 - 4
GameClient/Assets/Game/HotUpdate/Views/Arena/ArenaDanRewardView.cs

@@ -86,10 +86,8 @@ namespace GFGGame
             }
             com.m_listReward.data = rewards;
             com.m_listReward.numItems = rewards.Length;
-            if (ArenaDataManager.Instance.LastFightTime == 0)
-            {
-                com.m_listReward.visible = false;
-            }
+            com.m_c1.selectedIndex = ArenaDataManager.Instance.LastFightTime == 0 ? 0 : 1;
+
             UI_ComMyDanReward.ProxyEnd();
 
         }

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

@@ -481,7 +481,7 @@ namespace GFGGame
         private void OnClickBtnArena()
         {
             // LogServerHelper.SendNodeLog((int)PlayParticipationEnum.TIAN_YE_DIAO_CHA, 1);
-            if (!ArenaDataManager.Instance.IsArenaClearing)
+            if (!ArenaDataManager.Instance.IsSeasonOpen)
             {
                 PromptController.Instance.ShowFloatTextPrompt("赛季未开始");
                 return;

BIN
GameClient/Assets/ResIn/UI/Arena/Arena_fui.bytes