require("game.proto.424.Require424") require("game.treasureMap.TreasureMapConst") require("game.treasureMap.TreasureMapModel") require("game.treasureMap.TreasureMapDescView") -- 藏宝图介绍界面 require("game.treasureMap.TreasureMapDescScrollItem") -- 藏宝图介绍界面节点 require("game.treasureMap.TreasureMapQuizView") -- 藏宝图答题界面 require("game.treasureMap.TreasureMapShopView") -- 藏宝图限时商城界面 require("game.treasureMap.TreasureMapShopItem") -- 藏宝图限时商城界面item require("game.treasureMap.TreasureMapStorageShopView") -- 藏宝图限时商城界面(收纳) require("game.treasureMap.TreasureMapStorageShopItem") -- 藏宝图限时商城界面item(收纳) require("game.treasureMap.TreasureMapNormalRollView") -- 普通藏宝图结算界面 require("game.treasureMap.TreasureMapAdvanceRollView") -- 高级藏宝图抽奖界面 require("game.treasureMap.TreasureMapRewardPreviewView") -- 藏宝图奖池预览界面 require("game.treasureMap.TreasureMapFeedbackView") -- 藏宝图遗宝馈赠界面 require("game.treasureMap.TreasureMapFeedbackItem") -- 藏宝图遗宝馈赠界面 TreasureMapController = TreasureMapController or BaseClass(BaseController, true) local TreasureMapController = TreasureMapController function TreasureMapController:__init() TreasureMapController.Instance = self self.model = TreasureMapModel:getInstance() self:AddEvents() self:RegisterAllProtocal() end function TreasureMapController:__delete() end function TreasureMapController:RegisterAllProtocal( ) local register_cfg = { [42401] = { -- 使用藏宝图 handler = function(self, vo) if vo.errcode == 1 then self.model:SetCurrentTreasureData(vo, vo.need_find_way == 1) else ErrorCodeShow(vo.errcode) end end, }, [42402] = { -- 获取藏宝[这个只会处理开箱和转盘两种藏宝类型,其他的走其他协议] handler = function(self, vo) if vo.errcode == 1 then self.model._tm_can_fly_goods = false -- 收到协议之后禁止道具飞入表现 if vo.event == TreasureMapConst.EventType.Normal then -- 普通宝箱 self.model:Fire(TreasureMapConst.OPEN_NORMAL_EVENT_RESULT_VIEW, true, vo) elseif vo.event == TreasureMapConst.EventType.Roll then -- 转盘 self.model:Fire(TreasureMapConst.OPEN_ROLL_EVENT_RESULT_VIEW, true, vo) end -- 清除藏宝图数据 self.model:SetCurrentTreasureData(nil) else self.model._tm_can_fly_goods = true ErrorCodeShow(vo.errcode) end end, }, [42403] = { -- 普通藏宝图使用次数 handler = function(self, vo) self.model:SetNormalTreasureMapTimes(vo.daily_count) end, }, [42405] = { -- 高级藏宝图月度次数信息 handler = function(self, vo) self.model:SetAdvTreasureMapMonthTimesData(vo) self.model:CheckTreasureMapRed(TreasureMapConst.RedType.MonthReward) self.model:Fire(TreasureMapConst.UPDATE_MONTH_TIMES_DATA) end, }, [42406] = { -- 领取高级藏宝图月度次数奖励 handler = function(self, vo) if vo.errcode == 1 then self.model:UpdateAdvTreasureMapMonthTimesData(vo) self.model:CheckTreasureMapRed(TreasureMapConst.RedType.MonthReward) self.model:Fire(TreasureMapConst.UPDATE_MONTH_TIMES_DATA) else ErrorCodeShow(vo.errcode) end end, }, [42407] = { -- 获取题目 handler = function(self, vo) if vo.errcode == 1 then self.model:Fire(TreasureMapConst.OPEN_TREASUREMAP_QUIZ_VIEW, true, vo) -- 清空藏宝图数据 self.model:SetCurrentTreasureData(nil) else ErrorCodeShow(vo.errcode) end end, }, [42408] = { -- 提交答案 handler = function(self, vo) if vo.errcode == 1 then self.model:Fire(TreasureMapConst.UPDATE_QUIZ_VIEW) else ErrorCodeShow(vo.errcode) end end, }, [42409] = { -- 获取限时商城信息 handler = function(self, vo) if vo.errcode == 1 then self.model:SetTreasureMapShopData(vo) self.model:CheckTreasureMapRed(TreasureMapConst.RedType.Shop) self.model:Fire(TreasureMapConst.OPEN_TREASUREMAP_SHOP_VIEW, true, vo) -- 清空藏宝图数据 self.model:SetCurrentTreasureData(nil) else ErrorCodeShow(vo.errcode) end end, }, [42410] = { -- 购买限时商店道具 handler = function(self, vo) if vo.errcode == 1 then Message.show("购买成功", "success") self.model:SetTreasureMapShopRestNumData(vo) self.model:Fire(TreasureMapConst.UPDATE_TREASUREMAP_SHOP_VIEW, true) else ErrorCodeShow(vo.errcode) end end, }, [42411] = { -- 挖宝后触发怪物事件 handler = function(self, vo) if vo.errcode == 1 then self.model._check_tm_tips = TreasureMapConst.Normal self.model:CheckTreasureTipUseViewOpen() -- 清空藏宝图数据 self.model:SetCurrentTreasureData(nil) else ErrorCodeShow(vo.errcode) end end, }, [42412] = { -- 购买限时商店的免费物品 handler = function(self, vo) if vo.errcode == 1 then Message.show("购买成功", "success") self.model:Fire(TreasureMapConst.UPDATE_SHOP_FREE_RECEIVE_STATUS, true) else ErrorCodeShow(vo.errcode) end end, }, [42413] = { -- 批量使用普通藏宝图 handler = function(self, vo) if vo.errcode == 1 then Message.show("批量使用成功", "success") else ErrorCodeShow(vo.errcode) end end, }, [42414] = { -- 收纳后限时未过期道具信息 handler = function(self, vo) self.model:SetTreasureMapStorageShopData(vo) self.model:CheckStorageShopIcon(false) end, }, [42415] = { -- 收纳限时道具购买 handler = function(self, vo) if vo.errcode == 1 then self.model:UpdateTreasureMapStorageShopData(vo) self.model:CheckStorageShopIcon(true) self.model:Fire(TreasureMapConst.UPDATE_STORAGE_SHOP_DATA, vo) else ErrorCodeShow(vo.errcode) end end, }, } self:RegisterProtocalByCFG(register_cfg) end function TreasureMapController:AddEvents() local function onGameStart() self.model:Reset() local function delay_method( ) if GetModuleIsOpen(424) then self.model:Fire(TreasureMapConst.REQUEST_CCMD_EVENT, 42401, 0) -- 查询进行中的藏宝图 self.model:Fire(TreasureMapConst.REQUEST_CCMD_EVENT, 42403) -- 查询普通藏宝图每日次数信息 self.model:Fire(TreasureMapConst.REQUEST_CCMD_EVENT, 42405) -- 查询高级藏宝图月度次数信息 self.model:Fire(TreasureMapConst.REQUEST_CCMD_EVENT, 42414) -- 查询藏宝图限时商城信息 end end setTimeout(delay_method, 1) end GlobalEventSystem:Bind(EventName.GAME_START, onGameStart) --请求基本信息 local function onRequestEvent(...) local args = {...} if args[1] == 42401 then self:SendFmtToGame(args[1], "c", args[2]) elseif args[1] == 42402 then self.model._tm_can_fly_goods = false -- 发送协议前,先禁止道具飞入表现 self:SendFmtToGame(args[1], "cc", args[2], args[3]) elseif args[1] == 42406 then self:SendFmtToGame(args[1], "h", args[2]) elseif args[1] == 42408 then self:SendFmtToGame(args[1], "hc", args[2], args[3]) elseif args[1] == 42410 then self:SendFmtToGame(args[1], "hch", args[2], args[3], args[4]) elseif args[1] == 42413 then self:SendFmtToGame(args[1], "h", args[2]) elseif args[1] == 42415 then self:SendFmtToGame(args[1], "ihch", args[2], args[3], args[4], args[5]) else self:SendFmtToGame(args[1]) end end self.model:Bind(TreasureMapConst.REQUEST_CCMD_EVENT, onRequestEvent) local function openDescView(show) self:OpenView("TreasureMapDescView", show) end self.model:Bind(TreasureMapConst.OPEN_DESC_VIEW, openDescView) local function openTMQuizView(show, vo) if (show and vo) or not show then self:OpenView("TreasureMapQuizView", show, vo) if show then GlobalEventSystem:Fire(EventName.OPEN_TREASUREMAP_USE_TIP_VIEW, false) end end end self.model:Bind(TreasureMapConst.OPEN_TREASUREMAP_QUIZ_VIEW, openTMQuizView) local function openTMShopView(show, vo) if (show and vo) or not show then self:OpenView("TreasureMapShopView", show, vo) if show then GlobalEventSystem:Fire(EventName.OPEN_TREASUREMAP_USE_TIP_VIEW, false) end end end self.model:Bind(TreasureMapConst.OPEN_TREASUREMAP_SHOP_VIEW, openTMShopView) local function openTMStorageShopView(show) self:OpenView("TreasureMapStorageShopView", show) end self.model:Bind(TreasureMapConst.OPEN_TREASUREMAP_STORAGE_SHOP_VIEW, openTMStorageShopView) local function openNormalResultView(show, vo) if (show and vo) or not show then self:OpenView("TreasureMapNormalRollView", show, vo) if show then GlobalEventSystem:Fire(EventName.OPEN_TREASUREMAP_USE_TIP_VIEW, false) end end end self.model:Bind(TreasureMapConst.OPEN_NORMAL_EVENT_RESULT_VIEW, openNormalResultView) local function openRollResultView(show, vo) if (show and vo) or not show then self:OpenView("TreasureMapAdvanceRollView", show, vo) if show then GlobalEventSystem:Fire(EventName.OPEN_TREASUREMAP_USE_TIP_VIEW, false) end end end self.model:Bind(TreasureMapConst.OPEN_ROLL_EVENT_RESULT_VIEW, openRollResultView) local function openRewardPreviewView(show, index) self:OpenView("TreasureMapRewardPreviewView", show, index) end self.model:Bind(TreasureMapConst.OPEN_REWARD_PERVIEW_VIEW, openRewardPreviewView) local function openFeedbackView(show) self:OpenView("TreasureMapFeedbackView", show) end self.model:Bind(TreasureMapConst.OPEN_FEEDBACK_VIEW, openFeedbackView) -- 当藏宝商城的按钮被删除之后,需要重新获取缓存中的未过期道具再尝试创建一次按钮 local function checkStorageShopIcon(icon_type) if icon_type and icon_type == 42414 then local function delay_method( ) self.model:CheckStorageShopIcon(true) end setTimeout(delay_method, 3) end end GlobalEventSystem:Bind(ActivityIconManager.DELETE_ICON, checkStorageShopIcon) local function scene_change_func() if self.model.tm_need_refind_way then -- 需要重新寻路 local function delay_method( ) self.model:TreasureMapFindWay() end setTimeout(delay_method, 2) end end GlobalEventSystem:Bind(EventName.SCENE_LOAD_VIEW_COMPLETE, scene_change_func) end ----请求基本信息 --function TreasureMapController:Handle35025( ) -- if not TreasureMapController.IsDebug then -- else -- -- end --end