forked from endernon/PGRData
245 lines
8.9 KiB
Lua
245 lines
8.9 KiB
Lua
|
-- 兵法蓝图成员列表主页面
|
|||
|
local XUiRpgTowerRoleList = XLuaUiManager.Register(XLuaUi, "UiRpgTowerRoleList")
|
|||
|
local XUiRpgTowerRoleListCharaInfo = require("XUi/XUiRpgTower/CharacterPage/MainPage/XUiRpgTowerRoleListCharaInfo")
|
|||
|
local XUiPanelRoleModel = require("XUi/XUiCharacter/XUiPanelRoleModel")
|
|||
|
|
|||
|
local XUiRpgTowerRoleListMainPage = require("XUi/XUiRpgTower/CharacterPage/MainPage/XUiRpgTowerRoleListMainPage")
|
|||
|
local XUiRpgTowerRoleListAdaptPage = require("XUi/XUiRpgTower/CharacterPage/AdaptPage/XUiRpgTowerRoleListAdaptPage")
|
|||
|
local XUiRpgTowerRoleListChangeMemberPage = require("XUi/XUiRpgTower/CharacterPage/ChangeMemberPage/XUiRpgTowerRoleListChangeMemberPage")
|
|||
|
local XUiRpgTowerRoleListTypeSelectPage = require("XUi/XUiRpgTower/CharacterPage/TalentSelectPage/XUiRpgTowerRoleListTypeSelectPage")
|
|||
|
-- 3D场景相机数量
|
|||
|
local CAMERA_NUM = 5
|
|||
|
-- 子页面枚举
|
|||
|
local PARENT_PAGE
|
|||
|
-- 子页面控件脚本字典
|
|||
|
local ChildUiPage
|
|||
|
|
|||
|
function XUiRpgTowerRoleList:OnAwake()
|
|||
|
XTool.InitUiObject(self)
|
|||
|
XUiPanelAsset.New(self, self.PanelAsset, XDataCenter.ItemManager.ItemId.FreeGem, XDataCenter.ItemManager.ItemId.ActionPoint, XDataCenter.ItemManager.ItemId.Coin)
|
|||
|
self:InitChildUiPageData()
|
|||
|
self:InitButtons()
|
|||
|
self:InitModel()
|
|||
|
self.ChildPage = {}
|
|||
|
end
|
|||
|
|
|||
|
function XUiRpgTowerRoleList:OnEnable()
|
|||
|
self:OnRefresh()
|
|||
|
end
|
|||
|
|
|||
|
function XUiRpgTowerRoleList:OnDestroy()
|
|||
|
self:ChildPageOnCollect()
|
|||
|
end
|
|||
|
|
|||
|
function XUiRpgTowerRoleList:OnGetEvents()
|
|||
|
return { XEventId.EVENT_RPGTOWER_RESET, XEventId.EVENT_RPGTOWER_MEMBERCHANGE }
|
|||
|
end
|
|||
|
|
|||
|
function XUiRpgTowerRoleList:OnNotify(evt, ...)
|
|||
|
local args = { ... }
|
|||
|
if evt == XEventId.EVENT_RPGTOWER_RESET then
|
|||
|
self:OnActivityReset()
|
|||
|
elseif evt == XEventId.EVENT_RPGTOWER_MEMBERCHANGE then
|
|||
|
self:OnMemberChange()
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
--================
|
|||
|
--活动周期结束时弹回主界面
|
|||
|
--================
|
|||
|
function XUiRpgTowerRoleList:OnActivityReset()
|
|||
|
XLuaUiManager.RunMain()
|
|||
|
XUiManager.TipMsg(CS.XTextManager.GetText("RpgTowerFinished"))
|
|||
|
end
|
|||
|
|
|||
|
--================
|
|||
|
--初始化枚举与字典
|
|||
|
--================
|
|||
|
function XUiRpgTowerRoleList:InitChildUiPageData()
|
|||
|
PARENT_PAGE = {
|
|||
|
MAIN = XDataCenter.RpgTowerManager.PARENT_PAGE.MAIN, -- 主页面
|
|||
|
ADAPT = XDataCenter.RpgTowerManager.PARENT_PAGE.ADAPT, -- 改造页面
|
|||
|
CHANGEMEMBER = XDataCenter.RpgTowerManager.PARENT_PAGE.CHANGEMEMBER, -- 切换队员
|
|||
|
TYPESELECT = XDataCenter.RpgTowerManager.PARENT_PAGE.TYPESELECT, --选择天赋类型入口
|
|||
|
}
|
|||
|
ChildUiPage = {
|
|||
|
[PARENT_PAGE.MAIN] = XUiRpgTowerRoleListMainPage,
|
|||
|
[PARENT_PAGE.ADAPT] = XUiRpgTowerRoleListAdaptPage,
|
|||
|
[PARENT_PAGE.CHANGEMEMBER] = XUiRpgTowerRoleListChangeMemberPage,
|
|||
|
[PARENT_PAGE.TYPESELECT] = XUiRpgTowerRoleListTypeSelectPage
|
|||
|
}
|
|||
|
end
|
|||
|
--================
|
|||
|
--初始化按钮事件
|
|||
|
--================
|
|||
|
function XUiRpgTowerRoleList:InitButtons()
|
|||
|
self.BtnBack.CallBack = function() self:OnBtnBackClick() end
|
|||
|
self.BtnMainUi.CallBack = function() self:OnBtnMainUiClick() end
|
|||
|
self:BindHelpBtn(self.BtnHelp, "RpgTowerHelp")
|
|||
|
end
|
|||
|
--================
|
|||
|
--返回按钮事件
|
|||
|
--================
|
|||
|
function XUiRpgTowerRoleList:OnBtnBackClick()
|
|||
|
if self.CurrentPageIndex == PARENT_PAGE.ADAPT then
|
|||
|
self:OpenChildPage(PARENT_PAGE.TYPESELECT)
|
|||
|
return
|
|||
|
elseif self.CurrentPageIndex == PARENT_PAGE.CHANGEMEMBER then
|
|||
|
self:OpenChildPage(PARENT_PAGE.ADAPT)
|
|||
|
return
|
|||
|
elseif self.CurrentPageIndex == PARENT_PAGE.TYPESELECT then
|
|||
|
self:OpenChildPage(PARENT_PAGE.MAIN)
|
|||
|
return
|
|||
|
end
|
|||
|
self:Close()
|
|||
|
end
|
|||
|
--================
|
|||
|
--主界面按钮事件
|
|||
|
--================
|
|||
|
function XUiRpgTowerRoleList:OnBtnMainUiClick()
|
|||
|
XLuaUiManager.RunMain()
|
|||
|
end
|
|||
|
--================
|
|||
|
--页面刷新时
|
|||
|
--================
|
|||
|
function XUiRpgTowerRoleList:OnRefresh()
|
|||
|
-- 默认第一次打开MAIN页面,若不是第一次打开,则打开最后停留的子页面
|
|||
|
self:OpenChildPage(self.CurrentPageIndex or PARENT_PAGE.MAIN)
|
|||
|
end
|
|||
|
--================
|
|||
|
--当选择角色时
|
|||
|
--================
|
|||
|
function XUiRpgTowerRoleList:OnCharaSelect(rChara, updateModelCb)
|
|||
|
self.RCharacter = rChara
|
|||
|
self:UpdateModel(rChara, updateModelCb)
|
|||
|
self:ChildPageOnCharaSelect(rChara)
|
|||
|
end
|
|||
|
--================
|
|||
|
--子页面切换角色选择
|
|||
|
--================
|
|||
|
function XUiRpgTowerRoleList:ChildPageOnCharaSelect(rChara)
|
|||
|
if self.ChildPage[self.CurrentPageIndex] then self.ChildPage[self.CurrentPageIndex]:RefreshPage(rChara) end
|
|||
|
end
|
|||
|
--================
|
|||
|
--当角色数据刷新时
|
|||
|
--================
|
|||
|
function XUiRpgTowerRoleList:OnMemberChange()
|
|||
|
-- 刷新当前页面
|
|||
|
self.ChildPage[self.CurrentPageIndex]:RefreshPage(self.RCharacter)
|
|||
|
self:UpdateModel(self.RCharacter)
|
|||
|
end
|
|||
|
--================
|
|||
|
--初始化角色模型和场景相机
|
|||
|
--================
|
|||
|
function XUiRpgTowerRoleList:InitModel()
|
|||
|
local root = self.UiModelGo.transform
|
|||
|
self.PanelRoleModel = root:FindTransform("PanelRoleModel")
|
|||
|
self.ImgEffectHuanren = root:FindTransform("ImgEffectHuanren")
|
|||
|
self.ImgEffectHuanren1 = root:FindTransform("ImgEffectHuanren1")
|
|||
|
self.ImgEffectLogoGouzao = root:FindTransform("ImgEffectLogoGouzao")
|
|||
|
self.ImgEffectLogoGanran = root:FindTransform("ImgEffectLogoGanran")
|
|||
|
self.CameraFar = {
|
|||
|
root:FindTransform("UiCamFarLv"),
|
|||
|
root:FindTransform("UiCamFarGrade"),
|
|||
|
root:FindTransform("UiCamFarQuality"),
|
|||
|
root:FindTransform("UiCamFarSkill"),
|
|||
|
root:FindTransform("UiCamFarrExchange"),
|
|||
|
}
|
|||
|
self.CameraNear = {
|
|||
|
root:FindTransform("UiCamNearLv"),
|
|||
|
root:FindTransform("UiCamNearGrade"),
|
|||
|
root:FindTransform("UiCamNearQuality"),
|
|||
|
root:FindTransform("UiCamNearSkill"),
|
|||
|
root:FindTransform("UiCamNearrExchange"),
|
|||
|
}
|
|||
|
self.RoleModelPanel = XUiPanelRoleModel.New(self.PanelRoleModel, self.Name, nil, true, nil, true)
|
|||
|
end
|
|||
|
--================
|
|||
|
--刷新场景相机
|
|||
|
--================
|
|||
|
function XUiRpgTowerRoleList:UpdateCamera(cameraIndex)
|
|||
|
self.CurCameraIndex = cameraIndex
|
|||
|
for i = 1, CAMERA_NUM do
|
|||
|
if self.CurCameraIndex ~= i then
|
|||
|
self.CameraFar[i].gameObject:SetActiveEx(false)
|
|||
|
self.CameraNear[i].gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
if self.CameraFar[self.CurCameraIndex] then
|
|||
|
self.CameraFar[self.CurCameraIndex].gameObject:SetActiveEx(true)
|
|||
|
end
|
|||
|
|
|||
|
if self.CameraNear[self.CurCameraIndex] then
|
|||
|
self.CameraNear[self.CurCameraIndex].gameObject:SetActiveEx(true)
|
|||
|
end
|
|||
|
end
|
|||
|
--================
|
|||
|
--刷新模型
|
|||
|
--================
|
|||
|
function XUiRpgTowerRoleList:UpdateModel(rChara, updateModelCb)
|
|||
|
self.ImgEffectHuanren.gameObject:SetActiveEx(false)
|
|||
|
local cb = function(model)
|
|||
|
self.PanelDrag.Target = model.transform
|
|||
|
self.ImgEffectHuanren.gameObject:SetActiveEx(true)
|
|||
|
if updateModelCb then updateModelCb(model) end
|
|||
|
end
|
|||
|
local robotCfg = XRobotManager.GetRobotTemplate(rChara:GetRobotId())
|
|||
|
self.RoleModelPanel:UpdateRobotModel(rChara:GetRobotId(), rChara:GetCharacterId(), nil, robotCfg and robotCfg.FashionId, robotCfg and robotCfg.WeaponId, cb)
|
|||
|
end
|
|||
|
--================
|
|||
|
--打开子页面,打开新页面时会关闭旧的子页面
|
|||
|
--================
|
|||
|
function XUiRpgTowerRoleList:OpenChildPage(pageIndex, ...)
|
|||
|
if self.CurrentPageIndex == pageIndex then return end
|
|||
|
if self.CurrentPageIndex then
|
|||
|
self.ChildPage[self.CurrentPageIndex]:HidePage()
|
|||
|
end
|
|||
|
self.PrePageIndex = self.CurrentPageIndex
|
|||
|
if self.ChildPage[pageIndex] then
|
|||
|
self.CurrentPageIndex = pageIndex
|
|||
|
self.ChildPage[self.CurrentPageIndex]:ShowPage(...)
|
|||
|
self.ChildPage[self.CurrentPageIndex]:RefreshPage(self.RCharacter)
|
|||
|
return
|
|||
|
end
|
|||
|
self.CurrentPageIndex = pageIndex
|
|||
|
self.ChildPage[pageIndex] = ChildUiPage[pageIndex].New(self)
|
|||
|
self.ChildPage[pageIndex]:ShowPage(...)
|
|||
|
if self.RCharacter then self.ChildPage[pageIndex]:RefreshPage(self.RCharacter) end
|
|||
|
end
|
|||
|
|
|||
|
function XUiRpgTowerRoleList:OpenPreChildPage(...)
|
|||
|
self.ChildPage[self.CurrentPageIndex]:HidePage()
|
|||
|
local tempIndex = self.PrePageIndex
|
|||
|
self.PrePageIndex = self.CurrentPageIndex
|
|||
|
self.CurrentPageIndex = tempIndex
|
|||
|
self.ChildPage[self.CurrentPageIndex]:ShowPage(...)
|
|||
|
self.ChildPage[self.CurrentPageIndex]:RefreshPage(self.RCharacter)
|
|||
|
|
|||
|
end
|
|||
|
--================
|
|||
|
--关闭子页面
|
|||
|
--================
|
|||
|
function XUiRpgTowerRoleList:CloseChildPage(pageIndex)
|
|||
|
if self.ChildPage[pageIndex] then self.ChildPage[pageIndex]:HidePage() end
|
|||
|
end
|
|||
|
--================
|
|||
|
--回收子页面
|
|||
|
--================
|
|||
|
function XUiRpgTowerRoleList:ChildPageOnCollect()
|
|||
|
for _, page in pairs(self.ChildPage) do
|
|||
|
if page.OnCollect then page:OnCollect() end
|
|||
|
end
|
|||
|
end
|
|||
|
--================
|
|||
|
--读取面板控件
|
|||
|
--================
|
|||
|
function XUiRpgTowerRoleList:LoadChildPrefab(pageIndex, assetPath)
|
|||
|
return self["Panel" .. pageIndex]:LoadPrefab(assetPath)
|
|||
|
end
|
|||
|
--================
|
|||
|
--设置滑动
|
|||
|
--================
|
|||
|
function XUiRpgTowerRoleList:SetModelDragFieldActive(isActive)
|
|||
|
self.PanelDrag.gameObject:SetActiveEx(isActive)
|
|||
|
end
|