forked from endernon/PGRData
142 lines
No EOL
4.8 KiB
Lua
142 lines
No EOL
4.8 KiB
Lua
local CONDITION_COLOR = {
|
|
[true] = CS.UnityEngine.Color.black,
|
|
[false] = CS.UnityEngine.Color.red,
|
|
}
|
|
|
|
local XUiRepeatChallengeEnter = XLuaUiManager.Register(XLuaUi, "UiRepeatChallengeEnter")
|
|
|
|
function XUiRepeatChallengeEnter:OnAwake()
|
|
self:AutoAddListener()
|
|
self.GridCommon.gameObject:SetActive(false)
|
|
end
|
|
|
|
function XUiRepeatChallengeEnter:OnStart(stage)
|
|
self.Stage = stage
|
|
self.StageId = stage.StageId
|
|
self.GridList = {}
|
|
self:ChangeChallengeCount(1)
|
|
end
|
|
|
|
function XUiRepeatChallengeEnter:OnEnable()
|
|
self:Refresh()
|
|
end
|
|
|
|
function XUiRepeatChallengeEnter:Refresh()
|
|
self:UpdateRewards()
|
|
end
|
|
|
|
function XUiRepeatChallengeEnter:ChangeChallengeCount(newCount)
|
|
local stageId = self.StageId
|
|
if not XDataCenter.FubenManager.CheckChallengeCount(stageId, newCount) then
|
|
return
|
|
end
|
|
|
|
self.ChallengeCount = newCount
|
|
self.TxtChallengeNum.text = newCount
|
|
self.TxtRewardNum.text = "X" .. newCount
|
|
|
|
local canSub = XDataCenter.FubenManager.CheckChallengeCount(stageId, newCount - 1)
|
|
self.BtnSub.gameObject:SetActiveEx(canSub)
|
|
self.ImgCantSub.gameObject:SetActiveEx(not canSub)
|
|
|
|
local canAdd = XDataCenter.FubenManager.CheckChallengeCount(stageId, newCount + 1)
|
|
self.BtnAdd.gameObject:SetActiveEx(canAdd)
|
|
self.ImgCantAdd.gameObject:SetActiveEx(not canAdd)
|
|
|
|
local actionPoint = XDataCenter.FubenManager.GetRequireActionPoint(stageId)
|
|
self.TxtATNums.text = actionPoint * newCount
|
|
|
|
local exConsumeId, exConsumeNum = XDataCenter.FubenManager.GetStageExCost(stageId)
|
|
if exConsumeId ~= 0 and exConsumeNum ~= 0 then
|
|
local exHaveNum = XDataCenter.ItemManager.GetCount(exConsumeId)
|
|
self.TxtCostNum.color = CONDITION_COLOR[exHaveNum >= exConsumeNum]
|
|
self.TxtCostNum.text = exConsumeNum * newCount
|
|
self.RawImgCostIcon:SetRawImage(XDataCenter.ItemManager.GetItemIcon(exConsumeId))
|
|
self.PanelCostEx.gameObject:SetActiveEx(true)
|
|
else
|
|
self.PanelCostEx.gameObject:SetActiveEx(false)
|
|
end
|
|
end
|
|
|
|
function XUiRepeatChallengeEnter:UpdateRewards()
|
|
local stageId = self.StageId
|
|
local cfg = XDataCenter.FubenManager.GetStageLevelControl(stageId)
|
|
local rewardId = cfg and cfg.FinishRewardShow
|
|
|
|
if not rewardId or rewardId == 0 then
|
|
self.PanelRewards.gameObject:SetActiveEx(false)
|
|
return
|
|
else
|
|
self.PanelRewards.gameObject:SetActiveEx(true)
|
|
end
|
|
|
|
local rewards = XRewardManager.GetRewardListNotCount(rewardId)
|
|
if rewards then
|
|
for i, item in ipairs(rewards) do
|
|
local grid
|
|
if self.GridList[i] then
|
|
grid = self.GridList[i]
|
|
else
|
|
local ui = CS.UnityEngine.Object.Instantiate(self.GridCommon)
|
|
grid = XUiGridCommon.New(self, ui)
|
|
grid.Transform:SetParent(self.PanelRewards, false)
|
|
self.GridList[i] = grid
|
|
end
|
|
grid:Refresh(item)
|
|
grid.GameObject:SetActive(true)
|
|
end
|
|
end
|
|
|
|
local rewardsCount = 0
|
|
if rewards then
|
|
rewardsCount = #rewards
|
|
end
|
|
|
|
for j = 1, #self.GridList do
|
|
if j > rewardsCount then
|
|
self.GridList[j].GameObject:SetActive(false)
|
|
end
|
|
end
|
|
end
|
|
|
|
function XUiRepeatChallengeEnter:AutoAddListener()
|
|
self:RegisterClickEvent(self.BtnEnter, self.OnBtnEnterClick)
|
|
self:RegisterClickEvent(self.BtnClose, self.OnBtnCloseClick)
|
|
self:RegisterClickEvent(self.BtnSub, self.OnClickBtnSub)
|
|
self:RegisterClickEvent(self.BtnMax, self.OnClickBtnMax)
|
|
self:RegisterClickEvent(self.BtnAdd, self.OnClickBtnAdd)
|
|
end
|
|
|
|
function XUiRepeatChallengeEnter:OnBtnCloseClick()
|
|
self:Close()
|
|
end
|
|
|
|
function XUiRepeatChallengeEnter:OnBtnEnterClick()
|
|
CS.XAudioManager.PlaySound(XSoundManager.UiBasicsMusic.Main_huge)
|
|
self:Close()
|
|
if XDataCenter.FubenManager.CheckPreFight(self.Stage, self.ChallengeCount) then
|
|
if XTool.USENEWBATTLEROOM then
|
|
XLuaUiManager.Open("UiBattleRoleRoom", self.StageId, nil, {
|
|
EnterFight = function(proxy, team, stageId, challengeCount, isAssist)
|
|
XDataCenter.FubenDailyManager.SetFubenDailyRecord(stageId)
|
|
proxy.Super.EnterFight(proxy, team, stageId, challengeCount, isAssist)
|
|
end
|
|
}, self.ChallengeCount)
|
|
else
|
|
local data = {ChallengeCount = self.ChallengeCount}
|
|
XLuaUiManager.Open("UiNewRoomSingle", self.StageId, data)
|
|
end
|
|
end
|
|
end
|
|
|
|
function XUiRepeatChallengeEnter:OnClickBtnSub()
|
|
self:ChangeChallengeCount(self.ChallengeCount - 1)
|
|
end
|
|
|
|
function XUiRepeatChallengeEnter:OnClickBtnAdd()
|
|
self:ChangeChallengeCount(self.ChallengeCount + 1)
|
|
end
|
|
|
|
function XUiRepeatChallengeEnter:OnClickBtnMax()
|
|
self:ChangeChallengeCount(XDataCenter.FubenManager.GetStageMaxChallengeCount(self.StageId))
|
|
end |