Skip to content

Commit 3e10274

Browse files
Merge pull request #1248 from dgruss/savescoresonlyonce
Prevent duplicate score saves with multiple screens
2 parents 70ff89b + a9d4a25 commit 3e10274

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)