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

71 lines
1.8 KiB
Plaintext

local BaseCell = autoImport("BaseCell");
SoundBoxCell = class("SoundBoxCell", BaseCell);
function SoundBoxCell:Init()
self:InitCell();
self:AddGameObjectComp();
self:AddCellClickEvent();
end
function SoundBoxCell:InitCell()
self.index = self:FindComponent("Index", UILabel);
self.playingSymbol = self:FindGO("PlayingSymbol");
self.namelab = self:FindComponent("Name", UILabel);
self.timelab = self:FindComponent("LeftTime", UILabel);
self.playername = self:FindComponent("PlayerName", UILabel);
end
function SoundBoxCell:SetTimeLabel(sec)
local s = math.floor(sec%60);
local m = math.floor(sec/60);
self.timelab.text = string.format("%02d:%02d", m, s);
end
function SoundBoxCell:SetData(data)
self.data = data;
self.namelab.text = data.staticData.MusicName;
UIUtil.WrapLabel(self.namelab);
self.playername.text = data.playername;
UIUtil.WrapLabel(self.playername);
self.index.text = data.index;
if(data.starttime==0)then
self:SetTimeLabel(data.staticData.MusicTim);
self.playingSymbol:SetActive(false);
self.index.gameObject:SetActive(true);
else
self:AddSoundTick();
self.playingSymbol:SetActive(true);
self.index.gameObject:SetActive(false);
end
end
function SoundBoxCell:AddSoundTick()
local pasttime = ServerTime.CurServerTime()/1000 - self.data.starttime;
self.lefttime = self.data.staticData.MusicTim - math.floor(pasttime);
TimeTickManager.Me():CreateTick(0, 33, function (self, deltatime)
if(self.lastTime)then
local rdeltaTime = RealTime.time - self.lastTime;
if(rdeltaTime~=0)then
if(self.lefttime)then
self.lefttime = self.lefttime - rdeltaTime;
if(self.lefttime>0)then
self:SetTimeLabel(self.lefttime);
end
end
end
end
self.lastTime = RealTime.time;
end, self);
end
function SoundBoxCell:OnDestroy()
TimeTickManager.Me():ClearTick(self)
end