diff --git a/Output/Languages/Deutsch.xml b/Output/Languages/Deutsch.xml index 6a7c86c7..51994228 100644 --- a/Output/Languages/Deutsch.xml +++ b/Output/Languages/Deutsch.xml @@ -141,6 +141,7 @@ Bewertung Punkte Schwierigkeit + Gesamtpunktzahl Highscore diff --git a/Output/Languages/English.xml b/Output/Languages/English.xml index 9b61a467..915d5efb 100644 --- a/Output/Languages/English.xml +++ b/Output/Languages/English.xml @@ -141,6 +141,7 @@ Rating Points Difficulty + Overall score Highscore diff --git a/Vocaluxe/Screens/CScreenScore.cs b/Vocaluxe/Screens/CScreenScore.cs index 21b0a92f..af44c2aa 100644 --- a/Vocaluxe/Screens/CScreenScore.cs +++ b/Vocaluxe/Screens/CScreenScore.cs @@ -117,9 +117,23 @@ namespace Vocaluxe.Screens public override bool UpdateGame() { - SPlayer[] player = new SPlayer[CGame.NumPlayer]; - player = _Points.GetPlayer(_Round - 1, CGame.NumPlayer); + if (_Round != 0) + player = _Points.GetPlayer(_Round - 1, CGame.NumPlayer); + else { + for (int i = 0; i < CGame.NumRounds; i++) + { + SPlayer[] points = _Points.GetPlayer(i, CGame.NumPlayer); + for (int p = 0; p < player.Length; p++) + { + player[p].Points += points[p].Points; + } + } + for (int p = 0; p < player.Length; p++) + { + player[p].Points = (int)(player[p].Points/CGame.NumRounds); + } + } for (int p = 0; p < player.Length; p++) { if (StaticPointsBarDrawnPoints[p] < player[p].Points) @@ -244,18 +258,42 @@ namespace Vocaluxe.Screens private void UpdateRatings() { - CSong song = CGame.GetSong(_Round); - if (song == null) - return; - - Texts[htTexts(TextSong)].Text = song.Artist + " - " + song.Title; - if (_Points.NumRounds > 1) - { - Texts[htTexts(TextSong)].Text += " (" + _Round + "/" + _Points.NumRounds + ")"; - } - SPlayer[] player = new SPlayer[CGame.NumPlayer]; - player = _Points.GetPlayer(_Round - 1, CGame.NumPlayer); + if (_Round != 0) + { + CSong song = CGame.GetSong(_Round); + if (song == null) + return; + + Texts[htTexts(TextSong)].Text = song.Artist + " - " + song.Title; + if (_Points.NumRounds > 1) + { + Texts[htTexts(TextSong)].Text += " (" + _Round + "/" + _Points.NumRounds + ")"; + } + player = _Points.GetPlayer(_Round - 1, CGame.NumPlayer); + } + else + { + Texts[htTexts(TextSong)].Text = "TR_SCREENSCORE_OVERALLSCORE"; + for (int i = 0; i < CGame.NumRounds; i++) + { + SPlayer[] points = _Points.GetPlayer(i, CGame.NumPlayer); + for (int p = 0; p < player.Length; p++) + { + if (i < 1) + { + player[p].ProfileID = points[p].ProfileID; + player[p].Name = points[p].Name; + player[p].Difficulty = points[p].Difficulty; + } + player[p].Points += points[p].Points; + } + } + for (int p = 0; p < player.Length; p++) + { + player[p].Points = (int)(player[p].Points / CGame.NumRounds); + } + } for (int p = 0; p < player.Length; p++) { Texts[htTexts(TextNames[p, CGame.NumPlayer - 1])].Text = player[p].Name; @@ -315,11 +353,21 @@ namespace Vocaluxe.Screens private void ChangeRound(int Num) { - if ((_Round + Num) <= _Points.NumRounds && (_Round + Num) > 0) + if ((_Round + Num) <= _Points.NumRounds && (_Round + Num) > 0 && _Round != 0) { _Round += Num; UpdateRatings(); } + else if(Num > 0 && _Round != 0 && CGame.NumRounds > 1) + { + _Round = 0; + UpdateRatings(); + } + else if (Num < 0 && _Round == 0) + { + _Round = CGame.NumRounds; + UpdateRatings(); + } } } } \ No newline at end of file