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