|
|
- --[[
- 最基础的物品图标类
- 只控制物品图标 和 数量
- 需要其他功能请在继承中实现
- 参考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
|