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

284 lines
10 KiB

  1. --[[
  2. :
  3. --]]
  4. local require = require
  5. require("game.proto.151.Require151")
  6. require("game.composeNew.views.ComposeBaseView")--合成主界面
  7. require("game.composeNew.views.ComposeGuardView")--合成子界面(守护/饰品/宝石)
  8. require("game.composeNew.views.ComposeAwardBoxView")--合成子界面(宝箱/其他)
  9. require("game.composeNew.views.ComposeEquipView")--合成子界面(装备)
  10. require("game.composeNew.views.ComposeGuardTabItem")--合成子界面页签
  11. require("game.composeNew.views.ComposeGuardShopItem")--合成子界面商城快捷购买item
  12. require("game.composeNew.views.ComposeGuardCostItem")--合成子界面材料消耗item
  13. require("game.composeNew.views.ComposeGuardAttrItem")--合成界面属性item
  14. require("game.composeNew.views.ComposeGuardPriceItem")--合成界面价格item
  15. require("game.composeNew.views.ComposeSelectGoodsView")--合成子界面选择道具界面
  16. require("game.composeNew.views.ComposeSelectGoodsTabItem")--合成子界面选择道具界面页签
  17. require("game.composeNew.views.ComposeSelectGoodsItem")--合成子界面选择道具item
  18. require("game.composeNew.views.ComposeSuccessView")--合成成功界面
  19. require("game.composeNew.views.ComposeUpModelView")--守护合成模型展示
  20. require("game.composeNew.views.ComposeReqAwardTipView")--合成消耗提示界面
  21. require("game.composeNew.views.ComposeEquipSpliteView")--橙装合成分解界面
  22. require("game.composeNew.views.ComposeEquipAttrItem")--装备合成界面属性item
  23. require("game.composeNew.ComposeEvent")
  24. require("game.composeNew.ComposeModel")
  25. ComposeController = ComposeController or BaseClass(BaseController)
  26. function ComposeController:__init()
  27. ComposeController.Instance = self
  28. self.model = ComposeModel:getInstance()
  29. self:EnableCheckoutClear()
  30. self:RegisterAllProtocals()
  31. self:InitEvent()
  32. end
  33. function ComposeController:RemoveCheckOutEvent()
  34. self.model:Clear()
  35. end
  36. function ComposeController:RegisterAllProtocals()
  37. self:RegisterProtocal(15101,"handler15101")--物品合成
  38. end
  39. function ComposeController:InitEvent()
  40. --打开合成界面
  41. local function open_func(tab_index,speaciel_data)
  42. if RoleManager.Instance.mainRoleInfo.level < Config.Moduleid[151].open_lv then
  43. Message.show("功能暂未开启","fault")
  44. return
  45. end
  46. tab_index = tonumber(tab_index)
  47. if self.ComposeBaseView == nil then
  48. self.ComposeBaseView = ComposeBaseView.New()
  49. end
  50. if not self.ComposeBaseView:HasOpen() then
  51. self.ComposeBaseView:Open(tab_index, speaciel_data)
  52. end
  53. end
  54. GlobalEventSystem:Bind(EventName.OPEN_COMPOSE_VIEW, open_func)
  55. --打开刻印选择界面
  56. local function openComposeUpDraconicChooseView(data)
  57. if self.ComposeUpDraconicChooseView == nil then
  58. self.ComposeUpDraconicChooseView = ComposeUpDraconicChooseView.New()
  59. end
  60. if self.ComposeUpDraconicChooseView:HasOpen() then
  61. -- self.ComposeUpDraconicChooseView:UpdateView(data)
  62. else
  63. self.ComposeUpDraconicChooseView:Open(data)
  64. end
  65. end
  66. self.model:Bind(ComposeEvent.OPEN_COMPOSE_DRACONIC_CHOOSE_VIEW, openComposeUpDraconicChooseView)
  67. --打开守护模型展示界面
  68. local function openComposeUpModelView(goods_id)
  69. print("huangcong:ComposeController [start:84] :", goods_id)
  70. if self.ComposeUpModelView == nil then
  71. self.ComposeUpModelView = ComposeUpModelView.New()
  72. end
  73. if self.ComposeUpModelView:HasOpen() then
  74. -- self.ComposeUpModelView:UpdateView(goods_id)
  75. else
  76. self.ComposeUpModelView:Open(goods_id)
  77. end
  78. end
  79. self.model:Bind(ComposeEvent.OPEN_COMPOSE_MODEL_VIEW, openComposeUpModelView)
  80. --打开合成装备选择界面
  81. local function openComposeSelectGoodsView(special_data,classify_id,need_click_bg_close)
  82. print("huangcong:ComposeController [start:84] :", special_data,classify_id)
  83. if self.ComposeSelectGoodsView == nil then
  84. self.ComposeSelectGoodsView = ComposeSelectGoodsView.New()
  85. end
  86. if self.ComposeSelectGoodsView:HasOpen() then
  87. -- self.ComposeSelectGoodsView:UpdateView(goods_id)
  88. else
  89. self.ComposeSelectGoodsView:Open(special_data,classify_id,need_click_bg_close)
  90. end
  91. end
  92. self.model:Bind(ComposeEvent.OPEN_COMPOSE_SELECT_GOODS_VIEW, openComposeSelectGoodsView)
  93. --打开合成装备选择界面
  94. local function openComposeSuccessView(data)
  95. print("huangcong:ComposeController [start:126] :", data)
  96. if self.ComposeSuccessView == nil then
  97. self.ComposeSuccessView = ComposeSuccessView.New()
  98. end
  99. if self.ComposeSuccessView:HasOpen() then
  100. -- self.ComposeSuccessView:UpdateView(goods_id)
  101. else
  102. self.ComposeSuccessView:Open(data)
  103. end
  104. end
  105. self.model:Bind(ComposeEvent.OPEN_COMPOSE_SUCCESS_VIEW, openComposeSuccessView)
  106. --打开合成消耗界面
  107. local function openComposeReqAwardTipView(data)
  108. print("huangcong:ComposeController [start:126] :", data)
  109. if self.ComposeReqAwardTipView == nil then
  110. self.ComposeReqAwardTipView = ComposeReqAwardTipView.New()
  111. end
  112. if self.ComposeReqAwardTipView:HasOpen() then
  113. -- self.ComposeReqAwardTipView:UpdateView(goods_id)
  114. else
  115. self.ComposeReqAwardTipView:Open(data)
  116. end
  117. end
  118. self.model:Bind(ComposeEvent.OPEN_COMPOSE_COST_AWARD_TIP_VIEW, openComposeReqAwardTipView)
  119. --打开橙装合成分解界面
  120. local function openComposeEquipSpliteView()
  121. if self.ComposeEquipSpliteView == nil then
  122. self.ComposeEquipSpliteView = ComposeEquipSpliteView.New()
  123. end
  124. if self.ComposeEquipSpliteView:HasOpen() then
  125. -- self.ComposeEquipSpliteView:UpdateView(goods_id)
  126. else
  127. self.ComposeEquipSpliteView:Open()
  128. end
  129. end
  130. self.model:Bind(ComposeEvent.OPEN_COMPOSE_EQUIP_SPLITE_VIEW, openComposeEquipSpliteView)
  131. local function compose_func(data)
  132. if not data or data.times <= 0 then
  133. Message.show("合成次数为0!","fault")
  134. return
  135. end
  136. local list = data.list or {}
  137. local auto_buy_list = data.auto_buy_list or {}
  138. self:WriteBegin(15101)
  139. self:WriteFMT("i", data.rule_id)
  140. self:WriteFMT("l", data.main_goods_id)
  141. self:WriteFMT("h", data.main_goods_location)
  142. self:WriteFMT("h", #list)
  143. for i, v in ipairs(list) do
  144. self:WriteFMT("l", v[1])
  145. self:WriteFMT("i", v[2])
  146. self:WriteFMT("h", v[3])
  147. end
  148. self:WriteFMT("h", data.times)
  149. self:WriteFMT("h", #auto_buy_list)
  150. for i, v in ipairs(auto_buy_list) do
  151. self:WriteFMT("i", v[1])
  152. self:WriteFMT("i", v[2])
  153. end
  154. self:SendToGame()
  155. end
  156. self.model:Bind(ComposeEvent.REQUEST_COMPOSE, compose_func)
  157. local function onGameStart ()
  158. -- self.model:GameStartInit()
  159. end
  160. GlobalEventSystem:Bind(EventName.GAME_START,onGameStart)
  161. --升级
  162. local function onLevelUp(level)
  163. if level == Config.Modulesub["151@1"].open_lv then--守护
  164. ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.Guard)--守护
  165. elseif level == Config.Modulesub["151@2"].open_lv then--饰品
  166. ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.Ornaments)
  167. elseif level == Config.Modulesub["151@3"].open_lv then--刻印
  168. ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.Draconic)
  169. elseif level == Config.Modulesub["151@4"].open_lv then--宝石
  170. ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.Gemstone)
  171. elseif level == Config.Modulesub["151@6"].open_lv then--宝箱
  172. ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.AwardBox)
  173. elseif level == Config.Modulesub["151@7"].open_lv then--其他
  174. ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.Other)
  175. end
  176. end
  177. RoleManager.Instance.mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelUp)
  178. local function onChangeBagListHandler()
  179. if self._use_delete_method then return end
  180. if GetModuleIsOpen(151,1) then
  181. self:OnGuardUpdate()
  182. end
  183. if GetModuleIsOpen(151,6) then
  184. self:OnAwardBoxUpdate()
  185. end
  186. if GetModuleIsOpen(151,7) then
  187. self:OnOtherUpdate()
  188. end
  189. if GetModuleIsOpen(151,8) then
  190. self:OnEquipUpdate()
  191. end
  192. end
  193. GoodsModel:getInstance():Bind(GoodsModel.CHANGE_BAGLIST,onChangeBagListHandler)
  194. end
  195. function ComposeController:OnGuardUpdate( )
  196. ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.Guard)--守护
  197. end
  198. function ComposeController:OnAwardBoxUpdate( )
  199. ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.AwardBox)--宝箱
  200. end
  201. function ComposeController:OnOtherUpdate( )
  202. ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.Other)--其他
  203. end
  204. function ComposeController:OnEquipUpdate( )
  205. ComposeModel:getInstance():IsNeedRed(ComposeModel.MainTab.Equip)--装备
  206. end
  207. -- ########### 物品合成/升星 ##############
  208. -- protocol=15101
  209. -- {
  210. -- c2s{
  211. -- rule_id:int32 // 规则id
  212. -- main_goods_id:int64 // 原物品id,普通合成为0
  213. -- main_goods_location:int16 // 物品背包位置 main_goods_id > 0 有效
  214. -- cost_list:array{ // 材料
  215. -- goods_id :int64 // 物品id
  216. -- type_id :int32 // 物品类型Id
  217. -- goods_num:int16 // 物品数量
  218. -- }
  219. -- times :int16 // 合成次数(合成有效)
  220. -- auto_buy_list :array{ // 商城自动购买列表
  221. -- shop_id :int32
  222. -- shop_num :int32
  223. -- }
  224. -- }
  225. -- s2c{
  226. -- code :int32 // 错误码 1成功/2失败/其他
  227. -- compose_type_id :int32 // 最终合成物品id
  228. -- compose_type_num :int32 // 最终合成物品id数量
  229. -- }
  230. -- }
  231. function ComposeController:handler15101()
  232. local scmd = SCMD15101.New(true)
  233. if scmd then
  234. if scmd.code == 1 then
  235. Message.show("合成成功","success")
  236. self.model:Fire(ComposeEvent.COMPOSE_SUCCESS)
  237. EquipModel:getInstance():Fire(EquipModel.PLAY_GEMSTONE_EFFECT)
  238. -- local equip_cfg = EquipModel:getInstance():GetEquipmentCfg(scmd.compose_type_id)
  239. -- if equip_cfg and equip_cfg.series == 99 then
  240. -- ComposeModel:getInstance():Fire(ComposeEvent.OPEN_COMPOSE_MODEL_VIEW, scmd.compose_type_id)
  241. -- else
  242. local data = {goods_id = scmd.compose_type_id,goods_num = scmd.compose_type_num}
  243. self.model:Fire(ComposeEvent.OPEN_COMPOSE_SUCCESS_VIEW,data)
  244. -- end
  245. elseif scmd.code == 2 then
  246. Message.show("很可惜,合成失败了。","fault")
  247. self.model:Fire(ComposeEvent.COMPOSE_SUCCESS)
  248. else
  249. ErrorCodeShow(scmd.code)
  250. end
  251. end
  252. end