|
|
- require("game.proto.500.Require500")
- require("game.escort.EscortModel")
- require("game.escort.EscortConst")
- require("game.escort.EscortMainView")
- require("game.escort.EscortItem")--主界面的item
- require("game.escort.EscortResultView")--结算界面
- require("game.escort.EscortStageResultView")--一阶段结算界面
- require("game.escort.EscortSceneView")--场景界面
-
- EscortController = EscortController or BaseClass(BaseController)
-
- function EscortController:__init()
- EscortController.Instance = self
- self.model = EscortModel:getInstance()
- self:InitEvent()
- self:RegisterAllProtocals()
- end
-
- function EscortController:InitEvent()
- local function onRequestHandler(...)
- local args_list = {...}
- self.igonre_once = false
- if args_list[1] == 50010 or args_list[1] == 50003 or args_list[1] == 50001 or args_list[1] == 50002 then
- self:SendFmtToGame(args_list[1], "c", args_list[2])
- else
- self:SendFmtToGame(args_list[1])
- end
- end
- self.model:Bind(EscortConst.REQUEST_SCMD_EVENT, onRequestHandler)
-
- local function gameStartHandler()
- if GetModuleIsOpen(500) then
- self.model:Fire(EscortConst.REQUEST_SCMD_EVENT, 50000)
- end
- end
- GlobalEventSystem:Bind(EventName.GAME_START, gameStartHandler)
- GlobalEventSystem:Bind(EventName.CHANE_DAY, gameStartHandler)
-
- local function show_left()
- self.model:SetEscortSceneLeftHideState(false)
- end
- GlobalEventSystem:Bind(EventName.FINISHED_COM_DIALOGUE_SHOW_ANIM, show_left)
-
- local function onOpenEscortView(show)
- if show then
- if self.EscortMainView == nil then
- self.EscortMainView = EscortMainView.New()
- end
- self.EscortMainView:Open()
- else
- if self.EscortMainView and self.EscortMainView:HasOpen() then
- self.EscortMainView:Close()
- end
- end
- end
- GlobalEventSystem:Bind(EscortConst.OPEN_ESCORT_VIEW, onOpenEscortView)
-
- local function scene_change_func()
- self:ChangeScene()
- end
- GlobalEventSystem:Bind(EventName.SCENE_LOAD_VIEW_COMPLETE, scene_change_func)
- local function on_activity_change( ... )
- -- local rob_id = RoleManager.Instance:GetMainRoleVo():GetFlagsByKey(RoleVo.Act_Flag.CONVOY_ROB)
- -- local scene_mgr = SceneManager:getInstance()
- -- if rob_id > 0 and scene_mgr:IsEscortScene() then--打劫id大于0 且在护送2阶段场景 才显示
- -- if self.EscortSceneView == nil then
- -- self.EscortSceneView = EscortSceneView.New()
- -- end
- -- if not self.EscortSceneView:HasOpen() then
- -- self.EscortSceneView:Open()
- -- end
- -- self:SetMainUIVisible(false)
- -- end
- end
- RoleManager:getInstance():GetMainRoleVo():BindOne("activity_flags", on_activity_change)
-
- local function on_open_escort_result_view(show, data)
- if show then
- if self.EscortResultView == nil then
- self.EscortResultView = EscortResultView.New()
- end
- self.EscortResultView:Open(data)
- else
- if self.EscortResultView and self.EscortResultView:HasOpen() then
- self.EscortResultView:Close()
- end
- end
- end
- self.model:Bind(EscortConst.OPEN_ESCORT_RESULT_VIEW, on_open_escort_result_view)
-
- local function on_open_stage_result_view( show )
- if show then
- if self.EscortStageResultView == nil then
- self.EscortStageResultView = EscortStageResultView.New()
- end
- self.EscortStageResultView:Open()
- else
- if self.EscortStageResultView and self.EscortStageResultView:HasOpen() then
- self.EscortStageResultView:Close()
- end
- end
- end
- self.model:Bind(EscortConst.OPEN_STAGE_ESCORT_RESULT_VIEW, on_open_stage_result_view)
- local function on_fly_to_npc( )
- self.model:FlyToNpc()
- end
- self.model:Bind(EscortConst.FLY_TO_NPC, on_fly_to_npc)
-
- local function on_change_scene()
- self:ChangeScene()
- end
- self.model:Bind(EscortConst.CHANGE_SCENE, on_change_scene)
- end
-
- function EscortController:TipsCall( )
- local main_vo = RoleManager.Instance.mainRoleInfo
- local temp_head_name = main_vo.name
- local head_type = "100"..main_vo.career
- local str = string.format("后面的路程会有一点危险,请集中注意力!")
- local data = {
- head_type = head_type,
- desc = str,
- head_name = temp_head_name or "",
- hide_time = 5,
- dalay_time = 1,
- is_task_type = true,
- }
- self.model:SetEscortSceneLeftHideState(true)
- GlobalEventSystem:Fire(EventName.SHOW_COM_DIALOGUE_SHOW_VIEW,data)
- end
-
- function EscortController:ChangeScene()
- local scene_mgr = SceneManager.Instance
- if self.model:IsEscortState() and scene_mgr:IsEscortAllScene() then
- if self.EscortSceneView == nil then
- self.EscortSceneView = EscortSceneView.New()
- end
- if not self.EscortSceneView:HasOpen() then
- self.EscortSceneView:Open()
- end
- self:SetMainUIVisible(false)
- elseif scene_mgr:IsEscortAllScene(scene_mgr:GetLastSceneId()) then -- 上一个场景是护送
- if self.EscortSceneView then
- self.EscortSceneView:Close()
- end
- self:SetMainUIVisible(true)
- else
- if self.EscortSceneView then
- self.EscortSceneView:Close()
- end
- -- 非自己场景由其他模块负责判断主界面ui可见性
- -- self:SetMainUIVisible(true)
- end
- if scene_mgr:IsEscortScene() and self.model:IsEscortState() then
- -- self:TipsCall()
- Scene:getInstance():CleanEscortInfo()--切了场景 需要清空一下跟车状态
- self.model.not_pause = false--暂停一下
- local function delay_method( )
- self.model.not_pause = true
- end
- setTimeout(delay_method, 2)
- local function delay_method( )
- self.model:GoEscortNpc()
- end
- setTimeout(delay_method, 1)
- end
- if self.model.need_find_npc then
- self.model.need_find_npc = false
- local function delay_method( )
- self.model:GoEscortNpc(0, true)
- end
- setTimeout(delay_method, 1)
- end
- end
-
- function EscortController:SetMainUIVisible(value)
- self:Fire(EventName.HIDE_TASK_TEAM_VIEW, not value)--任务栏
- GlobalEventSystem:Fire(EventName.CHANGE_RIGHT_TIP_ICON, not value, MainUIModel.OTHER_MODE) --菜单伸展
- end
-
- function EscortController:RegisterAllProtocals( )
- self:RegisterProtocal(50000, "Handle50000")--打开护送信息
- self:RegisterProtocal(50001, "Handle50001")--刷新护送品质
- self:RegisterProtocal(50002, "Handle50002")--开始护送
- self:RegisterProtocal(50003, "Handle50003")--完成阶段护送
- self:RegisterProtocal(50004, "Handle50004")--结算
- self:RegisterProtocal(50008, "Handle50008")--取消护送
- self:RegisterProtocal(50009, "Handle50009")--切换到任务NPC
- self:RegisterProtocal(50010, "Handle50010")--通知场景的人玩家开始护送
- end
-
- -- ########### 打开护送信息 ##########
- -- protocol=50000
- -- {
- -- c2s{
- -- }
- -- s2c{
- -- object_id:int32 // 对象ID
- -- convoy_counts:int8 // 今天护送次数
- -- is_convoy:int8 // 是否护送状态
- -- }
- -- }
-
- function EscortController:Handle50000( )
- local scmd = SCMD50000.New(true)
- print("HWR:EscortController [start:207] scmd:", scmd)
- PrintTable(scmd)
- print("HWR:EscortController [end]")
-
- self.model:SetEscortBaseInfo(scmd)
- self.model:Fire(EscortConst.ANS_BASIC_INFO)
- self:ChangeScene()
- end
-
- -- ########### 刷新护送品质 ##########
- -- protocol=50001
- -- {
- -- c2s{
- -- auto_buy:int8 // 是否自动购买
- -- }
- -- s2c{
- -- code:int32 // 错误码
- -- object_id:int32 // 新的对象id
- -- pray_val:int16 // 祝福值
- -- reward_list:arr_object_list // 消耗列表
- -- }
- -- }
-
- function EscortController:Handle50001( )
- local scmd = SCMD50001.New(true)
- print("HWR:EscortController [start:225] scmd:", scmd)
- PrintTable(scmd)
- print("HWR:EscortController [end]")
- local base_info = self.model:GetEscortBaseInfo()
- local cur_pray_val = base_info.pray_val or 0
- local up_pray_val = scmd.pray_val - cur_pray_val
- if scmd.object_id ~= 0 then
- self.model:SetEscortObjectId(scmd.object_id, scmd.pray_val)
- end
- local str = "消耗%s刷新"
- local len = #scmd.reward_list
- if len > 0 then
- local use_goods = false
- local use_money = 0
- if len > 0 then
- for i,v in ipairs(scmd.reward_list) do
- if v.style == 2 or v.style == 1 then
- use_money = use_money + 1
- elseif v.style == 0 then
- use_goods = true
- end
- end
- end
- --如果花钱了 就优先提示花钱多少
- --没花钱就提示消耗道具
- local count = 0
- for i,v in ipairs(scmd.reward_list) do
- if use_money > 0 then--如果是花了钱的就不提示物品了
- if v.style ~= 0 then
- count = count + 1
- local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(v.style, v.typeId)
- local goods_name,colorStr = GoodsModel:getInstance():getGoodsName(typeId, true)
- if count < use_money then--到最后一个元素了没
- str = string.format(str, goods_name..HtmlColorTxt("x"..v.count, colorStr).."、%s")
- else
- str = string.format(str, goods_name..HtmlColorTxt("x"..v.count, colorStr))
- end
- end
- else
- local typeId, lock = GoodsModel:getInstance():GetMappingTypeId(v.style, v.typeId)
- local goods_name,colorStr = GoodsModel:getInstance():getGoodsName(typeId, true)
- str = string.format(str, goods_name..HtmlColorTxt("x"..v.count, colorStr))
- end
- end
- end
- if scmd.code == 1 and len > 0 then
- if scmd.pray_val == 0 then
- self.model:Fire(EscortConst.UPGRADE_SUCCESS, scmd.object_id)
- Message.show("提升品质成功")
- else
- local text = string.format("提升失败,获得%s点祝福值", up_pray_val)
- Message.show(text)
- end
- Message.show(str,"success")
- elseif len > 0 then
- Message.show(str)
- ErrorCodeShow(scmd.code)
- else
- ErrorCodeShow(scmd.code)
- end
- end
-
- -- ########### 开始护送 ##########
- -- protocol=50002
- -- {
- -- c2s{
- -- is_double:int8 // 是否双倍 0否|1是
- -- }
- -- s2c{
- -- code:int32 // 错误码
- -- convoy_id:int32 // 护送id
- -- is_double:int8 // 是否双倍 0否|1是
- -- }
- -- }
-
- function EscortController:Handle50002( )
- local scmd = SCMD50002.New(true)
- self.model.is_go_on = true
- if scmd.code == 1 then
- GlobalEventSystem:Fire(EventName.HIDE_HORSE)
- GlobalEventSystem:Fire(EscortConst.OPEN_ESCORT_VIEW, false)
- local str = "护送开始"
- Message.show(str,"success")
- self:ChangeScene()
- self.model:GoEscortNpc(1)
- self.model:SetEscortCarFollow(true)
-
- local main_vo = RoleManager.Instance.mainRoleInfo
- local cfg = Config.Convoyobject[scmd.convoy_id]
- local name = ""
- if cfg then
- name = Trim(cfg.name)
- end
- local temp_head_name = main_vo.name
- local head_type = "100"..main_vo.career
- local str = string.format("运气不错!接取了%s护送 任务!让我们开始护送吧!", name)
- local data = {
- head_type = head_type,
- desc = str,
- head_name = temp_head_name or "",
- hide_time = 5,
- dalay_time = 1,
- is_task_type = true,
- }
- GlobalEventSystem:Fire(EventName.SHOW_COM_DIALOGUE_SHOW_VIEW,data)
- self.model:SetEscortSceneLeftHideState(true)
- TaskModel:getInstance():SetNeedTaskFlag(false)
- self.model.not_show_go_ask_indeed = self.model.not_show_go_ask
- self.model:SetIsLastDouble(scmd.is_double, true)
- else
- ErrorCodeShow(scmd.code)
- end
- end
-
- -- ########### 完成阶段护送 ##########
- -- protocol=50003
- -- {
- -- c2s{
- -- type:int8 // 1阶段一|2阶段二
- -- }
- -- s2c{
- -- result:int32 // 返回码
- -- type:int8 // 1阶段一|2阶段二
- -- }
- -- }
- function EscortController:Handle50003( )
- local scmd = SCMD50003.New(true)
- print("HWR:EscortController [start:337] scmd:", scmd)
- PrintTable(scmd)
- print("HWR:EscortController [end]")
- if scmd.result == 1 and scmd.type == 2 then
- Message.show("运送完成")
- elseif scmd.result ~= 1 then
- ErrorCodeShow(scmd.result)
- end
- end
-
- -- ########### 结算 ##########
- -- protocol=50004
- -- {
- -- s2c{
- -- result:int8 // 1完美|2损坏|3超时|4主动取消护送
- -- stage:int8 // 1第一阶段 2第二阶段
- -- object_id:int32 // 对象ID
- -- convoy_counts:int8 // 今天护送次数
- -- }
- -- }
-
- function EscortController:Handle50004( )
- local scmd = SCMD50004.New(true)
- if scmd.result ~= 3 then
- self.model:Fire(EscortConst.OPEN_ESCORT_RESULT_VIEW, true, scmd)
- -- self:ChangeScene()
- -- self:SetMainUIVisible(true)
- self.model:SetEscortBaseInfo({})
- else
- self:SetMainUIVisible(true)
- self.model:Fire(EscortConst.REQUEST_SCMD_EVENT, 50000)
- self.model:SetEscortBaseInfo({})
- end
- if scmd.stage == 1 then
- elseif scmd.stage == 2 then
- self:SetMainUIVisible(true)
- end
- end
-
- function EscortController:Handle50008( )
- -- self.model:SetEscortStageInfo({})
- self.model:SetEscortBaseInfo({})
- self:ChangeScene()
- OperateManager.Instance:StopMove()
- end
-
- -- ########### 切换到任务NPC##########
- function EscortController:Handle50009( )
- local scmd = SCMD50009.New(true)
- if scmd.code ~= 1 then
- ErrorCodeShow(scmd.code)
- end
- end
-
- -- ########### 通知场景的人玩家开始护送 ##########
- function EscortController:Handle50010( )
- local scmd = SCMD50010.New(true)
- local scene_mgr = SceneManager:getInstance()
- local roleVo = scene_mgr:GetRoleVo(scmd.role_id)
- if roleVo ~= nil then
- roleVo:ChangeVar("escort_state", scmd.angel_id, nil, true)
- else
- end
- end
|