源战役客户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

167 lines
5.3 KiB

WardrobeShopItem = WardrobeShopItem or BaseClass(BaseItem)
local WardrobeShopItem = WardrobeShopItem
function WardrobeShopItem:__init()
self.base_file = "wardrobe"
self.layout_file = "WardrobeShopItem"
self.model = WardrobeModel:GetInstance()
self.gray_mat = ShaderTools.gray_mat
self:Load()
end
function WardrobeShopItem:Load_callback()
self.nodes = {
"price_con/price_text:tmp", "bg:imgex", "name_text:tmp", "tip_image:obj:img", "discount_text:tmp:obj", "limit_text:tmp",
"discount_bg:obj", "price_con", "price_con/money_icon:img:obj", "item_con", "click_con:obj",
}
self:GetChildren(self.nodes)
self.awardItem = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem,self.item_con)
self.awardItem:SetItemSize(62, 62)
self.awardItem:SetEnableClick(false)
self:AddEvents()
if self.need_refreshData or self.need_refreshServerData then
self:UpdateView()
end
end
function WardrobeShopItem:AddEvents( )
local function on_click( ... )
self:OpenTipsView()
end
AddClickEvent(self.click_con_obj, on_click)
end
function WardrobeShopItem:UpdateView( )
local data = self.data
if not data then
return
end
local server_data = self.server_data
local function call_back( )
self:SetVisible(true)
end
local goodsVo = GoodsModel:getInstance():GetGoodsBasicByTypeId(data.goods_id)
if not goodsVo then
print("HWR:WardrobeShopItem [46]no goods id: ", data.goods_id)
return
end
self.awardItem:SetData(data.goods_id, data.goods_num, nil, nil)
lua_resM:setImageSprite(self, self.bg_imgex, "shopOut_asset", "shop_item_color"..goodsVo.color, false, call_back)
local is_buy_out = false
local left_num = data.limit_num
if server_data then
is_buy_out = data.limit_num <= server_data.num
left_num = data.limit_num - server_data.num
else
end
local limit_str = "终身限购 %s/%s"
if data.limit_type > 0 then
left_num = left_num > 0 and left_num or 0
local color_str = left_num > 0 and ColorUtil.GREEN_DARK or ColorUtil.RED_DARK
if data.limit_type == 1 then
limit_str = "每周限购 %s/%s"
elseif data.limit_type == 2 then
limit_str = "每日限购 %s/%s"
elseif data.limit_type == 3 then
limit_str = "终身限购 %s/%s"
end
self.limit_text_tmp.text = string.format(limit_str, HtmlColorTxt(left_num, color_str), data.limit_num)
else
self.limit_text_tmp.text = ""
end
local shop_price = round(data.price * data.discount / 100)
self.price_text_tmp.text = shop_price
SetSizeDeltaX(self.price_text, self.price_text_tmp.preferredWidth)
self.discount_text_tmp.text = (data.discount / 10)..""
self.discount_bg_obj:SetActive(data.discount < 100)
self.discount_text_obj:SetActive(data.discount < 100)
self:SetItemGary(is_buy_out)
end
function WardrobeShopItem:SetData( data,index )
self.data = data
self.index = index
if self.is_loaded then
self.need_refreshData = false
self:UpdateView()
else
self.need_refreshData = true
end
end
function WardrobeShopItem:SetServerData( data )
self.server_data = data
if self.is_loaded then
self.need_refreshServerData = false
self:UpdateView()
else
self.need_refreshServerData = true
end
end
function WardrobeShopItem:SetItemGary(bool)
local mat = bool and self.gray_mat or nil
local data = self.data
if bool then
self.price_text_tmp.text = "已售完"
self.money_icon_obj:SetActive(false)
else
self.money_icon_obj:SetActive(true)
end
self:SetMoneyIcon()
self.price_text_tmp.color = bool and ColorUtilValue.GRAY_DARK or ColorUtil:ConvertHexToRGBColor("#fdffc2")
local goods_name = GoodsModel:getInstance():getGoodsName(data.goods_id, not bool)
self.goods_basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(data.goods_id)
self.name_text_tmp.color = bool and ColorUtilValue.GRAY_DARK or ColorUtil:ConvertHexToRGBColor("#ffffff")
self.name_text_tmp.text = goods_name
self.bg_imgex.gray = bool
self.awardItem:SetGray(bool)
if bool then
self.tip_image_obj:SetActive(true)
lua_resM:setImageSprite(self, self.tip_image_img, "wardrobe_asset", "wardrobe_type0", true)
else
local tips = data.tag
if tips >= 1 then
lua_resM:setImageSprite(self, self.tip_image_img, "wardrobe_asset", "wardrobe_type"..tips, true)
end
self.tip_image_obj:SetActive(tips >= 1)
end
end
-- 加载货币图标
function WardrobeShopItem:SetMoneyIcon()
if not self.data or not self.data.money_type then return end
local asset, source = WordManager:GetCommonMoneyIcon(self.data.money_type)
self.money_icon.transform.sizeDelta = co.TableXY(25,25)
lua_resM:setImageSprite(self, self.money_icon_img, asset, source)
end
function WardrobeShopItem:OpenTipsView( )
if self.goods_basic.type == GoodsModel.TYPE.EQUIP then --装备鉴定物
UIToolTipMgr:getInstance():AppendEquipTips(self.goods_basic.type_id, x, y,nil,nil,nil,nil,"shop_buy",self.data)
else
local data = {
shop_data = self.data,
}
data.shop_data.quota_type = self.data.limit_type
data.shop_data.quota_num = self.data.limit_num
if self.server_data then
data.shop_data.sold_out = self.server_data.num
else
data.shop_data.sold_out = 0
end
data.shop_data.is_wardrobe_shop = true
UIToolTipMgr:getInstance():AppendGoodsTips(self.goods_basic.type_id, x, y, nil, nil,data, true)
end
end
function WardrobeShopItem:__delete( )
if self.awardItem then
UIObjPool:getInstance():PushItem(UIObjPool.UIType.AwardItem, self.awardItem)
self.awardItem = nil
end
end