-- <*
|
|
-- @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
|