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

215 líneas
6.8 KiB

hace 4 semanas
  1. --礼包功能
  2. require("game.Gift.GiftModel")
  3. require("game.Gift.GiftNormalView")
  4. require("game.Gift.GiftNormalItem")
  5. require("game.Gift.GiftDiamondView")
  6. require("game.Gift.GiftOptionalView")
  7. require("game.Gift.GiftOptionalItem")
  8. require("game.Gift.GiftShowAllView")
  9. require("game.Gift.VipActiveGiftView")
  10. require("game.Gift.GiftActNormalView")--活动通用奖励界面
  11. require("game.Gift.GiftActNormalItem")--活动通用奖励界面Item
  12. GiftController = GiftController or BaseClass(BaseController)
  13. function GiftController:__init()
  14. GiftController.Instance = self
  15. self.model = GiftModel:getInstance()
  16. self:addAllEvents()
  17. self:registerAllProtocals()
  18. end
  19. function GiftController:addAllEvents()
  20. --打开展示物品界面
  21. local function openShowGoodsView(goods_vo)
  22. self.model.is_show_reward_view = true
  23. if self.show_goods_view == nil then
  24. self.show_goods_view = GiftNormalView.New()
  25. end
  26. if not self.show_goods_view:HasOpen() then
  27. self.show_goods_view:Open(goods_vo)
  28. end
  29. end
  30. self.model:Bind(GiftModel.OPEN_SHOW_GOODS_VIEW, openShowGoodsView)
  31. --打开活动展示物品界面
  32. local function openGiftActNormalView(goods_list,only_read_goods_type_id)
  33. self.model.is_show_reward_view = true
  34. if self.GiftActNormalView == nil then
  35. self.GiftActNormalView = GiftActNormalView.New()
  36. end
  37. if not self.GiftActNormalView:HasOpen() then
  38. self.GiftActNormalView:Open(goods_list,only_read_goods_type_id)
  39. end
  40. end
  41. self.model:Bind(GiftModel.OPEN_SHOW_ACT_GOODS_VIEW, openGiftActNormalView)
  42. --打开普通礼包界面
  43. local function openNormalView(goods_vo)
  44. local kind, list = self.model:getGiftConfig(goods_vo.type_id)
  45. if kind == 0 then
  46. Message.show("所选物品不是礼包")
  47. return
  48. end
  49. if list.max_count > 0 then
  50. local now_times = self.model.gift_use_times[list.gift_id] or 0
  51. if now_times >= list.max_count then
  52. Message.show("次数已达上限")
  53. return
  54. end
  55. end
  56. GlobalEventSystem:Fire(EventName.CLOSE_COM_AWARD_RESULT_VIEW)
  57. self.model.is_show_reward_view = true
  58. if self.gift_normal_view == nil then
  59. self.gift_normal_view = GiftNormalView.New()
  60. end
  61. if not self.gift_normal_view:HasOpen() then
  62. self.gift_normal_view:Open(goods_vo)
  63. end
  64. -- local data = {}
  65. -- data.award = {}
  66. -- data.type_id = goods_vo.type_id
  67. -- for i,v in ipairs(goods_vo.show_goods) do
  68. -- data.award[#data.award+1] = {v.type, v.goodid, v.gnum, is_rare = 0, goodid = v.goodid }
  69. -- end
  70. -- GlobalEventSystem:Fire(EventName.OPEN_COM_AWARD_RESULT_VIEW, data)
  71. end
  72. self.model:Bind(GiftModel.OPEN_NORMAL_VIEW, openNormalView)
  73. --关闭普通礼包界面
  74. local function closeNormalView()
  75. if self.gift_normal_view and self.gift_normal_view:HasOpen() then
  76. self.gift_normal_view:Close()
  77. end
  78. self.gift_normal_view = nil
  79. end
  80. self.model:Bind(GiftModel.CLOSE_NORMAL_VIEW, closeNormalView)
  81. --打开自选礼包界面
  82. local function openOptionalView(goods_vo)
  83. if self.gift_optional_view == nil then
  84. self.gift_optional_view = GiftOptionalView.New()
  85. end
  86. if not self.gift_optional_view:HasOpen() then
  87. self.gift_optional_view:Open(goods_vo)
  88. end
  89. end
  90. self.model:Bind(GiftModel.OPEN_OPTIONAL_VIEW, openOptionalView)
  91. --关闭自选礼包界面
  92. local function closeOptionalView()
  93. if self.gift_optional_view and self.gift_optional_view:HasOpen() then
  94. self.gift_optional_view:Close()
  95. end
  96. self.gift_optional_view = nil
  97. end
  98. self.model:Bind(GiftModel.CLOSE_OPTIONAL_VIEW, closeOptionalView)
  99. --打开彩钻礼包界面
  100. local function openDiamondView(goods_vo)
  101. local kind, list = self.model:getGiftConfig(goods_vo.type_id)
  102. if kind == 0 then
  103. Message.show("所选物品不是礼包")
  104. return
  105. end
  106. if list.max_count > 0 then
  107. local now_times = self.model.gift_use_times[list.gift_id]
  108. if now_times >= list.now_times then
  109. Message.show("已超过使用次数")
  110. return
  111. end
  112. end
  113. if self.gift_diamond_view == nil then
  114. self.gift_diamond_view = GiftDiamondView.New()
  115. end
  116. if not self.gift_diamond_view:HasOpen() then
  117. self.gift_diamond_view:Open(goods_vo)
  118. end
  119. end
  120. self.model:Bind(GiftModel.OPEN_DIAMOND_VIEW, openDiamondView)
  121. --关闭彩钻礼包界面
  122. local function closeDiamondView()
  123. if self.gift_diamond_view and self.gift_diamond_view:HasOpen() then
  124. self.gift_diamond_view:Close()
  125. end
  126. self.gift_diamond_view = nil
  127. end
  128. self.model:Bind(GiftModel.CLOSE_DIAMOND_VIEW, closeDiamondView)
  129. --打开不够天数查看奖励界面
  130. local function openShowAllView(type_id, need_day)
  131. if self.gift_show_all_view == nil then
  132. self.gift_show_all_view = GiftShowAllView.New()
  133. end
  134. if not self.gift_show_all_view:HasOpen() then
  135. self.gift_show_all_view:Open(type_id, need_day)
  136. end
  137. end
  138. self.model:Bind(GiftModel.OPEN_SHOW_ALL_VIEW, openShowAllView)
  139. --关闭不够天数查看奖励界面
  140. local function closeShowAllView()
  141. if self.gift_show_all_view and self.gift_show_all_view:HasOpen() then
  142. self.gift_show_all_view:Close()
  143. end
  144. self.gift_show_all_view = nil
  145. end
  146. self.model:Bind(GiftModel.CLOSE_SHOW_ALL_VIEW, closeShowAllView)
  147. local function onSendCmdFunc( ... )
  148. local args_list = {...}
  149. if args_list[1] == 15085 then --礼包每天使用次数
  150. self:SendFmtToGame(args_list[1], "i", args_list[2])
  151. elseif args_list[1] == 15086 then --领取自选礼包物品内容
  152. self:WriteBegin(args_list[1])
  153. self:WriteFMT("l", args_list[2])
  154. self:WriteFMT("i", args_list[3])
  155. self:WriteFMT("i", args_list[4])
  156. self:WriteFMT("h", #args_list[5])
  157. for i, v in ipairs(args_list[5]) do
  158. self:WriteFMT("c", v.seqno)
  159. self:WriteFMT("h", v.seqnum)
  160. end
  161. self:SendToGame()
  162. end
  163. end
  164. self.model:Bind(GiftModel.PROTO_CCMD_EVENT, onSendCmdFunc)
  165. local function open_vip_gift_view(type_id,goods_id)
  166. if not self.VipActiveGiftView then
  167. self.VipActiveGiftView = VipActiveGiftView.New()
  168. end
  169. self.VipActiveGiftView:Open(type_id,goods_id)
  170. end
  171. GlobalEventSystem:Bind(EventName.OPEN_VIP_GIFT_CODE_VIEW,open_vip_gift_view)
  172. end
  173. function GiftController:registerAllProtocals()
  174. self:RegisterProtocal(15085, "Handler15085")
  175. self:RegisterProtocal(15086, "Handler15086")
  176. end
  177. --礼包每天使用次数
  178. function GiftController:Handler15085()
  179. local vo = SCMD15085.New(true)
  180. --print("=============>>> YiRan:GiftController [start:174] vo Handler15085------------------------------------------")
  181. --PrintTable(vo)
  182. --print("=============>>> YiRan:GiftController [end] ------------------------------------------")
  183. self.model:saveGiftUseTimes(vo)
  184. end
  185. --领取自选礼包物品内容
  186. function GiftController:Handler15086()
  187. local vo = SCMD15086.New(true)
  188. ---print("=============>>> YiRan:GiftController [start:180] vo15086 ------------------------------------------")
  189. --PrintTable(vo)
  190. --print("=============>>> YiRan:GiftController [end] ------------------------------------------")
  191. if vo.code == 1 then
  192. Message.show("领取成功")
  193. GiftModel:getInstance():Fire(GiftModel.CLOSE_OPTIONAL_VIEW)
  194. else
  195. ErrorCodeShow(vo.code)
  196. end
  197. end