217 lines
No EOL
7.8 KiB
Lua
217 lines
No EOL
7.8 KiB
Lua
local XUiGridStrongholdBuff = require("XUi/XUiStronghold/XUiGridStrongholdBuff")
|
|
|
|
local CsXTextManagerGetText = CsXTextManagerGetText
|
|
local CSUnityEngineObjectInstantiate = CS.UnityEngine.Object.Instantiate
|
|
|
|
local XUiStrongholdDetail = XLuaUiManager.Register(XLuaUi, "UiStrongholdDetail")
|
|
|
|
function XUiStrongholdDetail:OnAwake()
|
|
self:AutoAddListener()
|
|
|
|
self.GridCommon.gameObject:SetActiveEx(false)
|
|
self.GridBossBuff.gameObject:SetActiveEx(false)
|
|
self.GridBaseBuff.gameObject:SetActiveEx(false)
|
|
self.PanelSpecialTool.gameObject:SetActiveEx(false)
|
|
end
|
|
|
|
function XUiStrongholdDetail:OnStart(groupId, closeCb, skipCb)
|
|
self.CloseCb = closeCb
|
|
self.SkipCb = skipCb
|
|
self.RewardGrids = {}
|
|
self.BossBuffGrids = {}
|
|
self.BaseBuffGrids = {}
|
|
|
|
self:UpdateData(groupId)
|
|
end
|
|
|
|
function XUiStrongholdDetail:UpdateData(groupId)
|
|
self.GroupId = groupId
|
|
XDataCenter.StrongholdManager.SetCurrentSelectGroupId(groupId)
|
|
end
|
|
|
|
function XUiStrongholdDetail:OnEnable()
|
|
self:UpdateView()
|
|
self:UpdateEndurance()
|
|
self:UpdateSupport()
|
|
end
|
|
|
|
function XUiStrongholdDetail:OnGetEvents()
|
|
return {
|
|
XEventId.EVENT_STRONGHOLD_FINISH_GROUP_CHANGE,
|
|
XEventId.EVENT_STRONGHOLD_ENDURANCE_CHANGE,
|
|
XEventId.EVENT_STRONGHOLD_TEAMLIST_CHANGE,
|
|
}
|
|
end
|
|
|
|
function XUiStrongholdDetail:OnNotify(evt, ...)
|
|
if evt == XEventId.EVENT_STRONGHOLD_FINISH_GROUP_CHANGE then
|
|
self:UpdateView()
|
|
elseif evt == XEventId.EVENT_STRONGHOLD_ENDURANCE_CHANGE then
|
|
self:UpdateEndurance()
|
|
elseif evt == XEventId.EVENT_STRONGHOLD_TEAMLIST_CHANGE then
|
|
self:UpdateSupport()
|
|
end
|
|
end
|
|
|
|
function XUiStrongholdDetail:UpdateView()
|
|
local groupId = self.GroupId
|
|
|
|
--只有首通奖励
|
|
local firstDrop = not XDataCenter.StrongholdManager.IsGroupFinished(groupId)
|
|
if firstDrop then
|
|
local rewardId = XDataCenter.StrongholdManager.GetGroupRewardId(groupId)
|
|
local oRewards = XRewardManager.GetRewardList(rewardId)
|
|
local rewards = oRewards and XTool.Clone(oRewards) or {}
|
|
|
|
--增加电能
|
|
local addElectric = XStrongholdConfigs.GetGroupAddElectricEnergy(groupId)
|
|
if addElectric > 0 then
|
|
table.insert(rewards, XRewardManager.CreateRewardGoods(XDataCenter.StrongholdManager.GetBatteryItemId(), addElectric))
|
|
end
|
|
|
|
for index, item in ipairs(rewards) do
|
|
local grid = self.RewardGrids[index]
|
|
|
|
if not grid then
|
|
local ui = index == 1 and self.GridCommon or CSUnityEngineObjectInstantiate(self.GridCommon, self.PanelDropContent)
|
|
grid = XUiGridCommon.New(self, ui)
|
|
self.RewardGrids[index] = grid
|
|
end
|
|
|
|
grid:Refresh(item)
|
|
grid.GameObject:SetActiveEx(true)
|
|
end
|
|
|
|
for index = #rewards + 1, #self.RewardGrids do
|
|
self.RewardGrids[index].GameObject:SetActiveEx(false)
|
|
end
|
|
end
|
|
self.PanelDrop.gameObject:SetActiveEx(firstDrop)
|
|
|
|
--据点描述
|
|
local detailBg = XStrongholdConfigs.GetGroupDetailBg(groupId)
|
|
local showBg = not string.IsNilOrEmpty(detailBg)
|
|
if showBg then
|
|
self.RImgTitleBg:SetRawImage(detailBg)
|
|
self.TxtTitleWithBg.text = XStrongholdConfigs.GetGroupName(groupId)
|
|
self.TxtTipWithBg.text = XStrongholdConfigs.GetGroupDetailDesc(groupId)
|
|
else
|
|
self.TxtTitle.text = XStrongholdConfigs.GetGroupName(groupId)
|
|
self.TxtTip.text = XStrongholdConfigs.GetGroupDetailDesc(groupId)
|
|
end
|
|
self.TxtTip.gameObject:SetActiveEx(not showBg)
|
|
self.TxtTitle.gameObject:SetActiveEx(not showBg)
|
|
self.TxtTipWithBg.gameObject:SetActiveEx(showBg)
|
|
self.TxtTitleWithBg.gameObject:SetActiveEx(showBg)
|
|
self.RImgTitleBg.gameObject:SetActiveEx(showBg)
|
|
|
|
local teamNum = XDataCenter.StrongholdManager.GetGroupRequireTeamNum(groupId)
|
|
self.TxtRequrireTeamNum.text = teamNum
|
|
|
|
--据点BossBuff
|
|
local bossBuffIds = XDataCenter.StrongholdManager.GetGroupBossBuffIds(groupId)
|
|
local showBossBuff = #bossBuffIds > 0
|
|
self.TxtBossBuff.gameObject:SetActiveEx(showBossBuff)
|
|
self.PanelBossBuff.gameObject:SetActiveEx(showBossBuff)
|
|
|
|
local isBossBuff = true
|
|
for index, buffId in ipairs(bossBuffIds) do
|
|
local grid = self.BossBuffGrids[index]
|
|
if not grid then
|
|
local go = index == 1 and self.GridBossBuff or CSUnityEngineObjectInstantiate(self.GridBossBuff, self.PanelBossBuff)
|
|
grid = XUiGridStrongholdBuff.New(go, nil, self.SkipCb)
|
|
self.BossBuffGrids[index] = grid
|
|
end
|
|
|
|
grid:Refresh(buffId, isBossBuff)
|
|
grid.GameObject:SetActiveEx(true)
|
|
end
|
|
|
|
for index = #bossBuffIds + 1, #self.BossBuffGrids do
|
|
local grid = self.BossBuffGrids[index]
|
|
if grid then
|
|
grid.GameObject:SetActiveEx(false)
|
|
end
|
|
end
|
|
|
|
--据点BaseBuff
|
|
local baseBuffIds = XDataCenter.StrongholdManager.GetGroupBaseBuffIds(groupId)
|
|
local showBaseBuff = #baseBuffIds > 0
|
|
self.TxtBaseBuff.gameObject:SetActiveEx(showBaseBuff)
|
|
self.PanelBaseBuff.gameObject:SetActiveEx(showBaseBuff)
|
|
|
|
local isBossBuff = false
|
|
for index, buffId in ipairs(baseBuffIds) do
|
|
local grid = self.BaseBuffGrids[index]
|
|
if not grid then
|
|
local go = index == 1 and self.GridBaseBuff or CSUnityEngineObjectInstantiate(self.GridBaseBuff, self.PanelBaseBuff)
|
|
grid = XUiGridStrongholdBuff.New(go, nil, self.SkipCb)
|
|
self.BaseBuffGrids[index] = grid
|
|
end
|
|
|
|
grid:Refresh(buffId, isBossBuff)
|
|
grid.GameObject:SetActiveEx(true)
|
|
end
|
|
|
|
for index = #baseBuffIds + 1, #self.BaseBuffGrids do
|
|
local grid = self.BaseBuffGrids[index]
|
|
if grid then
|
|
grid.GameObject:SetActiveEx(false)
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
function XUiStrongholdDetail:UpdateEndurance()
|
|
local groupId = self.GroupId
|
|
local costEndurance = XDataCenter.StrongholdManager.GetGroupCostEndurance(groupId)
|
|
local curEndurance = XDataCenter.StrongholdManager.GetCurEndurance()
|
|
self.TxtEndurance.text = costEndurance .. "/" .. curEndurance
|
|
end
|
|
|
|
function XUiStrongholdDetail:UpdateSupport()
|
|
local groupId = self.GroupId
|
|
local isActive = XDataCenter.StrongholdManager.CheckGroupSupportAcitve(groupId)
|
|
self.BtnAssitantBuff:SetDisable(not isActive)
|
|
end
|
|
|
|
function XUiStrongholdDetail:AutoAddListener()
|
|
self.BtnClose.CallBack = function() self:OnClickBtnClose() end
|
|
self.BtnEnter.CallBack = function() self:OnClickBtnEnter() end
|
|
self.BtnAssitantBuff.CallBack = function() self:OnClickBtnAssitantBuff() end
|
|
end
|
|
|
|
function XUiStrongholdDetail:OnClickBtnClose()
|
|
self:Close()
|
|
if self.CloseCb then self.CloseCb() end
|
|
end
|
|
|
|
function XUiStrongholdDetail:OnClickBtnEnter()
|
|
local groupId = self.GroupId
|
|
|
|
local btnFunc = function()
|
|
self:Close()
|
|
if self.CloseCb then self.CloseCb() end
|
|
XLuaUiManager.Open("UiStrongholdDeploy", groupId)
|
|
end
|
|
|
|
--有关卡进度的时候:作战开始/主界面会保存当前对其他梯队的修改,返回会触发撤退的二次确认弹窗
|
|
local fightingGroupId = XDataCenter.StrongholdManager.CheckAnyGroupHasFinishedStage()
|
|
if XTool.IsNumberValid(fightingGroupId)
|
|
and not XDataCenter.StrongholdManager.CheckGroupHasFinishedStage(groupId)
|
|
then
|
|
local title = CSXTextManagerGetText("StrongholdTeamRestartConfirmTitle")
|
|
local content = CSXTextManagerGetText("StrongholdTeamRestartConfirmContentOther", XStrongholdConfigs.GetGroupName(fightingGroupId))
|
|
local callFunc = function()
|
|
XDataCenter.StrongholdManager.ResetStrongholdGroupRequest(fightingGroupId, btnFunc)
|
|
end
|
|
XUiManager.DialogTip(title, content, XUiManager.DialogType.Normal, nil, callFunc)
|
|
else
|
|
btnFunc()
|
|
end
|
|
end
|
|
|
|
function XUiStrongholdDetail:OnClickBtnAssitantBuff()
|
|
local groupId = self.GroupId
|
|
XDataCenter.StrongholdManager.OpenUiSupport(groupId)
|
|
end |