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

78 lines
1.9 KiB
Plaintext

FunctionTempItem = class("FunctionTempItem")
FunctionTempItem.WarnningMin = 60 * 24;
function FunctionTempItem.Me()
if nil == FunctionTempItem.me then
FunctionTempItem.me = FunctionTempItem.new()
end
return FunctionTempItem.me
end
function FunctionTempItem:ctor()
self.tempItemCount = 0;
self.tempItemMap = {};
end
function FunctionTempItem:CheckItemInDelCD(itemguid)
if(itemguid ~= nil)then
return self.tempItemMap[itemguid] ~= nil;
end
return false;
end
function FunctionTempItem:AddTempItemDelCheck(itemguid, delTime)
if(not self.tempItemMap[itemguid])then
self.tempItemCount = self.tempItemCount + 1;
end
self.tempItemMap[itemguid] = delTime;
self:CheckTempItemDelTime();
end
function FunctionTempItem:RemoveTempItemDelCheck(itemguid)
if(self.tempItemMap[itemguid])then
self.tempItemCount = self.tempItemCount - 1;
end
self.tempItemMap[itemguid] = nil;
self:CheckTempItemDelTime();
end
function FunctionTempItem:CheckTempItemDelTime()
if(self.tempItemCount > 0)then
if(not self.timeTick)then
self.timeTick = TimeTickManager.Me():CreateTick(0, 1000, self.RefreshTempItemDelTime, self, 1)
end
else
if(self.timeTick)then
TimeTickManager.Me():ClearTick(self, 1)
self.timeTick = nil;
end
end
end
function FunctionTempItem:RefreshTempItemDelTime()
local curServerTime = ServerTime.CurServerTime()/1000;
for itemguid, delTime in pairs(self.tempItemMap)do
local leftTotalSec = delTime - curServerTime;
if(leftTotalSec <= 0)then
self:RemoveTempItemDelCheck(itemguid);
else
if(leftTotalSec <= FunctionTempItem.WarnningMin * 60)then
local itemData = BagProxy.Instance:GetItemByGuid(itemguid, BagProxy.BagType.Temp);
if(itemData and not itemData:GetDelWarningState())then
itemData:SetDelWarningState(true);
GameFacade.Instance:sendNotification(TempItemEvent.TempWarnning, itemguid);
end
end
end
end
end