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