From 526ba53e63926cf2837a9e8feb7cda3ac8526300 Mon Sep 17 00:00:00 2001 From: brunzelchen Date: Mon, 7 Dec 2009 21:47:43 +0000 Subject: add the score to db only if the song was sung to the end (last word of last sentence+length) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@2002 b956fd51-792f-4845-bead-9b4dfca2ff2c --- src/screens/UScreenSing.pas | 17 +++++++++++++++++ src/screens/UScreenTop5.pas | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/screens/UScreenSing.pas b/src/screens/UScreenSing.pas index 20805737..342abac1 100644 --- a/src/screens/UScreenSing.pas +++ b/src/screens/UScreenSing.pas @@ -98,6 +98,9 @@ type // score manager: Scores: TSingScores; + //the song was sung to the end + SungToEnd: boolean; + fShowVisualization: boolean; fCurrentVideoPlaybackEngine: IVideoPlayback; @@ -329,6 +332,9 @@ begin Log.LogStatus('Begin', 'OnShow'); FadeOut := false; + //the song was sung to the end + SungToEnd := false; + // reset video playback engine, to play video clip ... fCurrentVideoPlaybackEngine := VideoPlayback; @@ -666,6 +672,8 @@ var Sec: integer; T: integer; CurLyricsTime: real; + Line: TLyricLine; + LastWord: TLyricWord; begin Background.Draw; @@ -751,6 +759,15 @@ begin // Note: there is no menu and the animated background brakes the video playback //DrawBG; + //the song was sung to the end? + Line := Lyrics.GetUpperLine(); + if Line.LastLine then + begin + LastWord := Line.Words[Length(Line.Words)-1]; + if CurLyricsTime >= GetTimeFromBeat(LastWord.Start+LastWord.Length) then + SungToEnd := true; + end; + // update and draw movie if (ShowFinish and (VideoLoaded or fShowVisualization)) then begin diff --git a/src/screens/UScreenTop5.pas b/src/screens/UScreenTop5.pas index b0795f54..2ddff713 100644 --- a/src/screens/UScreenTop5.pas +++ b/src/screens/UScreenTop5.pas @@ -188,7 +188,7 @@ begin PMax := 5; for I := 0 to PMax do begin - if (Round(Player[I].ScoreTotalInt) > 0) then + if (Round(Player[I].ScoreTotalInt) > 0) and (ScreenSing.SungToEnd) then begin DataBase.AddScore(CurrentSong, Ini.Difficulty, Ini.Name[I], Round(Player[I].ScoreTotalInt)); sung:=true; -- cgit v1.2.3