源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

513 行
16 KiB

  1. require("game.proto.170.Require170")
  2. require("game.capsuleEgg.CapsuleEggAwardItem")
  3. require("game.capsuleEgg.CapsuleEggConst")
  4. require("game.capsuleEgg.CapsuleEggExtraBaseView")
  5. require("game.capsuleEgg.CapsuleEggModel")
  6. require("game.capsuleEgg.CapsuleEggRecordItem")
  7. require("game.capsuleEgg.CapsuleEggRecordItemTwo")
  8. require("game.capsuleEgg.CapsuleEggResultView")
  9. require("game.capsuleEgg.CapsuleEggScoreShopItem")
  10. require("game.capsuleEgg.CapsuleEggScoreShopView")
  11. require("game.capsuleEgg.CapsuleEggView")
  12. require("game.capsuleEgg.CapsuleEggWarehouseItem")
  13. require("game.capsuleEgg.CapsuleEggWarehouseView")
  14. require("game.capsuleEgg.CapsuleEggShowAwardItem")
  15. require("game.capsuleEgg.CapsuleEggShowAwardItemTwo")
  16. require("game.capsuleEgg.CapsuleEggRewardView")
  17. require("game.capsuleEgg.CapsuleEggRewardItem")
  18. require("game.capsuleEgg.CapsuleEggTargetItem")
  19. require("game.capsuleEgg.CapsuleEggBigRewardView")
  20. require("game.capsuleEgg.CapsuleEggRewardPreview")
  21. CapsuleEggController = CapsuleEggController or BaseClass(BaseController, true)
  22. local CapsuleEggController = CapsuleEggController
  23. function CapsuleEggController:__init()
  24. CapsuleEggController.Instance = self
  25. self.model = CapsuleEggModel:getInstance()
  26. self:AddEvents()
  27. self:RegisterAllProtocal()
  28. end
  29. function CapsuleEggController:__delete()
  30. end
  31. function CapsuleEggController:RegisterAllProtocal( )
  32. self:RegisterProtocal(17000, "Handle17000")
  33. self:RegisterProtocal(17001, "Handle17001")
  34. self:RegisterProtocal(17002, "Handle17002")
  35. self:RegisterProtocal(17003, "Handle17003")
  36. self:RegisterProtocal(17004, "Handle17004")
  37. self:RegisterProtocal(17005, "Handle17005")
  38. self:RegisterProtocal(17006, "Handle17006")
  39. self:RegisterProtocal(17007, "Handle17007")
  40. self:RegisterProtocal(17008, "Handle17008")
  41. self:RegisterProtocal(17009, "Handle17009")
  42. self:RegisterProtocal(17010, "Handle17010")
  43. self:RegisterProtocal(17011, "Handle17011")
  44. end
  45. function CapsuleEggController:AddEvents()
  46. local function onRequestBaseInfo()
  47. self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17000,1)
  48. -- self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17000,2)
  49. -- self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17000,3)
  50. self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17001,1)
  51. -- self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17001,2)
  52. -- self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17001,3)
  53. -- self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17010,1)
  54. -- self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17010,2)
  55. -- self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17010,3)
  56. self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17004)
  57. self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17005)
  58. self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17007)
  59. self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17011,1,1,0)
  60. end
  61. local function onGameStart()
  62. local function onDelay()
  63. onRequestBaseInfo()
  64. end
  65. setTimeout(onDelay, 2)
  66. end
  67. GlobalEventSystem:Bind(EventName.GAME_START, onGameStart)
  68. -- 满足等级后请求信息
  69. -- local function onLevelUp(level)
  70. -- if level == GetModuleOpenLevel(170) then
  71. -- onRequestBaseInfo()
  72. -- end
  73. -- end
  74. -- RoleManager.Instance.mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelUp)
  75. --完成任务检查一下
  76. local function onTaskFinished(id)
  77. if id == Config.Moduleid[170].task_id then
  78. onRequestBaseInfo()
  79. end
  80. end
  81. GlobalEventSystem:Bind(TaskEvent.ANS_FINISHED_TASK_LIST, onTaskFinished)
  82. --请求信息 i|32 h|16 c|8 l|64 s|字符串
  83. local function onRequestHandler(...)
  84. local args_list = {...}
  85. if args_list[1] == 17000 then
  86. self:SendFmtToGame(args_list[1],"c",args_list[2])
  87. elseif args_list[1] == 17001 then
  88. self:SendFmtToGame(args_list[1],"c",args_list[2])
  89. elseif args_list[1] == 17002 then
  90. self:SendFmtToGame(args_list[1])
  91. elseif args_list[1] == 17003 then
  92. self:SendFmtToGame(args_list[1],"ccc",args_list[2],args_list[3],args_list[4])
  93. elseif args_list[1] == 17004 then
  94. self:SendFmtToGame(args_list[1])
  95. elseif args_list[1] == 17005 then
  96. self:SendFmtToGame(args_list[1])
  97. elseif args_list[1] == 17006 then
  98. self:SendFmtToGame(args_list[1],"h",args_list[2])
  99. elseif args_list[1] == 17007 then
  100. self:SendFmtToGame(args_list[1])
  101. elseif args_list[1] == 17008 then
  102. self:SendFmtToGame(args_list[1],"l",args_list[2])
  103. elseif args_list[1] == 17009 then
  104. self:SendFmtToGame(args_list[1])
  105. elseif args_list[1] == 17011 then
  106. self:SendFmtToGame(args_list[1], "cci", args_list[2],args_list[3],args_list[4])
  107. else
  108. self:SendFmtToGame(args_list[1])
  109. end
  110. end
  111. self.model:Bind(CapsuleEggConst.REQUEST_CCMD_EVENT, onRequestHandler)
  112. --打开奖池类型为pool_type的扭蛋界面
  113. local function on_open_capsule_egg_view(pool_type)
  114. if self.capsule_egg_view == nil then
  115. self.capsule_egg_view = CapsuleEggView.New()
  116. end
  117. self.capsule_egg_view:Open(pool_type)
  118. end
  119. self.model:Bind(CapsuleEggConst.OPEN_CAPSULE_EGG_VIEW,on_open_capsule_egg_view)
  120. --打开仓库、积分商城界面
  121. local function on_open_capsule_egg_extra_view(index)
  122. if self.capsule_egg_extra_view == nil then
  123. self.capsule_egg_extra_view = CapsuleEggExtraBaseView.New()
  124. end
  125. self.capsule_egg_extra_view:Open(index)
  126. end
  127. self.model:Bind(CapsuleEggConst.OPEN_CAPSULE_EGG_EXTRA_VIEW,on_open_capsule_egg_extra_view)
  128. --打开奖励界面
  129. local function on_open_capsule_egg_reward_view(pool_type)
  130. if self.capsule_egg_reward_view == nil then
  131. self.capsule_egg_reward_view = CapsuleEggRewardView.New()
  132. end
  133. self.capsule_egg_reward_view:Open(pool_type)
  134. end
  135. self.model:Bind(CapsuleEggConst.OPEN_CAPSULE_EGG_REWARD_VIEW,on_open_capsule_egg_reward_view)
  136. --打开奖励预览界面
  137. local function on_open_capsule_egg_preview(pool_type)
  138. if self.capsule_egg_reward_preview == nil then
  139. self.capsule_egg_reward_preview = CapsuleEggRewardPreview.New()
  140. end
  141. self.capsule_egg_reward_preview:Open(pool_type)
  142. end
  143. self.model:Bind(CapsuleEggConst.OPEN_CAPSULE_EGG_REWARD_PRE_VIEW,on_open_capsule_egg_preview)
  144. --打开扭蛋结算界面
  145. local function on_open_capsule_egg_result_view(pool_type)
  146. if self.capsule_egg_result_view == nil then
  147. self.capsule_egg_result_view = CapsuleEggResultView.New()
  148. end
  149. if self.capsule_egg_result_view:HasOpen() then
  150. self.capsule_egg_result_view:UpdateView(pool_type)
  151. else
  152. self.capsule_egg_result_view:Open(pool_type)
  153. end
  154. end
  155. self.model:Bind(CapsuleEggConst.OPEN_DRAW_RESULT_VIEW,on_open_capsule_egg_result_view)
  156. --打开大奖展示界面
  157. local function on_open_capsule_big_reward_view(reward_list,need_delay_show_view)
  158. local delay_show_time = 0
  159. if need_delay_show_view then
  160. delay_show_time = 0
  161. end
  162. local function delay_method( )
  163. if self.capsule_big_reward_view == nil then
  164. self.capsule_big_reward_view = CapsuleEggBigRewardView.New()
  165. end
  166. if not self.capsule_big_reward_view:HasOpen() then
  167. self.capsule_big_reward_view:Open(reward_list)
  168. else
  169. self.capsule_big_reward_view:ReUpdate(reward_list)
  170. end
  171. end
  172. setTimeout(delay_method, delay_show_time)
  173. end
  174. self.model:Bind(CapsuleEggConst.OPEN_CAPSULE_EGG_BIG_REWARD_VIEW,on_open_capsule_big_reward_view)
  175. local function update_red_dot_by_tab_id_func( tab_id )--主要的更新红点方法
  176. if not tab_id then
  177. self.model:IsNeedRedAll()
  178. else
  179. self.model:IsNeedRed(tab_id)
  180. end
  181. local red_dot = self.model:GetAllRedDot()
  182. local bool = false
  183. for i,v in pairs(red_dot) do
  184. if v then
  185. bool = true
  186. break
  187. end
  188. end
  189. bool = bool or self.model:GetTimeRewardRedDot()
  190. -- bool = bool or (not self.model.have_see_red_dot)--这个一次性红点先干掉,现在是大于6张才给红点
  191. GlobalEventSystem:Fire(ActivityIconManager.UPDATE_ICON_TIPS,17000,bool)
  192. end
  193. self.model:Bind(CapsuleEggConst.UPDATE_RED_DOT,update_red_dot_by_tab_id_func)
  194. end
  195. -- ################# 查询扭蛋信息 ##################
  196. -- protocol=17000{
  197. -- c2s{
  198. -- pool_type:int8 // 扭蛋库类型
  199. -- }
  200. -- s2c{
  201. -- pool_type:int8 // 扭蛋库类型 1-龙神 2-炫武 3-华裳
  202. -- free_times:int8 // 剩余免费次数
  203. -- next_free_draw:int32 // 下次免费抽取时间戳
  204. -- }
  205. -- }
  206. function CapsuleEggController:Handle17000( )
  207. local vo = SCMD17000.New(true)
  208. if vo then
  209. -- print("==WQ==:SCMD17000 [start:156] vo:", vo)
  210. -- PrintTable(vo)
  211. -- print("==WQ==:CapsuleEggController [end]")
  212. self.model:SetCapsuleEggFreeDrawData(vo)
  213. end
  214. end
  215. -- ################# 查询全服记录 ##################
  216. -- protocol=17001{
  217. -- c2s{
  218. -- pool_type:int8 // 扭蛋库类型
  219. -- }
  220. -- s2c{
  221. -- pool_type:int8 // 扭蛋库类型
  222. -- server_lucky:int16 // 全服幸运值
  223. -- draw_log:array{
  224. -- role_id:int64 // 玩家Id
  225. -- role_name:string // 玩家名字
  226. -- reward_cfg_id:int32 // 奖励配置Id
  227. -- record_time:int32 // 抽奖记录时间
  228. -- is_stick:int8 // 是否置顶
  229. -- }
  230. -- }
  231. -- }
  232. function CapsuleEggController:Handle17001( )
  233. local vo = SCMD17001.New(true)
  234. if vo then
  235. --print("==WQ==:SCMD17001 [start:156] vo:", vo)
  236. --PrintTable(vo)
  237. --print("==WQ==:CapsuleEggController [end]")
  238. self.model:SetRecord(vo)
  239. self.model:Fire(CapsuleEggConst.UPDATE_SERVER_RECORD,vo.pool_type)
  240. end
  241. end
  242. -- ############## 新增全服记录(推送协议) ###############
  243. -- protocol=17002{
  244. -- c2s{}
  245. -- s2c{
  246. -- pool_type:int8 // 扭蛋库类型
  247. -- server_lucky:int16 // 全服幸运值
  248. -- role_id:int64 // 玩家Id
  249. -- role_name:string // 玩家名字
  250. -- reward_id_list:array{
  251. -- reward_cfg_id:int16 // 奖励配置Id
  252. -- is_stick:int8 // 是否置顶
  253. -- }
  254. -- record_time:int32 // 抽奖记录时间
  255. -- }
  256. -- }
  257. function CapsuleEggController:Handle17002( )
  258. local vo = SCMD17002.New(true)
  259. if vo then
  260. for k,v in pairs(vo.reward_id_list) do
  261. local temp_vo = {}
  262. temp_vo.reward_cfg_id = v.reward_cfg_id
  263. temp_vo.is_stick = v.is_stick
  264. temp_vo.pool_type = vo.pool_type
  265. temp_vo.server_lucky = vo.server_lucky
  266. temp_vo.role_id = vo.role_id
  267. temp_vo.role_name = vo.role_name
  268. temp_vo.record_time = vo.record_time
  269. self.model:AddRecord(temp_vo)
  270. end
  271. self.model:Fire(CapsuleEggConst.UPDATE_SERVER_RECORD,vo.pool_type)
  272. end
  273. end
  274. -- ################# 抽奖 ##################
  275. -- protocol=17003{
  276. -- c2s{
  277. -- pool_type:int8 // 扭蛋库类型
  278. -- draw_times:int8 // 抽奖次数
  279. -- is_free:int8 // 是否免费抽取 0-否 1-是
  280. -- }
  281. -- s2c{
  282. -- res:int32 // 返回码
  283. -- pool_type:int8 // 扭蛋库类型
  284. -- free_times:int8 // 剩余免费次数
  285. -- next_free_draw:int32 // 下次免费抽取时间戳
  286. -- reward_list:array{ // 获得物品
  287. -- reward_cfg_id:int32 // 奖励配置Id
  288. -- gtype_id :int32 // 物品类型id
  289. -- goods_num :int32 // 物品数量
  290. -- }
  291. -- }
  292. -- }
  293. function CapsuleEggController:Handle17003( )
  294. local vo = SCMD17003.New(true)
  295. if vo then
  296. -- print("==WQ==:SCMD17003 [start:156] vo:", vo)
  297. -- PrintTable(vo)
  298. -- print("==WQ==:CapsuleEggController [end]")
  299. if vo.res==1 then
  300. self.model:SetCapsuleEggFreeDrawData(vo)--刷新奖池免费抽奖信息
  301. self.model:SetNowRewardList(vo.reward_list)
  302. self.model:Fire(CapsuleEggConst.OPEN_DRAW_RESULT_VIEW,vo.pool_type)--打开抽奖结算界面
  303. lua_soundM:PlayEffect(self, "award",false,LuaSoundManager.SOUND_TYPE.UI)
  304. else
  305. ErrorCodeShow(vo.res)
  306. lua_soundM:PlayEffect(self, "fault",false,LuaSoundManager.SOUND_TYPE.UI)
  307. end
  308. end
  309. end
  310. -- ################# 查询积分 ##################
  311. -- protocol=17004{
  312. -- c2s{}
  313. -- s2c{
  314. -- score:int32 // 积分
  315. -- }
  316. -- }
  317. function CapsuleEggController:Handle17004( )
  318. local vo = SCMD17004.New(true)
  319. if vo then
  320. -- print("==WQ==:SCMD17004 [start:156] vo:", vo)
  321. -- PrintTable(vo)
  322. -- print("==WQ==:CapsuleEggController [end]")
  323. self.model:SetCapsuleEggScore(vo.score)
  324. end
  325. end
  326. -- ############## 获取积分商城商品信息 ###############
  327. -- protocol=17005
  328. -- {
  329. -- c2s{}
  330. -- s2c{
  331. -- goods_list:array{
  332. -- pos :int16 // 商品位置
  333. -- gtype_id :int32 // 商品类型Id
  334. -- type :int8 // 兑换类型:1-每日限购 2-每周限购 3-终身限购
  335. -- num :int8 // 剩余兑换的次数
  336. -- }
  337. -- }
  338. -- }
  339. function CapsuleEggController:Handle17005( )
  340. local vo = SCMD17005.New(true)
  341. if vo then
  342. -- print("==WQ==:SCMD17005 [start:156] vo:", vo)
  343. -- PrintTable(vo)
  344. -- print("==WQ==:CapsuleEggController [end]")
  345. self.model:SetCapsuleEggScoreShopData(vo)
  346. self.model:Fire(CapsuleEggConst.UPDATE_CPASULE_EGG_SCORE_SHOP_VIEW)
  347. end
  348. end
  349. -- ################# 积分兑换 ##################
  350. -- protocol=17006{
  351. -- c2s{
  352. -- pos :int16 // 商品位置
  353. -- }
  354. -- s2c{
  355. -- res :int32 // 返回码
  356. -- pos :int16 // 商品位置
  357. -- gtype_id :int32 // 商品类型Id
  358. -- num :int8 // 已经兑换的次数
  359. -- score :int32 // 积分
  360. -- }
  361. -- }
  362. function CapsuleEggController:Handle17006( )
  363. local vo = SCMD17006.New(true)
  364. if vo then
  365. -- print("==WQ==:SCMD17006 [start:156] vo:", vo)
  366. -- PrintTable(vo)
  367. -- print("==WQ==:CapsuleEggController [end]")
  368. if vo.res==1 then
  369. self.model:UpdateCapsuleEggScoreShopData(vo)
  370. self.model:SetCapsuleEggScore(vo.score)
  371. self.model:Fire(CapsuleEggConst.UPDATE_CAPSULE_EGG_SHOP_ITEM,vo.pos)
  372. else
  373. ErrorCodeShow(vo.res)
  374. lua_soundM:PlayEffect(self, "fault",false,LuaSoundManager.SOUND_TYPE.UI)
  375. end
  376. end
  377. end
  378. -- ################# 查询仓库物品 ##################
  379. -- protocol=17007{
  380. -- c2s{}
  381. -- s2c{
  382. -- goods_list:array{ // 获得物品
  383. -- goods_id :int64 // 物品唯一id
  384. -- gtyp_id :int32 // 物品类型id
  385. -- goods_num :int32 // 物品数量
  386. -- create_time :int32 // 创建时间
  387. -- }
  388. -- }
  389. -- }
  390. function CapsuleEggController:Handle17007( )
  391. local vo = SCMD17007.New(true)
  392. if vo then
  393. -- print("==WQ==:SCMD17007 [start:156] vo:", vo)
  394. -- PrintTable(vo)
  395. -- print("==WQ==:CapsuleEggController [end]")
  396. self.model:SetWarehouseData(vo)
  397. if not self.model.take_one_not_to_update_warehouse then
  398. self.model:Fire(CapsuleEggConst.UPDATE_WAREHOUSE_VIEW)
  399. end
  400. self.model.take_one_not_to_update_warehouse = false
  401. end
  402. end
  403. -- ################ 取出仓库物品 ##############
  404. -- protocol=17008
  405. -- {
  406. -- c2s{
  407. -- goods_id :int64 // 物品id
  408. -- }
  409. -- s2c{
  410. -- errcode :int32 // 错误码
  411. -- goods_id :int64 // 物品id
  412. -- }
  413. -- }
  414. function CapsuleEggController:Handle17008( )
  415. local vo = SCMD17008.New(true)
  416. if vo then
  417. -- print("==WQ==:SCMD17008 [start:156] vo:", vo)
  418. -- PrintTable(vo)
  419. -- print("==WQ==:CapsuleEggController [end]")
  420. if vo.errcode == 1 then
  421. self.model:Fire(CapsuleEggConst.TAKE_ONE_REWARD_FROW_WAREHOUSE,vo.goods_id)
  422. self.model.take_one_not_to_update_warehouse = true
  423. self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17007)
  424. else
  425. ErrorCodeShow(vo.errcode)
  426. lua_soundM:PlayEffect(self, "fault",false,LuaSoundManager.SOUND_TYPE.UI)
  427. end
  428. end
  429. end
  430. -- ############## 一键取出 ##############
  431. -- protocol=17009
  432. -- {
  433. -- c2s{}
  434. -- s2c{
  435. -- errcode :int32 // 错误码
  436. -- }
  437. -- }
  438. function CapsuleEggController:Handle17009( )
  439. local vo = SCMD17009.New(true)
  440. if vo then
  441. -- print("==WQ==:SCMD17009 [start:156] vo:", vo)
  442. -- PrintTable(vo)
  443. -- print("==WQ==:CapsuleEggController [end]")
  444. if vo.errcode == 1 then
  445. -- self.model:ClearWarehouseData()
  446. -- self.model:Fire(CapsuleEggConst.TAKE_OUT_ALL_REWARD)
  447. self.model.take_one_not_to_update_warehouse = false
  448. self.model:Fire(CapsuleEggConst.REQUEST_CCMD_EVENT,17007)
  449. lua_soundM:PlayEffect(self, "success",false,LuaSoundManager.SOUND_TYPE.UI)
  450. else
  451. ErrorCodeShow(vo.errcode)
  452. lua_soundM:PlayEffect(self, "fault",false,LuaSoundManager.SOUND_TYPE.UI)
  453. end
  454. end
  455. end
  456. -- ############## 全服幸运值 ##############
  457. -- protocol=17010
  458. -- {
  459. -- c2s{}
  460. -- s2c{
  461. -- pool_type:int8 // 扭蛋库类型
  462. -- server_lucky:int16 // 全服幸运值
  463. -- }
  464. -- }
  465. function CapsuleEggController:Handle17010( )
  466. local vo = SCMD17010.New(true)
  467. if vo then
  468. -- print("==WQ==:SCMD17010 [start:156] vo:", vo)
  469. -- PrintTable(vo)
  470. -- print("==WQ==:CapsuleEggController [end]")
  471. self.model:SetServerlucky(vo.pool_type,vo.server_lucky)
  472. end
  473. end
  474. --############## 查询/领取次数奖励 ##############
  475. function CapsuleEggController:Handle17011( )
  476. local vo = SCMD17011.New(true)
  477. if vo.res == 1 then
  478. self.model:SetTimesRewardInfo(vo)
  479. else
  480. ErrorCodeShow(vo.res)
  481. end
  482. end