Răsfoiți Sursa

ViewManager

guodong 2 ani în urmă
părinte
comite
c4299650be

+ 1 - 1
GameClient/Assets/Game/HotUpdate/Views/ClothingSynthetic/ClothingSyntheticView.cs

@@ -392,7 +392,7 @@ namespace GFGGame
         {
             if (ViewManager.isViewOpen(typeof(GuideView).Name))
             {
-                ViewManager.GetUIView(typeof(GuideView).Name).viewCom.visible = !ViewManager.isViewOpen(typeof(GetSuitItemVIew).Name);
+                (ViewManager.GetUIView(typeof(GuideView).Name) as GuideView).viewCom.visible = !ViewManager.isViewOpen(typeof(GetSuitItemVIew).Name);
             }
             if (!ViewManager.CheckIsTopView(this.viewCom)) return;
 

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

@@ -8,8 +8,11 @@ namespace GFGGame
 
         bool isShowing { get; }
         object viewData { get; set; }
+        string viewName { get; set; }
+        long closeTime { get; set; }
         void Refresh();
         void Show();
         void Hide();
+        void Dispose();
     }
 }

+ 13 - 13
GameClient/Assets/Game/HotUpdate/Views/ViewManager.cs

@@ -13,7 +13,7 @@ namespace GFGGame
     /// </summary>
     public class ViewManager
     {
-        private static Dictionary<string, UIView> _viewDic;
+        private static Dictionary<string, IUIView> _viewDic;
         private static GComponent _bottomLayer;
         private static GComponent _topLayer;
         private static GComponent _guideLayer;
@@ -52,7 +52,7 @@ namespace GFGGame
             //默认关闭点击窗口移至顶层的功能,不可打开,如哪个界面需要在界面中单独设置
             UIConfig.bringWindowToFrontOnClick = false;
 
-            _viewDic = new Dictionary<string, UIView>();
+            _viewDic = new Dictionary<string, IUIView>();
             //��ʼ����ͼ������
             _bottomLayer = CreateLayer("BottomLayer");
             _topLayer = CreateLayer("TopLayer");
@@ -123,7 +123,7 @@ namespace GFGGame
             {
                 HideAllView(name);
             }
-            UIView obj = null;
+            IUIView obj = null;
 
             if (_viewDic.ContainsKey(name))
             {
@@ -131,7 +131,7 @@ namespace GFGGame
             }
             else
             {
-                obj = CreateViewInstance(fullViewName) as UIView;
+                obj = CreateViewInstance(fullViewName) as IUIView;
                 obj.viewName = name;
                 _viewDic.Add(name, obj);
             }
@@ -172,7 +172,7 @@ namespace GFGGame
         {
             string name = GetName(fullViewName);
 
-            UIView obj = null;
+            IUIView obj = null;
             if (_viewDic.ContainsKey(name))
             {
                 obj = _viewDic[name];
@@ -198,14 +198,14 @@ namespace GFGGame
             {
                 HideAllView(name);
             }
-            UIView obj = null;
+            IUIView obj = null;
             if (_viewDic.ContainsKey(name))
             {
                 obj = _viewDic[name];
             }
             else
             {
-                obj = new T() as UIView;
+                obj = new T() as IUIView;
                 obj.viewName = name;
                 _viewDic.Add(name, obj);
             }
@@ -248,7 +248,7 @@ namespace GFGGame
             {
                 return;
             }
-            UIView obj = _viewDic[name];
+            IUIView obj = _viewDic[name];
             if (obj != null && obj.isShowing)
             {
                 IUIView view = (IUIView)obj;
@@ -309,13 +309,13 @@ namespace GFGGame
             }
             return value;
         }
-        public static UIView GetUIView(string viewName)
+        public static IUIView GetUIView(string viewName)
         {
-            UIView obj = _viewDic[viewName];
+            IUIView obj = _viewDic[viewName];
             if (obj != null && obj.isShowing)
             {
 
-                return obj;
+                return obj as IUIView;
             }
             return null;
         }
@@ -335,7 +335,7 @@ namespace GFGGame
             for (int i = _viewDic.Keys.Count - 1; i >= 0; i--)//不用foreach是因为:循环过程中可能会触发dispose,导致_viewDic.Keys变化,最终报错
             {
                 int index = i > _viewDic.Keys.Count - 1 ? _viewDic.Keys.Count - 1 : i;//直接去最后一个,不用i是因为关闭一个界面可能会连带关闭其他界面,最终i比_viewDic.Keys.Count大而报错
-                KeyValuePair<string, UIView> kv = _viewDic.ElementAt(index);
+                KeyValuePair<string, IUIView> kv = _viewDic.ElementAt(index);
                 if (kv.Key != excludeViewName)
                 {
                     if (kv.Key == typeof(FunctionOpenView).Name) continue;//功能开启界面不能强制关闭
@@ -357,7 +357,7 @@ namespace GFGGame
             for (int i = _viewDic.Keys.Count - 1; i >= 0; i--)//不用foreach是因为:循环过程中可能会触发dispose,导致_viewDic.Keys变化,最终报错
             {
                 int index = i > _viewDic.Keys.Count - 1 ? _viewDic.Keys.Count - 1 : i;//直接去最后一个,不用i是因为关闭一个界面可能会连带关闭其他界面,最终i比_viewDic.Keys.Count大而报错
-                KeyValuePair<string, UIView> kv = _viewDic.ElementAt(index);
+                KeyValuePair<string, IUIView> kv = _viewDic.ElementAt(index);
                 if (kv.Value.isShowing == true) continue;
                 // if (kv.Value.packageName == ResPathUtil.GetUIPackagePath("CommonGame") || kv.Value.packageName == ResPathUtil.GetUIPackagePath("Common") || kv.Value.packageName == ResPathUtil.GetUIPackagePath("Main")) return;//这几个包不释放
                 long currentTime = TimeHelper.ClientNowSeconds();