PGRData/Script/matrix/xui/xuiworldboss/XUiGridAttributeChapter.lua

113 lines
No EOL
4.3 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local XUiGridAttributeStage = require("XUi/XUiWorldBoss/XUiGridAttributeStage")
local XUiGridAttributeChapter = XClass(nil, "UiGridAttributeChapter")
local FocusTime = 0.5
local ScaleLevel = {}
local MAX_STAGE_COUNT = 20
function XUiGridAttributeChapter:Ctor(ui, areaId)
self.GameObject = ui.gameObject
self.Transform = ui.transform
XTool.InitUiObject(self)
self.AreaId = areaId
self.GridStageList = {}
ScaleLevel = {
Small = self.PanelDrag.MinScale,
Big = self.PanelDrag.MaxScale,
Normal = (self.PanelDrag.MinScale + self.PanelDrag.MaxScale) / 2,
}
self.Mask.gameObject:SetActiveEx(false)
end
function XUiGridAttributeChapter:GoToNearestStage()
local attributeArea = XDataCenter.WorldBossManager.GetAttributeAreaById(self.AreaId)
local stageIds = attributeArea:GetStageIds()
local canPlayList = {}
for index, stageId in pairs(stageIds) do
local stageData = attributeArea:GetStageEntityById(stageId)
if not stageData:GetIsFinish() and not stageData:GetIsLock() then
table.insert(canPlayList, index)
end
end
if #canPlayList > 0 then
local firstCanPlayId = canPlayList[1]
local firstGridStage = self.GridStageList[firstCanPlayId]
if not firstGridStage then
XLog.Error("ExploreGroup's setting is Error by stageIndex:" .. firstCanPlayId)
return
end
local nearestTransform = firstGridStage.Transform
local minDis = CS.UnityEngine.Vector3.Distance(nearestTransform.position, self.PanelDrag.gameObject.transform.position)
for i = 2, #canPlayList do
local canPlayId = canPlayList[i]
local gridStage = self.GridStageList[canPlayId]
if not gridStage then
XLog.Error("ExploreGroup's setting is Error by stageIndex:" .. canPlayId)
break
end
local tempDis = CS.UnityEngine.Vector3.Distance(gridStage.Transform.position, self.PanelDrag.gameObject.transform.position)
if tempDis < minDis then
nearestTransform = gridStage.Transform
minDis = tempDis
end
end
self.PanelDrag:FocusTarget(nearestTransform, ScaleLevel.Normal, FocusTime, CS.UnityEngine.Vector3.zero)
end
end
function XUiGridAttributeChapter:UpdateStageList()
local attributeArea = XDataCenter.WorldBossManager.GetAttributeAreaById(self.AreaId)
local stageIds = attributeArea:GetStageIds()
-- 初始化副本显示列表i作为order id从1开始
for index,stageId in pairs(stageIds) do
local stageData = attributeArea:GetStageEntityById(stageId)
local stageCfg = stageData:GetStageCfg()
local parent = self.PanelStageContent.transform:Find(string.format("Stage%d", index))
local grid = self.GridStageList[index]
if not grid then
local uiName = "GridWorldBossStage"
uiName = stageCfg.StageGridStyle and string.format("%s%s", uiName, stageCfg.StageGridStyle) or uiName
local prefabName = CS.XGame.ClientConfig:GetString(uiName)
local prefab = parent:LoadPrefab(prefabName)
grid = XUiGridAttributeStage.New(prefab, self)
grid.Parent = parent
self.GridStageList[index] = grid
end
grid:UpdateStageGrid(stageData)
parent.gameObject:SetActiveEx(true)
end
for i = 1, MAX_STAGE_COUNT do
if not self.GridStageList[i] then
local parent = self.PanelStageContent.transform:Find(string.format("Stage%d", i))
if parent then
parent.gameObject:SetActiveEx(false)
end
end
end
end
function XUiGridAttributeChapter:MoveToStageGrid(cb)
self.Mask.gameObject:SetActiveEx(true)
XScheduleManager.ScheduleOnce(function()
self.PanelDrag:FocusTarget(self.CurStageGrid.Transform, ScaleLevel.Big, FocusTime, CS.UnityEngine.Vector3.zero, function()
if cb then cb() end
self.Mask.gameObject:SetActiveEx(false)
end)
end, 0)
end
function XUiGridAttributeChapter:ScaleBack()
self.PanelDrag:FocusTarget(self.CurStageGrid.Transform, ScaleLevel.Normal, FocusTime, CS.UnityEngine.Vector3.zero, nil)
end
return XUiGridAttributeChapter