283 lines
13 KiB
Lua
283 lines
13 KiB
Lua
local LuaDojoMgr = class("LuaDojoMgr")
|
|
|
|
function LuaDojoMgr:ctor()
|
|
self.battleSubMode = BattleSubMode.None
|
|
self:RegisterNetEvents();
|
|
end
|
|
|
|
function LuaDojoMgr:Destroy()
|
|
if tolua.getpeer(self) ~= nil then
|
|
tolua.setpeer(self, nil)
|
|
end
|
|
end
|
|
|
|
function LuaDojoMgr:RegisterNetEvents()
|
|
ManagerContainer.LuaEventMgr:RegisterEvent(UIEventNames.EID_SHUT_PVPCIMBINGBATTLE, self, self.PvpClimbingShutBattle)
|
|
end
|
|
|
|
function LuaDojoMgr:UnRegisterNetEvents()
|
|
ManagerContainer.LuaEventMgr:UnregisterEvent(UIEventNames.EID_SHUT_PVPCIMBINGBATTLE, self, self.PvpClimbingShutBattle)
|
|
end
|
|
|
|
function LuaDojoMgr:Enter(mode)
|
|
if mode == nil then
|
|
LogError("请设置VersusBattle的战斗类型")
|
|
return
|
|
end
|
|
self.battleSubMode = mode
|
|
ManagerContainer.LuaGameMgr:SetGameSpeed(ManagerContainer.LuaGameMgr.GameSpeed)
|
|
if self.battleSubMode == BattleSubMode.Voyage then
|
|
ManagerContainer.LuaEventMgr:RegisterEvent(UIEventNames.DOJO_CHALLENGE_RESULT_CHANGED, self, self.OnChallengeResultChanged)
|
|
end
|
|
end
|
|
|
|
function LuaDojoMgr:Exit()
|
|
if self.battleSubMode == BattleSubMode.Voyage then
|
|
ManagerContainer.LuaEventMgr:UnregisterEvent(UIEventNames.DOJO_CHALLENGE_RESULT_CHANGED, self, self.OnChallengeResultChanged)
|
|
end
|
|
end
|
|
|
|
function LuaDojoMgr:OnChallengeResultChanged()
|
|
if self.battleSubMode == BattleSubMode.Voyage then
|
|
local win = ManagerContainer.DataMgr.VoyageDataMgr:GetLastBattleWin()
|
|
local scores = ManagerContainer.DataMgr.VoyageDataMgr:GetLastBattleScores()
|
|
local rewards = ManagerContainer.DataMgr.VoyageDataMgr:GetLastBattleRewards()
|
|
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBattleResult, {win, scores, rewards, 'VoyageResultTips', self.ShowDojoExit, self})
|
|
end
|
|
end
|
|
|
|
function LuaDojoMgr:OnStartingFight()
|
|
local data = {}
|
|
data[1] = BattleMode.Versus
|
|
data[2] = self.battleSubMode
|
|
if self.battleSubMode == BattleSubMode.Arena then
|
|
data[3] = ManagerContainer.DataMgr.ArenaData:GetMatchFighterName()
|
|
data[4] = ManagerContainer.DataMgr.ArenaData:GetOurMembers()
|
|
data[5] = ManagerContainer.DataMgr.ArenaData:GetEnemyMembers()
|
|
elseif self.battleSubMode == BattleSubMode.PvPClimbinglower then
|
|
data[3] = ManagerContainer.DataMgr.PeakTowerDataMgr:GetMatchFighterName()
|
|
data[4] = ManagerContainer.DataMgr.PeakTowerDataMgr:GetOurMembers()
|
|
data[5] = ManagerContainer.DataMgr.PeakTowerDataMgr:GetEnemyMembers()
|
|
data[6] = true
|
|
data[7] = ManagerContainer.DataMgr.PeakTowerDataMgr:GetLimitedTime()
|
|
elseif self.battleSubMode == BattleSubMode.HundredDojo then
|
|
data[3] = ManagerContainer.DataMgr.HundredDojoDataMgr:GetMatchFighterName()
|
|
data[4] = ManagerContainer.DataMgr.HundredDojoDataMgr:GetOurMembers()
|
|
data[5] = ManagerContainer.DataMgr.HundredDojoDataMgr:GetEnemyMembers()
|
|
data[6] = true
|
|
data[7] = ManagerContainer.DataMgr.HundredDojoDataMgr:GetLimitedTime()
|
|
elseif self.battleSubMode == BattleSubMode.Voyage then
|
|
data[3] = ManagerContainer.DataMgr.VoyageDataMgr:GetMatchFighterName()
|
|
data[4] = ManagerContainer.DataMgr.VoyageDataMgr:GetOurMembers()
|
|
data[5] = ManagerContainer.DataMgr.VoyageDataMgr:GetEnemyMembers()
|
|
data[6] = true
|
|
data[7] = ManagerContainer.DataMgr.VoyageDataMgr:GetLimitedTime()
|
|
elseif self.battleSubMode == BattleSubMode.GvG then
|
|
local guildWarDataMgr = ManagerContainer.DataMgr.GuildWarDataMgr
|
|
if guildWarDataMgr then
|
|
data[3] = guildWarDataMgr:GetMatchFighterName()
|
|
data[4] = guildWarDataMgr:GetOurMembers()
|
|
data[5] = guildWarDataMgr:GetEnemyMembers()
|
|
data[6] = true
|
|
data[7] = guildWarDataMgr:GetLimitedTime()
|
|
else
|
|
data[6] = true
|
|
data[7] = 0
|
|
end
|
|
ManagerContainer.DataMgr.GuildWarDataMgr:StartStayBatting()
|
|
end
|
|
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIDojoBattle, data)
|
|
end
|
|
|
|
function LuaDojoMgr:OnBattleWin()
|
|
ManagerContainer.LuaGameMgr:SetGameSpeed(1)
|
|
if self.battleSubMode == BattleSubMode.Arena then
|
|
ManagerContainer.DataMgr.ArenaData:BattleEnd(1)
|
|
elseif self.battleSubMode == BattleSubMode.HundredDojo then
|
|
ManagerContainer.DataMgr.HundredDojoDataMgr:BattleEnd(1)
|
|
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBattleSimpleResult, {1, self.ShowDojoExit, self})
|
|
elseif self.battleSubMode == BattleSubMode.Voyage then
|
|
ManagerContainer.DataMgr.VoyageDataMgr:BattleEnd(1)
|
|
elseif self.battleSubMode == BattleSubMode.GvG then
|
|
ManagerContainer.DataMgr.GuildWarDataMgr:BattleEnd(1)
|
|
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBattleSimpleResult, {1, self.ShowDojoExit, self})
|
|
elseif self.battleSubMode == BattleSubMode.PvPClimbinglower then
|
|
ManagerContainer.DataMgr.PeakTowerDataMgr:BattleEnd(1)
|
|
end
|
|
end
|
|
|
|
function LuaDojoMgr:OnBattleFailed()
|
|
ManagerContainer.LuaGameMgr:SetGameSpeed(1)
|
|
if self.battleSubMode == BattleSubMode.Arena then
|
|
ManagerContainer.DataMgr.ArenaData:BattleEnd(0)
|
|
elseif self.battleSubMode == BattleSubMode.HundredDojo then
|
|
ManagerContainer.DataMgr.HundredDojoDataMgr:BattleEnd(0)
|
|
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBattleSimpleResult, {0, self.ShowDojoExit, self})
|
|
elseif self.battleSubMode == BattleSubMode.Voyage then
|
|
ManagerContainer.DataMgr.VoyageDataMgr:BattleEnd(0)
|
|
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBattleResult, {0, nil, nil, 'VoyageResultTips', self.ShowDojoExit, self})
|
|
elseif self.battleSubMode == BattleSubMode.GvG then
|
|
ManagerContainer.DataMgr.GuildWarDataMgr:BattleEnd(0)
|
|
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIBattleSimpleResult, {0, self.ShowDojoExit, self})
|
|
elseif self.battleSubMode == BattleSubMode.PvPClimbinglower then
|
|
--ManagerContainer.DataMgr.PeakTowerDataMgr:BattleEnd(0)
|
|
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIClimbingTowerBattleFailed,Enum.UIPageName.UIClimbingTower)
|
|
end
|
|
end
|
|
|
|
function LuaDojoMgr:OnBattleEnd()
|
|
ManagerContainer.LuaGameMgr:SetGameSpeed(1)
|
|
end
|
|
|
|
--关闭结算界面
|
|
function LuaDojoMgr:CloseBattlePage()
|
|
ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIDojoBattle)
|
|
ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIBattleStatistics)
|
|
if self.battleSubMode == BattleSubMode.Arena then
|
|
ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIDojoBattleFail)
|
|
ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIDojoBattleWin)
|
|
elseif self.battleSubMode == BattleSubMode.HundredDojo then
|
|
ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIBattleSimpleResult)
|
|
elseif self.battleSubMode == BattleSubMode.Voyage then
|
|
ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIBattleResult)
|
|
elseif self.battleSubMode == BattleSubMode.GvG then
|
|
ManagerContainer.LuaUIMgr:ClosePage(Enum.UIPageName.UIBattleSimpleResult)
|
|
end
|
|
end
|
|
|
|
function LuaDojoMgr:ShowDojoExit()
|
|
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIDojoExit)
|
|
end
|
|
|
|
function LuaDojoMgr:BackDojoMain()
|
|
self:CloseBattlePage();
|
|
if self.battleSubMode == BattleSubMode.Arena then
|
|
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIDojo2D, nil, Enum.UIPageName.UIMainCity1)
|
|
elseif self.battleSubMode == BattleSubMode.HundredDojo then
|
|
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIHundredDojo, nil, Enum.UIPageName.UIMainCity1)
|
|
elseif self.battleSubMode == BattleSubMode.Voyage then
|
|
ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UIVoyage, nil, Enum.UIPageName.UIMainCity1)
|
|
elseif self.battleSubMode == BattleSubMode.GvG then
|
|
local data = require('ExecuteSequenceData'):new()
|
|
data:AppendUIListener(Enum.UIPageName.UIMain, UIEventNames.UI_FILLCONTENT_COMPELETED, 5)
|
|
data:AppendFuncAfterListener(false, ManagerContainer.LuaUIMgr, ManagerContainer.LuaUIMgr.Open, Enum.UIPageName.UIMain)
|
|
data:AppendUIListener(Enum.UIPageName.UIMainCity1, UIEventNames.UI_FILLCONTENT_COMPELETED, 5)
|
|
data:AppendUIViewFuncAfterListener(false, Enum.UIPageName.UIMain, 'ChangePageMsg', Enum.MainViewPageType.Town)
|
|
data:AppendFunc(false, nil, function (sequenceData)
|
|
if ManagerContainer.DataMgr.GuildWarDataMgr:GetOpenState() then
|
|
sequenceData:AppendUIListener(Enum.UIPageName.UIGuildWarMatchMap, UIEventNames.UI_PAGE_IN_END_NTF, 5)
|
|
sequenceData:AppendFuncAfterListener(false, ManagerContainer.LuaUIMgr, ManagerContainer.LuaUIMgr.Open, Enum.UIPageName.UIGuildWarMatchMap)
|
|
sequenceData:AppendFunc(false, nil, function (sequenceData1)
|
|
if ManagerContainer.DataMgr.GuildWarDataMgr:GetOpenState() then
|
|
local attackBattleIdx = ManagerContainer.DataMgr.GuildWarDataMgr:GetLastAttackBattleIdx()
|
|
if attackBattleIdx then
|
|
sequenceData1:AppendUIListener(Enum.UIPageName.UIGuildWar, UIEventNames.UI_PAGE_IN_END_NTF, 5)
|
|
sequenceData1:AppendFuncAfterListener(false, ManagerContainer.LuaUIMgr, ManagerContainer.LuaUIMgr.Open, Enum.UIPageName.UIGuildWar,attackBattleIdx)
|
|
end
|
|
end
|
|
end, sequenceData)
|
|
end
|
|
end, data)
|
|
ManagerContainer.ExecuteSequenceMgr:Execute(data)
|
|
end
|
|
self:ShutBattle()
|
|
end
|
|
|
|
function LuaDojoMgr:ShutBattle()
|
|
ManagerContainer.LuaGameMgr:ShutDownBattle()
|
|
ManagerContainer.FSMMgr:ChangeState(Enum.StateEnum.IdleState.stateId)
|
|
end
|
|
|
|
function LuaDojoMgr:PvpClimbingShutBattle(openPageId,param)
|
|
self:CloseBattlePage()
|
|
if self.battleSubMode == BattleSubMode.PvPClimbinglower then
|
|
self:ShutBattle()
|
|
if openPageId ~= nil and openPageId > 0 then
|
|
ManagerContainer.LuaUIMgr:Open(openPageId,param, Enum.UIPageName.UIMainCity1)
|
|
end
|
|
LuaBattleBridge.CloseBgm()
|
|
end
|
|
end
|
|
|
|
-- 显示战场结束转场
|
|
function LuaDojoMgr:ShowBattleEndInterlude()
|
|
end
|
|
|
|
--pvp压制特效
|
|
function LuaDojoMgr:OnShowPvpPressPoint()
|
|
if self.chatHideTimer then
|
|
ManagerContainer.LuaTimerMgr:RemoveTimer(chatHideTimer)
|
|
self.chatHideTimer = nil
|
|
end
|
|
ManagerContainer.LuaTimerMgr:AddTimer(2000, 1,self,self.OnHidePvpPressPointTimer,nil);
|
|
end
|
|
|
|
function LuaDojoMgr:OnHidePvpPressPointTimer()
|
|
self.chatHideTimer = ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_SHOW_PVP_PRESSPOINT,true);
|
|
end
|
|
|
|
function LuaDojoMgr:OnShowBossBuff(teamSide,actorId,isBoss,buffIcon,num)
|
|
if isBoss then
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_Boss_Buff,buffIcon,num)
|
|
else
|
|
if teamSide == 0 then --我方
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_Player_Buff,actorId, buffIcon,num)
|
|
end
|
|
end
|
|
end
|
|
|
|
function LuaDojoMgr:OnRemoveBossBuff(teamSide,actorId,isBoss,buffIcon)
|
|
if isBoss then
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_Boss_Remove_Buff,buffIcon)
|
|
else
|
|
if teamSide == 0 then --我方
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Remove_Player_Buff, actorId, buffIcon)
|
|
end
|
|
end
|
|
end
|
|
|
|
function LuaDojoMgr:OnLoadBegin()
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Loading_Begin);
|
|
end
|
|
|
|
function LuaDojoMgr:OnLoadProgress(progress)
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Loading_Progress,progress);
|
|
end
|
|
|
|
function LuaDojoMgr:OnLoadComplete()
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Loading_Complete);
|
|
end
|
|
|
|
function LuaDojoMgr:OnFighterLifeChanged(isBoss,actorId,life,maxLife,teamSide)
|
|
if isBoss then
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_Boss_Life,life,maxLife)
|
|
else
|
|
if teamSide == 0 then
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_Fighter_Life,actorId,life,maxLife)
|
|
else
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_Enemy_Fighter_Life,actorId,life,maxLife)
|
|
end
|
|
end
|
|
end
|
|
|
|
function LuaDojoMgr:OnFighterEnergyChanged(actorId,sp,maxSp,teamSide)
|
|
if teamSide == 0 then
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_Fighter_Sp,actorId,sp,maxSp)
|
|
else
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_Enemy_Fighter_Sp,actorId,sp,maxSp)
|
|
end
|
|
end
|
|
|
|
function LuaDojoMgr:OnFighterCastSkill(skillParam)
|
|
end
|
|
|
|
|
|
function LuaDojoMgr:RefreshStatistics()
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_Refresh_BattleStatistics)
|
|
end
|
|
|
|
function LuaDojoMgr:OnFightingStart()
|
|
ManagerContainer.LuaEventMgr:Dispatch(UIEventNames.EID_FIGHTING_START)
|
|
end
|
|
|
|
return LuaDojoMgr; |