require("game.itemUse.ItemUseModel") require("game.itemUse.ItemUseView") require("game.itemUse.SpecialEquipExpiredView") ItemUseController = ItemUseController or BaseClass(BaseController) function ItemUseController:__init() ItemUseController.Instance = self self.model = ItemUseModel:getInstance() self:EnableCheckoutClear() self:InitEvent() end function ItemUseController:RemoveCheckOutEvent() if self.check_use_timer then GlobalTimerQuest:CancelQuest(self.check_use_timer) self.check_use_timer = nil end end function ItemUseController:InitEvent() --游戏登陆加载配置 local function game_start_func() self.model:ClearData() end GlobalEventSystem:Bind(EventName.GAME_START, game_start_func) -- local onHideUseView = function () -- self.model:HideItemUseView() -- end -- GlobalEventSystem:Bind(SceneEventType.OPEN_SCENE_LOAD_VIEW,onHideUseView) local function onReOpenItemUseView() if Scene.Instance:IsSceneProloadFinish() then self:TryOpenItemUseView() end end GlobalEventSystem:Bind(EventName.REOPEN_ITEM_USE_VIEW,onReOpenItemUseView) --打开道具使用界面 local function onItemUseView(vo,forceAutoSec,is_force_show, open_new) -- if OffLineModel:getInstance().showingTipView or GiftModel:getInstance().is_show_reward_view or SceneManager:getInstance():IsOnButterflyScene() then -- return -- end if not GoodsModel:getInstance():CheckCanFlyGood() and not is_force_show then--检查飞道具图标的条件 return end if EmpowerModel:GetInstance():GetIsShowingGameView() and not EmpowerModel:GetInstance():GetIsShowingShopView() then return end -- print('Cat:ItemUseController.lua[86] data', self.ItemUseView1 == nil, self.ItemUseView2 == nil) -- print(debug.traceback()) if not open_new then if self.ItemUseView == nil then self.ItemUseView = ItemUseView.New() end self.ItemUseView:Open(vo,forceAutoSec) else local view_siblingindex = false if self.ItemUseView == nil then self.ItemUseView = ItemUseView.New() else self.ItemUseView_old = self.ItemUseView self.ItemUseView = ItemUseView.New() end self.ItemUseView:Open(vo,forceAutoSec) end -- print('Cat:ItemUseController.lua[86] data', self.ItemUseView == nil) -- if self.ItemUseView == nil then -- self.ItemUseView = ItemUseView.New() -- end -- self.ItemUseView:Open(vo,forceAutoSec) end GlobalEventSystem:Bind(EventName.OPEN_ITEM_USE_VIEW,onItemUseView) --道具添加到第一个便捷使用 local function OnFirstQuickUseGoods(type_id) local goods_num,_,goods_vo_list = GoodsModel.getInstance():GetTypeGoodsNum(type_id) if goods_num <= 0 or not goods_vo_list or #goods_vo_list <= 0 then return end local goods_vo = goods_vo_list[1] self.model:AddForceUseTip(goods_vo) if self.ItemUseView and self.ItemUseView:HasOpen() then GlobalEventSystem:Fire(EventName.OPEN_ITEM_USE_VIEW,goods_vo, nil, true) else self.model:ShowItemUseView() end end GlobalEventSystem:Bind(EventName.FIRST_QUICK_USE_GOODS, OnFirstQuickUseGoods) --打开d道具使用界面 local function onCloseItemUseView() if self.ItemUseView then self.ItemUseView:Close() end end GlobalEventSystem:Bind(EventName.CLOSE_ITEM_USE_VIEW,onCloseItemUseView) --是否强制跳过判断 local function onChangeBagListHandler(is_force) if Scene.Instance:IsSceneProloadFinish() --[[and (SceneManager.Instance:IsMainCityorYieldScene() or SceneManager.Instance:IsExpScene())--]] then if self.ItemUseView and self.ItemUseView:HasOpen() then --如果这个界面是打开的,而且背包还有这个东西,则不刷新界面 -- local type_id = self.ItemUseView:GetTypeId() local goods_id = self.ItemUseView:GetGoodsId() if self.model:ContainGoodsId(goods_id) then -- print('Cat:ItemUseController.lua[75]return goods_id', goods_id) return end end local vo, is_equip = self.model:GetItemShowVo() print('Cat:ItemUseController.lua[80] vo', vo,is_open_luckdraw) if vo then --新手临时穿戴第一件装备 if is_equip and RoleManager:getInstance():GetMainRoleVo().level <= 3 then EquipModel:getInstance():WearEquip(vo, true ) else GlobalEventSystem:Fire(EventName.OPEN_ITEM_USE_VIEW,vo, nil, is_force) end else if self.ItemUseView then self.ItemUseView:Close() end end end end GoodsModel:getInstance():Bind(GoodsModel.CHANGE_BAGLIST,onChangeBagListHandler) GoodsModel:getInstance():Bind(GoodsModel.CHANGE_EQUIPLIST,onChangeBagListHandler) OperateActivityModel:getInstance():Bind(OperateActivityModel.QUIK_USE,onChangeBagListHandler) local function onReShowGoodUseEvent() self.model:CheckReShowGood() end GoodsModel:getInstance():Bind(GoodsModel.RESHOW_GOODS_USE_VIEW_BY_FASHION,onReShowGoodUseEvent) local function scene_start_func() if self.delay_timer == nil then local delay_callback = function() onChangeBagListHandler() self.delay_timer = nil end self.delay_timer = GlobalTimerQuest:AddDelayQuest(delay_callback, 0.5) end end GlobalEventSystem:Bind(EventName.SCENE_LOAD_VIEW_COMPLETE,scene_start_func) local function onOpenExpiredView(flag, goods_id,type) if flag then if self.SpecialEquipExpiredView == nil then self.SpecialEquipExpiredView = SpecialEquipExpiredView.New() end self.SpecialEquipExpiredView:Open(goods_id,type) else if self.SpecialEquipExpiredView and self.SpecialEquipExpiredView:HasOpen() then self.SpecialEquipExpiredView:Close() end end end GlobalEventSystem:Bind(EventName.OPEN_EXPIRED_VIEW, onOpenExpiredView) local function onCheckItemUseListOtherEquipCanWearEvent() local function delay_method( ) self.model:CheckItemUseListOtherEquipCanWear() end setTimeout(delay_method, 0.5) --延迟检测物品使用tips,不然可能新的装备还没有穿上 end GlobalEventSystem:Bind(EventName.CHECK_ITEM_USE_EQUIP_CAN_SHOW, onCheckItemUseListOtherEquipCanWearEvent) local function onDelayShowEquipToolEvent(vo) local equip_vo = vo if equip_vo then local function delay_method( ) local stren_data = EquipModel:getInstance():GetBagEquipAwaraItemInfo(equip_vo) stren_data.key_value = "show_bag_view" 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) end setTimeout(delay_method, 0.5) --延迟检测物品使用tips,不然可能新的装备还没有穿上 end end GlobalEventSystem:Bind(EventName.ITEM_USE_DELAY_OPEN_EQUIP_TOOL, onDelayShowEquipToolEvent) -- -- 隐藏或者显示 物品使用界面 1 为隐藏 2为显示 -- local function onShowOrHideItemUseView(handle) -- if self.ItemUseView and self.ItemUseView:HasOpen() then -- if handle == 1 then -- self.ItemUseView:Hide() -- elseif handle == 2 then -- self.ItemUseView:Show() -- end -- end -- end -- GlobalEventSystem:Bind(EventName.SHOW_OR_HIDE_ITEMUSEVIEW, onShowOrHideItemUseView) end -- 切换场景判断是否显示界面 function ItemUseController:TryOpenItemUseView() local vo = self.model:GetItemShowVo() if vo then GlobalEventSystem:Fire(EventName.OPEN_ITEM_USE_VIEW,vo) end end