源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

534 lines
18 KiB

пре 4 недеља
  1. require("game.proto.333.Require333")
  2. require("game.competingList.CompetingListModel")
  3. require("game.competingList.CompetingListConst")
  4. require("game.competingList.view.CompetingListBaseView")--竞榜主界面
  5. require("game.competingList.view.CompetingListItem")--竞榜item
  6. require("game.competingList.view.CompetingListCon")--竞榜道具item界面
  7. require("game.competingList.view.CompetingListAwardItem")--竞榜道具item界面奖励
  8. require("game.competingList.view.CompetingListRecordTxt")--竞榜日志item
  9. require("game.competingList.view.CompetingListResultView")--竞榜结算界面
  10. require("game.competingList.view.CompetingListCardItem")--竞榜结算界面Item
  11. require("game.competingList.view.CompetingListToolTips")--竞榜道具提示界面--暂时弃用
  12. require("game.competingList.view.CompetingListToolSmallTips")--竞榜奖励提示小界面20200831需求修改用这个小界面展示奖励
  13. require("game.competingList.view.FontaniBaseView")--许愿池界面
  14. require("game.competingList.view.FontaniBaseItem")--许愿池item界面
  15. require("game.competingList.view.CompetingListAskView")--竞榜打折界面
  16. require("game.competingList.view.CompetingListAwardShowView")--竞榜奖励展示界面
  17. CompetingListController = CompetingListController or BaseClass(BaseController)
  18. CompetingListController.Is_Debug = false
  19. function CompetingListController:__init()
  20. CompetingListController.Instance = self
  21. self.model = CompetingListModel:getInstance()
  22. self.mainVo = RoleManager.Instance.mainRoleInfo
  23. self:RegisterAllProtocals()
  24. self:AddAllEvents()
  25. end
  26. function CompetingListController:__delete()
  27. end
  28. function CompetingListController:AddAllEvents()
  29. local function game_start_func()
  30. -- self.model:Fire(CompetingListModel.REQUEST_INFO,33170)
  31. -- self:handle33300()
  32. end
  33. GlobalEventSystem:Bind(EventName.GAME_START,game_start_func)
  34. -- local function CheckRedPoint( ... )
  35. -- end
  36. -- GlobalEventSystem:Bind(GoodsModel.CHANGE_BAGLIST,game_start_func)
  37. local onOpenluckyCallView = function (base_type)
  38. do return end
  39. if base_type == 888 then
  40. for k,v in pairsByKeys(self.model.view_info) do
  41. local cfg = self.model.view_cfg[k]
  42. if cfg then
  43. if cfg.type == 1 then--竞榜
  44. base_type = k
  45. break
  46. elseif cfg.type == 2 then--许愿池
  47. end
  48. end
  49. end
  50. end
  51. if not self.model.view_info or not self.model.view_info[base_type] then
  52. Message.show("活动未开启")
  53. return
  54. end
  55. if self.competing_list_view == nil then
  56. self.competing_list_view = CompetingListBaseView.New()
  57. end
  58. if self.competing_list_view:HasOpen() then
  59. -- self.competing_list_view:UpdateView(base_type)
  60. else
  61. self.competing_list_view:Open(base_type)
  62. end
  63. end
  64. GlobalEventSystem:Bind(CompetingListModel.OPEN_COMPETING_LIST_VIEW, onOpenluckyCallView)
  65. -- local onOpenFontaniView = function (base_type)--许愿池
  66. -- if not self.model.view_info or not self.model.view_info[base_type] or not self.model.view_info[base_type].rune_times then
  67. -- Message.show("活动未开启")
  68. -- return
  69. -- end
  70. -- local key = string.format("%s@%s",333,base_type)
  71. -- if Config.Moduleopenlv[key] and RoleManager.Instance.mainRoleInfo.level < Config.Moduleopenlv[key].lv then
  72. -- local str = string.format("%s级开放",Config.Moduleopenlv[key].lv)
  73. -- Message.show(str)
  74. -- return
  75. -- end
  76. -- if self.FontaniBaseView == nil then
  77. -- self.FontaniBaseView = FontaniBaseView.New()
  78. -- end
  79. -- if self.FontaniBaseView:HasOpen() then
  80. -- self.FontaniBaseView:UpdateView(base_type)
  81. -- else
  82. -- self.FontaniBaseView:Open(base_type)
  83. -- end
  84. -- end
  85. -- GlobalEventSystem:Bind(CompetingListModel.OPEN_FONTANI_VIEW, onOpenFontaniView)
  86. local function request_info(request_id , ... )
  87. if not CompetingListController.Is_Debug then
  88. local fun_name = string.format("send%s",request_id)
  89. if self[fun_name] then
  90. print('----in CompetingListController.lua,line 44 request_id',request_id , ...)
  91. self[fun_name](self,...)
  92. end
  93. elseif request_id == 33306 or request_id == 33305 or request_id == 33301 or request_id == 33300 or request_id == 33304 then
  94. local fun_name = string.format("handle%s",request_id)
  95. if self[fun_name] then
  96. print('----in CompetingListController.lua,line 96 request_idIs_Debug',request_id , ...)
  97. self[fun_name](self,...)
  98. end
  99. end
  100. end
  101. self.model:Bind(CompetingListModel.REQUEST_INFO,request_info)
  102. local function init_open_day( ... )--开服天数初始化
  103. CompetingListModel:getInstance():Fire(CompetingListModel.REQUEST_INFO,33300)
  104. end
  105. GlobalEventSystem:Bind(EventName.OPEN_DAY_INIT,init_open_day)
  106. local onOpenCompetingListResultView = function (sub_type,tab_type)
  107. if self.competing_list_result_view == nil then
  108. self.competing_list_result_view = CompetingListResultView.New()
  109. end
  110. if self.competing_list_result_view:HasOpen() then
  111. self.competing_list_result_view:UpdateView(sub_type,tab_type)
  112. else
  113. self.competing_list_result_view:Open(sub_type,tab_type)
  114. end
  115. end
  116. self.model:Bind(CompetingListModel.OPEN_COMPETING_LIST_RESULT_VIEW, onOpenCompetingListResultView)
  117. local onOpenCompetingListTipView = function (data)--宝箱道具展示界面
  118. if self.competing_list_tip_view == nil then
  119. -- self.competing_list_tip_view = CompetingListToolTips.New()--暂时弃用
  120. self.competing_list_tip_view = CompetingListToolSmallTips.New()
  121. end
  122. if self.competing_list_tip_view:HasOpen() then
  123. else
  124. self.competing_list_tip_view:Open(data)
  125. end
  126. end
  127. GlobalEventSystem:Bind(CompetingListModel.OPEN_COMPETING_LIST_TIP_VIEW, onOpenCompetingListTipView)
  128. local onOpenCompetingListAwardShowView = function (data)--奖池道具展示界面
  129. if self.CompetingListAwardShowView == nil then
  130. self.CompetingListAwardShowView = CompetingListAwardShowView.New()
  131. end
  132. if self.CompetingListAwardShowView:HasOpen() then
  133. else
  134. self.CompetingListAwardShowView:Open(data)
  135. end
  136. end
  137. GlobalEventSystem:Bind(CompetingListModel.OPEN_COMPETING_LIST_AWARD_SHOW_VIEW, onOpenCompetingListAwardShowView)
  138. --升级
  139. local function onLevelUp(level)
  140. for i,v in pairs(self.model.view_cfg) do
  141. if level == v.lv then
  142. CompetingListModel:getInstance():Fire(CompetingListModel.REQUEST_INFO,33300)
  143. break
  144. end
  145. end
  146. end
  147. RoleManager.Instance.mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelUp)
  148. end
  149. function CompetingListController:RegisterAllProtocals()
  150. self:RegisterProtocal(33300, "handle33300") -- 竞榜活动信息开放
  151. self:RegisterProtocal(33301, "handle33301") -- 竞榜活动信息
  152. self:RegisterProtocal(33302, "handle33302") -- 竞榜抽奖
  153. self:RegisterProtocal(33303, "handle33303") -- 次数奖励领取
  154. self:RegisterProtocal(33304, "handle33304") -- 竞榜活动排行榜数据
  155. self:RegisterProtocal(33305, "handle33305") -- 许愿面板信息
  156. self:RegisterProtocal(33306, "handle33306") -- 祈愿
  157. -- self:RegisterProtocal(33307, "handle33307") -- 广播竞榜全服积分
  158. end
  159. -- ############## 竞榜活动信息开放 ##############
  160. -- protocol=33300
  161. -- {
  162. -- c2s{
  163. -- }
  164. -- s2c{
  165. -- list:array
  166. -- {
  167. -- base_type :int16 // 活动主类型
  168. -- end_time :int32 // 活动结束时间戳
  169. -- end_show_time :int32 // 活动展示时间戳(一般比活动结束时间要长,用于展示竞榜结果)
  170. -- world_stage :int16 // 世界等级阶段
  171. -- }
  172. -- }
  173. -- }
  174. function CompetingListController:send33300()
  175. self:SendFmtToGame(33300)
  176. end
  177. function CompetingListController:handle33300()
  178. CompetingListModel:getInstance():InitComptingIconCfg()--协议第一次回来进行加载
  179. if not CompetingListController.Is_Debug then
  180. local scmd = SCMD33300.New(true)
  181. -- print("huangcong:CompetingListController [146]: ",scmd)
  182. -- PrintTable(scmd)
  183. local have_open = false
  184. for k,v in pairs(self.model.view_info) do
  185. have_open = false
  186. local cfg = self.model.view_cfg[v.base_type]
  187. if cfg then
  188. for kk,vv in pairs(scmd.list) do
  189. if vv.base_type == v.base_type then
  190. have_open = true
  191. break
  192. end
  193. end
  194. if not have_open and v.base_type and cfg.type == 1 then--竞榜
  195. ActivityIconManager:getInstance():deleteIcon(33300000+v.base_type)
  196. elseif not have_open and v.base_type and cfg.type == 2 then--许愿池
  197. ActivityIconManager:getInstance():deleteIcon(1033300000+v.base_type)
  198. end
  199. end
  200. end
  201. if #scmd.list > 0 then
  202. for i,v in ipairs(scmd.list) do
  203. local cfg = self.model.view_cfg[v.base_type]
  204. if cfg and cfg.type then
  205. scmd.type = cfg.type
  206. self.model:SetViewInfoBase(v)
  207. self.model:Fire(CompetingListModel.REQUEST_INFO, 33304, v.base_type)
  208. end
  209. end
  210. end
  211. else
  212. local data = {base_type = 101, end_time = TimeUtil:getServerTime( ) + 3600, end_show_time = TimeUtil:getServerTime( ) + 7200, world_stage = self.model:GetCurWorldLvStage()}
  213. local cfg = self.model.view_cfg[data.base_type]
  214. if cfg and cfg.type then
  215. data.type = cfg.type
  216. self.model:SetViewInfoBase(data)
  217. end
  218. end
  219. -- print("huangcong:CompetingListController [117]: ",scmd)
  220. -- PrintTable(scmd)
  221. -- self.model:SetViewInfo(scmd)
  222. -- self.model:Fire(CompetingListModel.UPDATE_COMPETING_LIST_VIEW)
  223. end
  224. -- ############## 竞榜活动信息 ##############
  225. -- protocol=33301
  226. -- {
  227. -- c2s{
  228. -- base_type :int16 // 类型
  229. -- }
  230. -- s2c{
  231. -- base_type :int16 // 类型
  232. -- free_times :int8 // 免费次数
  233. -- buy_times :int16 // 购买10连次数
  234. -- sum_score :int32 // 积分
  235. -- times :int32 // 累计抽奖次数
  236. -- award_list:array{
  237. -- id :int16 // 奖励Id
  238. -- state :int8 // 状态 1可领取未领取|2已领取
  239. -- }
  240. -- rank_list:array{
  241. -- role_id :int64 // 角色Id
  242. -- role_name :string // 玩家名字
  243. -- server_num :int32 // 服务器Id
  244. -- rank :int8 // 排名
  245. -- score :int32 // 积分
  246. -- }
  247. -- }
  248. -- }
  249. function CompetingListController:send33301(base_type)
  250. self:SendFmtToGame(33301,"h",base_type)
  251. end
  252. function CompetingListController:handle33301()
  253. local scmd = {}
  254. if not CompetingListController.Is_Debug then
  255. scmd = SCMD33301.New(true)
  256. self.model:SetViewInfoOne(scmd)
  257. self.model:Fire(CompetingListModel.UPDATE_COMPETING_LIST_VIEW)
  258. else
  259. scmd = {}
  260. end
  261. -- print("huangcong:CompetingListController [180]: ",scmd)
  262. -- PrintTable(scmd)
  263. end
  264. -- ############## 竞榜抽奖 ##############
  265. -- protocol=33302
  266. -- {
  267. -- c2s{
  268. -- base_type :int16 // 类型
  269. -- times :int8 // 次数 目前只能发1和10
  270. -- is_auto :int8 // 是否自动购买 0不是 1是
  271. -- }
  272. -- s2c{
  273. -- errcode :int32 // 返回码(为1 前端会主动去请求33301)
  274. -- base_type :int16 // 类型
  275. -- times :int8 // 次数 目前只能发1和10
  276. -- sum_score :int32 // 积分
  277. -- draw_times :int32 // 累计抽奖次数
  278. -- stage :int8 // 世界等级阶段
  279. -- reward_list:array{
  280. -- award_id :int16 // 奖励Id
  281. -- }
  282. -- }
  283. -- }
  284. function CompetingListController:send33302(base_type,times,is_auto)
  285. self:SendFmtToGame(33302,"hcc",base_type,times,is_auto)
  286. end
  287. function CompetingListController:handle33302()
  288. local scmd = SCMD33302.New(true)
  289. -- print("huangcong:CompetingListController [218]: ",scmd)
  290. -- PrintTable(scmd)
  291. if scmd.errcode == 1 then
  292. self.model:SetResult(scmd)
  293. -- self.model:Fire(CompetingListModel.OPEN_COMPETING_LIST_RESULT_VIEW,scmd.base_type)
  294. self.model:Fire(CompetingListModel.REQUEST_INFO, 33301, scmd.base_type)
  295. local str = string.format("冲榜积分增加 <color=%s>%s</color>",ColorUtil.GREEN,scmd.times*self.model.one_score)
  296. Message.show(str)
  297. else
  298. ErrorCodeShow(scmd.errcode)
  299. end
  300. end
  301. -- ############## 次数奖励领取 ##############
  302. -- protocol=33303
  303. -- {
  304. -- c2s{
  305. -- base_type :int16 // 类型
  306. -- id :int16 // 奖励Id
  307. -- }
  308. -- s2c{
  309. -- errcode :int32 // 错误码
  310. -- base_type :int16 // 类型
  311. -- id :int16 // 奖励Id
  312. -- }
  313. -- }
  314. function CompetingListController:send33303(base_type,award_id)
  315. self:SendFmtToGame(33303,"hh",base_type,award_id)
  316. end
  317. function CompetingListController:handle33303()
  318. local scmd = SCMD33303.New(true)
  319. -- print("huangcong:CompetingListController [242]: ",scmd.id)
  320. -- PrintTable(scmd)
  321. if scmd.errcode == 1 then
  322. Message.show("领取成功")
  323. local act_list = self.model.view_info[scmd.base_type]
  324. if act_list and act_list.award_list then
  325. if act_list.award_list[scmd.id] then
  326. act_list.award_list[scmd.id].state = 2
  327. end
  328. end
  329. self.model:CheckMainIconRedDot(scmd.base_type)
  330. self.model:Fire(CompetingListModel.UPDATE_BOX_AWARD,scmd.base_type,scmd.id)
  331. else
  332. ErrorCodeShow(scmd.errcode)
  333. end
  334. end
  335. -- ############## 竞榜活动排行榜数据 ##############
  336. -- protocol=33304
  337. -- {
  338. -- c2s{
  339. -- base_type :int16 // 类型
  340. -- }
  341. -- s2c{
  342. -- base_type :int16 // 类型
  343. -- rank_list:array{
  344. -- role_id :int64 // 角色Id
  345. -- role_name :string // 玩家名字
  346. -- server_num :int32 // 服务器Id
  347. -- rank :int8 // 排名
  348. -- score :int32 // 积分
  349. -- }
  350. -- }
  351. -- }
  352. function CompetingListController:send33304(base_type)
  353. self:SendFmtToGame(33304,"h",base_type)
  354. end
  355. function CompetingListController:handle33304()
  356. local scmd = {}
  357. if not CompetingListController.Is_Debug then
  358. scmd = SCMD33304.New(true)
  359. else
  360. scmd = {
  361. base_type = 301,
  362. rank_list = {
  363. role_id = 1,
  364. role_name = "塌秧",
  365. server_num = 1,
  366. rank = 1,
  367. score = 150,
  368. },
  369. }
  370. end
  371. -- print("huangcong:CompetingListController [369]: ",scmd.base_type)
  372. -- PrintTable(scmd)
  373. if not self.model.view_info[scmd.base_type] then
  374. self.model.view_info[scmd.base_type] = {}
  375. end
  376. local record_data = {}
  377. for k,v in pairs(scmd.rank_list) do
  378. record_data[v.rank] = v
  379. end
  380. self.model.view_info[scmd.base_type].rank_list = record_data
  381. self.model:Fire(CompetingListModel.UPDATE_RANK_INFO,scmd.base_type)
  382. end
  383. -- ############许愿面板信息################
  384. -- protocol=33305
  385. -- {
  386. -- c2s{
  387. -- base_type :int16 // 类型
  388. -- }
  389. -- s2c{
  390. -- base_type:int16 // 类型
  391. -- gold_coin:int16 //金币
  392. -- total:int32 //累计充值
  393. -- score:int32 //积分
  394. -- rune_times:int16 //符文祈愿次数
  395. -- award_list:array{
  396. -- id:int16 // 奖励Id
  397. -- state:int8 // 状态 1可领取未领取|2已领取
  398. -- }
  399. -- }
  400. -- }
  401. function CompetingListController:send33305(base_type)
  402. self:SendFmtToGame(33305,"h",base_type)
  403. end
  404. function CompetingListController:handle33305()
  405. local scmd = {}
  406. if not CompetingListController.Is_Debug then
  407. scmd = SCMD33305.New(true)
  408. else
  409. scmd = {
  410. base_type = 301,
  411. gold_coin = 0,
  412. total = 3000,
  413. score = 0,
  414. rune_times = 3,
  415. award_list = {
  416. },
  417. }
  418. end
  419. -- print("huangcong:CompetingListController [399]: ",scmd)
  420. -- PrintTable(scmd)
  421. local cfg = self.model.view_cfg[scmd.base_type]
  422. if cfg and cfg.type then
  423. scmd.type = cfg.type
  424. self.model:SetFontaniViewInfoOne(scmd)
  425. self.model:Fire(CompetingListModel.UPDATE_COMPETING_LIST_VIEW)
  426. self.model:Fire(CompetingListModel.UPDATE_FONTANI_VIEW,scmd.base_type)
  427. end
  428. end
  429. -- ###############许愿池许愿################
  430. -- protocol=33306
  431. -- {
  432. -- c2s{
  433. -- base_type:int16 // 类型
  434. -- opty:int8 //1金币2符文
  435. -- auto:int8 //0否1自动
  436. -- }
  437. -- s2c{
  438. -- res:int32 //1成功
  439. -- base_type:int16 // 类型
  440. -- opty:int8 //操作类型 1金币2符文
  441. -- stage:int8
  442. -- reward_list:array{
  443. -- award_id:int16 // 奖励Id
  444. -- }
  445. -- }
  446. -- }
  447. function CompetingListController:send33306(base_type,opty,auto)
  448. self:SendFmtToGame(33306,"hcc",base_type,opty,auto)
  449. end
  450. function CompetingListController:handle33306()
  451. local scmd = {}
  452. if not CompetingListController.Is_Debug then
  453. scmd = SCMD33306.New(true)
  454. else
  455. scmd = {
  456. res = 1,
  457. base_type = 301,
  458. opty = 1,
  459. score = 16,
  460. stage = 1,
  461. }
  462. scmd.reward_list = {
  463. award_id = 1,
  464. }
  465. end
  466. -- print("huangcong:CompetingListController [454]: ",scmd)
  467. -- PrintTable(scmd)
  468. if scmd.res == 1 then
  469. self.model:SetFontaniResult(scmd)
  470. self.model:Fire(CompetingListModel.OPEN_COMPETING_LIST_RESULT_VIEW,scmd.base_type,scmd.opty)
  471. self.model:Fire(CompetingListModel.REQUEST_INFO, 33305, scmd.base_type)
  472. local str = string.format("许愿积分增加 <color='%s'>%s</color>",ColorUtil.CHUANWEN_GREEN,self.model.wish_score_coin)
  473. if scmd.opty == 2 then
  474. str = string.format("许愿积分增加 <color='%s'>%s</color>",ColorUtil.CHUANWEN_GREEN,self.model.wish_score_rune)
  475. end
  476. Message.show(str)
  477. else
  478. ErrorCodeShow(scmd.res)
  479. end
  480. end
  481. -- -- ###############广播全服积分###########20200831需求修改屏蔽33307
  482. -- -- protocol=33307
  483. -- -- {
  484. -- -- s2c{
  485. -- -- base_type:int16 // 类型
  486. -- -- server_score :int32 // 全服积分
  487. -- -- }
  488. -- -- }
  489. -- function CompetingListController:handle33307()
  490. -- local scmd = SCMD33307.New(true)
  491. -- self.model:Fire(CompetingListModel.REQUEST_INFO, 33301, scmd.base_type)
  492. -- -- print("huangcong:CompetingListController [399]: ",scmd)
  493. -- -- PrintTable(scmd)
  494. -- end