327 lines
14 KiB
Lua
327 lines
14 KiB
Lua
require("Base/BasePanel")
|
||
local GodsWayOtherTeamPanel = Inherit(BasePanel)
|
||
local XiuXianSkillConfig = ConfigManager.GetConfig(ConfigName.XiuXianSkillConfig)
|
||
local endLess = ConfigManager.GetConfig(ConfigName.EndlessHeroProp)
|
||
local heroConfig = ConfigManager.GetConfig(ConfigName.HeroConfig)
|
||
local type = 0 --1:挑战 2:详情
|
||
local floor = 0
|
||
local itemId, needNum
|
||
local haveNum = 0
|
||
local time = 0
|
||
local enemyId
|
||
local curMsg = nil
|
||
function GodsWayOtherTeamPanel:InitComponent()
|
||
self.spLoader = SpriteLoader.New()
|
||
self.btnBack = Util.GetGameObject(self.gameObject, "Frame/other/BackBtn")
|
||
self.titleTxt = Util.GetGameObject(self.gameObject, "Frame/other/title"):GetComponent("Text")
|
||
self.mask = Util.GetGameObject(self.gameObject, "mask")
|
||
self.Frame = Util.GetGameObject(self.gameObject, "Frame")
|
||
self.content = Util.GetGameObject(self.gameObject, "Frame/Content")
|
||
|
||
--队伍信息
|
||
self.teamInfo = Util.GetGameObject(self.content, "teamInfo")
|
||
self.teamList = {}
|
||
for i = 1, 3 do
|
||
self.teamList[i] = {}
|
||
self.teamList[i].title = Util.GetGameObject(self.teamInfo, "Team (" .. i .. ")/Title")
|
||
self.teamList[i].go = Util.GetGameObject(self.teamInfo, "Team (" .. i .. ")")
|
||
|
||
self.teamList[i].warPower = Util.GetGameObject(self.teamInfo, "Team (" .. i .. ")/WarPower/Text"):GetComponent(
|
||
"Text")
|
||
self.teamList[i].heroList = {}
|
||
for j = 1, 6 do
|
||
self.teamList[i].heroList[j] = {}
|
||
self.teamList[i].heroList[j].go = Util.GetGameObject(self.teamInfo,
|
||
"Team (" .. i .. ")/TeamList/heroPro (" .. j .. ")")
|
||
self.teamList[i].heroList[j].frame = Util.GetGameObject(self.teamList[i].heroList[j].go, "frame")
|
||
:GetComponent("Image")
|
||
self.teamList[i].heroList[j].hero = Util.GetGameObject(self.teamList[i].heroList[j].go, "hero")
|
||
self.teamList[i].heroList[j].starGrid = Util.GetGameObject(self.teamList[i].heroList[j].hero, "starGrid")
|
||
self.teamList[i].heroList[j].proIcon = Util.GetGameObject(self.teamList[i].heroList[j].hero, "proIcon")
|
||
:GetComponent("Image")
|
||
self.teamList[i].heroList[j].levelText = Util.GetGameObject(self.teamList[i].heroList[j].hero,
|
||
"lvbg/levelText"):GetComponent("Text")
|
||
self.teamList[i].heroList[j].icon = Util.GetGameObject(self.teamList[i].heroList[j].hero, "icon")
|
||
:GetComponent("Image")
|
||
end
|
||
self.teamList[i].go:SetActive(false)
|
||
end
|
||
--灵兽信息
|
||
self.pokemonInfo = Util.GetGameObject(self.content, "pokemonInfo")
|
||
self.pokemonList = {}
|
||
for i = 1, 6 do
|
||
self.pokemonList[i] = Util.GetGameObject(self.pokemonInfo, "Demons/heroPro (" .. i .. ")")
|
||
end
|
||
--神印信息
|
||
self.imprintInfo = Util.GetGameObject(self.content, "imprintInfo")
|
||
self.imprintGrid = Util.GetGameObject(self.imprintInfo, "Imprints")
|
||
self.imprintPre = Util.GetGameObject(self.gameObject, "Frame/other/imprintPre")
|
||
self.imprintItemList = {}
|
||
--挑战
|
||
self.btnChallenge = Util.GetGameObject(self.Frame, "Button")
|
||
self.challengeTxt = Util.GetGameObject(self.Frame, "Button/Text"):GetComponent("Text")
|
||
end
|
||
|
||
--绑定事件(用于子类重写)
|
||
function GodsWayOtherTeamPanel:BindEvent()
|
||
Util.AddClick(self.mask, function()
|
||
self:ClosePanel()
|
||
end)
|
||
Util.AddClick(self.btnBack, function()
|
||
LogError("点击关闭按钮")
|
||
self:ClosePanel()
|
||
end)
|
||
Util.AddClick(self.btnChallenge, function()
|
||
LogError("显示开展信息")
|
||
local myTeams = GodsWayTeam[type]
|
||
--local floor=GodsWayTowerManager.GetTowerFloorByType(type)
|
||
-- if self.trailData.canFightTime > 0 then
|
||
local windData = {}
|
||
--我的队伍
|
||
local myTeamInfo = {}
|
||
--敌方队伍
|
||
local enTeamInfo = {}
|
||
--获取双方队伍数据
|
||
local allHeroTeam = {}
|
||
local allEnTeam = {}
|
||
local myTeamNum = 0
|
||
for i = 1, #myTeams do
|
||
--local fightData=fightDataList[i]
|
||
local heroTeam = {}
|
||
heroTeam.team = {}
|
||
heroTeam.totalForce = FormationManager.GetFormationPower(myTeams[i])
|
||
--LogError("myforce=="..msg.recordData.yxldMyForce[i])
|
||
local enTeam = {}
|
||
enTeam.team = {}
|
||
|
||
--LogError("en force=="..msg.recordData.yxldDefForce[i])
|
||
local myteam = FormationManager.GetFormationByID(myTeams[i])
|
||
for j = 1, #myteam.teamHeroInfos do
|
||
myTeamNum = myTeamNum + 1
|
||
local hero = myteam.teamHeroInfos[j]
|
||
local newHero = {}
|
||
local heroData = HeroManager.GetSingleHeroData(hero.heroId)
|
||
newHero.heroTid = heroData.heroConfig.Id
|
||
--local pro=string.split(hero.property,"#")
|
||
newHero.level = heroData.lv
|
||
newHero.heroid = heroData.dynamicId
|
||
newHero.star = heroData.star
|
||
--newHero.godSoulLv = hero.godSoulLv
|
||
newHero.position = hero.position
|
||
newHero.skinId = heroData.skinId
|
||
table.insert(heroTeam.team, newHero)
|
||
end
|
||
LogError("Type=====" .. type .. " TowerNumber=====" .. floor .. " TowerWave1" .. i)
|
||
local monsterData = ConfigManager.TryGetConfigDataByThreeKey(ConfigName.DuoDuiTower, "Type", type,
|
||
"TowerNumber", floor, "TowerWave1", i)
|
||
if monsterData then
|
||
enTeam.totalForce = monsterData.Force
|
||
for j = 1, #monsterData.Hero do
|
||
local hero = monsterData.Hero[j]
|
||
local config = ConfigManager.GetConfigData(ConfigName.DuoDuiTowerHero, hero)
|
||
local newHero = {}
|
||
newHero.heroTid = config.Hero
|
||
--local pro=string.split(hero.property,"#")
|
||
newHero.level = monsterData.Level
|
||
--newHero.heroid=hero.realId
|
||
newHero.star = monsterData.Star
|
||
--newHero.godSoulLv = hero.godSoulLv
|
||
newHero.position = j
|
||
--newHero.skinId=hero.skinId
|
||
table.insert(enTeam.team, newHero)
|
||
end
|
||
end
|
||
table.insert(allHeroTeam, heroTeam)
|
||
table.insert(allEnTeam, enTeam)
|
||
-- allHeroTeam[i]=heroTeam
|
||
-- allEnTeam[i]=enTeam
|
||
end
|
||
if myTeamNum == 0 then
|
||
PopupTipPanel.ShowTip(Language[12999])
|
||
return
|
||
end
|
||
myTeamInfo.crossTeam = allHeroTeam
|
||
enTeamInfo.crossTeam = allEnTeam
|
||
|
||
windData.myTeamInfo = myTeamInfo
|
||
windData.defTeamInfo = enTeamInfo
|
||
--windData.fightData=fightDataList
|
||
UIManager.OpenPanel(UIName.GodsWayBattleInfoPanel, windData, 1, type)
|
||
--显示挑战界面
|
||
self:ClosePanel()
|
||
end)
|
||
end
|
||
|
||
--添加事件监听(用于子类重写)
|
||
function GodsWayOtherTeamPanel:AddListener()
|
||
end
|
||
|
||
--移除事件监听(用于子类重写)
|
||
function GodsWayOtherTeamPanel:RemoveListener()
|
||
end
|
||
|
||
--界面打开时调用(用于子类重写)
|
||
function GodsWayOtherTeamPanel:OnOpen(_type, _floor)
|
||
type = _type
|
||
floor = _floor
|
||
end
|
||
|
||
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
|
||
function GodsWayOtherTeamPanel:OnShow()
|
||
local curFloor = GodsWayTowerManager.GetTowerFloorByType(type)
|
||
self.btnChallenge:SetActive(curFloor + 1 == floor)
|
||
LogError("floor===" .. floor)
|
||
self.titleTxt.text = Language[10286] .. floor .. Language[10295]
|
||
local towers = ConfigManager.TryGetAllConfigsDataByDoubleKey(ConfigName.DuoDuiTower, "Type", type, "TowerNumber",
|
||
floor)
|
||
local reward = towers[1].Item
|
||
local num = #towers > 3 and 3 or #towers
|
||
for i = 1, num do
|
||
self.teamList[i].go:SetActive(true)
|
||
self.teamList[i].warPower.text = towers[i].Force
|
||
for j = 1, 6 do
|
||
self.teamList[i].heroList[j].go:SetActive(false)
|
||
end
|
||
|
||
for j = 1, #towers[i].Hero do
|
||
self.teamList[i].heroList[j].go:SetActive(true)
|
||
local id = towers[i].Hero[j]
|
||
local aaa = ConfigManager.GetConfigData(ConfigName.DuoDuiTowerHero, id)
|
||
self.teamList[i].heroList[j].frame.sprite = self.spLoader:LoadSprite(GetQuantityImageByquality(
|
||
heroConfig[aaa.Hero].Quality, towers[i].Star))
|
||
local star, starType = GetStarOrGodSoulLv(1, { star = towers[i].Star })
|
||
local starScale = -15
|
||
local starSize = Vector2.New(32, 32)
|
||
if starType == 3 then
|
||
starScale = -16
|
||
starSize = Vector2.New(0.8, -15)
|
||
elseif starType == 2 then
|
||
starSize = Vector2.New(48, 48)
|
||
end
|
||
SetHeroStars(self.spLoader, self.teamList[i].heroList[j].starGrid, star, nil, nil, -10)
|
||
Util.SetParticleSortLayer(self.teamList[i].heroList[j].starGrid, self.sortingOrder + 1)
|
||
self.teamList[i].heroList[j].proIcon.sprite = self.spLoader:LoadSprite(GetProStrImageByProNum(heroConfig
|
||
[aaa.Hero].PropertyName))
|
||
self.teamList[i].heroList[j].levelText.text = towers[i].Level
|
||
self.teamList[i].heroList[j].icon.sprite = self.spLoader:LoadSprite(GetResourcePath(heroConfig[aaa.Hero]
|
||
.Icon))
|
||
end
|
||
end
|
||
-- if self.imprintItemList and #self.imprintItemList>0 then
|
||
|
||
-- end
|
||
local len = #reward - #self.imprintItemList
|
||
if len > 0 then
|
||
for i = 1, len do
|
||
local obj = SubUIManager.Open(SubUIConfig.ItemView, self.imprintGrid.transform)
|
||
table.insert(self.imprintItemList, obj)
|
||
end
|
||
end
|
||
for i = 1, #self.imprintItemList do
|
||
if i <= #reward then
|
||
self.imprintItemList[i]:OnOpen(false, reward[i], 1, true, false, false, self.sortingOrder)
|
||
else
|
||
self.imprintItemList[i]:SetActive(false)
|
||
end
|
||
end
|
||
end
|
||
|
||
function GodsWayOtherTeamPanel:OnSortingOrderChange()
|
||
if self.PlayerHead then
|
||
self.PlayerHead:SetLayer(self.sortingOrder)
|
||
end
|
||
for k, v in pairs(self.teamList) do
|
||
for m, n in pairs(v.heroList) do
|
||
Util.SetParticleSortLayer(n.starGrid, self.sortingOrder + 1)
|
||
end
|
||
end
|
||
end
|
||
|
||
--实在不想算了,直接写死吧,毁灭吧
|
||
function GodsWayOtherTeamPanel:SetImgPos(_go, data)
|
||
local img = Util.GetGameObject(_go, "WarPower/Img")
|
||
local warPower = Util.GetGameObject(_go, "WarPower/Text"):GetComponent("Text")
|
||
local setPos = function(num)
|
||
if num >= 10 and num < 100 then
|
||
img.transform.localPosition = Vector2.New(55.6, 0)
|
||
elseif num >= 100 and num < 1000 then
|
||
img.transform.localPosition = Vector2.New(77.3, 0)
|
||
elseif num >= 1000 and num < 10000 then
|
||
img.transform.localPosition = Vector2.New(103.4, 0)
|
||
end
|
||
end
|
||
if data < 100000 then
|
||
warPower.text = data
|
||
img:SetActive(false)
|
||
elseif data >= 100000000 then
|
||
warPower.text = math.floor(data / 100000000)
|
||
img:SetActive(true)
|
||
img:GetComponent("Image").sprite = self.spLoader:LoadSprite("bd_zhanli-yi")
|
||
setPos(math.floor(data / 100000000))
|
||
else
|
||
warPower.text = math.floor(data / 10000)
|
||
img:SetActive(true)
|
||
img:GetComponent("Image").sprite = self.spLoader:LoadSprite("bd_zhanli-wan")
|
||
setPos(math.floor(data / 10000))
|
||
end
|
||
end
|
||
|
||
local serverName = nil
|
||
|
||
|
||
|
||
--灵兽信息
|
||
function GodsWayOtherTeamPanel:SetPokemonInfo(go, pokemonData)
|
||
local len = #pokemonData
|
||
if len > 0 then
|
||
self.pokemonInfo:SetActive(true)
|
||
for i, demon in ipairs(self.pokemonList) do
|
||
demon.gameObject:SetActive(false)
|
||
Util.GetGameObject(demon, "frame"):GetComponent("Image").sprite = self.spLoader:LoadSprite(
|
||
GetQuantityImageByquality(1))
|
||
Util.GetGameObject(demon, "hero"):SetActive(false)
|
||
end
|
||
else
|
||
self.pokemonInfo:SetActive(false)
|
||
end
|
||
for i, hero in ipairs(pokemonData) do
|
||
local demonId = pokemonData[i].heroTid
|
||
self.pokemonList[i].gameObject:SetActive(true)
|
||
if demonId then
|
||
local heroGo = Util.GetGameObject(self.pokemonList[i], "hero")
|
||
heroGo:SetActive(true)
|
||
SetHeroStars(self.spLoader, Util.GetGameObject(heroGo, "starGrid"), hero.star)
|
||
local heroConfig = ConfigManager.GetConfigData(ConfigName.SpiritAnimal, demonId)
|
||
Util.GetGameObject(heroGo, "lvbg/levelText"):GetComponent("Text").text = hero.level
|
||
Util.GetGameObject(self.pokemonList[i], "frame"):GetComponent("Image").sprite = self.spLoader:LoadSprite(
|
||
GetQuantityImageByquality(heroConfig.Quality))
|
||
Util.GetGameObject(heroGo, "icon"):GetComponent("Image").sprite = self.spLoader:LoadSprite(GetResourcePath(
|
||
heroConfig.Icon))
|
||
local frameBtn = Util.GetGameObject(self.pokemonList[i], "frame")
|
||
local heroData = {}
|
||
Util.AddOnceClick(frameBtn, function()
|
||
local pokemonData = { tempId = demonId, id = demonId, star = hero.star, level = hero.level }
|
||
UIManager.OpenPanel(UIName.PokemonGetInfoPopup, true, pokemonData)
|
||
end)
|
||
end
|
||
end
|
||
end
|
||
|
||
function GodsWayOtherTeamPanel:OnClose()
|
||
|
||
end
|
||
|
||
--界面销毁时调用(用于子类重写)
|
||
function GodsWayOtherTeamPanel:OnDestroy()
|
||
self.spLoader:Destroy()
|
||
self.InfoList = {}
|
||
self.dragViewList = {}
|
||
self.triggerList = {}
|
||
self.gridList = {}
|
||
self.teamList = {}
|
||
self.pokemonList = {}
|
||
self.imprintItemList = {}
|
||
end
|
||
|
||
return GodsWayOtherTeamPanel
|