Skip to content

Commit a9d4a25

Browse files
committed
do not save scores more than once by moving the score saving to
UScreenSingController.Finish (which is apprently only called once, also with multi screen)
1 parent 320ae76 commit a9d4a25

3 files changed

Lines changed: 31 additions & 23 deletions

File tree

src/base/UDataBase.pas

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -634,7 +634,7 @@ procedure TDataBaseSystem.AddScore(Song: TSong; Level: integer; const Name: UTF8
634634
if not Assigned(ScoreDB) then
635635
Exit;
636636

637-
// Prevent 0 Scores from being added EDIT: ==> UScreenTop5.pas!
637+
// Prevent 0 scores from being added. Callers are expected to filter these.
638638
//if (Score <= 0) then
639639
// Exit;
640640

src/screens/UScreenTop5.pas

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -177,39 +177,22 @@ constructor TScreenTop5.Create;
177177
procedure TScreenTop5.OnShow;
178178
var
179179
I: integer;
180-
sung: boolean; //score added? otherwise in wasn't sung!
181180
Report: string;
182181
begin
183182
inherited;
184183

185184
if not Help.SetHelpID(ID) then
186185
Log.LogWarn('No Entry for Help-ID ' + ID, 'ScreenTop5');
187186

188-
sung := false;
189187
Fadeout := false;
190188
DifficultyShow := Player[0].Level;
191189

192-
//ReadScore(CurrentSong);
193-
194-
for I := 0 to PlayersPlay - 1 do
195-
begin
196-
if (Player[I].ScoreTotalInt > 0) and (ScreenSing.SungToEnd) then
197-
begin
198-
DataBase.AddScore(CurrentSong, Player[I].Level, Player[I].Name, Player[I].ScoreTotalInt);
199-
sung:=true;
200-
end;
201-
end;
202-
203190
try
204-
if sung then
205-
begin
206-
DataBase.WriteScore(CurrentSong);
207-
end;
208191
DataBase.ReadScore(CurrentSong);
209192
except
210193
on E : Exception do
211194
begin
212-
Report := 'Writing or reading songscore failed in Top-5-creen. Faulty database file?' + LineEnding +
195+
Report := 'Reading songscore failed in Top-5-screen. Faulty database file?' + LineEnding +
213196
'Stacktrace:' + LineEnding;
214197
if E <> nil then
215198
begin

src/screens/controllers/UScreenSingController.pas

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ TScreenSingController = class(TMenu)
8383
procedure ResetLinesAndLyrics();
8484
procedure ClearLyricEngines();
8585
procedure CalculateStartTime;
86+
procedure SaveLocalScores;
8687
public
8788
CheckPlayerConfigOnNextSong: boolean;
8889
eSongLoaded: THookableEvent; //< event is called after lyrics of a song are loaded on OnShow
@@ -1592,14 +1593,20 @@ procedure TScreenSingController.Finish;
15921593
len, num: integer;
15931594

15941595
begin
1596+
Log.LogStatus('TScreenSingController.Finish', 'TScreenSingController.Finish');
15951597
AudioInput.CaptureStop;
15961598
AudioPlayback.Stop;
15971599
AudioPlayback.SetSyncSource(nil);
15981600

1599-
if (ScreenSong.Mode = smNormal) and (SungToEnd) and (Length(DllMan.Websites) > 0) then
1601+
if (ScreenSong.Mode = smNormal) and SungToEnd then
16001602
begin
1601-
AutoSendScore;
1602-
AutoSaveScore;
1603+
SaveLocalScores;
1604+
1605+
if (Length(DllMan.Websites) > 0) then
1606+
begin
1607+
AutoSendScore;
1608+
AutoSaveScore;
1609+
end;
16031610
end;
16041611

16051612
LyricsState.Stop();
@@ -1877,6 +1884,25 @@ procedure TScreenSingController.UpdateMedleyStats(medley_end: boolean); //TODO
18771884
end;
18781885

18791886

1887+
procedure TScreenSingController.SaveLocalScores;
1888+
var
1889+
I: integer;
1890+
Sung: boolean;
1891+
begin
1892+
Sung := false;
1893+
for I := 0 to PlayersPlay - 1 do
1894+
begin
1895+
if Player[I].ScoreTotalInt > 0 then
1896+
begin
1897+
DataBase.AddScore(CurrentSong, Player[I].Level, Player[I].Name, Player[I].ScoreTotalInt);
1898+
Sung := true;
1899+
end;
1900+
end;
1901+
1902+
if Sung then
1903+
DataBase.WriteScore(CurrentSong);
1904+
end;
1905+
18801906
procedure TScreenSingController.AutoSendScore;
18811907
var
18821908
SendInfo: TSendInfo;
@@ -2014,4 +2040,3 @@ procedure TScreenSingController.AutoSaveScore;
20142040
end;
20152041

20162042
end.
2017-

0 commit comments

Comments
 (0)