local ATM_MainMatchView={} local this=ATM_MainMatchView local commonInfo = require("Modules/ArenaTopMatch/View/ATM_CommonInfo") --初始化组件(用于子类重写) function ATM_MainMatchView:InitComponent() this.btnRecord = Util.GetGameObject(self.gameObject, "record") this.btnTeamRank = Util.GetGameObject(self.gameObject, "teamRank") this.btnFightDetail = Util.GetGameObject(self.gameObject, "btnDetail") this.containPanel = Util.GetGameObject(self.gameObject, "contain") this.lockPanel = Util.GetGameObject(self.gameObject, "contain/LockBg") this.lockContext = Util.GetGameObject(this.lockPanel, "context"):GetComponent("Text") this.lockTime = Util.GetGameObject(this.lockPanel, "JoinRoot/time"):GetComponent("Text") this.lockTip = Util.GetGameObject(this.lockPanel, "JoinRoot/tip"):GetComponent("Text") this.outTip = Util.GetGameObject(this.lockPanel, "OutRoot/Text"):GetComponent("Text") this.WeedOutText = Util.GetGameObject(this.lockPanel, "WeedOutRoot/Text"):GetComponent("Text") this.WeedOutMyRank = Util.GetGameObject(this.lockPanel, "WeedOutRoot/MyRank"):GetComponent("Text") this.WeedOutMyRankText = Util.GetGameObject(this.lockPanel, "WeedOutRoot/MyRank/Text"):GetComponent("Text") this.WeedOutBestRank = Util.GetGameObject(this.lockPanel, "WeedOutRoot/BestRank"):GetComponent("Text") this.WeedOutBestRankText = Util.GetGameObject(this.lockPanel, "WeedOutRoot/BestRank/Text"):GetComponent("Text") this.lockIn = Util.GetGameObject(this.lockPanel, "JoinRoot") this.lockOut = Util.GetGameObject(this.lockPanel, "OutRoot") this.WeedOutRoot = Util.GetGameObject(this.lockPanel, "WeedOutRoot") this.effect = Util.GetGameObject(self.gameObject, "bg/UI_effect_ArenaMainPanel_particle") this.orggroup = Util.GetGameObject(this.lockPanel, "orggroup") this.Demons = Util.GetGameObject(this.lockPanel, "Demons") this.myBaby = {} for i = 1, 6 do this.myBaby[i] = Util.GetGameObject(this.lockPanel,"Demons/heroPro (" .. i .. ")") end end --绑定事件(用于子类重写) function ATM_MainMatchView:BindEvent() commonInfo.BindEvent() Util.AddClick(this.btnRecord, function () -- UIManager.OpenPanel(UIName.RecordPopup) ArenaTopMatchManager.RequestBattleHistory(function() UIManager.OpenPanel(UIName.RecordPopup) end) end) Util.AddClick(this.btnTeamRank, function () ArenaTopMatchManager.RequestMyTeamRank(function() UIManager.OpenPanel(UIName.ATMTeamRankPopup) end) end) Util.AddClick(this.btnFightDetail, function () this.battleDetailBtnClick() end) end --添加事件监听(用于子类重写) function ATM_MainMatchView:AddListener() Game.GlobalEvent:AddEvent(GameEvent.TopMatch.OnTopMatchDataUpdate, this.OnOpen, this) Game.GlobalEvent:AddEvent(GameEvent.ATM_RankView.OnOpenBattle, this.battleDetailBtnClick) end --移除事件监听(用于子类重写) function ATM_MainMatchView:RemoveListener() Game.GlobalEvent:RemoveEvent(GameEvent.TopMatch.OnTopMatchDataUpdate, this.OnOpen, this) Game.GlobalEvent:RemoveEvent(GameEvent.ATM_RankView.OnOpenBattle, this.battleDetailBtnClick) end --界面打开时调用(用于子类重写) function ATM_MainMatchView:OnOpen(...) local isActive = ArenaTopMatchManager.IsTopMatchActive() this.StateChange(isActive) end -- 状态切换 function this.StateChange(isOpen) local baseData = ArenaTopMatchManager.GetBaseData() -- 没开启或者开启没参赛都属于未参赛 local isJoin = baseData.joinState == 1 local isOver = baseData.progress == -2 LogGreen("isOpen "..tostring(isOpen).." "..tostring(isJoin).." "..tostring(isOver).." "..baseData.joinState) local battleInfo = ArenaTopMatchManager.GetBattleInfo() LogGreen("battleInfo.result "..battleInfo.result.." baseData.battleState "..baseData.battleState) if isOpen then if isJoin then this.SetPlayerInfo() if battleInfo.result == 0 then this.SetWeedOutRootInfo() end else this.SetNotJionInfo() end else if isOver then this.SetOverInfo() else this.SetLockInfo() end end this.containPanel:SetActive(not isOpen or not isJoin or battleInfo.result == 0) this.btnRecord:SetActive(isOpen and isJoin) this.btnTeamRank:SetActive(isOpen and isJoin) this.btnFightDetail:SetActive(isOpen and isJoin and baseData.battleState == TOP_MATCH_TIME_STATE.OPEN_IN_END) this.orggroup:SetActive(not isOpen and not isOver) this.Demons:SetActive(not isOpen and not isOver) end function this.battleDetailBtnClick() local battleInfo = ArenaTopMatchManager.GetBattleInfo() LogGreen("sssssssssssss "..battleInfo.result) if battleInfo.result == -1 then Log(Language[10168]) return end LogGreen("sssssssssssss") local nameStr = battleInfo.myInfo.name.."|"..battleInfo.enemyInfo.name ArenaTopMatchManager.RequestReplayRecord(battleInfo.result, battleInfo.fightData, nameStr, function() local blueInfo = battleInfo.myInfo local redInfo = battleInfo.enemyInfo --构建显示结果数据 local arg = {} arg.result = battleInfo.result arg.blue = {} arg.blue.uid = blueInfo.uid arg.blue.name = blueInfo.name arg.blue.head = blueInfo.head arg.blue.frame = blueInfo.headFrame arg.red = {} arg.red.uid = redInfo.uid arg.red.name = redInfo.name arg.red.head = redInfo.head arg.red.frame = redInfo.headFrame UIManager.OpenPanel(UIName.ArenaResultPopup, arg) end) end function this.SetPlayerInfo() this.lockIn:SetActive(false) this.lockOut:SetActive(false) this.WeedOutRoot:SetActive(false) local battleInfo = ArenaTopMatchManager.GetBattleInfo() local attInfo = battleInfo.myInfo local defInfo = battleInfo.enemyInfo local myResult = -1 local blueInfo = nil local redInfo = nil LogRed("battleInfo.result "..battleInfo.result) if attInfo.uid == PlayerManager.uid then blueInfo = attInfo redInfo = defInfo myResult = battleInfo.result elseif defInfo.uid == PlayerManager.uid then blueInfo = defInfo redInfo = attInfo if battleInfo.result ~= -1 then myResult = (battleInfo.result + 1) % 2 end end LogRed("myResult "..myResult) --if battleInfo.result == 0 then -- 如果进攻方失败,则如果我是进攻方则我失败,反之胜利 -- myResult = attInfo.uid == PlayerManager.uid and 0 or 1 --elseif battleInfo.result == 1 then -- 如果进攻方胜利,则如果我是进攻方则我胜利 -- myResult = attInfo.uid == PlayerManager.uid and 1 or 0 --end local baseData = ArenaTopMatchManager.GetBaseData() commonInfo.SetActive(true) commonInfo.SetInfoData(1, blueInfo, redInfo, myResult, baseData == TOP_MATCH_STAGE.CHOOSE) end function this.SetLockInfo() --加一套编队 this.lockIn:SetActive(true) this.lockOut:SetActive(false) this.WeedOutRoot:SetActive(false) commonInfo.SetActive(false) this.lockContext.text = Language[10169] this.lockTip.text = Language[10170] if not this.lockTimer then local startTime = ArenaTopMatchManager.GetTopMatchTime() local during = startTime - PlayerManager.serverTime during = during <= 0 and 0 or during this.lockTime.text = TimeToHMS(during) this.lockTimer = Timer.New(function () local startTime = ArenaTopMatchManager.GetTopMatchTime() local during = startTime - PlayerManager.serverTime during = during <= 0 and 0 or during local timeStr = TimeToHMS(during) this.lockTime.text = timeStr end, 1, -1, true) this.lockTimer:Start() end this.FreshTeam() end function this.FreshTeam() Util.AddOnceClick(this.orggroup, function () UIManager.OpenPanel(UIName.FormationPanelV2, FORMATION_TYPE.ARENA_TOP_MATCH, function() -- 重新获取战斗数据 --ArenaTopMatchManager.RequestTopMatchBaseInfo() end) end) for i, demon in ipairs(this.myBaby) do Util.GetGameObject(demon, "frame"):GetComponent("Image").sprite = Util.LoadSprite(GetQuantityImageByquality(1)) Util.GetGameObject(demon, "hero"):SetActive(false) end local formation = FormationManager.GetFormationByID(FormationTypeDef.FORMATION_ARENA_DEFEND) for i, hero in ipairs(formation.teamHeroInfos) do LogGreen("hero.position "..hero.position) local heroData = HeroManager.GetSingleHeroData(hero.heroId) local heroGo = Util.GetGameObject(this.myBaby[hero.position], "hero") heroGo:SetActive(true) Util.GetGameObject(heroGo, "lvbg/levelText"):GetComponent("Text").text = heroData.lv SetHeroStars(Util.GetGameObject(heroGo, "starGrid"), heroData.star) local demonId = heroData.id local heroConfig = ConfigManager.GetConfigData(ConfigName.HeroConfig, demonId) Util.GetGameObject(this.myBaby[hero.position], "frame"):GetComponent("Image").sprite = Util.LoadSprite(GetQuantityImageByquality(heroConfig.Quality)) Util.GetGameObject(heroGo, "icon"):GetComponent("Image").sprite = Util.LoadSprite(GetResourcePath(heroConfig.Icon)) Util.GetGameObject(heroGo, "proIcon"):GetComponent("Image").sprite = Util.LoadSprite(GetProStrImageByProNum(heroConfig.PropertyName)) end end function this.SetNotJionInfo() this.lockIn:SetActive(false) this.lockOut:SetActive(true) this.WeedOutRoot:SetActive(false) commonInfo.SetActive(false) this.lockContext.text = Language[10171] this.outTip.text = Language[10172] end function this.SetOverInfo() this.lockIn:SetActive(false) this.lockOut:SetActive(true) this.WeedOutRoot:SetActive(false) commonInfo.SetActive(false) this.lockContext.text = Language[10173] this.outTip.text = Language[10174] end function this.SetWeedOutRootInfo() this.lockIn:SetActive(false) this.lockOut:SetActive(false) this.WeedOutRoot:SetActive(true) commonInfo.SetActive(false) local tmData = ArenaTopMatchManager.GetBaseData() this.WeedOutText.text = Language[12208] this.WeedOutMyRank.text = Language[10104] this.WeedOutMyRankText.text = tmData.myrank <= 0 and Language[10041] or ArenaTopMatchManager.GetRankNameByRank(tmData.myrank) this.WeedOutBestRank.text = "历史最高排名:" this.WeedOutBestRankText.text = tmData.maxRank <= 0 and Language[10094] or this.GetRankName(tmData.maxRank) end -- 获取我得排名信息 function this.GetRankName(rank) if rank == 1 then return Language[10095] elseif rank == 2 then return Language[10096] else local maxTurn = ArenaTopMatchManager.GetEliminationMaxRound() for i = 1, maxTurn do if i == maxTurn then local config = ConfigManager.GetConfigData(ConfigName.ChampionshipSetting, 1) return config.ChampionshipPlayer..Language[10097] end if rank > math.pow(2, i) and rank <= math.pow(2, i+1) then return (i+1)..Language[10097] end end end end -- 层级改变回调 local orginLayer = 0 function ATM_MainMatchView:OnSortingOrderChange(sort) Util.AddParticleSortLayer(this.effect, sort - orginLayer) orginLayer = sort end --界面关闭时调用(用于子类重写) function ATM_MainMatchView:OnClose() if this.lockTimer then this.lockTimer:Stop() this.lockTimer = nil end commonInfo.SetEffectPopupShow(false) end --界面销毁时调用(用于子类重写) function ATM_MainMatchView:OnDestroy() end return ATM_MainMatchView