130 lines
3.1 KiB
Lua
130 lines
3.1 KiB
Lua
------------------------------------------------
|
|
--作者: gzg
|
|
--日期: 2019-03-25
|
|
--文件: UIFormManager.lua
|
|
--模块: UIFormManager
|
|
--描述: Lua端窗体管理器
|
|
------------------------------------------------
|
|
--引用
|
|
local UIBaseForm = require("UI.Base.UIBaseForm")
|
|
|
|
--定义模块
|
|
local UIFormManager = {
|
|
AllForms = {},
|
|
UpdateForms = {},
|
|
RenewForms = {}
|
|
}
|
|
|
|
--增加重新加载的界面
|
|
function UIFormManager:AddRenewForm(name)
|
|
self.RenewForms[name] = true
|
|
end
|
|
|
|
--是否需要重新加载
|
|
function UIFormManager:IsRenew(name)
|
|
return not(not self.RenewForms[name])
|
|
end
|
|
|
|
--创建ui对应的lua控制脚本
|
|
function UIFormManager:CreateLuaUIScript(name, gobj)
|
|
-- if AppConfig.IsDestroyOnClose then
|
|
-- self:DestroyForm(name)
|
|
-- end
|
|
self:CreateForm(name, gobj)
|
|
if self.RenewForms[name] then
|
|
self.RenewForms[name] = nil
|
|
end
|
|
end
|
|
|
|
--创建某个窗体
|
|
function UIFormManager:CreateForm(name, gobj)
|
|
if self.AllForms[name] then
|
|
-- error(UIUtils.CSFormat(DataConfig.DataMessageString.Get("UIFormManagerTips"), name))
|
|
Debug.LogError(string.format("创建UI重复 %s", name))
|
|
self:DestroyForm(name)
|
|
end
|
|
local _form = require(string.format("UI.Forms.%s.%s", name, name))
|
|
|
|
_form._Name_ = name
|
|
_form.GO = gobj
|
|
_form.Trans = gobj.transform
|
|
|
|
self.AllForms[name] = _form
|
|
--当需要Update的窗体,放置到UpdateForms中.
|
|
if _form.Update then
|
|
self.UpdateForms[name] = _form
|
|
end
|
|
UIBaseForm.BindCSForm(_form, gobj)
|
|
end
|
|
|
|
--卸载某个窗体
|
|
function UIFormManager:DestroyForm(name)
|
|
if self.AllForms[name] then
|
|
local _form = self.AllForms[name]
|
|
--从集合中删除
|
|
self.AllForms[name] = nil
|
|
if self.UpdateForms[name] then
|
|
self.UpdateForms[name] = nil
|
|
end
|
|
--解绑定CS窗体
|
|
UIBaseForm.UnBindCSForm(_form)
|
|
--卸载窗体Lua脚本
|
|
Utils.RemoveRequiredByName(string.format("UI.Forms.%s.%s", name, name))
|
|
end
|
|
end
|
|
|
|
--窗体更新
|
|
function UIFormManager:Update(deltaTime)
|
|
--判断更新容器是否为空,然后再循环对所有的窗体进行更新处理
|
|
if next(self.UpdateForms) ~= nil then
|
|
for _, v in pairs(self.UpdateForms) do
|
|
if v._ActiveSelf_ then
|
|
v:Update(deltaTime)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--获取CS端的UIFormManager
|
|
function UIFormManager:GetCSUIFormManager()
|
|
if not self.CSUIFormManager then
|
|
self.CSUIFormManager = CS.Thousandto.Code.Center.GameUICenter.UIFormManager;
|
|
end
|
|
return self.CSUIFormManager;
|
|
end
|
|
|
|
--获取UIRoot
|
|
function UIFormManager:GetUIRoot()
|
|
return self:GetCSUIFormManager().UIRoot;
|
|
end
|
|
|
|
--获取ShadowRoot
|
|
function UIFormManager:GetShadowRoot()
|
|
return self:GetCSUIFormManager().UIShadowRoot;
|
|
end
|
|
|
|
--获取宽
|
|
function UIFormManager:GetWidth()
|
|
local _screen = CS.UnityEngine.Screen;
|
|
local _height = self:GetHeight();
|
|
return _height * _screen.width / _screen.height;
|
|
end
|
|
|
|
--获取高
|
|
function UIFormManager:GetHeight()
|
|
return self:GetUIRoot().activeHeight;
|
|
end
|
|
|
|
--是否是刘海屏
|
|
function UIFormManager:IsNotchInScreen()
|
|
return self:GetCSUIFormManager().IsNotchInScreen;
|
|
end
|
|
|
|
--现在的屏幕方向
|
|
function UIFormManager:CurrentOrientation()
|
|
return self:GetCSUIFormManager().CurrentOrientation;
|
|
end
|
|
|
|
return UIFormManager
|
|
|