sk-client/Assets/ManagedResources/~Lua/Modules/Battle/View/BattlePanel.lua

1229 lines
50 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

require("Base/BasePanel")
require("Base/Stack")
require("Modules.Battle.Config.PokemonEffectConfig")
require("Modules/Fight/FightPointPassMainPanel")
local BattleView = require("Modules/Battle/View/BattleView")
BattlePanel = Inherit(BasePanel)
local chatPanel = require("Modules/Chat/BattleChatPanel")
local this = BattlePanel
local battleTimeScaleKey = "battleTimeScaleKey"
local timeCount
local endFunc
local isBack = false --是否为战斗回放
local fightType -- 1关卡 2副本 3限时怪, 5兽潮, 6新关卡, 7公会boss
local orginLayer
local fightId = nil --< 通用战斗id
local fightTypeSub = nil --< 战斗类型子类型 主用于back类型区别
local fightData = nil
local canOutRound = -1
local leaderScale = 1.5--72/55 --《主角技能图标放大大小
-- 显示跳过战斗使用
local hadCounted = 0
local TeQuanOneId = 9001
local TeQuanTwoId = 9002
-- function BattlePanel:Showleader_Skill(roleIcon,skillName,index)
-- if index == 1 then
-- this.myRect_Skill:SetActive(true)
-- this.myRect_Skill_Icon.sprite = Util.LoadSprite(GetResourcePath(roleIcon))
-- this.myRect_Skill_SkillName.text = GetLanguageStrById(skillName)
-- elseif index == 2 then
-- this.enemyRect_Skill:SetActive(true)
-- this.enemyRect_Skill_Icon.sprite = Util.LoadSprite(GetResourcePath(roleIcon))
-- this.enemyRect_Skill_SkillName.text = GetLanguageStrById(skillName)
-- end
-- end
--初始化所有技能的图标
function BattlePanel:InitIcons_Skill(skillArray,skillName,camp,unlockSlotNum)
local skillRes = ConfigManager.GetConfig(ConfigName.SkillConfig)
--获取最大槽位数字
for i = 1, 4 do
--设置上锁
if camp == 0 then
self:LockGrid_Skill(this.mineLeaderSkill,i,true)
else
self:LockGrid_Skill(this.enemyLeaderSkill,i,true)
end
end
--LogError("unlockSlotNum:"..unlockSlotNum)
local maxSlotNum = unlockSlotNum
for i = 1, maxSlotNum do
--设置解锁
if camp == 0 then
self:LockGrid_Skill(this.mineLeaderSkill,i,false)
else
self:LockGrid_Skill(this.enemyLeaderSkill,i,false)
end
end
--LogError("#skillArray"..#skillArray)
if #skillArray > 0 then
for i = 1, #skillArray do
-- if i > maxSlotNum then break end -- 主角固定不会大于四个 未装配技能不显示
-- if skillArray[i][8].sort==i then
local skillid = tonumber(skillArray[i][1])
--LogError("skillid:"..skillid)
local iconid = skillRes[skillid].Icon
--LogError("icon:"..iconid)
local lv = skillArray[i][8].lv
local slot = tonumber(skillArray[i][8].sort)
-- LogError("skillLv:"..lv)
if camp == 0 then
self:FreshGrid_Skill(this.mineLeaderSkill,iconid,lv,slot)
else
self:FreshGrid_Skill(this.enemyLeaderSkill,iconid,lv,slot)
end
-- else
-- -- 设置为空状态
-- self:FreshGrid_Skill(this.enemyLeaderSkill,nil,1,i)
-- end
end
end
end
--刷新技能图标状态 lock skilling hold
function BattlePanel:FreshIcon_Skill(skill,skillLv,camp,maxSlot,nextWaiteSkill)
local root
if camp == 0 then
root = this.mineLeaderSkill
else
root = this.enemyLeaderSkill
end
local SetIconState
SetIconState = function(index,state)
local node = Util.GetGameObject(root, "iconback/node_"..index)
local picnode = Util.GetGameObject(node, "small/Big")
local pic =Util.GetGameObject(picnode, "image")--:GetComponent("Image")
local scale = leaderScale
local function defalteTween(_node,part)
Util.GetTransform(_node, part):DOScale(Vector3.one, 0.3)
:SetEase(Ease.InOutExpo)
:SetDelay(0.2)
end
local function scaleTween(_part)
Util.GetTransform(node, _part):DOScale(Vector3.one*scale , skill.ReturnTime / 1000)
:OnComplete(function ()
SetIconState(index,1)
SetIconState(index%4 + 1 ,5) --1 x 2 2 x 3 3 x 4 4 x 1
end)
:SetEase(Ease.OutExpo)
:SetDelay(0.1)
end
if state == 1 then -- 使用过
Util.SetGray(pic, true)
Util.GetGameObject(picnode, "Fire").gameObject:SetActive(false)
defalteTween(node,"small")
defalteTween(node,"circle")
elseif state == 2 then --select 选择状态
Util.SetGray(pic, false)
Util.GetGameObject(picnode, "Fire").gameObject:SetActive(true)
scaleTween("small",nextWaiteSkill)
scaleTween("circle",nextWaiteSkill)
if skill.id == nil then
skillLv = 2
else
--服务器没有对应字段本地读取表单
local data = ConfigManager.TryGetConfigDataByKey(ConfigName.MotherShipPlaneConfig, "Skill", skill.id)
if data == nil then
skillLv = 1
else
skillLv = data.Lvl
end
end
local spriteName = "X1_zhandou_zhanjian_xingji_0"..tonumber(skillLv)
local pskillLv = Util.GetGameObject(root, "iconback/skill1"):GetComponent("Image")
pskillLv.sprite = Util.LoadSprite(spriteName)
elseif state == 3 then -- unlock 解锁empty
Util.SetGray(pic, false)
Util.GetGameObject(picnode, "Fire").gameObject:SetActive(false)
defalteTween(node,"small")
defalteTween(node,"circle")
elseif state == 4 then -- lock 未解锁
elseif state == 5 then -- 等待使用
Util.GetGameObject(picnode, "Fire").gameObject:SetActive(true)
end
end
-- for i = 1,maxSlot do
-- if i < skill.sort then
-- SetIconState(i,1)
-- else
-- SetIconState(i,3)
-- end
-- end
-- 更新选择的等级信息
SetIconState(skill.sort,2)
-- lock setgray
-- skilling background set active
-- hold skilling background set active false
end
-- 刷新图标信息
function BattlePanel:FreshGrid_Skill(root,roleIcon,lv,index)
local node = Util.GetGameObject(root, "iconback/node_"..index)
local picnode = Util.GetGameObject(node, "small/Big")
local pic = Util.GetGameObject(picnode, "image"):GetComponent("Image")
Util.GetTransform(node, "image"):DOScale(Vector3.one, 0.1)
LogError("res:"..GetResourcePath(roleIcon))
pic.sprite = Util.LoadSprite(GetResourcePath(roleIcon))
end
-- 主角技能图标信息上锁
function BattlePanel:LockGrid_Skill(root,index,unlock)
local node = Util.GetGameObject(root, "iconback/node_"..index)
local picnode = Util.GetGameObject(node, "small/Big")
local pic =Util.GetGameObject(picnode, "image"):GetComponent("Image")
Util.GetGameObject(picnode, "Fire").gameObject:SetActive(false)
if not unlock then
pic.color = Color.New(1,1,1,1)
--LogError("unlock")
else
pic.color = Color.New(1,1,1,1)
pic.sprite = Util.LoadSprite("X1_xinpian_shuxingsuo")
end
Util.GetTransform(node, "image"):DOScale(Vector3.New(31/55*0.9, 40/55*0.9, 1), 0.1) --原始图片尺寸 grid/标准尺寸 * 缩放
end
-- 主角技能图标信息上锁
function BattlePanel:UnGreyAndFrie_Skill(skill,camp,index,role)
local root
if camp == 0 then
root = this.mineLeaderSkill
else
root = this.enemyLeaderSkill
end
local node = Util.GetGameObject(root, "iconback/node_"..index)
local picnode = Util.GetGameObject(node, "small/Big")
local pic = Util.GetGameObject(picnode, "image"):GetComponent("Image")
Util.GetGameObject(picnode, "Fire").gameObject:SetActive(false)
if skill.sort == #role.skillArray then
for i=1, 4 do
local node = Util.GetGameObject(root, "iconback/node_"..i)
local picnode = Util.GetGameObject(node, "small/Big")
local pic = Util.GetGameObject(picnode, "image")
Util.SetGray(pic, false)
end
end
end
function BattlePanel:ShowRect_Skill(roleIcon, skillName, index, isLead)
if index == 1 then
this.myRect_Skill:SetActive(true)
if isLead then
this.myRect_Skill_title.sprite = Util.LoadSprite(GetPictureFont("X1_guaji_jinengmingzi_04"))
else
this.myRect_Skill_title.sprite = Util.LoadSprite(GetPictureFont("X1_guaji_jinengmingzi_01"))
end
this.myRect_Skill_Icon.sprite = Util.LoadSprite(GetResourcePath(roleIcon))
this.myRect_Skill_SkillName.text = GetLanguageStrById(skillName)
Timer.New(function ()
this.myRect_Skill:SetActive(false)
end, 3):Start()
elseif index == 2 then
this.enemyRect_Skill:SetActive(true)
if isLead then
this.enemyRect_Skill_title.sprite = Util.LoadSprite(GetPictureFont("X1_guaji_jinengmingzi_04"))
else
this.enemyRect_Skill_title.sprite = Util.LoadSprite(GetPictureFont("X1_guaji_jinengmingzi_01"))
end
this.enemyRect_Skill_Icon.sprite = Util.LoadSprite(GetResourcePath(roleIcon))
this.enemyRect_Skill_SkillName.text = GetLanguageStrById(skillName)
Timer.New(function ()
this.enemyRect_Skill:SetActive(false)
end, 3):Start()
end
end
function BattlePanel:ShowHurtEffect(skilltype, camp)
if skilltype == 1 then
Util.GetGameObject(self.gameObject, "hurtEffect/camp"..camp):SetActive(true)
-- Util.GetGameObject(self.gameObject, "hurtEffect/camp"..camp):GetComponent("CanvasGroup").alpha = 0
Util.GetGameObject(self.gameObject, "hurtEffect/camp"..camp):GetComponent("Image").sprite = Util.LoadSprite("xuli2")
Util.GetGameObject(self.gameObject, "hurtEffect/camp"..camp.."/Image"):GetComponent("Image").sprite = Util.LoadSprite(GetPictureFont("font2"))
Timer.New(function ()
Util.GetGameObject(self.gameObject, "hurtEffect/camp"..camp):SetActive(false)
end, 1.5):Start()
elseif skilltype == 2 then
Util.GetGameObject(self.gameObject, "hurtEffect/camp"..camp):SetActive(true)
-- Util.GetGameObject(self.gameObject, "hurtEffect/camp"..camp):GetComponent("CanvasGroup").alpha = 0
Util.GetGameObject(self.gameObject, "hurtEffect/camp"..camp):GetComponent("Image").sprite = Util.LoadSprite("xuli")
Util.GetGameObject(self.gameObject, "hurtEffect/camp"..camp.."/Image"):GetComponent("Image").sprite = Util.LoadSprite(GetPictureFont("font1"))
Timer.New(function ()
Util.GetGameObject(self.gameObject, "hurtEffect/camp"..camp):SetActive(false)
end, 1.5):Start()
end
end
--初始化组件(用于子类重写)
function this:InitComponent()
--创建战场Prefab
this.battleSceneLogicGameObject, this.battleSceneGameObject = BattleManager.CreateBattleScene(nil)
BattleView:InitComponent(self, this.battleSceneLogicGameObject, this.battleSceneGameObject)
chatPanel:InitComponent(Util.GetGameObject(self.gameObject, "ChatPanel"), this)
orginLayer = 0
this.BG = Util.GetGameObject(self.gameObject, "BG")
this.UpRoot = Util.GetGameObject(self.gameObject, "UpRoot")
this.Option = Util.GetGameObject(this.UpRoot, "option")
this.DownRoot = Util.GetGameObject(self.gameObject, "DownRoot")
--回合数
this.roundText = Util.GetGameObject(this.DownRoot, "option/rounds/Text1"):GetComponent("Text")
this.roundText2 = Util.GetGameObject(this.DownRoot, "option/rounds/Text2"):GetComponent("Text")
this.orderText = Util.GetGameObject(this.Option, "order/text"):GetComponent("Text")
this.btnTimeScale = Util.GetGameObject(this.DownRoot, "option/btnTimeScale")--倍数
this.btnExit = Util.GetGameObject(this.DownRoot, "option/btnExit")
this.ButtonLock = Util.GetGameObject(this.DownRoot, "option/Button/lock")
this.btnJump = Util.GetGameObject(this.DownRoot, "option/btnJump")--跳过
this.btnFightBack = Util.GetGameObject(this.DownRoot, "option/btnFightBack")--切出
this.btnBuff = Util.GetGameObject(this.DownRoot, "option/btnBuff")--buff
this.submit = Util.GetGameObject(this.DownRoot, "bg")
this.DefResult = Util.GetGameObject(this.UpRoot, "result")
this.AtkResult = Util.GetGameObject(this.DownRoot, "result")
this.damagePanel = Util.GetGameObject(this.UpRoot, "damage")
this.damageBoxBg = Util.GetGameObject(this.damagePanel, "bg")
this.damageBoxIcon = Util.GetGameObject(this.damagePanel, "bg/iconRoot/icon"):GetComponent("Image")
this.damageBoxLevel = Util.GetGameObject(this.damagePanel, "lv"):GetComponent("Text")
this.damageProgress = Util.GetGameObject(this.damagePanel, "progress/Fill")
this.damageText = Util.GetGameObject(this.damagePanel, "progress/Text"):GetComponent("Text")
this.myRect_Skill = Util.GetGameObject(self.gameObject, "myRect_Skill")
this.myRect_Skill_title = Util.GetGameObject(this.myRect_Skill, "title"):GetComponent("Image")
this.myRect_Skill_Icon = Util.GetGameObject(this.myRect_Skill, "Icon"):GetComponent("Image")
this.myRect_Skill_SkillName = Util.GetGameObject(this.myRect_Skill, "SkillName"):GetComponent("Text")
this.enemyRect_Skill = Util.GetGameObject(self.gameObject, "enemyRect_Skill")
this.enemyRect_Skill_title = Util.GetGameObject(this.enemyRect_Skill, "title"):GetComponent("Image")
this.enemyRect_Skill_Icon = Util.GetGameObject(this.enemyRect_Skill, "Icon"):GetComponent("Image")
this.enemyRect_Skill_SkillName = Util.GetGameObject(this.enemyRect_Skill, "SkillName"):GetComponent("Text")
this.mineLeaderSkill = Util.GetGameObject(self.gameObject, "leftLeaderMan")
this.enemyLeaderSkill = Util.GetGameObject(self.gameObject, "rightLeaderMan")
this.btnBuffUp = Util.GetGameObject(self.gameObject, "DownRoot/option/btnBuffUp")
end
--绑定事件(用于子类重写)
function this:BindEvent()
chatPanel:BindEvent()
Util.AddLongPressClick(this.submit, function()
BattleRecordManager.SubmitBattleRecord()
end, 0.5)
Util.AddClick(this.btnTimeScale, function ()
if not BattleManager.IsCanOperate() then
return
end
if not BattleManager.IsUnlockBattleSpeed() then
PopupTipPanel.ShowTip(PrivilegeManager.GetPrivilegeOpenTip(PRIVILEGE_TYPE.DoubleTimesFight))
return
end
local scale = BattleManager.GetTimeScale()
-- scale = math.floor(scale*10 + 0.5)/10
scale = math.floor(scale)
if scale == math.floor(BATTLE_TIME_SCALE_ONE) then
BattleManager.SetTimeScale(BATTLE_TIME_SCALE_TWO)
elseif scale == math.floor(BATTLE_TIME_SCALE_TWO) then
if not BattleManager.IsUnlockBattleSpeedThree() then
PopupTipPanel.ShowTip(PrivilegeManager.GetPrivilegeOpenTip(PRIVILEGE_TYPE.ThreeTimesFight).." "..GetLanguageStrById(50534))
BattleManager.SetTimeScale(BATTLE_TIME_SCALE_ONE)
return
end
BattleManager.SetTimeScale(BATTLE_TIME_SCALE_Three)
elseif scale == BATTLE_TIME_SCALE_Three then
BattleManager.SetTimeScale(BATTLE_TIME_SCALE_ONE)
end
end)
Util.AddClick(this.ButtonLock, function ()
PopupTipPanel.ShowTipByLanguageId(12246)
end)
local pauseTime = 31
Util.AddClick(this.btnExit, function ()
if not BattleManager.IsUnlockBattlePass() then
PopupTipPanel.ShowTip(PrivilegeManager.GetPrivilegeOpenTip(isBack and PRIVILEGE_TYPE.SkipFight or PRIVILEGE_TYPE.ExitFight ))
return
end
if BattleLogic.IsEnd or not BattleManager.IsCanOperate() then
return
end
-- 战斗暂停
BattleManager.PauseBattle()
local count = 0
local timer = Timer.New(function ()
if not UIManager.IsOpen(UIName.MsgPanel) then
return
end
count = count + 1
if isBack then
MsgPanel.tipLabel.text = string.format(GetLanguageStrById(10255), pauseTime - count)
else
MsgPanel.tipLabel.text = string.format(GetLanguageStrById(10256), pauseTime - count)
end
if count == pauseTime then
MsgPanel.OnRightBtnClick()
return
end
end, 1, pauseTime, true)
local cancelFunc = function ()
this.CastingPass = MsgPanel._toggle.isOn
BattleManager.ResumeBattle()
timer:Stop()
end
local sureFunc = function()
this.CastingPass = MsgPanel._toggle.isOn
BattleLogic.IsEnd = true
BattleView.Clear()
timer:Stop()
-- 事先初始化
this.lastBattleResult = {
result = 0,
lastPos = 0,
}
if isBack then --战斗回放直接跳过
if not this.fightResult then
end
BattleView.EndBattle(this.fightResult or 0)
return
end
if fightType == BATTLE_TYPE.MAP_FIGHT then
-- 必输的操作
NetManager.MapFightResultRequest(1, "", "", fightType, this.lastBattleResult.result,function (msg)
this.lastBattleResult.result = msg.result
if msg.lastXY then
this.lastBattleResult.lastPos = msg.lastXY
else
this.lastBattleResult.lastPos = 0
end
this.ShowBattleResult(msg.result)
end)
elseif fightType == BATTLE_TYPE.GUILD_BOSS and fightType == BATTLE_TYPE.GUILD_CAR_DELAY then
this.lastBattleResult.result = -1
this:ClosePanel()
else
this.ShowBattleResult(0)
end
end
MsgPanel.ShowTwo(GetLanguageStrById(10258), sureFunc, cancelFunc, GetLanguageStrById(10259), GetLanguageStrById(10260),nil, false, GetLanguageStrById(10261))
MsgPanel._toggle.isOn = this.CastingPass
timer:Start()
end)
Util.AddClick(this.btnJump, function ()
if BattleManager.IsCanOperate()
-- and not BattleLogic.IsEnd
then
if AppConst.isOpenGM then
else
if fightType == BATTLE_TYPE.Climb_Tower then --爬塔战斗 判断爬塔跳过战斗特权
if not PrivilegeManager.GetPrivilegeOpenStatus(PRIVILEGE_TYPE.ClimbTowerJump) and not PrivilegeManager.GetPrivilegeOpenStatusById(TeQuanOneId) then
PopupTipPanel.ShowTip(PrivilegeManager.GetPrivilegeOpenTip(PRIVILEGE_TYPE.ClimbTowerJump))
return
end
elseif fightType == BATTLE_TYPE.DefenseTraining then --深渊试炼战斗 判断深渊试炼跳过战斗特权
if not PrivilegeManager.GetPrivilegeOpenStatus(PRIVILEGE_TYPE.DefenseTrainingJump) and not PrivilegeManager.GetPrivilegeOpenStatusById(TeQuanTwoId) then
PopupTipPanel.ShowTip(PrivilegeManager.GetPrivilegeOpenTip(PRIVILEGE_TYPE.DefenseTrainingJump))
return
end
elseif fightType == BATTLE_TYPE.BLITZ_STRIKE then --遗忘之城战斗 判断遗忘之城跳过战斗特权
if not PrivilegeManager.GetPrivilegeOpenStatus(PRIVILEGE_TYPE.BlitzStrikeJump) and not PrivilegeManager.GetPrivilegeOpenStatusById(TeQuanTwoId) then
PopupTipPanel.ShowTip(PrivilegeManager.GetPrivilegeOpenTip(PRIVILEGE_TYPE.BlitzStrikeJump))
return
end
elseif fightType == BATTLE_TYPE.DAILY_CHALLENGE then --异端之战战斗 判断异端之战跳过战斗特权
if not PrivilegeManager.GetPrivilegeOpenStatus(PRIVILEGE_TYPE.MapJump) and not PrivilegeManager.GetPrivilegeOpenStatusById(TeQuanTwoId) then
PopupTipPanel.ShowTip(PrivilegeManager.GetPrivilegeOpenTip(PRIVILEGE_TYPE.MapJump))
return
end
elseif fightType == BATTLE_TYPE.REDCLIFF then --腐化之战战斗 判断腐化之战跳过战斗特权
if not PrivilegeManager.GetPrivilegeOpenStatus(PRIVILEGE_TYPE.Carbon) and not PrivilegeManager.GetPrivilegeOpenStatusById(TeQuanOneId) then
PopupTipPanel.ShowTip(PrivilegeManager.GetPrivilegeOpenTip(PRIVILEGE_TYPE.Carbon))
return
end
elseif not BattleManager.IsUnlockBattlePass() then
PopupTipPanel.ShowTip(PrivilegeManager.GetPrivilegeOpenTip(PRIVILEGE_TYPE.SkipFight))
return
-- elseif not PrivilegeManager.GetPrivilegeOpenStatusById(TeQuanOneId) then
-- PopupTipPanel.ShowTip(GetLanguageStrById(50433))
-- return
end
end
--BOSS关无法跳过
if fightType == BATTLE_TYPE.STORY_FIGHT then
if G_MainLevelConfig[FightPointPassManager.curOpenFight].BossShow == 1 then
PopupTipPanel.ShowTip(GetLanguageStrById(50201))
return
end
end
BattleView.IsJumpGameEnd = true
BattleView.EndBattle()
BattleLogic.IsEnd = true
end
end)
Util.AddClick(this.btnBuff, function ()
-- if BattleManager.IsCanOperate() and not BattleLogic.IsEnd then
-- BattleView.IsJumpGameEnd = true
-- BattleView.EndBattle()
-- BattleLogic.IsEnd = true
-- end
-- local roles = BattleView:GetRoles()
UIManager.OpenPanel(UIName.BuffPreviewPopup)--, roles)
end)
Util.AddClick(this.btnBuffUp, function ()
UIManager.OpenPanel(UIName.BuffPreviewPopup)
end)
Util.AddClick(this.btnFightBack, function ()
if BattleLogic.GetCurRound() < canOutRound + 1 then
PopupTipPanel.ShowTip(GetLanguageStrById(50276))
return
end
if BattleManager.IsUnlockBattleInBack() then
if not UIManager.IsOpen(UIName.MainPanel) then
BattleManager.isFightBack = true
BattleView:ResetAllRoleAnimation()
SoundManager.SetBattleVolume(0)
UIManager.OpenPanel(UIName.MainPanel)
end
else
PopupTipPanel.ShowTipByLanguageId(50016)
end
end)
end
function this:SetOutRound()
if fightData and (next(fightData.fightUnitDataAppend) ~= nil or next(fightData.tankDataAppend) ~= nil) then
canOutRound = -1
if fightData.fightUnitDataAppend and #fightData.fightUnitDataAppend > 0 then
for i = 1, #fightData.fightUnitDataAppend do
canOutRound = math.max(canOutRound, fightData.fightUnitDataAppend[i].round)
end
end
if fightData.tankDataAppend and #fightData.tankDataAppend > 0 then
for i = 1, #fightData.tankDataAppend do
canOutRound = math.max(canOutRound, fightData.tankDataAppend[i].round)
end
end
end
end
function this:LoseJump(id)
if not MapManager.isInMap then
if JumpManager.CheckJump(id) then
this:ClosePanel()
JumpManager.GoJumpWithoutTip(id)
end
else
PopupTipPanel.ShowTipByLanguageId(10250)
end
end
--添加事件监听(用于子类重写)
function this:AddListener()
chatPanel:AddListener()
Game.GlobalEvent:AddEvent(GameEvent.Battle.OnTimeScaleChanged, this.SwitchTimeScale)
end
--移除事件监听(用于子类重写)
function this:RemoveListener()
chatPanel:RemoveListener()
Game.GlobalEvent:RemoveEvent(GameEvent.Battle.OnTimeScaleChanged, this.SwitchTimeScale)
end
function this:OnSortingOrderChange()
Util.AddParticleSortLayer(this.gameObject, this.sortingOrder - orginLayer)
orginLayer = this.sortingOrder
chatPanel:OnSortingOrderChange(self.sortingOrder)
BattleView:OnSortingOrderChange(this.sortingOrder)
-- this.BtView:OnSortingOrderChange(this.sortingOrder)
end
--界面打开时调用(用于子类重写)
function this:OnOpen(_fightData, _fightType, _endFunc, _fightId, _fightTypeSub)
this.gameObject:SetActive(not BattlePanel.IsBattlePanelHide)
chatPanel:OnShow()
this:CloseOtherPanel()
if this.battleSceneLogicGameObject ~= nil then
this.battleSceneLogicGameObject:SetActive(true)
end
if this.battleSceneGameObject ~= nil then
this.battleSceneGameObject:SetActive(true)
end
this:CloseOtherPanel()
BattleView:OnOpen(_fightData)
fightData = _fightData.fightData
endFunc = _endFunc
fightType = _fightType --判定战斗类型
isBack = _fightType == BATTLE_TYPE.BACK --判定是否是战斗回放
hadCounted = 0
fightId = _fightId
fightTypeSub = _fightTypeSub
local loadMapName = _fightData.mapName
if not loadMapName then
loadMapName = BattleManager.GetBattleBg(fightType)
end
if this.mapName ~= loadMapName then
this.mapName = loadMapName
if this.mapGameObject ~= nil then
GameObject.Destroy(this.mapGameObject)
end
this.mapGameObject = BattleManager.CreateMap(this.battleSceneGameObject, loadMapName)
end
Util.GetGameObject(self.gameObject, "hurtEffect/camp0"):SetActive(false)
Util.GetGameObject(self.gameObject, "hurtEffect/camp1"):SetActive(false)
this.btnExit:SetActive(false)--FightPointPassManager.GetStopBtnState())
SoundManager.PlayMusic(SoundConfig.BGM_Battle_1, true, function()
-- SoundManager.PlayMusic(SoundConfig.BGM_Battle_2, false)
SoundManager.PlayMusic(SoundConfig.BGM_Battle_1, false)
end)
this.fightResult = nil
-- 清空名字数据
BattleView:SetNameStr(nil)
this.DefResult:SetActive(false)
this.AtkResult:SetActive(false)
local bossFinished = function ()
-- 开始战斗
BattleView:StartBattle()
this.InitPanelData()
end
if fightType == BATTLE_TYPE.STORY_FIGHT then
if G_MainLevelConfig[FightPointPassManager.curOpenFight].BossShow == 1 then
--先驱守护隐藏
Util.GetGameObject(this.gameObject.transform.parent, "BattlePanel/DownRoot/option/OuterUnit/mine"):SetActive(false)
Util.GetGameObject(this.gameObject.transform.parent, "BattlePanel/DownRoot/option/OuterUnit/enemy"):SetActive(false)
--延迟执行
Timer.New(function()
--显示boss来袭特效
local fightBossName = "FightTipsUI_Boss"
local fightTipsUI_Boss = poolManager:LoadAsset(fightBossName, PoolManager.AssetType.GameObject)
fightTipsUI_Boss.transform:SetParent(self.gameObject.transform)
fightTipsUI_Boss.transform.localScale = Vector3.one
fightTipsUI_Boss.transform.localPosition = Vector3.zero
--特效时间后销毁
--更换多语言资源
local font = Util.GetGameObject(fightTipsUI_Boss.gameObject, "font"):GetComponent("MeshRenderer").materials[0]
local fontLight = Util.GetGameObject(fightTipsUI_Boss.gameObject, "fontLight"):GetComponent("MeshRenderer").materials[0]
local name = font:GetTexture("_TextureSample0").name
local newName = GetPictureFont(string.sub(name, 1, #(name)-3))
local material = poolManager:LoadAsset(newName, PoolManager.AssetType.Other)
if material == nil then
LogRed("无" .. newName)
else
font:SetTexture("_TextureSample0", material)
fontLight:SetTexture("_MainTex", material)
end
--特效时间后销毁
Timer.New(function()
bossFinished()
poolManager:UnLoadAsset(fightBossName, fightTipsUI_Boss, PoolManager.AssetType.GameObject)
end,2):Start()
end,0.3):Start()
else
bossFinished()
end
else
bossFinished()
end
this:SetOutRound()
-- this.BtView:OnOpen({ sortOrder = self.sortingOrder, panelType = PanelTypeView.AlameinWarPanel })
end
function this:CloseOtherPanel()
if UIManager.IsOpen(UIName.DamageResultPanel) then
UIManager.ClosePanel(UIName.DamageResultPanel)
end
if UIManager.IsOpen(UIName.DefenseTrainingBuffPopup) then
UIManager.ClosePanel(UIName.DefenseTrainingBuffPopup)
end
if UIManager.IsOpen(UIName.RewardItemSingleShowPopup) then
UIManager.ClosePanel(UIName.RewardItemSingleShowPopup)
end
if UIManager.IsOpen(UIName.PublicGetHeroPanel) then
UIManager.ClosePanel(UIName.PublicGetHeroPanel)
end
end
function this:OnOpenCustom()
--战斗从后台打开
if this.battleSceneLogicGameObject ~= nil then
this.battleSceneLogicGameObject:SetActive(true)
end
if this.battleSceneGameObject ~= nil then
this.battleSceneGameObject:SetActive(true)
end
BattleView:OnOpenCustom()
end
-- 设置战斗结果
function this:SetResult(result)
this.fightResult = result
end
-- 外部调用
function this:ShowNameShow(result, str)
if true then return end
this.fightResult = result
if str then
local nameList = string.split(str, "|")
BattleView:SetNameStr(str)
this.DefResult:SetActive(true)
this.AtkResult:SetActive(true)
Util.GetGameObject(this.AtkResult, "win"):SetActive(result == 1)
Util.GetGameObject(this.AtkResult, "lose"):SetActive(result == 0)
Util.GetGameObject(this.DefResult, "win"):SetActive(result == 0)
Util.GetGameObject(this.DefResult, "lose"):SetActive(result == 1)
Util.GetGameObject(this.AtkResult, "win/Text"):GetComponent("Text").text = nameList[1]
Util.GetGameObject(this.AtkResult, "lose/Text"):GetComponent("Text").text = nameList[1]
Util.GetGameObject(this.DefResult, "win/Text"):GetComponent("Text").text = nameList[2]
Util.GetGameObject(this.DefResult, "lose/Text"):GetComponent("Text").text = nameList[2]
else
this.DefResult:SetActive(false)
this.AtkResult:SetActive(false)
end
end
-- 初始化
function this.InitPanelData()
if fightType == BATTLE_TYPE.GUILD_BOSS and fightType == BATTLE_TYPE.GUILD_CAR_DELAY then
this.myDamage = 0
this.myDamageLevel = 0
this.RefreshMyDamageShow()
local list = RoleManager.Query(function (r) return r.camp == 1 end)
if list[1] then
list[1].Event:AddEvent(BattleEventName.RoleBeDamaged, function (atkRole, damage, bCrit, finalDmg, damageType, dotType)
this.myDamage = this.myDamage + damage
this.RefreshMyDamageShow()
end)
end
end
this.InitOption()
end
function this.InitOption()
--显示倒计时
local curRound, maxRound = BattleLogic.GetCurRound()
this.roundText.text = curRound
this.roundText2.text = "/" .. maxRound
hadCounted = 0
this.Option:SetActive(true)
Util.GetGameObject(this.btnTimeScale, "lock"):SetActive(not BattleManager.IsUnlockBattleSpeed())
--跳过锁定
local IsUnLockBattlePass
-- if fightType == BATTLE_TYPE.Climb_Tower then
-- IsUnLockBattlePass = PrivilegeManager.GetPrivilegeOpenStatus(PRIVILEGE_TYPE.ClimbTowerJump)
-- elseif fightType == BATTLE_TYPE.DefenseTraining then
-- IsUnLockBattlePass = PrivilegeManager.GetPrivilegeOpenStatus(PRIVILEGE_TYPE.DefenseTrainingJump)
-- elseif fightType == BATTLE_TYPE.BLITZ_STRIKE then
-- IsUnLockBattlePass = PrivilegeManager.GetPrivilegeOpenStatus(PRIVILEGE_TYPE.BlitzStrikeJump)
-- elseif fightType == BATTLE_TYPE.DAILY_CHALLENGE then
-- IsUnLockBattlePass = PrivilegeManager.GetPrivilegeOpenStatus(PRIVILEGE_TYPE.MapJump)
-- elseif fightType == BATTLE_TYPE.REDCLIFF then
-- IsUnLockBattlePass = PrivilegeManager.GetPrivilegeOpenStatus(PRIVILEGE_TYPE.Carbon)
-- else
-- IsUnLockBattlePass = BattleManager.IsUnlockBattlePass()
-- end
if fightType == BATTLE_TYPE.Climb_Tower then
IsUnLockBattlePass = PrivilegeManager.GetPrivilegeOpenStatus(PRIVILEGE_TYPE.ClimbTowerJump) or PrivilegeManager.GetPrivilegeOpenStatusById(TeQuanOneId)
elseif fightType == BATTLE_TYPE.DefenseTraining then
IsUnLockBattlePass = PrivilegeManager.GetPrivilegeOpenStatus(PRIVILEGE_TYPE.DefenseTrainingJump) or PrivilegeManager.GetPrivilegeOpenStatusById(TeQuanTwoId)
elseif fightType == BATTLE_TYPE.BLITZ_STRIKE then
IsUnLockBattlePass = PrivilegeManager.GetPrivilegeOpenStatus(PRIVILEGE_TYPE.BlitzStrikeJump) or PrivilegeManager.GetPrivilegeOpenStatusById(TeQuanTwoId)
elseif fightType == BATTLE_TYPE.DAILY_CHALLENGE then
IsUnLockBattlePass = PrivilegeManager.GetPrivilegeOpenStatus(PRIVILEGE_TYPE.MapJump) or PrivilegeManager.GetPrivilegeOpenStatusById(TeQuanTwoId)
elseif fightType == BATTLE_TYPE.REDCLIFF then
IsUnLockBattlePass = PrivilegeManager.GetPrivilegeOpenStatus(PRIVILEGE_TYPE.Carbon) or PrivilegeManager.GetPrivilegeOpenStatusById(TeQuanOneId)
else
IsUnLockBattlePass = BattleManager.IsUnlockBattlePass() or PrivilegeManager.GetPrivilegeOpenStatusById(TeQuanOneId)
end
if AppConst.isOpenGM then
Util.GetGameObject(this.btnJump, "lock"):SetActive(false)
else
Util.GetGameObject(this.btnJump, "lock"):SetActive(not IsUnLockBattlePass)
end
-- 跳过
Util.GetGameObject(this.btnJump, "Prompt"):GetComponent("Text").text = GetLanguageStrById(50277)
Util.GetGameObject(this.btnJump, "Prompt"):SetActive(IsUnLockBattlePass)
-- 切出
local isUnlockBattleInBack = BattleManager.IsUnlockBattleInBack()
Util.GetGameObject(this.btnFightBack, "lock"):SetActive(not isUnlockBattleInBack)
-- 初始化战斗时间,刷新前端显示
BattleManager.InitTimeScale()
this.SwitchTimeScale()
end
function this.SwitchTimeScale()
local _scale = BattleManager.GetTimeScale()
local child = this.btnTimeScale.transform.childCount
local s = "x".. math.floor(_scale)
for i = 1, child do
local g = this.btnTimeScale.transform:GetChild(i-1).gameObject
g:SetActive(g.name == s)
end
end
function this.BattleEnd(result)
BattleManager.isFightBack = false
BattleManager.ResetCVDatas() --< 重置航母显示数据
BattleManager.PauseBattle()
-- 强制停止倍速
Time.timeScale = 1
-- 设置音效播放的速度
SoundManager.SetAudioSpeed(1)
--用一个变量接收最近的战斗结果
this.lastBattleResult = {
result = result,
hpList = {},
drop = {},
}
-- 需要和服务器确认结果
if fightType == BATTLE_TYPE.MAP_FIGHT
or fightType == BATTLE_TYPE.MONSTER_CAMP
or fightType == BATTLE_TYPE.STORY_FIGHT
or fightType == BATTLE_TYPE.GUILD_BOSS
or fightType == BATTLE_TYPE.Climb_Tower
or fightType == BATTLE_TYPE.Climb_Tower_Advance
or fightType == BATTLE_TYPE.CONTEND_HEGEMONY
or fightType == BATTLE_TYPE.BLITZ_STRIKE
or fightType == BATTLE_TYPE.DefenseTraining
or fightType == BATTLE_TYPE.ALAMEIN_WAR
or fightType == BATTLE_TYPE.PVEActivity
then
local levelId = nil
if fightType == BATTLE_TYPE.Climb_Tower then
levelId = ClimbTowerManager.curFightId
elseif fightType == BATTLE_TYPE.Climb_Tower_Advance then
levelId = ClimbTowerManager.curFightId_Advance
elseif fightType == BATTLE_TYPE.DefenseTraining
or fightType == BATTLE_TYPE.BLITZ_STRIKE
or fightType == BATTLE_TYPE.ALAMEIN_WAR then
levelId = fightId
elseif fightType == BATTLE_TYPE.CONTEND_HEGEMONY then
levelId = HegemonyManager.curFightId
elseif fightType == BATTLE_TYPE.DAILY_CHALLENGE
or fightType == BATTLE_TYPE.REDCLIFF
or fightType == BATTLE_TYPE.CollectMaterials then
levelId = 1
elseif fightType == BATTLE_TYPE.PVEActivity then
levelId = PVEActivityManager.selectId
else
levelId = FightPointPassManager.GetCurFightId()
end
NetManager.MapFightResultRequest(10000, "", levelId, fightType,result, function (msg)
for i = 1, #msg.remainHpList do
this.lastBattleResult.hpList[i] = msg.remainHpList[i]
end
this.lastBattleResult.drop = msg.enventDrop
this.lastBattleResult.missionDrop = msg.missionDrop
this.lastBattleResult.result = msg.result
this.lastBattleResult.mission = msg.mission
this.lastBattleResult.eventId = msg.eventId
this.lastBattleResult.lastTowerTime = msg.lastTowerTime
if msg.lastXY then
this.lastBattleResult.lastPos = msg.lastXY
else
this.lastBattleResult.lastPos = 0
end
this.ShowBattleResult(msg.result, msg)
end)
elseif fightType == BATTLE_TYPE.EXECUTE_FIGHT then--远征处理
if ExpeditionManager.ExpeditionState == 1 then
local GetCurNodeInfo = ExpeditionManager.curAttackNodeInfo
NetManager.EndExpeditionBattleRequest(GetCurNodeInfo.sortId, "", function (msg)
this.lastBattleResult.result = msg.result
this.lastBattleResult.drop = msg.drop
--ExpeditionManager.UpdateHeroHpValue(msg.heroInfo)
--ExpeditionManager.UpdateNodeValue(msg) --nodeInfo
this.ShowBattleResult(msg.result, msg)
end)
else
this:ClosePanel()
ExpeditionManager.RefreshPanelShowByState()
end
else
-- 直接显示结果
this.ShowBattleResult(result)
end
end
function this.ShowBattleResult(result, msg)
-- 检测不一致数据记录
if BattleRecordManager.Lastresult ~= -1 then
if result ~= BattleRecordManager.Lastresult then
LogError("##fightDate is Error!!!!" .. "server is :"..result .." local is :".. BattleRecordManager.Lastresult)
if fightType == BATTLE_TYPE.MAP_FIGHT
or fightType == BATTLE_TYPE.MONSTER_CAMP
-- or fightType == BATTLE_TYPE.STORY_FIGHT
-- or fightType == BATTLE_TYPE.GUILD_BOSS
-- or fightType == BATTLE_TYPE.Climb_Tower
-- or fightType == BATTLE_TYPE.Climb_Tower_Advance
-- or fightType == BATTLE_TYPE.CONTEND_HEGEMONY
-- or fightType == BATTLE_TYPE.DefenseTraining
or fightType == BATTLE_TYPE.ALAMEIN_WAR then
-- result = BattleRecordManager.Lastresult
end
end
end
SoundManager.StopMusic()
-- -- 战斗结束时,如果元素光环面板还开着,则先关闭
-- if UIManager.IsOpen(UIName.ElementPopup) then
-- UIManager.ClosePanel(UIName.ElementPopup)
-- end
-- 回放直接关闭界面
if fightType == BATTLE_TYPE.BACK then
--> 判断回放类型 独立显示
if fightTypeSub and fightTypeSub == BATTLE_TYPE_BACK.BACK_WITH_SB then
if result == 0 then -- 失败
local haveRecord = BattleRecordManager.isHaveRecord()
UIManager.OpenPanel(UIName.BattleFailPopup, this, haveRecord,nil, fightType)
else -- 胜利
-- UIManager.OpenPanel(UIName.BattleWinPopup, this, isBack, fightType, this.lastBattleResult)
local bestData, allDamage = BattleRecordManager.GetBattleBestData()
if bestData then
-- 胜利显示本场比赛的表现最好的英雄
UIManager.OpenPanel(UIName.BattleBestPopup, bestData.roleId, bestData.damage, allDamage, nil, function(_BattleBestPopup)
if _BattleBestPopup then
_BattleBestPopup:ClosePanel()
end
this:ClosePanel()
end, true)
end
end
else
this:ClosePanel()
end
return
end
if fightType == BATTLE_TYPE.Climb_Tower_Advance and ClimbTowerManager.fight_isPVP then
if result == 0 then -- 失败
local haveRecord = BattleRecordManager.isHaveRecord()
UIManager.OpenPanel(UIName.BattleFailPopup, this, haveRecord,nil, fightType)
else -- 胜利
-- local bestData, allDamage= BattleRecordManager.GetBattleBestData()
-- if bestData then
-- -- 胜利显示本场比赛的表现最好的英雄
-- UIManager.OpenPanel(UIName.BattleBestPopup, bestData.roleId, bestData.damage, allDamage, nil, function(_BattleBestPopup)
-- if _BattleBestPopup then
-- _BattleBestPopup:ClosePanel()
-- end
-- this:ClosePanel()
-- end, true)
-- end
NetManager.VirtualElitBattleGetInfo(function()
ClimbTowerManager.GetRankData(function()
PopupTipPanel.ShowTipByLanguageId(22523)
this:ClosePanel()
end, ClimbTowerManager.ClimbTowerType.Advance)
end)
end
return
end
-- 播放结算音效
if result == 0 then
this.resultSoundAudio = SoundManager.PlaySound(SoundConfig.Sound_BattleLose)
else
this.resultSoundAudio = SoundManager.PlaySound(SoundConfig.Sound_BattleWin)
end
if fightType == BATTLE_TYPE.GUILD_BOSS then
UIManager.OpenPanel(UIName.GuildBossFightResultPopup, msg.enventDrop, msg.missionDrop, msg.essenceValue, function()
this:ClosePanel()
end)
elseif fightType == BATTLE_TYPE.GUILD_CAR_DELAY and GuildCarDelayManager.progress == 1 then
-- 延时执行避免事件冲突
Timer.New(function()
local bestData, allDamage = BattleRecordManager.GetBattleBestData()
if bestData then
-- 胜利显示本场比赛的表现最好的英雄
UIManager.OpenPanel(UIName.BattleBestPopup, bestData.roleId, bestData.damage, allDamage, function(_BattleBestPopup)
UIManager.ClosePanel(UIName.BattleOfMinskBuyCountPopup)
-- 打开关卡奖励界面
UIManager.OpenPanel(UIName.RewardItemPopup,nil, 1,function()
--车迟挑战cd计时
GuildCarDelayManager.SetCdTime(GuildCarDelayProType.Challenge)
if _BattleBestPopup then
_BattleBestPopup:ClosePanel()
end
this:ClosePanel()
end, 3,true,true,nil,true,nil,BATTLE_TYPE.GUILD_CAR_DELAY)
end)
end
end, 0.1):Start()
elseif fightType == BATTLE_TYPE.DEATH_POS then
-- 延时执行避免事件冲突
Timer.New(function()
local bestData, allDamage = BattleRecordManager.GetBattleBestData()
if bestData then
-- 胜利显示本场比赛的表现最好的英雄
UIManager.OpenPanel(UIName.BattleBestPopup, bestData.roleId, bestData.damage, allDamage, function(_BattleBestPopup)
-- 打开关卡奖励界面
UIManager.OpenPanel(UIName.RewardItemPopup, GuildBattleManager.drop, 1,function()
if _BattleBestPopup then
_BattleBestPopup:ClosePanel()
end
this:ClosePanel()
end, 4,true,true,nil,true,nil,BATTLE_TYPE.DEATH_POS)
end)
end
end, 0.1):Start()
elseif fightType == BATTLE_TYPE.GuildTranscript then
-- 延时执行避免事件冲突
Timer.New(function()
local bestData, allDamage = BattleRecordManager.GetBattleBestData()
if bestData then
-- 胜利显示本场比赛的表现最好的英雄
UIManager.OpenPanel(UIName.BattleBestPopup, bestData.roleId, bestData.damage, allDamage, function(_BattleBestPopup)
-- 打开关卡奖励界面
UIManager.OpenPanel(UIName.RewardItemPopup,GuildTranscriptManager.drop, 1,function()
if _BattleBestPopup then
_BattleBestPopup:ClosePanel()
end
this:ClosePanel()
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.RefreshGuildTranscripQuickBtn)
Game.GlobalEvent:DispatchEvent(GameEvent.Guild.RefreshGuildTranscript)
GuildTranscriptManager.IsKillShowTip()
end, 6,true,true,nil,false)
end)
end
end, 0.1):Start()
-- elseif fightType == BATTLE_TYPE.CONTEND_HEGEMONY then
-- Timer.New(function()
-- local bestData, allDamage= BattleRecordManager.GetBattleBestData()
-- if bestData then
-- --胜利显示本场比赛的表现最好的英雄
-- UIManager.OpenPanel(UIName.BattleBestPopup, bestData.roleId, bestData.damage, allDamage, function(_BattleBestPopup)
-- -- 打开关卡奖励界面
-- UIManager.OpenPanel(UIName.RewardItemPopup,false, 1,function()
-- if _BattleBestPopup then
-- _BattleBestPopup:ClosePanel()
-- end
-- UIManager.ClosePanel(UIName.HegemonyPopup)
-- this:ClosePanel()
-- end,7,true,true,nil,false,HegemonyManager.curFightId)
-- end)
-- end
-- end, 0.1):Start()
else
if result == 0 then -- 失败
local haveRecord = BattleRecordManager.isHaveRecord()
UIManager.OpenPanel(UIName.BattleFailPopup, this, haveRecord,nil,fightType)
elseif result == -3 then --战斗异常/进度不匹配
-- LogError(" xxx fightId"..fightId.." result:"..msg.result)
local haveRecord = BattleRecordManager.isHaveRecord()
PopupTipPanel.ShowTip(GetLanguageStrById(10926))
UIManager.OpenPanel(UIName.BattleFailPopup, this, haveRecord,nil,fightType)
else -- 胜利
UIManager.OpenPanel(UIName.BattleWinPopup, this, isBack, fightType, this.lastBattleResult)
end
end
end
-- 战斗波次变化回调
function this.OnOrderChanged(order)
-- body
--显示波次
this.orderText.text = string.format("%d/%d", order, BattleLogic.TotalOrder)
end
-- 战斗回合变化回调
function this.OnRoundChanged(round)
-- body
--显示波次
local curRound, maxRound = BattleLogic.GetCurRound()
--限制当前回合数大于最大回合数
if curRound > maxRound then
curRound = maxRound
end
this.roundText.text = curRound
end
-- 由BattleView驱动
function this.OnUpdate()
end
-- 刷新我的伤害显示
function this.RefreshMyDamageShow()
if fightType == 7 or fightType == 10 then
local myDamage = this.myDamage-- *10
local bossRewardConfig = ConfigManager.GetConfig(ConfigName.GuildBossRewardConfig)
local curLevel, curLevelData, nextLevelData
for level, data in ConfigPairs(bossRewardConfig) do
if data.Damage > myDamage then
nextLevelData = data
break
end
curLevel = level
curLevelData = data
end
if not nextLevelData then
nextLevelData = curLevelData
end
-- 有等级变化
if curLevel ~= this.myDamageLevel then
this.myDamageLevel = curLevel
-- 播放升级特效
this.damageBoxBg:SetActive(false)
this.damageBoxBg:SetActive(true)
end
this.damageBoxLevel.text = curLevel or 0
this.damageBoxIcon.sprite = GuildBossManager.GetBoxSpriteByLevel(curLevel or 0)
-- this.damageText.text = myDamage.."/"..nextLevelData.Damage -- 显示总伤害
local curLevelDamage = not curLevelData and 0 or curLevelData.Damage
local deltaDamage = nextLevelData.Damage - curLevelDamage
local myDeltaDamage = myDamage - curLevelDamage
local rate = deltaDamage == 0 and 1 or myDeltaDamage/deltaDamage
this.damageText.text = myDeltaDamage.."/"..deltaDamage -- 显示当前等级伤害
this.damageProgress.transform.localScale = Vector3.New(rate, 1, 1)
end
end
--界面关闭时调用(用于子类重写)
function this:OnClose()
chatPanel:OnClose()
if this.battleSceneLogicGameObject ~= nil then
this.battleSceneLogicGameObject:SetActive(false)
end
if this.battleSceneGameObject ~= nil then
this.battleSceneGameObject:SetActive(false)
end
--[[
BattleView:OnClose()
-- 停止音效
--if this.resultSoundAudio then
-- SoundManager.StopSound(this.resultSoundAudio)
--end
--
-- BattleManager.SetTimeScale(1)
-- 真正生效的敌方
Time.timeScale = 1
-- 设置音效播放的速度
SoundManager.SetAudioSpeed(1)
if endFunc then
endFunc(this.lastBattleResult)
end
--检测是否需要弹每日任务飘窗
TaskManager.RefreshShowDailyMissionTipPanel()
]]
BattleView:OnClose()
end
function this:BattleEndClear()
-- 真正生效的敌方
Time.timeScale = 1
-- 设置音效播放的速度
SoundManager.SetAudioSpeed(1)
if endFunc then
endFunc(this.lastBattleResult)
end
--检测是否需要弹每日任务飘窗
TaskManager.RefreshShowDailyMissionTipPanel()
fightData = nil
canOutRound = -1
end
--界面销毁时调用(用于子类重写)
function this:OnDestroy()
--地图销毁
GameObject.Destroy(this.mapGameObject)
this.mapGameObject = nil
--销毁战场
if this.battleSceneLogicGameObject ~= nil then
GameObject.Destroy(this.battleSceneLogicGameObject)
this.battleSceneLogicGameObject = nil
end
if this.battleSceneGameObject ~= nil then
GameObject.Destroy(this.battleSceneGameObject)
this.battleSceneGameObject = nil
end
BattleView:OnDestroy()
-- SubUIManager.Close(this.BtView)
end
return BattlePanel