diff --git a/Output/Languages/en.xml b/Output/Languages/en.xml
index 6114e1f3..d40203e7 100644
--- a/Output/Languages/en.xml
+++ b/Output/Languages/en.xml
@@ -265,6 +265,8 @@
Points
Difficulty
Overall score
+ Golden notes
+ Line bonus
Highscore
Profiles
Player name
diff --git a/Output/Themes/Changelog/Changelog_ScreenScore.txt b/Output/Themes/Changelog/Changelog_ScreenScore.txt
index d34205f0..4cefb9d5 100644
--- a/Output/Themes/Changelog/Changelog_ScreenScore.txt
+++ b/Output/Themes/Changelog/Changelog_ScreenScore.txt
@@ -1,5 +1,15 @@
ScreenScore
++++++++++
+Version 6:
+Changed layout to one row per player, sorted by player number (two columns from 4 players)
+Added (new skins ScoreTile and ScoreTileSmall), , (points bar split into notes, golden notes and line bonus)
+Added , , ,
+++++++++++
+Version 5:
+Added , , (round arrows are only shown with more than one round and can be clicked)
+Changed of to the player colors
+Removed
+++++++++++
Version 4:
Removed , ,
Added
diff --git a/Output/Themes/Vocaluxe 2024/01_Standard.xml b/Output/Themes/Vocaluxe 2024/01_Standard.xml
index 8b40b698..7a8124ea 100644
--- a/Output/Themes/Vocaluxe 2024/01_Standard.xml
+++ b/Output/Themes/Vocaluxe 2024/01_Standard.xml
@@ -336,6 +336,8 @@
ButtonTile.png
+ ScoreTile.png
+ ScoreTileSmall.png
CoverTile.png
PlayerTile.png
CoverTextBackground.png
diff --git a/Output/Themes/Vocaluxe 2024/02.xml b/Output/Themes/Vocaluxe 2024/02.xml
index 223f6086..fda8eb94 100644
--- a/Output/Themes/Vocaluxe 2024/02.xml
+++ b/Output/Themes/Vocaluxe 2024/02.xml
@@ -336,6 +336,8 @@
ButtonTile.png
+ ScoreTile.png
+ ScoreTileSmall.png
CoverTile.png
PlayerTile.png
CoverTextBackground.png
diff --git a/Output/Themes/Vocaluxe 2024/03.xml b/Output/Themes/Vocaluxe 2024/03.xml
index b2b3066d..a687f190 100644
--- a/Output/Themes/Vocaluxe 2024/03.xml
+++ b/Output/Themes/Vocaluxe 2024/03.xml
@@ -336,6 +336,8 @@
ButtonTile.png
+ ScoreTile.png
+ ScoreTileSmall.png
CoverTile.png
PlayerTile.png
CoverTextBackground.png
diff --git a/Output/Themes/Vocaluxe 2024/04.xml b/Output/Themes/Vocaluxe 2024/04.xml
index ea42f9fc..94de6ff7 100644
--- a/Output/Themes/Vocaluxe 2024/04.xml
+++ b/Output/Themes/Vocaluxe 2024/04.xml
@@ -336,6 +336,8 @@
ButtonTile.png
+ ScoreTile.png
+ ScoreTileSmall.png
CoverTile.png
PlayerTile.png
CoverTextBackground.png
diff --git a/Output/Themes/Vocaluxe 2024/05.xml b/Output/Themes/Vocaluxe 2024/05.xml
index 72ef50e4..b272f2bc 100644
--- a/Output/Themes/Vocaluxe 2024/05.xml
+++ b/Output/Themes/Vocaluxe 2024/05.xml
@@ -336,6 +336,8 @@
ButtonTile.png
+ ScoreTile.png
+ ScoreTileSmall.png
CoverTile.png
PlayerTile.png
CoverTextBackground.png
diff --git a/Output/Themes/Vocaluxe 2024/06.xml b/Output/Themes/Vocaluxe 2024/06.xml
index 48c865be..8cbb05bb 100644
--- a/Output/Themes/Vocaluxe 2024/06.xml
+++ b/Output/Themes/Vocaluxe 2024/06.xml
@@ -336,6 +336,8 @@
ButtonTile.png
+ ScoreTile.png
+ ScoreTileSmall.png
CoverTile.png
PlayerTile.png
CoverTextBackground.png
diff --git a/Output/Themes/Vocaluxe 2024/ScoreTile.png b/Output/Themes/Vocaluxe 2024/ScoreTile.png
new file mode 100644
index 00000000..d0e9cb12
Binary files /dev/null and b/Output/Themes/Vocaluxe 2024/ScoreTile.png differ
diff --git a/Output/Themes/Vocaluxe 2024/ScoreTileSmall.png b/Output/Themes/Vocaluxe 2024/ScoreTileSmall.png
new file mode 100644
index 00000000..d58f654f
Binary files /dev/null and b/Output/Themes/Vocaluxe 2024/ScoreTileSmall.png differ
diff --git a/Output/Themes/Vocaluxe 2024/Screens/ScreenScore.xml b/Output/Themes/Vocaluxe 2024/Screens/ScreenScore.xml
index 2db3e2d2..8b9d4973 100644
--- a/Output/Themes/Vocaluxe 2024/Screens/ScreenScore.xml
+++ b/Output/Themes/Vocaluxe 2024/Screens/ScreenScore.xml
@@ -2,7 +2,7 @@
ScreenScore
- 4
+ 6
@@ -25,234 +25,520 @@
0
+
+
+
+
+ 0
+ 63.75
+ 60
+ 60
+ -0.1
+
+
+
+ SelectSlideArrowLeft
+
+
+ 30
+ 71.25
+ 45
+ 45
+ -0.1
+
+
+
+ SelectSlideArrowRight
+
+
+ 1845
+ 71.25
+ 45
+ 45
+ -0.1
+
+
+
+ ScoreTile
+
+
+ 210
+ 472.5
+ 1500
+ 190
+ 0.8
+
+
- 562.5
- 405
- 195
- 195
+ 232.8
+ 495.3
+ 144.4
+ 144.4
0
+
+ ScoreTile
+
+
+ 210
+ 370
+ 1500
+ 190
+ 0.8
+
+
- 562.5
- 300
- 195
- 195
+ 232.8
+ 392.8
+ 144.4
+ 144.4
0
+
+ ScoreTile
+
+
+ 210
+ 575
+ 1500
+ 190
+ 0.8
+
+
- 562.5
- 667.5
- 195
- 195
+ 232.8
+ 597.8
+ 144.4
+ 144.4
0
+
+ ScoreTile
+
+
+ 210
+ 267.5
+ 1500
+ 190
+ 0.8
+
+
- 562.5
- 196.5
- 195
- 195
+ 232.8
+ 290.3
+ 144.4
+ 144.4
0
+
+ ScoreTile
+
+
+ 210
+ 472.5
+ 1500
+ 190
+ 0.8
+
+
- 562.5
- 483
- 195
- 195
+ 232.8
+ 495.3
+ 144.4
+ 144.4
0
+
+ ScoreTile
+
+
+ 210
+ 677.5
+ 1500
+ 190
+ 0.8
+
+
- 562.5
- 769.5
- 195
- 195
+ 232.8
+ 700.3
+ 144.4
+ 144.4
0
+
+ ScoreTileSmall
+
+
+ 90
+ 370
+ 840
+ 190
+ 0.8
+
+
- 97.5
- 300
- 195
- 195
+ 112.8
+ 392.8
+ 144.4
+ 144.4
0
+
+ ScoreTileSmall
+
+
+ 90
+ 575
+ 840
+ 190
+ 0.8
+
+
- 97.5
- 667.5
- 195
- 195
+ 112.8
+ 597.8
+ 144.4
+ 144.4
0
+
+ ScoreTileSmall
+
+
+ 990
+ 370
+ 840
+ 190
+ 0.8
+
+
- 1012.5
- 300
- 195
- 195
+ 1012.8
+ 392.8
+ 144.4
+ 144.4
0
+
+ ScoreTileSmall
+
+
+ 990
+ 575
+ 840
+ 190
+ 0.8
+
+
- 1012.5
- 667.5
- 195
- 195
+ 1012.8
+ 597.8
+ 144.4
+ 144.4
0
+
+ ScoreTileSmall
+
+
+ 90
+ 267.5
+ 840
+ 190
+ 0.8
+
+
- 97.5
- 196.5
- 195
- 195
+ 112.8
+ 290.3
+ 144.4
+ 144.4
0
+
+ ScoreTileSmall
+
+
+ 90
+ 472.5
+ 840
+ 190
+ 0.8
+
+
- 97.5
- 483
- 195
- 195
+ 112.8
+ 495.3
+ 144.4
+ 144.4
0
+
+ ScoreTileSmall
+
+
+ 90
+ 677.5
+ 840
+ 190
+ 0.8
+
+
- 97.5
- 769.5
- 195
- 195
+ 112.8
+ 700.3
+ 144.4
+ 144.4
0
+
+ ScoreTileSmall
+
+
+ 990
+ 267.5
+ 840
+ 190
+ 0.8
+
+
- 1012.5
- 196.5
- 195
- 195
+ 1012.8
+ 290.3
+ 144.4
+ 144.4
0
+
+ ScoreTileSmall
+
+
+ 990
+ 472.5
+ 840
+ 190
+ 0.8
+
+
- 1012.5
- 483
- 195
- 195
+ 1012.8
+ 495.3
+ 144.4
+ 144.4
0
+
+ ScoreTileSmall
+
+
+ 90
+ 267.5
+ 840
+ 190
+ 0.8
+
+
- 97.5
- 196.5
- 195
- 195
+ 112.8
+ 290.3
+ 144.4
+ 144.4
0
+
+ ScoreTileSmall
+
+
+ 90
+ 472.5
+ 840
+ 190
+ 0.8
+
+
- 97.5
- 483
- 195
- 195
+ 112.8
+ 495.3
+ 144.4
+ 144.4
0
+
+ ScoreTileSmall
+
+
+ 90
+ 677.5
+ 840
+ 190
+ 0.8
+
+
- 97.5
- 769.5
- 195
- 195
+ 112.8
+ 700.3
+ 144.4
+ 144.4
0
+
+ ScoreTileSmall
+
+
+ 990
+ 267.5
+ 840
+ 190
+ 0.8
+
+
- 1012.5
- 196.5
- 195
- 195
+ 1012.8
+ 290.3
+ 144.4
+ 144.4
0
+
+ ScoreTileSmall
+
+
+ 990
+ 472.5
+ 840
+ 190
+ 0.8
+
+
- 1012.5
- 483
- 195
- 195
+ 1012.8
+ 495.3
+ 144.4
+ 144.4
0
+
+ ScoreTileSmall
+
+
+ 990
+ 677.5
+ 840
+ 190
+ 0.8
+
+
- 1012.5
- 769.5
- 195
- 195
+ 1012.8
+ 700.3
+ 144.4
+ 144.4
+ 0
+
+
+
+
+
+
+ 700
+ 1012
+ 24
+ 24
+ 0
+
+
+
+
+
+
+ 1020
+ 1012
+ 24
+ 24
0
@@ -287,1194 +573,1213 @@
- 780
- 412.5
+ 407.2
+ 511.45
0
- 60
- 585
-
+ 49.4
+ 400
+
Left
- Bottom
-
- Outline
-
-
-
- 1365
- 555
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 780
- 472.5
+ 407.2
+ 560.85
0
- 40.5
- 255
+ 34.2
+ 400
Left
- Bottom
+ Center
Outline
- 780
- 555
+ 407.2
+ 595.05
0
- 40.5
- 585
-
+ 28.5
+ 400
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 1680
+ 537.1
+ 0
+ 60.8
+ 280
+
+
+ Right
+ Center
Outline
- 780
- 307.5
+ 407.2
+ 408.95
0
- 60
- 585
-
+ 49.4
+ 400
+
Left
- Bottom
-
- Outline
-
-
-
- 1365
- 450
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 780
- 367.5
+ 407.2
+ 458.35
0
- 40.5
- 255
+ 34.2
+ 400
Left
- Bottom
+ Center
Outline
- 780
- 450
+ 407.2
+ 492.55
0
- 40.5
- 585
-
+ 28.5
+ 400
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 1680
+ 434.6
+ 0
+ 60.8
+ 280
+
+
+ Right
+ Center
Outline
- 780
- 675
+ 407.2
+ 613.95
0
- 60
- 585
-
+ 49.4
+ 400
+
Left
- Bottom
-
- Outline
-
-
-
- 1365
- 817.5
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 780
- 735
+ 407.2
+ 663.35
0
- 40.5
- 255
+ 34.2
+ 400
Left
- Bottom
+ Center
Outline
- 780
- 817.5
+ 407.2
+ 697.55
0
- 40.5
- 585
-
+ 28.5
+ 400
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 1680
+ 639.6
+ 0
+ 60.8
+ 280
+
+
+ Right
+ Center
Outline
- 780
- 204
+ 407.2
+ 306.45
0
- 60
- 585
-
+ 49.4
+ 400
+
Left
- Bottom
-
- Outline
-
-
-
- 1365
- 346.5
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 780
- 264
+ 407.2
+ 355.85
0
- 40.5
- 255
+ 34.2
+ 400
Left
- Bottom
+ Center
Outline
- 780
- 346.5
+ 407.2
+ 390.05
0
- 40.5
- 585
-
+ 28.5
+ 400
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 1680
+ 332.1
+ 0
+ 60.8
+ 280
+
+
+ Right
+ Center
Outline
- 780
- 490.5
+ 407.2
+ 511.45
0
- 60
- 585
-
+ 49.4
+ 400
+
Left
- Bottom
-
- Outline
-
-
-
- 1365
- 633
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 780
- 550.5
+ 407.2
+ 560.85
0
- 40.5
- 255
+ 34.2
+ 400
Left
- Bottom
+ Center
Outline
- 780
- 633
+ 407.2
+ 595.05
0
- 40.5
- 585
-
+ 28.5
+ 400
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 1680
+ 537.1
+ 0
+ 60.8
+ 280
+
+
+ Right
+ Center
Outline
- 780
- 777
+ 407.2
+ 716.45
0
- 60
- 585
-
+ 49.4
+ 400
+
Left
- Bottom
-
- Outline
-
-
-
- 1365
- 919.5
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 780
- 837
+ 407.2
+ 765.85
0
- 40.5
- 255
+ 34.2
+ 400
Left
- Bottom
+ Center
Outline
- 780
- 919.5
+ 407.2
+ 800.05
0
- 40.5
- 585
-
+ 28.5
+ 400
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 1680
+ 742.1
+ 0
+ 60.8
+ 280
+
+
+ Right
+ Center
Outline
- 315
- 307.5
+ 282.2
+ 387.1
0
- 60
- 585
-
+ 45.6
+ 382.8
+
Left
- Bottom
-
- Outline
-
-
-
- 900
- 450
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 315
- 367.5
+ 282.2
+ 432.7
0
- 40.5
- 255
+ 32.3
+ 382.8
Left
- Bottom
+ Center
Outline
- 315
- 450
+ 282.2
+ 465
0
- 40.5
- 585
-
+ 26.6
+ 382.8
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 905
+ 387.1
+ 0
+ 57
+ 220
+
+
+ Right
+ Center
Outline
- 315
- 675
+ 282.2
+ 592.1
0
- 60
- 585
-
+ 45.6
+ 382.8
+
Left
- Bottom
-
- Outline
-
-
-
- 900
- 817.5
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 315
- 735
+ 282.2
+ 637.7
0
- 40.5
- 255
+ 32.3
+ 382.8
Left
- Bottom
+ Center
Outline
- 315
- 817.5
+ 282.2
+ 670
0
- 40.5
- 585
-
+ 26.6
+ 382.8
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 905
+ 592.1
+ 0
+ 57
+ 220
+
+
+ Right
+ Center
Outline
- 1230
- 307.5
+ 1182.2
+ 387.1
0
- 60
- 585
-
+ 45.6
+ 382.8
+
Left
- Bottom
-
- Outline
-
-
-
- 1815
- 450
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 1230
- 367.5
+ 1182.2
+ 432.7
0
- 40.5
- 255
+ 32.3
+ 382.8
Left
- Bottom
+ Center
Outline
- 1230
- 450
+ 1182.2
+ 465
0
- 40.5
- 585
-
+ 26.6
+ 382.8
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 1805
+ 387.1
+ 0
+ 57
+ 220
+
+
+ Right
+ Center
Outline
- 1230
- 675
+ 1182.2
+ 592.1
0
- 60
- 585
-
+ 45.6
+ 382.8
+
Left
- Bottom
-
- Outline
-
-
-
- 1815
- 817.5
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 1230
- 735
+ 1182.2
+ 637.7
0
- 40.5
- 255
+ 32.3
+ 382.8
Left
- Bottom
+ Center
Outline
- 1230
- 817.5
+ 1182.2
+ 670
0
- 40.5
- 585
-
+ 26.6
+ 382.8
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 1805
+ 592.1
+ 0
+ 57
+ 220
+
+
+ Right
+ Center
Outline
- 315
- 204
+ 282.2
+ 284.6
0
- 60
- 585
-
+ 45.6
+ 382.8
+
Left
- Bottom
-
- Outline
-
-
-
- 900
- 346.5
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 315
- 264
+ 282.2
+ 330.2
0
- 40.5
- 255
+ 32.3
+ 382.8
Left
- Bottom
+ Center
Outline
- 315
- 346.5
+ 282.2
+ 362.5
0
- 40.5
- 585
-
+ 26.6
+ 382.8
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 905
+ 284.6
+ 0
+ 57
+ 220
+
+
+ Right
+ Center
Outline
- 315
- 490.5
+ 282.2
+ 489.6
0
- 60
- 585
-
+ 45.6
+ 382.8
+
Left
- Bottom
-
- Outline
-
-
-
- 900
- 633
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 315
- 550.5
+ 282.2
+ 535.2
0
- 40.5
- 255
+ 32.3
+ 382.8
Left
- Bottom
+ Center
Outline
- 315
- 633
+ 282.2
+ 567.5
0
- 40.5
- 585
-
+ 26.6
+ 382.8
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 905
+ 489.6
+ 0
+ 57
+ 220
+
+
+ Right
+ Center
Outline
- 315
- 777
+ 282.2
+ 694.6
0
- 60
- 585
-
+ 45.6
+ 382.8
+
Left
- Bottom
-
- Outline
-
-
-
- 900
- 919.5
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 315
- 837
+ 282.2
+ 740.2
0
- 40.5
- 255
+ 32.3
+ 382.8
Left
- Bottom
+ Center
Outline
- 315
- 919.5
+ 282.2
+ 772.5
0
- 40.5
- 585
-
+ 26.6
+ 382.8
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 905
+ 694.6
+ 0
+ 57
+ 220
+
+
+ Right
+ Center
Outline
- 1230
- 204
+ 1182.2
+ 284.6
0
- 60
- 585
-
+ 45.6
+ 382.8
+
Left
- Bottom
-
- Outline
-
-
-
- 1815
- 346.5
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 1230
- 264
+ 1182.2
+ 330.2
0
- 40.5
- 255
+ 32.3
+ 382.8
Left
- Bottom
+ Center
Outline
- 1230
- 346.5
+ 1182.2
+ 362.5
0
- 40.5
- 585
-
+ 26.6
+ 382.8
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 1805
+ 284.6
+ 0
+ 57
+ 220
+
+
+ Right
+ Center
Outline
- 1230
- 490.5
+ 1182.2
+ 489.6
0
- 60
- 585
-
+ 45.6
+ 382.8
+
Left
- Bottom
-
- Outline
-
-
-
- 1815
- 633
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 1230
- 550.5
+ 1182.2
+ 535.2
0
- 40.5
- 255
+ 32.3
+ 382.8
Left
- Bottom
+ Center
Outline
- 1230
- 633
+ 1182.2
+ 567.5
0
- 40.5
- 585
-
+ 26.6
+ 382.8
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 1805
+ 489.6
+ 0
+ 57
+ 220
+
+
+ Right
+ Center
Outline
- 315
- 204
+ 282.2
+ 284.6
0
- 60
- 585
-
+ 45.6
+ 382.8
+
Left
- Bottom
-
- Outline
-
-
-
- 900
- 346.5
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 315
- 264
+ 282.2
+ 330.2
0
- 40.5
- 255
+ 32.3
+ 382.8
Left
- Bottom
+ Center
Outline
- 315
- 346.5
+ 282.2
+ 362.5
0
- 40.5
- 585
-
+ 26.6
+ 382.8
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 905
+ 284.6
+ 0
+ 57
+ 220
+
+
+ Right
+ Center
Outline
- 315
- 490.5
+ 282.2
+ 489.6
0
- 60
- 585
-
+ 45.6
+ 382.8
+
Left
- Bottom
-
- Outline
-
-
-
- 900
- 633
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 315
- 550.5
+ 282.2
+ 535.2
0
- 40.5
- 255
+ 32.3
+ 382.8
Left
- Bottom
+ Center
Outline
- 315
- 633
+ 282.2
+ 567.5
0
- 40.5
- 585
-
+ 26.6
+ 382.8
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 905
+ 489.6
+ 0
+ 57
+ 220
+
+
+ Right
+ Center
Outline
- 315
- 777
+ 282.2
+ 694.6
0
- 60
- 585
-
+ 45.6
+ 382.8
+
Left
- Bottom
-
- Outline
-
-
-
- 900
- 919.5
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 315
- 837
+ 282.2
+ 740.2
0
- 40.5
- 255
+ 32.3
+ 382.8
Left
- Bottom
+ Center
Outline
- 315
- 919.5
+ 282.2
+ 772.5
0
- 40.5
- 585
-
+ 26.6
+ 382.8
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 905
+ 694.6
+ 0
+ 57
+ 220
+
+
+ Right
+ Center
Outline
- 1230
- 204
+ 1182.2
+ 284.6
0
- 60
- 585
-
+ 45.6
+ 382.8
+
Left
- Bottom
-
- Outline
-
-
-
- 1815
- 346.5
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 1230
- 264
+ 1182.2
+ 330.2
0
- 40.5
- 255
+ 32.3
+ 382.8
Left
- Bottom
+ Center
Outline
- 1230
- 346.5
+ 1182.2
+ 362.5
0
- 40.5
- 585
-
+ 26.6
+ 382.8
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 1805
+ 284.6
+ 0
+ 57
+ 220
+
+
+ Right
+ Center
Outline
- 1230
- 490.5
+ 1182.2
+ 489.6
0
- 60
- 585
-
+ 45.6
+ 382.8
+
Left
- Bottom
-
- Outline
-
-
-
- 1815
- 633
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 1230
- 550.5
+ 1182.2
+ 535.2
0
- 40.5
- 255
+ 32.3
+ 382.8
Left
- Bottom
+ Center
Outline
- 1230
- 633
+ 1182.2
+ 567.5
0
- 40.5
- 585
-
+ 26.6
+ 382.8
+
Left
- Bottom
+ Center
+
+ Outline
+
+
+
+ 1805
+ 489.6
+ 0
+ 57
+ 220
+
+
+ Right
+ Center
Outline
- 1230
- 777
+ 1182.2
+ 694.6
0
- 60
- 585
-
+ 45.6
+ 382.8
+
Left
- Bottom
-
- Outline
-
-
-
- 1815
- 919.5
- 0
- 40.5
- 330
-
-
- Right
- Bottom
+ Center
Outline
- 1230
- 837
+ 1182.2
+ 740.2
0
- 40.5
- 255
+ 32.3
+ 382.8
Left
- Bottom
+ Center
Outline
- 1230
- 919.5
+ 1182.2
+ 772.5
0
- 40.5
- 585
-
+ 26.6
+ 382.8
+
Left
- Bottom
+ Center
Outline
+
+ 1805
+ 694.6
+ 0
+ 57
+ 220
+
+
+ Right
+ Center
+
+ Outline
+
+
+
+ 736
+ 1006
+ 0
+ 36
+ 200
+
+
+ Left
+ Center
+
+ Outline
+ TR_SCREENSCORE_GOLDENNOTES
+
+
+ 1056
+ 1006
+ 0
+ 36
+ 200
+
+
+ Left
+ Center
+
+ Outline
+ TR_SCREENSCORE_LINEBONUS
+
-
-
-
-
-
-
-
-
-
- 7
+ 1
Int
@@ -1485,14 +1790,10 @@
1
Int
-
- Vertical
- String
-
- PointsBarBG
+ PointsBarBG
@@ -1503,19 +1804,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 780
- 540
- 585
- 15
+ 827.2
+ 554.2
+ 542.8
+ 26.6
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 827.2
+ 554.2
+ 542.8
+ 26.6
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 827.2
+ 554.2
+ 542.8
+ 26.6
+ -0.02
+
+
PointsBarBG
@@ -1528,21 +1879,71 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 780
- 435
- 585
- 15
+ 827.2
+ 451.7
+ 542.8
+ 26.6
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 827.2
+ 451.7
+ 542.8
+ 26.6
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 827.2
+ 451.7
+ 542.8
+ 26.6
+ -0.02
+
+
- PointsBarBG
+ PointsBarBG
@@ -1553,19 +1954,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 780
- 802.5
- 585
- 15
+ 827.2
+ 656.7
+ 542.8
+ 26.6
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 827.2
+ 656.7
+ 542.8
+ 26.6
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 827.2
+ 656.7
+ 542.8
+ 26.6
+ -0.02
+
+
PointsBarBG
@@ -1578,19 +2029,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 780
- 331.5
- 585
- 15
+ 827.2
+ 349.2
+ 542.8
+ 26.6
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 827.2
+ 349.2
+ 542.8
+ 26.6
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 827.2
+ 349.2
+ 542.8
+ 26.6
+ -0.02
+
+
PointsBarBG
@@ -1603,19 +2104,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 780
- 618
- 585
- 15
+ 827.2
+ 554.2
+ 542.8
+ 26.6
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 827.2
+ 554.2
+ 542.8
+ 26.6
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 827.2
+ 554.2
+ 542.8
+ 26.6
+ -0.02
+
+
PointsBarBG
@@ -1628,19 +2179,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 780
- 904.5
- 585
- 15
+ 827.2
+ 759.2
+ 542.8
+ 26.6
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 827.2
+ 759.2
+ 542.8
+ 26.6
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 827.2
+ 759.2
+ 542.8
+ 26.6
+ -0.02
+
+
PointsBarBG
@@ -1653,19 +2254,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 315
- 435
- 585
- 15
+ 282.2
+ 514.4
+ 622.8
+ 22.8
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 282.2
+ 514.4
+ 622.8
+ 22.8
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 282.2
+ 514.4
+ 622.8
+ 22.8
+ -0.02
+
+
PointsBarBG
@@ -1678,19 +2329,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 315
- 802.5
- 585
- 15
+ 282.2
+ 719.4
+ 622.8
+ 22.8
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 282.2
+ 719.4
+ 622.8
+ 22.8
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 282.2
+ 719.4
+ 622.8
+ 22.8
+ -0.02
+
+
PointsBarBG
@@ -1703,19 +2404,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 1230
- 435
- 585
- 15
+ 1182.2
+ 514.4
+ 622.8
+ 22.8
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 1182.2
+ 514.4
+ 622.8
+ 22.8
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 1182.2
+ 514.4
+ 622.8
+ 22.8
+ -0.02
+
+
PointsBarBG
@@ -1728,19 +2479,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 1230
- 802.5
- 585
- 15
+ 1182.2
+ 719.4
+ 622.8
+ 22.8
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 1182.2
+ 719.4
+ 622.8
+ 22.8
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 1182.2
+ 719.4
+ 622.8
+ 22.8
+ -0.02
+
+
PointsBarBG
@@ -1753,19 +2554,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 315
- 331.5
- 585
- 15
+ 282.2
+ 411.9
+ 622.8
+ 22.8
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 282.2
+ 411.9
+ 622.8
+ 22.8
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 282.2
+ 411.9
+ 622.8
+ 22.8
+ -0.02
+
+
PointsBarBG
@@ -1778,19 +2629,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 315
- 618
- 585
- 15
+ 282.2
+ 616.9
+ 622.8
+ 22.8
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 282.2
+ 616.9
+ 622.8
+ 22.8
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 282.2
+ 616.9
+ 622.8
+ 22.8
+ -0.02
+
+
PointsBarBG
@@ -1803,19 +2704,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 315
- 904.5
- 585
- 15
+ 282.2
+ 821.9
+ 622.8
+ 22.8
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 282.2
+ 821.9
+ 622.8
+ 22.8
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 282.2
+ 821.9
+ 622.8
+ 22.8
+ -0.02
+
+
PointsBarBG
@@ -1828,19 +2779,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 1230
- 331.5
- 585
- 15
+ 1182.2
+ 411.9
+ 622.8
+ 22.8
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 1182.2
+ 411.9
+ 622.8
+ 22.8
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 1182.2
+ 411.9
+ 622.8
+ 22.8
+ -0.02
+
+
PointsBarBG
@@ -1853,19 +2854,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 1230
- 618
- 585
- 15
+ 1182.2
+ 616.9
+ 622.8
+ 22.8
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 1182.2
+ 616.9
+ 622.8
+ 22.8
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 1182.2
+ 616.9
+ 622.8
+ 22.8
+ -0.02
+
+
PointsBarBG
@@ -1878,19 +2929,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 315
- 331.5
- 585
- 15
+ 282.2
+ 411.9
+ 622.8
+ 22.8
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 282.2
+ 411.9
+ 622.8
+ 22.8
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 282.2
+ 411.9
+ 622.8
+ 22.8
+ -0.02
+
+
PointsBarBG
@@ -1903,19 +3004,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 315
- 618
- 585
- 15
+ 282.2
+ 616.9
+ 622.8
+ 22.8
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 282.2
+ 616.9
+ 622.8
+ 22.8
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 282.2
+ 616.9
+ 622.8
+ 22.8
+ -0.02
+
+
PointsBarBG
@@ -1928,19 +3079,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 315
- 904.5
- 585
- 15
+ 282.2
+ 821.9
+ 622.8
+ 22.8
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 282.2
+ 821.9
+ 622.8
+ 22.8
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 282.2
+ 821.9
+ 622.8
+ 22.8
+ -0.02
+
+
PointsBarBG
@@ -1953,19 +3154,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 1230
- 331.5
- 585
- 15
+ 1182.2
+ 411.9
+ 622.8
+ 22.8
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 1182.2
+ 411.9
+ 622.8
+ 22.8
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 1182.2
+ 411.9
+ 622.8
+ 22.8
+ -0.02
+
+
PointsBarBG
@@ -1978,19 +3229,69 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 1230
- 618
- 585
- 15
+ 1182.2
+ 616.9
+ 622.8
+ 22.8
0
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 1182.2
+ 616.9
+ 622.8
+ 22.8
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 1182.2
+ 616.9
+ 622.8
+ 22.8
+ -0.02
+
+
PointsBarBG
@@ -2003,18 +3304,68 @@
TR_CONFIG_ON
TR_CONFIG_ON
-
- 0
-
-
+
+ 0
+
+
- 1230
- 904.5
- 585
- 15
+ 1182.2
+ 821.9
+ 622.8
+ 22.8
0
-
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 1182.2
+ 821.9
+ 622.8
+ 22.8
+ -0.01
+
+
+
+
+
+
+
+
+
+
+ Right
+ TR_CONFIG_ON
+ TR_CONFIG_ON
+
+
+ 0
+
+
+
+
+ 1182.2
+ 821.9
+ 622.8
+ 22.8
+ -0.02
+
+
diff --git a/Vocaluxe/Screens/CScreenScore.cs b/Vocaluxe/Screens/CScreenScore.cs
index 03ca4b80..82b12ad8 100644
--- a/Vocaluxe/Screens/CScreenScore.cs
+++ b/Vocaluxe/Screens/CScreenScore.cs
@@ -34,11 +34,21 @@ namespace Vocaluxe.Screens
// Version number for theme files. Increment it, if you've changed something on the theme files!
protected override int _ScreenVersion
{
- get { return 4; }
+ get { return 6; }
}
private const string _TextSong = "TextSong";
+ private const string _StaticCover = "StaticCover";
+ private const string _StaticRoundLeft = "StaticRoundLeft";
+ private const string _StaticRoundRight = "StaticRoundRight";
+ private const string _StaticLegendGolden = "StaticLegendGolden";
+ private const string _StaticLegendLineBonus = "StaticLegendLineBonus";
+ private const string _TextLegendGolden = "TextLegendGolden";
+ private const string _TextLegendLineBonus = "TextLegendLineBonus";
+
+ private const float _RevealDuration = 300f;
+
private const string _ScreenSettingShortScore = "ScreenSettingShortScore";
private const string _ScreenSettingShortRating = "ScreenSettingShortRating";
private const string _ScreenSettingShortDifficulty = "ScreenSettingShortDifficulty";
@@ -50,10 +60,26 @@ namespace Vocaluxe.Screens
private string[,] _TextRatings;
private string[,] _TextDifficulty;
private string[,] _ProgressBarPoints;
+ private string[,] _ProgressBarGolden;
+ private string[,] _ProgressBarNotes;
private string[,] _StaticAvatar;
+ private string[,] _StaticRow;
private int _Round;
private CPoints _Points;
+ private struct STextStyle
+ {
+ public float Height;
+ public float Y;
+ public SColorF Color;
+ }
+
+ private readonly Dictionary _TextStyles = new Dictionary();
+ private readonly Stopwatch _RevealTimer = new Stopwatch();
+ private readonly Stopwatch _PulseTimer = new Stopwatch();
+ private readonly bool[] _IsWinner = new bool[CSettings.MaxNumPlayer];
+ private SColorF _WinnerColor;
+
public override EMusicType CurrentMusicType
{
get { return EMusicType.BackgroundPreview; }
@@ -63,13 +89,13 @@ namespace Vocaluxe.Screens
{
base.Init();
- var texts = new List { _TextSong };
+ var texts = new List { _TextSong, _TextLegendGolden, _TextLegendLineBonus };
_BuildTextStrings(ref texts);
_ThemeTexts = texts.ToArray();
- var statics = new List();
+ var statics = new List { _StaticCover, _StaticRoundLeft, _StaticRoundRight, _StaticLegendGolden, _StaticLegendLineBonus };
_BuildStaticStrings(ref statics);
_ThemeStatics = statics.ToArray();
@@ -86,10 +112,32 @@ namespace Vocaluxe.Screens
_SlideShowBG.Z--;
}
+ public override void LoadTheme(string xmlPath)
+ {
+ base.LoadTheme(xmlPath);
+
+ foreach (var avatar in _StaticAvatar.Cast().Where(name => name != null))
+ {
+ _Statics[avatar].Aspect = EAspect.Crop;
+ }
+
+ _TextStyles.Clear();
+ foreach (var name in _TextNames.Cast().Concat(_TextScores.Cast()).Concat(_TextRatings.Cast()).Where(name => name != null))
+ {
+ _TextStyles[name] = new STextStyle { Height = _Texts[name].Font.Height, Y = _Texts[name].Y, Color = _Texts[name].Color };
+ }
+
+ if (!CBase.Themes.GetColor("Top1Color", PartyModeId, out _WinnerColor))
+ {
+ _WinnerColor = new SColorF(1f, 0.8f, 0f, 1f);
+ }
+
+ _WinnerColor.A = 1f;
+ }
+
public override bool HandleInput(SKeyEvent keyEvent)
{
- if (keyEvent.KeyPressed) { }
- else
+ if (!keyEvent.KeyPressed)
{
switch (keyEvent.Key)
{
@@ -123,7 +171,18 @@ namespace Vocaluxe.Screens
if (mouseEvent.LB)
{
- _LeaveScreen();
+ if (_IsMouseOverStatic(mouseEvent, _StaticRoundLeft))
+ {
+ _ChangeRound(-1);
+ }
+ else if (_IsMouseOverStatic(mouseEvent, _StaticRoundRight))
+ {
+ _ChangeRound(1);
+ }
+ else
+ {
+ _LeaveScreen();
+ }
}
if (mouseEvent.RB)
@@ -146,42 +205,88 @@ namespace Vocaluxe.Screens
_SetVisibility();
_UpdateRatings();
_SlideShowBG.Visible = _UpdateBackground();
+ }
- for (var p = 0; p < CGame.NumPlayers; p++)
- {
- _Statics[_StaticAvatar[p, CGame.NumPlayers - 1]].Aspect = EAspect.Crop;
- }
+ public override void OnClose()
+ {
+ base.OnClose();
+ _StopScoreSounds();
}
public override bool UpdateGame()
{
_UpdateProgressBarSound();
-
- var players = new SPlayer[CGame.NumPlayers];
- if (_Round >= 0)
- {
- players = _Points.GetPlayer(_Round, CGame.NumPlayers);
- }
- else
- {
- for (var i = 0; i < CGame.NumRounds; i++)
- {
- var points = _Points.GetPlayer(i, CGame.NumPlayers);
- for (var p = 0; p < players.Length; p++)
- {
- players[p].Points += points[p].Points;
- }
- }
-
- for (var p = 0; p < players.Length; p++)
- {
- players[p].Points = (int)(players[p].Points / CGame.NumRounds);
- }
- }
+ _UpdateRevealAnimation();
return true;
}
+ private void _UpdateRevealAnimation()
+ {
+ if (!_RevealTimer.IsRunning)
+ {
+ if (_AreProgressBarsAnimating())
+ {
+ return;
+ }
+
+ _RevealTimer.Restart();
+ _PulseTimer.Restart();
+ }
+
+ var progress = Math.Min(_RevealTimer.ElapsedMilliseconds / _RevealDuration, 1f);
+ var revealScale = 1.3f - 0.3f * (1f - (1f - progress) * (1f - progress));
+ var pulseScale = 1f + 0.03f * (float)Math.Sin(_PulseTimer.ElapsedMilliseconds / 1000.0 * Math.PI * 1.4);
+ var numPlayer = CGame.NumPlayers - 1;
+
+ for (var p = 0; p < CGame.NumPlayers; p++)
+ {
+ _ApplyTextStyle(_TextRatings[p, numPlayer], revealScale, progress, false);
+ if (_IsWinner[p])
+ {
+ _ApplyTextStyle(_TextNames[p, numPlayer], pulseScale, 1f, false);
+ _ApplyTextStyle(_TextScores[p, numPlayer], pulseScale, 1f, true);
+ }
+ }
+ }
+
+ private void _ResetRevealAnimation()
+ {
+ _RevealTimer.Reset();
+ _PulseTimer.Reset();
+ var numPlayer = CGame.NumPlayers - 1;
+
+ for (var p = 0; p < CGame.NumPlayers; p++)
+ {
+ _ApplyTextStyle(_TextRatings[p, numPlayer], 1f, 0f, false);
+ _ApplyTextStyle(_TextNames[p, numPlayer], 1f, 1f, false);
+ _ApplyTextStyle(_TextScores[p, numPlayer], 1f, 1f, false);
+ }
+ }
+
+ private void _ApplyTextStyle(string name, float scale, float alpha, bool winnerColor)
+ {
+ var style = _TextStyles[name];
+ var text = _Texts[name];
+ text.Color = winnerColor ? _WinnerColor : style.Color;
+ text.Font.Height = style.Height * scale;
+ text.Y = style.Y - style.Height * (scale - 1f) / 2f;
+ text.Alpha = alpha;
+ }
+
+ private bool _AreProgressBarsAnimating()
+ {
+ return Enumerable.Range(0, CGame.NumPlayers)
+ .Select(p => _ProgressBars[_ProgressBarPoints[p, CGame.NumPlayers - 1]])
+ .Any(progressBar => progressBar.Visible && progressBar.IsAnimating);
+ }
+
+ private bool _IsMouseOverStatic(SMouseEvent mouseEvent, string staticName)
+ {
+ var element = _Statics[staticName];
+ return element.Visible && CHelper.IsInBounds(element.Rect, mouseEvent);
+ }
+
private bool _IsKaraokeMode(int round)
{
if (round >= 0)
@@ -275,6 +380,7 @@ namespace Vocaluxe.Screens
private void _BuildStaticStrings(ref List statics)
{
_StaticAvatar = new string[CSettings.MaxNumPlayer, CSettings.MaxNumPlayer];
+ _StaticRow = new string[CSettings.MaxNumPlayer, CSettings.MaxNumPlayer];
for (var numplayer = 0; numplayer < CSettings.MaxNumPlayer; numplayer++)
{
@@ -287,8 +393,10 @@ namespace Vocaluxe.Screens
var target = "P" + (player + 1) + "N" + (numplayer + 1);
_StaticAvatar[player, numplayer] = "StaticAvatar" + target;
+ _StaticRow[player, numplayer] = "StaticRow" + target;
statics.Add(_StaticAvatar[player, numplayer]);
+ statics.Add(_StaticRow[player, numplayer]);
}
}
}
@@ -296,6 +404,8 @@ namespace Vocaluxe.Screens
private void _BuildProgressBarString(ref List progressBars)
{
_ProgressBarPoints = new string[CSettings.MaxNumPlayer, CSettings.MaxNumPlayer];
+ _ProgressBarGolden = new string[CSettings.MaxNumPlayer, CSettings.MaxNumPlayer];
+ _ProgressBarNotes = new string[CSettings.MaxNumPlayer, CSettings.MaxNumPlayer];
for (var numplayer = 0; numplayer < CSettings.MaxNumPlayer; numplayer++)
{
@@ -308,8 +418,12 @@ namespace Vocaluxe.Screens
var target = "P" + (player + 1) + "N" + (numplayer + 1);
_ProgressBarPoints[player, numplayer] = "ProgressBarPoints" + target;
+ _ProgressBarGolden[player, numplayer] = "ProgressBarGolden" + target;
+ _ProgressBarNotes[player, numplayer] = "ProgressBarNotes" + target;
progressBars.Add(_ProgressBarPoints[player, numplayer]);
+ progressBars.Add(_ProgressBarGolden[player, numplayer]);
+ progressBars.Add(_ProgressBarNotes[player, numplayer]);
}
}
}
@@ -420,7 +534,6 @@ namespace Vocaluxe.Screens
private void _UpdateRatings()
{
CSong song = null;
- var players = new SPlayer[CGame.NumPlayers];
if (_Round >= 0)
{
song = CGame.GetSong(_Round);
@@ -434,40 +547,26 @@ namespace Vocaluxe.Screens
{
_Texts[_TextSong].Text += " (" + (_Round + 1) + "/" + _Points.NumRounds + ")";
}
-
- players = _Points.GetPlayer(_Round, CGame.NumPlayers);
-
- var maxPoints = (int)Math.Round(players.Max(player => player.Points));
- _PlayProgressBarSound(maxPoints);
}
else
{
_Texts[_TextSong].Text = "TR_SCREENSCORE_OVERALLSCORE";
- for (var i = 0; i < CGame.NumRounds; i++)
- {
- var points = _Points.GetPlayer(i, CGame.NumPlayers);
- for (var p = 0; p < players.Length; p++)
- {
- if (i < 1)
- {
- players[p].ProfileId = points[p].ProfileId;
- }
-
- players[p].Points += points[p].Points;
- }
- }
-
- for (var p = 0; p < players.Length; p++)
- {
- players[p].Points = (int)Math.Round(players[p].Points / CGame.NumRounds);
- }
-
- var maxPoints = (int)Math.Round(players.Max(player => player.Points));
- _PlayProgressBarSound(maxPoints);
}
+ var players = _GetPlayers(_Round);
+ var maxPoints = (int)Math.Round(players.Max(player => player.Points));
+ _PlayProgressBarSound(maxPoints);
+
+ _UpdateCover(song);
+ _UpdateRoundArrows();
+
+ var showWinner = CGame.NumPlayers > 1 && !_IsKaraokeMode(_Round);
+
for (var p = 0; p < players.Length; p++)
{
+ var playerPoints = (int)Math.Round(players[p].Points);
+ _IsWinner[p] = showWinner && playerPoints > 0 && players.All(other => (int)Math.Round(other.Points) <= playerPoints);
+
var name = CProfiles.GetPlayerName(players[p].ProfileId, p);
if (song != null && song.IsDuet)
{
@@ -509,18 +608,84 @@ namespace Vocaluxe.Screens
}
_ProgressBars[_ProgressBarPoints[p, CGame.NumPlayers - 1]].Progress = (float)players[p].Points / CSettings.MaxScore;
+ _ProgressBars[_ProgressBarGolden[p, CGame.NumPlayers - 1]].Progress = (float)Math.Max(players[p].Points - players[p].PointsLineBonus, 0) / CSettings.MaxScore;
+ _ProgressBars[_ProgressBarNotes[p, CGame.NumPlayers - 1]].Progress = (float)Math.Max(players[p].Points - players[p].PointsLineBonus - players[p].PointsGoldenNotes, 0) / CSettings.MaxScore;
if (CProfiles.IsProfileIdValid(players[p].ProfileId))
{
_Statics[_StaticAvatar[p, CGame.NumPlayers - 1]].Texture = CProfiles.GetAvatarTextureFromProfile(players[p].ProfileId);
}
}
+
+ _ResetRevealAnimation();
+ }
+
+ private SPlayer[] _GetPlayers(int round)
+ {
+ if (round >= 0)
+ {
+ return _Points.GetPlayer(round, CGame.NumPlayers);
+ }
+
+ var players = new SPlayer[CGame.NumPlayers];
+ for (var i = 0; i < CGame.NumRounds; i++)
+ {
+ var points = _Points.GetPlayer(i, CGame.NumPlayers);
+ for (var p = 0; p < players.Length; p++)
+ {
+ if (i < 1)
+ {
+ players[p].ProfileId = points[p].ProfileId;
+ }
+
+ players[p].Points += points[p].Points;
+ players[p].PointsGoldenNotes += points[p].PointsGoldenNotes;
+ players[p].PointsLineBonus += points[p].PointsLineBonus;
+ }
+ }
+
+ for (var p = 0; p < players.Length; p++)
+ {
+ players[p].Points = (int)Math.Round(players[p].Points / CGame.NumRounds);
+ players[p].PointsGoldenNotes /= CGame.NumRounds;
+ players[p].PointsLineBonus /= CGame.NumRounds;
+ }
+
+ return players;
+ }
+
+ private void _UpdateCover(CSong song)
+ {
+ var cover = _Statics[_StaticCover];
+ cover.Visible = song != null;
+ if (song == null)
+ {
+ return;
+ }
+
+ cover.Texture = song.CoverTextureSmall;
+ cover.Aspect = EAspect.Crop;
+ cover.X = _Texts[_TextSong].Rect.X - cover.W - 15f;
+ }
+
+ private void _UpdateRoundArrows()
+ {
+ var hasRounds = _Points.NumRounds > 1;
+ _Statics[_StaticRoundLeft].Visible = hasRounds;
+ _Statics[_StaticRoundRight].Visible = hasRounds;
+ _Statics[_StaticRoundLeft].Alpha = _Round > -1 ? 1f : 0.3f;
+ _Statics[_StaticRoundRight].Alpha = _Round < _Points.NumRounds - 1 ? 1f : 0.3f;
}
private void _SetVisibility()
{
var isKaraokeMode = _IsKaraokeMode(_Round);
+ _Statics[_StaticLegendGolden].Visible = !isKaraokeMode;
+ _Statics[_StaticLegendLineBonus].Visible = !isKaraokeMode;
+ _Texts[_TextLegendGolden].Visible = !isKaraokeMode;
+ _Texts[_TextLegendLineBonus].Visible = !isKaraokeMode;
+
for (var numplayer = 0; numplayer < CSettings.MaxNumPlayer; numplayer++)
{
for (var player = 0; player < CSettings.MaxNumPlayer; player++)
@@ -535,7 +700,12 @@ namespace Vocaluxe.Screens
_Texts[_TextDifficulty[player, numplayer]].Visible = isVisible;
_ProgressBars[_ProgressBarPoints[player, numplayer]].Visible = isVisible && !isKaraokeMode;
_ProgressBars[_ProgressBarPoints[player, numplayer]].Reset(true);
+ _ProgressBars[_ProgressBarGolden[player, numplayer]].Visible = isVisible && !isKaraokeMode;
+ _ProgressBars[_ProgressBarGolden[player, numplayer]].Reset(true);
+ _ProgressBars[_ProgressBarNotes[player, numplayer]].Visible = isVisible && !isKaraokeMode;
+ _ProgressBars[_ProgressBarNotes[player, numplayer]].Reset(true);
_Statics[_StaticAvatar[player, numplayer]].Visible = isVisible;
+ _Statics[_StaticRow[player, numplayer]].Visible = isVisible;
_Statics[_StaticAvatar[player, numplayer]].Texture = null;
}
@@ -545,9 +715,14 @@ namespace Vocaluxe.Screens
private void _ChangeRound(int num)
{
- _Round += num;
- _Round = _Round.Clamp(-1, _Points.NumRounds - 1);
+ var round = (_Round + num).Clamp(-1, _Points.NumRounds - 1);
+ if (round == _Round)
+ {
+ return;
+ }
+ _Round = round;
+ _SetVisibility();
_UpdateRatings();
}
@@ -556,10 +731,11 @@ namespace Vocaluxe.Screens
for (var round = 0; round < _Points.NumRounds; round++)
{
var players = _Points.GetPlayer(round, CGame.NumPlayers);
+ var isKaraokeMode = CGame.GetAudioMode(round) == EAudioMode.TR_AUDIOMODE_KARAOKE;
for (var p = 0; p < players.Length; p++)
{
- if (players[p].Points > CSettings.MinScoreForDB && players[p].SongFinished)
+ if ((isKaraokeMode || players[p].Points > CSettings.MinScoreForDB) && players[p].SongFinished)
{
var song = CSongs.GetSong(players[p].SongId);
CDataBase.IncreaseSongCounter(song.DataBaseSongId);