1422 lines
58 KiB
Lua
1422 lines
58 KiB
Lua
-- 编队动作
|
||
FORMATION_ACTION = {
|
||
DOWN = 0, -- 下阵神将
|
||
UP = 1 -- 上阵神将
|
||
}
|
||
require("Base/BasePanel")
|
||
FormationPanelV2 = Inherit(BasePanel)
|
||
local this = FormationPanelV2
|
||
local heroConfig = ConfigManager.GetConfig(ConfigName.HeroConfig)
|
||
local elementalResonanceConfig = ConfigManager.GetConfig(ConfigName.ElementalResonanceConfig)
|
||
local endLess = ConfigManager.GetConfig(ConfigName.EndlessHeroProp)
|
||
local roleConfig = ConfigManager.GetConfig(ConfigName.RoleConfig)
|
||
local orginLayer
|
||
local curFormation --打开面板编队信息
|
||
this.choosedList = {} --选择上阵列表 临时数据
|
||
this.curFormationIndex = 1 --当前编队索引
|
||
this.trigger = {}
|
||
|
||
local bgListGo = {} --上阵背景预设
|
||
local heroListGo = {} --英雄上阵预设列表
|
||
local maskListGo = {} --上阵遮罩
|
||
local dragViewListGo = {} --dragView预设列表
|
||
|
||
local effectList = {} --特效列表
|
||
local tabs = {} --筛选按钮
|
||
local proId = 0 --0 全部 1 火 2风 3 水 4 地
|
||
|
||
local sortType = 1 -- 1:品阶 2:等级
|
||
|
||
local chooseIndex = 0
|
||
local chooseHeroObj --当前选中英雄
|
||
|
||
this.formationPower = 0 --战力
|
||
local oldPowerNum = 0 --旧战力
|
||
local tempPowerNum = 0 --临时战力
|
||
|
||
-- local liveNodes={}--立绘容器
|
||
-- local liveNames={}--立绘名容器
|
||
|
||
local panelType
|
||
local parameter --透传参数
|
||
local tabsImg = { "z_icon_01_zh", "r_hero_huo 1_zh", "r_hero_feng 1_zh", "r_hero_shui 1_zh", "r_hero_dadi 1_zh",
|
||
"r_hero_sk 1_zh" }
|
||
local isPress = false
|
||
-- 各个类型编队系统逻辑列表
|
||
this.PanelOptionView = {
|
||
[FORMATION_TYPE.CARBON] = "Modules/Formation/View/CarbonFormation",
|
||
[FORMATION_TYPE.STORY] = "Modules/Formation/View/StoryFormation",
|
||
[FORMATION_TYPE.MAIN] = "Modules/Formation/View/MainFormation",
|
||
[FORMATION_TYPE.ARENA_DEFEND] = "Modules/Formation/View/ArenaDefendFormation",
|
||
[FORMATION_TYPE.ARENA_ATTACK] = "Modules/Formation/View/ArenaAttackFormation",
|
||
[FORMATION_TYPE.ARENA_TOP_MATCH] = "Modules/Formation/View/ArenaTopMatchFormation",
|
||
[FORMATION_TYPE.ADVENTURE] = "Modules/Formation/View/AdventureFormation",
|
||
[FORMATION_TYPE.ADVENTURE_BOSS] = "Modules/Formation/View/AdventureBossFormation",
|
||
[FORMATION_TYPE.ELITE_MONSTER] = "Modules/Formation/View/EliteMonsterFormation",
|
||
[FORMATION_TYPE.GUILD_DEFEND] = "Modules/Formation/View/GuildFightDefendFormation",
|
||
[FORMATION_TYPE.GUILD_ATTACK] = "Modules/Formation/View/GuildFightAttackFormation",
|
||
[FORMATION_TYPE.GUILD_BOSS] = "Modules/Formation/View/GuildBossFormation",
|
||
[FORMATION_TYPE.MONSTER_CAMP] = "Modules/Formation/View/MonsterCampFormation",
|
||
[FORMATION_TYPE.BLOODY_BATTLE] = "Modules/Formation/View/FormFightFormation",
|
||
[FORMATION_TYPE.PLAY] = "Modules/Formation/View/PlayWithSBFormation",
|
||
[FORMATION_TYPE.EXPEDITION] = "Modules/Formation/View/ExpeditionFormation",
|
||
[FORMATION_TYPE.SAVE_FORMATION] = "Modules/Formation/View/SaveFormation",
|
||
[FORMATION_TYPE.GUILD_CAR_DELEAY] = "Modules/Formation/View/GuildCarDeleayFormation",
|
||
[FORMATION_TYPE.GUILD_DEATHPOS] = "Modules/Formation/View/GuildDeathPosFormation",
|
||
[FORMATION_TYPE.XUANYUAN_MIRROR] = "Modules/Formation/View/XuanYuanMirrorFormation",
|
||
[FORMATION_TYPE.GUILD_TRANSCRIPT] = "Modules/Formation/View/GuildTranscriptFormation",
|
||
[FORMATION_TYPE.FOUR_ELEMENT] = "Modules/Formation/View/FourElementFormation",
|
||
[FORMATION_TYPE.FIGHTLEVEL] = "Modules/Formation/View/FightLevelFormation",
|
||
[FORMATION_TYPE.JUMPSERVER_HIGHTLADDER] = "Modules/Formation/View/JumpServerHightLadderFormation",
|
||
[FORMATION_TYPE.WORLDARENA] = "Modules/Formation/View/WorldArenaFormation",
|
||
[FORMATION_TYPE.QIJIESHILIAN] = "Modules/Formation/View/QiJieFormation",
|
||
[FORMATION_TYPE.LINGMAIMIJING] = "Modules/Formation/View/LingMaiFormation",
|
||
[FORMATION_TYPE.ExploreFunc] = "Modules/Formation/View/ExploreFormation",
|
||
[FORMATION_TYPE.ChallengeCopy_1] = "Modules/Formation/View/ChallengeCopyFormation",
|
||
[FORMATION_TYPE.ChallengeCopy_2] = "Modules/Formation/View/ChallengeCopyFormation",
|
||
[FORMATION_TYPE.GodsWayTower_two] = "Modules/Formation/View/GodsWayTowerFormation",
|
||
[FORMATION_TYPE.GodsWayTower_three] = "Modules/Formation/View/GodsWayTowerFormation",
|
||
[FORMATION_TYPE.BecomeAGod] = "Modules/Formation/View/GodsWayTowerFormation",
|
||
}
|
||
function this:InitComponent()
|
||
this.spLoader = SpriteLoader.New()
|
||
orginLayer = 0
|
||
this.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform, { showType = UpViewOpenType.ShowLeft })
|
||
this.bg = Util.GetGameObject(this.gameObject, "Bg")
|
||
this.backBtn = Util.GetGameObject(this.gameObject, "BackBtn")
|
||
this.exampleBtn = Util.GetGameObject(this.gameObject, "ExampleBtn")
|
||
this.effect = Util.GetGameObject(this.gameObject, "effect")
|
||
this.power = Util.GetGameObject(this.gameObject, "Power/Value"):GetComponent("Text")
|
||
this.root = Util.GetGameObject(this.gameObject, "Root")
|
||
Util.GetGameObject(this.gameObject, "Power"):GetComponent("Image").sprite = this.spLoader:LoadSprite(
|
||
"t_tongyong-zhanli_zh")
|
||
|
||
this.roleGrid = Util.GetGameObject(this.gameObject, "RoleGrid")
|
||
this.line = Util.GetGameObject(this.gameObject, "RoleGrid/Line")
|
||
for i = 1, 6 do
|
||
bgListGo[i] = Util.GetGameObject(this.gameObject, "RoleGrid/Bg" .. i)
|
||
heroListGo[i] = Util.GetGameObject(this.gameObject, "RoleGrid/Bg" .. i .. "/Hero" .. i)
|
||
maskListGo[i] = Util.GetGameObject(this.gameObject, "RoleGrid/Mask" .. i)
|
||
if not dragViewListGo[i] then
|
||
dragViewListGo[i] = SubUIManager.Open(SubUIConfig.DragView, bgListGo[i].transform)
|
||
end
|
||
dragViewListGo[i].gameObject.name = "DragView" .. i
|
||
dragViewListGo[i].gameObject:SetActive(false)
|
||
dragViewListGo[i]:SetScrollMouse(false)
|
||
this.trigger[i] = Util.GetEventTriggerListener(dragViewListGo[i].gameObject)
|
||
this.trigger[i].onPointerDown = this.trigger[i].onPointerDown + this.OnPointerDown
|
||
this.trigger[i].onPointerUp = this.trigger[i].onPointerUp + this.OnPointerUp
|
||
this.trigger[i].onEndDrag = this.trigger[i].onEndDrag + this.OnEndDrag
|
||
this.trigger[i].onDrag = this.trigger[i].onDrag + this.OnDrag
|
||
dragViewListGo[i]:SetDragGO(heroListGo[i])
|
||
end
|
||
|
||
--滚动条
|
||
this.heroPre = Util.GetGameObject(this.gameObject, "Scroll/HeroPre")
|
||
this.empty = Util.GetGameObject(this.gameObject, "Scroll/Empty")
|
||
this.scroll = Util.GetGameObject(this.gameObject, "Scroll")
|
||
this.scrollBar = Util.GetGameObject(this.gameObject, "Scrollbar"):GetComponent("Scrollbar")
|
||
this.scrollView = SubUIManager.Open(SubUIConfig.ScrollCycleView, this.scroll.transform,
|
||
this.heroPre, this.scrollBar, Vector2.New(1010, 543.8), 1, 6, Vector2.New(27, 52.5))
|
||
this.scrollView.gameObject:GetComponent("RectTransform").anchoredPosition = Vector2.New(0, 0)
|
||
this.scrollView.gameObject:GetComponent("RectTransform").anchorMin = Vector2.New(0.5, 0.5)
|
||
this.scrollView.gameObject:GetComponent("RectTransform").anchorMax = Vector2.New(0.5, 0.5)
|
||
this.scrollView.gameObject:GetComponent("RectTransform").pivot = Vector2.New(0.5, 0.5)
|
||
this.scrollView.moveTween.MomentumAmount = 1
|
||
this.scrollView.moveTween.Strength = 2
|
||
|
||
--筛选按钮
|
||
for i = 0, 5 do
|
||
tabs[i] = Util.GetGameObject(this.gameObject, "Tabs/Grid/Btn" .. i)
|
||
tabs[i]:SetActive(true)
|
||
if tabsImg[i + 1] then
|
||
Util.GetGameObject(tabs[i], "Image"):GetComponent("Image").sprite = this.spLoader:LoadSprite(tabsImg[i + 1])
|
||
end
|
||
end
|
||
this.selectBtn = Util.GetGameObject(this.gameObject, "Tabs/SelectBtn")
|
||
|
||
--副本扫荡
|
||
this.mopUpGo = Util.GetGameObject(self.transform, "root/showMopUp")
|
||
this.btnMpoUpBack = Util.GetGameObject(self.transform, "showMopUp/bg/btnBack")
|
||
this.Slider = Util.GetGameObject(self.transform, "showMopUp/bg/Slider")
|
||
this.numText = Util.GetGameObject(self.transform, "showMopUp/bg/Slider/numText"):GetComponent("Text")
|
||
this.btnMpoUpSure = Util.GetGameObject(self.transform, "showMopUp/bg/btnSure")
|
||
this.buyGoNumTex = Util.GetGameObject(self.transform, "showMopUp/bg/buyGo/numText"):GetComponent("Text")
|
||
-- 购买次数
|
||
this.btnBuyCount = Util.GetGameObject(self.transform, "showMopUp/bg/buyGo/addBtn/GameObject")
|
||
|
||
-- 底部panel
|
||
this.bottom = Util.GetGameObject(self.gameObject, "bottom")
|
||
-- 获取按钮
|
||
this.btn_1 = Util.GetGameObject(self.gameObject, "bottom/btnbox/btn_1")
|
||
this.btn_1_lab = Util.GetGameObject(self.gameObject, "bottom/btnbox/btn_1/btnLab"):GetComponent("Text")
|
||
this.btn_2 = Util.GetGameObject(self.gameObject, "bottom/btnbox/btn_2")
|
||
this.btn_2_lab = Util.GetGameObject(self.gameObject, "bottom/btnbox/btn_2/btnLab"):GetComponent("Text")
|
||
-- tip
|
||
this.mobTip = Util.GetGameObject(self.gameObject, "bottom/mobtip")
|
||
this.costTip = Util.GetGameObject(self.gameObject, "bottom/costtip")
|
||
this.failText = Util.GetGameObject(self.gameObject, "bottom/costtip/fail")
|
||
-- 精英副本扫荡提示
|
||
this.eliteTip = Util.GetGameObject(self.gameObject, "bottom/eliTip")
|
||
this.eliteNumNeed = Util.GetGameObject(this.eliteTip, "condition"):GetComponent("Text")
|
||
-- 跳过战斗
|
||
this.passBattle0 = Util.GetGameObject(self.transform, "bottom/passBattle0")
|
||
this.passBattle1 = Util.GetGameObject(self.transform, "bottom/passBattle1")
|
||
|
||
-- 上阵等级提示
|
||
this.formTip = Util.GetGameObject(self.transform, "formTip")
|
||
-- 上阵元素提示
|
||
this.tips = Util.GetGameObject(self.transform, "bottom/tips")
|
||
this.tip = Util.GetGameObject(self.transform, "bottom/tips/tip")
|
||
this.tips.gameObject:SetActive(false)
|
||
|
||
this.mopUpGo.transform:SetParent(self.gameObject.transform)
|
||
this.mopUpGo:SetActive(false)
|
||
|
||
--元素共鸣
|
||
this.ElementalResonanceView = SubUIManager.Open(SubUIConfig.ElementalResonanceView, this.gameObject.transform)
|
||
--玉虚论道(3队)切换
|
||
this.switchBar = Util.GetGameObject(self.transform, "SwitchBar")
|
||
this.switchBar:SetActive(false)
|
||
--七界试炼
|
||
this.conditionBar = Util.GetGameObject(self.transform, "ConditionBar")
|
||
this.conditionBar:SetActive(false)
|
||
--山河社稷图
|
||
this.fightlevelconditionBar = Util.GetGameObject(self.transform, "FightLevelConditionBar")
|
||
this.fightlevelconditionBar:SetActive(false)
|
||
this.jumpFightObj = Util.GetGameObject(self.transform, "jumpFight")
|
||
|
||
this.jumpFightBtn = Util.GetGameObject(self.transform, "jumpFight/btn")
|
||
this.jumpFightGou = Util.GetGameObject(self.transform, "jumpFight/Image")
|
||
|
||
this.ProListObj = Util.GetGameObject(self.gameObject, "selectBar")
|
||
this.selectObj = Util.GetGameObject(self.gameObject, "selectBar/selectBtn")
|
||
this.signBtnList = {}
|
||
for i = 1, 4 do
|
||
local proObj = {}
|
||
local btn = Util.GetGameObject(self.gameObject, "selectBar/btn" .. i)
|
||
proObj.img = btn:GetComponent("Image")
|
||
proObj.img.sprite = this.spLoader:LoadSprite(GetProStrImageByProNum(i))
|
||
proObj.btn = btn
|
||
this.signBtnList[i] = proObj
|
||
end
|
||
this.ProListObj:SetActive(false)
|
||
end
|
||
|
||
function this:BindEvent()
|
||
--返回按钮
|
||
Util.AddOnceClick(this.backBtn, function()
|
||
this:ClosePanel()
|
||
end)
|
||
--筛选按钮
|
||
for i = 0, 5 do
|
||
Util.AddOnceClick(tabs[i], function()
|
||
if i == proId then
|
||
proId = ProIdConst.All
|
||
else
|
||
proId = i
|
||
end
|
||
this.OnClickTabBtn(proId, true, true)
|
||
end)
|
||
end
|
||
--推荐阵容
|
||
Util.AddOnceClick(this.exampleBtn, function()
|
||
UIManager.OpenPanel(UIName.FormationExamplePopup)
|
||
end)
|
||
|
||
Util.AddOnceClick(this.jumpFightBtn, function()
|
||
local state = PlayerPrefs.GetInt(PlayerManager.uid .. "isJumpFight")
|
||
if state == 0 then
|
||
PlayerPrefs.SetInt(PlayerManager.uid .. "isJumpFight", 1)
|
||
this.jumpFightGou:SetActive(true)
|
||
elseif state == 1 then
|
||
PlayerPrefs.SetInt(PlayerManager.uid .. "isJumpFight", 0)
|
||
this.jumpFightGou:SetActive(false)
|
||
end
|
||
end)
|
||
|
||
--通用逻辑调用
|
||
Util.AddOnceClick(this.btn_1, function()
|
||
if this.opView and this.opView.On_Btn1_Click then
|
||
this.opView.On_Btn1_Click(this.curFormationIndex)
|
||
end
|
||
end)
|
||
Util.AddOnceClick(this.btn_2, function()
|
||
if isPress then
|
||
return
|
||
end
|
||
isPress = true
|
||
if this.opView and this.opView.On_Btn2_Click then
|
||
this.opView.On_Btn2_Click(this.curFormationIndex)
|
||
end
|
||
Timer.New(function()
|
||
isPress = false
|
||
end, 1):Start()
|
||
end)
|
||
end
|
||
|
||
function this:AddListener()
|
||
Game.GlobalEvent:AddEvent(GameEvent.Formation.OnFormationChange, this.RefreshPower)
|
||
Game.GlobalEvent:AddEvent(GameEvent.Formation.OnFormationChange1, this.OnShow)
|
||
end
|
||
|
||
function this:RemoveListener()
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.Formation.OnFormationChange, this.RefreshPower)
|
||
Game.GlobalEvent:RemoveEvent(GameEvent.Formation.OnFormationChange1, this.OnShow)
|
||
end
|
||
|
||
function this:OnSortingOrderChange()
|
||
-- 设置特效
|
||
Util.AddParticleSortLayer(this.effect, self.sortingOrder - orginLayer + 1)
|
||
for _, o in pairs(heroListGo) do
|
||
Util.AddParticleSortLayer(o, self.sortingOrder - orginLayer + 1)
|
||
end
|
||
this.scrollView:ForeachItemGO(function(index, go)
|
||
Util.SetParticleSortLayer(go, self.sortingOrder + 2)
|
||
end)
|
||
orginLayer = self.sortingOrder
|
||
end
|
||
|
||
function this:OnOpen(_panelType, ...)
|
||
Log("panelType:" .. _panelType)
|
||
panelType = _panelType
|
||
this.jumpFightObj:SetActive(CheckFunctionOpen(FUNCTION_OPEN_TYPE.FightJump) and
|
||
(panelType == FORMATION_TYPE.STORY or panelType == FORMATION_TYPE.FIGHTLEVEL))
|
||
if panelType == FORMATION_TYPE.EXPEDITION or panelType == FORMATION_TYPE.CARBON then
|
||
for k, v in pairs(bgListGo) do
|
||
v:GetComponent("Image").sprite = this.spLoader:LoadSprite("bd_xinkapaifan")
|
||
this.line:GetComponent("RectTransform").sizeDelta = Vector2.New(294.2, 439.48)
|
||
end
|
||
else
|
||
for k, v in pairs(bgListGo) do
|
||
v:GetComponent("Image").sprite = this.spLoader:LoadSprite("t_chengyuankuang_kuang")
|
||
this.line:GetComponent("RectTransform").sizeDelta = Vector2.New(294.2, 414.87)
|
||
end
|
||
end
|
||
-- tempPowerNum=0
|
||
this.selectBtn:SetActive(false)
|
||
this.passBattle0:SetActive(false)
|
||
this.passBattle1:SetActive(false)
|
||
this.btn_1:SetActive(false)
|
||
this.btn_1:GetComponent("Button").enabled = true
|
||
Util.SetColor(this.btn_1, Color.New(1, 1, 1, 1))
|
||
this.btn_2:SetActive(false)
|
||
this.mobTip:SetActive(false)
|
||
this.costTip:SetActive(false)
|
||
this.eliteTip:SetActive(false)
|
||
this.failText:SetActive(false)
|
||
this.formTip:SetActive(false)
|
||
this.tips:SetActive(false)
|
||
this.empty:SetActive(false)
|
||
this.opView = require(this.PanelOptionView[_panelType])
|
||
LogError("paneltype==" .. _panelType)
|
||
this.opView.Init(this, ...)
|
||
parameter = ...
|
||
this.SetCurFormationIndex(this.opView:GetFormationIndex())
|
||
SoundManager.PlaySound(SoundConfig.Sound_BattleStart_01)
|
||
end
|
||
|
||
function this:OnShow()
|
||
isPress = false
|
||
this.ElementalResonanceView:OnOpen({ sortOrder = self.sortingOrder })
|
||
this.SetDrawLevel()
|
||
--部分界面有特殊条件显示,集体管理
|
||
this.CheckCondition()
|
||
this.jumpFightGou:SetActive(PlayerPrefs.GetInt(PlayerManager.uid .. "isJumpFight") == 1)
|
||
end
|
||
|
||
-- update方法
|
||
function this:Update()
|
||
if this.opView.Update then
|
||
this.opView.Update()
|
||
end
|
||
end
|
||
|
||
function this:OnClose()
|
||
isPress = false
|
||
tempPowerNum = 0
|
||
this.formationPower = 0
|
||
oldPowerNum = 0
|
||
proId = 0 --面板关闭时 重置筛选按钮为全部
|
||
for i = 1, #this.choosedList do
|
||
local pos = this.choosedList[i].position
|
||
local o = heroListGo[pos]
|
||
-- if liveNodes[o] then
|
||
-- poolManager:UnLoadLive(liveNames[o], liveNodes[o])
|
||
-- liveNames[o] = nil
|
||
-- end
|
||
end
|
||
if this.curFormationIndex == FormationTypeDef.FORMATION_ENDLESS_MAP then
|
||
EndLessMapManager.SetCanUseHeroNew()
|
||
CheckRedPointStatus(RedPointType.wujinBianDui)
|
||
CheckRedPointStatus(RedPointType.EndlessPanel)
|
||
end
|
||
end
|
||
|
||
function this:OnDestroy()
|
||
this.spLoader:Destroy()
|
||
SubUIManager.Close(this.UpView)
|
||
SubUIManager.Close(this.ElementalResonanceView)
|
||
dragViewListGo = {}
|
||
this.choosedList = {}
|
||
heroListGo = {}
|
||
this.scrollView = nil
|
||
end
|
||
|
||
function this.SetCurFormationIndex(_index)
|
||
this.curFormationIndex = _index
|
||
FormationManager.currentFormationIndex = _index
|
||
-- 刷新显示
|
||
this.RefreshFormation(true, true)
|
||
end
|
||
|
||
--刷新编队
|
||
function this.RefreshFormation(isTop, isAni)
|
||
proId = ProIdConst.All
|
||
if this.opView.GetCurFormation then
|
||
curFormation = this.opView.GetCurFormation()
|
||
LogError("获取编对=======")
|
||
else
|
||
--获取当前编队数据
|
||
if this.curFormationIndex == FormationTypeDef.FORMATION_ENDLESS_MAP then
|
||
this.opView:RrefreshFormation()
|
||
elseif this.curFormationIndex == FormationTypeDef.FORMATION_ENDLESS_MAP then
|
||
EndLessMapManager.RrefreshFormation()
|
||
elseif this.curFormationIndex == FormationTypeDef.EXPEDITION then
|
||
ExpeditionManager.ExpeditionRrefreshFormation() --刷新编队
|
||
elseif this.curFormationIndex == FormationTypeDef.FIGHT_ASSISTANTLEVEL then
|
||
FightLevelManager.RrefreshFormation(parameter) --刷新编队
|
||
end
|
||
LogError("this.curFormationIndex====" .. this.curFormationIndex)
|
||
curFormation = FormationManager.GetFormationByID(this.curFormationIndex)
|
||
end
|
||
--上阵列表赋值
|
||
this.choosedList = {}
|
||
if curFormation.teamHeroInfos then
|
||
for j = 1, #curFormation.teamHeroInfos do
|
||
local teamInfo = curFormation.teamHeroInfos[j]
|
||
-- 加空判断避免不知名错误
|
||
if teamInfo then
|
||
table.insert(this.choosedList, { heroId = teamInfo.heroId, position = teamInfo.position })
|
||
end
|
||
end
|
||
end
|
||
-- 刷新显示
|
||
this.RefreshShow(isTop, isAni)
|
||
end
|
||
|
||
function this.RefreshShow(isTop, isAni)
|
||
--设置上阵英雄信息
|
||
this.SetCardsData()
|
||
--显示英雄列表
|
||
this.OnClickTabBtn(proId, isTop, isAni)
|
||
--战力
|
||
if this.curFormationIndex ~= 2001 and this.curFormationIndex ~= 2002 and this.curFormationIndex ~= 2003 then
|
||
this.RefreshPower()
|
||
end
|
||
end
|
||
|
||
function this.RefreshHeroList()
|
||
this.OnClickTabBtn(proId, false, false)
|
||
end
|
||
|
||
--设置编队上阵英雄信息
|
||
function this.SetCardsData()
|
||
if this.curFormationIndex == FormationTypeDef.PEOPLE_MIRROR
|
||
or this.curFormationIndex == FormationTypeDef.BUDDHIST_MIRROR
|
||
or this.curFormationIndex == FormationTypeDef.MAGIC_MIRROR
|
||
or this.curFormationIndex == FormationTypeDef.TAOIST_MIRROR then
|
||
this.opView.RefreshFormation(this.choosedList)
|
||
end
|
||
|
||
LogGreen("刷新编队·············· ")
|
||
FormationManager.UpdateTemporaryFormation(FormationTypeDef.FORMATION_TEMPORARY, this.choosedList)
|
||
this.formationPower = 0 --战力
|
||
this.formationPowerOld = 0 --战力
|
||
--元素共鸣
|
||
this.ElementalResonanceView:GetElementalType(this.choosedList, 1)
|
||
this.ElementalResonanceView:SetPosition(1)
|
||
|
||
this.InitArmPos()
|
||
this.InitArmData()
|
||
|
||
--编队为0显示0战力
|
||
if #this.choosedList <= 0 then
|
||
this.formationPower = 0
|
||
this.formationPowerOld = 0
|
||
end
|
||
this.power.text = this.formationPower
|
||
SubmitExtraData({ type = SDKSubMitType.TYPE_PLAYTIME, roleLevelUpTime = this.formationPower })
|
||
--飘战力
|
||
local newPowerNum = this.formationPower
|
||
if tempPowerNum ~= newPowerNum and tempPowerNum ~= 0 then
|
||
UIManager.OpenPanel(UIName.WarPowerChangeNotifyPanelV2,
|
||
{
|
||
oldValue = tempPowerNum,
|
||
newValue = newPowerNum,
|
||
pos = Vector3.New(-467, 837.2),
|
||
duration = 0.7,
|
||
isShowBg = false,
|
||
isShowOldNum = false,
|
||
pivot =
|
||
Vector2.New(0, 0.5)
|
||
})
|
||
end
|
||
tempPowerNum = this.formationPower
|
||
--部分界面有特殊条件显示,集体管理
|
||
this.CheckCondition()
|
||
end
|
||
|
||
-- 设置编队上阵位置显隐
|
||
function this.InitArmPos()
|
||
for i = 1, 6 do
|
||
local mask = maskListGo[i]
|
||
local info = heroListGo[i]
|
||
local limitStr = Util.GetGameObject(mask, "lvLimit"):GetComponent("Text")
|
||
local armNum = ActTimeCtrlManager.MaxArmyNum() --最大上阵人数
|
||
local canOn = i <= armNum --能上阵
|
||
limitStr.text = ActTimeCtrlManager.UnLockCondition(i)
|
||
|
||
-- 显示解锁条件
|
||
mask:SetActive(not canOn)
|
||
if #this.choosedList == 0 then
|
||
info:SetActive(false)
|
||
dragViewListGo[i].gameObject:SetActive(false)
|
||
end
|
||
-- 显示上阵的英雄
|
||
local heroData
|
||
for j = 1, #this.choosedList do
|
||
if i == this.choosedList[j].position then
|
||
heroData = HeroManager.GetSingleHeroData(this.choosedList[j].heroId)
|
||
if not heroData then
|
||
LogError("heroData is not exist! error Did:" .. this.choosedList[j].heroId)
|
||
return
|
||
end
|
||
info:SetActive(true)
|
||
dragViewListGo[i].gameObject:SetActive(true)
|
||
break
|
||
else
|
||
info:SetActive(false)
|
||
dragViewListGo[i].gameObject:SetActive(false)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
-- 设置编队上阵数据
|
||
function this.InitArmData()
|
||
--为每个英雄添加拖动组件
|
||
for n = 1, #this.choosedList do
|
||
local allHeroTeamAddProVal = HeroManager.GetAllHeroTeamAddProVal(this.choosedList, this.choosedList[n].heroId)
|
||
--已上阵操作
|
||
local pos = this.choosedList[n].position
|
||
|
||
-- LogBlue("源数据位置信息"..pos.." "..HeroManager.GetSingleHeroData(this.choosedList[n].heroId).id.." "..this.choosedList[n].position)
|
||
local heroId = this.choosedList[n].heroId
|
||
local heroData = HeroManager.GetSingleHeroData(heroId)
|
||
|
||
--设置单个上阵英雄信息
|
||
this.SetCardSingleData(heroListGo[pos], heroId, tonumber(pos), heroData)
|
||
--战力计算
|
||
this.CalculateAllHeroPower(heroData, allHeroTeamAddProVal)
|
||
--英雄长按
|
||
local heroClick = Util.GetGameObject(bgListGo[pos], "DragView" .. pos)
|
||
Util.AddLongPressClick(heroClick, function()
|
||
UIManager.OpenPanel(UIName.RoleInfoPopup, heroData, nil, this.choosedList, #this.choosedList)
|
||
end, 0.5)
|
||
end
|
||
this.formationPower = this.formationPower + PracticeManager.GetPracticeAddPower()
|
||
if this.curFormationIndex == FormationTypeDef.EXPEDITION then -- 远征加圣物战力
|
||
this.formationPower = math.floor(this.formationPower * (1 + ExpeditionManager.CalculateallHolyWarPower() / 10000))
|
||
-- Log("所有圣物战力万分比 "..ExpeditionManager.CalculateallHolyWarPower())
|
||
elseif this.curFormationIndex == FormationTypeDef.FORMATION_ENDLESS_MAP then -- 远征加圣物战力
|
||
local id, lv = EndLessMapManager.GetShiQiValue()
|
||
if lv > 0 then
|
||
local config = ConfigManager.GetConfigData(ConfigName.endlessMorale, id)
|
||
this.formationPower = math.floor(this.formationPower * (1 + config.FightUp / 100))
|
||
end
|
||
end
|
||
end
|
||
|
||
--设置单个上阵英雄信息
|
||
function this.SetCardSingleData(o, heroId, _pos, _heroData)
|
||
local bg = Util.GetGameObject(o, "Bg1"):GetComponent("Image")
|
||
|
||
local lv = Util.GetGameObject(o, "lv/Text"):GetComponent("Text")
|
||
local hp = Util.GetGameObject(o, "hpProgress/hp"):GetComponent("Image")
|
||
local hpPass = Util.GetGameObject(o, "hpProgress/hpPass"):GetComponent("Image")
|
||
local rage = Util.GetGameObject(o, "rageProgress/rage"):GetComponent("Image")
|
||
|
||
local fg = Util.GetGameObject(o, "Bg2"):GetComponent("Image")
|
||
-- local live=Util.GetGameObject(o,"Mask/Live")
|
||
|
||
local pro = Util.GetGameObject(o, "Pro/Image"):GetComponent("Image")
|
||
local starGrid = Util.GetGameObject(o, "StarGrid")
|
||
local nameParent = Util.GetGameObject(o, "Name")
|
||
local name = Util.GetGameObject(nameParent, "Text"):GetComponent("Text")
|
||
-- local pos=Util.GetGameObject(o,"Pos"):GetComponent("Image")
|
||
local yuanImage = Util.GetGameObject(o, "yuanImage")
|
||
--local flyImg=Util.GetGameObject(o,"flyImg"):GetComponent("Image")
|
||
local heroData = HeroManager.GetSingleHeroData(heroId)
|
||
local kaPaiEffect = Util.GetGameObject(o, "UI_Effect_jinkuang_KaPai")
|
||
local live = Util.GetGameObject(o, "Mask/icon"):GetComponent("RawImage")
|
||
|
||
local liveName = heroData.live
|
||
local roleConfig = {}
|
||
local toward = 0
|
||
local star, starType = heroData.GetStar()
|
||
local level = heroData.lv
|
||
if panelType == FORMATION_TYPE.WORLDARENA then
|
||
--star=endLess[heroData.heroConfig.Id].Star
|
||
--level=endLess[heroData.heroConfig.Id].Level
|
||
end
|
||
if panelType == FORMATION_TYPE.EXPEDITION or panelType == FORMATION_TYPE.CARBON then
|
||
bg.sprite = this.spLoader:LoadSprite(GetFormationHeroCardStarBg[star])
|
||
Util.GetGameObject(o, "hpProgress").gameObject:SetActive(true)
|
||
Util.GetGameObject(o, "rageProgress").gameObject:SetActive(false)
|
||
kaPaiEffect.transform.localScale = Vector3.New(1, 1.1, 1)
|
||
kaPaiEffect.transform.localPosition = Vector3.New(-8, -16, 0)
|
||
else
|
||
bg.sprite = this.spLoader:LoadSprite(GetHeroCardStarBg[star])
|
||
Util.GetGameObject(o, "hpProgress").gameObject:SetActive(false)
|
||
Util.GetGameObject(o, "rageProgress").gameObject:SetActive(false)
|
||
kaPaiEffect.transform.localScale = Vector3.New(1, 1, 1)
|
||
kaPaiEffect.transform.localPosition = Vector3.New(-8, 0, 0)
|
||
end
|
||
if heroData.skinId == 0 then
|
||
roleConfig = ConfigManager.GetConfigData(ConfigName.RoleConfig, heroData.heroConfig.Id)
|
||
toward = heroData.heroConfig.Toward
|
||
else
|
||
roleConfig = ConfigManager.GetConfigData(ConfigName.RoleConfig, heroData.skinId)
|
||
toward = roleConfig.Toward
|
||
end
|
||
|
||
local scale = roleConfig.play_liveScale
|
||
local livePos = Vector3.New(roleConfig.offset[1], roleConfig.offset[2], 0)
|
||
live.texture = CardRendererManager.GetSpineTexture(_pos, liveName, Vector3.one * scale, livePos, true)
|
||
SetHEeroLiveToward(live, toward, heroData.heroConfig.Position)
|
||
live.transform.localScale = Vector3.one
|
||
live.transform.localPosition = Vector3.zero
|
||
|
||
local zs = Util.GetGameObject(o, "zs")
|
||
local zsName = GetHeroCardStarZs[star]
|
||
if zsName == "" then
|
||
zs:SetActive(false)
|
||
else
|
||
zs:SetActive(true)
|
||
zs:GetComponent("Image").sprite = this.spLoader:LoadSprite(zsName)
|
||
end
|
||
|
||
yuanImage:SetActive(heroData.createtype == 1)
|
||
fg.sprite = this.spLoader:LoadSprite(GetHeroCardStarFg[star])
|
||
pro.sprite = this.spLoader:LoadSprite(GetProStrImageByProNum(heroData.property))
|
||
|
||
if starType == 3 then
|
||
if heroData.star > 11 then
|
||
fg.sprite = this.spLoader:LoadSprite("t_zhandoukuang_lanjin02")
|
||
else
|
||
fg.sprite = this.spLoader:LoadSprite("t_zhandoukuang_zhuangshi006")
|
||
end
|
||
end
|
||
|
||
if HarmonyManager.IsChangeColor(heroData.dynamicId) then
|
||
lv.text = "<color=#0f0>" .. level .. "</color>"
|
||
elseif HarmonyManager:IsEnvoy(heroData.dynamicId) and HarmonyManager:HongMengTowerUpLimit() >= HarmonyManager.TowerStartLimit then
|
||
lv.text = "<color=#ffbe22>" .. level .. "</color>"
|
||
else
|
||
lv.text = level
|
||
end
|
||
SetCardStars(starGrid, star, starType)
|
||
if star > 9 then
|
||
kaPaiEffect:SetActive(true)
|
||
else
|
||
kaPaiEffect:SetActive(false)
|
||
end
|
||
SetHeroFormationFlyEffect(o, this.spLoader, kaPaiEffect, star, orginLayer)
|
||
|
||
name.text = GetLanguageStrById(heroData.heroConfig.ReadingName)
|
||
--SetTextVerTial(name.gameObject, Vector3.New(29.24, -7.45, 0), nil, nil, 8)
|
||
|
||
local curHeroHpVal = FormationManager.GetFormationHeroHp(this.curFormationIndex, _heroData.dynamicId)
|
||
hp.fillAmount = curHeroHpVal or 1
|
||
hpPass.fillAmount = curHeroHpVal or 1
|
||
rage.fillAmount = 0.5
|
||
end
|
||
|
||
--战力计算
|
||
function this.CalculateAllHeroPower(curHeroData, allHeroTeamAddProVal)
|
||
-- HeroPowerManager.GetHeroPower(dId, formationId)
|
||
-- local allEquipAddProVal = HeroManager.CalculateHeroAllProValList(1, curHeroData.dynamicId, false,nil,nil,true,allHeroTeamAddProVal, nil, FormationTypeDef.FORMATION_TEMPORARY)
|
||
-- this.formationPowerOld = this.formationPowerOld + allEquipAddProVal[HeroProType.WarPower]
|
||
-- LogPink("OLD TEAM POWER:"..this.formationPowerOld)
|
||
local allEquipAddProVal = HeroPowerManager.GetHeroPower(curHeroData.dynamicId, FormationTypeDef.FORMATION_TEMPORARY) --HeroManager.CalculateHeroAllProValList(1, curHeroData.dynamicId, false,nil,nil,true,allHeroTeamAddProVal)
|
||
this.formationPower = this.formationPower +
|
||
allEquipAddProVal --[HeroProType.WarPower]
|
||
LogPink("NEW TEAM POWER:" .. this.formationPower)
|
||
end
|
||
|
||
--点击筛选
|
||
function this.OnClickTabBtn(_proId, isTop, isAni)
|
||
--this.selectBtn:SetActive(proId ==_proId)
|
||
--this.selectBtn.transform:SetParent(tabs[_proId].transform)
|
||
--this.selectBtn.transform:DOAnchorPos(Vector3.zero,0)
|
||
--this.selectBtn.transform:DOScale(Vector3.one,0)
|
||
--this.selectBtn.transform:SetAsFirstSibling()
|
||
-- 定制显示
|
||
local heros = {}
|
||
if this.opView.GetHeroList then
|
||
heros = this.opView.GetHeroList(_proId)
|
||
else
|
||
if _proId == ProIdConst.All then
|
||
heros = HeroManager.GetAllHeroDatas()
|
||
else
|
||
heros = HeroManager.GetHeroDataByProperty(_proId)
|
||
end
|
||
end
|
||
this.empty:SetActive(#heros <= 0)
|
||
this.SetRoleList(heros, isTop, isAni)
|
||
|
||
if this.opView.SetCampIconByCurType then
|
||
this.opView.SetCampIconByCurType(tabs, this.selectBtn)
|
||
else
|
||
for i = 0, #tabs do
|
||
Util.SetGray(tabs[i], false)
|
||
tabs[i]:GetComponent("Button").enabled = true
|
||
end
|
||
this.selectBtn:SetActive(proId == _proId)
|
||
this.selectBtn.transform:SetParent(tabs[_proId].transform)
|
||
this.selectBtn.transform:DOAnchorPos(Vector3.zero, 0)
|
||
this.selectBtn.transform:DOScale(Vector3.one, 0)
|
||
this.selectBtn.transform:SetAsFirstSibling()
|
||
end
|
||
end
|
||
|
||
--设置英雄列表数据
|
||
function this.SetRoleList(_roleDatas, isTop, isAni)
|
||
if panelType == FORMATION_TYPE.ExploreFunc then
|
||
_roleDatas = this.opView.SortHeroDatas(_roleDatas)
|
||
elseif panelType == FORMATION_TYPE.WORLDARENA then
|
||
_roleDatas = this.opView.SortHeroDatas(_roleDatas)
|
||
elseif this.opView.SortHeroDatas then
|
||
this.opView.SortHeroDatas(_roleDatas)
|
||
else
|
||
this.SortHeroDatas(_roleDatas)
|
||
end
|
||
|
||
--刷新玉虚论道缓存的阵容数据
|
||
if this.curFormationIndex == 2001 or this.curFormationIndex == 2002 or this.curFormationIndex == 2003 then
|
||
this.opView.RemoveTeamByIndex(this.curFormationIndex)
|
||
for i, v in pairs(this.choosedList) do
|
||
--LogError("刷新添加=== id=="..v.heroId.." pos=="..v.position)
|
||
this.opView.AddHeroToTeam(v.heroId, v.position, this.curFormationIndex)
|
||
end
|
||
end
|
||
if panelType == FORMATION_TYPE.GodsWayTower_two or panelType == FORMATION_TYPE.GodsWayTower_three or panelType == FORMATION_TYPE.BecomeAGod then
|
||
LogError("this.curFormationIndex=" .. this.curFormationIndex)
|
||
this.opView.RemoveTeamByIndex(this.curFormationIndex)
|
||
for i, v in pairs(this.choosedList) do
|
||
LogError("多队战刷新添加=== id==" .. v.heroId .. " pos==" .. v.position)
|
||
this.opView.AddHeroToTeam(v.heroId, v.position, this.curFormationIndex)
|
||
end
|
||
end
|
||
|
||
-- local curFormation = FormationManager.formationList[this.curFormationIndex]
|
||
this.scrollView:SetData(_roleDatas, function(index, go)
|
||
-- 基础显示
|
||
this.SingleHeroDataShow(go, _roleDatas[index])
|
||
-- 神将列表单个神将内容显示定制
|
||
if this.opView.HeroItemAdapter then
|
||
this.opView.HeroItemAdapter(go, _roleDatas[index])
|
||
else
|
||
Util.GetGameObject(go, "specialType"):SetActive(false)
|
||
Util.GetGameObject(go, "posCha"):SetActive(false)
|
||
end
|
||
end, not isTop, not isAni)
|
||
end
|
||
|
||
--排序英雄数据
|
||
function this.SortHeroDatas(_heroDatas)
|
||
local choosed = {}
|
||
local dieHeros = {}
|
||
local notExisted = {}
|
||
local curFormation = FormationManager.GetFormationByID(this.curFormationIndex)
|
||
for i = 1, #_heroDatas do
|
||
local heroHp = FormationManager.GetFormationHeroHp(this.curFormationIndex, _heroDatas[i].dynamicId)
|
||
if heroHp then
|
||
if heroHp <= 0 then
|
||
dieHeros[_heroDatas[i].dynamicId] = _heroDatas[i].dynamicId
|
||
end
|
||
end
|
||
end
|
||
for i = 1, #_heroDatas do
|
||
if _heroDatas[i].exist and _heroDatas[i].exist == 0 then
|
||
notExisted[_heroDatas[i].dynamicId] = _heroDatas[i].dynamicId
|
||
end
|
||
end
|
||
for j = 1, #curFormation.teamHeroInfos do
|
||
local teamInfo = curFormation.teamHeroInfos[j]
|
||
if teamInfo then
|
||
choosed[teamInfo.heroId] = j
|
||
end
|
||
end
|
||
|
||
table.sort(_heroDatas, function(a, b)
|
||
if (choosed[a.dynamicId] and choosed[b.dynamicId]) or
|
||
(not choosed[a.dynamicId] and not choosed[b.dynamicId])
|
||
then
|
||
if (notExisted[a.dynamicId] and notExisted[b.dynamicId]) or
|
||
(not notExisted[a.dynamicId] and not notExisted[b.dynamicId])
|
||
then
|
||
if (dieHeros[a.dynamicId] and dieHeros[b.dynamicId]) or
|
||
(not dieHeros[a.dynamicId] and not dieHeros[b.dynamicId])
|
||
then
|
||
return this.NaturalSort(sortType == SortTypeConst.Natural, a, b)
|
||
else
|
||
return not dieHeros[a.dynamicId] and dieHeros[b.dynamicId]
|
||
end
|
||
else
|
||
return not notExisted[a.dynamicId] and notExisted[b.dynamicId]
|
||
end
|
||
else
|
||
return choosed[a.dynamicId] and not choosed[b.dynamicId]
|
||
end
|
||
end)
|
||
end
|
||
|
||
function this.NaturalSort(isNature, a, b)
|
||
if isNature then
|
||
if a.heroConfig.Natural == b.heroConfig.Natural then
|
||
if a.heroConfig.Quality == b.heroConfig.Quality then
|
||
local aGodLv = GodSoulManager.GetGodSoulLv(a.dynamicId)
|
||
local bGodLv = GodSoulManager.GetGodSoulLv(b.dynamicId)
|
||
if aGodLv == bGodLv then
|
||
if a.star == b.star then
|
||
if a.lv == b.lv then
|
||
if a.warPower == b.warPower then
|
||
if a.id == b.id then
|
||
if a.property == b.property then
|
||
return a.property < b.property
|
||
else
|
||
return a.sortId > b.sortId
|
||
end
|
||
else
|
||
return a.id > b.id
|
||
end
|
||
else
|
||
return a.warPower > b.warPower
|
||
end
|
||
else
|
||
return a.lv > b.lv
|
||
end
|
||
else
|
||
return a.star > b.star
|
||
end
|
||
else
|
||
return aGodLv > bGodLv
|
||
end
|
||
else
|
||
return a.heroConfig.Quality > b.heroConfig.Quality
|
||
end
|
||
else
|
||
return a.heroConfig.Natural > b.heroConfig.Natural
|
||
end
|
||
else
|
||
if a.lv == b.lv then
|
||
if a.heroConfig.Quality == b.heroConfig.Quality then
|
||
local aGodLv = GodSoulManager.GetGodSoulLv(a.dynamicId)
|
||
local bGodLv = GodSoulManager.GetGodSoulLv(b.dynamicId)
|
||
if aGodLv == bGodLv then
|
||
if a.star == b.star then
|
||
if a.heroConfig.Natural == b.heroConfig.Natural then
|
||
if a.warPower == b.warPower then
|
||
if a.id == b.id then
|
||
return a.sortId > b.sortId
|
||
else
|
||
return a.id > b.id
|
||
end
|
||
else
|
||
return a.warPower > b.warPower
|
||
end
|
||
else
|
||
return a.heroConfig.Natural > b.heroConfig.Natural
|
||
end
|
||
else
|
||
return a.star > b.star
|
||
end
|
||
else
|
||
return aGodLv > bGodLv
|
||
end
|
||
else
|
||
return a.heroConfig.Quality > b.heroConfig.Quality
|
||
end
|
||
else
|
||
return a.lv > b.lv
|
||
end
|
||
end
|
||
end
|
||
|
||
--设置每条英雄数据
|
||
function this.SingleHeroDataShow(_go, _heroData)
|
||
local go = _go
|
||
local heroData = _heroData
|
||
local frame = Util.GetGameObject(go, "frame"):GetComponent("Image")
|
||
local icon = Util.GetGameObject(go, "icon"):GetComponent("Image")
|
||
local lv = Util.GetGameObject(go, "lv/Text"):GetComponent("Text")
|
||
local pro = Util.GetGameObject(go, "proIcon"):GetComponent("Image")
|
||
local pos = Util.GetGameObject(go, "posIcon"):GetComponent("Image")
|
||
local teamList = {}
|
||
for i = 1, 3 do
|
||
table.insert(teamList, Util.GetGameObject(go, "yxteamName/Image" .. i))
|
||
end
|
||
local yxInfo = Util.GetGameObject(go, "yxteamName")
|
||
--local yxTeamName=Util.GetGameObject(go, "yxteamName/Text"):GetComponent("Text")
|
||
yxInfo:SetActive(false)
|
||
Util.GetGameObject(go, "posIcon"):SetActive(this.curFormationIndex == FormationTypeDef.FIGHT_LEVEL or
|
||
this.curFormationIndex == FormationTypeDef.FIGHT_ASSISTANTLEVEL or
|
||
this.curFormationIndex == FormationTypeDef.FORMATION_QIJIESHILIAN)
|
||
local starGrid = Util.GetGameObject(go, "star")
|
||
local yuanImage = Util.GetGameObject(go, "yuanImage")
|
||
local choosedObj = Util.GetGameObject(go, "choosed")
|
||
local hpExp = Util.GetGameObject(go, "hpExp")
|
||
local redPot = Util.GetGameObject(go, "redpoint")
|
||
local changeProBtn = Util.GetGameObject(go, "proMaskObj")
|
||
Util.GetGameObject(go, "name"):GetComponent("Text").text = GetLanguageStrById(heroData.name)
|
||
if heroData.isNew and heroData.isNew == 1 then
|
||
redPot.gameObject:SetActive(true)
|
||
else
|
||
redPot.gameObject:SetActive(false)
|
||
end
|
||
-- if _heroData.property then
|
||
-- changeProBtn:SetActive(_heroData.property>=5)
|
||
-- pro.sprite= this.spLoader:LoadSprite(GetProStrImageByProNum(heroData.property))
|
||
-- else
|
||
changeProBtn:SetActive(false)
|
||
pro.sprite = this.spLoader:LoadSprite(GetProStrImageByProNum(heroData.heroConfig.PropertyName))
|
||
--end
|
||
icon.sprite = this.spLoader:LoadSprite(heroData.icon)
|
||
local level = heroData.lv
|
||
pos.sprite = this.spLoader:LoadSprite(heroData.professionIcon)
|
||
local star, starType = heroData.GetStar(1)
|
||
local starSize = Vector2.New(30, 30)
|
||
local starScale = -8
|
||
if starType == 3 then
|
||
starSize = Vector2.New(1, -15.65)
|
||
starScale = -13
|
||
elseif starType == 2 then
|
||
starSize = Vector2.New(60, 57)
|
||
end
|
||
if panelType == FORMATION_TYPE.WORLDARENA then
|
||
if this.opView.GetHeroTeam then
|
||
local index = this.opView.GetHeroTeam(heroData.dynamicId)
|
||
|
||
if index and index ~= this.curFormationIndex then
|
||
LogError("index===================" .. index)
|
||
yxInfo:SetActive(true)
|
||
for i = 1, 3 do
|
||
teamList[i]:SetActive(false)
|
||
end
|
||
teamList[index - 2000]:SetActive(true)
|
||
end
|
||
end
|
||
LogError("heroData.heroConfig.Id==" .. heroData.heroConfig.Id)
|
||
--star=endLess[heroData.heroConfig.Id].Star
|
||
LogError("star==" .. star)
|
||
if star > 11 then
|
||
starSize = Vector3.New(1, -15.6)
|
||
else
|
||
starSize = Vector2.New(60, 57)
|
||
end
|
||
--
|
||
--level=endLess[heroData.heroConfig.Id].Level
|
||
end
|
||
|
||
if panelType == FORMATION_TYPE.GodsWayTower_two or panelType == FORMATION_TYPE.GodsWayTower_three or FORMATION_TYPE.BecomeAGod then
|
||
if this.opView.GetHeroTeam then
|
||
local index = this.opView.GetHeroTeam(heroData.dynamicId)
|
||
if index and index ~= this.curFormationIndex then
|
||
yxInfo:SetActive(true)
|
||
for i = 1, 3 do
|
||
teamList[i]:SetActive(false)
|
||
end
|
||
local ids = GodsWayTeam[panelType - 30]
|
||
for i = 1, #ids do
|
||
if ids[i] == index then
|
||
teamList[i]:SetActive(true)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
end
|
||
if star > 11 then
|
||
starSize = Vector3.New(1, -15.6)
|
||
starScale = -13
|
||
end
|
||
frame.sprite = this.spLoader:LoadSprite(GetHeroQuantityImageByquality(heroData.heroConfig.Quality, star))
|
||
if HarmonyManager.IsChangeColor(heroData.dynamicId) then
|
||
-- body
|
||
lv.text = "<color=#0f0>" .. level .. "</color>"
|
||
elseif HarmonyManager:IsEnvoy(heroData.dynamicId) and HarmonyManager:HongMengTowerUpLimit() >= HarmonyManager.TowerStartLimit then
|
||
-- bod
|
||
lv.text = "<color=#ffbe22>" .. level .. "</color>"
|
||
else
|
||
lv.text = level
|
||
end
|
||
SetHeroStars(this.spLoader, starGrid, star)
|
||
local effect = SetHeroFlyEffect(go, this.spLoader, star, this.sortingOrder, 1, 4)
|
||
if effect then
|
||
local meshs2 = effect:GetComponentsInChildren(typeof(UnityEngine.SkinnedMeshRenderer))
|
||
for key, value in pairs(meshs2:ToTable()) do
|
||
if value.material.shader.name == "YXZ/Effect/TransparentRim" then
|
||
value.material.shader = poolManager:LoadAsset("YXZ_Effect_TransparentRim_1", poolManager.AssetType.Other)
|
||
end
|
||
end
|
||
--[[
|
||
local particles = effect:GetComponentsInChildren(typeof(UnityEngine.ParticleSystem))
|
||
for key, value in pairs(particles:ToTable()) do
|
||
local mat = value:GetComponent(typeof(UnityEngine.Renderer))
|
||
if mat.material.shader.name == "YXZ/Effect/Mix Masking(Without Moving)_alphablend" then
|
||
mat.material.shader = poolManager:LoadAsset("YXZ_MixMaskingWithoutMoving_alphablend_1",
|
||
poolManager.AssetType.Other)
|
||
end
|
||
end
|
||
]]
|
||
end
|
||
--[[
|
||
local meshs1 = starGrid:GetComponentsInChildren(typeof(UnityEngine.ParticleSystem))
|
||
for key, value in pairs(meshs1:ToTable()) do
|
||
local mat = value:GetComponent(typeof(UnityEngine.Renderer))
|
||
if mat.material.shader.name == "UI Particles/Additive" then
|
||
mat.material.shader = poolManager:LoadAsset("UI-Particle-Add_1", poolManager.AssetType.Other)
|
||
end
|
||
end
|
||
]]
|
||
|
||
Util.SetParticleSortLayer(go, this.sortingOrder + 2)
|
||
--血量显示
|
||
local curHeroHpVal = FormationManager.GetFormationHeroHp(this.curFormationIndex, _heroData.dynamicId)
|
||
yuanImage:SetActive(heroData.createtype == 1)
|
||
if not curHeroHpVal then
|
||
Util.SetGray(go, false)
|
||
hpExp:SetActive(false)
|
||
else
|
||
hpExp:SetActive(true)
|
||
hpExp:GetComponent("Slider").value = curHeroHpVal
|
||
if curHeroHpVal <= 0 then
|
||
Util.SetGray(go, true)
|
||
else
|
||
if heroData.exist and heroData.exist == 0 then
|
||
Util.SetGray(go, true)
|
||
else
|
||
Util.SetGray(go, false)
|
||
end
|
||
end
|
||
end
|
||
choosedObj:SetActive(false)
|
||
for i, v in pairs(this.choosedList) do
|
||
if (heroData.dynamicId == v.heroId) then
|
||
choosedObj:SetActive(true)
|
||
end
|
||
end
|
||
|
||
local exploreTeamList = {}
|
||
local exploreTeam = Util.GetGameObject(go, "exploreTeamName")
|
||
exploreTeam.gameObject:SetActive(false)
|
||
for i = 1, exploreTeam.transform.childCount do
|
||
table.insert(exploreTeamList, exploreTeam.transform:GetChild(i - 1))
|
||
end
|
||
for i = 1, #exploreTeamList do
|
||
exploreTeamList[i].gameObject:SetActive(false)
|
||
end
|
||
if panelType == FORMATION_TYPE.ExploreFunc then
|
||
exploreTeam.gameObject:SetActive(true)
|
||
if this.opView.GetHeroTeam then
|
||
local index = this.opView.GetHeroTeam(heroData.dynamicId)
|
||
if index and index ~= 0 and index ~= 100 and this.opView.CheckIsExploring(index) then
|
||
exploreTeamList[#exploreTeamList].gameObject:SetActive(true)
|
||
elseif index and index ~= 0 and index ~= 100 then
|
||
exploreTeamList[index].gameObject:SetActive(true)
|
||
end
|
||
end
|
||
end
|
||
-- 点击事件
|
||
Util.AddOnceClick(go, function()
|
||
-- if heroData.property and heroData.property>=5 then
|
||
-- UIManager.OpenPanel(UIName.GeneralPopup,GENERAL_POPUP_TYPE.ChangeHeroPro,heroData,function()
|
||
-- LogError("刷新界面数据")
|
||
-- this.RefreshShow(false,false)
|
||
-- end)
|
||
-- return
|
||
-- end
|
||
-- 判断是上阵还是下阵
|
||
local formationAction = FORMATION_ACTION.UP
|
||
for k, v in ipairs(this.choosedList) do
|
||
if v.heroId == heroData.dynamicId then
|
||
LogError("现在是下阵")
|
||
formationAction = FORMATION_ACTION.DOWN
|
||
break
|
||
end
|
||
end
|
||
-- 检测失败方法
|
||
local CheckFail = function(tip)
|
||
PopupTipPanel.ShowTip(tip)
|
||
end
|
||
-- 检测成功方法
|
||
local CheckSuccess = function(params)
|
||
if params.action == FORMATION_ACTION.UP then
|
||
if curHeroHpVal and curHeroHpVal <= 0 then
|
||
PopupTipPanel.ShowTip(Language[10889])
|
||
return
|
||
end
|
||
if heroData.exist and heroData.exist == 0 then
|
||
PopupTipPanel.ShowTip(Language[10890])
|
||
return
|
||
end
|
||
-- 当前可选的最大上阵人数
|
||
local maxNum = ActTimeCtrlManager.MaxArmyNum()
|
||
if LengthOfTable(this.choosedList) >= maxNum then
|
||
PopupTipPanel.ShowTip(Language[10891])
|
||
return
|
||
end
|
||
--判断是否上阵相同猎妖师
|
||
for k, v in pairs(this.choosedList) do
|
||
if HeroManager.GetSingleHeroData(v.heroId).id == heroData.id then
|
||
PopupTipPanel.ShowTip(Language[10892])
|
||
return
|
||
end
|
||
end
|
||
--自动计算位置 并赋值pos
|
||
local curPos = this.GetPos()
|
||
if curPos == 0 then
|
||
PopupTipPanel.ShowTip(Language[10891])
|
||
return
|
||
end
|
||
-- 上阵生效
|
||
table.insert(this.choosedList, { heroId = heroData.dynamicId, position = curPos })
|
||
-- 刷新显示
|
||
this.RefreshShow(false, false)
|
||
return curPos
|
||
elseif params.action == FORMATION_ACTION.DOWN then
|
||
for k, v in ipairs(this.choosedList) do
|
||
if v.heroId == heroData.dynamicId then
|
||
table.remove(this.choosedList, k)
|
||
-- 刷新显示
|
||
this.RefreshShow(false, false)
|
||
return
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
|
||
--
|
||
local curPos = this.GetPos()
|
||
if formationAction == FORMATION_ACTION.UP then
|
||
if curHeroHpVal and curHeroHpVal <= 0 then
|
||
PopupTipPanel.ShowTip(Language[10889])
|
||
return
|
||
end
|
||
if heroData.exist and heroData.exist == 0 then
|
||
PopupTipPanel.ShowTip(Language[10890])
|
||
return
|
||
end
|
||
-- 当前可选的最大上阵人数
|
||
local maxNum = ActTimeCtrlManager.MaxArmyNum()
|
||
if LengthOfTable(this.choosedList) >= maxNum then
|
||
PopupTipPanel.ShowTip(Language[10891])
|
||
return
|
||
end
|
||
--判断是否上阵相同猎妖师
|
||
for k, v in pairs(this.choosedList) do
|
||
if HeroManager.GetSingleHeroData(v.heroId).id == heroData.id then
|
||
PopupTipPanel.ShowTip(Language[10892])
|
||
return
|
||
end
|
||
end
|
||
--自动计算位置 并赋值pos
|
||
if curPos == 0 then
|
||
PopupTipPanel.ShowTip(Language[10891])
|
||
return
|
||
end
|
||
end
|
||
|
||
-- 判断是否有编队上阵条件
|
||
local params = {
|
||
action = formationAction,
|
||
heroData = heroData,
|
||
choosedList = this.choosedList,
|
||
position = curPos
|
||
}
|
||
if this.opView.HeroUpDownCheck then
|
||
this.opView.HeroUpDownCheck(params, CheckFail, CheckSuccess)
|
||
else
|
||
CheckSuccess(params)
|
||
end
|
||
end)
|
||
|
||
Util.AddLongPressClick(go, function()
|
||
--
|
||
local isChoosed = false
|
||
for i = 1, #this.choosedList do
|
||
if this.choosedList[i] and this.choosedList[i].heroId then
|
||
if this.choosedList[i].heroId == heroData.dynamicId then
|
||
isChoosed = true
|
||
end
|
||
end
|
||
end
|
||
if panelType == FORMATION_TYPE.WORLDARENA then
|
||
LogError("curindex===" .. this.opView.curIndex)
|
||
NetManager.ViewHeroInfoRequest(PlayerManager.uid, heroData.dynamicId, PlayerManager.serverInfo.name,
|
||
2000 + this.opView.curIndex, function(msg)
|
||
local showData = GoodFriendManager.GetHeroDatas(msg.hero, msg.force, msg.SpecialEffects,
|
||
msg.guildSkill)
|
||
GoodFriendManager.InitEquipData(msg.equip, showData) --HeroManager.GetSingleHeroData(heroData.dynamicId)
|
||
UIManager.OpenPanel(UIName.RoleInfoPopup, showData, true)
|
||
end)
|
||
return
|
||
end
|
||
if isChoosed then
|
||
UIManager.OpenPanel(UIName.RoleInfoPopup, heroData, nil, this.choosedList, #this.choosedList)
|
||
else
|
||
UIManager.OpenPanel(UIName.RoleInfoPopup, heroData)
|
||
end
|
||
end, 0.5)
|
||
end
|
||
|
||
--计算上阵空余位置 返回最小位置
|
||
function this.GetPos()
|
||
local data = {}
|
||
for i = 1, 6 do
|
||
if heroListGo[i].gameObject.activeSelf then
|
||
table.insert(data, i, i)
|
||
end
|
||
end
|
||
for j = 1, 6 do
|
||
if data[j] == nil then
|
||
return j
|
||
end
|
||
if LengthOfTable(data) == 6 then
|
||
return 0
|
||
end
|
||
end
|
||
end
|
||
|
||
--计算上阵空余位置 返回所有位置列表
|
||
function this.GetPosList()
|
||
local data = {}
|
||
-- for i = 1, 6 do
|
||
-- if heroListGo[i].gameObject.activeSelf then
|
||
-- table.insert(data,i,i)
|
||
-- end
|
||
-- end
|
||
local list = {}
|
||
for j = 1, 6 do
|
||
if not list[j] then
|
||
table.insert(list, j)
|
||
end
|
||
end
|
||
return list
|
||
end
|
||
|
||
--拖拽
|
||
function this.OnPointerDown(Pointgo, data) --按下
|
||
local _j = tonumber(string.sub(Pointgo.transform.name, -1))
|
||
local heroObj = Util.GetTransform(Pointgo.transform.parent, "Hero" .. _j)
|
||
heroObj:DOScale(Vector3.one * 1.2, 0.15)
|
||
heroObj.transform:SetParent(this.root.transform)
|
||
heroObj:GetComponent("Image").raycastTarget = false
|
||
end
|
||
|
||
function this.OnPointerUp(Pointgo, data) --抬起
|
||
local _j = tonumber(string.sub(Pointgo.transform.name, -1))
|
||
Util.Peer(Pointgo.transform, "Pos").transform:SetAsFirstSibling()
|
||
local heroObj = Util.GetTransform(this.gameObject, "Hero" .. _j)
|
||
heroObj:DOScale(Vector3.one * 1, 0.15)
|
||
heroObj.transform:SetParent(bgListGo[_j].transform)
|
||
heroObj.transform:SetSiblingIndex(1) --SetAsFirstSibling()
|
||
heroObj:GetComponent("Image").raycastTarget = false
|
||
end
|
||
|
||
function this.OnEndDrag(Pointgo, data) --结束拖动
|
||
local _j = tonumber(string.sub(Pointgo.transform.name, -1))
|
||
local heroObj = Util.GetGameObject(this.gameObject, "Hero" .. _j)
|
||
if data.pointerEnter == nil then --防止拖到屏幕外
|
||
heroObj.transform:DOAnchorPos(Vector3.one, 0)
|
||
heroObj.transform:SetParent(bgListGo[_j].transform)
|
||
heroObj.transform:SetSiblingIndex(1)
|
||
return
|
||
end
|
||
-- Log("<color=blue>被拖动名。。。</color><color=red>"..Pointgo.transform.name.."</color> ".." <color=blue>进入的UI名。。。</color><color=red>"..data.pointerEnter.gameObject.name.."</color>")
|
||
local _i = tonumber(string.sub(data.pointerEnter.gameObject.name, -1))
|
||
local nameIn = data.pointerEnter.gameObject.name --进入的UI名
|
||
local _num = string.sub(nameIn, 5, -1)
|
||
local itemName = "item" .. _num
|
||
|
||
local heroObj = Util.GetGameObject(this.gameObject, "Hero" .. _j)
|
||
heroObj:GetComponent("Image").raycastTarget = true
|
||
heroObj.transform:DOScale(Vector3.one * 1, 0.15)
|
||
heroObj.transform:DOAnchorPos(Vector3.one, 0)
|
||
heroObj.transform:SetParent(bgListGo[_j].transform)
|
||
heroObj.transform:SetSiblingIndex(1)
|
||
|
||
if _i == nil then
|
||
_i = tonumber(string.sub(Pointgo.transform.name, -1))
|
||
end
|
||
if nameIn == "DragView" .. _i then --有人
|
||
-- Log("有人")
|
||
local curData
|
||
local tarData
|
||
for i, v in ipairs(this.choosedList) do
|
||
if _j == v.position then
|
||
curData = v.heroId
|
||
end
|
||
if _i == v.position then
|
||
tarData = v.heroId
|
||
end
|
||
end
|
||
for i, v in ipairs(this.choosedList) do
|
||
if _j == v.position then
|
||
this.choosedList[i].heroId = tarData
|
||
end
|
||
if _i == v.position then
|
||
this.choosedList[i].heroId = curData
|
||
end
|
||
end
|
||
elseif nameIn == "Bg" .. _i then --没人
|
||
-- Log("没人")
|
||
local did
|
||
for i, v in ipairs(this.choosedList) do
|
||
if _j == v.position then
|
||
did = v.heroId
|
||
table.remove(this.choosedList, i)
|
||
end
|
||
end
|
||
table.insert(this.choosedList, { heroId = did, position = _i })
|
||
elseif nameIn == "ScrollCycleView" or nameIn == itemName or nameIn == "MaskClick" or nameIn == "btnLab"
|
||
or nameIn == "Btn0" or nameIn == "Btn1" or nameIn == "Btn2" or nameIn == "Btn3" or nameIn == "Btn4" or nameIn == "ExampleBtn" then
|
||
if not this.opView.NoUpOrDownFormation then
|
||
for i, v in ipairs(this.choosedList) do
|
||
if _j == v.position then
|
||
table.remove(this.choosedList, i)
|
||
dragViewListGo[_j].gameObject:SetActive(false)
|
||
break
|
||
end
|
||
end
|
||
else
|
||
PopupTipPanel.ShowTip(Language[10893])
|
||
end
|
||
end
|
||
this.line.gameObject:SetActive(false)
|
||
this.SetCardsData()
|
||
this.OnClickTabBtn(proId)
|
||
end
|
||
|
||
function this.OnDrag(Pointgo, data) --拖动中
|
||
if data.pointerEnter == nil then --拖到屏幕外
|
||
this.line.transform:SetParent(this.roleGrid.transform)
|
||
this.line.gameObject:SetActive(false)
|
||
return
|
||
end
|
||
local _i = tonumber(string.sub(data.pointerEnter.gameObject.name, -1))
|
||
if _i == nil then _i = 0 end
|
||
local nameIn = data.pointerEnter.gameObject.name --进入的UI名
|
||
this.line:SetActive(nameIn == "DragView" .. _i or nameIn == "Bg" .. _i)
|
||
if nameIn == "DragView" .. _i then
|
||
this.line.transform:SetParent(bgListGo[_i].transform)
|
||
elseif nameIn == "Bg" .. _i then
|
||
this.line.transform:SetParent(bgListGo[_i].transform)
|
||
else
|
||
this.line.transform:SetParent(this.roleGrid.transform)
|
||
this.line.gameObject:SetActive(false)
|
||
end
|
||
this.line.transform:SetAsFirstSibling()
|
||
if panelType == FORMATION_TYPE.EXPEDITION or panelType == FORMATION_TYPE.CARBON then
|
||
this.line.transform:DOAnchorPos(Vector3.New(0, 15, 0), 0)
|
||
else
|
||
this.line.transform:DOAnchorPos(Vector3.New(0, 30, 0), 0)
|
||
end
|
||
end
|
||
|
||
--战力刷新
|
||
function this.RefreshPower()
|
||
local newPowerNum = this.formationPower
|
||
if oldPowerNum ~= newPowerNum and oldPowerNum ~= 0 then
|
||
UIManager.OpenPanel(UIName.WarPowerChangeNotifyPanelV2, { oldValue = oldPowerNum, newValue = newPowerNum })
|
||
end
|
||
oldPowerNum = this.formationPower
|
||
-- this.power.text =this.formationPower
|
||
-- this.RefreshFormation()
|
||
end
|
||
|
||
-- 设置扫荡显示的层级
|
||
function this.SetDrawLevel()
|
||
local go = this.ElementalResonanceView.gameObject
|
||
local canvas = go:GetComponent("Canvas")
|
||
canvas.overrideSorting = false
|
||
end
|
||
|
||
--部分界面有特殊条件显示,集体管理
|
||
function this.CheckCondition()
|
||
if this.curFormationIndex == FormationTypeDef.FORMATION_QIJIESHILIAN then
|
||
this.opView.RefreshConditon(this.choosedList)
|
||
elseif this.curFormationIndex == FormationTypeDef.FIGHT_LEVEL or this.curFormationIndex == FormationTypeDef.FIGHT_ASSISTANTLEVEL then
|
||
--山河社稷图不随阵容变化儿变化,不用写
|
||
end
|
||
end
|
||
|
||
--设置一键上阵
|
||
function this.SetOneKeyGo()
|
||
--获取需要上阵的位置
|
||
local posArr = this.GetPosList()
|
||
if #posArr == 0 then
|
||
PopupTipPanel.ShowTip(Language[10891])
|
||
return
|
||
end
|
||
-- 获取数据
|
||
local heros = {}
|
||
if this.opView.GetOneKeyUpHeroList then
|
||
heros = this.opView.GetOneKeyUpHeroList()
|
||
else
|
||
heros = HeroManager.GetAllHeroDatas()
|
||
end
|
||
if not heros or #heros <= 0 then
|
||
PopupTipPanel.ShowTip(Language[10894])
|
||
return
|
||
end
|
||
--按战力从大到小排序
|
||
table.sort(heros, function(a, b)
|
||
if a.warPower == b.warPower then
|
||
return a.id > b.id
|
||
else
|
||
return a.warPower > b.warPower
|
||
end
|
||
end)
|
||
--修改 upHeroSidTable 静态id 存储 有则跳过
|
||
local upHeroSidTable = {}
|
||
this.choosedList = {}
|
||
if this.opView.RemoveTeamByIndex then
|
||
this.opView.RemoveTeamByIndex(this.curFormationIndex)
|
||
end
|
||
for k, v in ipairs(heros) do
|
||
local curSingleherodata = HeroManager.GetSingleHeroData(v.dynamicId)
|
||
--if curSingleherodata.property~=5 then
|
||
if not upHeroSidTable[curSingleherodata.id] then
|
||
if #this.choosedList < 6 then
|
||
for n = 1, #posArr do
|
||
upHeroSidTable[curSingleherodata.id] = curSingleherodata.id
|
||
table.insert(this.choosedList, { heroId = v.dynamicId, position = posArr[n] })
|
||
if this.opView.AddHeroToTeam then
|
||
this.opView.AddHeroToTeam(v.dynamicId, posArr[n], this.curFormationIndex)
|
||
end
|
||
table.remove(posArr, n)
|
||
break
|
||
end
|
||
end
|
||
end
|
||
--end
|
||
end
|
||
this.SetCardsData()
|
||
this.OnClickTabBtn(proId, false, false)
|
||
end
|
||
|
||
return FormationPanelV2
|