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

210 lines
7.3 KiB

BagIconItem = BagIconItem or BaseClass(AwardItem)
function BagIconItem:__init()
self.bLock = false
self.sell_state = false
self.last_click_time = nil
end
function BagIconItem:Load_callback()
AwardItem.Load_callback(self)
--监听物品的动态信息事件,因为可洗炼的信息是放在物品的动态信息15000协议里面的,
local change_dynamic = function (goods_id)
if self._use_delete_method then return end
if goods_id and self.goodsVo and self.goodsVo.goods_id == goods_id then
local vo = GoodsModel:getInstance():GetBagGoodsInfoById(goods_id)
if vo then
-- EquipModel:getInstance():EquipDynamicField(vo)
-- GoodsModel:getInstance():IsEquipGoodsCanWash(true)
--市场里的背包不用获取物品动态信息
-- if self.goodsVo and self.goodsVo.pos_type and self.goodsVo.pos_type == GoodsModel.GOODS_POS_TYPE.market then
-- return
-- end
if ItemUseModel:getInstance():IsEquipSpecialType(vo.type_id) then --暂时只判断小恶魔
self:SetData(vo) --需要刷新,比如续费
end
end
end
end
self.dynamic_event_id = GlobalEventSystem:Bind(GoodsModel.CHANGE_GOODS_DYNAMIC,change_dynamic)
end
function BagIconItem:__delete()
if self.dynamic_event_id then
GlobalEventSystem:UnBind(self.dynamic_event_id)
self.dynamic_event_id = nil
end
end
function BagIconItem:SetPos(pos)
self.pos = pos
end
function BagIconItem:SetSellState(flag)
self.sell_state = flag
end
function BagIconItem:SetData(vo,goods_num,mask_id,hide_effect, spe_color_effect, equip_key)
self.bLock = false
vo.goods_num = vo.goods_num or goods_num or 0
self.goodsVo = vo
local goods = GoodsModel:getInstance():GetZhuangBeiListVo(self.goodsVo.goods_id)
if goods then
EquipModel:getInstance():EquipDynamicField(goods)
end
if self.goodsVo.identify and self.goodsVo.identify > 0 then
self:ChangeIdentifyState(true)
else
self:ChangeIdentifyState(false)
end
local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(vo.type_id)
if basic == nil then
return
end
local stren_data = EquipModel:getInstance():GetBagEquipAwaraItemInfo(self.goodsVo)
stren_data.equip_key = equip_key or "EquipView"
stren_data.key_value = "show_bag_view"
self.stren_data = stren_data
AwardItem.SetData(self, vo.type_id, goods_num or vo.goods_num or 0, vo.color, stren_data, self.goodsVo.bind,nil,nil,mask_id,nil,hide_effect, spe_color_effect)
self:SetLimitState(BagModel:getInstance():GetGoodsLimitState(self.goodsVo))
if self.goodsVo.canWear then
self:ChangeWearState(true)
else
self:ChangeWearState(false)
end
if self.goodsVo.type == 13 then --圣印的升降禁 13这会为装扮,遂屏蔽
elseif self.goodsVo.type == 39 then --幻兽的升降禁、精炼显示
local flag = nil
self:ChangeEquipState(flag)
if self.goodsVo.goods_id then
local function callback(dynamic)
if dynamic.stren and dynamic.stren > 0 then
if self.stren and not self._use_delete_method then
self.stren.text = "+" .. dynamic.stren
end
else
if self.stren and not self._use_delete_method then
self.stren.text = ""
end
end
end
GoodsModel:getInstance():GetDynamic(self.goodsVo.goods_id, callback)
end
else --其他
if self.goodsVo.type == GoodsModel.TYPE.EQUIP and self.goodsVo.goods_num > 0 then
local can_tip, flag = EquipModel:getInstance():EquipCanShowGoodsTip(self.goodsVo)
self:ChangeEquipState(flag)
else
self:ChangeEquipState(nil)
end
end
if MarketModel:GetInstance():IsGoodsCanUpShelves(self.goodsVo) then--显示可上架角标
--本职业的显示绿环,非本职业的显示上架角标
if EquipModel:getInstance():SelfCareerIsOk( self.goodsVo.type_id ) then
self:SetNumLimitVisible(true,5)
else
self:SetNumLimitVisible(true,29)
end
elseif GoodsModel.getInstance():IsLimitGoodsInLimitState(self.goodsVo) then --限时道具 显示限时状态
self:ShowLimitIcon(true,1)
self:SetNumLimitVisible(false)
elseif GoodsModel.getInstance():IsLimitGoodsInExpireState(self.goodsVo) then --限时道具 显示已经过期状态
self:ShowLimitIcon(true,2)
self:SetNumLimitVisible(false)
elseif GoodsModel.getInstance():IsShowTipsUse(self.goodsVo.type, self.goodsVo.subtype, basic) then --显示可以使用
self:SetNumLimitVisible(true,22)
else
self:SetNumLimitVisible(false)
end
end
--这里显示背包中物品点击的tips响应事件
--要注意是否也需要在AwardItem的ClickCallFun()方法也加入点击tips事件,(如在商店或是邮件中显示的物品)
function BagIconItem:ClickCallFun(target, x, y)
if self.goodsVo and self.goodsVo.goods_num > 0 then
if self.sell_state and self.goodsVo.goods_num > 0 then --用于背包的一键出售
GoodsModel:getInstance():Fire(GoodsModel.REQUEST_CCMD_EVENT,15021,1,self.goodsVo.goods_id, self.goodsVo.goods_num, self.goodsVo.type_id)
return
end
-- local function delayFunc()
if self.goodsVo.type == GoodsModel.TYPE.EQUIP then --装备
if self.goodsVo.subtype == 12 then --时装物品
UIToolTipMgr:getInstance():AppendGoodsTips(self.goodsVo.type_id, x, y, self.goodsVo)
else
UIToolTipMgr:getInstance():AppendEquipTips(self.goods_basic.type_id, x, y,self.stren_data and self.stren_data.goods_vo,nil,nil,nil,self.stren_data and self.stren_data.key_value)
end
--elseif self.goodsVo.type == 13 then --圣印
-- UIToolTipMgr:getInstance():AppendSealTips(self.goodsVo.type_id, x, y, self.goodsVo, nil, nil, self.equip_tips_btns)
elseif self.goodsVo.type == 39 and self.goodsVo.subtype <= 50 then --幻兽装备
UIToolTipMgr:getInstance():AppendBeastTips(self.goodsVo.type_id, x, y, self.goodsVo)
else --普通物品
UIToolTipMgr:getInstance():AppendGoodsTips(self.goodsVo.type_id, x, y, self.goodsVo)
end
end
end
function BagIconItem:ChangeUnusableState(state)
if state then
if self.unusableImg == nil then
self.unusableImg = UiFactory.createChild(self.transform,UIType.Image,"unusableImg")
else
self.unusableImg:SetActive(true)
end
self.unusableImg.transform.pivot = Vector2(0,1)
self.unusableImg.transform.localPosition = Vector3(5,-5,0)
lua_resM:setImageSprite(self,self.unusableImg:GetComponent("Image"),"bag_asset","bag_ui_6",true)
if self.identifyImg then
self.identifyImg:SetActive(false)
end
else
if self.unusableImg then
self.unusableImg:SetActive(false)
end
end
end
--可鉴定
function BagIconItem:ChangeIdentifyState(state)
if state then
if self.identifyImg == nil then
self.identifyImg = UiFactory.createChild(self.transform,UIType.Image,"identifyImg")
else
self.identifyImg:SetActive(true)
end
self.identifyImg.transform.pivot = Vector2(0,1)
self.identifyImg.transform.localPosition = Vector3(0,0,0)
lua_resM:setImageSprite(self,self.identifyImg:GetComponent("Image"),"bag_asset","bag_ui_5",true)
else
if self.identifyImg then
self.identifyImg:SetActive(false)
end
end
end
--可穿戴状态
function BagIconItem:ChangeWearState(state)
if state then
if self.wearImg == nil then
self.wearImg = UiFactory.createChild(self.transform,UIType.Image,"wearImg")
else
self.wearImg:SetActive(true)
end
self.wearImg.transform.pivot = Vector2(0,1)
self.wearImg.transform.localPosition = Vector3(0,0,0)
lua_resM:setImageSprite(self,self.wearImg:GetComponent("Image"),"bag_asset","ba_kcd",true)
else
if self.wearImg then
self.wearImg:SetActive(false)
end
end
end