ItemUseModel = ItemUseModel or BaseClass(BaseModel)
|
|
ItemUseModel.IgnoreProduceType =
|
|
{
|
|
[274] = "GoodsShelvesDwon", --市场下架
|
|
[350] = "GoodsTransfer", -- 背包移动
|
|
}
|
|
|
|
|
|
function ItemUseModel:__init()
|
|
ItemUseModel.Instance = self
|
|
self.goods_dic = {} --获得的物品
|
|
self.hide_item_view = false
|
|
self.login_use_handle = false
|
|
self.is_delay_show = false
|
|
end
|
|
|
|
function ItemUseModel:getInstance()
|
|
if ItemUseModel.Instance == nil then
|
|
ItemUseModel.New()
|
|
end
|
|
return ItemUseModel.Instance
|
|
end
|
|
|
|
--清除缓存数据
|
|
function ItemUseModel:ClearData()
|
|
self.goods_dic = {} --获得的物品
|
|
self.fashion_add_goods = {} --时装类道具增加数组
|
|
self.hide_item_view = false
|
|
self.login_use_handle = false
|
|
end
|
|
|
|
--针对 15017 协议
|
|
function ItemUseModel:UpdateBagGoodsDic(vo, produce_type,add_wear_horse)
|
|
--某些产出类型,就不处理便捷弹窗
|
|
if self:IsIgnoreItemUseTip(produce_type) then return end
|
|
|
|
local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(vo.type_id)
|
|
local lv = RoleManager.Instance.mainRoleInfo.level
|
|
if not basic then
|
|
return
|
|
end
|
|
|
|
--装备,没有激活的时装,配置为可使用的物品,都弹使用框
|
|
local bag_goods_dic = GoodsModel:getInstance():GetBagGoodsDic()
|
|
local goodsVo = bag_goods_dic[vo.goods_id]
|
|
local copy_vo = goodsVo
|
|
if not copy_vo then
|
|
copy_vo = DeepCopy(vo)
|
|
GoodsModel:getInstance():SetBaseInfo(copy_vo)
|
|
end
|
|
if GoodsModel:getInstance():IsGoodsNeedShowUseTipOnGainGoods(basic,copy_vo, vo) then
|
|
if goodsVo then
|
|
local exist_num = goodsVo.goods_num
|
|
local last_num = vo.goods_num
|
|
local curr_vo = self.goods_dic[vo.goods_id]
|
|
if add_wear_horse then --放入仓库
|
|
if curr_vo then
|
|
curr_vo.goods_num = curr_vo.goods_num - last_num
|
|
if curr_vo.goods_num <= 0 then
|
|
self.goods_dic[vo.goods_id] = nil
|
|
end
|
|
end
|
|
elseif exist_num > last_num then --说明是减少
|
|
if curr_vo then
|
|
curr_vo.goods_num = curr_vo.goods_num - (exist_num - last_num)
|
|
if curr_vo.goods_num <= 0 then
|
|
self.goods_dic[vo.goods_id] = nil
|
|
end
|
|
end
|
|
elseif exist_num < last_num then --说明是增加
|
|
if curr_vo then
|
|
curr_vo.goods_num = curr_vo.goods_num + (last_num - exist_num)
|
|
else
|
|
self.goods_dic[vo.goods_id] = copy_vo
|
|
end
|
|
else
|
|
--道具变更,并且原来没出现在便捷使用里
|
|
if vo.goods_num > 0 and not self.goods_dic[vo.goods_id] then
|
|
self.goods_dic[vo.goods_id] = copy_vo
|
|
end
|
|
end
|
|
else
|
|
--道具使用完
|
|
if vo.goods_num == 0 then
|
|
self.goods_dic[vo.goods_id] = nil
|
|
|
|
--道具添加的时候
|
|
elseif vo.goods_num > 0 and not self.goods_dic[vo.goods_id] then
|
|
self.goods_dic[vo.goods_id] = copy_vo
|
|
end
|
|
end
|
|
|
|
if basic.type == GoodsModel.TYPE.EQUIP then
|
|
if vo.goods_num > 0 then
|
|
self.goods_dic[vo.goods_id] = copy_vo
|
|
else
|
|
--穿了某个装备的时候,判断下,便捷使用的其他装备,是否能够满足继续穿戴的情况
|
|
GlobalEventSystem:DelayFire(EventName.CHECK_ITEM_USE_EQUIP_CAN_SHOW)
|
|
end
|
|
end
|
|
else
|
|
if basic.type == GoodsModel.TYPE.EQUIP then
|
|
if vo.goods_num == 0 then
|
|
--穿了某个装备的时候,判断下,便捷使用的其他装备,是否能够满足继续穿戴的情况
|
|
GlobalEventSystem:DelayFire(EventName.CHECK_ITEM_USE_EQUIP_CAN_SHOW)
|
|
end
|
|
end
|
|
end
|
|
|
|
if basic.type == 17 and basic.subtype == 3 then --神格装备
|
|
-- if not DeityModel:getInstance():EquipFightCompare(vo.type_id) then
|
|
-- self.goods_dic[vo.goods_id] = nil
|
|
-- end
|
|
elseif basic.type == 36 and basic.subtype == 4 then
|
|
local vip_type = RoleManager.Instance.mainRoleInfo.vip_type
|
|
if vip_type and vip_type <= 1 then
|
|
self.goods_dic[vo.goods_id] = nil
|
|
end
|
|
end
|
|
end
|
|
|
|
--添加提示
|
|
function ItemUseModel:AddUseTip( vo )
|
|
local copy_vo = DeepCopy(vo)
|
|
GoodsModel:getInstance():SetBaseInfo(copy_vo)
|
|
self.goods_dic[vo.goods_id] = copy_vo
|
|
end
|
|
|
|
--强制添加提示
|
|
function ItemUseModel:AddForceUseTip( vo )
|
|
local copy_vo = DeepCopy(vo)
|
|
GoodsModel:getInstance():SetBaseInfo(copy_vo)
|
|
copy_vo.force = true
|
|
self.goods_dic[vo.goods_id] = copy_vo
|
|
end
|
|
|
|
--尝试去添加提示
|
|
function ItemUseModel:TryAddUseTip( vo )
|
|
local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(vo.type_id)
|
|
if not basic then
|
|
return
|
|
end
|
|
|
|
local bool = false
|
|
if basic.type == GoodsModel.TYPE.EQUIP then
|
|
-- if basic.career_id == 0 or basic.career_id == RoleManager.Instance.mainRoleInfo.career then
|
|
-- bool = true
|
|
-- end
|
|
bool = false
|
|
elseif basic.type == 17 and basic.subtype == 3 then
|
|
if DeityModel:getInstance():EquipFightCompare(basic.type_id) then
|
|
bool = true
|
|
end
|
|
end
|
|
|
|
local cfg = Config.ConfigItemUse.Reward[vo.type_id] or Config.ConfigItemUse.TypeUse[basic.type.."@"..basic.subtype]
|
|
if cfg then
|
|
local lv = RoleManager.Instance.mainRoleInfo.level
|
|
local career = RoleManager.Instance.mainRoleInfo.career
|
|
if (cfg.limit_lv == -1 or (cfg.limit_lv ~= -1 and lv >= cfg.limit_lv)) and (not cfg.career or (cfg.career and cfg.career == career)) then
|
|
bool = true
|
|
else
|
|
bool = false
|
|
end
|
|
end
|
|
|
|
if bool then
|
|
local copy_vo = DeepCopy(vo)
|
|
GoodsModel:getInstance():SetBaseInfo(copy_vo)
|
|
self.goods_dic[vo.goods_id] = copy_vo
|
|
end
|
|
end
|
|
--针对 15010协议
|
|
function ItemUseModel:HandleLoginUseTips(goods_list)
|
|
if not self.login_use_handle and goods_list then
|
|
print("ItemUseModel:HandleLoginUseTips()")
|
|
for i, vo in ipairs(goods_list) do
|
|
ItemUseModel:getInstance():TryAddUseTip(vo)
|
|
end
|
|
self.login_use_handle = true
|
|
end
|
|
end
|
|
|
|
--针对 15018 协议 当出售的时候
|
|
function ItemUseModel:UpdateBagGoodsDicWhenSell(vo)
|
|
local bag_goods_dic = GoodsModel:getInstance():GetBagGoodsDic()
|
|
local goodsVo = bag_goods_dic[vo.goods_id]
|
|
|
|
if goodsVo then
|
|
local exist_num = goodsVo.goods_num
|
|
local last_num = vo.goods_num
|
|
|
|
--说明是减少
|
|
local curr_vo = self.goods_dic[vo.goods_id]
|
|
if exist_num > last_num then
|
|
if curr_vo then
|
|
curr_vo.goods_num = curr_vo.goods_num - (exist_num - last_num)
|
|
if curr_vo.goods_num <= 0 then
|
|
self.goods_dic[vo.goods_id] = nil
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function ItemUseModel:UpdateStarShadowBagGoods( vo )
|
|
local bag_goods_dic = GoodsModel:getInstance().starShadow_bag_list
|
|
local goodsVo = bag_goods_dic[vo.goods_id]
|
|
|
|
if goodsVo then
|
|
local exist_num = goodsVo.goods_num
|
|
local last_num = vo.goods_num
|
|
|
|
--说明是减少
|
|
local curr_vo = self.goods_dic[vo.goods_id]
|
|
if exist_num > last_num then
|
|
if curr_vo then
|
|
curr_vo.goods_num = curr_vo.goods_num - (exist_num - last_num)
|
|
if curr_vo.goods_num <= 0 then
|
|
self.goods_dic[vo.goods_id] = nil
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--获取主界面道具使用界面Vo
|
|
function ItemUseModel:MatchPopCondition()
|
|
local scene_mgr = SceneManager.Instance
|
|
if scene_mgr:IsNoonQuizScene() then
|
|
return false
|
|
end
|
|
|
|
if GuideModel:getInstance():IsHideSmallUI() then
|
|
return false
|
|
end
|
|
|
|
if self.is_delay_show then
|
|
return false
|
|
end
|
|
|
|
return true
|
|
end
|
|
|
|
|
|
--获取主界面道具使用界面Vo
|
|
function ItemUseModel:GetItemShowVo()
|
|
if self.goods_dic then
|
|
for i,vo in pairs(self.goods_dic) do
|
|
if vo.force==true and (vo.expire_time == 0 or (vo.expire_time ~= 0 and vo.expire_time - TimeUtil:getServerTime() > 0))then --强制提示
|
|
return vo
|
|
else
|
|
if vo.type == GoodsModel.TYPE.EQUIP then --如果是装备,则判断是否有更好的 才显示
|
|
local is_can_wear = EquipModel:getInstance():EquipCanShowGoodsTip(vo)
|
|
if is_can_wear then
|
|
return vo, true
|
|
end
|
|
|
|
local is_auction = GoodsModel:getInstance():IsEquipCanAuctionButNoUse(vo)
|
|
if is_auction then
|
|
return vo
|
|
end
|
|
else
|
|
if vo.expire_time == 0 or (vo.expire_time ~= 0 and vo.expire_time - TimeUtil:getServerTime() > 0) then
|
|
return vo
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
return nil
|
|
end
|
|
|
|
function ItemUseModel:SetIgnore_Better( bool )
|
|
self.ignore_better = bool
|
|
if bool then
|
|
setTimeout(function()
|
|
self.ignore_better = false
|
|
end,3)
|
|
end
|
|
end
|
|
|
|
--根据物品类型获取数量
|
|
function ItemUseModel:GetTypeGoodsNum(typeId)
|
|
local id = tonumber(typeId)
|
|
local theNum = 0
|
|
if id < 1 then
|
|
return 0
|
|
end
|
|
for i,vo in pairs(self.goods_dic) do
|
|
if vo.type_id == typeId then
|
|
theNum = theNum + vo.goods_num
|
|
end
|
|
end
|
|
return theNum
|
|
end
|
|
|
|
--根据物品id获取数量
|
|
function ItemUseModel:GetGoodsNumById(goods_id)
|
|
return self.goods_dic[goods_id] and self.goods_dic[goods_id].goods_num or 0
|
|
end
|
|
|
|
--当当前物品被使用的时候 。查看剩下的相同type_id,有的话优先取这个Vo
|
|
function ItemUseModel:GetVoByTypeId(typeId)
|
|
if self.goods_dic then
|
|
for i,vo in pairs(self.goods_dic) do
|
|
if vo.type_id == typeId then
|
|
return vo
|
|
end
|
|
end
|
|
end
|
|
|
|
return nil
|
|
end
|
|
|
|
--当当前物品被使用的时候 。查看剩下的相同type_id,有的话优先取这个Vo
|
|
function ItemUseModel:ContainGoodsId(goods_id)
|
|
return self.goods_dic[goods_id]
|
|
end
|
|
|
|
--根据类型id清除Vo信息
|
|
function ItemUseModel:ClearTypeIdData(typeId)
|
|
if self.goods_dic then
|
|
for i,vo in pairs(self.goods_dic) do
|
|
if vo.type_id == typeId then
|
|
self.goods_dic[vo.goods_id] = nil
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--根据物品唯一id清除Vo信息
|
|
function ItemUseModel:ClearIdData(goods_id)
|
|
if self.goods_dic then
|
|
print(">>>>>>>>>>> ClearIdData ", goods_id)
|
|
|
|
|
|
for i,vo in pairs(self.goods_dic) do
|
|
if vo.goods_id == goods_id then
|
|
self.goods_dic[vo.goods_id] = nil
|
|
end
|
|
end
|
|
-- PrintTable(self.goods_dic)
|
|
end
|
|
end
|
|
|
|
--删除评分更低的装备
|
|
function ItemUseModel:DelLowerEquip(goods_id)
|
|
if self.goods_dic then
|
|
local goods_vo = GoodsModel:getInstance():GetBagGoodsInfoById(goods_id)
|
|
if goods_vo then
|
|
for i,vo in pairs(self.goods_dic) do
|
|
if vo.type_id == goods_vo.type_id and vo.rating<=goods_vo.rating then
|
|
self.goods_dic[vo.goods_id] = nil
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--是否小天使小恶魔
|
|
function ItemUseModel:IsEquipSpecialType(type_id)
|
|
local goods_basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(type_id)
|
|
if goods_basic then
|
|
return goods_basic.type == GoodsModel.TYPE.EQUIP and goods_basic.subtype == GoodsModel.SHOUHU_EQUIP_TYPE
|
|
end
|
|
return false
|
|
end
|
|
|
|
|
|
|
|
--是否佩戴了或者拥有小恶魔
|
|
function ItemUseModel:HasWearXiaoEMoOrHas( )
|
|
local vo = GoodsModel:getInstance().wear_equip_list[GoodsModel.SHOUHU_EQUIP_TYPE]
|
|
if not vo then --装备栏上没有装备小恶魔
|
|
local bool = self:CheckXiaoEMo(1011000003)
|
|
if bool then
|
|
return
|
|
end
|
|
local list = GoodsModel:getInstance():GetTypeGoods(1011000001)
|
|
if TableSize(list) ~= 0 then --背包里有小恶魔
|
|
table.sort(list,function (a,b)
|
|
return a.expire_time > b.expire_time
|
|
end)
|
|
|
|
for i,v in ipairs(list) do
|
|
if TimeUtil:getServerTime() < v.expire_time then
|
|
-- GlobalEventSystem:Fire(EventName.OPEN_ITEM_USE_VIEW,v, 5)
|
|
-- BaseDungeonModel:getInstance():Fire(BaseDungeonModel.SHOW_UES_EXP_EVIL_BTN,true,v.goods_id)
|
|
return
|
|
end
|
|
end
|
|
--这里就是续费
|
|
-- GlobalEventSystem:Fire(EventName.OPEN_ITEM_USE_VIEW,list[1], 5)
|
|
BaseDungeonModel:getInstance():Fire(BaseDungeonModel.SHOW_UES_EXP_EVIL_BTN,true,list[1].goods_id)
|
|
end
|
|
else
|
|
--local vo = GoodsModel:getInstance().wear_equip_list[11]
|
|
-- if vo and (vo.type_id==1011000001 or vo.type_id==1011000005) and TimeUtil:getServerTime() > vo.expire_time then
|
|
-- GlobalEventSystem:Fire(EventName.OPEN_ITEM_USE_VIEW,vo, 5)
|
|
-- end
|
|
if vo.type_id == 1011000003 or vo.type_id == 1011000001 or vo.type_id == 1011000005 then
|
|
if TimeUtil:getServerTime() > vo.expire_time then --物品过期了
|
|
if vo.type_id == 1011000003 then --如果身上大的过期,就看看背包里面有没有小的没有过期的
|
|
local bool = self:CheckXiaoEMo(1011000001)
|
|
if not bool then --如果没有,就提醒续费
|
|
-- GlobalEventSystem:Fire(EventName.OPEN_ITEM_USE_VIEW,vo, 5)
|
|
BaseDungeonModel:getInstance():Fire(BaseDungeonModel.SHOW_UES_EXP_EVIL_BTN,true,vo.goods_id)
|
|
end
|
|
elseif vo.type_id == 1011000001 then --如果身上是小的过期了,就看看背包里面有没有大的,没有就提醒续费
|
|
local bool = self:CheckXiaoEMo(1011000003)
|
|
if not bool then --如果没有,就提醒续费
|
|
-- GlobalEventSystem:Fire(EventName.OPEN_ITEM_USE_VIEW,vo, 5)
|
|
BaseDungeonModel:getInstance():Fire(BaseDungeonModel.SHOW_UES_EXP_EVIL_BTN,true,vo.goods_id)
|
|
end
|
|
elseif vo.type_id == 1011000005 then
|
|
local bool = self:CheckXiaoEMo(1011000003)
|
|
if not bool then --如果没有,就提醒续费
|
|
bool = self:CheckXiaoEMo(1011000001)
|
|
if not bool then --如果没有,就提醒续费
|
|
-- GlobalEventSystem:Fire(EventName.OPEN_ITEM_USE_VIEW,vo, 5)
|
|
BaseDungeonModel:getInstance():Fire(BaseDungeonModel.SHOW_UES_EXP_EVIL_BTN,true,vo.goods_id)
|
|
end
|
|
end
|
|
end
|
|
else --如果没有过期,并且身上是小的,就看看背包里有没有大的,如果是大的没有过期,就什么都不敢
|
|
if vo.type_id == 1011000001 or vo.type_id == 1011000003 or vo.type_id == 1011000005 then
|
|
self:CheckXiaoEMo(1011000003)
|
|
end
|
|
end
|
|
else
|
|
local bool = self:CheckXiaoEMo(1011000003)
|
|
if not bool then
|
|
self:CheckXiaoEMo(1011000001,true)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function ItemUseModel:CheckXiaoEMo(id,show_tip)
|
|
local list = GoodsModel:getInstance():GetTypeGoods(id)
|
|
|
|
if TableSize(list) ~= 0 then --背包里有小恶魔
|
|
table.sort(list,function (a,b)
|
|
return a.expire_time > b.expire_time
|
|
end)
|
|
|
|
for i,v in ipairs(list) do
|
|
if TimeUtil:getServerTime() < v.expire_time then
|
|
GlobalEventSystem:Fire(EventName.OPEN_ITEM_USE_VIEW,v, 5)
|
|
return true
|
|
end
|
|
end
|
|
--这里就是续费
|
|
if show_tip then
|
|
GlobalEventSystem:Fire(EventName.OPEN_ITEM_USE_VIEW,list[1], 5)
|
|
end
|
|
end
|
|
end
|
|
|
|
--是否穿戴了守护
|
|
function ItemUseModel:HasWearEvil( )
|
|
local evil_id = EquipModel:getInstance():GetFollowGuardId()
|
|
return evil_id ~= 0
|
|
end
|
|
|
|
--是否佩戴了未过期小恶魔
|
|
function ItemUseModel:HasWearXiaoEMo( )
|
|
local vo = GoodsModel:getInstance().wear_equip_list[11]
|
|
if vo and (vo.type_id==1011000001 or vo.type_id==1011000005 or vo.type_id==1011000003 ) and TimeUtil:getServerTime() < vo.expire_time then
|
|
return true
|
|
end
|
|
end
|
|
|
|
--是否佩戴了未过期小天使
|
|
function ItemUseModel:HasWearXiaoTianShi( )
|
|
local vo = GoodsModel:getInstance().wear_equip_list[11]
|
|
if vo and (vo.type_id==1011000002 or vo.type_id==1011000004 )and TimeUtil:getServerTime() < vo.expire_time then
|
|
return true
|
|
end
|
|
end
|
|
|
|
function ItemUseModel:HideItemUseView( )
|
|
self.hide_item_view = true
|
|
|
|
GlobalEventSystem:Fire(EventName.CLOSE_ITEM_USE_VIEW)
|
|
|
|
end
|
|
|
|
function ItemUseModel:GetHideState( )
|
|
return self.hide_item_view
|
|
end
|
|
|
|
function ItemUseModel:SetHideState(bool)
|
|
self.hide_item_view = bool
|
|
end
|
|
|
|
function ItemUseModel:ShowItemUseView( )
|
|
if not GoodsModel:getInstance():CheckCanFlyGood() then--检查飞道具图标的条件
|
|
return
|
|
end
|
|
local vo = ItemUseModel:getInstance():GetItemShowVo()
|
|
if vo then
|
|
self.hide_item_view = false
|
|
GlobalEventSystem:Fire(EventName.REOPEN_ITEM_USE_VIEW)
|
|
else
|
|
self.hide_item_view = false
|
|
end
|
|
end
|
|
|
|
-- 因为骑宠幻形激活道具填了use又无法再背包使用jump属性比较蛋疼,所以在这里特殊处理
|
|
function ItemUseModel:IsHorsePetSpecial(vo)
|
|
if vo == nil then return false end
|
|
if vo.type == 18 and vo.subtype == 4 then -- 宠物幻形激活道具
|
|
return PetModel:getInstance():IlluCanAvtivateByGoodsId(vo.type_id)
|
|
elseif vo.type == 16 and vo.subtype == 3 then -- 坐骑幻形激活道具
|
|
return HorseModel:getInstance():IlluCanAvtivateByGoodsId(vo.type_id)
|
|
end
|
|
return false
|
|
end
|
|
|
|
--未激活的时装弹出使用框
|
|
function ItemUseModel:IsUnActiveFashion(vo)
|
|
if vo then
|
|
if vo.type == 12 and vo.subtype >= 1 and vo.subtype <= 4 then
|
|
return FashionModel:getInstance():GetFashionByConsumable(vo.type_id)
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
--未激活的幻形宝宝弹出使用框
|
|
function ItemUseModel:IsUnActiveBaby(vo)
|
|
return false
|
|
end
|
|
|
|
function ItemUseModel:SetDelayFlag(bool,time)
|
|
self.is_delay_show = bool
|
|
if self.is_delay_show then
|
|
setTimeout(function()
|
|
self.is_delay_show = false
|
|
self:ShowItemUseView()
|
|
end, time)
|
|
end
|
|
end
|
|
|
|
--是否显示使用提示界面(登录游戏时)
|
|
function ItemUseModel:InitBagGoodsDicOnStarGame( goods_list )
|
|
if self.is_first_init_goods_dic_on_start_game and self.is_first_init_goods_dic_on_start_game>=2 then return end
|
|
self.is_first_init_goods_dic_on_start_game = self.is_first_init_goods_dic_on_start_game or 0
|
|
self.is_first_init_goods_dic_on_start_game = self.is_first_init_goods_dic_on_start_game + 1
|
|
for i,v in ipairs(goods_list) do
|
|
local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(v.type_id)
|
|
local is_need_show_tip_view = GoodsModel:getInstance():IsGoodsNeedShowUseTipOnStartGame(basic,v)
|
|
if is_need_show_tip_view then
|
|
local copy_vo = DeepCopy(v)
|
|
GoodsModel:getInstance():SetBaseInfo(copy_vo)
|
|
self.goods_dic[v.goods_id] = copy_vo
|
|
end
|
|
end
|
|
end
|
|
|
|
--玩家整理道具触发便捷使用
|
|
function ItemUseModel:InitBagGoodsDicOnSort( goods_list )
|
|
self.goods_dic = {}
|
|
for i,v in ipairs(goods_list) do
|
|
if v.goods_num ~= 0 then
|
|
local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(v.type_id)
|
|
local is_need_show_tip_view = GoodsModel:getInstance():IsGoodsNeedShowUseTipOnGainGoods(basic,v,v)
|
|
if not is_need_show_tip_view then
|
|
is_need_show_tip_view = GoodsModel:getInstance():IsGoodsNeedShowUseTipOnStartGame(basic,v)
|
|
end
|
|
if is_need_show_tip_view then
|
|
local copy_vo = DeepCopy(v)
|
|
self.goods_dic[v.goods_id] = copy_vo
|
|
end
|
|
end
|
|
end
|
|
|
|
local vo = self:GetItemShowVo()
|
|
if vo then
|
|
GlobalEventSystem:Fire(EventName.OPEN_ITEM_USE_VIEW,vo)
|
|
end
|
|
end
|
|
|
|
--是否在便捷使用忽略列表
|
|
function ItemUseModel:IsIgnoreItemUseTip(produce_type)
|
|
produce_type = produce_type or 0
|
|
return ItemUseModel.IgnoreProduceType[produce_type]
|
|
end
|
|
|
|
--重新检测下,便捷使用列表中的其他装备还是否满足可以穿戴
|
|
function ItemUseModel:CheckItemUseListOtherEquipCanWear()
|
|
local remove_goods_id_list = {}
|
|
local is_reopen = false
|
|
for k,v in pairs(self.goods_dic) do
|
|
local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(v.type_id)
|
|
if basic and basic.type == GoodsModel.TYPE.EQUIP then
|
|
local is_need_show = GoodsModel.getInstance():IsEquipNeedShowUseTipGoods(v)
|
|
if not is_need_show then
|
|
table.insert(remove_goods_id_list, v.goods_id)
|
|
is_reopen = true
|
|
end
|
|
end
|
|
end
|
|
|
|
if is_reopen then
|
|
for k,v in pairs(remove_goods_id_list) do
|
|
self.goods_dic[v] = nil
|
|
end
|
|
GlobalEventSystem:Fire(EventName.REOPEN_ITEM_USE_VIEW)
|
|
end
|
|
end
|
|
|
|
--是否数时装和称号道具增加了
|
|
function ItemUseModel:IsAddFashionOrFashionchip(goods_vo)
|
|
local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_vo.type_id)
|
|
if basic.type == GoodsModel.TYPE.FASHION or (basic.type == GoodsModel.TYPE.FASHIONCHIP and basic.subtype == 1) then
|
|
local bag_goods_dic = GoodsModel:getInstance():GetBagGoodsDic()
|
|
local bag_good_vo = bag_goods_dic[goods_vo.goods_id]
|
|
|
|
self.fashion_add_goods = self.fashion_add_goods or {}
|
|
--背包本来没有
|
|
if not bag_good_vo then
|
|
--道具增加
|
|
if goods_vo.goods_num > 0 then
|
|
local copy_new_vo = DeepCopy(goods_vo)
|
|
table.insert(self.fashion_add_goods, copy_new_vo)
|
|
end
|
|
else
|
|
--道具变更,并且增加
|
|
if goods_vo.goods_num > bag_good_vo.goods_num then
|
|
local copy_new_vo = DeepCopy(goods_vo)
|
|
table.insert(self.fashion_add_goods, copy_new_vo)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--检测一些特殊类型的道具的便捷使用
|
|
function ItemUseModel:CheckReShowGood()
|
|
if self.fashion_add_goods and #self.fashion_add_goods > 0 then
|
|
for i,vo in ipairs(self.fashion_add_goods) do
|
|
self:UpdateBagGoodsDic(vo, nil,nil)
|
|
end
|
|
GoodsModel.getInstance():DelayFire(GoodsModel.CHANGE_BAGLIST)
|
|
end
|
|
self.fashion_add_goods = {}
|
|
end
|