diff options
Diffstat (limited to 'Game/Code/Classes/UMusic.pas')
-rw-r--r-- | Game/Code/Classes/UMusic.pas | 75 |
1 files changed, 54 insertions, 21 deletions
diff --git a/Game/Code/Classes/UMusic.pas b/Game/Code/Classes/UMusic.pas index 9c029acd..bad0aa86 100644 --- a/Game/Code/Classes/UMusic.pas +++ b/Game/Code/Classes/UMusic.pas @@ -9,6 +9,7 @@ interface {$I switches.inc} uses + UTime, Classes; type @@ -35,7 +36,6 @@ type end; ALine = array of TLine; // (TODO: rename to TLineArray) - // (TCzesci = TSentences) TCzesci changed to TLines because TSentences exist elseware in incompatible form TLines = record Current: integer; // for drawing of current line High: integer; @@ -46,31 +46,39 @@ type Line: ALine; end; - // (TODO: rename TCzas to something like T(Line/Sentence)Time/TLinePosition/TLineState) - // (Czas = time) - TLineState = record // all that concerns the current frames - OldBeat: integer; // previous discovered beat - CurrentBeat: integer; - MidBeat: real; // like CurrentBeat + TLineState = class // all that concerns the current frames + private + Timer: TRelativeTimer; // keeps track of the current time + public + OldBeat: integer; // previous discovered beat + CurrentBeat: integer; + MidBeat: real; // like CurrentBeat + + // now we use this for super synchronization! + // only used when analyzing voice + OldBeatD: integer; // previous discovered beat + CurrentBeatD: integer; + MidBeatD: real; // like CurrentBeatD + FracBeatD: real; // fractional part of MidBeatD - // now we use this for super synchronization! - // only used when analyzing voice - OldBeatD: integer; // previous discovered beat - CurrentBeatD: integer; - MidBeatD: real; // like CurrentBeatD - FracBeatD: real; // fractional part of MidBeatD + // we use this for audible clicks + OldBeatC: integer; // previous discovered beat + CurrentBeatC: integer; + MidBeatC: real; // like CurrentBeatC + FracBeatC: real; // fractional part of MidBeatC - // we use this for audible clicks - OldBeatC: integer; // previous discovered beat - CurrentBeatC: integer; - MidBeatC: real; // like CurrentBeatC - FracBeatC: real; // fractional part of MidBeatC + OldLine: integer; // previous displayed sentence + TotalTime: real; // total song time - OldLine: integer; // previous displayed sentence + constructor Create(); + procedure Pause(); + procedure Resume(); + function GetCurrentTime(): real; + procedure SetCurrentTime(Time: real); - CurrentTime: real; - TotalTime: real; + // current song time used as base-timer for lyrics etc. + property CurrentTime: real READ GetCurrentTime WRITE SetCurrentTime; end; @@ -656,6 +664,31 @@ begin end; end; +constructor TLineState.Create(); +begin + Timer := TRelativeTimer.Create(); +end; + +procedure TLineState.Pause(); +begin + Timer.Pause(); +end; + +procedure TLineState.Resume(); +begin + Timer.Resume(); +end; + +procedure TLineState.SetCurrentTime(Time: real); +begin + Timer.SetTime(Time); +end; + +function TLineState.GetCurrentTime(): real; +begin + Result := Timer.GetTime(); +end; + initialization begin |