源战役客户端
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.

315 lines
10 KiB

  1. require("game.proto.335.Require335")
  2. require("game.powerTurnTable.PowerTurnTableModel")
  3. require("game.powerTurnTable.PowerTurnTableView")--转盘界面
  4. require("game.powerTurnTable.PowerTurnTableRecordItem")--转盘日志item
  5. require("game.powerTurnTable.PowerTurnTableExchangeView")--积分兑换界面
  6. require("game.powerTurnTable.PowerTurnTableExchangeItem")--积分兑换界面item
  7. require("game.powerTurnTable.PowerTurnTableExchangeReqView")--兑换请求界面
  8. PowerTurnTableController = PowerTurnTableController or BaseClass(BaseController)
  9. PowerTurnTableController.Is_Debug = false
  10. function PowerTurnTableController:__init()
  11. PowerTurnTableController.Instance = self
  12. self.model = PowerTurnTableModel:getInstance()
  13. self.mainVo = RoleManager.Instance.mainRoleInfo
  14. self:RegisterAllProtocals()
  15. self:AddAllEvents()
  16. end
  17. function PowerTurnTableController:__delete()
  18. end
  19. function PowerTurnTableController:AddAllEvents()
  20. local function game_start_func()
  21. end
  22. GlobalEventSystem:Bind(EventName.GAME_START,game_start_func)
  23. --请求协议
  24. local function onRequestProtocal(...)
  25. local args = {...}
  26. if args[1] == 33501 or args[1] == 33502 or args[1] == 33505 then
  27. self:SendFmtToGame(args[1], "h", args[2])
  28. elseif args[1] == 33503 then
  29. self:SendFmtToGame(args[1], "hch", args[2],args[3],args[4])
  30. elseif args[1] == 33504 then
  31. self:SendFmtToGame(args[1], "hcc", args[2],args[3],args[4])
  32. else
  33. self:SendFmtToGame(args[1])
  34. end
  35. end
  36. self.model:Bind(PowerTurnTableModel.REQUEST_INFO, onRequestProtocal)
  37. local function init_open_day( ... )--开服天数初始化
  38. end
  39. GlobalEventSystem:Bind(EventName.OPEN_DAY_INIT,init_open_day)
  40. --升级
  41. local function onLevelUp(level)
  42. end
  43. RoleManager.Instance.mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelUp)
  44. local function chnage_day_func(type)
  45. if type == SettingModel.CHANGE_DAY.HOUR_0 then -- 跨0点
  46. local base_type = CustomActivityModel.CustomActBaseType.POWER_TURNTABLE
  47. local all_act_list = CustomActivityModel:getInstance():getAllActListByBaseType(base_type) or {}
  48. if all_act_list then
  49. for k,v in pairs(all_act_list) do
  50. self.model:CheckPowerTurnTableMainRedDot(v.sub_type)
  51. self.model:Fire(PowerTurnTableModel.UPDATE_VIEW_INFO,v.sub_type)
  52. end
  53. end
  54. end
  55. end
  56. GlobalEventSystem:Bind(EventName.CHANE_DAY, chnage_day_func)
  57. local onOpenPowerTurnTableView = function (sub_type,is_close)--往期排行
  58. if self.PowerTurnTableView == nil then
  59. self.PowerTurnTableView = PowerTurnTableView.New()
  60. end
  61. if self.PowerTurnTableView:HasOpen() and not is_close then
  62. -- self.PowerTurnTableView:UpdateView(sub_type)
  63. elseif not is_close then
  64. self.PowerTurnTableView:Open(sub_type)
  65. else
  66. self.PowerTurnTableView:Close()
  67. end
  68. end
  69. self.model:Bind(PowerTurnTableModel.OPEN_MAIN_VIEW,onOpenPowerTurnTableView)
  70. local onOpenPowerTurnTableExchangeView = function (sub_type,is_close)--兑换界面
  71. if self.PowerTurnTableExchangeView == nil then
  72. self.PowerTurnTableExchangeView = PowerTurnTableExchangeView.New()
  73. end
  74. if self.PowerTurnTableExchangeView:HasOpen() and not is_close then
  75. -- self.PowerTurnTableExchangeView:UpdateView(sub_type)
  76. elseif not is_close then
  77. self.PowerTurnTableExchangeView:Open(sub_type)
  78. else
  79. self.PowerTurnTableExchangeView:Close()
  80. end
  81. end
  82. self.model:Bind(PowerTurnTableModel.OPEN_EXCHANGE_VIEW,onOpenPowerTurnTableExchangeView)
  83. local onPowerTurnTableExchangeReqView = function (data,is_close)--兑换请求界面
  84. if self.PowerTurnTableExchangeReqView == nil then
  85. self.PowerTurnTableExchangeReqView = PowerTurnTableExchangeReqView.New()
  86. end
  87. if self.PowerTurnTableExchangeReqView:HasOpen() and not is_close then
  88. -- self.PowerTurnTableExchangeReqView:UpdateView(sub_type)
  89. elseif not is_close then
  90. self.PowerTurnTableExchangeReqView:Open(data)
  91. else
  92. self.PowerTurnTableExchangeReqView:Close()
  93. end
  94. end
  95. self.model:Bind(PowerTurnTableModel.OPEN_EXCHANGE_REQ_VIEW,onPowerTurnTableExchangeReqView)
  96. end
  97. function PowerTurnTableController:RegisterAllProtocals()
  98. self:RegisterProtocal(33501,"handler33501") --奖池信息
  99. self:RegisterProtocal(33502,"handler33502") --积分兑换界面
  100. self:RegisterProtocal(33503,"handler33503") --积分兑换
  101. self:RegisterProtocal(33504,"handler33504") --抽奖
  102. self:RegisterProtocal(33505,"handler33505") --全服记录
  103. end
  104. -- ########### 源能转盘-奖池信息 ##############
  105. -- protocol=33501
  106. -- {
  107. -- c2s{
  108. -- sub_type :int16 // 活动子类型
  109. -- }
  110. -- s2c{
  111. -- errcode :int32 // 错误码
  112. -- sub_type :int16 // 活动子类型
  113. -- score :int16 // 积分
  114. -- point :int16 // 源能值
  115. -- free_time :int8 // 免费次数
  116. -- pool_list:array{
  117. -- id :int8 // id
  118. -- reward :string // 奖励
  119. -- tag :int8 // 标识
  120. -- }
  121. -- }
  122. -- }
  123. function PowerTurnTableController:handler33501()
  124. local scmd = SCMD33501.New(true)
  125. -- print("huangcong:PowerTurnTableController [start:120] scmd:", scmd.errcode)
  126. -- PrintTable(scmd)
  127. -- print("huangcong:PowerTurnTableController [end]")
  128. if scmd.errcode == 1 then
  129. self.model:SetPowerTurnTableInfo(scmd)
  130. else
  131. -- ErrorCodeShow(scmd.errcode)
  132. end
  133. end
  134. -- ########### 源能转盘-积分兑换界面 ##############
  135. -- protocol=33502
  136. -- {
  137. -- c2s{
  138. -- sub_type :int16 // 活动子类型
  139. -- }
  140. -- s2c{
  141. -- errcode :int32 // 错误码
  142. -- sub_type :int16 // 活动子类型
  143. -- cur_score :int16 // 积分
  144. -- swap_list:array{
  145. -- id :int8 // id
  146. -- Reward :string // 物品
  147. -- LeftTimes :int8 // 剩余兑换次数
  148. -- score :int16 // 需要的积分
  149. -- countdown :int16 // 解锁倒计时,0为已解锁
  150. -- }
  151. -- }
  152. -- }
  153. function PowerTurnTableController:handler33502()
  154. local scmd = SCMD33502.New(true)
  155. -- print("33502scmd", scmd.errcode)
  156. if scmd.errcode == 1 then
  157. local server_info = self.model:GetPowerTurnTableInfo(scmd.sub_type)
  158. if server_info then
  159. server_info.score = scmd.cur_score
  160. end
  161. self.model:SetExchangeInfoList(scmd)
  162. self.model:Fire(PowerTurnTableModel.UPDATE_EXCHANGE_VIEW,scmd.sub_type)
  163. else
  164. -- ErrorCodeShow(scmd.errcode)
  165. end
  166. end
  167. -- ########### 源能转盘-积分兑换 ##############
  168. -- protocol=33503
  169. -- {
  170. -- c2s{
  171. -- sub_type :int16 // 活动子类型
  172. -- id :int8 // id
  173. -- num :int16 // 数量
  174. -- }
  175. -- s2c{
  176. -- errcode :int32 // 错误码
  177. -- sub_type :int16 // 活动子类型
  178. -- id :int8 // id
  179. -- left_times :int8 // 剩余兑换次数
  180. -- cur_score :int16 // 积分
  181. -- }
  182. -- }
  183. function PowerTurnTableController:handler33503()
  184. local scmd = SCMD33503.New(true)
  185. -- print("33503scmd", scmd.errcode)
  186. if scmd.errcode == 1 then
  187. Message.show("兑换成功")
  188. local server_info = self.model:GetPowerTurnTableInfo(scmd.sub_type)
  189. if server_info then
  190. server_info.score = scmd.cur_score
  191. end
  192. local exchange_info = self.model:GetExchangeInfoList(scmd.sub_type)
  193. if exchange_info then
  194. for i,v in ipairs(exchange_info) do
  195. if v.id == scmd.id then
  196. v.left_times = scmd.left_times
  197. v.sort_id = v.id + (v.left_times == 0 and 1000 or 0)--兑换完置底
  198. --触发快捷使用
  199. OperateActivityModel:getInstance():Fire(OperateActivityModel.QUIK_USE, true)
  200. --道具飞背包
  201. local goods_fly_data = {[1] = v.reward[2]}
  202. if TableSize(goods_fly_data) > 0 then
  203. MainUIModel:getInstance():PlayGoodsFlyList(goods_fly_data)
  204. end
  205. --飘字
  206. goods_fly_data = {
  207. [1] = {
  208. goods_type_id = v.reward[2],
  209. num = v.reward[3],
  210. }
  211. }
  212. if TableSize(goods_fly_data) > 0 then
  213. MainUIModel:getInstance():AddFloatInfo(goods_fly_data, true)
  214. end
  215. break
  216. end
  217. end
  218. local sort_func = function ( a, b )
  219. return a.sort_id < b.sort_id
  220. end
  221. table.sort(exchange_info, sort_func)
  222. end
  223. self.model:Fire(PowerTurnTableModel.UPDATE_EXCHANGE_VIEW,scmd.sub_type)
  224. self.model:Fire(PowerTurnTableModel.UPDATE_VIEW_INFO,scmd.sub_type)
  225. else
  226. ErrorCodeShow(scmd.errcode)
  227. end
  228. end
  229. -- ########### 源能转盘-抽奖 ##############
  230. -- protocol=33504
  231. -- {
  232. -- c2s{
  233. -- sub_type :int16 // 活动子类型
  234. -- type :int8 // 1单抽|2十连抽
  235. -- skip :int8 // 是否跳过动画 0否1是
  236. -- }
  237. -- s2c{
  238. -- errcode :int32 // 错误码
  239. -- sub_type :int16 // 活动子类型
  240. -- score :int16 // 积分
  241. -- point :int16 // 源能值
  242. -- free_time :int8 // 免费次数
  243. -- id_list:array{
  244. -- id :int8 // 奖励id
  245. -- }
  246. -- }
  247. -- }
  248. function PowerTurnTableController:handler33504()
  249. local scmd = SCMD33504.New(true)
  250. -- print("33504scmd", scmd.errcode)
  251. if scmd.errcode == 1 then
  252. local server_info = self.model:GetPowerTurnTableInfo(scmd.sub_type)
  253. if server_info then
  254. local cur_point = server_info.point
  255. server_info.score = scmd.score
  256. server_info.point = scmd.point
  257. server_info.free_time = scmd.free_time
  258. -- self.model:Fire(PowerTurnTableModel.UPDATE_VIEW_INFO,scmd.sub_type)
  259. self.model:CheckPowerTurnTableMainRedDot(scmd.sub_type)
  260. self.model:Fire(PowerTurnTableModel.START_TURN_ACTION,scmd.sub_type,scmd.id_list,cur_point)
  261. end
  262. else
  263. ErrorCodeShow(scmd.errcode)
  264. end
  265. end
  266. -- ########### 源能转盘-全服记录 ##############
  267. -- protocol=33505
  268. -- {
  269. -- c2s{
  270. -- sub_type :int16 // 活动子类型
  271. -- }
  272. -- s2c{
  273. -- list:array{
  274. -- role_name :string
  275. -- goods_id :int32
  276. -- num :int8
  277. -- }
  278. -- }
  279. -- }
  280. function PowerTurnTableController:handler33505()
  281. local scmd = SCMD33505.New(true)
  282. -- print("huangcong:PowerTurnTableController [start:295] scmd:", scmd)
  283. -- PrintTable(scmd)
  284. -- print("huangcong:PowerTurnTableController [end]")
  285. self.model:SetRecordInfo(scmd)
  286. self.model:Fire(PowerTurnTableModel.UPDATE_RECORD_INFO,scmd.sub_type)
  287. end