Example #1
0
        public Action <InfoBoxBtnType> m_btnClkDisp; // 按钮点击回调

        public void resetDefault()
        {
            m_infoBoxModeType = InfoBoxModeType.eMode_2;
            m_formID          = UIFormID.eUIInfo;
            m_midDesc         = "";
            m_btnClkDisp      = null;
        }
Example #2
0
 // 显示一个 UI
 public void showForm(UIFormID ID)
 {
     if (hasForm(ID))
     {
         showFormInternal(ID);
     }
 }
Example #3
0
        // 显示一个 UI
        public void showForm(UIFormID ID)
		{
            if (hasForm(ID))
            {
                showFormInternal(ID);
            }
		}
Example #4
0
        public Action<InfoBoxBtnType> m_btnClkDisp;     // 按钮点击回调

        public void resetDefault()
        {
            m_infoBoxModeType = InfoBoxModeType.eMode_2;
            m_formID = UIFormID.eUIInfo;
            m_midDesc = "";
            m_btnClkDisp = null;
        }
Example #5
0
        // 代码资源加载完成处理
        public void onCodeloadedByRes(UIPrefabRes res)
        {
            UIFormID ID = m_UIAttrs.GetFormIDByPath(res.GetPath(), ResPathType.ePathCodePath);  // 获取 FormID

            m_ID2CodeLoadingItemDic.Remove(ID);
            addFormNoReady(m_id2FormDic[ID]);
            onCodeLoadedByForm(m_id2FormDic[ID]);
        }
Example #6
0
        public string getPath(UIFormID id)
        {
            if (m_id2AttrDic.ContainsKey(id))
            {
                return(m_id2AttrDic[id].m_widgetPath);
                //ret = Ctx.m_instance.m_cfg.m_pathLst[(int)ResPathType.ePathComUI] + ret;
                //return ret;
            }

            return(null);
        }
Example #7
0
 //public T getForm<T>(UIFormID ID) where T : Form
 public Form getForm(UIFormID ID)
 {
     if (m_id2FormDic.ContainsKey(ID))
     {
         return(m_id2FormDic[ID]);
     }
     else
     {
         return(null);
     }
 }
Example #8
0
 //public void loadAndShow<T>(UIFormID ID) where T : Form, new()
 public void loadAndShow(UIFormID ID)
 {
     if (hasForm(ID))
     {
         showFormInternal(ID);
     }
     else
     {
         loadForm(ID);
     }
 }
Example #9
0
 //public void loadAndShow<T>(UIFormID ID) where T : Form, new()
 public void loadAndShow(UIFormID ID)
 {
     if (hasForm(ID))
     {
         showFormInternal(ID);
     }
     else
     {
         loadForm(ID);
     }
 }
Example #10
0
        // 加载窗口控件资源,窗口资源都是从文件加载
        public void loadWidgetRes(UIFormID ID)
        {
            UIAttrItem attrItem = m_UIAttrs.m_id2AttrDic[ID];

            if (!m_ID2WidgetLoadingItemDic.ContainsKey(ID))                       // 如果什么都没有创建,第一次加载
            {
                m_ID2WidgetLoadingItemDic[ID]      = new UILoadingItem();
                m_ID2WidgetLoadingItemDic[ID].m_ID = ID;

                loadFromFile(attrItem.m_widgetPath, onWidgetLoadEventHandle);
            }
        }
Example #11
0
        // 隐藏一个 UI
        private void hideFormInternal(UIFormID ID)
        {
            Form win = getForm(ID);

            if (win != null)
            {
                if (win.IsVisible())
                {
                    UtilApi.SetActive(win.m_GUIWin.m_uiRoot, false);
                    win.onHide();
                }
            }
        }
Example #12
0
        // 这个事加载界面需要的代码
        //public void loadForm<T>(UIFormID ID) where T : Form, new()
        public void loadForm(UIFormID ID)
        {
            UIAttrItem attrItem = m_UIAttrs.m_id2AttrDic[ID];
            Form       window   = getForm(ID);

            if (window != null)        // 本地已经创建了这个窗口,
            {
                if (window.IsResReady) // 如果资源也已经加载进来了
                {
                    if (null != Ctx.m_instance.m_cbUIEvent)
                    {
                        Ctx.m_instance.m_cbUIEvent.onCodeFormLoaded(window);  // 资源加载完成
                    }
                }
            }
            else if (!m_ID2CodeLoadingItemDic.ContainsKey(ID))                       // 如果什么都没有创建,第一次加载
            {
                // 创建窗口
                Form form = null;
                if (attrItem.m_bNeedLua)
                {
                    form = new Form();
                }
                else
                {
                    form = Ctx.m_instance.m_scriptDynLoad.getScriptObject(attrItem.m_scriptTypeName) as Form;
                }

                if (form != null)                   // 如果代码已经在本地
                {
                    (form as Form).id = ID;
                    if (attrItem.m_bNeedLua)
                    {
                        form.luaCSBridgeForm = new LuaCSBridgeForm(attrItem.m_luaScriptTableName, form);
                        form.luaCSBridgeForm.DoFile(attrItem.m_luaScriptPath);
                    }

                    addFormNoReady(form);           // 仅仅是创建数据,资源还没有加载完成
                    onCodeLoadedByForm(form);
                }

                // 这个地方应该抛出异常
                if (null == form)    // 本地没有代码
                {
                    m_ID2CodeLoadingItemDic[ID]      = new UILoadingItem();
                    m_ID2CodeLoadingItemDic[ID].m_ID = ID;

                    loadFromFile(attrItem.m_codePath, onCodeLoadEventHandle);
                }
            }
        }
Example #13
0
        // 代码资源加载处理
        public void onCodeLoadEventHandle(IDispatchObject dispObj)
        {
            UIPrefabRes res = dispObj as UIPrefabRes;

            if (res.refCountResLoadResultNotify.resLoadState.hasSuccessLoaded())
            {
                onCodeloadedByRes(res);
            }
            else if (res.refCountResLoadResultNotify.resLoadState.hasFailed())
            {
                UIFormID ID = m_UIAttrs.GetFormIDByPath(res.GetPath(), ResPathType.ePathCodePath);  // 获取 FormID
                m_ID2CodeLoadingItemDic.Remove(ID);
            }
        }
Example #14
0
        // 窗口控件资源加载处理
        public void onWidgetLoadEventHandle(IDispatchObject dispObj)
        {
            UIPrefabRes res = dispObj as UIPrefabRes;

            if (res.refCountResLoadResultNotify.resLoadState.hasSuccessLoaded())
            {
                onWidgetloadedByRes(res);
            }
            else if (res.refCountResLoadResultNotify.resLoadState.hasFailed())
            {
                UIFormID ID = m_UIAttrs.GetFormIDByPath(res.GetPath(), ResPathType.ePathComUI);  // 获取 FormID
                m_ID2WidgetLoadingItemDic.Remove(ID);
                Ctx.m_instance.m_logSys.log("UIFormID =  , Failed Prefab");
            }
        }
Example #15
0
        // 退出一个 UI
        public void exitForm(UIFormID ID, bool bForce = false)
        {
            Form win = getForm(ID);

            if (win != null)
            {
                if (win.exitMode || bForce)
                {
                    exitFormInternal(ID);
                }
                else
                {
                    hideFormInternal(ID);
                }
            }
        }
Example #16
0
 public void showFormInternal(UIFormID ID)
 {
     Form win = getForm(ID);
     if (win != null)
     {
         if (!win.bReady)
         {
             win.onReady();
         }
         if (!win.IsVisible())
         {
             UtilApi.SetActive(win.m_GUIWin.m_uiRoot, true);
             win.onShow();
         }
     }
 }
Example #17
0
        public void showFormInternal(UIFormID ID)
        {
            Form win = getForm(ID);

            if (win != null)
            {
                if (!win.bReady)
                {
                    win.onReady();
                }
                if (!win.IsVisible())
                {
                    UtilApi.SetActive(win.m_GUIWin.m_uiRoot, true);
                    win.onShow();
                }
            }
        }
Example #18
0
        // 窗口控件资源加载完成处理
        public void onWidgetloadedByRes(UIPrefabRes res)
        {
            string   path = res.GetPath();
            UIFormID ID   = m_UIAttrs.GetFormIDByPath(path, ResPathType.ePathComUI); // 获取 FormID

            m_ID2WidgetLoadingItemDic.Remove(ID);

            UIAttrItem attrItem = m_UIAttrs.m_id2AttrDic[ID];

            m_id2FormDic[ID].bLoadWidgetRes    = true;
            m_id2FormDic[ID].m_GUIWin.m_uiRoot = res.InstantiateObject(attrItem.m_widgetPath);
            if (attrItem.m_bNeedLua)
            {
                m_id2FormDic[ID].luaCSBridgeForm.gameObject = m_id2FormDic[ID].m_GUIWin.m_uiRoot;
                m_id2FormDic[ID].luaCSBridgeForm.init();
            }

            // 设置位置
            UtilApi.SetParent(m_id2FormDic[ID].m_GUIWin.m_uiRoot.transform, m_canvasList[(int)attrItem.m_canvasID].layerList[(int)attrItem.m_LayerID].layerTrans, false);

            // 先设置再设置缩放,否则无效
            m_id2FormDic[ID].m_GUIWin.m_uiRoot.transform.SetAsLastSibling();   // 放在最后
            UtilApi.SetActive(m_id2FormDic[ID].m_GUIWin.m_uiRoot, false);      // 出发 onShow 事件
            //if (m_dicForm[ID].hideOnCreate)
            //{
            //    UtilApi.SetActive(m_dicForm[ID].m_GUIWin.m_uiRoot, false);
            //}
            if (!m_id2FormDic[ID].hideOnCreate)
            {
                showFormInternal(ID);   // 如果 onShow 中调用 exit 函数,就会清掉 m_dicForm 中的内容。如果设置了 exitMode = false,就不会清掉 m_dicForm ,就不会有问题
            }

            if (null != Ctx.m_instance.m_cbUIEvent)
            {
                if (m_id2FormDic.ContainsKey(ID))                                // 如果 onShow 中调用 exit 函数,并且没有设置 exitMode = false ,就会清除 m_dicForm, 这个时候再调用这个函数,就会有问题,是不是添加延迟卸载
                {
                    Ctx.m_instance.m_cbUIEvent.onWidgetLoaded(m_id2FormDic[ID]); // 资源加载完成
                }
            }

            // 卸载资源
            Ctx.m_instance.m_uiPrefabMgr.unload(path, onWidgetLoadEventHandle);
        }
Example #19
0
        protected void exitFormInternal(UIFormID ID)
        {
            Form win = getForm(ID);

            if (win != null)
            {
                // 清理列表
                UILayer layer = win.uiLayer;
                layer.winDic.Remove(ID);
                // 释放界面资源
                win.onExit();
                UtilApi.Destroy(win.m_GUIWin.m_uiRoot);
                win.m_GUIWin.m_uiRoot = null;
                // 释放加载的资源
                //string path = m_UIAttrs.getPath(ID);
                //if (path != null)
                //{
                //    Ctx.m_instance.m_resLoadMgr.unload(path);
                //}
                UtilApi.UnloadUnusedAssets();       // 异步卸载共用资源
                m_id2FormDic.Remove(ID);
                win = null;
            }
        }
Example #20
0
        public string getPath(UIFormID id)
        {
            if (m_id2AttrDic.ContainsKey(id))
            {
                return m_id2AttrDic[id].m_widgetPath;
                //ret = Ctx.m_instance.m_cfg.m_pathLst[(int)ResPathType.ePathComUI] + ret;
                //return ret;
            }

            return null;
        }
Example #21
0
        protected void exitFormInternal(UIFormID ID)
        {
            Form win = getForm(ID);

            if (win != null)
            {
                // 清理列表
                UILayer layer = win.uiLayer;
                layer.winDic.Remove(ID);
                // 释放界面资源
                win.onExit();
                UtilApi.Destroy(win.m_GUIWin.m_uiRoot);
                win.m_GUIWin.m_uiRoot = null;
                // 释放加载的资源
                //string path = m_UIAttrs.getPath(ID);
                //if (path != null)
                //{
                //    Ctx.m_instance.m_resLoadMgr.unload(path);
                //}
                UtilApi.UnloadUnusedAssets();       // 异步卸载共用资源
                m_id2FormDic.Remove(ID);
                win = null;
            }
        }
Example #22
0
 //public T getForm<T>(UIFormID ID) where T : Form
 public Form getForm(UIFormID ID)
 {
     if (m_id2FormDic.ContainsKey(ID))
     {
         return m_id2FormDic[ID];
     }
     else
     {
         return null;
     }
 }
Example #23
0
 public bool hasForm(UIFormID ID)
 {
     return (m_id2FormDic.ContainsKey(ID));
 }
Example #24
0
        // 这个事加载界面需要的代码
        //public void loadForm<T>(UIFormID ID) where T : Form, new()
        public void loadForm(UIFormID ID)
        {
            UIAttrItem attrItem = m_UIAttrs.m_id2AttrDic[ID];
            Form window = getForm(ID);

            if (window != null)     // 本地已经创建了这个窗口,
            {
                if (window.IsResReady)      // 如果资源也已经加载进来了
                {
                    if(null != Ctx.m_instance.m_cbUIEvent)
                    {
                        Ctx.m_instance.m_cbUIEvent.onCodeFormLoaded(window);  // 资源加载完成
                    }
                }
            }
            else if (!m_ID2CodeLoadingItemDic.ContainsKey(ID))                       // 如果什么都没有创建,第一次加载
            {
                // 创建窗口
                Form form = null;
                if (attrItem.m_bNeedLua)
                {
                    form = new Form();
                }
                else
                {
                    form = Ctx.m_instance.m_scriptDynLoad.getScriptObject(attrItem.m_scriptTypeName) as Form;
                }
                
                if (form != null)                   // 如果代码已经在本地
                {
                    (form as Form).id = ID;
                    if (attrItem.m_bNeedLua)
                    {
                        form.luaCSBridgeForm = new LuaCSBridgeForm(attrItem.m_luaScriptTableName, form);
                        form.luaCSBridgeForm.DoFile(attrItem.m_luaScriptPath);
                    }

                    addFormNoReady(form);           // 仅仅是创建数据,资源还没有加载完成
                    onCodeLoadedByForm(form);
                }

                // 这个地方应该抛出异常
                if(null == form)    // 本地没有代码
                {
                    m_ID2CodeLoadingItemDic[ID] = new UILoadingItem();
                    m_ID2CodeLoadingItemDic[ID].m_ID = ID;

                    loadFromFile(attrItem.m_codePath, onCodeLoadEventHandle);
                }
            }
        }
Example #25
0
        // 加载窗口控件资源,窗口资源都是从文件加载
        public void loadWidgetRes(UIFormID ID)
        {
            UIAttrItem attrItem = m_UIAttrs.m_id2AttrDic[ID];
            if (!m_ID2WidgetLoadingItemDic.ContainsKey(ID))                       // 如果什么都没有创建,第一次加载
            {
                m_ID2WidgetLoadingItemDic[ID] = new UILoadingItem();
                m_ID2WidgetLoadingItemDic[ID].m_ID = ID;

                loadFromFile(attrItem.m_widgetPath, onWidgetLoadEventHandle);
            }
        }
Example #26
0
        // 隐藏一个 UI
        private void hideFormInternal(UIFormID ID)
		{
			Form win = getForm(ID);
			if (win != null)
			{
				if (win.IsVisible())
				{
                    UtilApi.SetActive(win.m_GUIWin.m_uiRoot, false);
					win.onHide();
				}
			}
		}
 public static int?OpenUIForm(this UIComponent uiComponent, UIFormID uiFormId, object userData = null)
 {
     return(uiComponent.OpenHotUIForm((int)uiFormId, uiFormId.ToString(), userData));
 }
Example #28
0
 public bool hasForm(UIFormID ID)
 {
     return(m_id2FormDic.ContainsKey(ID));
 }
 //获取界面
 public static UGUIForm GetUIForm(this UIComponent uiComponent, UIFormID uiFormId, string uiGroupName = null)
 {
     return(uiComponent.GetUIForm((int)uiFormId, uiGroupName));
 }
Example #30
0
        // 退出一个 UI
        public void exitForm(UIFormID ID, bool bForce = false)
		{
			Form win = getForm(ID);

            if (win != null)
			{
                if (win.exitMode || bForce)
                {
                    exitFormInternal(ID);
                }
                else
                {
                    hideFormInternal(ID);
                }
			}
		}