require("game.proto.170.Require170") require("game.capsuleEgg.CapsuleEggAwardItem") require("game.capsuleEgg.CapsuleEggConst") require("game.capsuleEgg.CapsuleEggExtraBaseView") require("game.capsuleEgg.CapsuleEggModel") require("game.capsuleEgg.CapsuleEggRecordItem") require("game.capsuleEgg.CapsuleEggRecordItemTwo") require("game.capsuleEgg.CapsuleEggResultView") require("game.capsuleEgg.CapsuleEggScoreShopItem") require("game.capsuleEgg.CapsuleEggScoreShopView") require("game.capsuleEgg.CapsuleEggView") require("game.capsuleEgg.CapsuleEggWarehouseItem") require("game.capsuleEgg.CapsuleEggWarehouseView") require("game.capsuleEgg.CapsuleEggShowAwardItem") require("game.capsuleEgg.CapsuleEggShowAwardItemTwo") require("game.capsuleEgg.CapsuleEggRewardView") require("game.capsuleEgg.CapsuleEggRewardItem") require("game.capsuleEgg.CapsuleEggTargetItem") require("game.capsuleEgg.CapsuleEggBigRewardView") require("game.capsuleEgg.CapsuleEggRewardPreview") CapsuleEggController = CapsuleEggController or BaseClass(BaseController, true) local CapsuleEggController = CapsuleEggController function CapsuleEggController:__init() CapsuleEggController.Instance = self self.model = CapsuleEggModel:getInstance() self:AddEvents() self:RegisterAllProtocal() end function CapsuleEggController:__delete() end function CapsuleEggController:RegisterAllProtocal( ) self:RegisterProtocal(17000, "Handle17000") self:RegisterProtocal(17001, "Handle17001") self:RegisterProtocal(17002, "Handle17002") self:RegisterProtocal(17003, "Handle17003") self:RegisterProtocal(17004, "Handle17004") self:RegisterProtocal(17005, "Handle17005") self:RegisterProtocal(17006, "Handle17006") self:RegisterProtocal(17007, "Handle17007") self:RegisterProtocal(17008, "Handle17008") self:RegisterProtocal(17009, "Handle17009") self:RegisterProtocal(17010, "Handle17010") self:RegisterProtocal(17011, "Handle17011") end function CapsuleEggController:AddEvents() local function onRequestBaseInfo() self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17000,1) -- self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17000,2) -- self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17000,3) self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17001,1) -- self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17001,2) -- self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17001,3) -- self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17010,1) -- self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17010,2) -- self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17010,3) self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17004) self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17005) self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17007) self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17011,1,1,0) end local function onGameStart() local function onDelay() onRequestBaseInfo() end setTimeout(onDelay, 2) end GlobalEventSystem:Bind(EventName.GAME_START, onGameStart) -- 满足等级后请求信息 -- local function onLevelUp(level) -- if level == GetModuleOpenLevel(170) then -- onRequestBaseInfo() -- end -- end -- RoleManager.Instance.mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelUp) --完成任务检查一下 local function onTaskFinished(id) if id == Config.Moduleid[170].task_id then onRequestBaseInfo() end end GlobalEventSystem:Bind(TaskEvent.ANS_FINISHED_TASK_LIST, onTaskFinished) --请求信息 i|32 h|16 c|8 l|64 s|字符串 local function onRequestHandler(...) local args_list = {...} if args_list[1] == 17000 then self:SendFmtToGame(args_list[1],"c",args_list[2]) elseif args_list[1] == 17001 then self:SendFmtToGame(args_list[1],"c",args_list[2]) elseif args_list[1] == 17002 then self:SendFmtToGame(args_list[1]) elseif args_list[1] == 17003 then self:SendFmtToGame(args_list[1],"ccc",args_list[2],args_list[3],args_list[4]) elseif args_list[1] == 17004 then self:SendFmtToGame(args_list[1]) elseif args_list[1] == 17005 then self:SendFmtToGame(args_list[1]) elseif args_list[1] == 17006 then self:SendFmtToGame(args_list[1],"h",args_list[2]) elseif args_list[1] == 17007 then self:SendFmtToGame(args_list[1]) elseif args_list[1] == 17008 then self:SendFmtToGame(args_list[1],"l",args_list[2]) elseif args_list[1] == 17009 then self:SendFmtToGame(args_list[1]) elseif args_list[1] == 17011 then self:SendFmtToGame(args_list[1], "cci", args_list[2],args_list[3],args_list[4]) else self:SendFmtToGame(args_list[1]) end end self.model:Bind(CapsuleEggConst.REQUEST_CCMD_EVENT, onRequestHandler) --打开奖池类型为pool_type的扭蛋界面 local function on_open_capsule_egg_view(pool_type) if self.capsule_egg_view == nil then self.capsule_egg_view = CapsuleEggView.New() end self.capsule_egg_view:Open(pool_type) end self.model:Bind(CapsuleEggConst.OPEN_CAPSULE_EGG_VIEW,on_open_capsule_egg_view) --打开仓库、积分商城界面 local function on_open_capsule_egg_extra_view(index) if self.capsule_egg_extra_view == nil then self.capsule_egg_extra_view = CapsuleEggExtraBaseView.New() end self.capsule_egg_extra_view:Open(index) end self.model:Bind(CapsuleEggConst.OPEN_CAPSULE_EGG_EXTRA_VIEW,on_open_capsule_egg_extra_view) --打开奖励界面 local function on_open_capsule_egg_reward_view(pool_type) if self.capsule_egg_reward_view == nil then self.capsule_egg_reward_view = CapsuleEggRewardView.New() end self.capsule_egg_reward_view:Open(pool_type) end self.model:Bind(CapsuleEggConst.OPEN_CAPSULE_EGG_REWARD_VIEW,on_open_capsule_egg_reward_view) --打开奖励预览界面 local function on_open_capsule_egg_preview(pool_type) if self.capsule_egg_reward_preview == nil then self.capsule_egg_reward_preview = CapsuleEggRewardPreview.New() end self.capsule_egg_reward_preview:Open(pool_type) end self.model:Bind(CapsuleEggConst.OPEN_CAPSULE_EGG_REWARD_PRE_VIEW,on_open_capsule_egg_preview) --打开扭蛋结算界面 local function on_open_capsule_egg_result_view(pool_type) if self.capsule_egg_result_view == nil then self.capsule_egg_result_view = CapsuleEggResultView.New() end if self.capsule_egg_result_view:HasOpen() then self.capsule_egg_result_view:UpdateView(pool_type) else self.capsule_egg_result_view:Open(pool_type) end end self.model:Bind(CapsuleEggConst.OPEN_DRAW_RESULT_VIEW,on_open_capsule_egg_result_view) --打开大奖展示界面 local function on_open_capsule_big_reward_view(reward_list,need_delay_show_view) local delay_show_time = 0 if need_delay_show_view then delay_show_time = 0 end local function delay_method( ) if self.capsule_big_reward_view == nil then self.capsule_big_reward_view = CapsuleEggBigRewardView.New() end if not self.capsule_big_reward_view:HasOpen() then self.capsule_big_reward_view:Open(reward_list) else self.capsule_big_reward_view:ReUpdate(reward_list) end end setTimeout(delay_method, delay_show_time) end self.model:Bind(CapsuleEggConst.OPEN_CAPSULE_EGG_BIG_REWARD_VIEW,on_open_capsule_big_reward_view) local function update_red_dot_by_tab_id_func( tab_id )--主要的更新红点方法 if not tab_id then self.model:IsNeedRedAll() else self.model:IsNeedRed(tab_id) end local red_dot = self.model:GetAllRedDot() local bool = false for i,v in pairs(red_dot) do if v then bool = true break end end bool = bool or self.model:GetTimeRewardRedDot() -- bool = bool or (not self.model.have_see_red_dot)--这个一次性红点先干掉,现在是大于6张才给红点 GlobalEventSystem:Fire(ActivityIconManager.UPDATE_ICON_TIPS,17000,bool) end self.model:Bind(CapsuleEggConst.UPDATE_RED_DOT,update_red_dot_by_tab_id_func) end -- ################# 查询扭蛋信息 ################## -- protocol=17000{ -- c2s{ -- pool_type:int8 // 扭蛋库类型 -- } -- s2c{ -- pool_type:int8 // 扭蛋库类型 1-龙神 2-炫武 3-华裳 -- free_times:int8 // 剩余免费次数 -- next_free_draw:int32 // 下次免费抽取时间戳 -- } -- } function CapsuleEggController:Handle17000( ) local vo = SCMD17000.New(true) if vo then -- print("==WQ==:SCMD17000 [start:156] vo:", vo) -- PrintTable(vo) -- print("==WQ==:CapsuleEggController [end]") self.model:SetCapsuleEggFreeDrawData(vo) end end -- ################# 查询全服记录 ################## -- protocol=17001{ -- c2s{ -- pool_type:int8 // 扭蛋库类型 -- } -- s2c{ -- pool_type:int8 // 扭蛋库类型 -- server_lucky:int16 // 全服幸运值 -- draw_log:array{ -- role_id:int64 // 玩家Id -- role_name:string // 玩家名字 -- reward_cfg_id:int32 // 奖励配置Id -- record_time:int32 // 抽奖记录时间 -- is_stick:int8 // 是否置顶 -- } -- } -- } function CapsuleEggController:Handle17001( ) local vo = SCMD17001.New(true) if vo then --print("==WQ==:SCMD17001 [start:156] vo:", vo) --PrintTable(vo) --print("==WQ==:CapsuleEggController [end]") self.model:SetRecord(vo) self.model:Fire(CapsuleEggConst.UPDATE_SERVER_RECORD,vo.pool_type) end end -- ############## 新增全服记录(推送协议) ############### -- protocol=17002{ -- c2s{} -- s2c{ -- pool_type:int8 // 扭蛋库类型 -- server_lucky:int16 // 全服幸运值 -- role_id:int64 // 玩家Id -- role_name:string // 玩家名字 -- reward_id_list:array{ -- reward_cfg_id:int16 // 奖励配置Id -- is_stick:int8 // 是否置顶 -- } -- record_time:int32 // 抽奖记录时间 -- } -- } function CapsuleEggController:Handle17002( ) local vo = SCMD17002.New(true) if vo then for k,v in pairs(vo.reward_id_list) do local temp_vo = {} temp_vo.reward_cfg_id = v.reward_cfg_id temp_vo.is_stick = v.is_stick temp_vo.pool_type = vo.pool_type temp_vo.server_lucky = vo.server_lucky temp_vo.role_id = vo.role_id temp_vo.role_name = vo.role_name temp_vo.record_time = vo.record_time self.model:AddRecord(temp_vo) end self.model:Fire(CapsuleEggConst.UPDATE_SERVER_RECORD,vo.pool_type) end end -- ################# 抽奖 ################## -- protocol=17003{ -- c2s{ -- pool_type:int8 // 扭蛋库类型 -- draw_times:int8 // 抽奖次数 -- is_free:int8 // 是否免费抽取 0-否 1-是 -- } -- s2c{ -- res:int32 // 返回码 -- pool_type:int8 // 扭蛋库类型 -- free_times:int8 // 剩余免费次数 -- next_free_draw:int32 // 下次免费抽取时间戳 -- reward_list:array{ // 获得物品 -- reward_cfg_id:int32 // 奖励配置Id -- gtype_id :int32 // 物品类型id -- goods_num :int32 // 物品数量 -- } -- } -- } function CapsuleEggController:Handle17003( ) local vo = SCMD17003.New(true) if vo then -- print("==WQ==:SCMD17003 [start:156] vo:", vo) -- PrintTable(vo) -- print("==WQ==:CapsuleEggController [end]") if vo.res==1 then self.model:SetCapsuleEggFreeDrawData(vo)--刷新奖池免费抽奖信息 self.model:SetNowRewardList(vo.reward_list) self.model:Fire(CapsuleEggConst.OPEN_DRAW_RESULT_VIEW,vo.pool_type)--打开抽奖结算界面 lua_soundM:PlayEffect(self, "award",false,LuaSoundManager.SOUND_TYPE.UI) else ErrorCodeShow(vo.res) lua_soundM:PlayEffect(self, "fault",false,LuaSoundManager.SOUND_TYPE.UI) end end end -- ################# 查询积分 ################## -- protocol=17004{ -- c2s{} -- s2c{ -- score:int32 // 积分 -- } -- } function CapsuleEggController:Handle17004( ) local vo = SCMD17004.New(true) if vo then -- print("==WQ==:SCMD17004 [start:156] vo:", vo) -- PrintTable(vo) -- print("==WQ==:CapsuleEggController [end]") self.model:SetCapsuleEggScore(vo.score) end end -- ############## 获取积分商城商品信息 ############### -- protocol=17005 -- { -- c2s{} -- s2c{ -- goods_list:array{ -- pos :int16 // 商品位置 -- gtype_id :int32 // 商品类型Id -- type :int8 // 兑换类型:1-每日限购 2-每周限购 3-终身限购 -- num :int8 // 剩余兑换的次数 -- } -- } -- } function CapsuleEggController:Handle17005( ) local vo = SCMD17005.New(true) if vo then -- print("==WQ==:SCMD17005 [start:156] vo:", vo) -- PrintTable(vo) -- print("==WQ==:CapsuleEggController [end]") self.model:SetCapsuleEggScoreShopData(vo) self.model:Fire(CapsuleEggConst.UPDATE_CPASULE_EGG_SCORE_SHOP_VIEW) end end -- ################# 积分兑换 ################## -- protocol=17006{ -- c2s{ -- pos :int16 // 商品位置 -- } -- s2c{ -- res :int32 // 返回码 -- pos :int16 // 商品位置 -- gtype_id :int32 // 商品类型Id -- num :int8 // 已经兑换的次数 -- score :int32 // 积分 -- } -- } function CapsuleEggController:Handle17006( ) local vo = SCMD17006.New(true) if vo then -- print("==WQ==:SCMD17006 [start:156] vo:", vo) -- PrintTable(vo) -- print("==WQ==:CapsuleEggController [end]") if vo.res==1 then self.model:UpdateCapsuleEggScoreShopData(vo) self.model:SetCapsuleEggScore(vo.score) self.model:Fire(CapsuleEggConst.UPDATE_CAPSULE_EGG_SHOP_ITEM,vo.pos) else ErrorCodeShow(vo.res) lua_soundM:PlayEffect(self, "fault",false,LuaSoundManager.SOUND_TYPE.UI) end end end -- ################# 查询仓库物品 ################## -- protocol=17007{ -- c2s{} -- s2c{ -- goods_list:array{ // 获得物品 -- goods_id :int64 // 物品唯一id -- gtyp_id :int32 // 物品类型id -- goods_num :int32 // 物品数量 -- create_time :int32 // 创建时间 -- } -- } -- } function CapsuleEggController:Handle17007( ) local vo = SCMD17007.New(true) if vo then -- print("==WQ==:SCMD17007 [start:156] vo:", vo) -- PrintTable(vo) -- print("==WQ==:CapsuleEggController [end]") self.model:SetWarehouseData(vo) if not self.model.take_one_not_to_update_warehouse then self.model:Fire(CapsuleEggConst.UPDATE_WAREHOUSE_VIEW) end self.model.take_one_not_to_update_warehouse = false end end -- ################ 取出仓库物品 ############## -- protocol=17008 -- { -- c2s{ -- goods_id :int64 // 物品id -- } -- s2c{ -- errcode :int32 // 错误码 -- goods_id :int64 // 物品id -- } -- } function CapsuleEggController:Handle17008( ) local vo = SCMD17008.New(true) if vo then -- print("==WQ==:SCMD17008 [start:156] vo:", vo) -- PrintTable(vo) -- print("==WQ==:CapsuleEggController [end]") if vo.errcode == 1 then self.model:Fire(CapsuleEggConst.TAKE_ONE_REWARD_FROW_WAREHOUSE,vo.goods_id) self.model.take_one_not_to_update_warehouse = true self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17007) else ErrorCodeShow(vo.errcode) lua_soundM:PlayEffect(self, "fault",false,LuaSoundManager.SOUND_TYPE.UI) end end end -- ############## 一键取出 ############## -- protocol=17009 -- { -- c2s{} -- s2c{ -- errcode :int32 // 错误码 -- } -- } function CapsuleEggController:Handle17009( ) local vo = SCMD17009.New(true) if vo then -- print("==WQ==:SCMD17009 [start:156] vo:", vo) -- PrintTable(vo) -- print("==WQ==:CapsuleEggController [end]") if vo.errcode == 1 then -- self.model:ClearWarehouseData() -- self.model:Fire(CapsuleEggConst.TAKE_OUT_ALL_REWARD) self.model.take_one_not_to_update_warehouse = false self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17007) lua_soundM:PlayEffect(self, "success",false,LuaSoundManager.SOUND_TYPE.UI) else ErrorCodeShow(vo.errcode) lua_soundM:PlayEffect(self, "fault",false,LuaSoundManager.SOUND_TYPE.UI) end end end -- ############## 全服幸运值 ############## -- protocol=17010 -- { -- c2s{} -- s2c{ -- pool_type:int8 // 扭蛋库类型 -- server_lucky:int16 // 全服幸运值 -- } -- } function CapsuleEggController:Handle17010( ) local vo = SCMD17010.New(true) if vo then -- print("==WQ==:SCMD17010 [start:156] vo:", vo) -- PrintTable(vo) -- print("==WQ==:CapsuleEggController [end]") self.model:SetServerlucky(vo.pool_type,vo.server_lucky) end end --############## 查询/领取次数奖励 ############## function CapsuleEggController:Handle17011( ) local vo = SCMD17011.New(true) if vo.res == 1 then self.model:SetTimesRewardInfo(vo) else ErrorCodeShow(vo.res) end end