forked from endernon/PGRData
169 lines
6.5 KiB
Lua
169 lines
6.5 KiB
Lua
|
--===========================================================================
|
|||
|
---@desc 枢纽作战--次级作战界面
|
|||
|
--===========================================================================
|
|||
|
local XUiPivotCombatSecondary = XLuaUiManager.Register(XLuaUi, "UiPivotCombatSecondary")
|
|||
|
local XUiPivotCombatChapterGrid = require("XUi/XUiPivotCombat/XUiGrid/XUiPivotCombatChapterGrid")
|
|||
|
|
|||
|
local MAX_STAGE_MEMBER = 3 --最大的关卡数量
|
|||
|
|
|||
|
-- 滑动列表滑动类型
|
|||
|
local MovementType = {
|
|||
|
Elastic = CS.UnityEngine.UI.ScrollRect.MovementType.Elastic,
|
|||
|
Unrestricted = CS.UnityEngine.UI.ScrollRect.MovementType.Unrestricted,
|
|||
|
Clamped = CS.UnityEngine.UI.ScrollRect.MovementType.Clamped,
|
|||
|
}
|
|||
|
|
|||
|
function XUiPivotCombatSecondary:OnAwake()
|
|||
|
self:InitUI()
|
|||
|
self:InitCB()
|
|||
|
end
|
|||
|
|
|||
|
function XUiPivotCombatSecondary:OnStart(region)
|
|||
|
self.Region = region
|
|||
|
--标题
|
|||
|
self.TxtTitle.text = self.Region:GetRegionName()
|
|||
|
--供能图标
|
|||
|
self.Btn01:SetRawImage(self.Region:GetIcon())
|
|||
|
self.StageGridList = {}
|
|||
|
|
|||
|
--初始化资产
|
|||
|
self.AssetPanel = XUiPanelAsset.New(self, self.PanelAsset, XDataCenter.PivotCombatManager.GetActivityCoinId())
|
|||
|
--关卡数据
|
|||
|
self.StageList = region:GetStageList()
|
|||
|
|
|||
|
self:SetScrollMoveType(MovementType.Elastic)
|
|||
|
--背景
|
|||
|
self.Background:SetRawImage(region:GetSecondaryRegionBg())
|
|||
|
|
|||
|
XEventManager.AddEventListener(XEventId.EVENT_PIVOTCOMBAT_ENERGY_REFRESH, self.RefreshEnergy, self)
|
|||
|
|
|||
|
local timeOfEnd = XDataCenter.PivotCombatManager.GetActivityEndTime()
|
|||
|
self:SetAutoCloseInfo(timeOfEnd, function(isClose)
|
|||
|
if isClose then
|
|||
|
XDataCenter.PivotCombatManager.OnActivityEnd()
|
|||
|
end
|
|||
|
XDataCenter.PivotCombatManager.CheckNeedClose()
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPivotCombatSecondary:OnEnable()
|
|||
|
XUiPivotCombatSecondary.Super.OnEnable(self)
|
|||
|
|
|||
|
self.TxtTitleDate.text = self.Region:GetRegionLeftTime()
|
|||
|
self:RefreshEnergy()
|
|||
|
|
|||
|
for index, stage in ipairs(self.StageList) do
|
|||
|
--超过了提供的最大关卡数量
|
|||
|
if index > MAX_STAGE_MEMBER then break end
|
|||
|
--关卡线 (1 ~ MAX_STAGE_MEMBER - 1)
|
|||
|
if index < MAX_STAGE_MEMBER then
|
|||
|
self["Line"..index].gameObject:SetActiveEx(stage:GetPassed())
|
|||
|
end
|
|||
|
|
|||
|
local item = self.StageGridList[index]
|
|||
|
if not item then
|
|||
|
item = XUiPivotCombatChapterGrid.New(self["Stage"..index], self.Region, stage:CheckIsLockCharacterStage(), handler(self, self.OnOpenDetail))
|
|||
|
end
|
|||
|
item:Refresh(stage)
|
|||
|
self.StageGridList[index] = item
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiPivotCombatSecondary:OnDestroy()
|
|||
|
XEventManager.RemoveEventListener(XEventId.EVENT_PIVOTCOMBAT_ENERGY_REFRESH, self.RefreshEnergy, self)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPivotCombatSecondary:OnGetEvents()
|
|||
|
return { XEventId.EVENT_ACTIVITY_ON_RESET, XEventId.EVENT_PIVOTCOMBAT_ACTIVITY_END }
|
|||
|
end
|
|||
|
|
|||
|
function XUiPivotCombatSecondary:OnNotify(evt, ...)
|
|||
|
local args = { ... }
|
|||
|
XDataCenter.PivotCombatManager.OnNotify(evt, args)
|
|||
|
end
|
|||
|
|
|||
|
function XUiPivotCombatSecondary:RefreshEnergy()
|
|||
|
--刷新文字条显示
|
|||
|
local curEnergyLv = self.Region:GetCurSupplyEnergy()
|
|||
|
local maxEnergyLv = self.Region:GetMaxSupplyEnergy()
|
|||
|
self.TxtEffect.text = CS.XTextManager.GetText("PivotCombatAreaEnergy", curEnergyLv, maxEnergyLv)
|
|||
|
--刷新进度条显示
|
|||
|
self.EnergyProgressRegion.fillAmount = self.Region:GetPercentEnergy()
|
|||
|
end
|
|||
|
|
|||
|
function XUiPivotCombatSecondary:InitUI()
|
|||
|
for idx = 1, MAX_STAGE_MEMBER do
|
|||
|
local stage = self.PanelStageContent:Find("Stage"..idx)
|
|||
|
local line = self.PanelStageContent:Find("Line"..idx)
|
|||
|
if stage then
|
|||
|
stage.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
if line then
|
|||
|
line.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
|
|||
|
self["Stage"..idx] = stage
|
|||
|
self["Line"..idx] = line
|
|||
|
end
|
|||
|
self.Background = XUiHelper.TryGetComponent(self.Transform, "FullScreenBackground/Bg", "RawImage")
|
|||
|
end
|
|||
|
|
|||
|
function XUiPivotCombatSecondary:InitCB()
|
|||
|
self.SceneBtnBack.CallBack = function()
|
|||
|
self:Close()
|
|||
|
end
|
|||
|
self.SceneBtnMainUi.CallBack = function()
|
|||
|
XLuaUiManager.RunMain()
|
|||
|
end
|
|||
|
self.BtnEffect.CallBack = function()
|
|||
|
--XLuaUiManager.Open("UiPivotCombatEffectArea", self.Region)
|
|||
|
self:OpenOneChildUi("UiPivotCombatEffectArea", self.Region)
|
|||
|
end
|
|||
|
self.BtnGuide.CallBack = function()
|
|||
|
XLuaUiManager.Open("UiBattleRoleRoom", XPivotCombatConfigs.DynamicScoreTeachStageId)
|
|||
|
end
|
|||
|
|
|||
|
self:BindHelpBtn(self.BtnHelp, "PivotCombatSecondaryHelp")
|
|||
|
end
|
|||
|
|
|||
|
function XUiPivotCombatSecondary:OnOpenDetail(region, stage, gridTransform, OnRetreatCb)
|
|||
|
self:OpenOneChildUi("UiPivotCombatSecondaryDetail", region, stage, handler(self, self.OnScrollViewDoMoveCenter), OnRetreatCb)
|
|||
|
self:OnScrollViewDoMove(gridTransform)
|
|||
|
end
|
|||
|
|
|||
|
--点击chapter滑动到屏幕左侧,回调
|
|||
|
function XUiPivotCombatSecondary:OnScrollViewDoMove(gridTransform)
|
|||
|
local gridRect = gridTransform:GetComponent("RectTransform")
|
|||
|
local diffX = gridRect.localPosition.x + self.PanelStageContent.localPosition.x
|
|||
|
if diffX < XDataCenter.FubenMainLineManager.UiGridChapterMoveMinX or diffX > XDataCenter.FubenMainLineManager.UiGridChapterMoveMaxX then
|
|||
|
local targetPosX = XDataCenter.FubenMainLineManager.UiGridChapterMoveTargetX - gridRect.localPosition.x
|
|||
|
local targetPos = self.PanelStageContent.localPosition
|
|||
|
targetPos.x = targetPosX
|
|||
|
XLuaUiManager.SetMask(true)
|
|||
|
self.LastLocalPosition = XTool.Clone(self.PanelStageContent.localPosition)
|
|||
|
self:SetScrollMoveType(MovementType.Unrestricted)
|
|||
|
XUiHelper.DoMove(self.PanelStageContent, targetPos, XDataCenter.FubenMainLineManager.UiGridChapterMoveDuration, XUiHelper.EaseType.Sin, function()
|
|||
|
XLuaUiManager.SetMask(false)
|
|||
|
end)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
--关闭chapter详情滑动到屏幕左侧,回调
|
|||
|
function XUiPivotCombatSecondary:OnScrollViewDoMoveCenter()
|
|||
|
self:SetScrollMoveType(MovementType.Elastic)
|
|||
|
--if self.LastLocalPosition then
|
|||
|
-- XLuaUiManager.SetMask(true)
|
|||
|
-- XUiHelper.DoMove(self.PanelStageContent, self.LastLocalPosition, XDataCenter.FubenMainLineManager.UiGridChapterMoveDuration, XUiHelper.EaseType.Sin, function()
|
|||
|
-- XLuaUiManager.SetMask(false)
|
|||
|
-- handler(self, self.SetScrollMoveType)(MovementType.Elastic)
|
|||
|
-- end)
|
|||
|
--end
|
|||
|
end
|
|||
|
|
|||
|
--设置滑动列表滑动类型
|
|||
|
function XUiPivotCombatSecondary:SetScrollMoveType(type)
|
|||
|
type = type or MovementType.Elastic
|
|||
|
if self.PaneStageList then
|
|||
|
self.PaneStageList.movementType = type
|
|||
|
end
|
|||
|
end
|