源战役客户端
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 
 

217 wiersze
7.1 KiB

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