225 lines
9 KiB
Lua
225 lines
9 KiB
Lua
|
--主线章节 关卡选择界面
|
||
|
local XUiBrilliantWalkChapterBoss = XLuaUiManager.Register(XLuaUi, "UiBrilliantWalkChapterBoss")
|
||
|
local XUIBrilliantWalkMiniTaskPanel = require("XUi/XUiBrilliantWalk/ModuleSubPanel/XUIBrilliantWalkMiniTaskPanel")--任务miniUI
|
||
|
local XUIBrilliantWalkBossStageGrid = require("XUi/XUiBrilliantWalk/XUIGrid/XUIBrilliantWalkBossStageGrid")
|
||
|
|
||
|
local XUguiDragProxy = CS.XUguiDragProxy
|
||
|
|
||
|
|
||
|
function XUiBrilliantWalkChapterBoss:OnAwake()
|
||
|
--关卡方格列表
|
||
|
self.GridStageItemList = {} --地图中的空格Gameobject
|
||
|
self.StageItemList = {} --每个空格单元中读取perfab的实例
|
||
|
--界面右边普通模块界面
|
||
|
self.UiTaskPanel = XUIBrilliantWalkMiniTaskPanel.New(self.BtnTask,self)
|
||
|
--按钮事件
|
||
|
self.BtnMainUi.CallBack = function()
|
||
|
self:OnBtnMainUiClick()
|
||
|
end
|
||
|
self.BtnBack.CallBack = function()
|
||
|
self:OnBtnBackClick()
|
||
|
end
|
||
|
self.BtnSwitchHard.CallBack = function()
|
||
|
self:OnBtnSwitchHardClick()
|
||
|
end
|
||
|
self.BtnSwitchNormal.CallBack = function()
|
||
|
self:OnBtnSwitchNormalClick()
|
||
|
end
|
||
|
self.BtnHelp.CallBack = function()
|
||
|
self:OnBtnHelpClick()
|
||
|
end
|
||
|
end
|
||
|
function XUiBrilliantWalkChapterBoss:OnEnable()
|
||
|
XEventManager.AddEventListener(XEventId.EVENT_BRILLIANT_WALK_UPDATE_STAGE_VIEW, self.UpdateView, self)
|
||
|
self.UiTaskPanel:OnEnable()
|
||
|
self:UpdateView()
|
||
|
self.ParentUi:SwitchSceneCamera(XBrilliantWalkCameraType.Chapter)
|
||
|
end
|
||
|
function XUiBrilliantWalkChapterBoss:OnDisable()
|
||
|
XEventManager.RemoveEventListener(XEventId.EVENT_BRILLIANT_WALK_UPDATE_STAGE_VIEW, self.UpdateView, self)
|
||
|
self.UiTaskPanel:OnDisable()
|
||
|
end
|
||
|
|
||
|
--切换普通/挑战界面
|
||
|
function XUiBrilliantWalkChapterBoss:SwitchDifficult(difficult)
|
||
|
if difficult == XBrilliantWalkBossChapterDifficult.Normal then
|
||
|
XDataCenter.BrilliantWalkManager.SetDifficultCache(difficult)
|
||
|
self:UpdateView()
|
||
|
elseif difficult == XBrilliantWalkBossChapterDifficult.Hard then
|
||
|
XDataCenter.BrilliantWalkManager.SetDifficultCache(difficult)
|
||
|
self:UpdateView()
|
||
|
end
|
||
|
end
|
||
|
--关闭详情界面
|
||
|
function XUiBrilliantWalkChapterBoss:CloseStageDetial()
|
||
|
if self.OpenUiFubenBrilliantWalkDetail then
|
||
|
self.ParentUi:CloseMiniSubUI("UiFubenBrilliantWalkBossDetail")
|
||
|
self.OpenUiFubenBrilliantWalkDetail = false
|
||
|
self:CancelItemSelect()
|
||
|
self.ScrollRect.movementType = CS.UnityEngine.UI.ScrollRect.MovementType.Elastic
|
||
|
return true
|
||
|
end
|
||
|
return false
|
||
|
end
|
||
|
--取消选中关卡高亮
|
||
|
function XUiBrilliantWalkChapterBoss:CancelItemSelect()
|
||
|
if self.SelectItem then
|
||
|
self.SelectItem:SetSelect(false)
|
||
|
self.SelectItem = nil
|
||
|
end
|
||
|
end
|
||
|
--刷新界面
|
||
|
function XUiBrilliantWalkChapterBoss:UpdateView()
|
||
|
local difficult = XDataCenter.BrilliantWalkManager.GetDifficultCache()
|
||
|
--按钮样式
|
||
|
if difficult == XBrilliantWalkBossChapterDifficult.Normal then
|
||
|
self.BtnSwitchHard.gameObject:SetActiveEx(true)
|
||
|
self.BtnSwitchNormal.gameObject:SetActiveEx(false)
|
||
|
elseif difficult == XBrilliantWalkBossChapterDifficult.Hard then
|
||
|
self.BtnSwitchHard.gameObject:SetActiveEx(false)
|
||
|
self.BtnSwitchNormal.gameObject:SetActiveEx(true)
|
||
|
end
|
||
|
--读取Perfab 创建关卡滑动图并初始化
|
||
|
local UiData = XDataCenter.BrilliantWalkManager.GetUiDataBossStageSelect()
|
||
|
local chapterConfig = UiData.ChapterConfig
|
||
|
local chapterPerfab = self.ContentChapter:LoadPrefab(chapterConfig.PrefabName)
|
||
|
local chapterObject = {}
|
||
|
XTool.InitUiObjectByUi(chapterObject,chapterPerfab)
|
||
|
self.ScrollRect = chapterObject.PaneStageList:GetComponent("ScrollRect")
|
||
|
--获取滑动图 拖动组件 注册拖动事件
|
||
|
self.PanelStageContent = chapterObject.PanelStageContent
|
||
|
local dragProxy = chapterObject.PaneStageList:GetComponent(typeof(XUguiDragProxy))
|
||
|
if not dragProxy then
|
||
|
dragProxy = chapterObject.PaneStageList.gameObject:AddComponent(typeof(XUguiDragProxy))
|
||
|
end
|
||
|
dragProxy:RegisterHandler(handler(self, self.OnDragProxy))
|
||
|
--读取关卡信息 加载关卡格子 如果配置关卡数大于滑动图关卡数,则多出关卡不予显示。
|
||
|
local stageIds = chapterConfig.MainStageIds
|
||
|
if difficult == XBrilliantWalkBossChapterDifficult.Hard then
|
||
|
stageIds = chapterConfig.SideStageIds
|
||
|
end
|
||
|
self.GridStageItemList = {}
|
||
|
local index = 1
|
||
|
local grid = self.PanelStageContent.transform:Find("Stage1")
|
||
|
while grid do --遍历滑动图的关卡格子
|
||
|
table.insert(self.GridStageItemList,grid)
|
||
|
local stageId = stageIds[index] --读取章节配置里的关卡信息
|
||
|
if stageId then
|
||
|
--创建关卡格子
|
||
|
local stageConfig =XBrilliantWalkConfigs.GetStageConfig(stageId)
|
||
|
local itemPerfab = self.GridStageItemList[index]:LoadPrefab(CS.XGame.ClientConfig:GetString(stageConfig.PerfabType))
|
||
|
local item = XUIBrilliantWalkBossStageGrid.New(itemPerfab,self)
|
||
|
item:Refresh(stageId,self.ChapterId)
|
||
|
table.insert(self.StageItemList,item)
|
||
|
self.GridStageItemList[index].gameObject:SetActiveEx(true)
|
||
|
|
||
|
local line = self.PanelStageContent.transform:Find("Line" .. (index-1))
|
||
|
if line then
|
||
|
line.gameObject:SetActiveEx(true)
|
||
|
end
|
||
|
else
|
||
|
--无数据关卡不显示路线 线条
|
||
|
local line = self.PanelStageContent.transform:Find("Line" .. (index-1))
|
||
|
if line then
|
||
|
line.gameObject:SetActiveEx(false)
|
||
|
end
|
||
|
self.GridStageItemList[index].gameObject:SetActiveEx(false)
|
||
|
end
|
||
|
index = index + 1
|
||
|
grid = self.PanelStageContent .transform:Find("Stage" .. index)
|
||
|
end
|
||
|
|
||
|
--任务miniUI视图
|
||
|
self.UiTaskPanel:UpdateView()
|
||
|
end
|
||
|
--滑动界面拖动时回调
|
||
|
function XUiBrilliantWalkChapterBoss:OnDragProxy()
|
||
|
self:CloseStageDetial()
|
||
|
end
|
||
|
--滑动到某个Grid
|
||
|
function XUiBrilliantWalkChapterBoss:PlayScrollViewMove(grid)
|
||
|
self.ScrollRect.movementType = CS.UnityEngine.UI.ScrollRect.MovementType.Unrestricted
|
||
|
local gridTfPosX = grid:GetParentLocalPosX()
|
||
|
local diffX = gridTfPosX + self.PanelStageContent.localPosition.x
|
||
|
if diffX < XDataCenter.BrilliantWalkManager.UiGridBossChapterMoveMinX or diffX > XDataCenter.BrilliantWalkManager.UiGridBossChapterMoveMaxX then
|
||
|
local tarPosX = XDataCenter.BrilliantWalkManager.UiGridBossChapterMoveTargetX - gridTfPosX
|
||
|
local tarPos = self.PanelStageContent.localPosition
|
||
|
tarPos.x = tarPosX
|
||
|
XLuaUiManager.SetMask(true)
|
||
|
-- 动画
|
||
|
XUiHelper.DoMove(self.PanelStageContent, tarPos, XDataCenter.BrilliantWalkManager.UiGridBossChapterMoveDuration, XUiHelper.EaseType.Sin, function()
|
||
|
XLuaUiManager.SetMask(false)
|
||
|
end)
|
||
|
end
|
||
|
end
|
||
|
--点击关卡滑块
|
||
|
function XUiBrilliantWalkChapterBoss:OnStageGridClick(grid, stageId)
|
||
|
self:CancelItemSelect()
|
||
|
grid:SetSelect(true)
|
||
|
self.SelectItem = grid
|
||
|
self:OnBtnStageClick(stageId)
|
||
|
self:PlayScrollViewMove(grid)
|
||
|
end
|
||
|
--点击返回按钮
|
||
|
function XUiBrilliantWalkChapterBoss:OnBtnBackClick()
|
||
|
if self:CloseStageDetial() then
|
||
|
return
|
||
|
end
|
||
|
self.ParentUi:CloseStackTopUi()
|
||
|
end
|
||
|
--点击主界面按钮
|
||
|
function XUiBrilliantWalkChapterBoss:OnBtnMainUiClick()
|
||
|
XLuaUiManager.RunMain()
|
||
|
end
|
||
|
--点击感叹号按钮
|
||
|
function XUiBrilliantWalkChapterBoss:OnBtnHelpClick()
|
||
|
self:CloseStageDetial()
|
||
|
XUiManager.ShowHelpTip("BrilliantWalk")
|
||
|
end
|
||
|
--点击挑战按钮
|
||
|
function XUiBrilliantWalkChapterBoss:OnBtnSwitchHardClick()
|
||
|
self:SwitchDifficult(XBrilliantWalkBossChapterDifficult.Hard)
|
||
|
self:PlayAnimationWithMask("QieHuan")
|
||
|
end
|
||
|
--点击普通按钮
|
||
|
function XUiBrilliantWalkChapterBoss:OnBtnSwitchNormalClick()
|
||
|
self:SwitchDifficult(XBrilliantWalkBossChapterDifficult.Normal)
|
||
|
self:PlayAnimationWithMask("QieHuan")
|
||
|
end
|
||
|
--点击关卡按钮
|
||
|
function XUiBrilliantWalkChapterBoss:OnBtnStageClick(stageId)
|
||
|
self.OpenUiFubenBrilliantWalkDetail = true
|
||
|
self.ParentUi:OpenMiniSubUI(
|
||
|
"UiFubenBrilliantWalkBossDetail",{
|
||
|
StageId = stageId,
|
||
|
StageEnterCallback = function(stageId)
|
||
|
self:OnBtnEnterClick(stageId)
|
||
|
end,
|
||
|
PluginSkipCallback = function(pluginId)
|
||
|
self:OnBtnPluginSkipClick(pluginId)
|
||
|
end,
|
||
|
AttentionCallback = function()
|
||
|
self:CloseStageDetial()
|
||
|
self.ParentUi:OpenMiniSubUI("UiBrilliantWalkAttention",{StageId = stageId})
|
||
|
end,
|
||
|
CloseCallback = function()
|
||
|
self:CloseStageDetial()
|
||
|
end
|
||
|
}
|
||
|
)
|
||
|
end
|
||
|
--点击开始战斗
|
||
|
function XUiBrilliantWalkChapterBoss:OnBtnEnterClick(stageId)
|
||
|
self:CloseStageDetial()
|
||
|
self.ParentUi:OpenStackSubUi("UiBrilliantWalkEquipment",{StageId = stageId})
|
||
|
end
|
||
|
--点击任务按钮
|
||
|
function XUiBrilliantWalkChapterBoss:OnBtnTaskClick()
|
||
|
self:CloseStageDetial()
|
||
|
self.ParentUi:OpenStackSubUi("UiBrilliantWalkTask")
|
||
|
end
|
||
|
--点击插件跳转
|
||
|
function XUiBrilliantWalkChapterBoss:OnBtnPluginSkipClick(pluginId)
|
||
|
self:CloseStageDetial()
|
||
|
XDataCenter.BrilliantWalkManager.SkipToPluginUi(pluginId)
|
||
|
end
|