源战役客户端
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

415 líneas
15 KiB

hace 4 semanas
  1. require("game.proto.451.Require451")
  2. require("game.supremeVip.SupremeVipModel")
  3. require("game.supremeVip.SupremeVipConst")
  4. require("game.supremeVip.SupremeVipActivateView")
  5. require("game.supremeVip.SupremeVipBaseView")
  6. require("game.supremeVip.SupremeVipDiamondExchangeView")
  7. require("game.supremeVip.SupremeVipMainView")
  8. require("game.supremeVip.SupremeVipShopView")
  9. require("game.supremeVip.SupremeVipTrainDrugExchangeView")
  10. require("game.supremeVip.SupremeVipTabItem")
  11. require("game.supremeVip.SupremeVipBuyView")
  12. require("game.supremeVip.SupremeVipTrainDrugExchangeItem")
  13. require("game.supremeVip.SupremeVipShopItem")
  14. require("game.supremeVip.SupremeVipFindRightView")--特权查看界面
  15. require("game.supremeVip.SupremeVipRightItem")
  16. require("game.supremeVip.SupremeVipSevenLoginItem")
  17. SupremeVipController = SupremeVipController or BaseClass(BaseController, true)
  18. local SupremeVipController = SupremeVipController
  19. SupremeVipController.IsDebug = true
  20. function SupremeVipController:__init()
  21. SupremeVipController.Instance = self
  22. self.model = SupremeVipModel:getInstance()
  23. self.mainVo = RoleManager.Instance.mainRoleInfo
  24. self:AddEvents()
  25. self:RegisterAllProtocal()
  26. end
  27. function SupremeVipController:__delete()
  28. end
  29. function SupremeVipController:RegisterAllProtocal( )
  30. self:RegisterProtocal(45101, "Handle45101")
  31. self:RegisterProtocal(45102, "Handle45102")
  32. self:RegisterProtocal(45103, "Handle45103")
  33. self:RegisterProtocal(45104, "Handle45104")
  34. self:RegisterProtocal(45105, "Handle45105")
  35. self:RegisterProtocal(45106, "Handle45106")
  36. self:RegisterProtocal(45107, "Handle45107")
  37. self:RegisterProtocal(45108, "Handle45108")
  38. self:RegisterProtocal(45109, "Handle45109")
  39. self:RegisterProtocal(45110, "Handle45110")
  40. end
  41. function SupremeVipController:AddEvents()
  42. --请求信息
  43. local function onRequestHandler(...)
  44. local args_list = {...}
  45. if args_list[1] == 45101 then
  46. self:SendFmtToGame(args_list[1])
  47. elseif args_list[1] == 45102 then
  48. self:SendFmtToGame(args_list[1],"c",args_list[2])
  49. elseif args_list[1] == 45103 then
  50. self:SendFmtToGame(args_list[1],"cic",args_list[2],args_list[3],args_list[4])
  51. elseif args_list[1] == 45104 then
  52. self:SendFmtToGame(args_list[1])
  53. elseif args_list[1] == 45105 then
  54. self:SendFmtToGame(args_list[1],"ih",args_list[2],args_list[3])
  55. elseif args_list[1] == 45106 then
  56. self:SendFmtToGame(args_list[1])
  57. elseif args_list[1] == 45107 then
  58. self:SendFmtToGame(args_list[1],"c",args_list[2])
  59. elseif args_list[1] == 45109 then
  60. self:SendFmtToGame(args_list[1])
  61. -- self:TestHandle45109()
  62. elseif args_list[1] == 45110 then
  63. self:SendFmtToGame(args_list[1],"cc",args_list[2],args_list[3])
  64. -- self:TestHandle45110(args_list[2],args_list[3])
  65. else
  66. self:SendFmtToGame(args_list[1])
  67. end
  68. end
  69. self.model:Bind(SupremeVipConst.REQUEST_CCMD_EVENT, onRequestHandler)
  70. local function onGameStart()
  71. local function onDelay()
  72. self:RequestSupremeVipBaseData()
  73. end
  74. setTimeout(onDelay, 2)
  75. end
  76. GlobalEventSystem:Bind(EventName.GAME_START, onGameStart)
  77. -- 满足等级后请求信息
  78. local function onLevelUp(level)
  79. if level == GetModuleOpenLevel(451) then
  80. self:RequestSupremeVipBaseData()
  81. end
  82. end
  83. RoleManager.Instance.mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelUp)
  84. local function chnage_day_func(type)
  85. if type == SettingModel.CHANGE_DAY.HOUR_0 then -- 跨0点
  86. local function delay_method( )
  87. self.model:Fire(SupremeVipConst.REQUEST_CCMD_EVENT,45109)--每日礼包七天登录
  88. end
  89. setTimeout(delay_method, 2)
  90. end
  91. end
  92. GlobalEventSystem:Bind(EventName.CHANE_DAY, chnage_day_func)
  93. --主界面贵族按钮点击事件,判断贵族身份(非贵族,贵族)进入广告页或贵族主界面
  94. local function on_open_supreme_vip_base()
  95. if self.model:IsForeverSupremeVip() then--永久贵族
  96. self.model:Fire(SupremeVipConst.OPEN_SUPREME_VIP_VIEW,1)
  97. else
  98. if self.model:IsMomentSupremeVip() then--一阶贵族
  99. self.model:Fire(SupremeVipConst.OPEN_SUPREME_VIP_VIEW,1)
  100. else--啥都不是
  101. if self.model:GetEndTime() == 0 then--激活过一阶贵族就不能再激活了
  102. self.model:Fire(SupremeVipConst.OPEN_SUPREME_VIP_ACTIVATE_VIEW)
  103. else
  104. self.model:Fire(SupremeVipConst.OPEN_SUPREME_VIP_BUY_VIEW)
  105. end
  106. end
  107. end
  108. end
  109. self.model:Bind(SupremeVipConst.OPEN_SUPREME_VIP_BASE,on_open_supreme_vip_base)
  110. --打开激活贵族界面
  111. local function on_open_supreme_vip_activate_view(index)
  112. if self.supreme_vip_activate_view == nil then
  113. self.supreme_vip_activate_view = SupremeVipActivateView.New()
  114. end
  115. if self.supreme_vip_activate_view:HasOpen() then
  116. self.supreme_vip_activate_view:Close()
  117. else
  118. self.supreme_vip_activate_view:Open(index)
  119. end
  120. end
  121. self.model:Bind(SupremeVipConst.OPEN_SUPREME_VIP_ACTIVATE_VIEW,on_open_supreme_vip_activate_view)
  122. --打开贵族功能界面
  123. local function on_open_supreme_vip_view(index)
  124. if self.supreme_vip_view == nil then
  125. self.supreme_vip_view = SupremeVipBaseView.New()
  126. end
  127. if self.supreme_vip_view:HasOpen() then
  128. self.supreme_vip_view:Close()
  129. else
  130. self.supreme_vip_view:Open(index)
  131. end
  132. end
  133. self.model:Bind(SupremeVipConst.OPEN_SUPREME_VIP_VIEW,on_open_supreme_vip_view)
  134. --打开成为永久贵族界面
  135. local function on_open_supreme_vip_buy_view()
  136. if self.supreme_vip_buy_view == nil then
  137. self.supreme_vip_buy_view = SupremeVipBuyView.New()
  138. end
  139. if self.supreme_vip_buy_view:HasOpen() then
  140. self.supreme_vip_buy_view:Close()
  141. else
  142. self.supreme_vip_buy_view:Open()
  143. end
  144. end
  145. self.model:Bind(SupremeVipConst.OPEN_SUPREME_VIP_BUY_VIEW,on_open_supreme_vip_buy_view)
  146. --打开成为贵族特权查看界面
  147. local function openSupremeVipFindRightView()
  148. if self.SupremeVipFindRightView == nil then
  149. self.SupremeVipFindRightView = SupremeVipFindRightView.New()
  150. end
  151. if self.SupremeVipFindRightView:HasOpen() then
  152. self.SupremeVipFindRightView:Close()
  153. else
  154. self.SupremeVipFindRightView:Open()
  155. end
  156. end
  157. self.model:Bind(SupremeVipConst.OPEN_SUPREME_VIP_FIND_RIGHT_VIEW,openSupremeVipFindRightView)
  158. --传闻跳转判断
  159. local function on_chuanwen_jump_supreme_vip_view()
  160. if self.model.sup_vip_type == 2 then-- 玩家已经是永久贵族时,弹出贵族主界面
  161. self.model:Fire(SupremeVipConst.OPEN_SUPREME_VIP_VIEW,1)
  162. elseif self.model.sup_vip_type == 1 then-- 玩家激活过一阶贵族时,弹出成为永久贵族界面
  163. self.model:Fire(SupremeVipConst.OPEN_SUPREME_VIP_BUY_VIEW)
  164. else-- 玩家未激活V3时,弹出“激活贵族”界面 -- 玩家是V4但没有激活过贵族时,弹出“激活贵族”界面
  165. self.model:Fire(SupremeVipConst.OPEN_SUPREME_VIP_ACTIVATE_VIEW)
  166. end
  167. end
  168. self.model:Bind(SupremeVipConst.CHUANWEN_JUMP_SUPREME_VIP_VIEW,on_chuanwen_jump_supreme_vip_view)
  169. --检测培养丹数量变化
  170. local function on_update_train_drug_num()
  171. self.model:Fire(SupremeVipConst.UPDATE_RED_DOT,SupremeVipConst.RED_DOT_TYPE.TrainDrugExchange)
  172. end
  173. self.model:Bind(SupremeVipConst.UPDATE_TRAIN_DRUG_NUM,on_update_train_drug_num)
  174. --主要的更新红点方法
  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. --外部红点
  190. self.model:Fire(SupremeVipConst.UPDATE_SUPREME_VIP_MAIN_BUTTON_RED)
  191. end
  192. self.model:Bind(SupremeVipConst.UPDATE_RED_DOT,update_red_dot_by_tab_id_func)
  193. local function onChangeJinLockHandler()
  194. self.model:Fire(SupremeVipConst.UPDATE_RED_DOT,SupremeVipConst.RED_DOT_TYPE.DiamondExchange)
  195. end
  196. self.change_lockJin_id = self.mainVo:BindOne("jinLock",onChangeJinLockHandler)
  197. end
  198. --请求贵族的一些基本信息,在登陆后已经激活贵族后请求
  199. function SupremeVipController:RequestSupremeVipBaseData( )
  200. self.model:Fire(SupremeVipConst.REQUEST_CCMD_EVENT,45101)--请求自己的贵族信息
  201. self.model:Fire(SupremeVipConst.REQUEST_CCMD_EVENT,45106)--今日星钻数据
  202. self.model:Fire(SupremeVipConst.REQUEST_CCMD_EVENT,45104)--贵族商城信息
  203. self.model:Fire(SupremeVipConst.REQUEST_CCMD_EVENT,45109)--每日礼包七天登录
  204. end
  205. -- ############ 贵族信息 ############
  206. function SupremeVipController:Handle45101( )
  207. local vo = SCMD45101.New(true)
  208. if vo then
  209. local need_refresh_all_view = false
  210. if vo.sup_vip_type == 2 and vo.sup_vip_type ~= self.model.sup_vip_type and self.model.sup_vip_type ~= 0 then--标识变了,说明是刚刚成为永久贵族,这时要刷新全部界面
  211. lua_soundM:PlayEffect(self, "success",false,LuaSoundManager.SOUND_TYPE.UI)
  212. need_refresh_all_view = true
  213. end
  214. self.model:SetSupremeVipData(vo)
  215. if need_refresh_all_view then
  216. if self.supreme_vip_activate_view and self.supreme_vip_activate_view:HasOpen() then
  217. self.model:Fire(SupremeVipConst.OPEN_SUPREME_VIP_ACTIVATE_VIEW)
  218. end
  219. if self.supreme_vip_buy_view and self.supreme_vip_buy_view:HasOpen() then
  220. self.model:Fire(SupremeVipConst.OPEN_SUPREME_VIP_BUY_VIEW)
  221. end
  222. self.model:Fire(SupremeVipConst.NEED_REFRESH_ALL_VIEW)
  223. end
  224. --刷新贵族信息(成为永久贵族界面刷新充值天数,每日礼包界面刷新贵族状态)
  225. self.model:Fire(SupremeVipConst.REFRESH_SUPREME_VIP_DATA)
  226. self.model:Fire(SupremeVipConst.REQUEST_CCMD_EVENT,45107,1)--剩余礼包兑换次数
  227. self.model:Fire(SupremeVipConst.REQUEST_CCMD_EVENT,45107,2)--剩余彩钻兑换次数
  228. self.model:Fire(SupremeVipConst.REQUEST_CCMD_EVENT,45107,3)--剩余培养丹兑换次数
  229. self.model:Fire(SupremeVipConst.UPDATE_RED_DOT,SupremeVipConst.RED_DOT_TYPE.SevenLogin)
  230. end
  231. end
  232. -- ############ 激活体验贵族 ##############
  233. function SupremeVipController:Handle45102( )
  234. local vo = SCMD45102.New(true)
  235. if vo then
  236. if vo.res == 1 then
  237. if vo.type == 0 then
  238. Message.show("已激活贵族","success")
  239. self.model:Fire(SupremeVipConst.OPEN_SUPREME_VIP_ACTIVATE_VIEW)--把激活界面关闭
  240. self.model:Fire(SupremeVipConst.OPEN_SUPREME_VIP_VIEW,1)--然后打开主界面
  241. self:RequestSupremeVipBaseData()
  242. skill_data = {skill_id = 109101}
  243. FuncOpenController.Instance:ShowSkill(skill_data)
  244. end
  245. self.model:Fire(SupremeVipConst.UPDATE_RED_DOT,SupremeVipConst.RED_DOT_TYPE.SevenLogin)
  246. else
  247. ErrorCodeShow(vo.res)
  248. lua_soundM:PlayEffect(self, "fault",false,LuaSoundManager.SOUND_TYPE.UI)
  249. end
  250. end
  251. end
  252. -- ############ 贵族每日礼包领取&兑换 #############
  253. function SupremeVipController:Handle45103( )
  254. local vo = SCMD45103.New(true)
  255. if vo and vo.res == 1 then
  256. if vo.type == 1 then
  257. local data = {}
  258. data.award = self.model:GetDailyGiftCfg()
  259. data.not_show_anim = true
  260. GlobalEventSystem:Fire(EventName.OPEN_COM_AWARD_RESULT_VIEW,data)
  261. lua_soundM:PlayEffect(self, "award",false,LuaSoundManager.SOUND_TYPE.UI)
  262. elseif vo.type == 2 or vo.type == 3 then
  263. Message.show("兑换成功","award")
  264. end
  265. self.model:Fire(SupremeVipConst.REQUEST_CCMD_EVENT,45107,vo.type)
  266. else
  267. ErrorCodeShow(vo.res)
  268. lua_soundM:PlayEffect(self, "fault",false,LuaSoundManager.SOUND_TYPE.UI)
  269. end
  270. end
  271. -- ############## 贵族商城信息 ##############
  272. function SupremeVipController:Handle45104( )
  273. --商城限购数据在打开商城时候请求
  274. local vo = SCMD45104.New(true)
  275. if vo and vo.res == 1 then
  276. if vo.type == 0 then
  277. self.model:SetSupremeVipShopData(vo)
  278. self.model:Fire(SupremeVipConst.UPDATE_SUPREME_VIP_SHOP_CON)--刷新展示商城
  279. elseif vo.type == 1 then --购买商品时会刷新限购数据,此时只刷新对应id的商品item
  280. self.model:RefreshShopLimitData(vo)
  281. -- if vo.unlock_id ~= self.model.unlock_id then
  282. self.model:Fire(SupremeVipConst.UPDATE_SUPREME_VIP_SHOP_CON)--刷新展示商城
  283. -- else
  284. -- self.model:Fire(SupremeVipConst.UPDATE_SUPREME_VIP_SHOP_ITEM,vo)
  285. -- end
  286. end
  287. self.model:Fire(SupremeVipConst.UPDATE_RED_DOT,SupremeVipConst.RED_DOT_TYPE.Shop)
  288. self.model:Fire(SupremeVipConst.UPDATE_RED_DOT,SupremeVipConst.RED_DOT_TYPE.MoneyLeft)
  289. else
  290. ErrorCodeShow(vo.res)
  291. end
  292. end
  293. -- ############## 贵族商城购买 ##############
  294. function SupremeVipController:Handle45105( )
  295. local vo = SCMD45105.New(true)
  296. if vo then
  297. ShopModel:getInstance():Fire(ShopModel.CLOSE_SHOP_BUY_VIEW)
  298. --购买物品后刷新解锁进度和限购数据,服务端主推45104
  299. if vo.res ~= 1 then
  300. ErrorCodeShow(vo.res)
  301. end
  302. end
  303. end
  304. -- ############## 贵族星钻信息 #############
  305. function SupremeVipController:Handle45106( )
  306. local vo = SCMD45106.New(true)
  307. if vo then
  308. self.model:SetStarDiamondData(vo)
  309. self.model:Fire(SupremeVipConst.REFRESH_STAR_DIAMOND_NUM)--刷新星钻商城界面的星钻数量显示
  310. self.model:Fire(SupremeVipConst.UPDATE_RED_DOT,SupremeVipConst.RED_DOT_TYPE.Shop)
  311. self.model:Fire(SupremeVipConst.UPDATE_RED_DOT,SupremeVipConst.RED_DOT_TYPE.MoneyLeft)
  312. end
  313. end
  314. -- ############## 贵族兑换信息 ##############
  315. function SupremeVipController:Handle45107( )
  316. local vo = SCMD45107.New(true)
  317. if vo then
  318. self.model:SetExchangeRestCounts(vo)
  319. --刷新贵族界面页签上的剩余数量和兑换界面的两个剩余数量
  320. self.model:Fire(SupremeVipConst.REFRESH_EXCHANGE_REST_COUNTS)
  321. self.model:Fire(SupremeVipConst.UPDATE_RED_DOT,SupremeVipConst.RED_DOT_TYPE.DailyGift)
  322. self.model:Fire(SupremeVipConst.UPDATE_RED_DOT,SupremeVipConst.RED_DOT_TYPE.DiamondExchange)
  323. self.model:Fire(SupremeVipConst.UPDATE_RED_DOT,SupremeVipConst.RED_DOT_TYPE.TrainDrugExchange)
  324. end
  325. end
  326. -- ############# 星钻商城红点 ##############
  327. function SupremeVipController:Handle45108( )
  328. local vo = SCMD45108.New(true)
  329. if vo then
  330. --收到后端充值通知时,如果此时复核moneyleft红点,name要把一次性红点重新给出来
  331. local clock_flag = self.model:CheckMoneyLeftRed()
  332. if clock_flag then
  333. self.model.is_first_open_shop = true
  334. end
  335. self.model:Fire(SupremeVipConst.UPDATE_RED_DOT,SupremeVipConst.RED_DOT_TYPE.Shop)
  336. self.model:Fire(SupremeVipConst.UPDATE_RED_DOT,SupremeVipConst.RED_DOT_TYPE.MoneyLeft)
  337. end
  338. end
  339. -- ############# 每日礼包七天登录 ##############
  340. function SupremeVipController:Handle45109( )
  341. local vo = SCMD45109.New(true)
  342. if vo then
  343. self.model:SetSupremeVipSevenLoginData(vo)
  344. self.model:Fire(SupremeVipConst.UPDATE_SUPREME_VIP_SEVEN_LOGIN_VIEW)
  345. self.model:Fire(SupremeVipConst.UPDATE_RED_DOT,SupremeVipConst.RED_DOT_TYPE.DailyGift)
  346. self.model:Fire(SupremeVipConst.UPDATE_RED_DOT,SupremeVipConst.RED_DOT_TYPE.SevenLogin)
  347. end
  348. end
  349. function SupremeVipController:TestHandle45109( )
  350. local vo = {}
  351. vo.day_state = {
  352. [1] = {day_id = 1, reward_state = 1},
  353. [2] = {day_id = 2, reward_state = 2},
  354. [3] = {day_id = 3, reward_state = 2},
  355. [4] = {day_id = 4, reward_state = 1},
  356. [5] = {day_id = 5, reward_state = 0},
  357. }
  358. vo.login_days = 5
  359. self.model:SetSupremeVipSevenLoginData(vo)
  360. self.model:Fire(SupremeVipConst.UPDATE_SUPREME_VIP_SEVEN_LOGIN_VIEW)
  361. end
  362. -- ############# 每日礼包七天登录领奖 ##############
  363. function SupremeVipController:Handle45110( )
  364. local vo = SCMD45110.New(true)
  365. if vo then
  366. if vo.errcode == 1 then
  367. self.model:Fire(SupremeVipConst.REQUEST_CCMD_EVENT,45109)--每日礼包七天登录
  368. else
  369. ErrorCodeShow(vo.errcode)
  370. end
  371. end
  372. end
  373. function SupremeVipController:TestHandle45110(day,type)
  374. end