源战役客户端
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

288 рядки
9.5 KiB

4 тижднів тому
  1. --[[@------------------------------------------------------------------
  2. @description:
  3. @author:HWR
  4. ----------------------------------------------------------------------]]
  5. require("game.proto.160.Require160")
  6. require("game.fuli.FuliModel")
  7. require("game.fuli.FuliConst")
  8. require("game.fuli.FuliMainView")
  9. require("game.fuli.FuliSignView")--签到奖励
  10. require("game.fuli.FuliSignItem")
  11. require("game.fuli.FuliSignRewardItem")
  12. require("game.fuli.FuliAIView")--在线奖励
  13. require("game.fuli.FuliAIItem")
  14. require("game.fuli.FuliLevelView")--冲级奖励
  15. require("game.fuli.FuliLevelItem")
  16. require("game.fuli.FuliDownloadView")--下载奖励
  17. require("game.fuli.FuliCDKView")--激活码
  18. require("game.fuli.FuliVipAskView")--询问是否升V的界面
  19. require("game.fuli.FuliLimitPackageView") --开服限时礼包
  20. require("game.fuli.FuliLimitPackageItem")
  21. require("game.fuli.FuliLimitPackageNumItem") --开发限时礼包动画节点
  22. require("game.fuli.FuliLimitPackageNumTextItem") --开发显示礼包动画文本节点
  23. require("game.fuli.FuliLimitPackageRewardView") --冲级礼包领取展示
  24. require("game.fuli.FuliNoticeView") --游戏公告界面
  25. require("game.fuli.FuliNoticeTab") --游戏公告界面
  26. FuliController = FuliController or BaseClass(BaseController)
  27. function FuliController:__init()
  28. FuliController.Instance = self
  29. self.model = FuliModel:getInstance()
  30. self:InitEvent()
  31. self:registerAllProtocals()
  32. end
  33. function FuliController:getInstance()
  34. if FuliController.Instance == nil then
  35. FuliController.New()
  36. end
  37. return FuliController.Instance
  38. end
  39. function FuliController:InitEvent()
  40. local function onRequestHandler(...)
  41. local args = {...}
  42. if args[1] == 16006 or args[1] == 16004 or args[1] == 16010 then
  43. self:SendFmtToGame(args[1], "c", args[2])
  44. elseif args[1] == 16009 then
  45. self:SendFmtToGame(args[1], "sl", args[2], 0)
  46. else
  47. self:SendFmtToGame(args[1])
  48. end
  49. end
  50. self.model:Bind(FuliConst.REQ_FULI_SCMD, onRequestHandler)
  51. local function init_open_day( ... )--开服天数初始化
  52. self.model:UpdateFuliLevelActIcon(RoleManager.Instance.mainRoleInfo.level)
  53. end
  54. GlobalEventSystem:Bind(EventName.OPEN_DAY_INIT,init_open_day)
  55. local function chnage_day_func(type)
  56. if type == SettingModel.CHANGE_DAY.HOUR_0 then -- 跨0点
  57. self.model:UpdateFuliLevelActIcon(RoleManager.Instance.mainRoleInfo.level)
  58. end
  59. end
  60. GlobalEventSystem:Bind(EventName.CHANE_DAY, chnage_day_func)
  61. --升级
  62. local function onLevelUp(level)
  63. if level and type(level) == "number" then
  64. level = level or RoleManager.Instance.mainRoleInfo.level
  65. --检查升级福利引导图标开启
  66. self.model:UpdateFuliLevelActIcon(level)
  67. end
  68. end
  69. RoleManager.Instance.mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelUp)
  70. FuliModel:getInstance():BindOne("fuli_level_info", onLevelUp)
  71. local on_open_fuli_main_view = function (index, sub_index, param_list)
  72. if self.fuli_main_view == nil then
  73. self.fuli_main_view = FuliMainView.New()
  74. end
  75. if self.fuli_main_view:HasOpen() then
  76. self.fuli_main_view:ReOpen(index, sub_index, param_list)
  77. else
  78. self.fuli_main_view:Open(index, sub_index, param_list)
  79. end
  80. end
  81. GlobalEventSystem:Bind(FuliConst.OPEN_FULI_MAIN_VIEW, on_open_fuli_main_view)
  82. local on_open_fuli_ask_view = function ()
  83. if self.fuli_ask_view == nil then
  84. self.fuli_ask_view = FuliVipAskView.New()
  85. end
  86. self.fuli_ask_view:Open()
  87. end
  88. self.model:Bind(FuliConst.OPEN_FULI_VIP_ASK_VIEW, on_open_fuli_ask_view)
  89. local onGameStartHandler = function ()
  90. self.model:Fire(FuliConst.REQ_FULI_SCMD, 16001)
  91. self.model:Fire(FuliConst.REQ_FULI_SCMD, 16003)
  92. self.model:Fire(FuliConst.REQ_FULI_SCMD, 16005)
  93. self.model:Fire(FuliConst.REQ_FULI_SCMD, 16007)
  94. end
  95. self:Bind(EventName.GAME_START, onGameStartHandler)
  96. local function update_red_dot_by_tab_id_func( tab_id )--主要的更新红点方法
  97. if not tab_id then
  98. self.model:IsFuliNeedRedAll()
  99. else
  100. self.model:IsFuliNeedRed(tab_id)
  101. end
  102. local red_dot = self.model:GetAllFuliRedDot()
  103. local bool = false
  104. for i,v in pairs(red_dot) do
  105. if v then
  106. bool = true
  107. break
  108. end
  109. end
  110. GlobalEventSystem:Fire(ActivityIconManager.UPDATE_ICON_TIPS, 16000, bool)
  111. end
  112. self.model:Bind(FuliConst.UPDATE_FULI_RED_DOT,update_red_dot_by_tab_id_func)
  113. local function onLevelChange(level)
  114. self.model:Fire(FuliConst.UPDATE_FULI_RED_DOT, FuliConst.TAB_ID.LEVEL)
  115. end
  116. RoleManager:getInstance().mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelChange)
  117. local function onVipChange()
  118. self.model:Fire(FuliConst.UPDATE_FULI_RED_DOT, FuliConst.TAB_ID.SIGN)
  119. end
  120. RoleManager:getInstance().mainRoleInfo:BindOne("vip_flag", onVipChange)
  121. --已下载量,总更新量,当前更新速度,是否已更新完成
  122. local function update_resourse_state(now_size,all_size,speed,isdone)
  123. self.model:Fire(FuliConst.SHOW_FULI_DOWN_RES_NUM, now_size, all_size, speed, isdone)
  124. if isdone then
  125. self.model:Fire(FuliConst.UPDATE_FULI_RED_DOT, FuliConst.TAB_ID.DOWNLOAD)
  126. StepPackModule:getInstance():SetCallbackFunc(nil)
  127. end
  128. end
  129. StepPackModule:getInstance():SetCallbackFunc(update_resourse_state)
  130. local on_open_fuli_limitpackage_view = function ()
  131. if self.fuli_limit_package_view == nil then
  132. self.fuli_limit_package_view = FuliLimitPackageView.New()
  133. end
  134. if self.fuli_limit_package_view:HasOpen() then
  135. self.fuli_limit_package_view:ReOpen()
  136. else
  137. self.fuli_limit_package_view:Open()
  138. end
  139. end
  140. self.model:Bind(FuliConst.OPEN_FULI_LIMIT_PACKAGE_VIEW, on_open_fuli_limitpackage_view)
  141. --打开普通礼包界面
  142. local function on_open_fuli_limitpackage_reward_view(no)
  143. if self.fuli_limit_package_reward_view == nil then
  144. self.fuli_limit_package_reward_view = FuliLimitPackageRewardView.New()
  145. end
  146. if self.fuli_limit_package_reward_view:HasOpen() then
  147. self.fuli_limit_package_reward_view:ReOpen()
  148. else
  149. self.fuli_limit_package_reward_view:Open(no)
  150. end
  151. end
  152. self.model:Bind(FuliConst.OPEN_FULI_LIMIT_REWARD_VIEW, on_open_fuli_limitpackage_reward_view)
  153. local function CLOSE_SOME_VIEW( )
  154. if self.fuli_main_view then
  155. self.fuli_main_view:Close()
  156. end
  157. end
  158. GlobalEventSystem:Bind(EventName.CLOSE_SOME_VIEW,CLOSE_SOME_VIEW)
  159. GlobalEventSystem:Bind(FuliConst.CLOSE_FULI_MAIN_VIEW,CLOSE_SOME_VIEW)
  160. end
  161. function FuliController:registerAllProtocals()
  162. self:RegisterProtocal(16001,"handle16001")--福利大厅-签到状态
  163. self:RegisterProtocal(16002,"handle16002")--福利大厅-签到
  164. self:RegisterProtocal(16003,"handle16003")--福利大厅-在线奖励状态
  165. self:RegisterProtocal(16004,"handle16004")--福利大厅-在线奖励领取
  166. self:RegisterProtocal(16005,"handle16005")--福利大厅-冲级奖励状态
  167. self:RegisterProtocal(16006,"handle16006")--福利大厅-领取冲级奖励
  168. self:RegisterProtocal(16007,"handle16007")--福利大厅-资源下载奖励状态
  169. self:RegisterProtocal(16008,"handle16008")--福利大厅-领取资源下载奖励奖励
  170. self:RegisterProtocal(16009,"handle16009")--福利大厅-领取激活码礼包
  171. self:RegisterProtocal(16010,"handle16010")--福利大厅-领取累计签到奖励
  172. self:RegisterProtocal(16011,"handle16011")--限时开服礼包
  173. end
  174. function FuliController:handle16001()
  175. local vo = SCMD16001.New(true)
  176. local table = TenbyteToTwobyte(vo.cumulative_info)
  177. vo.total_state = table
  178. self.model:SetFuliSignInfo(vo)
  179. self.model:Fire(FuliConst.UPDATE_FULI_RED_DOT, FuliConst.TAB_ID.SIGN)
  180. end
  181. function FuliController:handle16002()
  182. local vo = SCMD16002.New(true)
  183. if vo.res == 1 then
  184. Message.show("签到成功~")
  185. else
  186. ErrorCodeShow(vo.res)
  187. end
  188. end
  189. function FuliController:handle16003()
  190. local vo = SCMD16003.New(true)
  191. local table = TenbyteToTwobyte(vo.receive_state)
  192. vo.my_receive = table
  193. self.model:SetFuliAIInfo(vo)
  194. PkRankModel:getInstance():GetOnlineTime()
  195. self.model:Fire(FuliConst.UPDATE_FULI_RED_DOT, FuliConst.TAB_ID.AI)
  196. end
  197. function FuliController:handle16004()
  198. local vo = SCMD16004.New(true)
  199. if vo.res == 1 then
  200. Message.show("奖励领取成功~")
  201. self.model:Fire(FuliConst.AI_TALK_SHOW, FuliConst.AI_TALK_TYPE.SEND_GIFT)
  202. else
  203. ErrorCodeShow(vo.res)
  204. end
  205. end
  206. function FuliController:handle16005()
  207. local vo = SCMD16005.New(true)
  208. local limit_state = {}
  209. for i,v in ipairs(vo.limit_state) do
  210. limit_state[v.id] = v.number
  211. end
  212. vo.limit_state = limit_state
  213. local table = TenbyteToTwobyte(vo.receive_state)
  214. vo.my_receive = table
  215. self.model:SetFuliLevelInfo(vo)
  216. self.model:Fire(FuliConst.UPDATE_FULI_RED_DOT, FuliConst.TAB_ID.LEVEL)
  217. self.model:UpdateFuliLevelActIcon(RoleManager.Instance.mainRoleInfo.level)
  218. end
  219. function FuliController:handle16006()
  220. local vo = SCMD16006.New(true)
  221. PrintTable(vo)
  222. if vo.res == 1 then
  223. Message.show("奖励领取成功~")
  224. -- if vo.no == 1 then
  225. -- self.model:Fire(FuliConst.OPEN_FULI_LIMIT_REWARD_VIEW, vo.no)
  226. -- end
  227. else
  228. ErrorCodeShow(vo.res)
  229. end
  230. end
  231. function FuliController:handle16007()
  232. local vo = SCMD16007.New(true)
  233. self.model:SetFuliDownState(vo.receive_state)
  234. self.model:Fire(FuliConst.UPDATE_FULI_RED_DOT, FuliConst.TAB_ID.DOWNLOAD)
  235. end
  236. function FuliController:handle16008()
  237. local vo = SCMD16008.New(true)
  238. if vo.res == 1 then
  239. Message.show("奖励领取成功~")
  240. else
  241. ErrorCodeShow(vo.res)
  242. end
  243. end
  244. function FuliController:handle16009()
  245. local vo = SCMD16009.New(true)
  246. if vo.res == 1 then
  247. Message.show("奖励领取成功~")
  248. else
  249. ErrorCodeShow(vo.res)
  250. end
  251. end
  252. function FuliController:handle16010()
  253. local vo = SCMD16010.New(true)
  254. if vo.res == 1 then
  255. Message.show("累积签到奖励领取成功~")
  256. else
  257. ErrorCodeShow(vo.res)
  258. end
  259. end
  260. function FuliController:handle16011()
  261. local vo = SCMD16011.New(true)
  262. self.model.fuli_limit_package_info = vo
  263. self.model:Fire(FuliConst.FULI_LIMIT_INFO_UPDATE)
  264. end