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,570 @@
|
||||
local InfinityTowerLvList = class("InfinityTowerLvList", BaseCtrl)
|
||||
local LayoutRebuilder = CS.UnityEngine.UI.LayoutRebuilder
|
||||
InfinityTowerLvList._mapNodeConfig = {
|
||||
lv_firstTemp = {},
|
||||
lv_firstTemp_1 = {},
|
||||
lv_firstTemp_2 = {},
|
||||
lv_endTemp = {},
|
||||
lv_endTemp_1 = {},
|
||||
lv_endTemp_2 = {},
|
||||
lvListMsgView = {},
|
||||
lvListMsgTrans = {sComponentName = "Transform"},
|
||||
lv_Temp = {},
|
||||
lvmsgRoot = {},
|
||||
tex_lvmsgTop_LvIndex = {sComponentName = "TMP_Text"},
|
||||
tex_lvmsgTop_LvName = {sComponentName = "TMP_Text"},
|
||||
tex_lvmsgTop_ReLv = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "InfinityTower_Recommend_Lv"
|
||||
},
|
||||
tex_lvmsgTop_ReLvCount = {sComponentName = "TMP_Text"},
|
||||
img_lvmsgTop_ReCon = {sComponentName = "Image"},
|
||||
tex_lvmsgTop_ReCon = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "InfinityTower_Recommend_Construct"
|
||||
},
|
||||
tex_lvmsgBot_Affix = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "InfinityTower_Affix"
|
||||
},
|
||||
lvmsgBot_affixSCRoot = {sComponentName = "Transform"},
|
||||
lvmsgBot_affix_Item = {},
|
||||
tex_lvmsgBot_Reward = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MessageBox_Reward"
|
||||
},
|
||||
lvmsgBot_RewardRoot = {sComponentName = "Transform"},
|
||||
lvmsgBot_RewardItem = {},
|
||||
tex_lvmsgBot_MonInfo = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "MonsterInfo"
|
||||
},
|
||||
btn_lvmsgBot_MonInfo = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnClickMonsterInfo"
|
||||
},
|
||||
btn_go = {sComponentName = "UIButton", callback = "OnClickGo"},
|
||||
txtBtnGo = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "InfinityTower_GoWar"
|
||||
},
|
||||
obj_lvMsgPass = {},
|
||||
tex_lvMsgPass = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "InfinityTower_Pass_Level"
|
||||
},
|
||||
obj_lvMsgLock = {},
|
||||
tex_lvMsgLock = {sComponentName = "TMP_Text"},
|
||||
obj_lvMsgDontOpen = {},
|
||||
tex_lvMsgDontOpen = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "InfinityTower_Last_NotPass"
|
||||
},
|
||||
obj_lvMsgDontOpenDay = {},
|
||||
tex_lvMsgDontOpenDay = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "InfinityTower_Dont_Open"
|
||||
},
|
||||
btn_Close_lvmsgRoot = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnClickCloseLvMsgRoot"
|
||||
}
|
||||
}
|
||||
function InfinityTowerLvList:Awake()
|
||||
self.rewardItem = {}
|
||||
end
|
||||
function InfinityTowerLvList:InitLvList(towerId, diffSort, parent)
|
||||
self.tmpChooseObj = nil
|
||||
self.tmpCloseObj = nil
|
||||
self._mapNode.lvmsgRoot:SetActive(false)
|
||||
NovaAPI.SetRectMaskPadding(self._mapNode.lvListMsgView, 0, 0, 0, 0)
|
||||
NovaAPI.SetLayoutGroupPadding(self._mapNode.lvListMsgTrans.gameObject, 0, 0, -2, 0)
|
||||
self.parent = parent
|
||||
self.selectTowerId = towerId
|
||||
self.diffSort = diffSort
|
||||
for i = 1, self._mapNode.lvListMsgTrans.childCount do
|
||||
self._mapNode.lvListMsgTrans:GetChild(i - 1).gameObject:SetActive(false)
|
||||
end
|
||||
self._mapNode.lvListMsgTrans.localPosition = Vector3(0, 0, 0)
|
||||
local towerPassFloor = PlayerData.InfinityTower:GetTowerPassFloor(towerId)
|
||||
local data = PlayerData.InfinityTower:GetTowerDiffData(towerId, diffSort)
|
||||
local dataLv = data.level
|
||||
local diffLevelCount = data.diffLevelCount
|
||||
local firstFloor = data.firstFloor
|
||||
local endFloor = data.endFloor
|
||||
local firstPass = towerPassFloor >= firstFloor
|
||||
local endPass = towerPassFloor >= endFloor
|
||||
self._mapNode.lv_firstTemp_1:SetActive(not firstPass)
|
||||
self._mapNode.lv_firstTemp_2:SetActive(firstPass)
|
||||
self._mapNode.lv_endTemp_1:SetActive(not endPass)
|
||||
self._mapNode.lv_endTemp_2:SetActive(endPass)
|
||||
local indexlvCount = 0
|
||||
local indexSpecialCount = 0
|
||||
local currentLvIndex = 0
|
||||
local xPre = 2340 / math.floor(Settings.CURRENT_CANVAS_FULL_RECT_WIDTH)
|
||||
local diffPassAll = PlayerData.InfinityTower:GetTowerDiffPassAll(towerId, diffSort)
|
||||
local CurrentClick
|
||||
for i = firstFloor, endFloor do
|
||||
local tmpData = dataLv[i]
|
||||
if tmpData.LevelType == GameEnum.InfinityTowerLevelType.Challenge then
|
||||
indexSpecialCount = indexSpecialCount + 1
|
||||
end
|
||||
indexlvCount = indexlvCount + 1
|
||||
local objItem
|
||||
if self._mapNode.lvListMsgTrans:Find("objItem_" .. indexlvCount) ~= nil then
|
||||
objItem = self._mapNode.lvListMsgTrans:Find("objItem_" .. indexlvCount).gameObject
|
||||
else
|
||||
objItem = instantiate(self._mapNode.lv_Temp, self._mapNode.lvListMsgTrans)
|
||||
objItem.name = "objItem_" .. indexlvCount
|
||||
end
|
||||
local lv_commom_Pass = objItem.transform:Find("lv_commom_Pass").gameObject
|
||||
local lv_commom_Current = objItem.transform:Find("lv_commom_Current").gameObject
|
||||
local lv_commom_Lock = objItem.transform:Find("lv_commom_Lock").gameObject
|
||||
local lv_challenge_Pass = objItem.transform:Find("lv_challenge_Pass").gameObject
|
||||
local lv_challenge_Current = objItem.transform:Find("lv_challenge_Current").gameObject
|
||||
local lv_challenge_Lock = objItem.transform:Find("lv_challenge_Lock").gameObject
|
||||
local lv_commom_ChoosePass = objItem.transform:Find("lv_commom_ChoosePass").gameObject
|
||||
local lv_commom_ChooseCurrent = objItem.transform:Find("lv_commom_ChooseCurrent").gameObject
|
||||
local lv_commom_ChooseLock = objItem.transform:Find("lv_commom_ChooseLock").gameObject
|
||||
local lv_challenge_ChoosePass = objItem.transform:Find("lv_challenge_ChoosePass").gameObject
|
||||
local lv_challenge_ChooseCurrent = objItem.transform:Find("lv_challenge_ChooseCurrent").gameObject
|
||||
local lv_challenge_ChooseLock = objItem.transform:Find("lv_challenge_ChooseLock").gameObject
|
||||
if lv_commom_Pass ~= nil then
|
||||
lv_commom_Pass:SetActive(false)
|
||||
lv_commom_Current:SetActive(false)
|
||||
lv_commom_Lock:SetActive(false)
|
||||
lv_challenge_Pass:SetActive(false)
|
||||
lv_challenge_Current:SetActive(false)
|
||||
lv_challenge_Lock:SetActive(false)
|
||||
lv_commom_ChoosePass:SetActive(false)
|
||||
lv_commom_ChooseCurrent:SetActive(false)
|
||||
lv_commom_ChooseLock:SetActive(false)
|
||||
lv_challenge_ChoosePass:SetActive(false)
|
||||
lv_challenge_ChooseCurrent:SetActive(false)
|
||||
lv_challenge_ChooseLock:SetActive(false)
|
||||
do
|
||||
local pass = PlayerData.InfinityTower:JudgeLevelPass(self.selectTowerId, tmpData.Id)
|
||||
local current = PlayerData.InfinityTower:JudgeLevelCanChallenge(self.selectTowerId, tmpData.Id)
|
||||
local lock = PlayerData.InfinityTower:JudgeLevelLock(self.selectTowerId, tmpData.Id)
|
||||
if current then
|
||||
currentLvIndex = i
|
||||
end
|
||||
local clickCb = function(closeObj, txt, _index)
|
||||
self:ShowLvInfo(tmpData.Id, _index)
|
||||
if diffLevelCount == 5 then
|
||||
NovaAPI.SetLayoutGroupPadding(self._mapNode.lvListMsgTrans.gameObject, 0, math.floor(200 * xPre) + 40, -2, 0)
|
||||
elseif diffLevelCount == 6 then
|
||||
NovaAPI.SetLayoutGroupPadding(self._mapNode.lvListMsgTrans.gameObject, 0, math.floor(400 * xPre) + 40, -2, 0)
|
||||
elseif 6 < diffLevelCount then
|
||||
NovaAPI.SetLayoutGroupPadding(self._mapNode.lvListMsgTrans.gameObject, 0, math.floor(600 * xPre) + 40, -2, 0)
|
||||
end
|
||||
if self.tmpChooseObj ~= nil then
|
||||
self.tmpChooseObj:SetActive(false)
|
||||
end
|
||||
if self.tmpCloseObj ~= nil then
|
||||
self.tmpCloseObj:SetActive(true)
|
||||
end
|
||||
local _choosePass = PlayerData.InfinityTower:JudgeLevelPass(self.selectTowerId, tmpData.Id)
|
||||
local _chooseCurrent = PlayerData.InfinityTower:JudgeLevelCanChallenge(self.selectTowerId, tmpData.Id)
|
||||
local _chooseLock = PlayerData.InfinityTower:JudgeLevelLock(self.selectTowerId, tmpData.Id)
|
||||
if tmpData.LevelType ~= GameEnum.InfinityTowerLevelType.Challenge then
|
||||
if _choosePass then
|
||||
local _tex = lv_commom_ChoosePass.transform:Find("btn/lv_tex_commom_Pass_Choose"):GetComponent("TMP_Text")
|
||||
local _boss = lv_commom_ChoosePass.transform:Find("btn/lv_commom_Pass_Boss_Choose").gameObject
|
||||
_tex.gameObject:SetActive(tmpData.LevelType == GameEnum.InfinityTowerLevelType.Normal)
|
||||
_boss:SetActive(tmpData.LevelType == GameEnum.InfinityTowerLevelType.Boss)
|
||||
NovaAPI.SetTMPText(_tex, txt)
|
||||
lv_commom_ChoosePass:SetActive(true)
|
||||
self.tmpChooseObj = lv_commom_ChoosePass
|
||||
elseif _chooseCurrent then
|
||||
local _PNoPass = lv_commom_ChooseCurrent.transform:Find("lv_commom_Current_PNoPass_Choose").gameObject
|
||||
local _nextLineChoose = lv_commom_ChooseCurrent.transform:Find("lv_commom_Current_NextLine_Choose").gameObject
|
||||
local _tex = lv_commom_ChooseCurrent.transform:Find("btn/lv_tex_commom_Current_Choose"):GetComponent("TMP_Text")
|
||||
local _boss = lv_commom_ChooseCurrent.transform:Find("btn/lv_commom_Current_Boss_Choose").gameObject
|
||||
_PNoPass:SetActive(not firstPass)
|
||||
_tex.gameObject:SetActive(tmpData.LevelType == GameEnum.InfinityTowerLevelType.Normal)
|
||||
_boss:SetActive(tmpData.LevelType == GameEnum.InfinityTowerLevelType.Boss)
|
||||
NovaAPI.SetTMPText(_tex, txt)
|
||||
lv_commom_ChooseCurrent:SetActive(true)
|
||||
self.tmpChooseObj = lv_commom_ChooseCurrent
|
||||
if _choosePass then
|
||||
_nextLineChoose:SetActive(false)
|
||||
elseif _chooseLock then
|
||||
_PNoPass:SetActive(true)
|
||||
end
|
||||
elseif _chooseLock then
|
||||
local _tex = lv_commom_ChooseLock.transform:Find("btn/lv_tex_commom_Lock_Choose"):GetComponent("TMP_Text")
|
||||
local _boss = lv_commom_ChooseLock.transform:Find("btn/lv_commom_Lock_Boss_Choose").gameObject
|
||||
_tex.gameObject:SetActive(tmpData.LevelType == GameEnum.InfinityTowerLevelType.Normal)
|
||||
_boss:SetActive(tmpData.LevelType == GameEnum.InfinityTowerLevelType.Boss)
|
||||
NovaAPI.SetTMPText(_tex, txt)
|
||||
lv_commom_ChooseLock:SetActive(true)
|
||||
self.tmpChooseObj = lv_commom_ChooseLock
|
||||
end
|
||||
elseif _choosePass then
|
||||
local _tex = lv_challenge_ChoosePass.transform:Find("btn/lv_tex_challenge_Pass_Choose"):GetComponent("TMP_Text")
|
||||
NovaAPI.SetTMPText(_tex, txt)
|
||||
lv_challenge_ChoosePass:SetActive(true)
|
||||
self.tmpChooseObj = lv_challenge_ChoosePass
|
||||
elseif _chooseCurrent then
|
||||
local _PNoPass = lv_challenge_ChooseCurrent.transform:Find("lv_challenge_Current_PNoPass_Choose").gameObject
|
||||
local _nextLineChoose = lv_challenge_ChooseCurrent.transform:Find("lv_challenge_Current_NextLine_Choose").gameObject
|
||||
local _tex = lv_challenge_ChooseCurrent.transform:Find("btn/lv_tex_challenge_Current_Choose"):GetComponent("TMP_Text")
|
||||
NovaAPI.SetTMPText(_tex, txt)
|
||||
_PNoPass:SetActive(not firstPass)
|
||||
lv_challenge_ChooseCurrent:SetActive(true)
|
||||
self.tmpChooseObj = lv_challenge_ChooseCurrent
|
||||
if _choosePass then
|
||||
_nextLineChoose:SetActive(false)
|
||||
elseif _chooseLock then
|
||||
_PNoPass:SetActive(true)
|
||||
end
|
||||
elseif _chooseLock then
|
||||
local _tex = lv_challenge_ChooseLock.transform:Find("btn/lv_tex_challenge_Lock_Choose"):GetComponent("TMP_Text")
|
||||
NovaAPI.SetTMPText(_tex, txt)
|
||||
lv_challenge_ChooseLock:SetActive(true)
|
||||
self.tmpChooseObj = lv_challenge_ChooseLock
|
||||
end
|
||||
self.tmpCloseObj = closeObj
|
||||
closeObj:SetActive(false)
|
||||
LayoutRebuilder.ForceRebuildLayoutImmediate(self._mapNode.lvListMsgTrans.gameObject:GetComponent("RectTransform"))
|
||||
if 4 < diffLevelCount and tmpData.Floor - firstFloor < 2 and endFloor - tmpData.Floor >= 2 then
|
||||
local waitOneFrame = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
self._mapNode.lvListMsgTrans:DOLocalMoveX(0, 0.2)
|
||||
end
|
||||
cs_coroutine.start(waitOneFrame)
|
||||
elseif 4 < diffLevelCount and tmpData.Floor - firstFloor >= 2 and endFloor - tmpData.Floor >= 2 then
|
||||
local waitOneFrame = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
self._mapNode.lvListMsgTrans:DOLocalMoveX(-(tmpData.Floor - firstFloor - 1) * 310 + 210, 0.2)
|
||||
end
|
||||
cs_coroutine.start(waitOneFrame)
|
||||
elseif 4 < diffLevelCount and endFloor - tmpData.Floor == 1 then
|
||||
local waitOneFrame = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
self._mapNode.lvListMsgTrans:DOLocalMoveX(-(tmpData.Floor - firstFloor - 1) * 310 + 210, 0.2)
|
||||
end
|
||||
cs_coroutine.start(waitOneFrame)
|
||||
elseif 4 < diffLevelCount and endFloor - tmpData.Floor == 0 then
|
||||
local waitOneFrame = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
self._mapNode.lvListMsgTrans:DOLocalMoveX(-(tmpData.Floor - firstFloor - 1) * 310 + 410, 0.2)
|
||||
end
|
||||
cs_coroutine.start(waitOneFrame)
|
||||
end
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
|
||||
end
|
||||
if tmpData.LevelType ~= GameEnum.InfinityTowerLevelType.Challenge then
|
||||
local strIndex = indexlvCount
|
||||
if indexlvCount < 10 then
|
||||
strIndex = "0" .. indexlvCount
|
||||
end
|
||||
if current == true then
|
||||
local lv_commom_Current_PNoPass = lv_commom_Current.transform:Find("lv_commom_Current_PNoPass").gameObject
|
||||
local lv_tex_commom_Current = lv_commom_Current.transform:Find("btn/lv_tex_commom_Current"):GetComponent("TMP_Text")
|
||||
local lv_commom_Current_Boss = lv_commom_Current.transform:Find("btn/lv_commom_Current_Boss").gameObject
|
||||
lv_commom_Current_PNoPass:SetActive(not firstPass)
|
||||
lv_tex_commom_Current.gameObject:SetActive(tmpData.LevelType == GameEnum.InfinityTowerLevelType.Normal)
|
||||
lv_commom_Current_Boss:SetActive(tmpData.LevelType == GameEnum.InfinityTowerLevelType.Boss)
|
||||
NovaAPI.SetTMPText(lv_tex_commom_Current, orderedFormat(ConfigTable.GetUIText("InfinityTower_Lv_Index"), strIndex))
|
||||
lv_commom_Current:SetActive(true)
|
||||
local btn = lv_commom_Current.transform:Find("btn"):GetComponent("UIButton")
|
||||
btn.onClick:RemoveAllListeners()
|
||||
local tmpClick = function()
|
||||
clickCb(lv_commom_Current, NovaAPI.GetTMPText(lv_tex_commom_Current), strIndex)
|
||||
end
|
||||
CurrentClick = tmpClick
|
||||
btn.onClick:AddListener(tmpClick)
|
||||
end
|
||||
if pass == true then
|
||||
local lv_tex_commom_Pass = lv_commom_Pass.transform:Find("btn/lv_tex_commom_Pass"):GetComponent("TMP_Text")
|
||||
local lv_commom_Pass_Boss = lv_commom_Pass.transform:Find("btn/lv_commom_Pass_Boss").gameObject
|
||||
lv_tex_commom_Pass.gameObject:SetActive(tmpData.LevelType == GameEnum.InfinityTowerLevelType.Normal)
|
||||
lv_commom_Pass_Boss:SetActive(tmpData.LevelType == GameEnum.InfinityTowerLevelType.Boss)
|
||||
NovaAPI.SetTMPText(lv_tex_commom_Pass, orderedFormat(ConfigTable.GetUIText("InfinityTower_Lv_Index"), strIndex))
|
||||
lv_commom_Pass:SetActive(true)
|
||||
local btn = lv_commom_Pass.transform:Find("btn"):GetComponent("UIButton")
|
||||
btn.onClick:RemoveAllListeners()
|
||||
local tmpClick = function()
|
||||
clickCb(lv_commom_Pass, NovaAPI.GetTMPText(lv_tex_commom_Pass), strIndex)
|
||||
end
|
||||
if diffPassAll and tmpData.Floor == endFloor then
|
||||
CurrentClick = tmpClick
|
||||
end
|
||||
btn.onClick:AddListener(tmpClick)
|
||||
end
|
||||
if lock == true then
|
||||
do
|
||||
local lv_commom_Lock_Boss = lv_commom_Lock.transform:Find("btn/lv_commom_Lock_Boss").gameObject
|
||||
local lv_tex_commom_Lock = lv_commom_Lock.transform:Find("btn/lv_tex_commom_Lock"):GetComponent("TMP_Text")
|
||||
lv_tex_commom_Lock.gameObject:SetActive(tmpData.LevelType == GameEnum.InfinityTowerLevelType.Normal)
|
||||
lv_commom_Lock_Boss:SetActive(tmpData.LevelType == GameEnum.InfinityTowerLevelType.Boss)
|
||||
NovaAPI.SetTMPText(lv_tex_commom_Lock, orderedFormat(ConfigTable.GetUIText("InfinityTower_Lv_Index"), strIndex))
|
||||
lv_commom_Lock:SetActive(true)
|
||||
local btn = lv_commom_Lock.transform:Find("btn"):GetComponent("UIButton")
|
||||
btn.onClick:RemoveAllListeners()
|
||||
local tmpClick = function()
|
||||
clickCb(lv_commom_Lock, NovaAPI.GetTMPText(lv_tex_commom_Lock), strIndex)
|
||||
end
|
||||
btn.onClick:AddListener(tmpClick)
|
||||
end
|
||||
end
|
||||
else
|
||||
local strIndex = indexlvCount
|
||||
if indexSpecialCount < 10 then
|
||||
strIndex = "0" .. indexSpecialCount
|
||||
end
|
||||
if current == true then
|
||||
local lv_challenge_Current_PNoPass = lv_challenge_Current.transform:Find("lv_challenge_Current_PNoPass").gameObject
|
||||
local lv_tex_challenge_Current = lv_challenge_Current.transform:Find("btn/lv_tex_challenge_Current"):GetComponent("TMP_Text")
|
||||
lv_challenge_Current_PNoPass:SetActive(not firstPass)
|
||||
NovaAPI.SetTMPText(lv_tex_challenge_Current, orderedFormat(ConfigTable.GetUIText("InfinityTower_SpecialLv_Index"), strIndex))
|
||||
lv_challenge_Current:SetActive(true)
|
||||
local btn = lv_challenge_Current.transform:Find("btn"):GetComponent("UIButton")
|
||||
btn.onClick:RemoveAllListeners()
|
||||
local tmpClick = function()
|
||||
clickCb(lv_challenge_Current, NovaAPI.GetTMPText(lv_tex_challenge_Current), strIndex)
|
||||
end
|
||||
CurrentClick = tmpClick
|
||||
btn.onClick:AddListener(tmpClick)
|
||||
end
|
||||
if pass == true then
|
||||
local lv_tex_challenge_Pass = lv_challenge_Pass.transform:Find("btn/lv_tex_challenge_Pass"):GetComponent("TMP_Text")
|
||||
NovaAPI.SetTMPText(lv_tex_challenge_Pass, orderedFormat(ConfigTable.GetUIText("InfinityTower_SpecialLv_Index"), strIndex))
|
||||
lv_challenge_Pass:SetActive(true)
|
||||
local btn = lv_challenge_Pass.transform:Find("btn"):GetComponent("UIButton")
|
||||
btn.onClick:RemoveAllListeners()
|
||||
local tmpClick = function()
|
||||
clickCb(lv_challenge_Pass, NovaAPI.GetTMPText(lv_tex_challenge_Pass), strIndex)
|
||||
end
|
||||
if diffPassAll and tmpData.Floor == endFloor then
|
||||
CurrentClick = tmpClick
|
||||
end
|
||||
btn.onClick:AddListener(tmpClick)
|
||||
end
|
||||
if lock == true then
|
||||
do
|
||||
local lv_tex_challenge_Lock = lv_challenge_Lock.transform:Find("btn/lv_tex_challenge_Lock"):GetComponent("TMP_Text")
|
||||
NovaAPI.SetTMPText(lv_tex_challenge_Lock, orderedFormat(ConfigTable.GetUIText("InfinityTower_SpecialLv_Index"), strIndex))
|
||||
lv_challenge_Lock:SetActive(true)
|
||||
local btn = lv_challenge_Lock.transform:Find("btn"):GetComponent("UIButton")
|
||||
btn.onClick:RemoveAllListeners()
|
||||
local tmpClick = function()
|
||||
clickCb(lv_challenge_Lock, NovaAPI.GetTMPText(lv_tex_challenge_Lock), strIndex)
|
||||
end
|
||||
btn.onClick:AddListener(tmpClick)
|
||||
end
|
||||
end
|
||||
end
|
||||
objItem:SetActive(true)
|
||||
end
|
||||
end
|
||||
end
|
||||
self._mapNode.lv_firstTemp:SetActive(true)
|
||||
self._mapNode.lv_endTemp:SetActive(true)
|
||||
self._mapNode.lv_endTemp.transform:SetAsLastSibling()
|
||||
local wait = function()
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
LayoutRebuilder.ForceRebuildLayoutImmediate(self._mapNode.lvListMsgTrans.gameObject:GetComponent("RectTransform"))
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
|
||||
if CurrentClick then
|
||||
CurrentClick()
|
||||
end
|
||||
end
|
||||
cs_coroutine.start(wait)
|
||||
end
|
||||
function InfinityTowerLvList:ShowLvInfo(levelId, index)
|
||||
self.ChooseLevelId = levelId
|
||||
local lvData = ConfigTable.GetData("InfinityTowerLevel", levelId)
|
||||
NovaAPI.SetTMPText(self._mapNode.tex_lvmsgTop_LvIndex, orderedFormat(ConfigTable.GetUIText("InfinityTower_Lv_IndexSpace"), index))
|
||||
NovaAPI.SetTMPText(self._mapNode.tex_lvmsgTop_LvName, lvData.Name)
|
||||
NovaAPI.SetTMPText(self._mapNode.tex_lvmsgTop_ReLvCount, lvData.RecommendLv)
|
||||
local sScore = "Icon/BuildRank/BuildRank_" .. lvData.RecommendBuildRank
|
||||
self:SetPngSprite(self._mapNode.img_lvmsgTop_ReCon, sScore)
|
||||
local childRewardCount = self._mapNode.lvmsgBot_RewardRoot.childCount
|
||||
for i = 1, childRewardCount do
|
||||
self._mapNode.lvmsgBot_RewardRoot:GetChild(i - 1).gameObject:SetActive(false)
|
||||
end
|
||||
local tbItem = {}
|
||||
local _base = decodeJson(lvData.BaseAwardPreview)
|
||||
for k, v in ipairs(_base) do
|
||||
table.insert(tbItem, {
|
||||
id = v[1],
|
||||
count = UTILS.ParseRewardItemCount(v)
|
||||
})
|
||||
end
|
||||
local index = 1
|
||||
for i, v in pairs(tbItem) do
|
||||
local objItem
|
||||
if index > self._mapNode.lvmsgBot_RewardRoot.childCount then
|
||||
objItem = instantiate(self._mapNode.lvmsgBot_RewardItem, self._mapNode.lvmsgBot_RewardRoot)
|
||||
else
|
||||
objItem = self._mapNode.lvmsgBot_RewardRoot:GetChild(index - 1).gameObject
|
||||
end
|
||||
local btn = objItem:GetComponent("UIButton")
|
||||
btn.onClick:RemoveAllListeners()
|
||||
local clickCb = function()
|
||||
self:ShowItemTips(v.id, btn.gameObject)
|
||||
end
|
||||
btn.onClick:AddListener(clickCb)
|
||||
objItem:SetActive(true)
|
||||
local isGet = PlayerData.InfinityTower:JudgeLevelPass(self.selectTowerId, levelId)
|
||||
local _objR = objItem.transform:Find("AniRoot/RewardItem").gameObject
|
||||
self.rewardItem[_objR] = self:BindCtrlByNode(_objR, "Game.UI.TemplateEx.TemplateItemCtrl")
|
||||
self.rewardItem[_objR]:SetItem(v.id, nil, v.count, nil, isGet, nil, nil, true)
|
||||
index = index + 1
|
||||
end
|
||||
local childAffixCount = self._mapNode.lvmsgBot_affixSCRoot.childCount
|
||||
for i = 1, childAffixCount do
|
||||
self._mapNode.lvmsgBot_affixSCRoot:GetChild(i - 1).gameObject:SetActive(false)
|
||||
end
|
||||
local flData = ConfigTable.GetData("InfinityTowerFloor", lvData.FloorId)
|
||||
local tabAffixId = flData.AffixId
|
||||
local indexAffix = 1
|
||||
if lvData.EntryCond ~= 0 then
|
||||
local obj
|
||||
if indexAffix + 1 > self._mapNode.lvmsgBot_affixSCRoot.childCount then
|
||||
obj = instantiate(self._mapNode.lvmsgBot_affix_Item, self._mapNode.lvmsgBot_affixSCRoot)
|
||||
else
|
||||
obj = self._mapNode.lvmsgBot_affixSCRoot:GetChild(indexAffix).gameObject
|
||||
end
|
||||
self:ShowAffixItemMsg(obj, 0, false, false, lvData.EntryCond, lvData.EntryCondParam)
|
||||
indexAffix = indexAffix + 1
|
||||
end
|
||||
for i = 1, #tabAffixId do
|
||||
local obj
|
||||
if indexAffix + 1 > self._mapNode.lvmsgBot_affixSCRoot.childCount then
|
||||
obj = instantiate(self._mapNode.lvmsgBot_affix_Item, self._mapNode.lvmsgBot_affixSCRoot)
|
||||
else
|
||||
obj = self._mapNode.lvmsgBot_affixSCRoot:GetChild(indexAffix).gameObject
|
||||
end
|
||||
local affixId = 0
|
||||
if tabAffixId[i] ~= nil then
|
||||
affixId = tabAffixId[i]
|
||||
end
|
||||
self:ShowAffixItemMsg(obj, affixId, true, false, nil, nil)
|
||||
indexAffix = indexAffix + 1
|
||||
end
|
||||
if indexAffix < 5 then
|
||||
local tmpIndex = indexAffix + 1
|
||||
for i = tmpIndex, 5 do
|
||||
local obj
|
||||
if indexAffix + 1 > self._mapNode.lvmsgBot_affixSCRoot.childCount then
|
||||
obj = instantiate(self._mapNode.lvmsgBot_affix_Item, self._mapNode.lvmsgBot_affixSCRoot)
|
||||
else
|
||||
obj = self._mapNode.lvmsgBot_affixSCRoot:GetChild(indexAffix).gameObject
|
||||
end
|
||||
self:ShowAffixItemMsg(obj, 0, false, true, nil, nil)
|
||||
indexAffix = indexAffix + 1
|
||||
end
|
||||
end
|
||||
self._mapNode.lvmsgRoot:SetActive(true)
|
||||
local zPos = 700
|
||||
if self.gameObject:GetComponent("RectTransform").rect.width == 2160 then
|
||||
zPos = 780
|
||||
end
|
||||
NovaAPI.SetRectMaskPadding(self._mapNode.lvListMsgView, 0, 0, zPos, 0)
|
||||
LayoutRebuilder.ForceRebuildLayoutImmediate(self._mapNode.lvmsgBot_affixSCRoot.gameObject:GetComponent("RectTransform"))
|
||||
local _isPass = PlayerData.InfinityTower:JudgeLevelPass(self.selectTowerId, self.ChooseLevelId)
|
||||
local _isOpenDay = PlayerData.InfinityTower:CheckOpenDay(self.selectTowerId)
|
||||
local _isNextLvNext = PlayerData.InfinityTower:JudgeLevelLock(self.selectTowerId, self.ChooseLevelId)
|
||||
self._mapNode.obj_lvMsgPass:SetActive(_isPass)
|
||||
self._mapNode.obj_lvMsgDontOpen:SetActive(_isNextLvNext)
|
||||
self._mapNode.btn_go.gameObject:SetActive(false)
|
||||
self._mapNode.obj_lvMsgDontOpenDay:SetActive(false)
|
||||
if _isOpenDay then
|
||||
self._mapNode.btn_go.gameObject:SetActive(not _isPass and not _isNextLvNext)
|
||||
elseif not _isNextLvNext and not _isPass then
|
||||
self._mapNode.obj_lvMsgDontOpenDay:SetActive(true)
|
||||
end
|
||||
end
|
||||
function InfinityTowerLvList:ShowItemTips(nTid, rtBtn)
|
||||
UTILS.ClickItemGridWithTips(nTid, rtBtn, false, true, false)
|
||||
end
|
||||
function InfinityTowerLvList:ShowAffixItemMsg(obj, affixId, isAffix, isEmpty, entryCond, entryCondParam)
|
||||
obj:SetActive(true)
|
||||
local lvmsgBot_affix_Item_1 = obj.transform:Find("lvmsgBot_affix_Item_1").gameObject
|
||||
local lvmsgBot_affix_Item_2 = obj.transform:Find("lvmsgBot_affix_Item_2").gameObject
|
||||
local lvmsgBot_affix_Item_3 = obj.transform:Find("lvmsgBot_affix_Item_3").gameObject
|
||||
local lvmsgBot_affix_Item_4 = obj.transform:Find("lvmsgBot_affix_Item_4").gameObject
|
||||
lvmsgBot_affix_Item_1:SetActive(false)
|
||||
lvmsgBot_affix_Item_2:SetActive(false)
|
||||
lvmsgBot_affix_Item_3:SetActive(false)
|
||||
lvmsgBot_affix_Item_4:SetActive(false)
|
||||
if isAffix then
|
||||
lvmsgBot_affix_Item_1:SetActive(true)
|
||||
local tex_1 = lvmsgBot_affix_Item_1.transform:Find("tex_lvmsgBot_affix_Item_1"):GetComponent("TMP_Text")
|
||||
local dataAffix = ConfigTable.GetData("InfinityTowerAffix", affixId)
|
||||
local sDesc = orderedFormat(ConfigTable.GetUIText("InfinityTowerAffix_Desc"), dataAffix.Name, dataAffix.Desc)
|
||||
NovaAPI.SetTMPText(tex_1, UTILS.ParseParamDesc(sDesc, dataAffix))
|
||||
elseif isEmpty then
|
||||
lvmsgBot_affix_Item_4:SetActive(true)
|
||||
else
|
||||
lvmsgBot_affix_Item_2:SetActive(true)
|
||||
local tex_2Title = lvmsgBot_affix_Item_2.transform:Find("tex_lvmsgBot_affix_Item_2/Image/tex_lvmsgBot_affix_Item_2Title"):GetComponent("TMP_Text")
|
||||
NovaAPI.SetTMPText(tex_2Title, ConfigTable.GetUIText("InfinityTower_Limit_March"))
|
||||
local tex_2 = lvmsgBot_affix_Item_2.transform:Find("tex_lvmsgBot_affix_Item_2"):GetComponent("TMP_Text")
|
||||
local strElement = ConfigTable.GetUIText("ELEMENT_" .. entryCondParam[1])
|
||||
if entryCond == GameEnum.InfinityTowerCond.MasterCharactersWithSpecificElementType then
|
||||
NovaAPI.SetTMPText(tex_2, orderedFormat(ConfigTable.GetUIText("InfinityTower_Cond_SpecificElementType"), strElement))
|
||||
elseif entryCond == GameEnum.InfinityTowerCond.ElementTypeWithSpecificQuantityNoLessThanQuantity then
|
||||
NovaAPI.SetTMPText(tex_2, orderedFormat(ConfigTable.GetUIText("InfinityTower_Cond_SpecificQuantityNoLessThanQuantity"), strElement, entryCondParam[2]))
|
||||
elseif entryCond == GameEnum.InfinityTowerCond.ElementTypeWithSpecificQuantityNoMoreThanQuantity then
|
||||
NovaAPI.SetTMPText(tex_2, orderedFormat(ConfigTable.GetUIText("InfinityTower_Cond_SpecificQuantityNoMoreThanQuantity"), strElement, entryCondParam[2]))
|
||||
end
|
||||
end
|
||||
end
|
||||
function InfinityTowerLvList:OnClickMonsterInfo()
|
||||
EventManager.Hit("OpenInfinityTowerMonsterInfo", self.ChooseLevelId)
|
||||
end
|
||||
function InfinityTowerLvList:OnClickCloseLvMsgRoot()
|
||||
self._mapNode.lvmsgRoot:SetActive(false)
|
||||
NovaAPI.SetRectMaskPadding(self._mapNode.lvListMsgView, 0, 0, 0, 0)
|
||||
end
|
||||
function InfinityTowerLvList:OnClickGo()
|
||||
local lvData = ConfigTable.GetData("InfinityTowerLevel", self.ChooseLevelId)
|
||||
local _isPass = PlayerData.InfinityTower:JudgeLevelPass(self.selectTowerId, self.ChooseLevelId)
|
||||
local _isOpenDay = PlayerData.InfinityTower:CheckOpenDay(self.selectTowerId)
|
||||
local _isNextLvNext = PlayerData.InfinityTower:JudgeLevelLock(self.selectTowerId, self.ChooseLevelId)
|
||||
local _isLockWorldClass = PlayerData.InfinityTower:CheckLockWorldClass(self.ChooseLevelId)
|
||||
local towerData = ConfigTable.GetData("InfinityTower", self.selectTowerId)
|
||||
local isUnLock = PlayerData.InfinityTower:CheckTowerUnLock(self.selectTowerId, towerData.PreTowerLevelId)
|
||||
if _isPass then
|
||||
local strTips = ConfigTable.GetUIText("RoguelikeBuild_Manage_FilterPass")
|
||||
EventManager.Hit(EventId.OpenMessageBox, strTips)
|
||||
return
|
||||
elseif not _isOpenDay then
|
||||
local strTips = ConfigTable.GetUIText("RegionBoss_Unlock_OpenDay")
|
||||
EventManager.Hit(EventId.OpenMessageBox, strTips)
|
||||
return
|
||||
elseif _isNextLvNext then
|
||||
local strTips = ConfigTable.GetUIText("InfinityTower_Lock_Level")
|
||||
EventManager.Hit(EventId.OpenMessageBox, strTips)
|
||||
return
|
||||
elseif _isLockWorldClass then
|
||||
local strTips = ConfigTable.GetUIText("InfinityTower_Lock_WorldClass")
|
||||
EventManager.Hit(EventId.OpenMessageBox, strTips)
|
||||
return
|
||||
elseif not isUnLock then
|
||||
local strTips = orderedFormat(ConfigTable.GetUIText("InfinityTower_LockTips"), towerData.Name)
|
||||
EventManager.Hit(EventId.OpenMessageBox, strTips)
|
||||
return
|
||||
end
|
||||
PlayerData.InfinityTower:SetAutoNextLv(false)
|
||||
self._mapNode.lvmsgRoot:SetActive(false)
|
||||
NovaAPI.SetRectMaskPadding(self._mapNode.lvListMsgView, 0, 0, 0, 0)
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.RegionBossFormation, AllEnum.RegionBossFormationType.InfinityTower, lvData.Id, {})
|
||||
end
|
||||
function InfinityTowerLvList:CloseLvList()
|
||||
self.gameObject:SetActive(false)
|
||||
end
|
||||
function InfinityTowerLvList:OnDestroy()
|
||||
for go, ctrl in ipairs(self.rewardItem) do
|
||||
self:UnbindCtrlByNode(ctrl)
|
||||
end
|
||||
self.rewardItem = {}
|
||||
self.parent = nil
|
||||
end
|
||||
return InfinityTowerLvList
|
||||
Reference in New Issue
Block a user