|
|
|
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
|