eafd8f4088
EN: 1.9.0.107 CN: 1.9.0.108 JP: 1.9.0.112 KR: 1.9.0.112
214 lines
6.7 KiB
Lua
214 lines
6.7 KiB
Lua
local ConfigData = require("GameCore.Data.ConfigData")
|
|
local TowerDefenseLevelTipsCtrl = class("TowerDefenseLevelTipsCtrl", BaseCtrl)
|
|
TowerDefenseLevelTipsCtrl._mapNodeConfig = {
|
|
monsterTemp = {},
|
|
charTemp = {},
|
|
listParent = {
|
|
sNodeName = "List",
|
|
sComponentName = "RectTransform"
|
|
}
|
|
}
|
|
TowerDefenseLevelTipsCtrl._mapEventConfig = {
|
|
TowerDefenseShowFullScreenPanel = "OnEvent_OnPause",
|
|
TowerDefenseShowHideScreenPanel = "OnEvent_OnResume"
|
|
}
|
|
TowerDefenseLevelTipsCtrl._mapRedDotConfig = {}
|
|
local tipsType = {CHAR = 1, MONSTER = 2}
|
|
local spaceValue = 18
|
|
local addCdValue = 0.1
|
|
local moveTime = 0.2
|
|
local startPosY = 0
|
|
function TowerDefenseLevelTipsCtrl:Awake()
|
|
self._mapNode.monsterTemp:SetActive(false)
|
|
self._mapNode.charTemp:SetActive(false)
|
|
self.sequence = DOTween.Sequence()
|
|
self.sequence:SetUpdate(true)
|
|
self.ShowQueue = {}
|
|
self.WaitQueue = {}
|
|
self.bInCD = false
|
|
self.cdTimer = nil
|
|
self.bInMove = false
|
|
self.tbMoveTweer = {}
|
|
end
|
|
function TowerDefenseLevelTipsCtrl:AddQueue(nId, nType)
|
|
table.insert(self.WaitQueue, {nId = nId, nType = nType})
|
|
self:CheckShowQueue()
|
|
end
|
|
function TowerDefenseLevelTipsCtrl:CheckShowQueue()
|
|
print("===================ShowQueueBeigin" .. tostring(self.bInCD), tostring(self.bInMove))
|
|
if #self.ShowQueue == 3 then
|
|
return
|
|
end
|
|
if #self.WaitQueue == 0 then
|
|
return
|
|
end
|
|
if self.bInCD then
|
|
return
|
|
end
|
|
if self.bInMove then
|
|
return
|
|
end
|
|
print("===================ShowQueue")
|
|
local tipsData = self.WaitQueue[1]
|
|
table.remove(self.WaitQueue, 1)
|
|
if tipsData.nType == tipsType.CHAR then
|
|
local charData = {
|
|
nId = tipsData.nId,
|
|
obj = nil,
|
|
showTimer = nil
|
|
}
|
|
self:ShowCharTips(charData)
|
|
table.insert(self.ShowQueue, charData)
|
|
else
|
|
if tipsData.nType == tipsType.MONSTER then
|
|
local monsterData = {
|
|
nId = tipsData.nId,
|
|
obj = nil,
|
|
showTimer = nil
|
|
}
|
|
self:ShowMonsterTips(monsterData)
|
|
table.insert(self.ShowQueue, monsterData)
|
|
else
|
|
end
|
|
end
|
|
self.bInCD = true
|
|
self.cdTimer = self:AddTimer(1, addCdValue, function()
|
|
self.bInCD = false
|
|
self:CheckShowQueue()
|
|
end, true, true, true)
|
|
end
|
|
function TowerDefenseLevelTipsCtrl:ShowCharTips(charData)
|
|
local characterConfig = ConfigTable.GetData("TowerDefenseCharacter", charData.nId)
|
|
if characterConfig == nil then
|
|
return
|
|
end
|
|
local obj = instantiate(self._mapNode.charTemp, self._mapNode.listParent)
|
|
local objTra = obj:GetComponent("RectTransform")
|
|
objTra.anchoredPosition = Vector2(objTra.anchoredPosition.x, startPosY - #self.ShowQueue * 131.823 - #self.ShowQueue * spaceValue)
|
|
charData.obj = obj
|
|
local animator = obj:GetComponent("Animator")
|
|
local icon = obj.transform:Find("icon_bg/icon"):GetComponent("Image")
|
|
local txt_Title = obj.transform:Find("txt_title"):GetComponent("TMP_Text")
|
|
local txt_Name = obj.transform:Find("txt_name"):GetComponent("TMP_Text")
|
|
self:SetPngSprite(icon, characterConfig.Icon .. AllEnum.CharHeadIconSurfix.QM)
|
|
NovaAPI.SetTMPText(txt_Name, characterConfig.Name)
|
|
NovaAPI.SetTMPText(txt_Title, ConfigTable.GetUIText("TowerDef_Tips_Title"))
|
|
local close = function()
|
|
animator:Play("TowerDefenseMonsterTipsPanel_out")
|
|
charData.showTimer = self:AddTimer(1, 0.2, function()
|
|
local index = table.indexof(self.ShowQueue, charData)
|
|
table.remove(self.ShowQueue, index)
|
|
self:MoveOtherUI()
|
|
destroy(charData.obj)
|
|
self:ClearTipData(charData)
|
|
end, true, true, true)
|
|
end
|
|
obj:SetActive(true)
|
|
animator:Play("TowerDefenseMonsterTipsPanel_in")
|
|
self:AddTimer(1, 5, close, true, true, true)
|
|
end
|
|
function TowerDefenseLevelTipsCtrl:ShowMonsterTips(monsterData)
|
|
local config = ConfigTable.GetData("TowerDefenseMonster", monsterData.nId)
|
|
if config == nil then
|
|
return
|
|
end
|
|
local monsterConfig = ConfigTable.GetData("Monster", config.Id)
|
|
if monsterConfig == nil then
|
|
return
|
|
end
|
|
local skinConfig = ConfigTable.GetData("MonsterSkin", monsterConfig.FAId)
|
|
if skinConfig == nil then
|
|
return
|
|
end
|
|
local manualConfig = ConfigTable.GetData("MonsterManual", skinConfig.MonsterManual)
|
|
if manualConfig == nil then
|
|
return
|
|
end
|
|
local obj = instantiate(self._mapNode.monsterTemp, self._mapNode.listParent)
|
|
local objTra = obj:GetComponent("RectTransform")
|
|
objTra.anchoredPosition = Vector2(objTra.anchoredPosition.x, startPosY - #self.ShowQueue * 131.823 - #self.ShowQueue * spaceValue)
|
|
monsterData.obj = obj
|
|
local animator = obj:GetComponent("Animator")
|
|
local icon = obj.transform:Find("icon_monster"):GetComponent("Image")
|
|
local txt_Name = obj.transform:Find("txt_name"):GetComponent("TMP_Text")
|
|
local txt_Des = obj.transform:Find("txt_des"):GetComponent("TMP_Text")
|
|
self:SetPngSprite(icon, manualConfig.Icon)
|
|
NovaAPI.SetTMPText(txt_Name, manualConfig.Name)
|
|
NovaAPI.SetTMPText(txt_Des, config.Brief)
|
|
local close = function()
|
|
animator:Play("TowerDefenseMonsterTipsPanel_out")
|
|
monsterData.showTimer = self:AddTimer(1, 0.2, function()
|
|
local index = table.indexof(self.ShowQueue, monsterData)
|
|
table.remove(self.ShowQueue, index)
|
|
self:MoveOtherUI()
|
|
destroy(monsterData.obj)
|
|
self:ClearTipData(monsterData)
|
|
end, true, true, true)
|
|
end
|
|
obj:SetActive(true)
|
|
animator:Play("TowerDefenseMonsterTipsPanel_in")
|
|
self:AddTimer(1, 5, close, true, true, true)
|
|
end
|
|
function TowerDefenseLevelTipsCtrl:MoveOtherUI()
|
|
if #self.tbMoveTweer > 0 then
|
|
for i = 1, #self.tbMoveTweer do
|
|
local tweer = self.tbMoveTweer[i]
|
|
tweer:Kill()
|
|
end
|
|
self.bInMove = false
|
|
end
|
|
self.tbMoveTweer = {}
|
|
self.bInMove = true
|
|
if #self.ShowQueue == 0 then
|
|
self.bInMove = false
|
|
self:CheckShowQueue()
|
|
else
|
|
for i = 1, #self.ShowQueue do
|
|
local data = self.ShowQueue[i]
|
|
if data.obj ~= nil then
|
|
local objTra = data.obj:GetComponent("RectTransform")
|
|
if i == #self.ShowQueue then
|
|
local tweer = objTra:DOLocalMoveY(startPosY - (i - 1) * 131.823 - math.min(#self.ShowQueue - 1, 0) * spaceValue, moveTime):SetUpdate(true)
|
|
tweer:OnComplete(function()
|
|
self.bInMove = false
|
|
self:CheckShowQueue()
|
|
end)
|
|
table.insert(self.tbMoveTweer, tweer)
|
|
else
|
|
local tweer = objTra:DOLocalMoveY(startPosY - (i - 1) * 131.823 - math.min(#self.ShowQueue - 1, 0) * spaceValue, moveTime):SetUpdate(true)
|
|
table.insert(self.tbMoveTweer, tweer)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
function TowerDefenseLevelTipsCtrl:ClearTipData(tipData)
|
|
if tipData.showTimer == nil then
|
|
return
|
|
end
|
|
tipData.showTimer:_Stop()
|
|
end
|
|
function TowerDefenseLevelTipsCtrl:OnEvent_OnPause()
|
|
if self.cdTimer ~= nil then
|
|
self.cdTimer:Pause(true)
|
|
end
|
|
if #self.tbMoveTweer > 0 then
|
|
for i = 1, #self.tbMoveTweer do
|
|
local tweer = self.tbMoveTweer[i]
|
|
tweer:Pause()
|
|
end
|
|
end
|
|
end
|
|
function TowerDefenseLevelTipsCtrl:OnEvent_OnResume()
|
|
if self.cdTimer ~= nil then
|
|
self.cdTimer:Pause(false)
|
|
end
|
|
if #self.tbMoveTweer > 0 then
|
|
for i = 1, #self.tbMoveTweer do
|
|
local tweer = self.tbMoveTweer[i]
|
|
tweer:Play()
|
|
end
|
|
end
|
|
end
|
|
return TowerDefenseLevelTipsCtrl
|