Files
StellaSora_DataLua/lua/game/ui/infinitytower/infinitytowerselecttowerctrl.lua
T
SL1900 35c8d87e86 Update - 1.4.0.73
EN: 1.4.0.73
CN: 1.4.0.74
JP: 1.4.0.77
KR: 1.4.0.80
2025-12-25 19:00:00 +09:00

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