97 lines
2.4 KiB
Plaintext
97 lines
2.4 KiB
Plaintext
local BaseCell = autoImport("BaseCell");
|
|
BuffCell = class("BuffCell", BaseCell)
|
|
|
|
BuffCellEvent = {
|
|
BuffEnd = "BuffCellEvent_BuffEnd",
|
|
}
|
|
|
|
local BUFFTYPE_DOUBLEEXPCARD = "MultiTime";
|
|
|
|
function BuffCell:Init()
|
|
self.mask = self:FindComponent("Mask", UISprite);
|
|
self.icon = self:FindComponent("Icon", UISprite);
|
|
self.layer = self:FindComponent("Layer", UILabel);
|
|
|
|
self:AddCellClickEvent();
|
|
end
|
|
|
|
function BuffCell:SetData(data)
|
|
self.data = data;
|
|
if(data)then
|
|
self.gameObject:SetActive(true);
|
|
local staticData = self.data.staticData;
|
|
|
|
-- 儲存data
|
|
if(staticData == nil)then
|
|
local storage = self.data.storage;
|
|
if(storage ~= nil)then
|
|
for k,v in pairs(storage)do
|
|
staticData = Table_Buffer[v[1]];
|
|
break;
|
|
end
|
|
end
|
|
end
|
|
|
|
if(staticData)then
|
|
IconManager:SetSkillIcon(staticData.BuffIcon, self.icon)
|
|
self.icon.width = 28;
|
|
if(data.isalways)then
|
|
TimeTickManager.Me():ClearTick(self, 1);
|
|
self.mask.fillAmount = 0;
|
|
elseif(data.starttime and data.endtime)then
|
|
self:UpdateCDTime();
|
|
else
|
|
TimeTickManager.Me():ClearTick(self, 1);
|
|
self.mask.fillAmount = 0;
|
|
end
|
|
if(not self:ObjIsNil(self.layer))then
|
|
if(data.layer and data.layer>1 and
|
|
staticData.BuffEffect.type ~= BUFFTYPE_DOUBLEEXPCARD)then
|
|
self.layer.gameObject:SetActive(true);
|
|
self.layer.text = data.layer;
|
|
else
|
|
self.layer.gameObject:SetActive(false);
|
|
end
|
|
else
|
|
-- errorLog("BuffCell Error (Not Find GameObject)");
|
|
end
|
|
else
|
|
self.gameObject:SetActive(false);
|
|
end
|
|
else
|
|
TimeTickManager.Me():ClearTick(self, 1);
|
|
self.gameObject:SetActive(false);
|
|
end
|
|
end
|
|
|
|
function BuffCell:OnRemove()
|
|
TimeTickManager.Me():ClearTick(self, 1);
|
|
|
|
TipManager.Instance:CloseNormalTip()
|
|
end
|
|
|
|
function BuffCell:UpdateCDTime(timetick)
|
|
if(not self.data)then
|
|
return;
|
|
end
|
|
local starttime,endtime = self.data.starttime, self.data.endtime;
|
|
if(starttime and endtime)then
|
|
local totalDeltaTime = endtime - starttime;
|
|
if(totalDeltaTime<=0)then
|
|
self:PassEvent(BuffCellEvent.BuffEnd, self.data);
|
|
return;
|
|
end
|
|
TimeTickManager.Me():ClearTick(self, 1);
|
|
TimeTickManager.Me():CreateTick(0, 33, function (self, deltatime)
|
|
local nowDelteTime = math.max(ServerTime.CurServerTime() - starttime, 0);
|
|
local fillAmount = nowDelteTime/totalDeltaTime;
|
|
if(fillAmount<1)then
|
|
self.mask.fillAmount = fillAmount;
|
|
else
|
|
self:PassEvent(BuffCellEvent.BuffEnd, self.data);
|
|
TimeTickManager.Me():ClearTick(self, 1);
|
|
end
|
|
end, self, 1);
|
|
end
|
|
end
|