forked from endernon/PGRData
116 lines
No EOL
5 KiB
Lua
116 lines
No EOL
5 KiB
Lua
local XUiBabelTowerSupportChoice = XClass(nil, "XUiBabelTowerSupportChoice")
|
|
local UiButtonState = CS.UiButtonState
|
|
local XUiGridBabelChallengeItem = require("XUi/XUiFubenBabelTower/XUiGridBabelChallengeItem")
|
|
|
|
function XUiBabelTowerSupportChoice:Ctor(ui)
|
|
self.GameObject = ui.gameObject
|
|
self.Transform = ui.transform
|
|
self.name = "XUiBabelTowerSupportChoice"
|
|
|
|
XTool.InitUiObject(self)
|
|
self.SupportItemList = {}
|
|
self.SupportBtnCompList = {}
|
|
end
|
|
|
|
function XUiBabelTowerSupportChoice:Init(uiRoot)
|
|
self.UiRoot = uiRoot
|
|
end
|
|
|
|
function XUiBabelTowerSupportChoice:SetItemData(itemData)
|
|
self.BuffGoupDatas = itemData
|
|
self.BuffGroupId = itemData.BuffGroupId
|
|
self.GuideId = itemData.GuideId
|
|
self.StageId = itemData.StageId
|
|
self.BuffGroupDetails = XFubenBabelTowerConfigs.GetBabelBuffGroupConfigs(self.BuffGroupId)
|
|
self.BuffGroupTemplate = XFubenBabelTowerConfigs.GetBabelTowerBuffGroupTemplate(self.BuffGroupId)
|
|
self.TxtSupportName.text = self.BuffGroupDetails.Name
|
|
self:InitSupportList()
|
|
self:UpdateGridChoiceState(self.UiRoot:GetAvailableSupportPoint())
|
|
end
|
|
|
|
function XUiBabelTowerSupportChoice:InitSupportList()
|
|
for i=1, #self.BuffGroupTemplate.BuffId do
|
|
local buffId = self.BuffGroupTemplate.BuffId[i]
|
|
local buffTemplate = XFubenBabelTowerConfigs.GetBabelTowerBuffTemplate(buffId)
|
|
local buffConfigs = XFubenBabelTowerConfigs.GetBabelBuffConfigs(buffId)
|
|
if not self.SupportItemList[i] then
|
|
local go = CS.UnityEngine.Object.Instantiate(self.GridChallenge)
|
|
go.transform:SetParent(self.GridContent.transform, false)
|
|
self.SupportItemList[i] = XUiGridBabelChallengeItem.New(go, self, i, XFubenBabelTowerConfigs.TYPE_SUPPORT)
|
|
end
|
|
self.SupportItemList[i].GameObject:SetActiveEx(true)
|
|
self.SupportItemList[i]:UpdateBuff(buffTemplate, buffConfigs, i, XFubenBabelTowerConfigs.TYPE_SUPPORT)
|
|
self.SupportBtnCompList[i] = self.SupportItemList[i]:GetXUiButtonComp()
|
|
end
|
|
|
|
self.GridContent:Init(self.SupportBtnCompList, function(index) self:OnSupportChoiceItemClick(index) end)
|
|
self.GridContent.CanDisSelect = true
|
|
self.GridContent.CurSelectId = self.BuffGoupDatas.CurSelectId
|
|
|
|
for i= #self.BuffGroupTemplate.BuffId + 1, #self.SupportItemList do
|
|
self.SupportItemList[i].GameObject:SetActiveEx(false)
|
|
end
|
|
end
|
|
|
|
-- 保存更新buff选中状态
|
|
function XUiBabelTowerSupportChoice:OnSupportChoiceItemClick(index)
|
|
-- 取消选中
|
|
-- 选中
|
|
-- 点数不足不可选中
|
|
|
|
local lastSelctBuffId = self.BuffGoupDatas.SelectedBuffId
|
|
local currentSelectBuffId = self.BuffGroupTemplate.BuffId[index]
|
|
if self.BuffGoupDatas.SelectedBuffId == currentSelectBuffId then
|
|
|
|
self.BuffGoupDatas.SelectedBuffId = nil
|
|
self.BuffGoupDatas.CurSelectId = -1
|
|
self.UiRoot:UpdateChoosedChallengeDatas(self.BuffGroupId, self.BuffGoupDatas.SelectedBuffId)
|
|
else
|
|
|
|
local curbuffTemplate = XFubenBabelTowerConfigs.GetBabelTowerBuffTemplate(currentSelectBuffId)
|
|
local lastPointSub = 0
|
|
if lastSelctBuffId then
|
|
local lastbuffTemplate = XFubenBabelTowerConfigs.GetBabelTowerBuffTemplate(lastSelctBuffId)
|
|
lastPointSub = lastbuffTemplate.PointSub
|
|
end
|
|
if curbuffTemplate.PointSub > self.UiRoot:GetAvailableSupportPoint() + lastPointSub then return end
|
|
|
|
self.BuffGoupDatas.SelectedBuffId = currentSelectBuffId
|
|
self.BuffGoupDatas.CurSelectId = index
|
|
self.UiRoot:UpdateChoosedChallengeDatas(self.BuffGroupId, self.BuffGoupDatas.SelectedBuffId)
|
|
end
|
|
end
|
|
|
|
function XUiBabelTowerSupportChoice:GetBuffSelectStatus(buffId)
|
|
if not self.BuffGoupDatas then return false end
|
|
return self.BuffGoupDatas.SelectedBuffId == buffId
|
|
end
|
|
|
|
function XUiBabelTowerSupportChoice:IsBuffListOverCount()
|
|
if not self.BuffGoupDatas then return false end
|
|
return self.BuffGoupDatas.IsOverCount
|
|
end
|
|
|
|
-- 更新未选中buff可选状态
|
|
function XUiBabelTowerSupportChoice:UpdateGridChoiceState(availableSupportPoint)
|
|
if self.BuffGoupDatas.SelectedBuffId then
|
|
local lastBuffTemplate = XFubenBabelTowerConfigs.GetBabelTowerBuffTemplate(self.BuffGoupDatas.SelectedBuffId)
|
|
availableSupportPoint = availableSupportPoint + lastBuffTemplate.PointSub
|
|
end
|
|
self.GridContent.CurSelectId = self.BuffGoupDatas.CurSelectId
|
|
for i=1, #self.BuffGroupTemplate.BuffId do
|
|
local buffId = self.BuffGroupTemplate.BuffId[i]
|
|
local buffTemplate = XFubenBabelTowerConfigs.GetBabelTowerBuffTemplate(buffId)
|
|
|
|
-- 没有被选中的
|
|
if not self:GetBuffSelectStatus(buffId) and self.SupportBtnCompList[i] then
|
|
local btnStatus = (availableSupportPoint >= buffTemplate.PointSub) and UiButtonState.Normal or UiButtonState.Disable
|
|
self.SupportBtnCompList[i]:SetButtonState(btnStatus)
|
|
self.SupportItemList[i]:ShowOverCount(false)
|
|
else
|
|
self.SupportItemList[i]:ShowOverCount(self:IsBuffListOverCount())
|
|
end
|
|
end
|
|
end
|
|
|
|
return XUiBabelTowerSupportChoice |