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
|
|
|
|
|