源战役客户端
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
 
 
 
 
 

188 rindas
5.8 KiB

require("game.relive.ReliveView")
require("game.relive.ReliveStrengthenItem")
require("game.guildWar.GuildWarReliveTipView")
require("game.arena.leagueWar.views.LeagueWarReliveTipView")
ReliveController = ReliveController or BaseClass(BaseController)
function ReliveController:__init( )
ReliveController.Instance = self
self.reliveView = nil
self:RegisterProtocals()
self:RegisterEvents()
self.hide_relive_view = false
self.request_relive_lase_time = -3 --上一次请求复活的时间
self.request_relive_type = -3 --上一次请求复活的类型
end
function ReliveController:RegisterProtocals( )
self:RegisterProtocal(20004, "handler20004"); --死亡复活
end
function ReliveController:RegisterEvents( )
local function onShowReliveWindow(type)
-- print("huangcong:ReliveController [start:23] :", type)
self:ShowReliveWindow(type)
end
GlobalEventSystem:Bind(EventName.SHOWRELIVEWINDOW, onShowReliveWindow)
local function onReLiveRequest(revive_mode, is_force)
self:ReLiveRequest(revive_mode, is_force)
end
GlobalEventSystem:Bind(EventName.RELIVEBYTYPE,onReLiveRequest)
--切场景到安全场景时自动关闭复活界面
-- local function scene_start_func ()
-- if self.reliveView and self.reliveView:HasOpen() then
-- self.reliveView:Close()
-- -- local main_role_vo = RoleManager.Instance:GetMainRoleVo()
-- -- main_role_vo:ChangeVar("hp", main_role_vo.maxHp)
-- -- Scene.Instance:GetMainRole():Revived()
-- end
-- end
-- GlobalEventSystem:Bind(SceneEventType.SCENE_CHANGED, scene_start_func)
local function func_hide_tips()
self.hide_tip_flag = true
end
GlobalEventSystem:Bind(EventName.HIDE_RELIVE_TIP, func_hide_tips)
local function func_show_tips()
self.hide_tip_flag = nil
end
GlobalEventSystem:Bind(EventName.SHOW_RELIVE_TIP, func_show_tips)
local function func_close_tips()
-- SceneManager.Instance:ChangeVar("next_relive_time",0) --通过这个事件去关掉主界面的复活倒计时
if self.reliveView and self.reliveView:HasOpen() then
self.reliveView:Close()
end
end
GlobalEventSystem:Bind(EventName.CLOSERELIVEWINDOW, func_close_tips)
end
function ReliveController:__delete( )
-- body
end
function ReliveController:ReLiveRequest( revive_mode, is_force )
if is_force or self.request_relive_type ~= revive_mode or Status.NowTime - self.request_relive_lase_time > 3 then
self.request_relive_lase_time = Status.NowTime
self.request_relive_type = revive_mode
self:SendFmtToGame(20004, "c", revive_mode)
end
end
function ReliveController:handler20004( )
local type,flag = self:ReadFmt("ci")
-- type 复活方式:
-- 1彩钻原地复活
-- 2绑定彩钻原地复活
-- 3回城复活
-- 5原地满血复活
-- 6复活成幽灵状态
-- 7从幽灵状态复活
if flag == 1 then
if not self.hide_tip_flag then
if type == 6 then
Message.show("你被击败")
else
Message.show("复活成功")
end
end
if self.reliveView then
self.reliveView:Close()
end
-- SceneManager.Instance:ChangeVar("next_relive_time",0) ----通过这个事件去关掉主界面的复活倒计时
GlobalEventSystem:Fire(EventName.RELIVE_SUCC, type)
else
ErrorCodeShow(flag)
end
end
function ReliveController:ShowReliveWindow( rType )
local sceneMgr = SceneManager:getInstance()
if rType == 0 then --打开
if not sceneMgr:maskReliveViewScene() then --是否展示复活界面的场景
self:OpenReliveView()
end
elseif rType == 1 then --关闭
if self.reliveView then
self.reliveView:Close()
end
end
end
function ReliveController:OpenReliveView()
if self.delay_open_relive_view_id then
GlobalTimerQuest:CancelQuest(self.delay_open_relive_view_id)
self.delay_open_relive_view_id = nil
end
if self.reliveView == nil then
if self.delay_open_relive_view_id == nil then
local delay_handler = function ( ... )
--再次确认主角是否死亡,对于死亡后要播放死亡动画再死亡
local role = Scene:getInstance():GetMainRole()
-- if role and role.vo and role.vo.hp==0 then--连续复活几次HP会大于0
if self.reliveView == nil then
self.reliveView = ReliveView.New()
end
self.reliveView:Open()
if self.delay_open_relive_view_id then
GlobalTimerQuest:CancelQuest(self.delay_open_relive_view_id)
self.delay_open_relive_view_id = nil
end
-- end
end
self.delay_open_relive_view_id = setTimeout(delay_handler,RoleManager:getInstance():GetRoleDeadDoActionTime())
end
end
end
function ReliveController:OpenGuildWarReliveView()
if self.reliveView == nil then
if self.delay_open_war_relive_view_id == nil then
local delay_handler = function ( ... )
self.delay_open_war_relive_view_id = nil
--再次确认主角是否死亡,对于死亡后马上复活的情况,定时器有bug
local role = Scene:getInstance():GetMainRole()
if role and role.vo and role.vo.hp==0 then
if self.reliveView == nil then
self.reliveView = GuildWarReliveTipView.New()
end
self.reliveView:Open()
end
end
self.delay_open_war_relive_view_id = GlobalTimerQuest:AddDelayQuest(delay_handler, 0.5)
end
end
end
function ReliveController:OpenLeagueWarReliveView()
if self.reliveView == nil then
if self.delay_open_league_relive_view_id == nil then
local delay_handler = function ()
self.delay_open_league_relive_view_id = nil
local role = Scene:getInstance():GetMainRole()
if role and role.vo and role.vo.hp==0 then
if self.reliveView == nil then
self.reliveView = LeagueWarReliveTipView.New()
end
self.reliveView:Open()
end
end
self.delay_open_league_relive_view_id = GlobalTimerQuest:AddDelayQuest(delay_handler, 1)
end
end
end
function ReliveController:OpenPkBattleReliveView()
if self.reliveView == nil then
self.reliveView = PkBattleReliveView.New()
end
self.reliveView:Open()
end