2025-06-04 05:02:57 +08:00

160 lines
3.8 KiB
Plaintext

ExchangeItemCell = class("ExchangeItemCell", ItemCell)
local str_format = "%s/%s"
local tempColor = LuaColor.white
ExchangeItemCellEvent = {
Minus = "ExchangeItemCellEvent_Minus",
LongPress = "ExchangeItemCellEvent_LongPress",
LongPressSubtract = "ExchangeItemCellEvent_LongPressSubtract",
}
function ExchangeItemCell:Init()
self:FindObj()
self:AddEvts()
end
function ExchangeItemCell:FindObj()
local itemCell = self:FindGO("Common_ItemCell");
if(not itemCell)then
self.itemgo = self:LoadPreferb("cell/ItemCell", self.gameObject);
self.itemgo.name = "Common_ItemCell";
end
ExchangeItemCell.super.Init(self);
self.pos = self:FindGO("pos")
self.package = self:FindGO("PackageImg")
self.minus=self:FindGO("MinusImg")
self.numLab = self:FindComponent("NumLab",UILabel)
self.chooseSymbol = self:FindGO("ChooseImg")
self:AddCellClickEvent()
end
function ExchangeItemCell:AddEvts()
self:AddPressEvent(self.gameObject, function (g, b)
self:PlusPressCount(b)
end)
self:AddPressEvent(self.minus, function (g, b)
self:SubtractPressCount(b)
end)
end
function ExchangeItemCell:PlusPressCount(isPressed)
if isPressed then
if self.plusTick == nil then
self.plusTick = TimeTickManager.Me():CreateTick(1, 150, function (self, deltatime)
self:PassEvent(ExchangeItemCellEvent.LongPress, self) end,
self,1)
end
else
if self.plusTick then
self.plusTick:Destroy()
self.plusTick = nil
end
end
end
function ExchangeItemCell:SubtractPressCount(isPressed)
if isPressed then
if self.subtractTick == nil then
self.subtractTick = TimeTickManager.Me():CreateTick(1, 150, function (self, deltatime)
self:PassEvent(ExchangeItemCellEvent.LongPressSubtract, self) end,
self, 2)
end
else
if self.subtractTick then
self.subtractTick:Destroy()
self.subtractTick = nil
end
end
end
function ExchangeItemCell:SetData(data)
if not data then
self:Hide(self.itemgo)
self:Hide(self.pos)
return
end
self:Show(self.itemgo)
self:Show(self.pos)
ExchangeItemCell.super.SetData(self, data)
if(data.id=="FeedPet")then
self:SetFeedData()
self:UpdateChoose()
return
end
self:UpdateOwn()
end
function ExchangeItemCell:SetChoosen(id)
self.chooseId = id
self:UpdateChoose()
end
function ExchangeItemCell:UpdateChoose()
if(self.data and self.chooseId and self.data.staticData.id == self.chooseId)then
self.chooseSymbol:SetActive(true);
else
self.chooseSymbol:SetActive(false);
end
end
local function GetOwnCount(itemid)
local package = GameConfig.PackageMaterialCheck.exchange_shop
local _BagProxy = BagProxy.Instance
local count = 0
for i=1,#package do
count = count + _BagProxy:GetItemNumByStaticID(itemid, package[i])
end
return count
end
function ExchangeItemCell:SetFeedData()
if(not self.data)then
self:Hide(self.pos)
return
end
self:Hide(self.package)
self:Hide(self.minus)
local staticId = self.data.staticData.id
self.numLab.text = GetOwnCount(staticId)
if(0==GetOwnCount(staticId))then
tempColor:Set(1.0/255.0,2.0/255.0,3.0/255.0,160/255)
self.icon.color = tempColor
self:Hide(self.numLab)
else
ColorUtil.WhiteUIWidget(self.icon)
self:Show(self.numLab)
end
end
function ExchangeItemCell:UpdateOwn()
if(not self.data)then
self:Hide(self.pos)
return
end
local staticId = self.data.staticData.id
local own = BagProxy.Instance:GetItemNumByStaticID(staticId,BagProxy.BagType.MainBag)
local previewNum = ExchangeShopProxy.Instance.chooseMap[staticId] or 0
self.numLab.text = string.format(str_format,previewNum,own)
self.minus:SetActive(0<previewNum)
if (previewNum<=0)then
if self.subtractTick then
self.subtractTick:Destroy()
self.subtractTick = nil
end
end
self.pos:SetActive(0<own)
if(0==own)then
tempColor:Set(1.0/255.0,2.0/255.0,3.0/255.0,160/255)
self.icon.color = tempColor
self:Hide(self.numLab)
else
ColorUtil.WhiteUIWidget(self.icon)
self:Show(self.numLab)
end
end