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

1849 lines
62 KiB

--[[
最基础的物品图标类
只控制物品图标 和 数量
需要其他功能请在继承中实现
参考BagIconItem
]]
AwardItem = AwardItem or BaseClass(BaseItem)
local AwardItem = AwardItem
-- 缓存常用对象
local Config = Config
local UIObjPool = UIObjPool
local UIToolTipMgr = UIToolTipMgr
local GoodsModel = GoodsModel
local EquipModel = EquipModel
local GlobalTimerQuest = GlobalTimerQuest
local WordManager = WordManager
local RoleManager = RoleManager
local SetLocalScale = SetLocalScale
local SetImageGray = SetImageGray
local SetSizeDelta = SetSizeDelta
local SetAnchoredPosition = SetAnchoredPosition
local lua_resM = lua_resM
function AwardItem:__init(parent, show_tips)
self.parent = parent
self.base_file = "common"
self.layout_file = "awardItem"
self.prefab_asset = nil
self.layer_name = self.layer_name or "UI"
self.goods_basic = nil
self.show_count = true
self.type_id = nil
self.goods_num = nil
self.color = nil
self.get_goods = false --获取途径
self.random_tip_value = false --随机掉落标识
self.width = 78
self.height = 78
self.bg_visible = true
self.is_select = false
self.ware_tip_state = false
self.must_tip_value = false --必掉提示ICON
self.resetTransform = false --是否在加载完成设置完父对象之后把位置和旋转归零
self.is_fix_size = true --是否使用客户端限制的3种规格
self.force_show_num = false--是否强制显示数字
self.resetPos = false
self.limit_state = BagModel.GoodsLimitState.Normal -- 道具的限时状态
self.stren_prefix = "+"
self.have_career = false --是否要对比职业
self.goods_vo = nil -- 道具的真实数据,由服务端发送,格式参考15010协议
self.force_show_limit_tip_view = false --打开普通物品tips时是否强制显示为限时道具状态(背包物品除外)
if show_tips == nil then
show_tips = true
end
self.show_tips = show_tips
self.raycast_target_enable = show_tips
self.res_use_ref = {}
self.open_show_get_way = true
--self.use_local_view = true
self:Load()
end
function AwardItem:Load_callback()
self.base_sx = self.transform.sizeDelta.x
self.base_sy = self.transform.sizeDelta.y
self.bg_trams = self:GetChild("bg")
self.bg = self:GetChild("bg"):GetComponent("Image")
self.icon = self:GetChild("icon")
self.iconImage = self.icon:GetComponent("Image")
-- self.numBg = self:GetChild("numBg").gameObject
-- self.numBg_trams = self:GetChild("numBg")
self.stren = self:GetChild("stren"):GetComponent("Text")
self.stren_obj = self:GetChild("stren").gameObject
-- self.step = self:GetChild("step"):GetComponent("Image")
-- self.stepNum = self:GetChild("stepNum"):GetComponent("Text")
self.selectImage = self:GetChild("selectImg").gameObject
self.selectImage2 = self:GetChild("selectImg2").gameObject
self.mask_icon = self:GetChild("mask_icon").gameObject
-- self.expiredIcon = self:GetChild("expiredIcon").gameObject
-- self.drop_tip = self:GetChild("must_tip").gameObject
-- self.randomn_drop_tip = self:GetChild("random_tip").gameObject
-- self.randomn_drop_tip_text = self:GetChild("random_tip/text"):GetComponent("Text")
-- self.numBg_sizeDelta = self.numBg_trams.sizeDelta
self.lock = self:GetChild("lock").gameObject
self.getIcon = self:GetChild("getIcon").gameObject
self.effect = self:GetChild("effect")
self.clickBg = self:GetChild("clickBg"):GetComponent("EmptyRaycast")
-- self.guild_tip = self:GetChild("guild_tip").gameObject
-- self.guard_tip = self:GetChild("guard_tip").gameObject
-- self.ware_tip = self:GetChild("ware_tip").gameObject
-- self.double_tip = self:GetChild("double_tip").gameObject
-- self.extra_tip = self:GetChild("extra_tip").gameObject
-- self.true_tip = self:GetChild("true_tip").gameObject
-- self.vip_tip = self:GetChild("vip_tip").gameObject
-- self.numText2 = self:GetChild("numText2"):GetComponent("Text")
-- self.statue_tip = self:GetChild("statue_tip").gameObject
-- self.limit_tip = self:GetChild("limit_tip").gameObject
self.numLimitIcon = self:GetChild("numLimitIcon").gameObject
self.numLimitIcon_img = self:GetChild("numLimitIcon"):GetComponent("Image")
self.warSoulTypeImg_img = self:GetChild("warSoulTypeImg"):GetComponent("Image")
-- self.lb_dai_txt = self:GetChild("lb_dai"):GetComponent("Text")
-- self.di_dai_obj = self:GetChild("di_dai").gameObject
self.numTextT = self:GetChild("numText")
self.numText = self.numTextT:GetComponent("Text")
self.numTextT_sizeDelta = self.numTextT.sizeDelta
self.nodes = {
"equipSeriesText:tmp","get_num:tmp","numText:tmp","redDot:obj","starNum:txt", "starBg:obj"
}
self:GetChildren(self.nodes)
self.xs_imgGo
= GetChildGameObjects(self.transform,{
"xsImg"
})
self.limit_img
= GetChildImages(self.transform,{
"xsImg"
})
for i = 1,3 do
self["star"..i] = self:GetChild("star"..i).gameObject
self["star"..i.."_img"] = self:GetChild("star"..i):GetComponent("Image")
end
self.equip_mark = self:GetChild("equip_mark").gameObject
if self.need_refreshData then
self:SetData(self.type_id,self.goods_num,self.color,self.stren_num,self.is_lock,nil,nil,nil,nil,nil,nil,self.have_career)
end
--self.bg.raycastTarget = self.show_tips
self.clickBg.raycastTarget = self.show_tips--如果不需要弹提示就取消触摸响应
self.raycast_target_enable = self.show_tips
if self.need_resize then
self:SetItemSize(self.width, self.height)
self.need_resize = false
end
if self.loadCall then
self.loadCall()
end
if self.resetTransform then
local rect = self.gameObject:GetComponent("RectTransform")
rect.pivot = Vector2(0,1)
rect.anchorMax =Vector2(0,1)
rect.anchorMin =Vector2(0,1)
rect.anchoredPosition = Vector2.zero
rect.localRotation = Quaternion.Euler(0,0,0)
self.resetTransform = false
end
-- self.drop_tip:SetActive(self.must_tip_value)
-- self.randomn_drop_tip:SetActive(self.random_tip_value)
-- if self.random_tip_value and self.random_tip_text then
-- self.randomn_drop_tip_text.text = self.random_tip_text
-- end
self:InitEvent()
if self.custom_num_str then
self:SetNumStr(self.custom_num_str)
end
self:SetSelect(self.is_select)
self:SetWareTip(self.ware_tip_state)
if self.resetPos then
self.clickBg.raycastTarget = self.show_tips
self.raycast_target_enable = self.show_tips
self.transform:SetParent(self.parent)
SetLocalPositionZ(self.transform,0)
self.transform.anchoredPosition = Vector2.zero
if self.anchoredPosition then
self:SetAnchoredPosition(self.anchoredPosition.x,self.anchoredPosition.y)
self.anchoredPosition = false
end
self.resetPos = false
end
if self.need_refreshResetInfo then
self:ResetInfo()
self.need_refreshResetInfo = false
end
-- if self.need_refreshStatue then
-- self:SetStatueTips(self.statue, self.statue_res, self.res_ab)
-- end
if self.need_set_limit_state then
self.need_set_limit_state = false
self:SetLimitState(self.limit_state)
end
if self.need_reset_limit_icon then
self.need_reset_limit_icon = false
self:ShowLimitIcon(self.show_limit,self.show_limit_type)
end
if self.need_refreshIsGetIcon then
self:IsGetGoods(self.get_goods)
end
if self.is_need_rebind_long_press then
self:BindLongPressEvent(self.cache_bind_long_press_info[1], self.cache_bind_long_press_info[2], self.cache_bind_long_press_info[3], self.cache_bind_long_press_info[4])
end
SetLocalScale(self.effect.transform, 1, 1, 1)
self.effect.gameObject:SetActive(true)
end
function AwardItem:SetExpiredVisible( bool )
-- if self.expiredIcon then
-- self.expiredIcon:SetActive(bool)
-- end
end
--设置必掉图标
-- function AwardItem:SetMustDropTip(bool)
-- if self.is_loaded then
-- self.drop_tip:SetActive(bool)
-- else
-- self.drop_tip_state = bool
-- end
-- end
--设置双倍掉图标
function AwardItem:SetDoubleTip(bool)
-- if self.is_loaded then
-- self.double_tip:SetActive(bool)
-- end
end
--设置额外图标
function AwardItem:SetExtraTip(bool)
-- if self.is_loaded then
-- self.extra_tip:SetActive(bool)
-- else
-- self.extra_tip_state = bool
-- end
end
--设置随机掉落图标
-- function AwardItem:SetRandomDropTip(bool,text)
-- if self.is_loaded then
-- self.randomn_drop_tip:SetActive(bool)
-- if text then
-- self.randomn_drop_tip_text.text = text
-- end
-- else
-- self.random_tip_value = bool
-- if text then
-- self.random_tip_text = text
-- end
-- end
-- end
--设置社团加成图标
-- function AwardItem:SetGuildAdditionTip( bool )
-- if self.is_loaded then
-- self.guild_tip:SetActive(bool)
-- local num = self.goods_num
-- local lv = GuildModel:getInstance():GetGuildBuildLvInfo(6)
-- num = tonumber(num) * GuildModel:getInstance():GetGuildTaskAddition(lv)/100
-- self.numText.text = WordManager:ConvertNum1(num, bool)
-- end
-- end
function AwardItem:SetVipAdditionTip( bool )
-- if self.is_loaded then
-- self.vip_tip:SetActive(bool)
-- local num = tonumber(self.goods_num) or 0
-- local rate = 0
-- local vip_lv = RoleManager.Instance.mainRoleInfo.vip_flag
-- local cfg = Config.Vipprivilege
-- if not cfg then return end
-- for k,v in pairs(cfg) do
-- if v.module_id == 300 and v.subclass_id == 3 and v.lv == vip_lv then
-- rate = v.value/10000
-- end
-- end
-- num = tonumber(num) * rate
-- self.numText.text = WordManager:ConvertNum1(num, bool)
-- end
end
--提供一个接口给外部直接调用awardItem点击函数
function AwardItem:ManuallyClickFun(target,x,y)
if self.manuallyClickFun then
self.manuallyClickFun(target,x,y)
end
end
function AwardItem:InitEvent()
local function onBtnClickHandler(target,x,y)
if self.show_tips then
if self.withCallback then
self.withCallback()
end
if self.callback then
self.callback(target,x,y)
else
if self.is_long_click then
--长按跳出
elseif self.get_goods and not self.no_need_show_get then
--------------------------------
if self.force_show_limit_tip_view then--强制显示限时状态的物品tips
local parm_list = {force_show_limit = true}
UIToolTipMgr:getInstance():AppendGoodsTips(self.type_id, x, y,nil,nil,parm_list,nil,self.open_show_get_way)
return
end
--------------------------------
UIToolTipMgr:getInstance():AppendGoodsTips(self.type_id, x, y,nil,nil,nil,nil,self.open_show_get_way)
elseif self.get_goods and self.no_need_show_get then
local cfg = ShopModel:getInstance():GetShopTypeIdBuyCFG(self.type_id)
if cfg and TableSize(cfg) > 0 and string.find(self.get_str, ColorUtil.RED_DARK) then
ShopModel:getInstance():Fire(ShopModel.OPEN_SHOP_BUY_TIP_VIEW,self.type_id,self.shop_buy_num)
else
self:ClickCallFun(target,x,y)
end
else
self:ClickCallFun(target,x,y)
end
end
end
end
AddClickEvent(self.gameObject, onBtnClickHandler, nil, false)
self.manuallyClickFun = onBtnClickHandler
end
--点击函数,可在子类继承该方法,实现自己需要的效果
function AwardItem:ClickCallFun(target,x,y)
--[[if self.goods_basic then
if self.goods_basic.type == 11 and self.goods_basic.subtype == 10 then --装备鉴定物
if self.goods_basic.identify > 0 then
UIToolTipMgr:getInstance():AppendEquipIdentifyTips(self.goods_basic.type_id, x, y)
else
Message.show("不可鉴定")
end
else --普通物品
-- if not BoxModel:GetInstance():CheckOptionTypeAndOpen(self.goods_basic.type_id) then
UIToolTipMgr:getInstance():AppendGoodsTips(self.goods_basic.type_id, x, y, nil)
-- end
end
end--]]
-- 先判断goods_vo的情况
if self.goods_vo and self.goods_basic then
if self.goods_basic.type == 9 then -- 圣物装备
UIToolTipMgr:getInstance():AppendPsionicTips(self.goods_vo, x, y, PsionicConst.ArmorItemFlag.Show)
return
else
local parm_list = self.expire_time and {expire_time = self.expire_time,expire_type = self.expire_type}
UIToolTipMgr:getInstance():AppendGoodsTips(self.goods_basic.type_id, x, y,self.goods_vo,nil,parm_list,nil,self.open_show_get_way)
return
end
end
if self.goods_basic then
if self.goods_basic.type == GoodsModel.TYPE.EQUIP then--装备
-- if self.dynamic then --拼接推荐属性
-- UIToolTipMgr:getInstance():AppendEquipShowTips(self.dynamic, x, y, self.show_type)
-- 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,nil,nil,self.color_power_lv or 0)
-- end
elseif self.goods_basic.type == GoodsModel.TYPE.WarSoul then--战魂
UIToolTipMgr:getInstance():AppendWarSoulTips(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)
elseif self.goods_basic.type == 39 then --幻兽装备
if self.dynamic then --拼接推荐属性
UIToolTipMgr:getInstance():AppendBeastShowTips(self.dynamic, x, y, self.show_type)
else
UIToolTipMgr:getInstance():AppendBeastTips(self.goods_basic.type_id, x, y)
end
elseif self.goods_basic.type == GoodsModel.TYPE.GALAXY and self.goods_basic.subtype == 1 then -- 星辰
local galaxy_vo = GalaxyModel.getInstance():CreateGalaxyBasic(self.goods_basic.type_id, 1)
GalaxyModel.getInstance():InitGoodsData(galaxy_vo)
GalaxyModel.getInstance():Fire(GalaxyConst.OPEN_GOODS_TOOL_TIPS_VIEW, galaxy_vo)
-- elseif self.goods_basic.type == 13 then --圣印装备
-- if self.dynamic then --拼接推荐属性
-- UIToolTipMgr:getInstance():AppendSealShowTips(self.dynamic, x, y, self.show_type)
-- else
-- UIToolTipMgr:getInstance():AppendSealTips(self.goods_basic.type_id, x, y)
-- end
-- elseif self.goods_basic.type == 21 and self.goods_basic.subtype == 1 then --星痕装备
-- UIToolTipMgr:getInstance():AppendStarShadowTips(self.goods_basic.type_id,self.goods_basic, x, y, true,true)
--elseif self.goods_basic.type == 16 and self.goods_basic.subtype == 4 then
-- UIToolTipMgr:getInstance():AppendHorseEquipInfoTips(self.type_id, x, y, nil, HorseEquipInfoTips.UNKNOWN, nil, nil)
elseif self.goods_basic.type == 52 and self.goods_basic.subtype ~= 4 and self.goods_basic.subtype ~= 5 then --魂珠类型
SoulBeadModel:getInstance():Fire(SoulBeadModel.EventName.OPEN_SOUL_BEAD_TIPS, self.type_id, x, y)
else --普通物品
local parm_list = self.expire_time and {expire_time = self.expire_time,expire_type = self.expire_type}
UIToolTipMgr:getInstance():AppendGoodsTips(self.goods_basic.type_id, x, y,nil,nil,parm_list,nil,self.open_show_get_way)
end
end
end
--show 当item被设为隐藏的时候,可通过show标识来设置是否显示默认资源
function AwardItem:SetVisible(b, show, force_hide)
BaseItem.SetVisible(self,b,force_hide)
self.force_hide = force_hide
self.visible_state = b
local show_default = show == nil and false or show
-- if self.is_loaded then
-- if b == false and show_default then
-- lua_resM:setImageSprite(self,self.iconImage,"common_asset","com_ui_17")
-- end
-- end
if self.is_loaded then
if b == false and show_default then
lua_resM:setImageSprite(self,self.iconImage,"common_asset","com_ui_17")
end
self.visible_cache = nil
self.show_default_cache = nil
if not b then
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.star1)--隐藏了就清一遍星星动画
end
--回收的时候重置品质特效
if b == false then
self:ResetItemEffect()
end
else
self.visible_cache = b
self.show_default_cache = show
end
end
function AwardItem:SetLoadCall( loadCall )
self.loadCall = loadCall
if self.is_loaded then
if self.loadCall then
self.loadCall()
end
end
end
--[[Description:新加一个setdata函数,为了增加type_id_main参数,用于方便货币类型的显示
type_id_main参数可以不传,此时等同SetData
]]
function AwardItem:SetDataWithMapId(type_id, goods_num, type_id_main , ...)
type_id = type_id or 0
goods_num = goods_num or 0
type_id_main = type_id_main or 0
-------------------------
type_id = GoodsModel:getInstance():GetMappingTypeId(type_id_main, type_id)
self:SetData(type_id, goods_num , ...)
end
-- 传入道具的真实数据goods_vo
function AwardItem:SetGoodsVo(goods_vo)
self.goods_vo = goods_vo
end
function AwardItem:GetTypeId( )
return self.type_id
end
--is_lock 是否绑定,默认false show_decimal 数量后是否显示小数位,默认显示
--show_type 是否是随机属性展示
--hide_color_effect 是否屏蔽高级颜色特效,默认false
--spe_color_effect 显示特殊的颜色特效
--注意:货币类型无法直接显示图标,需要GoodsModel的GetMappingTypeId函数转化,可以使用上方SetDataWithMapId函数一并处理
function AwardItem:SetData(type_id, goods_num ,color, stren_data, is_lock, show_decimal, show_type, mask_id, layer_name, hide_color_effect, spe_color_effect, have_career)
-------------------------
--2020.04.07,强制校正stren_data数据格式
if stren_data and type(stren_data) ~= "table" then
stren_data = nil
end
-------------------------
-- print('Cat:AwardItem.lua[367] self.type_id', self.type_id)
self.mask_id = mask_id
self.layer_name = layer_name or self.layer_name
self.spe_color_effect = spe_color_effect
self.show_type = show_type or EquipShowTips.EQUIP_RECOMMAND_TARGET
self.type_id = tonumber(type_id) or self.type_id
self.goods_basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.type_id)
-- print("=============>>> YiRan:AwardItem [start:374] self.goods_basic ------------------------------------------")
-- PrintTable(self.goods_basic)
-- print("=============>>> YiRan:AwardItem [end] ------------------------------------------")
self:ChangeEquipState(nil)
if self.goods_basic == nil then return print("物品db里面没有物品数据:",self.type_id) end
self.goods_num = goods_num or self.goods_num or 1
self.color = color or self.goods_basic and self.goods_basic.color or 1
self.stren_data = stren_data or self.stren_data
self.is_lock = is_lock or self.is_lock or 0
self.hide_color_effect = hide_color_effect or false--or self.hide_color_effect
self.have_career = have_career
-- --没有传mask_id而且要显示特效的情况才去获取mask_id 不需要了 以后改成帧动画 2019.11.13
-- if not self.mask_id and self:IsShowEffect() and not self.hide_color_effect then
-- local p_wnd = self.parent
-- repeat
-- p_wnd = p_wnd.parent
-- if p_wnd and p_wnd.parent then
-- local rect = p_wnd.parent:GetComponent(typeof(UnityEngine.UI.ScrollRect))
-- if rect then
-- if p_wnd:GetComponent("EffectMask") then
-- self.mask_id = 1
-- else
-- local image = p_wnd:GetComponent("Image")
-- if image then
-- self.mask_id = self:RegisterMask(image)
-- print("AwardItem 注册了Mask")
-- end
-- end
-- end
-- end
-- until not p_wnd or self.mask_id
-- end
-- local target_config
-- if self.goods_basic.type == GoodsModel.TYPE.EQUIP then
-- target_config = Config.Equipattr[self.type_id]
-- elseif self.goods_basic.type == 39 then
-- target_config = Config.Eudemonsequipattr[self.type_id]
-- -- elseif self.goods_basic.type == 13 then
-- -- target_config = Config.Holysealgoods[self.type_id]
-- end
-- if target_config then
-- local dynamic = {}
-- dynamic.type_id = self.type_id
-- dynamic.rating = target_config.base_rating
-- dynamic.equip_extra_attr = {}
-- dynamic.equip_type = self.goods_basic.equip_type
-- local target_pro = ErlangParser:GetInstance():Parse(target_config.recommend_attr)
-- for i, v in ipairs(target_pro) do
-- local attr = {}
-- attr.color = tonumber(v[2][1])
-- attr.attr_id = tonumber(v[2][2])
-- if #v[2] == 5 then
-- attr.type_id = 1
-- attr.plus_interval = tonumber(v[2][4])
-- attr.plus_unit = tonumber(v[2][5])
-- else
-- attr.type_id = 2
-- attr.attr_val = tonumber(v[2][3])
-- end
-- table.insert(dynamic.equip_extra_attr, attr)
-- end
-- self.dynamic = dynamic
-- else
-- if self.goods_basic.type == GoodsModel.TYPE.EQUIP or self.goods_basic.type == 39 or self.goods_basic.type == 13 then
-- print("==========AwardItem:SetData=>Can't find "..type_id .." in Config, type is "..self.goods_basic.type)
-- end
-- end
if self.is_loaded then
if self.resetTransform then
local rect = self.gameObject:GetComponent("RectTransform")
rect.pivot = Vector2(0,1)
rect.anchorMax =Vector2(0,1)
rect.anchorMin =Vector2(0,1)
rect.anchoredPosition = Vector2.zero
rect.localRotation = Quaternion.Euler(0,0,0)
self.resetTransform = false
end
self.need_refreshData = false
self:SetGray(self.show_gray, self.mask_limit_icon_gray)
local goods_icon = self.goods_basic.goods_icon
type_id = tonumber(type_id)
if Config.ConfigGoodsByCareer[type_id] then
goods_icon = Config.ConfigGoodsByCareer[type_id][RoleManager.Instance.mainRoleInfo.career]
end
self.numText_tmp.text = WordManager:ConvertNum1(self.goods_num, show_decimal)
self:ChangeCountVisible(self.show_count, self.goods_num)
--锁已经去掉了HWR2020.4.22
if self.is_lock and self.is_lock == 1 then
self.lock:SetActive(false)
else
self.lock:SetActive(false)
end
self.stren.text = ""
self.stren_obj:SetActive(false)
self.equipSeriesText_tmp.text = ""
self:SetStar(0)
self.warSoulTypeImg_img.gameObject:SetActive(false)
if self.goods_basic.type == GoodsModel.TYPE.EQUIP then --装备
local equip_cfg = EquipModel:getInstance():GetEquipmentCfg(self.type_id)
if equip_cfg then
local star = equip_cfg.color >= 3 and 1 or 0
local star_color = self.stren_data and self.stren_data.star_color or 1
if equip_cfg.equip_type >= EquipModel.EquipType.Necklace then--首饰展示预览升星属性
star = #equip_cfg.great_attr_list
for k,v in pairs(equip_cfg.great_attr_list) do
if v[3] then
star_color = star_color < v[3] and v[3] or star_color
end
end
end
self:SetEquipEmpowerColor() -- 设置赋能框
if self.stren_data and equip_cfg.series ~= 99 then--屏蔽守护
if self.stren_data.evolution_level and self.stren_data.evolution_level >= 3 then
-- self.stepNum.text = "升星"..(self.stren_data.evolution_level-2)
end
if self.stren_data.strengthen_level and not self.stren_data.show_gems and not self.stren_data.show_stars then
if self.stren_data.strengthen_level > 0 then
self.stren_obj:SetActive(true)
self.stren.text = "+"..self.stren_data.strengthen_level
-- elseif self.stren_data.strengthen_level == 0 and self.stren_data.equip_key == "EquipView" then--在装备界面要显示强化0级
-- self.stren.text = ""
elseif self.stren_data.strengthen_level == 0 and self.stren_data.equip_key == "BagView" then --背包界面不需要显示0级
self.stren.text = ""
else
self.stren.text = ""
end
elseif self.stren_data.equip_key == "EquipView" then--在装备界面要显示强化0级
self.stren.text = ""
end
star = self.stren_data.star <= star and star or self.stren_data.star
if not self.stren_data.show_lv and not self.stren_data.show_gems then
self:SetStar(star,star_color)
end
if self.stren_data.star_action_index ~= nil then
self:SetStarAction(self.stren_data.star_action_index)
end
else
self:SetStar(star,star_color)
end
if self.show_equip_series then
-- if equip_cfg.series ~= 99 then
-- self.lb_dai_txt.text = ChineseNumber(equip_cfg.series) .. "代装备"
-- self.di_dai_obj:SetActive(true)
-- end
end
--装备代数显示
if equip_cfg.series ~= 99 and not (self.stren_data and self.stren_data.is_find) and not (self.stren_data and self.stren_data.show_lv)
and not (self.stren_data and self.stren_data.show_gems) and not (self.stren_data and self.stren_data.show_stars) then
self.equipSeriesText_tmp.text = string.format("%d%s",equip_cfg.series,"")
end
--职业不符合
local career = RoleManager.Instance.mainRoleInfo.career
local have_career = have_career or false
if not have_career then
for i,v in ipairs(equip_cfg.career) do
if v == career then
have_career = true
break
end
end
end
if not have_career then
self:ChangeEquipState(0)
end
end
elseif self.goods_basic.type == 39 then --幻兽
local star = Config.Eudemonsequipattr[self.type_id] and Config.Eudemonsequipattr[self.type_id].star or 0
self:SetStar(star)
--elseif self.goods_basic.type == 16 then --坐骑装备类
-- local star = Config.Mountequipattr[self.goods_basic.type_id] and Config.Mountequipattr[self.goods_basic.type_id].star or 0
-- self:SetStar(star)
elseif self.goods_basic.type == GoodsModel.TYPE.WarSoul then --战魂
self.stren_obj:SetActive(true)
if self.stren_data and self.stren_data.goods_vo and self.stren_data.goods_vo.warSoul_lv
and self.stren_data.goods_vo.warSoul_lv > 0 then
self.stren.text = "+"..self.stren_data.goods_vo.warSoul_lv
else
self.stren.text = ""
end
local war_soul_cfg = WarSoulModel:getInstance():GetWarSoulCfg(self.type_id)
if war_soul_cfg then
self.warSoulTypeImg_img.gameObject:SetActive(true)
self:SetStar(war_soul_cfg.star)
lua_resM:setImageSprite(self, self.warSoulTypeImg_img, "common_asset", "warSoul_goods_type"..war_soul_cfg.kind)
end
elseif self.goods_basic.type == GoodsModel.TYPE.PSIONIC
and self.goods_basic.subtype >= 4
and self.goods_basic.subtype <= 7 then -- 圣物装备
local star = Config.Nucleonequip[self.type_id].star
self:SetStar(star)
else
self:SetStar(0)
end
lua_resM:setOutsideImageSprite(self.res_use_ref,self.iconImage,GameResPath.GetGoodsIcon(goods_icon),true)
lua_resM:setImageSprite(self,self.bg,"common_asset","tyui_pz_"..self.color)
self:SetColorEffect(1)
self:SetItemBgVisible(self.bg_visible)
self:SetNumTextSize()
self:IsGetGoods(self.get_goods)
if self.item_alpha ~= nil then
self:SetAlpha(self.item_alpha)
self.item_alpha = nil
end
if self.visible_cache ~= nil then
self:SetVisible(self.visible_cache, self.show_default_cache, self.force_hide)
self.visible_cache = nil
self.show_default_cache = nil
end
if self.equip_state_cache ~= nil then
self:ChangeEquipState(self.equip_state_cache)
end
self:SetLimitState()
else
self.need_refreshData = true
end
end
--设置背景和图标透明度
function AwardItem:SetAlpha(num)
if self.is_loaded then
self.iconImage.alpha = num
self.bg.alpha = num
self.item_alpha = nil
else
self.item_alpha = num
end
end
--设置赋能等级框
function AwardItem:SetEquipEmpowerColor( color_power_lv )
if not self.is_loaded then return end
local equip_cfg = EquipModel:getInstance():GetEquipmentCfg(self.type_id)
if color_power_lv and color_power_lv > 0 then
if self.goods_basic.color >= 5 and equip_cfg and equip_cfg.equip_type ~= EquipModel.EquipType.Guard then--如果是道具红装
self.color = 4 + color_power_lv
else
self.color = self.goods_basic.color + color_power_lv
end
lua_resM:setImageSprite(self,self.bg,"common_asset","tyui_pz_"..self.color)
self:SetColorEffect(1)
return
end
if self.stren_data and self.stren_data.goods_vo then
local em_power_lv = 0
for i,v in pairs(self.stren_data.goods_vo.other_data) do
if v.type == GoodsModel.GoodsInfoType.EquipEmpower then
em_power_lv = tonumber(v.info)
break
end
end
if em_power_lv == 0 and EquipModel:getInstance():IsWearEquip(self.stren_data.goods_vo.goods_id) then--如果是已穿戴
if equip_cfg and equip_cfg.series ~= 99 then
local server_info = EquipModel:getInstance():GetRedEquipInfo(equip_cfg.series,equip_cfg.equip_type)
em_power_lv = server_info and server_info.lv or 0
if self.stren_data and self.stren_data.goods_vo and self.stren_data.goods_vo.empower_lv then
em_power_lv = self.stren_data.goods_vo.empower_lv
end
end
end
if em_power_lv > 0 then
if self.goods_basic.color >= 5 and equip_cfg and equip_cfg.equip_type ~= EquipModel.EquipType.Guard then--如果是道具红装
self.color = 4 + em_power_lv
else
self.color = self.goods_basic.color + em_power_lv
end
end
end
self.color_power_lv = color_power_lv
end
-- --设置双属性宝石icon显示
-- function AwardItem:SetDataDoubleStone(goods_id)
-- local goodsVo = GoodsModel:getInstance():GetBagGoodsInfoById(goods_id)
-- if goodsVo == nil then return end
-- if goodsVo.type == 14 and (goodsVo.subtype == 9 or goodsVo.subtype == 10) then
-- self:SetDoubleStoneIcon(self.type_id,goodsVo.stage,goodsVo.dstone_lv)
-- end
-- end
-- --设置双属性宝石icon
-- function AwardItem:SetDoubleStoneIcon(type_id,stage,dstone_lv)
-- if type_id and dstone_lv then
-- -- self.step.gameObject:SetActive(true)
-- -- lua_resM:setImageSprite(self,self.step,"tex16bit_asset","icon_step_"..stage, true)
-- self.stepNum.text = stage.."阶"
-- local cfg = Config.Equipdstoneicon[type_id.."@"..dstone_lv]
-- if cfg then
-- local goods_icon = cfg.icon_id
-- lua_resM:setOutsideImageSprite(self.res_use_ref,self.iconImage,GameResPath.GetGoodsIcon(goods_icon))
-- end
-- end
-- end
--直接在外部设置展示属性
function AwardItem:SetShowDynamic(dynamic)
self.dynamic = self.dynamic or {}
for i, v in pairs(dynamic) do
self.dynamic[i] = v
end
end
function AwardItem:SetStar(num,star_color)
star_color = star_color or 1
for i = 1,3 do
if self["star"..i] then
self["star"..i]:SetActive(false)
end
lua_resM:setImageSprite(self, self["star"..i.."_img"], "common_asset", "evo_x_"..star_color)
end
self.starBg_obj:SetActive(num > 3)
if num <= 3 then
self.starNum_txt.text = ""
for i = 1,num do
self["star"..i]:SetActive(true)
end
else
self.starNum_txt.text = num
self["star2"]:SetActive(true)
end
for i=1,3 do
if self["star"..i].activeSelf and star_color >= 2 then
self:AddStarEffect(self["star"..i].transform,"ui_star", 0.6)
else
self:ClearUIEffect(self["star"..i].transform)
end
end
end
function AwardItem:SetStarAction( star_index )
star_index = star_index > 3 and 2 or star_index
local star_img = self["star"..star_index.."_img"]
if not star_img then return end
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.star1)
for i=1,3 do
self["star"..i.."_img"].alpha = 1
end
--第一步动画(左边节点放大显示并延迟然后显示名字)
local function star_alpha_func( percent )
star_img.alpha = percent
end
local hide_action = cc.CustomUpdate.New(1,star_alpha_func)
local function end_alpha_func( percent )
star_img.alpha = 1 - percent
end
local show_action = cc.CustomUpdate.New(1,end_alpha_func)
local action = cc.Sequence.New(hide_action,show_action)
cc.ActionManager:getInstance():addAction(cc.RepeatForever.New(action), self.star1)
end
function AwardItem:SetNumText(num)
local num_str = num
if tonumber(num) then
num_str = WordManager:ConvertNum(num)
end
self.numText_tmp.text = num_str
self:SetNumTextSize()
self:ChangeCountVisible(true,999)
end
function AwardItem:SetNumText2(isLastOne,need_num,have_num)
if isLastOne == true then
self.numText_tmp.text = need_num
else
if have_num >= need_num then
self.numText_tmp.text = string.format("<color=%s>%s/%s</color>",ColorUtil.WHITE,have_num,need_num)
else
self.numText_tmp.text = string.format("<color=%s>%s/%s</color>",ColorUtil.RED,have_num,need_num)
end
end
self:SetNumTextSize()
self.numText.gameObject:SetActive(true)
end
--外部自定义数量字符串
function AwardItem:SetNumStr(str)
local num_str = str and str or ""
self.custom_num_str = num_str
self.numText_tmp.text = num_str
self:SetNumTextSize()
self:ChangeCountVisible(true, 999)
end
--数量是否显示
function AwardItem:ChangeCountVisible(bool, goods_num)
self.show_count = bool
goods_num = goods_num or self.goods_num or 0
local force_max_show_num = self.force_max_show_num or 1
if self.is_loaded then
if self.force_show_num then
self.numText.gameObject:SetActive(true)
else
if not self.show_count or tonumber(goods_num) <= force_max_show_num then
-- self.numBg:SetActive(false)
self.numText.gameObject:SetActive(false)
else
-- self.numBg:SetActive(true)
self.numText.gameObject:SetActive(true)
end
end
end
end
function AwardItem:SetColorEffect(size)
if self.hide_effect then return end
local scale
if self.width and self.height then --已经设置缩放
scale = self.width / self.base_sx
end
scale = size and size or scale
if not self.hide_color_effect then
-- if self.spe_color_effect then
-- if self.spe_color_effect == 3 then
-- --self:SetItemEffect("ui_objecticon04", scale)
-- elseif self.spe_color_effect == 4 then
-- --self:SetItemEffect("ui_objecticon05", scale)
-- end
if self.color == 3 and self.is_act then--是否是活动道具 如果是 紫色的也要显示特效
self:SetItemEffect("ui_pinzhi03", scale)
elseif self.color == 4 then
self:SetItemEffect("ui_pinzhi04", scale)
elseif self.color == 5 then
self:SetItemEffect("ui_pinzhi05", scale)
elseif self.color == 6 then
self:SetItemEffect("ui_pinzhi06", scale)
else
self:ResetItemEffect()
end
else
self:ResetItemEffect()
end
end
--设置是否是活动状态如果是 紫色 的也要显示特效
function AwardItem:SetIsAct( is_act )
self.is_act = is_act
end
function AwardItem:IsShowEffect()
return self.color == 3 or self.color == 4 or self.color == 5 or self.color == 6 or self.spe_color_effect
end
function AwardItem:SetItemEffect(effect, scale)
if effect and self.effect then
--如果当前已经有特效,先检查是否是目标特效
if not IsNull(self.award_effect_gameobject) and self.last_award_effect_name and self.last_award_effect_name == effect then
if type(scale) == "number" then
if scale ~= -1 then
self.award_effect_transform.localScale = Vector3.one * scale * 100
end
elseif type(scale) == "table" then
self.award_effect_transform.localScale = Vector3(scale.x, scale.y, scale.z) * 100
else
self.award_effect_transform.localScale = Vector3(72,72,72)
end
self.award_effect_gameobject:SetActive(true)
return
elseif not IsNull(self.award_effect_gameobject) and self.last_award_effect_name and self.last_award_effect_name ~= effect then
self:ResetItemEffect()
end
local function load_call_back(objs, is_gameObject)
if self.transform then --没有删除根变换
if self._use_delete_method then
if is_gameObject then destroy(objs[0]) end
return
end
if IsNull(self.effect) then
if is_gameObject then destroy(objs[0]) end
return
end
--如果没特效,则返回
if not objs or not objs[0] then
return
end
local go = is_gameObject and objs[0] or newObject(objs[0])
if string.find(go.name, self.last_award_effect_name, 1, true) then
--最后加载的模型是最新的
else
destroy(go) --最后加载的模型不是最新的 就删掉该模型
return
end
local transform = go.transform
transform:SetParent(self.effect)
transform.localPosition = Vector3.zero
SetLocalRotation(transform)
if type(scale) == "number" then
if scale ~= -1 then
transform.localScale = Vector3.one * scale * 100
end
elseif type(scale) == "table" then
transform.localScale = Vector3(scale.x, scale.y, scale.z) * 100
else
transform.localScale = Vector3(72,72,72)
end
self.award_effect_gameobject = go
self.award_effect_transform = transform
end
end
if self.last_award_effect_name and self.last_award_effect_name == effect then
return
end
self.last_award_effect_name = effect
lua_resM:loadPrefab(self, effect, effect, load_call_back, false, ASSETS_LEVEL.HIGHT)
end
end
function AwardItem:ResetItemEffect( )
if not IsNull(self.award_effect_gameobject) and self.last_award_effect_name then
lua_resM:AddObjToPool(self, self.last_award_effect_name, self.last_award_effect_name, self.award_effect_gameobject)
-- destroy(self.award_effect_gameobject)
self.award_effect_gameobject = nil
self.last_award_effect_name = nil
end
end
function AwardItem:AddStarEffect( transform,effect,scale )
if effect and transform then
self:AddUIEffect(effect, transform, self.layer_name, Vector3(2,1,0), scale or 1, true, nil, self.mask_id,nil,nil,0.8)
end
end
function AwardItem:ClearStarEffect( )
if not IsNull(self.transform) then
for i=1,3 do
self:ClearUIEffect(self["star"..i].transform)
end
end
end
function AwardItem:ClearEffectForce( )
self:ClearUIEffect(self.effect)
self:ResetItemEffect()
self:ClearStarEffect()
self.hide_effect = true
end
--设置背景与图标之间的特效 参数1:ab包
function AwardItem:SetBgEffect( bg_effect ,scale,mask_id )
if bg_effect and self.bgeffect then
self:AddUIEffect(bg_effect, self.bgeffect, self.layer_name, nil, scale or 1, true, nil, mask_id)
end
end
function AwardItem:SetItemSize(width, height)
self.width = width
self.height = height
if not self.is_loaded then
self.need_resize = true
return
else
if self.is_fix_size then
if width and width <= 47 then--60%
width = 47
elseif width and width <= 62 then--80%
width = 62
elseif width and width > 62 then--100%
width = 78
end
end
self.width = width or 78
self.height = width or 78
self.need_resize = false
-- self.width = width or self.base_sx
-- self.height = height or self.base_sx
-- local bord = self.width * 1/10
local x_ratio = self.width / self.base_sx --0.88 -- 90/104
local y_ratio = self.height / self.base_sy
--父节点锚点是左上角的情况
self.transform.sizeDelta = Vector2(self.base_sx, self.base_sy)
self.redDot.sizeDelta = Vector2(20 / x_ratio, 20 / y_ratio)
self.transform.pivot = Vector2(0, 1)
if self.parent then
--直接整体缩放
local grid = self.parent:GetComponent("GridLayoutGroup")
if grid and grid.cellSize then
self.transform.pivot = Vector2(0.5, 0.5)
end
end
self.transform.localScale = Vector2(x_ratio, y_ratio)
-- self:SetColorEffect()
end
end
function AwardItem:SetIsFixSize( is_fix_size )
self.is_fix_size = is_fix_size
end
function AwardItem:SetSelect(bool,select_type)
self.is_select = bool
if self.is_loaded then
if select_type == 2 then--第二种是打勾的形状 很多地方要用到 特地加上
self.selectImage2:SetActive(bool)
else
self.selectImage:SetActive(bool)
end
end
end
--设置数量的位置,字体,大小
function AwardItem:SetNumTextSize(refresh_pos)
-- local bord = self.width * 1/10
-- local x = self.width / 84 * self.numBg_sizeDelta.x
-- local y = self.height / 84 * self.numBg_sizeDelta.y
-- x = x > self.numText_tmp.preferredWidth and x or self.numText_tmp.preferredWidth + 8
-- self.numBg_trams.sizeDelta = Vector2(x, y)
-- if refresh_pos then
-- self.numBg_trams.localPosition = Vector3(self.numBg_trams.localPosition.x, self.numBg_trams.localPosition.y + bord + 2 , 0)
-- end
-- local h = self.numText_sizeDelta.y
-- if refresh_pos then
-- self.numText_tmp.fontSize = math.floor(16 * self.width / 84)
-- -- h = 16 / self.numText.sizeDelta.y * (self.numText_tmp.fontSize + 2)
-- self.numText.localPosition = Vector3(self.numBg_trams.localPosition.x, self.numBg_trams.localPosition.y - bord / 2 , 0)
-- end
-- self.numText.sizeDelta = Vector2(x, h)
end
function AwardItem:SetItemBgVisible(b)
if b then
self.bg_trams.gameObject:SetActive(true)
else
self.bg_trams.gameObject:SetActive(false)
end
self.bg_visible=b
end
function AwardItem:SetItemVisible(b)
if b then
self.icon.gameObject:SetActive(true)
else
self.icon.gameObject:SetActive(false)
end
end
function AwardItem:SetWareTip(bool )
-- self.ware_tip_state = bool
-- if self.is_loaded then
-- self.ware_tip:SetActive(bool)
-- end
end
--置灰
function AwardItem:SetGray(bool, mask_limit_icon_gray)
if self.is_loaded then
self.show_gray = bool
self.mask_limit_icon_gray = mask_limit_icon_gray
self.mask_icon:SetActive(bool)
if not mask_limit_icon_gray then
SetImageGray(self.numLimitIcon_img,bool)
end
end
end
--整个awarditem置灰 包括物品图标icon和背景bg --2020/3/13 策划要求邮件奖励全置灰
function AwardItem:SetIconGray(bool)
if self.is_loaded then
self.show_gray = bool
self.mask_icon:SetActive(false)--这个遮罩不要,内容有置灰就行了
self.iconImage.gray = bool
SetImageGray(self.warSoulTypeImg_img,bool)
self.bg.gray = bool
end
end
--这个方法用于外部需要另外改变图标的需求
function AwardItem:SetGoodsIcon(goods_icon, setNativeSize)
if self.iconImage then
lua_resM:setOutsideImageSprite(self.res_use_ref, self.iconImage, GameResPath.GetGoodsIcon(goods_icon), setNativeSize)
end
end
--这个方法用于外部需要另外改变图标的需求[不走物品图标路径]
function AwardItem:SetGoodsIconFormPath(path, setNativeSize)
if self.iconImage then
lua_resM:setOutsideImageSprite(self.res_use_ref, self.iconImage, path, setNativeSize)
end
end
--设置上锁的图标
function AwardItem:SetLockIcon()
self:ClearAllEffect()
self:ResetItemEffect()
self.icon.gameObject:SetActive(true)
lua_resM:setImageSprite(self, self.iconImage, "common_asset","tyui_suo_2")
end
function AwardItem:SetIconEmpty( )
if self.iconImage then
self:ClearAllEffect()
self:ResetItemEffect()
lua_resM:setImageSprite(self, self.iconImage, "uiComponent_asset","com_empty")
end
end
--装备的升降禁
function AwardItem:ChangeEquipState(state)
if self.is_loaded then
self.need_refreshData = false
if state then
self.equip_mark:SetActive(true)
local src = state == 1 and "tyui_Arrow_1" or state == 2 and "tyui_Arrow_2" or "com_forbid"
lua_resM:setImageSprite(self,self.equip_mark:GetComponent("Image"),"common_asset",src,true)
local mark_trans = self.equip_mark.transform
self.mark_trans = mark_trans
--if state == 1 then
--cc.ActionManager:getInstance():removeAllActionsFromTarget(mark_trans)
--SetLocalPositionY(mark_trans, -77)
--local x, y = mark_trans:GetLocalPosXY()
--local action = cc.FloatFadeIn.New(x, y, 0, 20, 0.7, 0.6, mark_trans)
--cc.ActionManager:getInstance():addAction(action, mark_trans)
--else
--SetLocalPositionY(mark_trans, -63.000042)
--cc.ActionManager:getInstance():removeAllActionsFromTarget(mark_trans)
--end
self.equip_mark:SetActive(state ~= 2) --下降不需要显示,下降的箭头
else
self.equip_mark:SetActive(false)
end
self.equip_state_cache = nil
else
self.need_refreshData = true
self.equip_state_cache = state
end
end
--是否只显示背景
function AwardItem:OnlyShowBg(is_blank, bg_color)
if is_blank then
self.bg_trams.gameObject:SetActive(true)
self.icon.gameObject:SetActive(false)
--self.numBg:SetActive(false)
self.numText.gameObject:SetActive(false)
self.lock:SetActive(false)
self:SetStar(0)
self.show_tips = false
self:SetGray(false)
self.stren.text = ""
-- self.step.gameObject:SetActive(false)
-- self.stepNum.text = ""
self:ClearUIEffect(self.effect)
local color = bg_color or 8
lua_resM:setImageSprite(self, self.bg,"common_asset","tyui_pz_"..color)
else
self.bg_trams.gameObject:SetActive(true)
self.icon.gameObject:SetActive(true)
-- self.step.gameObject:SetActive(true)
self.show_tips = true
end
end
--设置背景边框
function AwardItem:SetBgShow(bg_color)
if self.bg then
local color = bg_color or 8
lua_resM:setImageSprite(self, self.bg,"common_asset","tyui_pz_"..color)
end
end
function AwardItem:SetCircleBgShow(bg_color)
if self.bg then
local color = bg_color or 7
lua_resM:setImageSprite(self, self.bg,"common_asset","tyui_ypz_"..color)
end
end
--自定义背景
function AwardItem:SetBgSource(ab_name,real_name)
if self.bg and ab_name and real_name then
lua_resM:setImageSprite(self, self.bg,ab_name,real_name)
end
end
--自定义点击物品回调
function AwardItem:SetCallBack(callback)
self.show_tips = true
self.raycast_target_enable = true
self.clickBg.raycastTarget = true
self.callback = callback
end
--点击回调
function AwardItem:SetWithCallBack(withCallback)
self.show_tips = true
self.withCallback = withCallback
end
--是否获取物品途径no_need_show_get(不需要显示获得途径)
function AwardItem:IsGetGoods(bool,get_str,no_need_show_get,font_size)
self.get_goods = bool and true or false
self.no_need_show_get = no_need_show_get or self.no_need_show_get
self.get_str = get_str or self.get_str
self.font_size = font_size or 24
if not self.is_loaded then
self.need_refreshIsGetIcon = true
return
end
self.need_refreshIsGetIcon = false
if self.getIcon then
self.getIcon:SetActive(self.get_goods)
end
if self.get_str then
self.get_num_tmp.text = self.get_str
end
-- if self.font_size then
-- self.get_num_tmp.fontSize = self.font_size
-- end
end
function AwardItem:__delete()
self:ResetItemEffect()
self:ClearStarEffect()
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.transform)
if self.close_id_long then
GlobalTimerQuest:CancelQuest(self.close_id_long)
self.close_id_long = nil
end
self:ClearUIEffect(self.effect)
self:clearResRef()
if self.mask_id then
self:UnRegisterMask(self.mask_id)
self.mask_id = nil
end
end
function AwardItem:SetEmptyGrid( )
lua_resM:setImageSprite(self,self.bg,"mainUI_asset","main_item_bg")
end
function AwardItem:SetEmptyGrid2( )
lua_resM:setImageSprite(self,self.bg,"common_asset","tyui_pz_8")
end
function AwardItem:SetTextPos( pos )
self.numText.transform.anchoredPosition = pos
end
function AwardItem:SetStrenTextPos(x,y)
self.stren.transform.anchoredPosition = Vector2(x,y)
end
function AwardItem:SetParent(parent)
if self.is_loaded then
self.transform:SetParent(parent)
else
self.parent = parent
end
end
-- function AwardItem:SetGuardTip( bool )
-- if self.is_loaded then
-- self.guard_tip:SetActive(bool)
-- end
-- end
function AwardItem:SetTrueTip( bool )
-- self.is_select = bool
-- if self.is_loaded then
-- self.true_tip:SetActive(bool)
-- end
end
--设置数量的位置,字体,大小
function AwardItem:SetNumTextSize2(value)
self.numText_tmp.fontSize = value
end
function AwardItem:SetStatueTips(bool, image_res, res_ab, is_set_nativesize)
-- self.statue = bool
-- self.statue_res = image_res
-- self.res_ab = res_ab
-- if self.is_loaded then
-- self.statue_tip:SetActive(bool)
-- if bool and image_res and image_res ~= "" then
-- lua_resM:setImageSprite(self, self.statue_tip.transform:GetComponent("Image"), self.res_ab or "common_asset", image_res)
-- if is_set_nativesize then
-- self.statue_tip.transform.sizeDelta = co.TableXY(116,72)
-- else
-- self.statue_tip.transform.sizeDelta = co.TableXY(81,50)
-- end
-- end
-- else
-- self.need_refreshStatue = true
-- end
end
-- function AwardItem:SetLimiticon(bool)
-- if self.is_loaded then
-- self.limit_tip:SetActive(bool)
-- end
-- end
function AwardItem:SetRedDot(bool,x,y)
if self.is_loaded then
self.redDot_obj:SetActive(bool)
SetAnchoredPosition(self.redDot,x or 37,y or 37)
end
end
function AwardItem:clearResRef( )
lua_resM:clearReference(self.res_use_ref)
end
function AwardItem:ResetInfo( )
self:SetIconEmpty()
self:clearResRef()
self:ClearUIEffect(self.effect)
self:ClearCacheEffect()
self:SetAlpha(1)
self:IsNeedShowSeries(false)
self.hide_effect = false--默认不隐藏特效
self.bg_visible = true
self.resetPos = false
self.color = nil
self.spe_color_effect = nil
self.is_lock = nil
self.is_fix_size = true --是否使用客户端限制的3种规格
if self.mask_id then
self:UnRegisterMask(self.mask_id)
self.mask_id = nil
end
self:SetGray(false)
self:SetIconGray(false)
self.resetTransform = false
self.callback = nil
self.withCallback = nil
self.loadCall = nil
self.parent = nil
self.position = false
self.anchoredPosition = false
self.ClickCallFun = nil
self.type_id = nil
self.goods_num = nil
self.stren_data = nil--装备精炼数据 {strengthen_level = 1, step = 1, star = 1}
self.goods_basic = nil
self.equip_state_cache = nil
self.extra_tip_state = nil
self.get_goods = false --获取途径
self.random_tip_value = false --随机掉落标识
self.is_select = false
self.ware_tip_state = false
self.must_tip_value = false --必掉提示ICON
self.no_need_show_get = false--不显示获取途径
self.open_show_get_way = true
self.show_count = true
self:IsGetGoods(false)
self:SetItemVisible(true)
self:SetEnableClick(true)
self:SetGoodsVo(nil)
self.force_show_num = false--是否强制显示数字
self.shop_buy_num = 1--快捷购买部数量默认是1
self.limit_state = BagModel.GoodsLimitState.Normal
self.stren_prefix = "+"
self.have_career = false
self.force_show_limit_tip_view = false
self.force_max_show_num = nil
self.color_power_lv = 0
self.get_str = ""
self.is_act = false--是否是活动道具 如果是 紫色的也要显示特效
-------------------------
if self.is_loaded then
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.star1)
for i=1,3 do
self["star"..i.."_img"].alpha = 1
end
self.starNum_txt.text = ""
self.starBg_obj:SetActive(false)
self:SetVisible(true,nil,true)
self:SetStar(0)
self.need_refreshResetInfo = false
self.numText_tmp.text = ""
-- self.stepNum.text = ""
-- self.numText2.text = ""
self.stren.text = ""
self.stren_obj:SetActive(false)
self.get_num_tmp.text = ""
-- self.lb_dai_txt.text = ""
self.numText.gameObject:SetActive(true)
self.bg_trams.gameObject:SetActive(true)
self.icon.gameObject:SetActive(true)
-- self.randomn_drop_tip_text.text = "随机"
-- self.drop_tip:SetActive(false)
-- self.randomn_drop_tip:SetActive(false)
self.lock:SetActive(false)
self.getIcon:SetActive(false)
-- self.guild_tip:SetActive(false)
-- self.guard_tip:SetActive(false)
-- self.ware_tip:SetActive(false)
self.equip_mark:SetActive(false)
-- self.expiredIcon:SetActive(false)
-- self.true_tip:SetActive(false)
-- self.vip_tip:SetActive(false)
self.mask_icon:SetActive(false)
-- self.statue_tip:SetActive(false)
-- self.limit_tip:SetActive(false)
self.redDot_obj:SetActive(false)
self.selectImage:SetActive(false)
self.selectImage2:SetActive(false)
-- self.double_tip:SetActive(false)
-- self.extra_tip:SetActive(false)
self.xs_imgGo:SetActive(false)
-- self.di_dai_obj:SetActive(false)
self.equipSeriesText_tmp.text = ""
lua_resM:setImageSprite(self,self.bg,"uiComponent_asset","com_empty")
lua_resM:setImageSprite(self,self.warSoulTypeImg_img,"uiComponent_asset","com_empty")
lua_resM:setImageSprite(self, self["star5_img"], "common_asset", "tyui_x3")
-- self.stren.transform.anchoredPosition = Vector2(-10,23.5)
lua_resM:setImageSprite(self,self.numLimitIcon_img,"uiComponent_asset","com_empty")
self.numLimitIcon:SetActive(false)
self.expire_time = false
self.expire_type = false
self:ResetLimitState()
SetLocalScale(self.transform,1,1,1)
SetAnchoredPosition(self.redDot,37,37)
-------------------------
self.ClickCallFun = AwardItem.ClickCallFun
if self.is_long_click then
local function empty_call( ) end
AddDownEvent(self.gameObject, empty_call)
AddUpEvent(self.gameObject, empty_call)
self.is_long_click = nil
end
else
self.need_refreshResetInfo = true
end
end
function AwardItem:ReleaseObj( )
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self)
end
-- function AwardItem:SetBottomNumText( str )
-- self.numText2.text = str
-- end
function AwardItem:SetEnableClick(bool)
self.show_tips = bool
if self.is_loaded and self.raycast_target_enable ~= self.show_tips then
self.raycast_target_enable = self.show_tips
self.clickBg.raycastTarget = self.show_tips
end
end
-- state 是外部传入的状态,针对BagModel.GoodsLimitState
function AwardItem:SetLimitState(state)
self.limit_state = state
if self.is_loaded then
if self.goods_basic then
if self.goods_basic.expire_type ~= 0 or (self.limit_state ~= BagModel.GoodsLimitState.Normal and self.limit_state)then
if self.limit_state then
self:ShowLimitIcon(true, self.limit_state)
else
--外部没传入,默认显示限时
self:ShowLimitIcon(true,1)
end
else
self:ShowLimitIcon(false)
end
else
self:ShowLimitIcon(false)
end
else
self.need_set_limit_state = true
end
end
function AwardItem:ShowLimitIcon( show,type )
type = type or 1
self.show_limit = show
self.show_limit_type = type
if not self.is_loaded then
self.need_reset_limit_icon = true
return
end
self.xs_imgGo:SetActive(show and true or false)
if type and type == 1 then
lua_resM:setImageSprite(self,self.limit_img,"uiComponent_asset","ui_com_xs_pointfilter",true)
elseif type and type == 2 then
lua_resM:setImageSprite(self,self.limit_img,"uiComponent_asset","ui_com_gq_pointfilter",true)
end
end
function AwardItem:ResetLimitState()
self:ShowLimitIcon(false)
self.limit_state = BagModel.GoodsLimitState.Normal
end
--长按点击函数
function AwardItem:BindLongPressEvent(callback, duration, isInfinite, short_click_call_back,long_press_end_call)
if not self.is_loaded then
self.cache_bind_long_press_info = {callback, duration, isInfinite, short_click_call_back}
self.is_need_rebind_long_press = true
return
end
self.is_need_rebind_long_press = false
duration = duration or 0.3
if short_click_call_back then
self.ClickCallFun = function() end
end
if callback then
-- self.callback_long = callback
local function touch_end(target,x,y)
if self.close_id_long then
GlobalTimerQuest:CancelQuest(self.close_id_long)
self.close_id_long = nil
end
local curTime = TimeUtil:getServerTimeMs()/1000
if curTime - self.click_start_time < duration then
if short_click_call_back then
short_click_call_back(target,x,y)
end
else--长按之后如果需要回调就执行一下
if long_press_end_call then
long_press_end_call()
end
end
end
local function touch_begin(target,x,y)
self.click_start_time = TimeUtil:getServerTimeMs()/1000
local function clockFun()
local is_stop = callback(target,x,y)
if is_stop then
if self.close_id_long then
GlobalTimerQuest:CancelQuest(self.close_id_long)
self.close_id_long = nil
end
end
end
if not self.close_id_long then
local run_time = 1
if isInfinite then
run_time = -1
end
self.close_id_long = GlobalTimerQuest:AddPeriodQuest(clockFun, duration, run_time)
end
-- self.callback_long(target,x,y)
end
AddDownEvent(self.gameObject, touch_begin)
AddUpEvent(self.gameObject, touch_end)
self.is_long_click = true
else
self.is_long_click = nil
end
end
--设置awarditem左上角或者右上角角标
--特殊value有些类的资源比较复杂不能只用state创建
function AwardItem:SetNumLimitVisible( bool, state, value )
if self.numLimitIcon then
self.numLimitIcon:SetActive(bool)
end
if bool and self.numLimitIcon then
local ab_name = "common_asset"
local res_name
if state and state == 1 then --双倍
res_name = "con_itemtab_double"
SetAnchoredPosition(self.numLimitIcon.transform, 20, -10)
SetSizeDelta(self.numLimitIcon.transform, 59, 38)
elseif state and state == 2 then --概率
res_name = "con_itemtab_lucky"
SetAnchoredPosition(self.numLimitIcon.transform, 20,-10)
SetSizeDelta(self.numLimitIcon.transform, 59, 37)
elseif state and state == 3 then --首通
res_name = "con_itemtab_first"
SetAnchoredPosition(self.numLimitIcon.transform, 20, -10)
SetSizeDelta(self.numLimitIcon.transform, 59, 38)
elseif state and state == 4 then --限量
res_name = "com_limit_pointfilter"
SetAnchoredPosition(self.numLimitIcon.transform, 20, -4)
SetSizeDelta(self.numLimitIcon.transform, 46, 25)
elseif state and state == 5 then --可上架
res_name = "com_market"
SetAnchoredPosition(self.numLimitIcon.transform, 63, -15)
SetSizeDelta(self.numLimitIcon.transform, 20, 20)
elseif state and state == 6 then --限时
res_name = "com_time_limit"
SetAnchoredPosition(self.numLimitIcon.transform, 63, -6)
SetSizeDelta(self.numLimitIcon.transform, 35, 18)
elseif state and state == 7 then --BOSS奖励
res_name = "con_itemtab_boss"
SetAnchoredPosition(self.numLimitIcon.transform, 53, -6)
SetSizeDelta(self.numLimitIcon.transform, 116, 28)
elseif state and state == 8 then --绝版珍稀
res_name = "con_itemtab_zhenxi"
SetAnchoredPosition(self.numLimitIcon.transform, 89, -8)
SetSizeDelta(self.numLimitIcon.transform, 102, 64)
elseif state and state == 9 then --已领取
res_name = "con_itemtab_getted"
SetAnchoredPosition(self.numLimitIcon.transform, 39,-40)
SetSizeDelta(self.numLimitIcon.transform, 124*0.7, 67*0.7)
elseif state and state == 10 then --主战区
ab_name = "CSGWar_asset"
res_name = "CSGWar_font15"
SetAnchoredPosition(self.numLimitIcon.transform, 34, -14)
SetSizeDelta(self.numLimitIcon.transform, 71, 30)
elseif state and state == 11 then --副战区
ab_name = "CSGWar_asset"
res_name = "CSGWar_font16"
SetAnchoredPosition(self.numLimitIcon.transform, 34, -14)
SetSizeDelta(self.numLimitIcon.transform, 71, 30)
elseif state and state == 12 then --珍宝阁大奖
ab_name = "treasureHouse_asset"
res_name = "treasureHouse_rare2"
SetAnchoredPosition(self.numLimitIcon.transform, 28, -14)
SetSizeDelta(self.numLimitIcon.transform, 58, 37)
elseif state and state == 13 then --珍宝阁珍稀
ab_name = "treasureHouse_asset"
res_name = "treasureHouse_rare1"
SetAnchoredPosition(self.numLimitIcon.transform, 28, -14)
SetSizeDelta(self.numLimitIcon.transform, 58, 37)
elseif state and state == 15 then --额外
res_name = "con_itemtab_mul"
SetAnchoredPosition(self.numLimitIcon.transform, 20, -10)
SetSizeDelta(self.numLimitIcon.transform, 59, 38)
elseif state and state == 16 then --独产
res_name = "com_special"
SetAnchoredPosition(self.numLimitIcon.transform, 63, -6)
SetSizeDelta(self.numLimitIcon.transform, 35, 18)
elseif state and state == 17 then --三星
res_name = "con_itemtab_threestar"
SetAnchoredPosition(self.numLimitIcon.transform, 20,-10)
SetSizeDelta(self.numLimitIcon.transform, 59, 37)
elseif state and state == 18 then --已领取
res_name = "con_itemtab_getted"
SetAnchoredPosition(self.numLimitIcon.transform, 40, -37.5)
SetSizeDelta(self.numLimitIcon.transform, 124 * 0.8 , 67 * 0.8)
elseif state and state == 19 then -- 狂战领域 全部奖励
ab_name = "rageWar_asset"
res_name = "rw_server_mail"
local scale = self.transform.localScale
SetSizeDelta(self.numLimitIcon.transform, 79 / scale.x , 49 / scale.y)
SetAnchoredPosition(self.numLimitIcon.transform, 32, -19.5)
elseif state and state == 20 then--立即领取
ab_name = "kfActivity_asset"
res_name = "zeroGift_tip"
SetAnchoredPosition(self.numLimitIcon.transform, 36, -27)
SetSizeDelta(self.numLimitIcon.transform, 74 , 58)
elseif state and state == 21 then--已领取(打勾类型)
res_name = "con_itemtab_getImg2"
SetAnchoredPosition(self.numLimitIcon.transform, 68,-10)
SetSizeDelta(self.numLimitIcon.transform, 30, 30)
elseif state and state == 22 then --背包提示可使用
ab_name = "bag_asset"
res_name = "bag_tips_use"
SetAnchoredPosition(self.numLimitIcon.transform, 53, -26)
SetSizeDelta(self.numLimitIcon.transform, 55 , 55)
elseif state and state == 23 then -- 狂战已领取
ab_name = "rageWar_asset"
res_name = "rw_received"
local scale = self.transform.localScale
SetSizeDelta(self.numLimitIcon.transform, 65, 63)
SetAnchoredPosition(self.numLimitIcon.transform, 39, -39)
elseif state and state == 24 then -- 已穿戴
res_name = "wear_state_img"
SetSizeDelta(self.numLimitIcon.transform, 52, 20)
SetAnchoredPosition(self.numLimitIcon.transform, 56, -73)
elseif state and state == 25 then -- 可领取
res_name = "con_itemtab_can_getted"
SetAnchoredPosition(self.numLimitIcon.transform, 20, -10)
SetSizeDelta(self.numLimitIcon.transform, 81, 37)
elseif state and state == 27 then -- 源樱之礼 珍稀
ab_name = "sakuraGift_asset"
res_name = "sg_tag_rare"
SetSizeDelta(self.numLimitIcon.transform, 48, 25)
SetAnchoredPosition(self.numLimitIcon.transform, 25, -13)
elseif state and state == 28 then -- 源樱之礼 极品
ab_name = "sakuraGift_asset"
res_name = "sg_tag_best"
SetSizeDelta(self.numLimitIcon.transform, 48, 25)
SetAnchoredPosition(self.numLimitIcon.transform, 25, -13)
elseif state and state == 29 then -- 大的可上架角标,背包与出售大厅使用
res_name = "com_market_2"
SetAnchoredPosition(self.numLimitIcon.transform, 53, -26)
SetSizeDelta(self.numLimitIcon.transform, 55 , 55)
elseif state and state == 30 then -- 羁绊预告激活奖励角标
ab_name = "mate_asset"
res_name = "mate_item_tag"
SetSizeDelta(self.numLimitIcon.transform, 87, 30)
SetAnchoredPosition(self.numLimitIcon.transform, 38, -5)
elseif state and state == 31 then -- 已经领(圆形的)
res_name = "con_itemtab_getted_circle"
SetSizeDelta(self.numLimitIcon.transform, 87, 87)
SetAnchoredPosition(self.numLimitIcon.transform, 39, -39)
elseif state and state == 32 then --绝版
res_name = "con_itemtab_no_have"
SetAnchoredPosition(self.numLimitIcon.transform, 20, -2)
SetSizeDelta(self.numLimitIcon.transform, 67, 42)
elseif state and state == 33 then --UP提升
res_name = "con_itemtab_up"
SetAnchoredPosition(self.numLimitIcon.transform, 33, 0)
SetSizeDelta(self.numLimitIcon.transform, 90, 31)
end
if res_name then
lua_resM:setImageSprite(self,self.numLimitIcon_img,ab_name,res_name, false)
end
end
end
--force_max_show_num:数量小于这个数时不显示数字,使用这个参数需要传前面的bool为false
function AwardItem:SetNumForceShow( bool ,force_max_show_num)
self.force_show_num = bool
self.force_max_show_num = force_max_show_num or nil
self:ChangeCountVisible(self.show_count,self.goods_num)
end--是否强制显示数字
function AwardItem:SetOpenShowGetWay( bool )
self.open_show_get_way = bool
end
function AwardItem:SetShopBuyNum( num )
self.shop_buy_num = num or 1
end
function AwardItem:IsNeedShowSeries( bool )
self.show_equip_series = bool
end
function AwardItem:GetSize( )
return self.width, self.height
end
--设置限时时间
function AwardItem:SetExpireTime( expire_data )
self.expire_time = expire_data.expire_time
self.expire_type = expire_data.expire_type
end
--设置打开物品tips时强制展示限时状态
function AwardItem:SetForceShowLimitTipView(bool)
self.force_show_limit_tip_view = bool
end
--执行下坠动画
function AwardItem:PlayFallingVibrationAction( info )
if self.is_loaded then
cc.ActionManager:getInstance():removeAllActionsFromTarget(self.transform)
local function end_call_func( ... )--抖动底座
end
local data = {
transform = self.transform,--节点
delay_time = info.delay_time or 1.5,--时间
init_scale = info.init_scale or 2,--初始大小
end_scale = info.end_scale or 1,--结束大小
start_pos = info.start_pos or {x = 0,y = 0},--初始坐标
end_pos = info.end_pos or {x = 0,y = 0},--结束坐标
init_alpha = info.init_alpha or 0,--初始透明度
end_alpha = info.end_alpha or 1,--终点透明度
end_call_func = end_call_func,
}
local action = cc.FallingVibration.New(data)
cc.ActionManager:getInstance():addAction(action, self.transform)
end
end