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

217 lines
7.1 KiB

  1. require("game.itemUse.ItemUseModel")
  2. require("game.itemUse.ItemUseView")
  3. require("game.itemUse.SpecialEquipExpiredView")
  4. ItemUseController = ItemUseController or BaseClass(BaseController)
  5. function ItemUseController:__init()
  6. ItemUseController.Instance = self
  7. self.model = ItemUseModel:getInstance()
  8. self:EnableCheckoutClear()
  9. self:InitEvent()
  10. end
  11. function ItemUseController:RemoveCheckOutEvent()
  12. if self.check_use_timer then
  13. GlobalTimerQuest:CancelQuest(self.check_use_timer)
  14. self.check_use_timer = nil
  15. end
  16. end
  17. function ItemUseController:InitEvent()
  18. --游戏登陆加载配置
  19. local function game_start_func()
  20. self.model:ClearData()
  21. end
  22. GlobalEventSystem:Bind(EventName.GAME_START, game_start_func)
  23. -- local onHideUseView = function ()
  24. -- self.model:HideItemUseView()
  25. -- end
  26. -- GlobalEventSystem:Bind(SceneEventType.OPEN_SCENE_LOAD_VIEW,onHideUseView)
  27. local function onReOpenItemUseView()
  28. if Scene.Instance:IsSceneProloadFinish() then
  29. self:TryOpenItemUseView()
  30. end
  31. end
  32. GlobalEventSystem:Bind(EventName.REOPEN_ITEM_USE_VIEW,onReOpenItemUseView)
  33. --打开道具使用界面
  34. local function onItemUseView(vo,forceAutoSec,is_force_show, open_new)
  35. -- if OffLineModel:getInstance().showingTipView or GiftModel:getInstance().is_show_reward_view or SceneManager:getInstance():IsOnButterflyScene() then
  36. -- return
  37. -- end
  38. if not GoodsModel:getInstance():CheckCanFlyGood() and not is_force_show then--检查飞道具图标的条件
  39. return
  40. end
  41. if EmpowerModel:GetInstance():GetIsShowingGameView() and not EmpowerModel:GetInstance():GetIsShowingShopView() then
  42. return
  43. end
  44. -- print('Cat:ItemUseController.lua[86] data', self.ItemUseView1 == nil, self.ItemUseView2 == nil)
  45. -- print(debug.traceback())
  46. if not open_new then
  47. if self.ItemUseView == nil then
  48. self.ItemUseView = ItemUseView.New()
  49. end
  50. self.ItemUseView:Open(vo,forceAutoSec)
  51. else
  52. local view_siblingindex = false
  53. if self.ItemUseView == nil then
  54. self.ItemUseView = ItemUseView.New()
  55. else
  56. self.ItemUseView_old = self.ItemUseView
  57. self.ItemUseView = ItemUseView.New()
  58. end
  59. self.ItemUseView:Open(vo,forceAutoSec)
  60. end
  61. -- print('Cat:ItemUseController.lua[86] data', self.ItemUseView == nil)
  62. -- if self.ItemUseView == nil then
  63. -- self.ItemUseView = ItemUseView.New()
  64. -- end
  65. -- self.ItemUseView:Open(vo,forceAutoSec)
  66. end
  67. GlobalEventSystem:Bind(EventName.OPEN_ITEM_USE_VIEW,onItemUseView)
  68. --道具添加到第一个便捷使用
  69. local function OnFirstQuickUseGoods(type_id)
  70. local goods_num,_,goods_vo_list = GoodsModel.getInstance():GetTypeGoodsNum(type_id)
  71. if goods_num <= 0 or not goods_vo_list or #goods_vo_list <= 0 then return end
  72. local goods_vo = goods_vo_list[1]
  73. self.model:AddForceUseTip(goods_vo)
  74. if self.ItemUseView and self.ItemUseView:HasOpen() then
  75. GlobalEventSystem:Fire(EventName.OPEN_ITEM_USE_VIEW,goods_vo, nil, true)
  76. else
  77. self.model:ShowItemUseView()
  78. end
  79. end
  80. GlobalEventSystem:Bind(EventName.FIRST_QUICK_USE_GOODS, OnFirstQuickUseGoods)
  81. --打开d道具使用界面
  82. local function onCloseItemUseView()
  83. if self.ItemUseView then
  84. self.ItemUseView:Close()
  85. end
  86. end
  87. GlobalEventSystem:Bind(EventName.CLOSE_ITEM_USE_VIEW,onCloseItemUseView)
  88. --是否强制跳过判断
  89. local function onChangeBagListHandler(is_force)
  90. if Scene.Instance:IsSceneProloadFinish() --[[and (SceneManager.Instance:IsMainCityorYieldScene() or SceneManager.Instance:IsExpScene())--]] then
  91. if self.ItemUseView and self.ItemUseView:HasOpen() then
  92. --如果这个界面是打开的,而且背包还有这个东西,则不刷新界面
  93. -- local type_id = self.ItemUseView:GetTypeId()
  94. local goods_id = self.ItemUseView:GetGoodsId()
  95. if self.model:ContainGoodsId(goods_id) then
  96. -- print('Cat:ItemUseController.lua[75]return goods_id', goods_id)
  97. return
  98. end
  99. end
  100. local vo, is_equip = self.model:GetItemShowVo()
  101. print('Cat:ItemUseController.lua[80] vo', vo,is_open_luckdraw)
  102. if vo then
  103. --新手临时穿戴第一件装备
  104. if is_equip and RoleManager:getInstance():GetMainRoleVo().level <= 3 then
  105. EquipModel:getInstance():WearEquip(vo, true )
  106. else
  107. GlobalEventSystem:Fire(EventName.OPEN_ITEM_USE_VIEW,vo, nil, is_force)
  108. end
  109. else
  110. if self.ItemUseView then
  111. self.ItemUseView:Close()
  112. end
  113. end
  114. end
  115. end
  116. GoodsModel:getInstance():Bind(GoodsModel.CHANGE_BAGLIST,onChangeBagListHandler)
  117. GoodsModel:getInstance():Bind(GoodsModel.CHANGE_EQUIPLIST,onChangeBagListHandler)
  118. OperateActivityModel:getInstance():Bind(OperateActivityModel.QUIK_USE,onChangeBagListHandler)
  119. local function onReShowGoodUseEvent()
  120. self.model:CheckReShowGood()
  121. end
  122. GoodsModel:getInstance():Bind(GoodsModel.RESHOW_GOODS_USE_VIEW_BY_FASHION,onReShowGoodUseEvent)
  123. local function scene_start_func()
  124. if self.delay_timer == nil then
  125. local delay_callback = function()
  126. onChangeBagListHandler()
  127. self.delay_timer = nil
  128. end
  129. self.delay_timer = GlobalTimerQuest:AddDelayQuest(delay_callback, 0.5)
  130. end
  131. end
  132. GlobalEventSystem:Bind(EventName.SCENE_LOAD_VIEW_COMPLETE,scene_start_func)
  133. local function onOpenExpiredView(flag, goods_id,type)
  134. if flag then
  135. if self.SpecialEquipExpiredView == nil then
  136. self.SpecialEquipExpiredView = SpecialEquipExpiredView.New()
  137. end
  138. self.SpecialEquipExpiredView:Open(goods_id,type)
  139. else
  140. if self.SpecialEquipExpiredView and self.SpecialEquipExpiredView:HasOpen() then
  141. self.SpecialEquipExpiredView:Close()
  142. end
  143. end
  144. end
  145. GlobalEventSystem:Bind(EventName.OPEN_EXPIRED_VIEW, onOpenExpiredView)
  146. local function onCheckItemUseListOtherEquipCanWearEvent()
  147. local function delay_method( )
  148. self.model:CheckItemUseListOtherEquipCanWear()
  149. end
  150. setTimeout(delay_method, 0.5) --延迟检测物品使用tips,不然可能新的装备还没有穿上
  151. end
  152. GlobalEventSystem:Bind(EventName.CHECK_ITEM_USE_EQUIP_CAN_SHOW, onCheckItemUseListOtherEquipCanWearEvent)
  153. local function onDelayShowEquipToolEvent(vo)
  154. local equip_vo = vo
  155. if equip_vo then
  156. local function delay_method( )
  157. local stren_data = EquipModel:getInstance():GetBagEquipAwaraItemInfo(equip_vo)
  158. stren_data.key_value = "show_bag_view"
  159. UIToolTipMgr:getInstance():AppendEquipTips(equip_vo.type_id, x, y,stren_data and stren_data.goods_vo,nil,nil,nil,stren_data and stren_data.key_value)
  160. end
  161. setTimeout(delay_method, 0.5) --延迟检测物品使用tips,不然可能新的装备还没有穿上
  162. end
  163. end
  164. GlobalEventSystem:Bind(EventName.ITEM_USE_DELAY_OPEN_EQUIP_TOOL, onDelayShowEquipToolEvent)
  165. -- -- 隐藏或者显示 物品使用界面 1 为隐藏 2为显示
  166. -- local function onShowOrHideItemUseView(handle)
  167. -- if self.ItemUseView and self.ItemUseView:HasOpen() then
  168. -- if handle == 1 then
  169. -- self.ItemUseView:Hide()
  170. -- elseif handle == 2 then
  171. -- self.ItemUseView:Show()
  172. -- end
  173. -- end
  174. -- end
  175. -- GlobalEventSystem:Bind(EventName.SHOW_OR_HIDE_ITEMUSEVIEW, onShowOrHideItemUseView)
  176. end
  177. -- 切换场景判断是否显示界面
  178. function ItemUseController:TryOpenItemUseView()
  179. local vo = self.model:GetItemShowVo()
  180. if vo then
  181. GlobalEventSystem:Fire(EventName.OPEN_ITEM_USE_VIEW,vo)
  182. end
  183. end