From 526ba53e63926cf2837a9e8feb7cda3ac8526300 Mon Sep 17 00:00:00 2001
From: brunzelchen <brunzelchen@b956fd51-792f-4845-bead-9b4dfca2ff2c>
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(-)

(limited to 'src')

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