-- 编队动作 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","z_icon_qingjinbao"} 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", } 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, 490), 1, 5, Vector2.New(40, 35)) 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, "Grid/Tabs/Btn" .. i) Util.GetGameObject(tabs[i], "Text"):GetComponent("Text"):GetComponent("Text").text=PropertyType[i] tabs[i]:SetActive(true) -- if tabsImg[i + 1] then -- tabs[i]:GetComponent("Image").sprite = this.spLoader:LoadSprite(tabsImg[i + 1]) -- end end this.selectBtn = Util.GetGameObject(this.gameObject, "Grid/selectBtn") this.selectTxt=Util.GetGameObject(this.gameObject, "Grid/selectBtn/Text"):GetComponent("Text") --副本扫荡 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") 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) 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 --飘战力 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 icon=Util.GetGameObject(o,"Bg1/icon"):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.painting local roleConfig = {} local toward=0 local star,starType = heroData.GetStar(1) 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) --local livePos = Vector3.New(0,-600, 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(false) 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)) icon.sprite=this.spLoader:LoadSprite(GetResourcePath(heroData.heroConfig.ShowLive)) 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=""..level.."" -- elseif HarmonyManager:IsEnvoy(heroData.dynamicId) and HarmonyManager:HongMengTowerUpLimit() >= HarmonyManager.TowerStartLimit then -- lv.text=""..level.."" -- else -- lv.text=level -- end lv.text=level SetCardStars(starGrid,star,starType) if star > 9 then kaPaiEffect:SetActive(false) 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.selectTxt.text=PropertyType[_proId] -- 定制显示 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,this.selectTxt) 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) 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 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.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") 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 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 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(GetQuantityImageByquality(heroData.heroConfig.Quality,star)) if HarmonyManager.IsChangeColor(heroData.dynamicId) then -- body lv.text=""..level.."" elseif HarmonyManager:IsEnvoy(heroData.dynamicId) and HarmonyManager:HongMengTowerUpLimit() >= HarmonyManager.TowerStartLimit then -- bod lv.text=""..level.."" 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[10688]) return end if heroData.exist and heroData.exist == 0 then PopupTipPanel.ShowTip("激活英雄图鉴后才可使用!") return end -- 当前可选的最大上阵人数 local maxNum = ActTimeCtrlManager.MaxArmyNum() if LengthOfTable(this.choosedList) >= maxNum then PopupTipPanel.ShowTip(Language[10689]) return end --判断是否上阵相同猎妖师 for k, v in pairs(this.choosedList) do if HeroManager.GetSingleHeroData(v.heroId).id == heroData.id then PopupTipPanel.ShowTip(Language[10690]) return end end --自动计算位置 并赋值pos local curPos=this.GetPos() if curPos == 0 then PopupTipPanel.ShowTip(Language[10689]) 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[10688]) return end if heroData.exist and heroData.exist == 0 then PopupTipPanel.ShowTip("激活英雄图鉴后才可使用!") return end -- 当前可选的最大上阵人数 local maxNum = ActTimeCtrlManager.MaxArmyNum() if LengthOfTable(this.choosedList) >= maxNum then PopupTipPanel.ShowTip(Language[10689]) return end --判断是否上阵相同猎妖师 for k, v in pairs(this.choosedList) do if HeroManager.GetSingleHeroData(v.heroId).id == heroData.id then PopupTipPanel.ShowTip(Language[10690]) return end end --自动计算位置 并赋值pos if curPos == 0 then PopupTipPanel.ShowTip(Language[10689]) 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("被拖动名。。。"..Pointgo.transform.name.." ".." 进入的UI名。。。"..data.pointerEnter.gameObject.name.."") 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[10691]) 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[10689]) 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("未找到符合条件得英雄") 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