80af235e05
EN: 1.12.0.120 CN: 1.12.0.120 JP: 1.12.0.124 KR: 1.12.0.124
578 lines
19 KiB
Lua
578 lines
19 KiB
Lua
local TowerDefenseLevelDetailCtrl = class("TowerDefenseLevelDetailCtrl", BaseCtrl)
|
|
TowerDefenseLevelDetailCtrl._mapNodeConfig = {
|
|
TopBar = {
|
|
sNodeName = "TopBarPanel",
|
|
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
|
|
},
|
|
TopBarAnimator = {sNodeName = "goBack", sComponentName = "Animator"},
|
|
txt_monsterInfo = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "TowerDef_MonsterInfo"
|
|
},
|
|
txt_title_target = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "TowerDef_Title_Target"
|
|
},
|
|
txt_title_reward = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "TowerDef_Title_RewardInfo"
|
|
},
|
|
go_Monster = {
|
|
sCtrlName = "Game.UI.TemplateEx.TemplateHeadCtrl",
|
|
nCount = 5
|
|
},
|
|
go_QuestInfo = {nCount = 3},
|
|
goEnemyInfo = {
|
|
sCtrlName = "Game.UI.TowerDefense.TowerDefenseMonsterInfoCtrl"
|
|
},
|
|
btn_monsterInfo = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_MonsterInfo"
|
|
},
|
|
btn_rewardInfo = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_RewardInfo"
|
|
},
|
|
item = {
|
|
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl",
|
|
nCount = 4
|
|
},
|
|
ItemBtn = {
|
|
sComponentName = "UIButton",
|
|
nCount = 4,
|
|
callback = "OnBtnClick_Reward"
|
|
},
|
|
txt_item = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "TowerDef_Title_Item"
|
|
},
|
|
txt_char = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "TowerDef_Title_Char"
|
|
},
|
|
txt_charCount = {sComponentName = "TMP_Text"},
|
|
txt_go1 = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "TowerDef_Go"
|
|
},
|
|
btn_go1 = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Go"
|
|
},
|
|
txt_team = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "TowerDef_BuildTeam"
|
|
},
|
|
btn_Team = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_EditorTeam"
|
|
},
|
|
team_character = {
|
|
nCount = 6,
|
|
sCtrlName = "Game.UI.TowerDefense.TowerDefenseSelectedCharCtrl"
|
|
},
|
|
goDragMin = {sComponentName = "Transform"},
|
|
goDragMax = {sComponentName = "Transform"},
|
|
special_item = {},
|
|
db_fixed = {},
|
|
txt_fixed = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "TowerDef_Fixed"
|
|
},
|
|
db_head = {},
|
|
txt_head = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "TowerDef_Head"
|
|
},
|
|
animator = {
|
|
sNodeName = "----SafeAreaRoot_Detail---",
|
|
sComponentName = "Animator"
|
|
},
|
|
teamCtrl = {
|
|
sNodeName = "TowerDefenseTeamPanel",
|
|
sCtrlName = "Game.UI.TowerDefense.TowerDefenseTeamCtrl"
|
|
},
|
|
btn_mapInfo = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_MiniMap"
|
|
},
|
|
txt_mapInfo = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "TowerDef_MapInfo"
|
|
},
|
|
miniMapCtrl = {
|
|
sNodeName = "TowerdefenseMiniMapPanel",
|
|
sCtrlName = "Game.UI.TowerDefense.TowerDefenseMiniMapCtrl"
|
|
}
|
|
}
|
|
TowerDefenseLevelDetailCtrl._mapEventConfig = {
|
|
TowerDefense_CharUpdate = "OnEvent_UpdateCharData",
|
|
TowerDefense_ItemUpdate = "OnEvent_UpdateItemData",
|
|
TowerDefenseTeamPanelConfirm = "OnEvent_Go",
|
|
TowerDefenseTeamPanelClose = "OnEvent_UpdateTeamEditorPanelClose",
|
|
TowerDefense_EditorTeam = "OnEvent_OpenTeamEditorPanel",
|
|
TowerDefenseItemDragStart = "OnEvent_TowerDefenseItemDragStart",
|
|
TowerDefenseItemDragEnd = "OnEvent_TowerDefenseItemDragEnd",
|
|
TowerDefenseItemDragging = "OnEvent_TowerDefenseItemDragging"
|
|
}
|
|
TowerDefenseLevelDetailCtrl._mapRedDotConfig = {}
|
|
function TowerDefenseLevelDetailCtrl:Awake()
|
|
local param = self:GetPanelParam()
|
|
if type(param) == "table" then
|
|
self.nActId = param[1]
|
|
self.nLevelId = param[2]
|
|
end
|
|
self.bInEditorPanel = false
|
|
self.TowerDefenseData = PlayerData.Activity:GetActivityDataById(self.nActId)
|
|
self._mapNode.teamCtrl.gameObject:SetActive(false)
|
|
self._mapNode.miniMapCtrl:Close()
|
|
self:InitGuide()
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:OnEnable()
|
|
for k, v in ipairs(self._mapNode.team_character) do
|
|
v:InitSortingOrder(self._nSortingOrder, self._mapNode.goDragMin, self._mapNode.goDragMax)
|
|
end
|
|
self:UpdateData()
|
|
self:UpdateQuestInfo()
|
|
self:UpdateItem()
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:UpdateData()
|
|
self.levelConfig = ConfigTable.GetData("TowerDefenseLevel", self.nLevelId)
|
|
self:UpdateMonsterInfo()
|
|
self:UpdateQuestInfo()
|
|
self:UpdateItem()
|
|
self:InitTeamData()
|
|
self._mapNode.miniMapCtrl:SetData(self.levelConfig.FloorId)
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:InitGuide()
|
|
local levelConfig = ConfigTable.GetData("TowerDefenseLevel", self.nLevelId)
|
|
if levelConfig == nil then
|
|
return
|
|
end
|
|
local floorConfig = ConfigTable.GetData("TowerDefenseFloor", levelConfig.FloorId)
|
|
if floorConfig == nil then
|
|
return
|
|
end
|
|
if floorConfig.MemberNum == 0 then
|
|
return
|
|
end
|
|
EventManager.Hit("Guide_PassiveCheck_Msg", "Guide_TowerDefense_401")
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:UpdateQuestInfo()
|
|
local levelData = self.TowerDefenseData:GetLevelData(self.nLevelId)
|
|
local nStar = levelData.nStar
|
|
for i = 1, 3 do
|
|
local go_Info = self._mapNode.go_QuestInfo[i].transform:Find("txt_target")
|
|
NovaAPI.SetTMPText(go_Info:GetComponent("TMP_Text"), self.levelConfig["Des" .. i])
|
|
local go_Star = self._mapNode.go_QuestInfo[i].transform:Find("Star")
|
|
go_Star.gameObject:SetActive(i <= nStar)
|
|
end
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:UpdateMonsterInfo()
|
|
for i = 1, 5 do
|
|
self._mapNode.go_Monster[i].gameObject:SetActive(false)
|
|
end
|
|
local groupId = self.levelConfig.MonsterPreview
|
|
local tbMonsterGroup = ConfigTable.GetData("PreviewMonsterGroup", groupId)
|
|
if tbMonsterGroup == nil then
|
|
return
|
|
end
|
|
local tbMonsterConfig = tbMonsterGroup.MonsterIds
|
|
local comp = function(a, b)
|
|
local monsterA = ConfigTable.GetData("Monster", a)
|
|
local monsterB = ConfigTable.GetData("Monster", b)
|
|
if monsterA == nil or monsterB == nil then
|
|
return
|
|
end
|
|
if monsterA.EpicLv ~= monsterB.EpicLv then
|
|
return monsterA.EpicLv < monsterB.EpicLv
|
|
else
|
|
return a < b
|
|
end
|
|
end
|
|
table.sort(tbMonsterConfig, comp)
|
|
for i = 1, 5 do
|
|
local go = self._mapNode.go_Monster[i]
|
|
if i > #tbMonsterConfig then
|
|
go.gameObject:SetActive(false)
|
|
else
|
|
go:SetMonsterHead(tbMonsterConfig[i])
|
|
end
|
|
end
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:UpdateItem()
|
|
self.tbReward = {}
|
|
if self.levelConfig.Item1 ~= 0 then
|
|
table.insert(self.tbReward, {
|
|
nId = self.levelConfig.Item1,
|
|
nCount = self.levelConfig.Qty1
|
|
})
|
|
end
|
|
if self.levelConfig.Item2 ~= 0 then
|
|
table.insert(self.tbReward, {
|
|
nId = self.levelConfig.Item2,
|
|
nCount = self.levelConfig.Qty2
|
|
})
|
|
end
|
|
for i = 1, 4 do
|
|
if i > #self.tbReward then
|
|
self._mapNode.item[i].gameObject:SetActive(false)
|
|
self._mapNode.ItemBtn[i].interactable = false
|
|
else
|
|
local levelData = self.TowerDefenseData:GetLevelData(self.nLevelId)
|
|
self._mapNode.item[i]:SetItem(self.tbReward[i].nId, nil, self.tbReward[i].nCount, nil, 0 < levelData.nStar, true)
|
|
self._mapNode.item[i].gameObject:SetActive(true)
|
|
self._mapNode.ItemBtn[i].interactable = true
|
|
end
|
|
end
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:InitTeamData()
|
|
self.tbCharGuideId = {}
|
|
self.nItemGuideId = 0
|
|
local tempTeamData = self.TowerDefenseData:GetLevelTempTeamData(self.nLevelId)
|
|
if tempTeamData ~= nil then
|
|
if tempTeamData.tbCharGuideId ~= nil then
|
|
self.tbCharGuideId = tempTeamData.tbCharGuideId
|
|
end
|
|
self.nItemGuideId = tempTeamData.itemGuideId
|
|
end
|
|
self:InitDragOrderList()
|
|
self:UpdateCharacter()
|
|
self:UpdateSpecialItem_V1()
|
|
local floorConfig = ConfigTable.GetData("TowerDefenseFloor", self.levelConfig.FloorId)
|
|
if floorConfig == nil then
|
|
return
|
|
end
|
|
self._mapNode.btn_Team.gameObject:SetActive(floorConfig.MemberNum ~= 0)
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:UpdateCharacter()
|
|
local floorConfig = ConfigTable.GetData("TowerDefenseFloor", self.levelConfig.FloorId)
|
|
if floorConfig == nil then
|
|
return
|
|
end
|
|
local teamCharacterCount = floorConfig.MemberNum
|
|
if teamCharacterCount == 0 then
|
|
self.tbCharGuideId = {}
|
|
for k, v in ipairs(floorConfig.TeamGroup) do
|
|
local foreach = function(data)
|
|
if data.ActivityId == self.nActId and data.GuideType == GameEnum.TowerDefGuideType.Character and data.ObjectId == v then
|
|
table.insert(self.tbCharGuideId, data.Id)
|
|
return
|
|
end
|
|
end
|
|
ForEachTableLine(DataTable.TowerDefenseGuide, foreach)
|
|
end
|
|
end
|
|
self._mapNode.db_fixed:SetActive(teamCharacterCount == 0)
|
|
self._mapNode.db_head:SetActive(teamCharacterCount ~= 0)
|
|
for i = 1, 6 do
|
|
if teamCharacterCount == 0 then
|
|
if i > #self.tbCharGuideId then
|
|
self._mapNode.team_character[i]:SetData(-1, false, i)
|
|
else
|
|
self._mapNode.team_character[i]:SetData(self.tbCharGuideId[i], false, i)
|
|
end
|
|
NovaAPI.SetTMPText(self._mapNode.txt_charCount, string.format("<color=#ffde6a>%d</color>/%d", #self.tbCharGuideId, #self.tbCharGuideId))
|
|
self:InitDragOrderList()
|
|
else
|
|
if i > teamCharacterCount then
|
|
self._mapNode.team_character[i]:SetData(-1, false, i)
|
|
elseif i > #self.tbCharGuideId then
|
|
self._mapNode.team_character[i]:SetData(0, true, i)
|
|
else
|
|
self._mapNode.team_character[i]:SetData(self.tbCharGuideId[i], true, i)
|
|
end
|
|
NovaAPI.SetTMPText(self._mapNode.txt_charCount, string.format("<color=#ffde6a>%d</color>/%d", #self.tbCharGuideId, teamCharacterCount))
|
|
end
|
|
end
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:UpdateSpecialItem_V1()
|
|
local floorConfig = ConfigTable.GetData("TowerDefenseFloor", self.levelConfig.FloorId)
|
|
if floorConfig == nil then
|
|
return
|
|
end
|
|
local go_add = self._mapNode.special_item.transform:Find("img_add")
|
|
local go_icon = self._mapNode.special_item.transform:Find("img_icon")
|
|
local go_none = self._mapNode.special_item.transform:Find("img_none")
|
|
go_add.gameObject:SetActive(false)
|
|
go_none.gameObject:SetActive(false)
|
|
go_icon.gameObject:SetActive(false)
|
|
if floorConfig.ItemID == 0 then
|
|
go_none.gameObject:SetActive(true)
|
|
else
|
|
local foreach = function(data)
|
|
if data.ActivityId == self.nActId and data.GuideType == GameEnum.TowerDefGuideType.Item and floorConfig.ItemID == data.ObjectId then
|
|
self.nItemGuideId = data.Id
|
|
end
|
|
end
|
|
ForEachTableLine(DataTable.TowerDefenseGuide, foreach)
|
|
local guideConfig = ConfigTable.GetData("TowerDefenseGuide", self.nItemGuideId)
|
|
local itemConfig = ConfigTable.GetData("TowerDefenseItem", guideConfig.ObjectId)
|
|
if itemConfig ~= nil then
|
|
self:SetPngSprite(go_icon:GetComponent("Image"), itemConfig.CardIcon)
|
|
end
|
|
go_icon.gameObject:SetActive(true)
|
|
end
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:UpdateSpecialItem()
|
|
local floorConfig = ConfigTable.GetData("TowerDefenseFloor", self.levelConfig.FloorId)
|
|
if floorConfig == nil then
|
|
return
|
|
end
|
|
local teamCharacterCount = floorConfig.MemberNum
|
|
if teamCharacterCount == 0 then
|
|
self.nItemGuideId = 0
|
|
local foreach = function(data)
|
|
if data.ActivityId == self.nActId and data.GuideType == GameEnum.TowerDefGuideType.Item and floorConfig.ItemID == data.ObjectId then
|
|
self.nItemGuideId = data.Id
|
|
end
|
|
end
|
|
ForEachTableLine(DataTable.TowerDefenseGuide, foreach)
|
|
end
|
|
local go_add = self._mapNode.special_item.transform:Find("img_add")
|
|
local go_icon = self._mapNode.special_item.transform:Find("img_icon")
|
|
local go_none = self._mapNode.special_item.transform:Find("img_none")
|
|
go_add.gameObject:SetActive(false)
|
|
go_none.gameObject:SetActive(false)
|
|
go_icon.gameObject:SetActive(false)
|
|
if teamCharacterCount == 0 then
|
|
if self.nItemGuideId == nil or self.nItemGuideId == 0 then
|
|
go_none.gameObject:SetActive(true)
|
|
else
|
|
local guideConfig = ConfigTable.GetData("TowerDefenseGuide", self.nItemGuideId)
|
|
local itemConfig = ConfigTable.GetData("TowerDefenseItem", guideConfig.ObjectId)
|
|
if itemConfig ~= nil then
|
|
self:SetPngSprite(go_icon:GetComponent("Image"), itemConfig.CardIcon)
|
|
end
|
|
go_icon.gameObject:SetActive(true)
|
|
end
|
|
elseif self.nItemGuideId == nil or self.nItemGuideId == 0 then
|
|
go_add.gameObject:SetActive(true)
|
|
else
|
|
local guideConfig = ConfigTable.GetData("TowerDefenseGuide", self.nItemGuideId)
|
|
local itemConfig = ConfigTable.GetData("TowerDefenseItem", guideConfig.ObjectId)
|
|
if itemConfig ~= nil then
|
|
self:SetPngSprite(go_icon:GetComponent("Image"), itemConfig.CardIcon)
|
|
end
|
|
go_icon.gameObject:SetActive(true)
|
|
end
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:GoToPlay(callback)
|
|
local floorConfig = ConfigTable.GetData("TowerDefenseFloor", self.levelConfig.FloorId)
|
|
if floorConfig == nil then
|
|
return
|
|
end
|
|
if floorConfig.MemberNum ~= 0 and #self.tbCharGuideId < floorConfig.MemberNum then
|
|
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("TowerDef_Team_Tips"))
|
|
return
|
|
end
|
|
local tbChar = {}
|
|
local itemId = 0
|
|
if self.nItemGuideId ~= 0 then
|
|
local itemGuidConfig = ConfigTable.GetData("TowerDefenseGuide", self.nItemGuideId)
|
|
if itemGuidConfig ~= nil then
|
|
itemId = itemGuidConfig.ObjectId
|
|
end
|
|
end
|
|
for index, id in ipairs(self.tbCharGuideId) do
|
|
local charGuidConfig = ConfigTable.GetData("TowerDefenseGuide", id)
|
|
if charGuidConfig ~= nil then
|
|
table.insert(tbChar, charGuidConfig.ObjectId)
|
|
end
|
|
end
|
|
local sItem = tostring(itemId)
|
|
local sChar = ""
|
|
for index, value in ipairs(tbChar) do
|
|
sChar = sChar .. tostring(value)
|
|
if index ~= #tbChar then
|
|
sChar = sChar .. ","
|
|
end
|
|
end
|
|
local param = {}
|
|
table.insert(param, sItem)
|
|
table.insert(param, sChar)
|
|
local cb = function()
|
|
if callback ~= nil then
|
|
callback()
|
|
end
|
|
self.TowerDefenseData.TowerDefenseLevelData:InitData(self.nLevelId, clone(tbChar), clone(itemId), self.nActId)
|
|
CS.AdventureModuleHelper.EnterTowerDefenseLevel(self.levelConfig.FloorId, param)
|
|
NovaAPI.EnterModule("AdventureModuleScene", true, 27)
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.TowerDefenseHUD)
|
|
end
|
|
self.TowerDefenseData:RequestEnterLevel(self.nLevelId, tbChar, itemId, cb)
|
|
self.TowerDefenseData:SetLevelTeamData(self.nLevelId, self.tbCharGuideId, self.nItemGuideId)
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:EnterTeamEditorPanel()
|
|
self._mapNode.teamCtrl.gameObject:SetActive(true)
|
|
self.bInEditorPanel = true
|
|
self._mapNode.btn_Team.interactable = false
|
|
self._mapNode.btn_go1.interactable = false
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:CloseTeamEditorPanel()
|
|
self._mapNode.teamCtrl.gameObject:SetActive(false)
|
|
self.bInEditorPanel = false
|
|
self._mapNode.btn_Team.interactable = true
|
|
self._mapNode.btn_go1.interactable = true
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:InitDragOrderList()
|
|
self.tbDragOrderList = {}
|
|
for k, v in ipairs(self.tbCharGuideId) do
|
|
self.tbDragOrderList[k] = {}
|
|
self.tbDragOrderList[k].nSortIndex = k
|
|
self.tbDragOrderList[k].nId = v
|
|
self.tbDragOrderList[k].itemCtrl = self._mapNode.team_character[k]
|
|
end
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:OnBtnClick_MonsterInfo()
|
|
EventManager.Hit("OpenTowerDefenseMonsterInfo", self.levelConfig.Id)
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:OnBtnClick_RewardInfo()
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:OnBtnClick_Reward(btn, index)
|
|
local itemData = self.tbReward[index]
|
|
if itemData ~= nil then
|
|
UTILS.ClickItemGridWithTips(itemData.nId, btn.transform, false, true, false)
|
|
end
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:OnBtnClick_Go()
|
|
if self.levelConfig.Skip then
|
|
local CancelCallback = function()
|
|
local tbChar = {}
|
|
local itemId = 0
|
|
if self.nItemGuideId ~= 0 then
|
|
local itemGuidConfig = ConfigTable.GetData("TowerDefenseGuide", self.nItemGuideId)
|
|
if itemGuidConfig ~= nil then
|
|
itemId = itemGuidConfig.ObjectId
|
|
end
|
|
end
|
|
for index, id in ipairs(self.tbCharGuideId) do
|
|
local charGuidConfig = ConfigTable.GetData("TowerDefenseGuide", id)
|
|
if charGuidConfig ~= nil then
|
|
table.insert(tbChar, charGuidConfig.ObjectId)
|
|
end
|
|
end
|
|
local cb = function()
|
|
self:UpdateQuestInfo()
|
|
self:UpdateItem()
|
|
end
|
|
self.TowerDefenseData:SkipLevel(self.nLevelId, tbChar, itemId, cb)
|
|
end
|
|
local ConfirmCallback = function()
|
|
self:GoToPlay()
|
|
end
|
|
local data = {
|
|
nType = AllEnum.MessageBox.Confirm,
|
|
sTitle = ConfigTable.GetUIText("TowerDef_SkipTitle"),
|
|
sContent = ConfigTable.GetUIText("TowerDef_SkipTips"),
|
|
sContentSub = orderedFormat(ConfigTable.GetUIText("TowerDef_SkipSubTips"), self.levelConfig.LevelName),
|
|
sConfirm = ConfigTable.GetUIText("TowerDef_Skip_Go"),
|
|
sCancel = ConfigTable.GetUIText("TowerDef_Skip"),
|
|
callbackConfirmAfterClose = ConfirmCallback,
|
|
callbackCancel = CancelCallback,
|
|
bCloseNoHandler = true
|
|
}
|
|
EventManager.Hit(EventId.OpenMessageBox, data)
|
|
else
|
|
self:GoToPlay()
|
|
end
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:OnBtnClick_EditorTeam()
|
|
if self.bInEditorPanel then
|
|
return
|
|
end
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 0.8)
|
|
self._mapNode.animator:Play("TowerDefenseLevelDetailPanel_switch_in")
|
|
self:EnterTeamEditorPanel()
|
|
self._mapNode.TopBar.gameObject:SetActive(false)
|
|
self._mapNode.teamCtrl:SetData(self.nActId, self.levelConfig.Id, self.tbCharGuideId, self.nItemGuideId)
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:OnBtnClick_Close()
|
|
EventManager.Hit(EventId.ClosePanel, PanelId.TowerDefenseLevelDetailPanel)
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:OnEvent_UpdateCharData(tbCharGuideId)
|
|
self.tbCharGuideId = tbCharGuideId
|
|
self:InitDragOrderList()
|
|
self:UpdateCharacter()
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:OnEvent_UpdateItemData(nItemGuideId)
|
|
self.nItemGuideId = nItemGuideId
|
|
self:UpdateSpecialItem()
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:OnEvent_UpdateTeamEditorPanelClose()
|
|
EventManager.Hit(EventId.TemporaryBlockInput, 0.8)
|
|
self._mapNode.animator:Play("TowerDefenseLevelDetailPanel_switch_out")
|
|
self:AddTimer(1, 0.8, function()
|
|
self:CloseTeamEditorPanel()
|
|
end, true, true, true)
|
|
self._mapNode.TopBar.gameObject:SetActive(true)
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:OnEvent_Go()
|
|
local cb = function()
|
|
local floorConfig = ConfigTable.GetData("TowerDefenseFloor", self.levelConfig.FloorId)
|
|
if floorConfig == nil then
|
|
return
|
|
end
|
|
if floorConfig.MemberNum ~= 0 and #self.tbCharGuideId < floorConfig.MemberNum then
|
|
return
|
|
end
|
|
self:CloseTeamEditorPanel()
|
|
self._mapNode.TopBar.gameObject:SetActive(true)
|
|
end
|
|
self:GoToPlay(cb)
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:OnBtnClick_MiniMap()
|
|
self._mapNode.miniMapCtrl:Open()
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:OnEvent_OpenTeamEditorPanel()
|
|
self:OnBtnClick_EditorTeam()
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:OnEvent_TowerDefenseItemDragStart(objInsId)
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:OnEvent_TowerDefenseItemDragEnd()
|
|
self.tbCharGuideId = {}
|
|
for _, v in ipairs(self.tbDragOrderList) do
|
|
table.insert(self.tbCharGuideId, v.nId)
|
|
end
|
|
self:InitDragOrderList()
|
|
self:UpdateCharacter()
|
|
if self.bInEditorPanel then
|
|
self._mapNode.teamCtrl:UpdateSelectedChar(self.tbCharGuideId)
|
|
end
|
|
end
|
|
function TowerDefenseLevelDetailCtrl:OnEvent_TowerDefenseItemDragging(nDragInsId, nPointerInsId)
|
|
self.nExchangeIdx1 = nil
|
|
self.nExchangeIdx2 = nil
|
|
for k, v in ipairs(self.tbDragOrderList) do
|
|
local nInsId = v.itemCtrl:GetItemBtnInstanceId()
|
|
if nInsId == nDragInsId then
|
|
self.nExchangeIdx1 = k
|
|
end
|
|
if nInsId == nPointerInsId then
|
|
self.nExchangeIdx2 = k
|
|
end
|
|
end
|
|
if nil ~= self.nExchangeIdx1 and nil ~= self.nExchangeIdx2 and self.nExchangeIdx1 ~= self.nExchangeIdx2 then
|
|
self.tbDragOrderList[self.nExchangeIdx1].nSortIndex = self.nExchangeIdx2
|
|
if self.nExchangeIdx1 > self.nExchangeIdx2 then
|
|
for i = self.nExchangeIdx2, self.nExchangeIdx1 - 1 do
|
|
local nCurSort = self.tbDragOrderList[i].nSortIndex + 1
|
|
nCurSort = nCurSort > #self.tbCharGuideId and #self.tbCharGuideId or nCurSort
|
|
self.tbDragOrderList[i].nSortIndex = nCurSort
|
|
self.tbDragOrderList[i].itemCtrl:PlayItemMoveAnim(nCurSort)
|
|
end
|
|
elseif self.nExchangeIdx1 < self.nExchangeIdx2 then
|
|
for i = self.nExchangeIdx1 + 1, self.nExchangeIdx2 do
|
|
local nCurSort = self.tbDragOrderList[i].nSortIndex - 1
|
|
nCurSort = nCurSort <= 0 and 1 or nCurSort
|
|
self.tbDragOrderList[i].nSortIndex = nCurSort
|
|
self.tbDragOrderList[i].itemCtrl:PlayItemMoveAnim(nCurSort)
|
|
end
|
|
end
|
|
table.sort(self.tbDragOrderList, function(a, b)
|
|
return a.nSortIndex < b.nSortIndex
|
|
end)
|
|
end
|
|
end
|
|
return TowerDefenseLevelDetailCtrl
|