-- <* -- @Author: Saber -- @Description: 圣物系统 特殊处理的圆形节点 -- *> PsionicArmorCircleItem = PsionicArmorCircleItem or BaseClass(BaseItem) local PsionicArmorCircleItem = PsionicArmorCircleItem local PsionicConst = PsionicConst function PsionicArmorCircleItem:__init(parent_wnd, prefab_asset, layer_name) self.base_file = "common" self.layout_file = "PsionicArmorCircleItem" self.parent_wnd = parent_wnd self.layer_name = layer_name self.default_x, self.default_y = 78, 78 -- awardItem的大小 self.size_x, self.size_y = 78, 78 -- 目标大小 self.override_func = nil self.show_tips = true self.show_count = true self.show_slot = false -- 展示槽位名称 self.model = PsionicModel:getInstance() self:Load() end function PsionicArmorCircleItem:Load_callback() local nodes = { "bg:img", "item_con", "slot_flag_bg:obj", "slot_flag_bg/slot_flag:tmp", } self:GetChildren(nodes) self.bg_img.enabled = false self.award_item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.item_con) self.award_item.hide_effect = true -- 不显示原来的特效 self.award_item:SetAnchoredPosition(0, 0) self.award_item:SetVisible(false) self.award_item:SetItemBgVisible(false) -- 隐藏背景 self:AddEvents() if self.need_refreshData then self:UpdateView() end end function PsionicArmorCircleItem:SetVisible(state, force_hide) BaseItem.SetVisible(self, state, force_hide) if self.award_item then self.award_item:SetVisible(state, force_hide) end end function PsionicArmorCircleItem:AddEvents( ) end function PsionicArmorCircleItem:SetData( type_id, goods_num, color, stren_data ) self.type_id = type_id self.goods_num = goods_num self.color = color self.stren_data = stren_data if self.is_loaded then self.need_refreshData = false self:UpdateView() else self.need_refreshData = true end end function PsionicArmorCircleItem:UpdateView( ) self:SetItemSize(self.size_x, self.size_y) self:OverrideClickEvent(self.override_func) self:SetEnableClick(self.show_tips) self:ChangeCountVisible(self.show_count) self:SetSlotName(self.show_slot) if self.type_id then local goods_basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.type_id) local color = goods_basic and goods_basic.color or 2 -- 最低品质是蓝色品质 lua_resM:setImageSprite(self, self.bg_img, "common_asset", "ps_tip_armor_bg" .. color) self.bg_img.enabled = true self.award_item:SetData(self.type_id, self.goods_num, color, self.stren_data) self.award_item:SetVisible(true) else self.bg_img.enabled = false self.award_item:SetVisible(false) end end function PsionicArmorCircleItem:SetEnableClick(bool) self.show_tips = bool if self.is_loaded and self.award_item then self.award_item:SetEnableClick(bool) end end function PsionicArmorCircleItem:ChangeCountVisible(bool) self.show_count = bool if self.is_loaded and self.award_item then self.award_item:ChangeCountVisible(bool) end end function PsionicArmorCircleItem:SetItemSize(size_x, size_y) self.size_x = size_x self.size_y = size_y or self.size_x if not self.is_loaded then return end local scale_x = self.size_x / self.default_x local scale_y = self.size_y / self.default_y SetLocalScale(self.transform, scale_x, scale_y, 1) end --覆盖AwardItem 的点击方法 function PsionicArmorCircleItem:OverrideClickEvent(func) self.override_func = func if not self.is_loaded or not self.award_item then return end if self.override_func then self.award_item.ClickCallFun = function (target,x,y) func(target,x,y) end end end function PsionicArmorCircleItem:SetSlotName(slot) self.show_slot = slot if self.is_loaded then if not self.show_slot then self.slot_flag_bg_obj:SetActive(false) else self.slot_flag_bg_obj:SetActive(true) self.slot_flag_tmp.text = PsionicConst.EquipSlotName[self.show_slot] end end end function PsionicArmorCircleItem:__delete( ) if self.award_item then UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.award_item) end self.award_item = nil end