Browse Source

界面返回增加控制界面是否刷新参数

huangxiaoyue 1 year ago
parent
commit
f6fea587a2

+ 1 - 0
GameClient/Assets/Game/HotUpdate/Views/IUIView.cs

@@ -11,6 +11,7 @@ namespace GFGGame
         string viewName { get; set; }
         long closeTime { get; set; }
         bool isReturnView { get; set; }
+        bool backRefresh { get; set; }
         void Refresh();
         void Show();
         void Hide();

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/Store/BrocadeWeavTask.cs

@@ -178,7 +178,7 @@ namespace GFGGame
             {
                 param[i] = taskCfg.jumpParamArr[i];
             }
-            ViewManager.JumpToView(taskCfg.jumpId, param,true);
+            ViewManager.JumpToView(taskCfg.jumpId, param,true,true);
         }
 
         private async void OnBtnGetAllClick()

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/Task/CombTaskController.cs

@@ -204,7 +204,7 @@ namespace GFGGame
             {
                 param[i] = taskCfg.jumpParamArr[i];
             }
-            ViewManager.JumpToView(taskCfg.jumpId, param);
+            ViewManager.JumpToView(taskCfg.jumpId, param, false,false);
         }
 
         private async void OnBtnGetAllClick()

+ 7 - 7
GameClient/Assets/Game/HotUpdate/Views/Task/TaskView.cs

@@ -7,7 +7,6 @@ namespace GFGGame
     {
         private UI_TaskUI _ui;
         private CombTaskController _combTaskController;
-
         public override void Dispose()
         {
             if(_combTaskController != null)
@@ -50,7 +49,7 @@ namespace GFGGame
 
         private void OnBtnAchieveClick()
         {
-            ViewManager.Show<TaskAchieveView>();
+            ViewManager.Show<TaskAchieveView>(null, false, false);
         }
 
         protected override void AddEventListener()
@@ -71,15 +70,17 @@ namespace GFGGame
         {
             base.OnShown();
             int selectedIndex = 0;
+            
             if (viewData != null)
             {
                 var t = viewData as object[];
                 if(t != null && t.Length > 0)
-                {
                     selectedIndex = (int)t[0];
-                }
             }
-            _ui.m_c1.selectedIndex = selectedIndex;
+
+            if(backRefresh)
+                _ui.m_c1.selectedIndex = selectedIndex;
+
             _combTaskController.OnShown(_ui.m_c1.selectedIndex);
             UpdateRedPoint();
         }
@@ -87,7 +88,7 @@ namespace GFGGame
         protected override void OnHide()
         {
             base.OnHide();
-            _ui.m_c1.selectedIndex = 0;
+            //_ui.m_c1.selectedIndex = 0;
             UpdateRedPoint();
         }
 
@@ -106,6 +107,5 @@ namespace GFGGame
             RedDotController.Instance.SetComRedDot(_ui.m_btnWeekly, showRedPoint);
             RedDotController.Instance.SetComRedDot(_ui.m_btnAchieve, TaskDataManager.Instance.CheckTaskRewardCanGet(TaskFuncType.Achievement), "", -13, 6);
         }
-
     }
 }

+ 4 - 0
GameClient/Assets/Game/HotUpdate/Views/UIView.cs

@@ -34,6 +34,10 @@ namespace GFGGame
         /// </summary>
         public bool isReturnView { get; set; }
         /// <summary>
+        /// 设置返回界面是否刷新
+        /// </summary>
+        public bool backRefresh { get; set; }
+        /// <summary>
         /// FairyGUI包名
         /// </summary>
         public string packageName

+ 32 - 18
GameClient/Assets/Game/HotUpdate/Views/ViewManager.cs

@@ -11,6 +11,7 @@ namespace GFGGame
         public string name;
         public object viewData;
         public IUIView iUIView;
+        public bool backRefresh;
     }
     /// <summary>
     /// 视图管理类
@@ -118,7 +119,8 @@ namespace GFGGame
         /// <param name="viewData">要传递给视图的参数</param>
         /// <param name="goBackParams">从该视图返回的视图信息</param>
         /// <param name="hideOthers">是否关闭其他视图</param>
-        public static bool Show(string fullViewName, object viewData = null, bool hideOthers = false)
+        /// <param name="backRefresh">返回上一个界面的时候,上一个界面是否需要刷新界面</param>
+        public static bool Show(string fullViewName, object viewData = null, bool hideOthers = false, bool backRefresh = true,bool isHideToShow = false)
         {
             string name = GetName(fullViewName);
             if (!GameGlobal.skipCheckOpen && !FunctionOpenDataManager.Instance.CheckIsFunOpenById(name))
@@ -148,6 +150,10 @@ namespace GFGGame
                 view.viewData = viewData;
                 if (!view.isShowing)
                 {
+                    if (isHideToShow && _viewStack.Count > 0)
+                        view.backRefresh = _viewStack[_viewStack.Count - 1].backRefresh;
+                    else
+                        view.backRefresh = true;
                     view.Show();
                 }
                 else
@@ -165,6 +171,10 @@ namespace GFGGame
             //判断是否需要保存界面数据, 会帮助关闭上一个保存界面
             if (obj.isReturnView && (_viewStack.Count <= 0 || (_viewStack.Count > 0 && _viewStack[_viewStack.Count - 1].name != name)))
             {
+                //保存上一个界面是否需要返回刷新
+                if (!isHideToShow && _viewStack.Count > 1)
+                    _viewStack[_viewStack.Count - 1].backRefresh = backRefresh;
+               
                 ViewStructure viewStructure = new ViewStructure();
                 viewStructure.name = name;
                 viewStructure.viewData = viewData;
@@ -221,12 +231,12 @@ namespace GFGGame
             return false;
         }
 
-        public static bool Show<T>(object viewData = null, bool hideOthers = false) where T : class, new()
+        public static bool Show<T>(object viewData = null, bool hideOthers = false, bool backRefresh = true) where T : class, new()
         {
             // string[] names = typeof(T).FullName.Split('.');
             // string viewName = names[names.Length - 1];
             //string name = GetName(typeof(T).FullName);
-            return ViewManager.Show(typeof(T).FullName, viewData, hideOthers);
+            return ViewManager.Show(typeof(T).FullName, viewData, hideOthers, backRefresh);
         }
 
         public static void HideWin(string viewName)
@@ -238,6 +248,7 @@ namespace GFGGame
             {
                 bool hasShowingView = false;
                 bool needShowNextView = false;
+                bool backRefresh = true;
                 foreach (var info in _viewDic.Keys)
                 {
                     IUIView objIsShowing = _viewDic[info];
@@ -258,8 +269,10 @@ namespace GFGGame
                     if (!hasShowingView || (viewStructure.iUIView.isReturnView && viewStructure.name == viewName))
                     {
                         //关闭自己,在队列里去除
-                        if (viewStructure.iUIView.isReturnView && viewStructure.name == viewName)
+                        if (viewStructure.iUIView.isReturnView && viewStructure.name == viewName) {
+                            backRefresh = viewStructure.backRefresh;
                             _viewStack.RemoveAt(_viewStack.Count - 1);
+                        }
 
                         if (_viewStack.Count >= 1)
                             needShowNextView = true;
@@ -268,7 +281,8 @@ namespace GFGGame
 
                 if (needShowNextView) { 
                     viewStructure = _viewStack[_viewStack.Count - 1];
-                    ViewManager.Show($"GFGGame.{viewStructure.name}", viewStructure.viewData);
+                    ViewManager.Show($"GFGGame.{viewStructure.name}", viewStructure.viewData, false, backRefresh,  true);
+                    //重新打开小弹窗
                     foreach (var objName in _viewDic.Keys)
                     {
                         if (objName != viewStructure.name)
@@ -450,7 +464,7 @@ namespace GFGGame
         /// 任务界面跳转
         /// </summary>
         /// <param name="jumpId"></param>
-        public static void JumpToView(string jumpId, object[] param, bool hideOther = false, Action onSuccess = null)
+        public static void JumpToView(string jumpId, object[] param, bool hideOther = false, bool backRefresh = true, Action onSuccess = null)
         {
             switch (jumpId)
             {
@@ -458,13 +472,13 @@ namespace GFGGame
 
                     if (LeagueDataManager.Instance.Type == LeagueJoinType.Join)
                     {
-                        ViewManager.Show<LeagueView>(null, hideOther);
+                        ViewManager.Show<LeagueView>(null, hideOther, backRefresh);
                         ViewManager.Show($"GFGGame.{jumpId}");
                     }
                     else
                     {
                         if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(nameof(LeagueView))) return;
-                        ViewManager.Show<LeagueJoinView>(null, hideOther);
+                        ViewManager.Show<LeagueJoinView>(null, hideOther, backRefresh);
                     }
 
                     break;
@@ -472,36 +486,36 @@ namespace GFGGame
                     if (!FunctionOpenDataManager.Instance.CheckIsFunOpenById(nameof(LeagueView))) return;
                     if (LeagueDataManager.Instance.Type == LeagueJoinType.Join)
                     {
-                        ViewManager.Show<LeagueView>(null, hideOther);
+                        ViewManager.Show<LeagueView>(null, hideOther, backRefresh);
                     }
                     else
                     {
-                        ViewManager.Show<LeagueJoinView>(null, hideOther);
+                        ViewManager.Show<LeagueJoinView>(null, hideOther, backRefresh);
                     }
                     break;
                 case nameof(StoreView):
-                    ViewManager.Show<StoreView>(param, hideOther);
+                    ViewManager.Show<StoreView>(param, hideOther, backRefresh);
                     break;
                 case nameof(StoryChapterListView):
-                    ViewManager.Show($"GFGGame.{jumpId}", param, hideOther);
+                    ViewManager.Show($"GFGGame.{jumpId}", param, hideOther, backRefresh);
                     break;
                 case nameof(StoryChapterView):
-                    ViewManager.Show<StoryChapterView>(param[0], hideOther);
+                    ViewManager.Show<StoryChapterView>(param[0], hideOther, backRefresh);
                     break;
                 case nameof(FirstChargeBonusView):
-                    ViewManager.Show<FirstChargeBonusView>(param, false);
+                    ViewManager.Show<FirstChargeBonusView>(param, false, backRefresh);
                     break;
                 case nameof(ClothingSyntheticView):
-                    ViewManager.Show<ClothingSyntheticView>(param, hideOther);
+                    ViewManager.Show<ClothingSyntheticView>(param, hideOther, backRefresh);
                     break;
                 case nameof(LuckyBoxView):
                     if(param.Length > 0)
-                        ViewManager.Show<LuckyBoxView>(param[0], hideOther);
+                        ViewManager.Show<LuckyBoxView>(param[0], hideOther, backRefresh);
                     else
-                        ViewManager.Show<LuckyBoxView>(null, hideOther);
+                        ViewManager.Show<LuckyBoxView>(null, hideOther, backRefresh);
                     break;
                 default:
-                    ViewManager.Show($"GFGGame.{jumpId}", null, hideOther);
+                    ViewManager.Show($"GFGGame.{jumpId}", null, hideOther, backRefresh);
                     break;
             }
             onSuccess?.Invoke();