--[[ 最基础的物品图标类 只控制物品图标 和 数量 需要其他功能请在继承中实现 参考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("%s/%s",ColorUtil.WHITE,have_num,need_num) else self.numText_tmp.text = string.format("%s/%s",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