Initial version - 1.2.0.60
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
This commit is contained in:
@@ -0,0 +1,353 @@
|
||||
local FixedRoguelikeLevelCtrl = class("FixedRoguelikeLevelCtrl", BaseCtrl)
|
||||
local Actor2DManager = require("Game.Actor2D.Actor2DManager")
|
||||
local mapToggle = {
|
||||
[1] = GameEnum.diffculty.Diffculty_1,
|
||||
[2] = GameEnum.diffculty.Diffculty_2,
|
||||
[3] = GameEnum.diffculty.Diffculty_3,
|
||||
[4] = GameEnum.diffculty.Diffculty_4
|
||||
}
|
||||
FixedRoguelikeLevelCtrl._mapNodeConfig = {
|
||||
bgLevelInfo = {sNodeName = "----Bg----"},
|
||||
rawImgActor2D = {
|
||||
sNodeName = "----Actor2D----",
|
||||
sComponentName = "RawImage"
|
||||
},
|
||||
rt_RoguelkeSelect = {},
|
||||
rt_RoguelkeInfo = {},
|
||||
btnGo = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Go"
|
||||
},
|
||||
svRogulike = {
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
imgElementInfo = {sComponentName = "Image", nCount = 3},
|
||||
TMPRoguelikeDesc = {sComponentName = "TMP_Text"},
|
||||
TMPRoguelikeName = {sComponentName = "TMP_Text"},
|
||||
txtRecommendLevel = {sComponentName = "TMP_Text"},
|
||||
ImgRoguelikeInfo = {sComponentName = "Image"},
|
||||
item = {
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl",
|
||||
nCount = 6
|
||||
},
|
||||
ItemBtn = {
|
||||
sComponentName = "UIButton",
|
||||
nCount = 6,
|
||||
callback = "OnBtnClick_RewardItem"
|
||||
},
|
||||
tog = {
|
||||
sComponentName = "UIButton",
|
||||
nCount = 4,
|
||||
callback = "OnBtnClick_Tog"
|
||||
},
|
||||
imgLockMask = {
|
||||
sComponentName = "Button",
|
||||
callback = "OnBtnClick_TogTips",
|
||||
nCount = 4
|
||||
},
|
||||
togCtrl = {
|
||||
sNodeName = "tog",
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateToggleCtrl",
|
||||
nCount = 4
|
||||
},
|
||||
TopBarPanel = {
|
||||
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
|
||||
},
|
||||
AnimCtrl = {
|
||||
sComponentName = "Animator",
|
||||
sNodeName = "----SafeAreaRoot----"
|
||||
},
|
||||
goEnemyInfo = {
|
||||
sCtrlName = "Game.UI.MainlineEx.MainlineMonsterInfoCtrl"
|
||||
},
|
||||
goRewardList = {
|
||||
sCtrlName = "Game.UI.MainlineEx.RewardListCtrl"
|
||||
},
|
||||
btnEnemyInfo = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_EnemyInfo"
|
||||
},
|
||||
btnAllReward = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_RewardList"
|
||||
},
|
||||
txtEnergyCount = {sComponentName = "TMP_Text"}
|
||||
}
|
||||
FixedRoguelikeLevelCtrl._mapEventConfig = {
|
||||
[EventId.UIHomeConfirm] = "OnEvent_Home",
|
||||
[EventId.UIBackConfirm] = "OnEvent_Back"
|
||||
}
|
||||
function FixedRoguelikeLevelCtrl:Awake()
|
||||
self:RefreshTogText()
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:FadeIn()
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:FadeOut()
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:OnEnable()
|
||||
local tbParam = self:GetPanelParam()
|
||||
if 0 < #tbParam then
|
||||
if tbParam[3] == nil then
|
||||
end
|
||||
self.bJumpto = tbParam[3]
|
||||
self.nJumptoHard = tbParam[1] == nil and 0 or tbParam[1]
|
||||
self.nJumptoGroup = tbParam[2] == nil and 0 or tbParam[2]
|
||||
end
|
||||
self._mapNode.rt_RoguelkeSelect:SetActive(true)
|
||||
self._mapNode.rt_RoguelkeInfo:SetActive(false)
|
||||
self._mapNode.bgLevelInfo:SetActive(false)
|
||||
self._mapNode.rawImgActor2D.gameObject:SetActive(true)
|
||||
self.curState = 1
|
||||
self.curRogueHard = GameEnum.diffculty.Diffculty_1
|
||||
self.nCurGroupId = 0
|
||||
self.mapAllRoguelike = {}
|
||||
self.tbRoguelikeGroup = {}
|
||||
local forEachRoguelike = function(mapData)
|
||||
if self.mapAllRoguelike[mapData.GroupId] == nil then
|
||||
self.mapAllRoguelike[mapData.GroupId] = {}
|
||||
table.insert(self.tbRoguelikeGroup, mapData.GroupId)
|
||||
end
|
||||
self.mapAllRoguelike[mapData.GroupId][mapData.Difficulty] = mapData
|
||||
end
|
||||
ForEachTableLine(DataTable.FixedRoguelike, forEachRoguelike)
|
||||
local sortGroup = function(a, b)
|
||||
local mapDataA = ConfigTable.GetData("FixedRoguelikeGroup", a)
|
||||
local mapDataB = ConfigTable.GetData("FixedRoguelikeGroup", b)
|
||||
return mapDataA.Sort < mapDataB.Sort
|
||||
end
|
||||
table.sort(self.tbRoguelikeGroup, sortGroup)
|
||||
self._mapNode.svRogulike:Init(#self.tbRoguelikeGroup, self, self.RefreshGrid, self.OnBtnClick_Grid)
|
||||
if self.nJumptoGroup ~= 0 and self.nJumptoGroup ~= nil then
|
||||
if self.nJumptoHard ~= 0 and self.nJumptoHard ~= nil then
|
||||
self:OpenJumptoHard()
|
||||
else
|
||||
self:OpenJumptoGroup()
|
||||
end
|
||||
end
|
||||
Actor2DManager.SetBoardNPC2D(self:GetPanelId(), self._mapNode.rawImgActor2D, 9102)
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:OnDisable()
|
||||
Actor2DManager.UnsetBoardNPC2D()
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:OnDestroy()
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:OnRelease()
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:RefreshTogText()
|
||||
for k, v in pairs(mapToggle) do
|
||||
self._mapNode.togCtrl[k]:SetText(ConfigTable.GetUIText("Diffculty_" .. k))
|
||||
end
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:RefreshGrid(goGrid, gridIndex)
|
||||
local nIdx = gridIndex + 1
|
||||
local mapRoguelikeGroupId = self.tbRoguelikeGroup[nIdx]
|
||||
local mapRoguelike = self.mapAllRoguelike[mapRoguelikeGroupId][GameEnum.diffculty.Diffculty_1]
|
||||
local mapRoguelikeGroup = ConfigTable.GetData("FixedRoguelikeGroup", mapRoguelikeGroupId)
|
||||
if mapRoguelike == nil then
|
||||
return
|
||||
end
|
||||
local tmpName = goGrid.transform:Find("btnGrid/AnimRoot/TMPRogelikeName"):GetComponent("TMP_Text")
|
||||
local imgLevelImage = goGrid.transform:Find("btnGrid/AnimRoot/imgLevelImage"):GetComponent("Image")
|
||||
local goLockMask = goGrid.transform:Find("btnGrid/AnimRoot/goMask").gameObject
|
||||
local bLock = PlayerData.PlayerFixedRoguelikeData:IsRoguelikeUnlock(mapRoguelike.Id)
|
||||
goLockMask:SetActive(not bLock)
|
||||
NovaAPI.SetTMPText(tmpName, mapRoguelikeGroup.Name)
|
||||
self:SetPngSprite(imgLevelImage, mapRoguelikeGroup.Episode)
|
||||
for i = 1, 3 do
|
||||
local sRtName = "imgElement" .. i
|
||||
local imgElement = goGrid.transform:Find("btnGrid/AnimRoot/rtElements/" .. sRtName):GetComponent("Image")
|
||||
if mapRoguelikeGroup.EET == nil or mapRoguelikeGroup.EET[i] == nil then
|
||||
imgElement.gameObject:SetActive(false)
|
||||
else
|
||||
imgElement.gameObject:SetActive(true)
|
||||
self:SetAtlasSprite(imgElement, "12_rare", AllEnum.ElementIconType.Icon .. mapRoguelikeGroup.EET[i])
|
||||
end
|
||||
end
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:OpenJumptoGroup()
|
||||
self.curState = 2
|
||||
self._mapNode.AnimCtrl:Play("rougelikelevelselect_go_info")
|
||||
self._mapNode.bgLevelInfo:SetActive(true)
|
||||
self._mapNode.rawImgActor2D.gameObject:SetActive(false)
|
||||
self.nCurGroupId = self.nJumptoGroup
|
||||
for index, hardBtn in ipairs(self._mapNode.tog) do
|
||||
local bActive = self.mapAllRoguelike[self.nCurGroupId][mapToggle[index]] ~= nil
|
||||
hardBtn.gameObject:SetActive(bActive)
|
||||
if bActive then
|
||||
local nRoguelikeId = self.mapAllRoguelike[self.nCurGroupId][mapToggle[index]].Id
|
||||
local bLock = PlayerData.PlayerFixedRoguelikeData:IsRoguelikeUnlock(nRoguelikeId)
|
||||
hardBtn.interactable = bLock
|
||||
self._mapNode.imgLockMask[index].gameObject:SetActive(not bLock)
|
||||
self._mapNode.imgLockMask[index].interactable = not bLock
|
||||
end
|
||||
end
|
||||
self:RefreshRoguelikeInfo(self.nCurGroupId, GameEnum.diffculty.Diffculty_1)
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:OpenJumptoHard()
|
||||
self.curState = 2
|
||||
self._mapNode.AnimCtrl:Play("rougelikelevelselect_go_info")
|
||||
self._mapNode.bgLevelInfo:SetActive(true)
|
||||
self._mapNode.rawImgActor2D.gameObject:SetActive(false)
|
||||
self.nCurGroupId = self.nJumptoGroup
|
||||
local nJumptoRoguelikeId = self.mapAllRoguelike[self.nCurGroupId][self.nJumptoHard].Id
|
||||
if not PlayerData.PlayerFixedRoguelikeData:IsRoguelikeUnlock(nJumptoRoguelikeId) then
|
||||
self.nJumptoHard = GameEnum.diffculty.Diffculty_1
|
||||
end
|
||||
for index, hardBtn in ipairs(self._mapNode.tog) do
|
||||
local bActive = self.mapAllRoguelike[self.nCurGroupId][mapToggle[index]] ~= nil
|
||||
hardBtn.gameObject:SetActive(bActive)
|
||||
if bActive then
|
||||
local nRoguelikeId = self.mapAllRoguelike[self.nCurGroupId][mapToggle[index]].Id
|
||||
local bLock = PlayerData.PlayerFixedRoguelikeData:IsRoguelikeUnlock(nRoguelikeId)
|
||||
hardBtn.interactable = bLock
|
||||
self._mapNode.imgLockMask[index].gameObject:SetActive(not bLock)
|
||||
self._mapNode.imgLockMask[index].interactable = not bLock
|
||||
end
|
||||
end
|
||||
self:RefreshRoguelikeInfo(self.nCurGroupId, self.nJumptoHard)
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:OnBtnClick_Grid(goGrid, gridIndex)
|
||||
local nIdx = gridIndex + 1
|
||||
local nRoguelikeGroupId = self.tbRoguelikeGroup[nIdx]
|
||||
local mapRoguelike = self.mapAllRoguelike[nRoguelikeGroupId][GameEnum.diffculty.Diffculty_1]
|
||||
local bGridUnlock = PlayerData.PlayerFixedRoguelikeData:IsRoguelikeUnlock(mapRoguelike.Id)
|
||||
if not bGridUnlock then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("LevelSelect_NotOpen"))
|
||||
return
|
||||
end
|
||||
self.curState = 2
|
||||
self._mapNode.AnimCtrl:Play("rougelikelevelselect_go_info")
|
||||
self._mapNode.bgLevelInfo:SetActive(true)
|
||||
self._mapNode.rawImgActor2D.gameObject:SetActive(false)
|
||||
self.nCurGroupId = nRoguelikeGroupId
|
||||
self._panel._tbParam[2] = nRoguelikeGroupId
|
||||
local nHard = PlayerData.PlayerFixedRoguelikeData:GetMaxDifficult(self.nCurGroupId)
|
||||
for index, hardBtn in ipairs(self._mapNode.tog) do
|
||||
local bActive = self.mapAllRoguelike[nRoguelikeGroupId][mapToggle[index]] ~= nil
|
||||
hardBtn.gameObject:SetActive(bActive)
|
||||
if bActive then
|
||||
local nRoguelikeId = self.mapAllRoguelike[self.nCurGroupId][mapToggle[index]].Id
|
||||
local bLock = PlayerData.PlayerFixedRoguelikeData:IsRoguelikeUnlock(nRoguelikeId)
|
||||
hardBtn.interactable = bLock
|
||||
self._mapNode.imgLockMask[index].gameObject:SetActive(not bLock)
|
||||
self._mapNode.imgLockMask[index].interactable = not bLock
|
||||
end
|
||||
end
|
||||
self:RefreshRoguelikeInfo(nRoguelikeGroupId, nHard)
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:RefreshRoguelikeInfo(nGroupId, nHard)
|
||||
for i = 1, 4 do
|
||||
self._mapNode.togCtrl[i]:SetDefault(i == nHard)
|
||||
end
|
||||
self.curRogueHard = nHard
|
||||
self._panel._tbParam[1] = self.curRogueHard
|
||||
local mapRoguelike = self.mapAllRoguelike[nGroupId][nHard]
|
||||
self.curRoguelikeId = mapRoguelike.Id
|
||||
if mapRoguelike == nil then
|
||||
return
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPRoguelikeName, mapRoguelike.Name)
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPRoguelikeDesc, mapRoguelike.Desc)
|
||||
self:SetPngSprite(self._mapNode.ImgRoguelikeInfo, mapRoguelike.Image)
|
||||
local nRequire = mapRoguelike.NeedEnergy
|
||||
local nHas = PlayerData.Base:GetCurEnergy()
|
||||
NovaAPI.SetTMPText(self._mapNode.txtEnergyCount, nRequire)
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtEnergyCount, nRequire > nHas.nEnergy and Red_Unable or Blue_Normal)
|
||||
for i = 1, 3 do
|
||||
if mapRoguelike.EET == nil or mapRoguelike.EET[i] == nil then
|
||||
self._mapNode.imgElementInfo[i].gameObject:SetActive(false)
|
||||
else
|
||||
self._mapNode.imgElementInfo[i].gameObject:SetActive(true)
|
||||
self:SetAtlasSprite(self._mapNode.imgElementInfo[i], "12_rare", AllEnum.ElementIconType.Icon .. mapRoguelike.EET[i])
|
||||
end
|
||||
end
|
||||
local tbReward = decodeJson(mapRoguelike.RewardPreview)
|
||||
self.tbReward = tbReward
|
||||
for index = 1, 6 do
|
||||
self._mapNode.ItemBtn[index].interactable = self.tbAfterReward[index] ~= nil
|
||||
if tbReward[index] ~= nil then
|
||||
self._mapNode.item[index]:SetItem(tbReward[index][1], nil, nil, nil, tbReward[index][3] == 1, tbReward[index][3] == 2)
|
||||
else
|
||||
self._mapNode.item[index]:SetItem(nil)
|
||||
end
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtRecommendLevel, mapRoguelike.Recommend)
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:OnEvent_Back(nPanelId)
|
||||
if self._panel._nPanelId ~= nPanelId then
|
||||
return
|
||||
end
|
||||
if self.bJumpto then
|
||||
EventManager.Hit(EventId.CloesCurPanel)
|
||||
return
|
||||
end
|
||||
if self.curState == 1 then
|
||||
EventManager.Hit(EventId.CloesCurPanel)
|
||||
else
|
||||
self._mapNode.AnimCtrl:Play("rougelikelevelselect_go_list")
|
||||
self._mapNode.bgLevelInfo:SetActive(false)
|
||||
self._mapNode.rawImgActor2D.gameObject:SetActive(true)
|
||||
self.curRogueHard = GameEnum.diffculty.Diffculty_1
|
||||
self.nCurGroupId = 0
|
||||
self.curState = 1
|
||||
self._panel._tbParam[2] = 0
|
||||
self._panel._tbParam[1] = 0
|
||||
end
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:OnEvent_Home(nPanelId)
|
||||
if self._panel._nPanelId ~= nPanelId then
|
||||
return
|
||||
end
|
||||
PanelManager.Home()
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:OnBtnClick_Go()
|
||||
local mapRoguelike = self.mapAllRoguelike[self.nCurGroupId][self.curRogueHard]
|
||||
local nNeedEnergy = mapRoguelike.NeedEnergy
|
||||
local nCurEnergy = PlayerData.Base:GetCurEnergy().nEnergy
|
||||
local OpenPanel = function()
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.MainlineFormation, AllEnum.FormationEnterType.FixedRoguelike, self.curRoguelikeId)
|
||||
end
|
||||
if nNeedEnergy <= nCurEnergy then
|
||||
EventManager.Hit(EventId.SetTransition, 2, OpenPanel)
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("MainlineData_Energy"))
|
||||
end
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:OnBtnClick_Tog(btn)
|
||||
local nHard = table.indexof(self._mapNode.tog, btn:GetComponent("UIButton"))
|
||||
local togIdx = table.indexof(self._mapNode.tog, btn)
|
||||
if nHard == nil then
|
||||
return
|
||||
end
|
||||
if self.curRogueHard ~= nHard then
|
||||
for idx, value in pairs(mapToggle) do
|
||||
if value == self.curRogueHard then
|
||||
self._mapNode.togCtrl[idx]:SetTrigger(false)
|
||||
end
|
||||
end
|
||||
self._mapNode.togCtrl[togIdx]:SetTrigger(true)
|
||||
self:RefreshRoguelikeInfo(self.nCurGroupId, nHard)
|
||||
end
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:OnBtnClick_EnemyInfo(btn)
|
||||
EventManager.Hit("OpenFixedRoguelikeMonsterInfo", self.curRoguelikeId)
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:OnBtnClick_RewardList(btn)
|
||||
local mapLevel = ConfigTable.GetData("FixedRoguelike", self.curRoguelikeId)
|
||||
local tbReward = decodeJson(mapLevel.RewardPreview)
|
||||
self._mapNode.goRewardList:OpenPanel(tbReward)
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:OnBtnClick_RewardItem(btn)
|
||||
local nIdx = table.indexof(self._mapNode.ItemBtn, btn)
|
||||
local mapLevel = ConfigTable.GetData("FixedRoguelike", self.curRoguelikeId)
|
||||
local tbReward = decodeJson(mapLevel.RewardPreview)
|
||||
local rtBtn = btn.transform:Find("AnimRoot")
|
||||
if tbReward[nIdx] ~= nil then
|
||||
local nTid = tbReward[nIdx][1]
|
||||
UTILS.ClickItemGridWithTips(nTid, rtBtn, false, true, false)
|
||||
end
|
||||
end
|
||||
function FixedRoguelikeLevelCtrl:OnBtnClick_TogTips(btn)
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("FixedRoguelike_LimitTips"))
|
||||
end
|
||||
return FixedRoguelikeLevelCtrl
|
||||
@@ -0,0 +1,25 @@
|
||||
local FixedRoguelikeLevelSelectPanel = class("FixedRoguelikeLevelSelectPanel", BasePanel)
|
||||
FixedRoguelikeLevelSelectPanel._tbDefine = {
|
||||
{
|
||||
sPrefabPath = "FRLevelSelectEx/RoguelikeLevelSelect.prefab",
|
||||
sCtrlName = "Game.UI.FixedRoguelikeLevelSelectEx.FixedRoguelikeLevelCtrl"
|
||||
}
|
||||
}
|
||||
function FixedRoguelikeLevelSelectPanel:Awake()
|
||||
end
|
||||
function FixedRoguelikeLevelSelectPanel:OnEnable()
|
||||
end
|
||||
function FixedRoguelikeLevelSelectPanel:OnDisable()
|
||||
end
|
||||
function FixedRoguelikeLevelSelectPanel:OnDestroy()
|
||||
end
|
||||
function FixedRoguelikeLevelSelectPanel:OnRelease()
|
||||
end
|
||||
function FixedRoguelikeLevelSelectPanel:OnAfterEnter()
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
PopUpManager.OpenPopUpPanelByType(GameEnum.PopUpSeqType.FuncUnlock)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
end
|
||||
return FixedRoguelikeLevelSelectPanel
|
||||
@@ -0,0 +1,945 @@
|
||||
local RogueBossSelectCtrl = class("RogueBossSelectCtrl", BaseCtrl)
|
||||
local Actor2DManager = require("Game.Actor2D.Actor2DManager")
|
||||
local mapToggle = {
|
||||
[1] = GameEnum.diffculty.Diffculty_1,
|
||||
[2] = GameEnum.diffculty.Diffculty_2,
|
||||
[3] = GameEnum.diffculty.Diffculty_3,
|
||||
[4] = GameEnum.diffculty.Diffculty_4,
|
||||
[5] = GameEnum.diffculty.Diffculty_5,
|
||||
[6] = GameEnum.diffculty.Diffculty_6,
|
||||
[7] = GameEnum.diffculty.Diffculty_7,
|
||||
[8] = GameEnum.diffculty.Diffculty_8
|
||||
}
|
||||
RogueBossSelectCtrl._mapNodeConfig = {
|
||||
rtBossList = {},
|
||||
rtBossInfo = {},
|
||||
svList = {
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
cgsvList = {
|
||||
sNodeName = "svList",
|
||||
sComponentName = "CanvasGroup"
|
||||
},
|
||||
imgLevelImg = {sComponentName = "Image"},
|
||||
txtSuggestLevel = {sComponentName = "TMP_Text"},
|
||||
TMPRoguelikeName = {sComponentName = "TMP_Text"},
|
||||
TMPRoguelikeDesc = {sComponentName = "TMP_Text"},
|
||||
imgElementInfo = {sComponentName = "Image", nCount = 3},
|
||||
Skill = {
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateSkillCtrl",
|
||||
nCount = 5
|
||||
},
|
||||
btnSkill = {
|
||||
sNodeName = "Skill",
|
||||
sComponentName = "UIButton",
|
||||
nCount = 5,
|
||||
callback = "OnBtnClick_Skill"
|
||||
},
|
||||
item = {
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl",
|
||||
nCount = 5
|
||||
},
|
||||
Task = {sComponentName = "Transform", nCount = 3},
|
||||
rt_Toggle = {},
|
||||
togCtrl = {
|
||||
sNodeName = "tog",
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateToggleCtrl",
|
||||
nCount = 8
|
||||
},
|
||||
tog = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_HardTog",
|
||||
nCount = 8
|
||||
},
|
||||
imgLockMask = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_TogTips",
|
||||
nCount = 8
|
||||
},
|
||||
rt_Targets = {nCount = 8},
|
||||
rt_LockMsg = {nCount = 8},
|
||||
txt_LockMsg = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "RegusBoss_LevelUnLock",
|
||||
nCount = 8
|
||||
},
|
||||
txtLockCondition = {sComponentName = "TMP_Text", nCount = 8},
|
||||
txtTitleSkill = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "RegusBoss_Enemy_Skill"
|
||||
},
|
||||
txtBtnGo = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Maninline_Btn_Go"
|
||||
},
|
||||
TopBarPanel = {
|
||||
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
|
||||
},
|
||||
btnGo = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnClickBtnCrusade"
|
||||
},
|
||||
btnRaid = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnClickBtnRaid"
|
||||
},
|
||||
txtBtnRaid = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Raid_Title_Raid"
|
||||
},
|
||||
TMPRaidUnlockHint = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Raid_Btn_Cond"
|
||||
},
|
||||
btn_item = {
|
||||
sComponentName = "UIButton",
|
||||
nCount = 5,
|
||||
callback = "OnBtnClick_Reward"
|
||||
},
|
||||
goRewardList = {
|
||||
sCtrlName = "Game.UI.MainlineEx.RewardListCtrl"
|
||||
},
|
||||
btnAllReward = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_AllReward"
|
||||
},
|
||||
imgTickets = {sComponentName = "Image"},
|
||||
txtTicketsCount = {sComponentName = "TMP_Text"},
|
||||
txtTitleTarget = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MainBattle_Task"
|
||||
},
|
||||
goBossSelectItem = {
|
||||
nCount = 5,
|
||||
sCtrlName = "Game.UI.FixedRoguelikeLevelSelectEx.RogueBossSelectItemCtrl"
|
||||
},
|
||||
imgRaidUnlockMask = {},
|
||||
btnLeft = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Left"
|
||||
},
|
||||
btnRight = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Right"
|
||||
},
|
||||
BG1 = {sNodeName = "----Bg----", sComponentName = "Image"},
|
||||
FXNormal = {},
|
||||
FXHard = {},
|
||||
BG2 = {sComponentName = "Image"},
|
||||
txtTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "InfinityTower_Recommend_Lv"
|
||||
},
|
||||
txtBuildTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "InfinityTower_Recommend_Construct"
|
||||
},
|
||||
imgBuild = {sComponentName = "Image"},
|
||||
HardCoreSwitch = {},
|
||||
redDotHard = {},
|
||||
txtHardCore = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "RogueBoss_HardCore"
|
||||
},
|
||||
btnHardCoreChange = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_ChangeType"
|
||||
},
|
||||
goBossTick = {},
|
||||
imgBossTickIcon = {sComponentName = "Image"},
|
||||
txtBossTickCount = {sComponentName = "TMP_Text"},
|
||||
bossTickTip = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "TopBar_BossTick_Tip"
|
||||
},
|
||||
btnBossTick = {
|
||||
sNodeName = "goBossTickBg",
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_BossTick"
|
||||
},
|
||||
goBossTickInfo = {},
|
||||
imgBossTickIconInfo = {sComponentName = "Image"},
|
||||
txtBossTickCountInfo = {sComponentName = "TMP_Text"},
|
||||
btnBossTickInfo = {
|
||||
sNodeName = "goBossTickBgInfo",
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_BossTick"
|
||||
},
|
||||
goOpen = {},
|
||||
goOff = {},
|
||||
titleReward = {},
|
||||
imgReward = {},
|
||||
goReward = {},
|
||||
goTask = {},
|
||||
handInfoIcon = {},
|
||||
imgRewardHand = {},
|
||||
goRewardHand = {},
|
||||
txtTitleHand = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Level_Award"
|
||||
},
|
||||
txtTitleNormal = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Level_Award"
|
||||
},
|
||||
txtAllRewardNormal = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Mall_Btn_All"
|
||||
},
|
||||
txtAllRewardHand = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Mall_Btn_All"
|
||||
},
|
||||
btnAllRewardHand = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_AllReward"
|
||||
},
|
||||
btn_itemHand = {
|
||||
sComponentName = "UIButton",
|
||||
nCount = 5,
|
||||
callback = "OnBtnClick_Reward"
|
||||
},
|
||||
itemHand = {
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl",
|
||||
nCount = 5
|
||||
},
|
||||
btn_itemHand_Extra = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_ExtraDropReward"
|
||||
},
|
||||
itemHandExtra = {
|
||||
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl"
|
||||
},
|
||||
gridTemp = {},
|
||||
ContentTemp = {sComponentName = "Transform"},
|
||||
ListConditions = {},
|
||||
btnLock = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Lock"
|
||||
},
|
||||
txtBtnLock = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "RegusBoss_SatisfyConditions_UnLock"
|
||||
},
|
||||
Conditions_ = {nCount = 2}
|
||||
}
|
||||
RogueBossSelectCtrl._mapEventConfig = {
|
||||
[EventId.UIHomeConfirm] = "OnEvent_Home",
|
||||
[EventId.UIBackConfirm] = "OnEvent_Back",
|
||||
[EventId.UpdateEnergy] = "OnEvent_UpdateEnergy",
|
||||
[EventId.UpdateWorldClass] = "OnEvent_UpdateWorldClass",
|
||||
SelectRogueBossItem = "OnEvent_SelectRogueBossItem",
|
||||
StartLoopScrollSnap = "OnEvent_StartLoopScrollSnap",
|
||||
StartDragLoopScrollSnap = "OnEvent_StartDragLoopScrollSnap"
|
||||
}
|
||||
RogueBossSelectCtrl._mapRedDotConfig = {
|
||||
[RedDotDefine.Map_RogueBoss] = {sNodeName = "redDotHard"}
|
||||
}
|
||||
function RogueBossSelectCtrl:Awake()
|
||||
self.mapAllLevel = {}
|
||||
local forEachRegoinBossLevel = function(mapData)
|
||||
if self.mapAllLevel[mapData.RegionBossId] == nil then
|
||||
self.mapAllLevel[mapData.RegionBossId] = {}
|
||||
end
|
||||
self.mapAllLevel[mapData.RegionBossId][mapData.Difficulty] = mapData
|
||||
end
|
||||
ForEachTableLine(DataTable.RegionBossLevel, forEachRegoinBossLevel)
|
||||
self.isHandCoreType = PlayerData.RogueBoss:GetSelectRegionType()
|
||||
local worldClass = PlayerData.Base:GetWorldClass()
|
||||
local openClass = ConfigTable.GetData("OpenFunc", GameEnum.OpenFuncType.RegionBossChallenge).NeedWorldClass
|
||||
self._mapNode.HardCoreSwitch:SetActive(worldClass >= openClass)
|
||||
end
|
||||
function RogueBossSelectCtrl:FadeIn()
|
||||
end
|
||||
function RogueBossSelectCtrl:FadeOut()
|
||||
end
|
||||
function RogueBossSelectCtrl:OnEnable()
|
||||
PlayerData.RogueBoss:SetIsWeeklyCopies(false)
|
||||
self.animatorRoot = self.gameObject:GetComponent("Animator")
|
||||
local tbParam = self:GetPanelParam()
|
||||
self.nJumpToGroup = 0
|
||||
self.nJumpToHard = 0
|
||||
self.bJumpTo = false
|
||||
if nil ~= next(tbParam) then
|
||||
if tbParam[3] == nil then
|
||||
end
|
||||
self.bJumpTo = tbParam[3]
|
||||
self.nJumpToGroup = tbParam[2] == nil and 0 or tbParam[2]
|
||||
if 0 ~= self.nJumpToGroup then
|
||||
local closeGuide = function()
|
||||
if PlayerData.Guide:CheckInGuideGroup(16) then
|
||||
EventManager.Hit("RogueBossGuideFinish")
|
||||
end
|
||||
end
|
||||
self:AddTimer(1, 0.2, closeGuide, true, true, true, nil)
|
||||
local nMaxHard = PlayerData.RogueBoss:GetMaxHard(self.nJumpToGroup)
|
||||
local nJumpToHard = (nil == tbParam[1] or 0 == tbParam[1]) and nMaxHard or tbParam[1]
|
||||
if self.bJumpTo then
|
||||
self.nJumpToHard = nJumpToHard
|
||||
else
|
||||
local nLastMaxHard = PlayerData.RogueBoss:GetLastMaxHard(self.nJumpToGroup)
|
||||
if 0 == nLastMaxHard then
|
||||
self.nJumpToHard = nJumpToHard
|
||||
elseif nLastMaxHard == nMaxHard then
|
||||
self.nJumpToHard = nJumpToHard
|
||||
else
|
||||
self.nJumpToHard = nMaxHard
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
print("jump:" .. self.nJumpToHard .. " " .. self.nJumpToGroup)
|
||||
self._mapNode.rtBossList:SetActive(true)
|
||||
self._mapNode.rtBossInfo:SetActive(false)
|
||||
self.curState = 1
|
||||
self:SetRegionType()
|
||||
local waitCallback = function()
|
||||
self:SetTopBar()
|
||||
end
|
||||
self:AddTimer(1, 0.1, waitCallback, true, true, true, nil)
|
||||
self:SetSvList()
|
||||
self:SetBgImg()
|
||||
if self.nJumpToGroup ~= 0 and self.nJumpToGroup ~= nil then
|
||||
self.animatorRoot.enabled = false
|
||||
self:OpenJumpToGroup()
|
||||
else
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 1.33)
|
||||
self._mapNode.cgsvList:DOFade(1, 0.33)
|
||||
self:PlayAnim("RogueBossSelect_in")
|
||||
end
|
||||
end
|
||||
function RogueBossSelectCtrl:OnDisable()
|
||||
end
|
||||
function RogueBossSelectCtrl:OnDestroy()
|
||||
self.tbAllBoss = nil
|
||||
end
|
||||
function RogueBossSelectCtrl:OnRelease()
|
||||
end
|
||||
function RogueBossSelectCtrl:OpenJumpToGroup()
|
||||
local bOpen = PlayerData.RogueBoss:CheckLevelOpen(self.nJumpToGroup)
|
||||
if not bOpen then
|
||||
return
|
||||
end
|
||||
self.curState = 2
|
||||
if self.nJumpToHard == 0 then
|
||||
self.curSelectHard = GameEnum.diffculty.Diffculty_1
|
||||
else
|
||||
self.curSelectHard = self.nJumpToHard
|
||||
end
|
||||
local nMaxHard = PlayerData.RogueBoss:GetBossMaxGroupCount(self.nJumpToGroup)
|
||||
if nMaxHard < self.curSelectHard then
|
||||
self.curSelectHard = nMaxHard
|
||||
end
|
||||
self.curGroupId = self.nJumpToGroup
|
||||
self:RefreshLevelInfo(self.nJumpToGroup, self.curSelectHard)
|
||||
local mapRogueBossLevel = self.mapAllLevel[self.nJumpToGroup][self.curSelectHard]
|
||||
self.regionType = mapRogueBossLevel.RegionType
|
||||
self._mapNode.rtBossList:SetActive(false)
|
||||
self._mapNode.rtBossInfo:SetActive(true)
|
||||
self._mapNode.BG2.gameObject:SetActive(true)
|
||||
self:SetTogList(self.curSelectHard)
|
||||
end
|
||||
function RogueBossSelectCtrl:FindCenterGird()
|
||||
local minPos = 99999
|
||||
local centerPos = self._mapNode.CenterPoint.position.x
|
||||
local centerIndex = 0
|
||||
for i = 1, self._mapNode.svContent.childCount do
|
||||
local child = self._mapNode.svContent:GetChild(i - 1)
|
||||
local pos = math.abs(child.position.x - centerPos)
|
||||
if minPos > pos then
|
||||
centerIndex = child.name
|
||||
minPos = pos
|
||||
end
|
||||
end
|
||||
return centerIndex
|
||||
end
|
||||
function RogueBossSelectCtrl:OnPlayGridAnim(goGrid, gridIndex)
|
||||
local index = gridIndex
|
||||
local trans = goGrid.transform:Find("AnimRoot")
|
||||
local firstIndex = self._mapNode.svList:GetFirsetGridIndex()
|
||||
local centerIndex = self:FindCenterGird()
|
||||
local moveIndex = index - centerIndex + firstIndex
|
||||
if moveIndex > #self.tbAllBoss + 1 then
|
||||
moveIndex = moveIndex - #self.tbAllBoss - 1
|
||||
elseif moveIndex < 0 then
|
||||
moveIndex = moveIndex + #self.tbAllBoss + 1
|
||||
end
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.36)
|
||||
self._mapNode.svList:SetScrollGridPos(moveIndex, 0.2)
|
||||
self:AddTimer(1, 0.2, function()
|
||||
trans:GetComponent("Animator"):Play("rtBossList_in")
|
||||
self:OnEvent_SelectRogueBossItem(self.tbAllBoss[index + 1])
|
||||
end, true, true, true)
|
||||
end
|
||||
function RogueBossSelectCtrl:OnRefreshGrid(goGrid, gridIndex)
|
||||
local index = gridIndex + 1
|
||||
local trans = goGrid.transform:Find("AnimRoot")
|
||||
local goUnlock = trans:Find("goUnlock")
|
||||
local goNone = trans:Find("goNone")
|
||||
local goLock = trans:Find("goLock")
|
||||
local btnGrid = trans:Find("btnGrid"):GetComponent("UIButton")
|
||||
local objHardCore = trans:Find("objHardCore")
|
||||
local imgBg = trans:Find("bg"):GetComponent("Image")
|
||||
objHardCore.gameObject:SetActive(false)
|
||||
btnGrid.interactable = index <= #self.tbAllBoss
|
||||
if index > #self.tbAllBoss then
|
||||
goNone.gameObject:SetActive(true)
|
||||
goUnlock.gameObject:SetActive(false)
|
||||
goLock.gameObject:SetActive(false)
|
||||
if self.regionType == GameEnum.RegionType.NormalRegion then
|
||||
self:SetPngSprite(imgBg, "UI/big_sprites/db_stage_01")
|
||||
else
|
||||
self:SetPngSprite(imgBg, "UI/big_sprites/db_stage_02")
|
||||
end
|
||||
else
|
||||
btnGrid.onClick:RemoveAllListeners()
|
||||
btnGrid.onClick:AddListener(function()
|
||||
trans:GetComponent("Animator"):Play("rtBossList_in")
|
||||
self:OnEvent_SelectRogueBossItem(self.tbAllBoss[index])
|
||||
self.bJumpTo = false
|
||||
end)
|
||||
goNone.gameObject:SetActive(false)
|
||||
local mapBossData = self.tbAllBoss[index]
|
||||
if mapBossData == nil then
|
||||
return
|
||||
end
|
||||
objHardCore.gameObject:SetActive(mapBossData.RegionType == GameEnum.RegionType.HardCoreRegion)
|
||||
if self.regionType == GameEnum.RegionType.NormalRegion then
|
||||
self:SetPngSprite(imgBg, "UI/big_sprites/db_stage_01")
|
||||
else
|
||||
self:SetPngSprite(imgBg, "UI/big_sprites/db_stage_02")
|
||||
end
|
||||
local nLevelState, bUnlock = PlayerData.RogueBoss:GetLevelOpenState(mapBossData.Id)
|
||||
goUnlock.gameObject:SetActive(true)
|
||||
goLock.gameObject:SetActive(not bUnlock)
|
||||
local TMPBossWait = goNone:Find("TMPBossWait"):GetComponent("TMP_Text")
|
||||
local imgLevel = goUnlock:Find("imgLevel"):GetComponent("Image")
|
||||
local TMPBossName1 = goUnlock:Find("TMPBossName1"):GetComponent("TMP_Text")
|
||||
NovaAPI.SetTMPText(TMPBossWait, ConfigTable.GetUIText("RegusBoss_NotOpenItem"))
|
||||
self:SetPngSprite(imgLevel, mapBossData.Episode)
|
||||
NovaAPI.SetTMPText(TMPBossName1, mapBossData.Name)
|
||||
local rtElements1 = goUnlock:Find("goElements/rtElements1")
|
||||
local txtDrop = goUnlock:Find("txtDrop"):GetComponent("TMP_Text")
|
||||
NovaAPI.SetTMPText(txtDrop, ConfigTable.GetUIText("RegusBoss_Drop_Possible"))
|
||||
for i = 1, rtElements1.childCount do
|
||||
local imgElement = rtElements1:GetChild(i - 1):GetComponent("Image")
|
||||
if mapBossData.EET[i] ~= nil then
|
||||
self:SetAtlasSprite(imgElement, "12_rare", AllEnum.ElementIconType.Icon .. mapBossData.EET[i])
|
||||
end
|
||||
imgElement.gameObject:SetActive(mapBossData.EET[i] ~= nil)
|
||||
end
|
||||
local rtDropItems = goUnlock:Find("rtDropItems")
|
||||
for i = 1, rtDropItems.childCount do
|
||||
local item = rtDropItems:GetChild(i - 1)
|
||||
if mapBossData.DropItem[i] ~= nil then
|
||||
local itemCtrl = self:BindCtrlByNode(item:Find("AnimRoot/tc_item_01"), "Game.UI.TemplateEx.TemplateItemCtrl")
|
||||
itemCtrl:SetItem(mapBossData.DropItem[i])
|
||||
local btnItem = item:GetComponent("UIButton")
|
||||
btnItem.onClick:RemoveAllListeners()
|
||||
btnItem.onClick:AddListener(function()
|
||||
local mapData = {
|
||||
nTid = mapBossData.DropItem[i],
|
||||
bShowDepot = true
|
||||
}
|
||||
if self.bStartSnap ~= true then
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.ItemTips, item, mapData)
|
||||
end
|
||||
end)
|
||||
end
|
||||
item.gameObject:SetActive(mapBossData.DropItem[i] ~= nil)
|
||||
end
|
||||
if bUnlock then
|
||||
do
|
||||
local sUnlockTips = PlayerData.RogueBoss:GetUnOpenUITipText(nLevelState, mapBossData.Id)
|
||||
if nil ~= sUnlockTips and "" ~= sUnlockTips then
|
||||
local txtLock = goUnlock:Find("txtLock"):GetComponent("TMP_Text")
|
||||
NovaAPI.SetTMPText(txtLock, sUnlockTips)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
function RogueBossSelectCtrl:RefreshLevelInfo(nGroupId, nDifficult)
|
||||
self.SelectDifficult = nDifficult
|
||||
local mapRogueBossLevel = self.mapAllLevel[nGroupId][nDifficult]
|
||||
local mapBossData = ConfigTable.GetData("RegionBoss", nGroupId)
|
||||
local mapLevelInfo = PlayerData.RogueBoss:GetCacheBossLevelMsg(mapRogueBossLevel.Id)
|
||||
if mapRogueBossLevel == nil then
|
||||
return
|
||||
end
|
||||
self:SetPngSprite(self._mapNode.imgLevelImg, mapBossData.Image)
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPRoguelikeName, mapRogueBossLevel.Name)
|
||||
NovaAPI.SetTMPText(self._mapNode.TMPRoguelikeDesc, mapRogueBossLevel.Desc)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtSuggestLevel, mapRogueBossLevel.SuggestedPower)
|
||||
local sRank = "Icon/BuildRank/BuildRank_" .. mapRogueBossLevel.RecommendBuildRank
|
||||
self:SetPngSprite(self._mapNode.imgBuild, sRank)
|
||||
local isHandCoreType = mapRogueBossLevel.RegionType == GameEnum.RegionType.HardCoreRegion
|
||||
self._mapNode.titleReward:SetActive(not isHandCoreType)
|
||||
self._mapNode.imgReward:SetActive(not isHandCoreType)
|
||||
self._mapNode.goReward:SetActive(not isHandCoreType)
|
||||
self._mapNode.goTask:SetActive(not isHandCoreType)
|
||||
self._mapNode.handInfoIcon:SetActive(isHandCoreType)
|
||||
self._mapNode.imgRewardHand:SetActive(isHandCoreType)
|
||||
self._mapNode.goRewardHand:SetActive(isHandCoreType)
|
||||
for i = 1, 3 do
|
||||
if mapBossData.EET == nil or mapBossData.EET[i] == nil then
|
||||
self._mapNode.imgElementInfo[i].gameObject:SetActive(false)
|
||||
else
|
||||
self._mapNode.imgElementInfo[i].gameObject:SetActive(true)
|
||||
self:SetAtlasSprite(self._mapNode.imgElementInfo[i], "12_rare", AllEnum.ElementIconType.Icon .. mapBossData.EET[i])
|
||||
end
|
||||
end
|
||||
local curStar = 0
|
||||
if mapLevelInfo ~= nil then
|
||||
curStar = mapLevelInfo.Star
|
||||
end
|
||||
local tbCond = {}
|
||||
table.insert(tbCond, decodeJson(mapRogueBossLevel.OneStarCondition))
|
||||
table.insert(tbCond, decodeJson(mapRogueBossLevel.TwoStarCondition))
|
||||
table.insert(tbCond, decodeJson(mapRogueBossLevel.ThreeStarCondition))
|
||||
for i = 1, 3 do
|
||||
local rtTask = self._mapNode.Task[i]
|
||||
local goDone = rtTask:Find("imgDone").gameObject
|
||||
local imgUnDone = rtTask:Find("imgUnDone").gameObject
|
||||
local Text = rtTask:Find("Text"):GetComponent("TMP_Text")
|
||||
goDone:SetActive(curStar >= i)
|
||||
imgUnDone:SetActive(curStar < i)
|
||||
local cond = tbCond[i]
|
||||
if cond == nil then
|
||||
rtTask.gameObject:SetActive(false)
|
||||
return
|
||||
else
|
||||
rtTask.gameObject:SetActive(true)
|
||||
if i == 1 then
|
||||
NovaAPI.SetTMPText(Text, ConfigTable.GetUIText("RegionBoss_PassConfition_1"))
|
||||
elseif i == 2 then
|
||||
NovaAPI.SetTMPText(Text, ConfigTable.GetUIText("RegionBoss_PassConfition_2"))
|
||||
else
|
||||
NovaAPI.SetTMPText(Text, orderedFormat(ConfigTable.GetUIText("RegionBoss_PassConfition_3"), tbCond[2][2] - cond[2]))
|
||||
end
|
||||
end
|
||||
end
|
||||
for i = 1, 5 do
|
||||
local sName = "EntryGroupId" .. i
|
||||
local sLevelName = "EntryGroupLevel" .. i
|
||||
local nSkillId = mapRogueBossLevel[sName]
|
||||
local nSkillLv = mapRogueBossLevel[sLevelName]
|
||||
self._mapNode.Skill[i]:SetMonsterSkill(nSkillId)
|
||||
end
|
||||
local tbReward = decodeJson(mapRogueBossLevel.BaseAwardPreview)
|
||||
self.tbReward = tbReward
|
||||
local lvStarCount = mapLevelInfo and mapLevelInfo.maxStar or 0
|
||||
local isFirstPass = mapLevelInfo and mapLevelInfo.First or false
|
||||
for index = 1, #tbReward do
|
||||
if tbReward[index] ~= nil then
|
||||
local nLastIndex = #tbReward[index]
|
||||
local bReceived = false
|
||||
if tbReward[index][nLastIndex] == 1 and isFirstPass then
|
||||
bReceived = true
|
||||
elseif tbReward[index][nLastIndex] == 2 and lvStarCount == 3 then
|
||||
bReceived = true
|
||||
end
|
||||
table.insert(self.tbReward[index], bReceived)
|
||||
end
|
||||
end
|
||||
self.tbAfterReward = {}
|
||||
for key, value in pairs(self.tbReward) do
|
||||
local nLastIndex = #self.tbReward[key]
|
||||
if not self.tbReward[key][nLastIndex] then
|
||||
table.remove(value)
|
||||
table.insert(self.tbAfterReward, value)
|
||||
end
|
||||
end
|
||||
for index = 1, 5 do
|
||||
if not isHandCoreType then
|
||||
self._mapNode.btn_item[index].interactable = self.tbAfterReward[index] ~= nil
|
||||
if self.tbAfterReward[index] ~= nil then
|
||||
local nLastIndex = #self.tbAfterReward[index]
|
||||
self._mapNode.item[index]:SetItem(self.tbAfterReward[index][1], nil, UTILS.ParseRewardItemCount(self.tbAfterReward[index]), nil, false, self.tbAfterReward[index][nLastIndex] == 1, self.tbAfterReward[index][nLastIndex] == 2, true)
|
||||
else
|
||||
self._mapNode.item[index]:SetItem(nil)
|
||||
end
|
||||
else
|
||||
self._mapNode.btn_itemHand[index].interactable = self.tbAfterReward[index] ~= nil
|
||||
if self.tbAfterReward[index] ~= nil then
|
||||
local nLastIndex = #self.tbAfterReward[index]
|
||||
self._mapNode.itemHand[index]:SetItem(self.tbAfterReward[index][1], nil, UTILS.ParseRewardItemCount(self.tbAfterReward[index]), nil, false, self.tbAfterReward[index][nLastIndex] == 1, self.tbAfterReward[index][nLastIndex] == 2, true)
|
||||
else
|
||||
self._mapNode.itemHand[index]:SetItem(nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
self.tbExtraDropReward = {}
|
||||
self._mapNode.btn_itemHand_Extra.interactable = mapRogueBossLevel.ExtraDropPreview ~= nil and 0 < #mapRogueBossLevel.ExtraDropPreview and self.regionType == GameEnum.RegionType.HardCoreRegion
|
||||
if mapRogueBossLevel.ExtraDropPreview ~= nil and 0 < #mapRogueBossLevel.ExtraDropPreview and self.regionType == GameEnum.RegionType.HardCoreRegion then
|
||||
self._mapNode.itemHandExtra:SetItem(mapRogueBossLevel.ExtraDropPreview[1], nil, nil, nil, false, false, false, false, false, false, true)
|
||||
local countTxt = ""
|
||||
if mapRogueBossLevel.ExtraDropPreview[2] == mapRogueBossLevel.ExtraDropPreview[3] then
|
||||
countTxt = mapRogueBossLevel.ExtraDropPreview[2]
|
||||
else
|
||||
countTxt = mapRogueBossLevel.ExtraDropPreview[2] .. "~" .. mapRogueBossLevel.ExtraDropPreview[3]
|
||||
end
|
||||
local txtCount = self._mapNode.itemHandExtra.gameObject.transform:Find("--Common--/txtCount"):GetComponent("TMP_Text")
|
||||
local txtX = txtCount.transform:Find("txtX")
|
||||
txtCount.gameObject:SetActive(0 < mapRogueBossLevel.ExtraDropPreview[2])
|
||||
txtX.gameObject:SetActive(mapRogueBossLevel.ExtraDropPreview[2] == mapRogueBossLevel.ExtraDropPreview[3])
|
||||
self.tbExtraDropReward = mapRogueBossLevel.ExtraDropPreview
|
||||
NovaAPI.SetTMPText(txtCount, countTxt)
|
||||
else
|
||||
self._mapNode.itemHandExtra:SetItem(nil)
|
||||
end
|
||||
self._mapNode.goBossTickInfo:SetActive(isHandCoreType)
|
||||
if not isHandCoreType then
|
||||
local nRequire = mapRogueBossLevel.EnergyConsume
|
||||
self:SetSprite_Coin(self._mapNode.imgTickets, AllEnum.CoinItemId.Energy)
|
||||
local nHas = PlayerData.Base:GetCurEnergy()
|
||||
NovaAPI.SetTMPText(self._mapNode.txtTicketsCount, nRequire)
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtTicketsCount, nRequire > nHas.nEnergy and Red_Unable or Blue_Normal)
|
||||
else
|
||||
self:SetSprite_Coin(self._mapNode.imgTickets, AllEnum.CoinItemId.RogueHardCoreTick)
|
||||
local ticketCount = PlayerData.Item:GetItemCountByID(AllEnum.CoinItemId.RogueHardCoreTick)
|
||||
NovaAPI.SetTMPText(self._mapNode.txtTicketsCount, "1")
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtTicketsCount, ticketCount < 1 and Red_Unable or Blue_Normal)
|
||||
end
|
||||
local isUnLock, isWorldClass, isPreLevelStar = PlayerData.RogueBoss:GetRogueBossUnLockMsg(nGroupId, nDifficult)
|
||||
self.curStar = curStar
|
||||
self._mapNode.txtBtnRaid.gameObject:SetActive(curStar == 3)
|
||||
self._mapNode.imgRaidUnlockMask:SetActive(curStar < 3)
|
||||
self._mapNode.btnRaid.gameObject:SetActive(not isHandCoreType and isUnLock)
|
||||
self._mapNode.btnGo.gameObject:SetActive(isUnLock)
|
||||
self._mapNode.btnLock.gameObject:SetActive(not isUnLock)
|
||||
self._mapNode.ListConditions:SetActive(not isUnLock)
|
||||
if not isUnLock and not isHandCoreType then
|
||||
local imgConditions_Lock_WC = self._mapNode.Conditions_[1].gameObject.transform:Find("imgConditions_Lock").gameObject
|
||||
local imgConditions_UnLock_WC = self._mapNode.Conditions_[1].gameObject.transform:Find("imgConditions_UnLock").gameObject
|
||||
local tex_ConditionsTips_WC = self._mapNode.Conditions_[1].gameObject.transform:Find("tex_ConditionsTips"):GetComponent("TMP_Text")
|
||||
imgConditions_Lock_WC:SetActive(not isWorldClass)
|
||||
imgConditions_UnLock_WC:SetActive(isWorldClass)
|
||||
local tempData = PlayerData.RogueBoss._regionBossLevel[nGroupId][nDifficult]
|
||||
NovaAPI.SetTMPText(tex_ConditionsTips_WC, orderedFormat(ConfigTable.GetUIText("RegusBoss_UnlockConditions_WorldClass"), tempData.NeedWorldClass))
|
||||
NovaAPI.SetTMPColor(tex_ConditionsTips_WC, isWorldClass and Color(0.3686274509803922, 0.5372549019607843, 0.7058823529411765) or Color(0.14901960784313725, 0.25882352941176473, 0.47058823529411764))
|
||||
local imgConditions_Lock_PL = self._mapNode.Conditions_[2].gameObject.transform:Find("imgConditions_Lock").gameObject
|
||||
local imgConditions_UnLock_PL = self._mapNode.Conditions_[2].gameObject.transform:Find("imgConditions_UnLock").gameObject
|
||||
local tex_ConditionsTips_PL = self._mapNode.Conditions_[2].gameObject.transform:Find("tex_ConditionsTips"):GetComponent("TMP_Text")
|
||||
local _sKey = "Diffculty_" .. nDifficult - 1
|
||||
imgConditions_Lock_PL:SetActive(not isPreLevelStar)
|
||||
imgConditions_UnLock_PL:SetActive(isPreLevelStar)
|
||||
NovaAPI.SetTMPText(tex_ConditionsTips_PL, orderedFormat(ConfigTable.GetUIText("RegusBoss_UnlockConditions_PreLevel"), ConfigTable.GetUIText(_sKey)))
|
||||
NovaAPI.SetTMPColor(tex_ConditionsTips_PL, isPreLevelStar and Color(0.3686274509803922, 0.5372549019607843, 0.7058823529411765) or Color(0.14901960784313725, 0.25882352941176473, 0.47058823529411764))
|
||||
self._mapNode.Conditions_[2]:SetActive(true)
|
||||
else
|
||||
end
|
||||
end
|
||||
function RogueBossSelectCtrl:OnBtnClick_HardTog(btn)
|
||||
if self.regionType == GameEnum.RegionType.NormalRegion then
|
||||
local idx = table.indexof(self._mapNode.tog, btn)
|
||||
if self.curSelectHard ~= idx then
|
||||
self:RefreshLevelInfo(self.curGroupId, idx)
|
||||
self._mapNode.togCtrl[self.curSelectHard]:SetTrigger(false)
|
||||
self._mapNode.togCtrl[idx]:SetTrigger(true)
|
||||
self.curSelectHard = idx
|
||||
self._panel._tbParam[1] = self.curSelectHard
|
||||
end
|
||||
else
|
||||
end
|
||||
end
|
||||
function RogueBossSelectCtrl:OnEvent_Back(nPanelId)
|
||||
if self._panel._nPanelId ~= nPanelId then
|
||||
return
|
||||
end
|
||||
if self.bJumpTo or self.curState == 1 then
|
||||
EventManager.Hit(EventId.CloesCurPanel)
|
||||
else
|
||||
self.animatorRoot.enabled = true
|
||||
self._mapNode.rtBossList:SetActive(true)
|
||||
self._mapNode.rtBossInfo:SetActive(false)
|
||||
self._mapNode.BG2.gameObject:SetActive(false)
|
||||
self:PlayAnim("RogueBossSelect_default")
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
self._mapNode.svList.gameObject:SetActive(true)
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
self.curSelectHard = GameEnum.diffculty.Diffculty_1
|
||||
self.curGroupId = 0
|
||||
self.curState = 1
|
||||
self._panel._tbParam[1] = 0
|
||||
self._panel._tbParam[2] = 0
|
||||
end
|
||||
end
|
||||
function RogueBossSelectCtrl:OnEvent_Home(nPanelId)
|
||||
if self._panel._nPanelId ~= nPanelId then
|
||||
return
|
||||
end
|
||||
self._panel._tbParam[1] = 0
|
||||
self._panel._tbParam[2] = 0
|
||||
PanelManager.Home()
|
||||
end
|
||||
function RogueBossSelectCtrl:OnEvent_UpdateEnergy(btn)
|
||||
if self.curState == 2 then
|
||||
local mapRogueBossLevel = self.mapAllLevel[self.curGroupId][self.curSelectHard]
|
||||
if mapRogueBossLevel ~= nil and mapRogueBossLevel.RegionType == GameEnum.RegionType.NormalRegion then
|
||||
local nRequire = mapRogueBossLevel.EnergyConsume
|
||||
local nHas = PlayerData.Base:GetCurEnergy()
|
||||
NovaAPI.SetTMPText(self._mapNode.txtTicketsCount, nRequire)
|
||||
NovaAPI.SetTMPColor(self._mapNode.txtTicketsCount, nRequire > nHas.nEnergy and Red_Unable or Blue_Normal)
|
||||
else
|
||||
end
|
||||
end
|
||||
end
|
||||
function RogueBossSelectCtrl:OnEvent_SelectRogueBossItem(mapBossData)
|
||||
if mapBossData == nil then
|
||||
return
|
||||
end
|
||||
local bOpen = PlayerData.RogueBoss:CheckLevelOpen(mapBossData.Id, nil, true)
|
||||
if not bOpen then
|
||||
return
|
||||
end
|
||||
CS.WwiseAudioManager.Instance:PlaySound("ui_rogueBoss_panel_select")
|
||||
self.curState = 2
|
||||
local nHard = PlayerData.RogueBoss:GetMaxHard(mapBossData.Id)
|
||||
self:RefreshLevelInfo(mapBossData.Id, nHard)
|
||||
self._panel._tbParam[1] = nHard
|
||||
self._panel._tbParam[2] = mapBossData.Id
|
||||
self.curSelectHard = nHard
|
||||
self.curGroupId = mapBossData.Id
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.36)
|
||||
self:AddTimer(1, 0.36, function(...)
|
||||
self:PlayAnim("RogueBossSelect_out")
|
||||
self._mapNode.svList.gameObject:SetActive(false)
|
||||
end, true, true, true)
|
||||
self:AddTimer(1, 1.2, function(...)
|
||||
EventManager.Hit("Guide_OpenRogueBossInfo")
|
||||
end, true, true, true)
|
||||
self:SetTogList(nHard)
|
||||
end
|
||||
function RogueBossSelectCtrl:SetTogList(nHard)
|
||||
if self.regionType == GameEnum.RegionType.NormalRegion then
|
||||
self._mapNode.rt_Toggle:SetActive(true)
|
||||
if nHard ~= 0 then
|
||||
for i = 1, 8 do
|
||||
self._mapNode.togCtrl[i]:SetDefault(nHard == mapToggle[i])
|
||||
end
|
||||
end
|
||||
self.tbLockWorldClass = {}
|
||||
for i = 1, 8 do
|
||||
if self.mapAllLevel[self.curGroupId][i] == nil then
|
||||
self._mapNode.togCtrl[i].gameObject:SetActive(false)
|
||||
else
|
||||
self._mapNode.togCtrl[i].gameObject:SetActive(true)
|
||||
local bUnlock, nWorldClass = PlayerData.RogueBoss:GetUnlockRogueBoss(self.curGroupId, mapToggle[i])
|
||||
self.tbLockWorldClass[i] = nWorldClass
|
||||
self._mapNode.imgLockMask[i].gameObject:SetActive(false)
|
||||
self._mapNode.rt_Targets[i]:SetActive(bUnlock)
|
||||
self._mapNode.rt_LockMsg[i]:SetActive(not bUnlock)
|
||||
local tmpTitle = self._mapNode.tog[i].gameObject.transform:Find("AnimRoot/AnimSwitch/txt_Select"):GetComponent("TMP_Text")
|
||||
local tmpTitleUnselect = self._mapNode.tog[i].gameObject.transform:Find("AnimRoot/AnimSwitch/txt_unSelect"):GetComponent("TMP_Text")
|
||||
local sKey = "Diffculty_" .. mapToggle[i]
|
||||
NovaAPI.SetTMPText(tmpTitle, ConfigTable.GetUIText(sKey))
|
||||
NovaAPI.SetTMPText(tmpTitleUnselect, ConfigTable.GetUIText(sKey))
|
||||
local mapRogueBossLevel = self.mapAllLevel[self.curGroupId][mapToggle[i]]
|
||||
local mapLevelInfo = PlayerData.RogueBoss:GetCacheBossLevelMsg(mapRogueBossLevel.Id)
|
||||
local curStar = 0
|
||||
if mapLevelInfo ~= nil then
|
||||
curStar = mapLevelInfo.Star
|
||||
end
|
||||
for j = 1, 3 do
|
||||
local btnStar = self._mapNode.rt_Targets[i].gameObject.transform:Find("btnTarget" .. j):GetComponent("Button")
|
||||
btnStar.interactable = j <= curStar
|
||||
end
|
||||
local mapRogueBossLevel = self.mapAllLevel[self.curGroupId][mapToggle[i]]
|
||||
if not bUnlock then
|
||||
if nHard == i then
|
||||
self._mapNode.togCtrl[i]:SetDefault(false)
|
||||
end
|
||||
if self.tbLockWorldClass[i] ~= nil then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtLockCondition[i], orderedFormat(ConfigTable.GetUIText("RegusBoss_Unlock_LvHand"), mapRogueBossLevel.NeedWorldClass))
|
||||
else
|
||||
NovaAPI.SetTMPText(self._mapNode.txtLockCondition[i], ConfigTable.GetUIText("Unlocked_By_PreLevel"))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
else
|
||||
end
|
||||
end
|
||||
function RogueBossSelectCtrl:OnEvent_UpdateWorldClass()
|
||||
self:SetTogList(0)
|
||||
end
|
||||
function RogueBossSelectCtrl:OnEvent_StartLoopScrollSnap(snapTime)
|
||||
self.bStartSnap = true
|
||||
self:AddTimer(1, snapTime, function()
|
||||
self.bStartSnap = false
|
||||
end, true, true, true)
|
||||
end
|
||||
function RogueBossSelectCtrl:OnEvent_StartDragLoopScrollSnap()
|
||||
self.bStartSnap = true
|
||||
end
|
||||
function RogueBossSelectCtrl:PlayAnim(AnimName)
|
||||
self.animatorRoot:Play(AnimName)
|
||||
local nAnimLength = NovaAPI.GetAnimClipLength(self.animatorRoot, {AnimName})
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, nAnimLength)
|
||||
end
|
||||
function RogueBossSelectCtrl:OnClickBtnCrusade()
|
||||
PlayerData.RogueBoss:SetSelBuildId(0)
|
||||
local mapRogueBossLevel = self.mapAllLevel[self.curGroupId][self.curSelectHard]
|
||||
if mapRogueBossLevel.RegionType == GameEnum.RegionType.NormalRegion then
|
||||
local nEnergy = PlayerData.Base:GetCurEnergy().nEnergy
|
||||
if nEnergy < mapRogueBossLevel.EnergyConsume then
|
||||
local callback = function()
|
||||
EventManager.Hit(EventId.ClosePanel, PanelId.EnergyBuy)
|
||||
end
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.EnergyBuy, AllEnum.EnergyPanelType.Main, {}, true, callback)
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("MainlineData_Energy"))
|
||||
return
|
||||
end
|
||||
else
|
||||
end
|
||||
if not PlayerData.RogueBoss:GetUnlockRogueBoss(self.curGroupId, self.curSelectHard) then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("RegusBoss_Unlock"))
|
||||
return
|
||||
end
|
||||
PlayerData.RogueBoss:SetSelLvId(mapRogueBossLevel.Id)
|
||||
local OpenPanel = function()
|
||||
local nMaxHard = PlayerData.RogueBoss:GetMaxHard(self.curGroupId)
|
||||
PlayerData.RogueBoss:SetLastMaxHard(self.curGroupId, nMaxHard)
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.RegionBossFormation, AllEnum.RegionBossFormationType.RegionBoss)
|
||||
self._panel._tbParam[1] = mapRogueBossLevel.diffculty
|
||||
end
|
||||
EventManager.Hit(EventId.SetTransition, 2, OpenPanel)
|
||||
PlayerData.RogueBoss:SetIsUnlock(false)
|
||||
end
|
||||
function RogueBossSelectCtrl:OnClickBtnRaid()
|
||||
if self.curStar ~= 3 then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Raid_Lock"))
|
||||
return
|
||||
end
|
||||
local mapRogueBossLevel = self.mapAllLevel[self.curGroupId][self.curSelectHard]
|
||||
local nNeedEnergy = mapRogueBossLevel.EnergyConsume
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, mapRogueBossLevel.Id, nNeedEnergy, 2)
|
||||
end
|
||||
function RogueBossSelectCtrl:OnBtnClick_Lock()
|
||||
self:OnBtnClick_TogTips(nil, self.SelectDifficult)
|
||||
end
|
||||
function RogueBossSelectCtrl:OnBtnClick_Reward(btn, nidx)
|
||||
if self.tbAfterReward[nidx] == nil then
|
||||
return
|
||||
end
|
||||
local nTid = self.tbAfterReward[nidx][1]
|
||||
if nTid == nil then
|
||||
return
|
||||
end
|
||||
local rtBtn = self._mapNode.item[nidx].gameObject.transform
|
||||
UTILS.ClickItemGridWithTips(nTid, rtBtn, false, true, false)
|
||||
end
|
||||
function RogueBossSelectCtrl:OnBtnClick_ExtraDropReward(btn)
|
||||
if self.tbExtraDropReward == nil then
|
||||
return
|
||||
end
|
||||
local nTid = self.tbExtraDropReward[1]
|
||||
if nTid == nil then
|
||||
return
|
||||
end
|
||||
local rtBtn = btn.transform:Find("AnimRoot")
|
||||
UTILS.ClickItemGridWithTips(nTid, rtBtn, false, true, false)
|
||||
end
|
||||
function RogueBossSelectCtrl:OnBtnClick_Skill(btn, nidx)
|
||||
local mapRogueBossLevel = self.mapAllLevel[self.curGroupId][self.curSelectHard]
|
||||
local sName = "EntryGroupId" .. nidx
|
||||
local nSkillId = mapRogueBossLevel[sName]
|
||||
if nSkillId ~= 0 then
|
||||
local mapData = {
|
||||
nSkillId = nSkillId,
|
||||
bMonster = true,
|
||||
bBoss = true
|
||||
}
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.SkillTips, btn.transform, mapData)
|
||||
end
|
||||
end
|
||||
function RogueBossSelectCtrl:OnBtnClick_AllReward(btn)
|
||||
local tbExtraDropReward
|
||||
if #self.tbExtraDropReward > 0 then
|
||||
tbExtraDropReward = {}
|
||||
tbExtraDropReward[1] = self.tbExtraDropReward[1]
|
||||
tbExtraDropReward[2] = 1
|
||||
tbExtraDropReward[3] = 0
|
||||
end
|
||||
self._mapNode.goRewardList:OpenPanel(self.tbReward, tbExtraDropReward)
|
||||
end
|
||||
function RogueBossSelectCtrl:OnBtnClick_TogTips(btn, nIndex)
|
||||
if self.tbLockWorldClass[nIndex] then
|
||||
EventManager.Hit(EventId.OpenMessageBox, orderedFormat(ConfigTable.GetUIText("LevelSelect_LimitTipsWorldClass"), self.tbLockWorldClass[nIndex]))
|
||||
else
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("LevelSelect_LimitTips"))
|
||||
end
|
||||
end
|
||||
function RogueBossSelectCtrl:OnBtnClick_Left()
|
||||
end
|
||||
function RogueBossSelectCtrl:OnBtnClick_Right()
|
||||
end
|
||||
function RogueBossSelectCtrl:OnBtnClick_ChangeType()
|
||||
self.isHandCoreType = not self.isHandCoreType
|
||||
self:SetRegionType()
|
||||
self:SetTopBar()
|
||||
self:SetSvList()
|
||||
self:SetBgImg()
|
||||
PlayerData.RogueBoss:SetSelectRegionType(self.isHandCoreType)
|
||||
end
|
||||
function RogueBossSelectCtrl:SetRegionType()
|
||||
self.regionType = GameEnum.RegionType.NormalRegion
|
||||
self._mapNode.goOff.gameObject:SetActive(not self.isHandCoreType)
|
||||
self._mapNode.goOpen.gameObject:SetActive(self.isHandCoreType)
|
||||
end
|
||||
function RogueBossSelectCtrl:SetTopBar()
|
||||
if self.regionType == GameEnum.RegionType.NormalRegion then
|
||||
self._mapNode.TopBarPanel:ShowGoEnergy(true)
|
||||
self._mapNode.TopBarPanel:ShowGoBossTick(false)
|
||||
self._mapNode.goBossTick:SetActive(false)
|
||||
else
|
||||
end
|
||||
end
|
||||
function RogueBossSelectCtrl:SetSvList()
|
||||
self.tbAllBoss = {}
|
||||
local forEachRegoinBoss = function(mapData)
|
||||
if mapData.RegionType == self.regionType then
|
||||
table.insert(self.tbAllBoss, mapData)
|
||||
end
|
||||
end
|
||||
ForEachTableLine(DataTable.RegionBoss, forEachRegoinBoss)
|
||||
local sortBoss = function(a, b)
|
||||
return a.Sort < b.Sort
|
||||
end
|
||||
table.sort(self.tbAllBoss, sortBoss)
|
||||
for i = 1, #self.tbAllBoss do
|
||||
local objItem
|
||||
if i > self._mapNode.ContentTemp.childCount then
|
||||
objItem = instantiate(self._mapNode.gridTemp, self._mapNode.ContentTemp)
|
||||
else
|
||||
objItem = self._mapNode.ContentTemp:GetChild(i - 1).gameObject
|
||||
end
|
||||
objItem.gameObject.name = "gridTemp" .. i
|
||||
objItem:SetActive(true)
|
||||
self:OnRefreshGrid(objItem, i - 1)
|
||||
end
|
||||
if self.isInit then
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.5)
|
||||
else
|
||||
self.isInit = true
|
||||
end
|
||||
end
|
||||
function RogueBossSelectCtrl:SetBgImg()
|
||||
self:SetPngSprite(self._mapNode.BG1, "Image/UIBG/bg_stage_01")
|
||||
self._mapNode.FXNormal:SetActive(true)
|
||||
self._mapNode.FXHard:SetActive(false)
|
||||
end
|
||||
function RogueBossSelectCtrl:OnBtnClick_BossTick(btn)
|
||||
local curCoinItmeId = AllEnum.CoinItemId.RogueHardCoreTick
|
||||
if 0 <= curCoinItmeId then
|
||||
local bShowJumpto = true
|
||||
if self.bForceHide then
|
||||
bShowJumpto = false
|
||||
end
|
||||
UTILS.ClickItemGridWithTips(curCoinItmeId, btn.transform, true, true, bShowJumpto)
|
||||
end
|
||||
end
|
||||
return RogueBossSelectCtrl
|
||||
@@ -0,0 +1,71 @@
|
||||
local RogueBossSelectItemCtrl = class("RogueBossSelectItemCtrl", BaseCtrl)
|
||||
RogueBossSelectItemCtrl._mapNodeConfig = {
|
||||
goUnlock = {},
|
||||
goUnOpen = {},
|
||||
goNone = {},
|
||||
goLock = {},
|
||||
imgLevel = {nCount = 2, sComponentName = "Image"},
|
||||
TMPBossName = {nCount = 2, sComponentName = "TMP_Text"},
|
||||
TMPOpenTime = {nCount = 2, sComponentName = "TMP_Text"},
|
||||
rtElements = {nCount = 2},
|
||||
imgElement1_ = {nCount = 2, sComponentName = "Image"},
|
||||
imgElement2_ = {nCount = 2, sComponentName = "Image"},
|
||||
imgElement3_ = {nCount = 2, sComponentName = "Image"},
|
||||
txtLock = {sComponentName = "TMP_Text"},
|
||||
btnGrid = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Grid"
|
||||
}
|
||||
}
|
||||
RogueBossSelectItemCtrl._mapEventConfig = {}
|
||||
function RogueBossSelectItemCtrl:InitItem(mapBossData)
|
||||
self.mapBossData = mapBossData
|
||||
self._mapNode.goNone.gameObject:SetActive(false)
|
||||
self._mapNode.goUnlock.gameObject:SetActive(false)
|
||||
self._mapNode.goUnOpen.gameObject:SetActive(false)
|
||||
self._mapNode.goLock.gameObject:SetActive(false)
|
||||
if nil == mapBossData then
|
||||
self._mapNode.btnGrid.interactable = false
|
||||
self._mapNode.goNone.gameObject:SetActive(true)
|
||||
else
|
||||
self._mapNode.btnGrid.interactable = true
|
||||
local nLevelState, bUnlock = PlayerData.RogueBoss:GetLevelOpenState(mapBossData.Id)
|
||||
local bOpen = nLevelState == AllEnum.RogueBossLevelState.Open
|
||||
if not bUnlock then
|
||||
self._mapNode.goUnlock.gameObject:SetActive(true)
|
||||
self._mapNode.goLock.gameObject:SetActive(true)
|
||||
elseif not bOpen then
|
||||
self._mapNode.goUnOpen.gameObject:SetActive(true)
|
||||
else
|
||||
self._mapNode.goUnlock.gameObject:SetActive(true)
|
||||
end
|
||||
self._mapNode.btnGrid.bSkipBtnAnim = not bOpen
|
||||
for _, v in ipairs(self._mapNode.TMPBossName) do
|
||||
NovaAPI.SetTMPText(v, mapBossData.Name)
|
||||
end
|
||||
for _, v in ipairs(self._mapNode.TMPOpenTime) do
|
||||
NovaAPI.SetTMPText(v, mapBossData.OpenDayDesc)
|
||||
end
|
||||
for _, v in ipairs(self._mapNode.imgLevel) do
|
||||
self:SetPngSprite(v, mapBossData.Episode)
|
||||
end
|
||||
for i = 1, 3 do
|
||||
for _, v in ipairs(self._mapNode[string.format("imgElement%s_", i)]) do
|
||||
if mapBossData.EET == nil or mapBossData.EET[i] == nil then
|
||||
v.gameObject:SetActive(false)
|
||||
else
|
||||
v.gameObject:SetActive(true)
|
||||
self:SetAtlasSprite(v, "12_rare", AllEnum.ElementIconType.Icon .. mapBossData.EET[i])
|
||||
end
|
||||
end
|
||||
end
|
||||
local sUnlockTips = PlayerData.RogueBoss:GetUnOpenUITipText(nLevelState, mapBossData.Id)
|
||||
if nil ~= sUnlockTips and "" ~= sUnlockTips then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtLock, sUnlockTips)
|
||||
end
|
||||
end
|
||||
end
|
||||
function RogueBossSelectItemCtrl:OnBtnClick_Grid()
|
||||
EventManager.Hit("SelectRogueBossItem", self.mapBossData)
|
||||
end
|
||||
return RogueBossSelectItemCtrl
|
||||
@@ -0,0 +1,18 @@
|
||||
local RogueBossSelectPanel = class("RogueBossSelectPanel", BasePanel)
|
||||
RogueBossSelectPanel._tbDefine = {
|
||||
{
|
||||
sPrefabPath = "FRLevelSelectEx/RogueBossSelect.prefab",
|
||||
sCtrlName = "Game.UI.FixedRoguelikeLevelSelectEx.RogueBossSelectCtrl"
|
||||
}
|
||||
}
|
||||
function RogueBossSelectPanel:Awake()
|
||||
end
|
||||
function RogueBossSelectPanel:OnEnable()
|
||||
end
|
||||
function RogueBossSelectPanel:OnDisable()
|
||||
end
|
||||
function RogueBossSelectPanel:OnDestroy()
|
||||
end
|
||||
function RogueBossSelectPanel:OnRelease()
|
||||
end
|
||||
return RogueBossSelectPanel
|
||||
Reference in New Issue
Block a user