35c8d87e86
EN: 1.4.0.73 CN: 1.4.0.74 JP: 1.4.0.77 KR: 1.4.0.80
665 lines
22 KiB
Lua
665 lines
22 KiB
Lua
local InfinityTowerSelectTowerCtrl = class("InfinityTowerSelectTowerCtrl", BaseCtrl)
|
|
local Actor2DManager = require("Game.Actor2D.Actor2DManager")
|
|
local LocalSettingData = require("GameCore.Data.LocalSettingData")
|
|
local Path = require("path")
|
|
local GameResourceLoader = require("Game.Common.Resource.GameResourceLoader")
|
|
local ResTypeAny = GameResourceLoader.ResType.Any
|
|
local typeof = typeof
|
|
local BubbleVoiceManager = require("Game.Actor2D.BubbleVoiceManager")
|
|
local tabItemIndex = {
|
|
[1] = {
|
|
"diffListView_in",
|
|
"diffListView_out",
|
|
"InfinitylvList_out"
|
|
},
|
|
[2] = {
|
|
"diffListView_in_white",
|
|
"diffListView_out_white",
|
|
"InfinitylvList_out_white"
|
|
},
|
|
[3] = {
|
|
"diffListView_in",
|
|
"diffListView_out",
|
|
"InfinitylvList_out"
|
|
},
|
|
[4] = {
|
|
"diffListView_in",
|
|
"diffListView_out",
|
|
"InfinitylvList_out"
|
|
},
|
|
[5] = {
|
|
"diffListView_in",
|
|
"diffListView_out",
|
|
"InfinitylvList_out"
|
|
},
|
|
[6] = {
|
|
"diffListView_in_white",
|
|
"diffListView_out_white",
|
|
"InfinitylvList_out_white"
|
|
},
|
|
[7] = {
|
|
"diffListView_in_white",
|
|
"diffListView_out_white",
|
|
"InfinitylvList_out_white"
|
|
}
|
|
}
|
|
local rabbitRightId = 917302
|
|
local rabbitLeftId = 917402
|
|
local tabNPCTowerId = {
|
|
[1] = rabbitRightId,
|
|
[2] = rabbitLeftId,
|
|
[3] = rabbitRightId,
|
|
[4] = rabbitRightId,
|
|
[5] = rabbitRightId,
|
|
[6] = rabbitLeftId,
|
|
[7] = rabbitLeftId
|
|
}
|
|
InfinityTowerSelectTowerCtrl._mapNodeConfig = {
|
|
ImgBG = {sNodeName = "----BG----", sComponentName = "Image"},
|
|
towerList = {},
|
|
itemCtrl = {
|
|
sNodeName = "item_",
|
|
sCtrlName = "Game.UI.InfinityTower.InfinityTowerSelectTowerItem",
|
|
nCount = 7
|
|
},
|
|
btnBountyLevel = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnClickBountyLevel"
|
|
},
|
|
btnRedDotBounty = {
|
|
sNodeName = "redDotBounty",
|
|
sComponentName = "UIButton",
|
|
callback = "OnClickDotBounty"
|
|
},
|
|
btn_texBounty = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "InfinityTower_Bounty_Level"
|
|
},
|
|
btn_texBountyLevel = {sComponentName = "TMP_Text"},
|
|
redDotBounty = {},
|
|
btnPlot = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnClickPlot"
|
|
},
|
|
btn_texPlot = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "InfinityTower_Plot_Entry"
|
|
},
|
|
redDotPlot = {},
|
|
diffListView = {},
|
|
dlv_Diff_Select = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "InfinityTower_Difficulty_Select"
|
|
},
|
|
diffList = {
|
|
sComponentName = "LoopScrollView"
|
|
},
|
|
tex_WeekTips = {sComponentName = "TMP_Text"},
|
|
lvList = {},
|
|
lvListInfo = {
|
|
sNodeName = "lvList",
|
|
sCtrlName = "Game.UI.InfinityTower.InfinityTowerLvList"
|
|
},
|
|
bgLvList = {},
|
|
tv = {},
|
|
goEnemyInfo = {
|
|
sCtrlName = "Game.UI.MainlineEx.MainlineMonsterInfoCtrl"
|
|
},
|
|
bottomBg = {},
|
|
bottom_Daily = {
|
|
sCtrlName = "Game.UI.InfinityTower.InfinityTowerRollMsg"
|
|
},
|
|
bottom_Breakout = {
|
|
sCtrlName = "Game.UI.InfinityTower.InfinityTowerRollMsg"
|
|
},
|
|
bottom_News = {
|
|
nCount = 3,
|
|
sCtrlName = "Game.UI.InfinityTower.InfinityTowerRollMsg"
|
|
},
|
|
bottomList = {
|
|
sComponentName = "RectTransform"
|
|
},
|
|
goBountyView = {
|
|
sCtrlName = "Game.UI.InfinityTower.InfinityTowerBounty"
|
|
},
|
|
goPlot_blur = {},
|
|
goPlot_MaskClose = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnClickClosePlot"
|
|
},
|
|
goPlotView = {
|
|
sCtrlName = "Game.UI.InfinityTower.InfinityTowerPlot"
|
|
},
|
|
TopBarPanel = {
|
|
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
|
|
},
|
|
light = {},
|
|
color = {},
|
|
trRoot_L = {
|
|
sNodeName = "----Actor2DLeft302----",
|
|
sComponentName = "Transform"
|
|
},
|
|
trRoot_R = {
|
|
sNodeName = "----Actor2DRight402----",
|
|
sComponentName = "Transform"
|
|
},
|
|
Actor2DLeft = {
|
|
sNodeName = "rawImg_L_302",
|
|
sComponentName = "RawImage"
|
|
},
|
|
Actor2DPngL = {sNodeName = "png_L_302", sComponentName = "Transform"},
|
|
Actor2DRight = {
|
|
sNodeName = "rawImg_R_402",
|
|
sComponentName = "RawImage"
|
|
},
|
|
Actor2DPngR = {sNodeName = "png_R_402", sComponentName = "Transform"},
|
|
goBubbleRootLeft = {
|
|
sNodeName = "----fixed_bubble302----"
|
|
},
|
|
goBubbleRootLeftCanvas = {
|
|
sNodeName = "----fixed_bubble302----",
|
|
sComponentName = "Canvas"
|
|
},
|
|
goBubbleRootRight = {
|
|
sNodeName = "----fixed_bubble402----"
|
|
},
|
|
goBubbleRootRightCanvas = {
|
|
sNodeName = "----fixed_bubble402----",
|
|
sComponentName = "Canvas"
|
|
},
|
|
btnActor = {
|
|
sComponentName = "Button",
|
|
callback = "OnBtnClick_Actor"
|
|
}
|
|
}
|
|
InfinityTowerSelectTowerCtrl._mapEventConfig = {
|
|
[EventId.UIHomeConfirm] = "OnEvent_Home",
|
|
[EventId.UIBackConfirm] = "OnEvent_Back",
|
|
Infinity_Select_Tower = "OnEvent_InfinitySelectTower",
|
|
Get_InfinityTower_InfoReq = "OnEvent_GetInfinityTowerInfoReq",
|
|
Guide_DisableScrollView = "OnEvent_DisableScrollView",
|
|
[EventId.ShowBubbleVoiceText] = "OnEvent_ShowBubbleVoiceText"
|
|
}
|
|
InfinityTowerSelectTowerCtrl._mapRedDotConfig = {
|
|
[RedDotDefine.Map_InfinityTowerDaily] = {
|
|
sNodeName = "redDotBounty"
|
|
},
|
|
[RedDotDefine.Map_InfinityTowerPlot] = {sNodeName = "redDotPlot"}
|
|
}
|
|
function InfinityTowerSelectTowerCtrl:Awake()
|
|
self.AnimPanel = self.gameObject:GetComponent("Animator")
|
|
self.npcHFCcounter = ConfigTable.GetConfigNumber("NpcHFCcounter")
|
|
self.npcHFCtimer = ConfigTable.GetConfigNumber("NpcHFCtimer")
|
|
self.npcHangtimer = ConfigTable.GetConfigNumber("NpcHangtimer")
|
|
self.UseLive2D = LocalSettingData.mapData.UseLive2D
|
|
self._mapNode.towerList:SetActive(false)
|
|
self.pageType = PlayerData.InfinityTower:GetPageState()
|
|
self.mapDiffGrid = {}
|
|
if not PlayerData.InfinityTower:GetInitInfoState() then
|
|
PlayerData.InfinityTower:GetITInfoReq()
|
|
end
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:FadeIn()
|
|
if self.pageType == 1 and self._panel.openTowerId == nil then
|
|
EventManager.Hit(EventId.SetTransition)
|
|
local waitCallback = function()
|
|
self.AnimPanel:Play("InfinityTowerList_in")
|
|
end
|
|
self:AddTimer(1, 0.5, waitCallback, true, true, true, nil)
|
|
end
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:FadeOut()
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:OnEnable()
|
|
if self._panel.openTowerId == nil then
|
|
if self.pageType == 3 and self.selectTowerId == nil then
|
|
self.pageType = 1
|
|
end
|
|
if self.pageType <= 2 then
|
|
self:LoadBG(0)
|
|
else
|
|
self:LoadBG(self.selectTowerId)
|
|
end
|
|
self:InitBottomRollMsg()
|
|
if PlayerData.InfinityTower:GetInitInfoState() then
|
|
self:OnInitPanelInfo()
|
|
end
|
|
else
|
|
self:InitBottomRollMsg()
|
|
if not PlayerData.InfinityTower:GetInitInfoState() then
|
|
self.pageType = 2
|
|
self.selectTowerId = self._panel.openTowerId
|
|
self._panel.openTowerId = nil
|
|
else
|
|
self:OnEvent_InfinitySelectTower(self._panel.openTowerId, true, false)
|
|
self._panel.openTowerId = nil
|
|
self._mapNode.bgLvList:SetActive(false)
|
|
end
|
|
end
|
|
self:AddTimer(1, 0.2, function()
|
|
self:LoadRabbit()
|
|
end, true, true, true, nil)
|
|
local sortingOrder = NovaAPI.GetCanvasSortingOrder(self.gameObject:GetComponent("Canvas"))
|
|
NovaAPI.SetCanvasSortingName(self._mapNode.goBubbleRootLeftCanvas, self._panel._sSortingLayerName)
|
|
NovaAPI.SetCanvasSortingName(self._mapNode.goBubbleRootRightCanvas, self._panel._sSortingLayerName)
|
|
NovaAPI.SetCanvasSortingOrder(self._mapNode.goBubbleRootLeftCanvas, sortingOrder + 2)
|
|
NovaAPI.SetCanvasSortingOrder(self._mapNode.goBubbleRootRightCanvas, sortingOrder + 2)
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:OnInitPanelInfo()
|
|
self:InitTower()
|
|
if self.pageType == 1 then
|
|
self._mapNode.towerList:SetActive(true)
|
|
self._mapNode.diffListView:SetActive(false)
|
|
self._mapNode.lvList:SetActive(false)
|
|
self._mapNode.tv:SetActive(false)
|
|
self._mapNode.bgLvList:SetActive(false)
|
|
self._mapNode.bottomBg:SetActive(true)
|
|
self:AddTimer(1, 1, function()
|
|
if PlayerData.Guide:CheckInGuideGroup(18) then
|
|
EventManager.Hit("InfinityTowerPanelOpenFinish", self.pageType)
|
|
end
|
|
end, true, true, true)
|
|
elseif self.pageType == 2 then
|
|
self._mapNode.bgLvList:SetActive(false)
|
|
self:OnEvent_InfinitySelectTower(self.selectTowerId, true, false)
|
|
elseif self.pageType == 3 then
|
|
self._mapNode.towerList:SetActive(false)
|
|
self._mapNode.diffListView:SetActive(false)
|
|
self._mapNode.lvList:SetActive(true)
|
|
self._mapNode.tv:SetActive(true)
|
|
self._mapNode.bgLvList:SetActive(true)
|
|
self._mapNode.bottomBg:SetActive(false)
|
|
local diffSort = PlayerData.InfinityTower:GetSelectLvSortId()
|
|
self:InfinitySelectTower(self.selectTowerId, diffSort)
|
|
self:AddTimer(1, 0.2, function()
|
|
if PlayerData.Guide:CheckInGuideGroup(18) then
|
|
EventManager.Hit("InfinityTowerPanelOpenFinish", self.pageType)
|
|
end
|
|
end, true, true, true)
|
|
end
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:OnEvent_GetInfinityTowerInfoReq()
|
|
self:OnInitPanelInfo()
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:OnEvent_EntryInfinityTowerMap()
|
|
BubbleVoiceManager.StopBubbleAnim()
|
|
BubbleVoiceManager.StopBubbleAnim_EX()
|
|
PlayerData.Voice:StopCharVoice()
|
|
PlayerData.Voice:ClearTimer()
|
|
self.pageType = 1
|
|
PlayerData.InfinityTower:SetPageState(1)
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:OnDisable()
|
|
self:UnbindAllGrids()
|
|
self:UnLoadRabbit()
|
|
if self.bottomListTweener ~= nil then
|
|
self.bottomListTweener:Kill()
|
|
end
|
|
self.AutoCloseBubbleTimer = nil
|
|
if self.twinTimer ~= nil then
|
|
self.twinTimer:Cancel()
|
|
end
|
|
PlayerData.Voice:ClearTimer()
|
|
BubbleVoiceManager.StopBubbleAnim()
|
|
BubbleVoiceManager.StopBubbleAnim_EX()
|
|
PlayerData.Voice:ClearTimer()
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:OnDestroy()
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:OnRelease()
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:LoadBG(towerId)
|
|
local sFullPath = ""
|
|
if self.pageType == 3 and towerId == 0 then
|
|
return
|
|
end
|
|
if self.pageType <= 2 then
|
|
sFullPath = string.format("Image/UIBG/%s", "bg_infinitytower_pk_08")
|
|
else
|
|
local towerData = ConfigTable.GetData("InfinityTower", towerId)
|
|
sFullPath = string.format("Image/UIBG/%s", towerData.Bg)
|
|
end
|
|
if self._mapNode and self._mapNode.ImgBG then
|
|
self:SetPngSprite(self._mapNode.ImgBG, sFullPath)
|
|
end
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:InitTower()
|
|
for i = 1, 7 do
|
|
self._mapNode.itemCtrl[i]:InitTowerMsg(i)
|
|
end
|
|
NovaAPI.SetTMPText(self._mapNode.btn_texBountyLevel, tostring(PlayerData.InfinityTower.BountyLevel))
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:InitBottomRollMsg()
|
|
self._mapNode.bottom_Daily:InitRoll(GameEnum.InfinityTowerMsgType.Daily, 1)
|
|
self._mapNode.bottom_Breakout:InitRoll(GameEnum.InfinityTowerMsgType.Breakout, 1)
|
|
for i = 1, 3 do
|
|
self._mapNode.bottom_News[i]:InitRoll(GameEnum.InfinityTowerMsgType.News, i)
|
|
end
|
|
self._mapNode.bottomList.anchoredPosition = Vector2(Settings.DESIGN_SCREEN_RESOLUTION_WIDTH, 25)
|
|
self:RefreshBottomMsg()
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:RefreshBottomMsg()
|
|
if self.bottomListTweener ~= nil then
|
|
self.bottomListTweener:Kill()
|
|
end
|
|
PlayerData.InfinityTower:RandomBottomMsg()
|
|
self._mapNode.bottom_Daily:SetMsg()
|
|
self._mapNode.bottom_Breakout:SetMsg()
|
|
for i = 1, 3 do
|
|
self._mapNode.bottom_News[i]:SetMsg()
|
|
end
|
|
local waitCall = function()
|
|
if self._mapNode.bottomList and type(self._mapNode.bottomList) ~= "number" then
|
|
self._mapNode.bottomList.gameObject:SetActive(true)
|
|
self._mapNode.bottomList.anchoredPosition = Vector2(Settings.DESIGN_SCREEN_RESOLUTION_WIDTH, 25)
|
|
local tmpWidth = self._mapNode.bottomList.rect.width + Settings.DESIGN_SCREEN_RESOLUTION_WIDTH * 0.5 + 100
|
|
local moveDis = tmpWidth + Settings.DESIGN_SCREEN_RESOLUTION_WIDTH
|
|
local tmpTime = math.ceil(moveDis / 250)
|
|
self.bottomListTweener = Sequence()
|
|
self.bottomListTweener:Append(self._mapNode.bottomList:DOLocalMoveX(-tmpWidth, tmpTime))
|
|
self.bottomListTweener:OnComplete(function()
|
|
self._mapNode.bottomList.gameObject:SetActive(false)
|
|
self:RefreshBottomMsg()
|
|
end)
|
|
self.bottomListTweener:SetUpdate(true)
|
|
end
|
|
end
|
|
self:AddTimer(1, 1.5, waitCall, true, true, true, nil)
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:OnEvent_InfinitySelectTower(towerId, isPlayAniViewIn, isNPCVoice)
|
|
BubbleVoiceManager.StopBubbleAnim()
|
|
BubbleVoiceManager.StopBubbleAnim_EX()
|
|
PlayerData.Voice:StopCharVoice()
|
|
self.pageType = 2
|
|
PlayerData.InfinityTower:SetPageState(2)
|
|
if isPlayAniViewIn then
|
|
self._mapNode.diffList.gameObject:SetActive(false)
|
|
end
|
|
self._mapNode.diffListView:SetActive(true)
|
|
self.selectTowerId = towerId
|
|
local towerData = ConfigTable.GetData("InfinityTower", towerId)
|
|
local texKey = towerData.OpenDayDesc
|
|
NovaAPI.SetTMPText(self._mapNode.tex_WeekTips, ConfigTable.GetUIText(texKey))
|
|
local count = PlayerData.InfinityTower:GetTowerDiffCount(towerId)
|
|
if isPlayAniViewIn then
|
|
local waitShowItem = function()
|
|
self._mapNode.diffList.gameObject:SetActive(true)
|
|
self._mapNode.diffList:SetAnim(0.1)
|
|
self._mapNode.diffList:Init(count, self, self.InitDiffList)
|
|
end
|
|
self:AddTimer(1, 0.65, waitShowItem, true, true, true, nil)
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 0.75)
|
|
else
|
|
self._mapNode.diffList:SetAnim(0.1)
|
|
self._mapNode.diffList:Init(count, self, self.InitDiffList)
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 0.5)
|
|
end
|
|
local waitCallback = function()
|
|
self._mapNode.towerList:SetActive(false)
|
|
end
|
|
self:AddTimer(1, 0.3, waitCallback, true, true, true, nil)
|
|
if isPlayAniViewIn then
|
|
local sAnim = tabItemIndex[towerId][1]
|
|
local nAnimLen = NovaAPI.GetAnimClipLength(self.AnimPanel, {sAnim})
|
|
self.AnimPanel:Play(sAnim)
|
|
self:AddTimer(1, nAnimLen, function()
|
|
if PlayerData.Guide:CheckInGuideGroup(18) then
|
|
EventManager.Hit("InfinityTowerPanelOpenFinish", self.pageType)
|
|
end
|
|
end, true, true, true)
|
|
else
|
|
self.AnimPanel:Play(tabItemIndex[towerId][3])
|
|
end
|
|
if isNPCVoice then
|
|
if self.twinTimer ~= nil then
|
|
self.twinTimer:Cancel()
|
|
end
|
|
self:PlayOneNpcVoiceGreen()
|
|
end
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:InitDiffList(goGrid, gridIndex)
|
|
if self.mapDiffGrid[goGrid] == nil then
|
|
self.mapDiffGrid[goGrid] = self:BindCtrlByNode(goGrid, "Game.UI.InfinityTower.InfinityTowerDifficultyItem")
|
|
end
|
|
local nIdx = gridIndex + 1
|
|
self.mapDiffGrid[goGrid]:InitDiffList(self.selectTowerId, nIdx, self)
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:InfinitySelectTower(towerId, diffSort)
|
|
BubbleVoiceManager.StopBubbleAnim()
|
|
BubbleVoiceManager.StopBubbleAnim_EX()
|
|
PlayerData.Voice:StopCharVoice()
|
|
self.pageType = 3
|
|
PlayerData.Voice:ClearTimer()
|
|
PlayerData.InfinityTower:SetPageState(3)
|
|
self:SetLightActive(false)
|
|
self:LoadBG(towerId)
|
|
self._mapNode.towerList:SetActive(false)
|
|
self._mapNode.diffListView:SetActive(false)
|
|
self._mapNode.lvList:SetActive(true)
|
|
self._mapNode.tv:SetActive(true)
|
|
self._mapNode.bgLvList:SetActive(true)
|
|
self._mapNode.bottomBg:SetActive(false)
|
|
self.selectTowerId = towerId
|
|
PlayerData.InfinityTower:SetSelectLvSortId(diffSort)
|
|
self._mapNode.lvListInfo:InitLvList(towerId, diffSort, self)
|
|
self.AnimPanel:Play("InfinityTowerlvList_in")
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:UnbindAllGrids()
|
|
for go, ctrl in ipairs(self.mapDiffGrid) do
|
|
self:UnbindCtrlByNode(ctrl)
|
|
end
|
|
self.mapDiffGrid = {}
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:InitSelectLvMsg(towerId, floor)
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:ShowAffixItem(tabAffixId)
|
|
local childCount = self._mapNode.affixSCRoot.childCount
|
|
for i = 1, childCount do
|
|
self._mapNode.affixSCRoot:GetChild(i - 1).gameObject:SetActive(false)
|
|
end
|
|
local tmpCount = 3
|
|
if 3 < #tabAffixId then
|
|
tmpCount = #tmpCount
|
|
end
|
|
local index = 1
|
|
for i = 1, tmpCount do
|
|
local obj
|
|
if index + 1 > self._mapNode.affixSCRoot.childCount then
|
|
obj = instantiate(self._mapNode.affix_ItemList, self._mapNode.affixSCRoot)
|
|
else
|
|
obj = self._mapNode.affixSCRoot:GetChild(index).gameObject
|
|
end
|
|
local affixId = 0
|
|
if tabAffixId[i] ~= nil then
|
|
affixId = tabAffixId[i]
|
|
end
|
|
self:ShowAffixItemMsg(obj, affixId)
|
|
index = index + 1
|
|
end
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:ShowAffixItemMsg(obj, affixId)
|
|
local affix_texItem = obj.transform:Find("affix_texItem"):GetComponent("TMP_Text")
|
|
local tmp_Affix = obj.transform:Find("tmp_Affix").gameObject
|
|
if affixId == 0 then
|
|
affix_texItem.gameObject:SetActive(false)
|
|
tmp_Affix:SetActive(true)
|
|
else
|
|
affix_texItem.gameObject:SetActive(true)
|
|
tmp_Affix:SetActive(false)
|
|
local dataAffix = ConfigTable.GetData("InfinityTowerAffix", affixId)
|
|
local sDesc = orderedFormat(ConfigTable.GetUIText("InfinityTowerAffix_Desc"), dataAffix.Name, dataAffix.Desc)
|
|
NovaAPI.SetTMPText(affix_texItem, UTILS.ParseParamDesc(sDesc, dataAffix))
|
|
end
|
|
obj:SetActive(true)
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:RefreshMonsterGrid(goGrid, gridIndex)
|
|
local index = gridIndex + 1
|
|
local mapMonster = self.tbMonster[index]
|
|
if mapMonster == nil then
|
|
return
|
|
end
|
|
local imgIcon = goGrid.transform:Find("btnGrid/AnimRoot/tc_head_01/--Basic--/imgIcon"):GetComponent("Image")
|
|
local goSelect = goGrid.transform:Find("btnGrid/AnimRoot/tc_head_01/--Common--").gameObject
|
|
local goBoss = goGrid.transform:Find("btnGrid/AnimRoot/tc_head_01/--Monster--/goBoss").gameObject
|
|
local goElite = goGrid.transform:Find("btnGrid/AnimRoot/tc_head_01/--Monster--/goElite").gameObject
|
|
local btn = goGrid.transform:Find("btnGrid"):GetComponent("UIButton")
|
|
local nMonsterId = mapMonster.PreviewMonsterListId
|
|
btn.onClick:RemoveAllListeners()
|
|
local minLevel = self.tbMonster[index].MinLv
|
|
local maxLevel = self.tbMonster[index].MaxLv
|
|
local _strLv = ""
|
|
if minLevel == maxLevel then
|
|
_strLv = minLevel
|
|
else
|
|
_strLv = maxLevel
|
|
end
|
|
local clickCb = function()
|
|
local mapData = {nTid = nMonsterId, strLv = _strLv}
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.MonsterTips, btn.gameObject, mapData)
|
|
end
|
|
btn.onClick:AddListener(clickCb)
|
|
local cfgDataMonster = ConfigTable.GetData("PreviewMonsterList", nMonsterId)
|
|
if nil ~= cfgDataMonster then
|
|
self:SetPngSprite(imgIcon, cfgDataMonster.Icon)
|
|
goSelect:SetActive(false)
|
|
goBoss:SetActive(cfgDataMonster.EpicLv == GameEnum.monsterEpicType.LORD)
|
|
goElite:SetActive(cfgDataMonster.EpicLv == GameEnum.monsterEpicType.LEADER or cfgDataMonster.EpicLv == GameEnum.monsterEpicType.ELITE)
|
|
end
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:OnClickBountyLevel()
|
|
self._mapNode.goBountyView:InitView()
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:OnClickDotBounty()
|
|
if PlayerData.InfinityTower.isHaveDailyReward then
|
|
PlayerData.InfinityTower:ITDailyRewardReq()
|
|
end
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:OnClickPlot()
|
|
self._mapNode.goPlot_blur:SetActive(true)
|
|
self._mapNode.goPlotView:OpenPlotView()
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:OnClickClosePlot()
|
|
self._mapNode.goPlot_blur:SetActive(false)
|
|
self._mapNode.goPlotView:OnBtnClick_Close()
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:OnEvent_Home(nPanelId)
|
|
if self._panel._nPanelId ~= nPanelId then
|
|
return
|
|
end
|
|
PlayerData.InfinityTower:SetPageState(1)
|
|
PanelManager.Home()
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:OnEvent_Back(nPanelId)
|
|
if self._panel._nPanelId ~= nPanelId then
|
|
return
|
|
end
|
|
BubbleVoiceManager.StopBubbleAnim()
|
|
BubbleVoiceManager.StopBubbleAnim_EX()
|
|
PlayerData.Voice:StopCharVoice()
|
|
if self.pageType == 3 then
|
|
self.pageType = 2
|
|
PlayerData.InfinityTower:SetPageState(2)
|
|
self:SetLightActive(true)
|
|
self:OnEvent_InfinitySelectTower(self.selectTowerId, false, true)
|
|
self:LoadBG(0)
|
|
self._mapNode.lvList:SetActive(false)
|
|
self._mapNode.tv:SetActive(false)
|
|
self._mapNode.bgLvList:SetActive(false)
|
|
self._mapNode.bottomBg:SetActive(true)
|
|
elseif self.pageType == 2 then
|
|
self.pageType = 1
|
|
PlayerData.Voice:ClearTimer()
|
|
PlayerData.InfinityTower:SetPageState(1)
|
|
self._mapNode.towerList:SetActive(true)
|
|
local waitCallback = function()
|
|
self._mapNode.diffListView:SetActive(false)
|
|
end
|
|
self:AddTimer(1, 0.3, waitCallback, true, true, true, nil)
|
|
self:InitTower()
|
|
self.AnimPanel:Play(tabItemIndex[self.selectTowerId][2])
|
|
else
|
|
EventManager.Hit(EventId.CloesCurPanel)
|
|
PlayerData.InfinityTower:SetPageState(1)
|
|
end
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:SetLightActive(isActive)
|
|
self._mapNode.light:SetActive(isActive)
|
|
self._mapNode.color:SetActive(isActive)
|
|
self._mapNode.trRoot_L.localScale = isActive == true and Vector3.one or Vector3.zero
|
|
self._mapNode.trRoot_R.localScale = isActive == true and Vector3.one or Vector3.zero
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:LoadRabbit()
|
|
self._mapNode.Actor2DLeft.transform.localScale = self.UseLive2D == true and Vector3.one or Vector3.zero
|
|
self._mapNode.Actor2DRight.transform.localScale = self.UseLive2D == true and Vector3.one or Vector3.zero
|
|
self._mapNode.Actor2DPngL.localScale = self.UseLive2D == true and Vector3.zero or Vector3.one
|
|
self._mapNode.Actor2DPngR.localScale = self.UseLive2D == true and Vector3.zero or Vector3.one
|
|
if self.UseLive2D == true then
|
|
Actor2DManager.SetBoardNPC2D(self:GetPanelId(), self._mapNode.Actor2DLeft, rabbitLeftId, nil, nil, 1)
|
|
Actor2DManager.SetBoardNPC2D(self:GetPanelId(), self._mapNode.Actor2DRight, rabbitRightId, nil, nil, 2)
|
|
else
|
|
Actor2DManager.SetBoardNPC2D_PNG(self._mapNode.Actor2DPngL, self:GetPanelId(), rabbitLeftId)
|
|
Actor2DManager.SetBoardNPC2D_PNG(self._mapNode.Actor2DPngR, self:GetPanelId(), rabbitRightId)
|
|
end
|
|
if self.pageType == 1 then
|
|
self:PlayTwoNpcVoice()
|
|
elseif self.pageType == 2 then
|
|
self:PlayOneNpcVoiceGreen()
|
|
end
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:UnLoadRabbit()
|
|
Actor2DManager.UnsetBoardNPC2D(1)
|
|
Actor2DManager.UnsetBoardNPC2D(2)
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:OnEvent_DisableScrollView(bDisable)
|
|
NovaAPI.SetScrollRectVertical(self._mapNode.diffList, not bDisable)
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:PlayOneNpcVoiceGreen()
|
|
local npcId = rabbitLeftId
|
|
if self.pageType == 2 then
|
|
npcId = tabNPCTowerId[self.selectTowerId]
|
|
PlayerData.Voice:StartBoardFreeTimer(npcId)
|
|
end
|
|
local isFirst, sKey = PlayerData.InfinityTower:GetNPCVoiceKey(npcId)
|
|
if isFirst then
|
|
PlayerData.Voice:PlayCharVoice(sKey, npcId, nil, true)
|
|
else
|
|
local tab = {"greet_npc", sKey}
|
|
if PlayerData.InfinityTower.isLevelClear then
|
|
tab = {"clear"}
|
|
PlayerData.InfinityTower.isLevelClear = false
|
|
end
|
|
PlayerData.Voice:PlayCharVoice(tab, npcId, nil, true)
|
|
end
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:PlayTwoNpcVoice()
|
|
local key = PlayerData.Voice:PlayCharVoice("twin_greet", rabbitLeftId, nil, true)
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:OnEvent_ShowBubbleVoiceText(nNpcId, nId)
|
|
local mapVoDirectoryData = ConfigTable.GetData("VoDirectory", nId)
|
|
if mapVoDirectoryData == nil then
|
|
printError("VoDirectory未找到数据id:" .. nId)
|
|
return
|
|
end
|
|
if self.pageType == 1 then
|
|
BubbleVoiceManager.PlayFixedBubbleAnim(self._mapNode.goBubbleRootLeft, mapVoDirectoryData.voResource, 1)
|
|
BubbleVoiceManager.PlayFixedBubbleAnim_EX(self._mapNode.goBubbleRootRight, mapVoDirectoryData.voResource)
|
|
elseif self.pageType == 2 then
|
|
if nNpcId == rabbitLeftId then
|
|
BubbleVoiceManager.PlayFixedBubbleAnim(self._mapNode.goBubbleRootLeft, mapVoDirectoryData.voResource, 1)
|
|
else
|
|
BubbleVoiceManager.PlayFixedBubbleAnim(self._mapNode.goBubbleRootRight, mapVoDirectoryData.voResource, 2)
|
|
end
|
|
end
|
|
end
|
|
function InfinityTowerSelectTowerCtrl:OnBtnClick_Actor()
|
|
if self.pageType == 3 then
|
|
return
|
|
elseif self.pageType == 2 then
|
|
local npcId = tabNPCTowerId[self.selectTowerId]
|
|
PlayerData.Voice:PlayBoardNPCClickVoice(npcId)
|
|
elseif self.pageType == 1 then
|
|
self:PlayTwoNpcVoice()
|
|
end
|
|
end
|
|
return InfinityTowerSelectTowerCtrl
|