diff --git a/Output/Languages/Deutsch.xml b/Output/Languages/Deutsch.xml
index 845b01ae..8fe726bf 100644
--- a/Output/Languages/Deutsch.xml
+++ b/Output/Languages/Deutsch.xml
@@ -122,6 +122,11 @@
Lied singen
Zur Playlist hinzufügen
Schließen
+ Zufälligen Song wählen
+ Alle Songs singen
+ Alle sichtbaren Song singen
+ Playlist öffnen
+ Neue Playlist
Lied-Optionen
Suche:
Ohne Sprache
@@ -135,11 +140,13 @@
Pause
Lied beenden
Fortfahren
+ Lied überspringen
Auswertung
Bewertung
Punkte
Schwierigkeit
+ Gesamtpunktzahl
Highscore
diff --git a/Output/Languages/English.xml b/Output/Languages/English.xml
index 1639ea9d..10b2e4fa 100644
--- a/Output/Languages/English.xml
+++ b/Output/Languages/English.xml
@@ -122,6 +122,11 @@
Sing
Add to playlist
Close
+ Select a random song
+ Sing all songs
+ Sing all visible songs
+ Open playlist
+ New Playlist
Song Options
Search:
No Language
@@ -135,11 +140,13 @@
Pause
Stop singing
Continue
+ Skip this song
Scores
Rating
Points
Difficulty
+ Overall score
Highscore
diff --git a/Output/Languages/French.xml b/Output/Languages/French.xml
index f60e82a3..6da3296d 100644
--- a/Output/Languages/French.xml
+++ b/Output/Languages/French.xml
@@ -117,6 +117,7 @@
Rechercher:
Pas de Langue
Pas d'Année
+ TODO: New Playlist
Pas de Genre
Pas d'Edition
Toutes les chansons
diff --git a/Output/Languages/Spanish.xml b/Output/Languages/Spanish.xml
index 483e30a3..2c4a8456 100644
--- a/Output/Languages/Spanish.xml
+++ b/Output/Languages/Spanish.xml
@@ -116,6 +116,7 @@
Selección de Canciones
Buscar:
Sin Idioma
+ TODO: New Playlist
Sin Año
Sin Género
Sin Edición
diff --git a/Output/Playlists/Test.xml b/Output/Playlists/Test.xml
deleted file mode 100644
index 8e5b1b98..00000000
--- a/Output/Playlists/Test.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
- Test
-
-
-
- 2raumwohnung
- 36 grad
- TR_GAMEMODE_NORMAL
-
-
- Aura Dione
- Geronimo
- TR_GAMEMODE_SHORTSONG
-
-
- Die Toten Hosen
- Tage wie diese
- TR_GAMEMODE_MEDLEY
-
-
-
\ No newline at end of file
diff --git a/Output/Readme.txt b/Output/Readme.txt
index 38fc134a..1ec5c587 100644
--- a/Output/Readme.txt
+++ b/Output/Readme.txt
@@ -109,7 +109,8 @@ Vocaluxe.exe -ConfigFile MyConfig.xml -ScoreFile C:\Vocaluxe\Highscores\MyHighsc
Songscreen
[CTRL] + [R] to select a random song
[F3] to open/close the song search menu
-[A] to sing all songs from a category
+[A] to sing all songs
+[SHIFT] + [A] to sing all songs from a category
=================================
diff --git a/Output/Themes/Ambient/Close.png b/Output/Themes/Ambient/Close.png
new file mode 100644
index 00000000..b8b8a994
Binary files /dev/null and b/Output/Themes/Ambient/Close.png differ
diff --git a/Output/Themes/Ambient/Delete.png b/Output/Themes/Ambient/Delete.png
new file mode 100644
index 00000000..46a686ad
Binary files /dev/null and b/Output/Themes/Ambient/Delete.png differ
diff --git a/Output/Themes/Ambient/Save.png b/Output/Themes/Ambient/Save.png
new file mode 100644
index 00000000..1afc3113
Binary files /dev/null and b/Output/Themes/Ambient/Save.png differ
diff --git a/Output/Themes/Ambient/Screens/PopupScreenPlayerControl.xml b/Output/Themes/Ambient/Screens/PopupScreenPlayerControl.xml
index c8330637..bc07248e 100644
--- a/Output/Themes/Ambient/Screens/PopupScreenPlayerControl.xml
+++ b/Output/Themes/Ambient/Screens/PopupScreenPlayerControl.xml
@@ -58,7 +58,7 @@
Outline
-
+
@@ -103,7 +103,7 @@
Normal
-
+
@@ -152,7 +152,7 @@
Normal
-
+
@@ -201,7 +201,7 @@
Normal
-
+
@@ -250,7 +250,7 @@
Normal
-
+
@@ -299,7 +299,7 @@
Normal
-
+
@@ -348,7 +348,7 @@
Normal
-
+
@@ -397,7 +397,7 @@
Normal
-
+
@@ -446,7 +446,7 @@
Normal
-
+
diff --git a/Output/Themes/Ambient/Screens/ScreenHighscore.xml b/Output/Themes/Ambient/Screens/ScreenHighscore.xml
index caf13c13..b036b823 100644
--- a/Output/Themes/Ambient/Screens/ScreenHighscore.xml
+++ b/Output/Themes/Ambient/Screens/ScreenHighscore.xml
@@ -68,7 +68,7 @@
Outline
-
+
TR_SCREENHIGHSCORE_HIGHSCORE
@@ -97,7 +97,7 @@
Outline
-
+
@@ -126,7 +126,7 @@
Outline
-
+
@@ -155,7 +155,7 @@
Outline
-
+
@@ -184,7 +184,7 @@
Outline
-
+
@@ -213,7 +213,7 @@
Outline
-
+
@@ -242,7 +242,7 @@
Outline
-
+
@@ -271,7 +271,7 @@
Outline
-
+
@@ -300,7 +300,7 @@
Outline
-
+
@@ -329,7 +329,7 @@
Outline
-
+
@@ -358,7 +358,7 @@
Outline
-
+
@@ -387,7 +387,7 @@
Outline
-
+
@@ -416,7 +416,7 @@
Outline
-
+
@@ -445,7 +445,7 @@
Outline
-
+
@@ -474,7 +474,7 @@
Outline
-
+
@@ -503,7 +503,7 @@
Outline
-
+
@@ -532,7 +532,7 @@
Outline
-
+
@@ -561,7 +561,7 @@
Outline
-
+
@@ -590,7 +590,7 @@
Outline
-
+
@@ -619,7 +619,7 @@
Outline
-
+
@@ -648,7 +648,7 @@
Outline
-
+
@@ -677,7 +677,7 @@
Outline
-
+
@@ -706,7 +706,7 @@
Outline
-
+
@@ -735,7 +735,7 @@
Outline
-
+
@@ -764,7 +764,7 @@
Outline
-
+
@@ -793,7 +793,7 @@
Outline
-
+
@@ -822,7 +822,7 @@
Outline
-
+
@@ -851,7 +851,7 @@
Outline
-
+
@@ -880,7 +880,7 @@
Outline
-
+
@@ -909,7 +909,7 @@
Outline
-
+
@@ -938,7 +938,7 @@
Outline
-
+
@@ -967,7 +967,7 @@
Outline
-
+
@@ -996,7 +996,7 @@
Outline
-
+
@@ -1025,7 +1025,7 @@
Outline
-
+
@@ -1054,7 +1054,7 @@
Outline
-
+
@@ -1083,7 +1083,7 @@
Outline
-
+
@@ -1112,7 +1112,7 @@
Outline
-
+
@@ -1141,7 +1141,7 @@
Outline
-
+
@@ -1170,7 +1170,7 @@
Outline
-
+
@@ -1199,7 +1199,7 @@
Outline
-
+
@@ -1228,7 +1228,7 @@
Outline
-
+
@@ -1257,7 +1257,7 @@
Outline
-
+
@@ -1286,7 +1286,7 @@
Outline
-
+
diff --git a/Output/Themes/Ambient/Screens/ScreenLoad.xml b/Output/Themes/Ambient/Screens/ScreenLoad.xml
index a4030b21..6f78787d 100644
--- a/Output/Themes/Ambient/Screens/ScreenLoad.xml
+++ b/Output/Themes/Ambient/Screens/ScreenLoad.xml
@@ -52,7 +52,7 @@
Outline
-
+
TR_PROGRAM_NAME
@@ -81,7 +81,7 @@
Outline
-
+
TR_SCREENLOAD_LOADING
@@ -110,7 +110,7 @@
Outline
-
+
diff --git a/Output/Themes/Ambient/Screens/ScreenMain.xml b/Output/Themes/Ambient/Screens/ScreenMain.xml
index 6c195ea0..71116b93 100644
--- a/Output/Themes/Ambient/Screens/ScreenMain.xml
+++ b/Output/Themes/Ambient/Screens/ScreenMain.xml
@@ -68,7 +68,7 @@
Outline
-
+
TR_SCREENMAIN_BUTTON_SING
@@ -125,7 +125,7 @@
Outline
-
+
TR_SCREENMAIN_BUTTON_OPTIONS
@@ -182,7 +182,7 @@
Outline
-
+
TR_SCREENMAIN_BUTTON_PROFILES
@@ -239,7 +239,7 @@
Outline
-
+
TR_BUTTON_EXIT
diff --git a/Output/Themes/Ambient/Screens/ScreenNames.xml b/Output/Themes/Ambient/Screens/ScreenNames.xml
index c1ac532c..86d907e3 100644
--- a/Output/Themes/Ambient/Screens/ScreenNames.xml
+++ b/Output/Themes/Ambient/Screens/ScreenNames.xml
@@ -1,7 +1,7 @@
- 2
+ 3
Video
@@ -276,7 +276,7 @@
Outline
-
+
TR_SCREENNAMES_MENU
@@ -306,7 +306,7 @@
Outline
-
+
@@ -336,7 +336,7 @@
Outline
-
+
@@ -365,7 +365,7 @@
Outline
-
+
@@ -394,7 +394,7 @@
Outline
-
+
@@ -423,7 +423,7 @@
Outline
-
+
@@ -452,7 +452,7 @@
Outline
-
+
@@ -481,7 +481,7 @@
Outline
-
+
@@ -510,7 +510,7 @@
Outline
-
+
@@ -555,7 +555,7 @@
Outline
-
+
TR_BUTTON_BACK
@@ -612,7 +612,7 @@
Outline
-
+
TR_BUTTON_START
@@ -695,6 +695,396 @@
6
+
+
+ Invisible
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ Button
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ Button
+
+ 41
+ 105
+ -4,00
+ 88
+ 20
+
+ 20
+ 105
+ -4,01
+ 20
+ 20
+
+ 20
+ 105
+ -4,01
+ 20
+ 20
+
+
+ SelectSlideColor
+
+
+ SelectSlideSColor
+
+
+ SelectSlideHColor
+
+
+ ArrowColor
+
+
+ ArrowSColor
+
+
+ TextColor
+
+
+ TextSColor
+
+ 20,00
+
+ 86,00
+
+ Outline
+
+ Bold
+
+ 1
+
+
+
+ Invisible
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ Button
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ Button
+
+ 41
+ 260
+ -4,00
+ 88
+ 20
+
+ 20
+ 260
+ -4,01
+ 20
+ 20
+
+ 20
+ 260
+ -4,01
+ 20
+ 20
+
+
+ SelectSlideColor
+
+
+ SelectSlideSColor
+
+
+ SelectSlideHColor
+
+
+ ArrowColor
+
+
+ ArrowSColor
+
+
+ TextColor
+
+
+ TextSColor
+
+ 20,00
+
+ 86,00
+
+ Outline
+
+ Bold
+
+ 1
+
+
+
+ Invisible
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ Button
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ Button
+
+ 41
+ 415
+ -4,00
+ 88
+ 20
+
+ 20
+ 415
+ -4,01
+ 20
+ 20
+
+ 20
+ 415
+ -4,01
+ 20
+ 20
+
+
+ SelectSlideColor
+
+
+ SelectSlideSColor
+
+
+ SelectSlideHColor
+
+
+ ArrowColor
+
+
+ ArrowSColor
+
+
+ TextColor
+
+
+ TextSColor
+
+ 20,00
+
+ 86,00
+
+ Outline
+
+ Bold
+
+ 1
+
+
+
+ Invisible
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ Button
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ Button
+
+ 1152
+ 105
+ -4,00
+ 88
+ 20
+
+ 1240
+ 105
+ -4,01
+ 20
+ 20
+
+ 1240
+ 105
+ -4,01
+ 20
+ 20
+
+
+ SelectSlideColor
+
+
+ SelectSlideSColor
+
+
+ SelectSlideHColor
+
+
+ ArrowColor
+
+
+ ArrowSColor
+
+
+ TextColor
+
+
+ TextSColor
+
+ 20,00
+
+ 86,00
+
+ Outline
+
+ Bold
+
+ 1
+
+
+
+ Invisible
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ Button
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ Button
+
+ 1152
+ 260
+ -4,00
+ 88
+ 20
+
+ 1240
+ 260
+ -4,01
+ 20
+ 20
+
+ 1240
+ 260
+ -4,01
+ 20
+ 20
+
+
+ SelectSlideColor
+
+
+ SelectSlideSColor
+
+
+ SelectSlideHColor
+
+
+ ArrowColor
+
+
+ ArrowSColor
+
+
+ TextColor
+
+
+ TextSColor
+
+ 20,00
+
+ 86,00
+
+ Outline
+
+ Bold
+
+ 1
+
+
+
+ Invisible
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ Button
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ Button
+
+ 1152
+ 415
+ -4,00
+ 88
+ 20
+
+ 1240
+ 415
+ -4,01
+ 20
+ 20
+
+ 1240
+ 415
+ -4,01
+ 20
+ 20
+
+
+ SelectSlideColor
+
+
+ SelectSlideSColor
+
+
+ SelectSlideHColor
+
+
+ ArrowColor
+
+
+ ArrowSColor
+
+
+ TextColor
+
+
+ TextSColor
+
+ 20,00
+
+ 86,00
+
+ Outline
+
+ Bold
+
+ 1
+
172
@@ -738,5 +1128,167 @@
+
+
+ Invisible
+
+ 21
+ 152
+ -4,00
+ 108
+ 60
+
+ 8
+
+ 2,00
+
+
+
+ TR_CONFIG_OFF
+
+
+ Player1Dim2
+
+
+ Player1Dim2
+
+
+
+
+
+
+ Invisible
+
+ 21
+ 307
+ -4,00
+ 108
+ 60
+
+ 8
+
+ 2,00
+
+
+
+ TR_CONFIG_OFF
+
+
+ Player2Dim2
+
+
+ Player2Dim2
+
+
+
+
+
+
+ Invisible
+
+ 21
+ 467
+ -4,00
+ 108
+ 60
+
+ 8
+
+ 2,00
+
+
+
+ TR_CONFIG_OFF
+
+
+ Player3Dim2
+
+
+ Player3Dim2
+
+
+
+
+
+
+ Invisible
+
+ 1153
+ 152
+ -4,00
+ 108
+ 60
+
+ 8
+
+ 2,00
+
+
+
+ TR_CONFIG_OFF
+
+
+ Player4Dim2
+
+
+ Player4Dim2
+
+
+
+
+
+
+ Invisible
+
+ 1153
+ 307
+ -4,00
+ 108
+ 60
+
+ 8
+
+ 2,00
+
+
+
+ TR_CONFIG_OFF
+
+
+ Player5Dim2
+
+
+ Player5Dim2
+
+
+
+
+
+
+ Invisible
+
+ 1153
+ 467
+ -4,00
+ 108
+ 60
+
+ 8
+
+ 2,00
+
+
+
+ TR_CONFIG_OFF
+
+
+ Player6Dim2
+
+
+ Player6Dim2
+
+
+
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Screens/ScreenOptions.xml b/Output/Themes/Ambient/Screens/ScreenOptions.xml
index 5ce06914..808f1d29 100644
--- a/Output/Themes/Ambient/Screens/ScreenOptions.xml
+++ b/Output/Themes/Ambient/Screens/ScreenOptions.xml
@@ -52,7 +52,7 @@
Outline
-
+
TR_SCREENO_OPTIONS
@@ -97,7 +97,7 @@
Outline
-
+
TR_SCREENO_BUTTON_GAME
@@ -154,7 +154,7 @@
Outline
-
+
TR_SCRENNO_BUTTON_SOUND
@@ -211,7 +211,7 @@
Outline
-
+
TR_SCREENO_BUTTON_RECORD
@@ -268,7 +268,7 @@
Outline
-
+
TR_SCREENO_BUTTON_VIDEO
@@ -325,7 +325,7 @@
Outline
-
+
TR_SCREENO_BUTTON_LYRICS
@@ -382,7 +382,7 @@
Outline
-
+
TR_SCREENO_BUTTON_THEME
diff --git a/Output/Themes/Ambient/Screens/ScreenOptionsGame.xml b/Output/Themes/Ambient/Screens/ScreenOptionsGame.xml
index 28e4b3d2..bdd2f750 100644
--- a/Output/Themes/Ambient/Screens/ScreenOptionsGame.xml
+++ b/Output/Themes/Ambient/Screens/ScreenOptionsGame.xml
@@ -148,7 +148,7 @@
Outline
-
+
TR_SCREENOGAME_OPTIONS
@@ -177,7 +177,7 @@
Outline
-
+
TR_SCREENOGAME_LANGUAGE
@@ -206,7 +206,7 @@
Outline
-
+
TR_SCREENOGAME_DEBUGLEVEL
@@ -235,7 +235,7 @@
Outline
-
+
TR_SCREENOGAME_SONGMENU
@@ -264,7 +264,7 @@
Outline
-
+
TR_SCREENOGAME_SONGSORTING
@@ -293,7 +293,7 @@
Outline
-
+
TR_SCREENOGAME_TABS
@@ -322,7 +322,7 @@
Outline
-
+
TR_SCREENOGAME_TIMERMODE
@@ -367,7 +367,7 @@
Outline
-
+
TR_BUTTON_BACK
diff --git a/Output/Themes/Ambient/Screens/ScreenOptionsLyrics.xml b/Output/Themes/Ambient/Screens/ScreenOptionsLyrics.xml
index 521fd578..d544a49f 100644
--- a/Output/Themes/Ambient/Screens/ScreenOptionsLyrics.xml
+++ b/Output/Themes/Ambient/Screens/ScreenOptionsLyrics.xml
@@ -52,7 +52,7 @@
Outline
-
+
TR_SCREENOLYRICS_OPTIONS
@@ -81,7 +81,7 @@
Outline
-
+
TR_SCREENOLYRICS_STYLE
@@ -110,7 +110,7 @@
Outline
-
+
TR_SCREENOLYRICS_ONTOP
@@ -155,7 +155,7 @@
Outline
-
+
TR_BUTTON_BACK
diff --git a/Output/Themes/Ambient/Screens/ScreenOptionsRecord.xml b/Output/Themes/Ambient/Screens/ScreenOptionsRecord.xml
index 1888fdc0..2100c33e 100644
--- a/Output/Themes/Ambient/Screens/ScreenOptionsRecord.xml
+++ b/Output/Themes/Ambient/Screens/ScreenOptionsRecord.xml
@@ -1,7 +1,7 @@
- 1
+ 2
Video
@@ -180,7 +180,7 @@
Outline
-
+
TR_SCREENORECORD_OPTIONS
@@ -209,7 +209,7 @@
Outline
-
+
TR_SCREENORECORD_DEVICE
@@ -238,7 +238,7 @@
Outline
-
+
TR_SCREENORECORD_INPUT
@@ -267,7 +267,7 @@
Outline
-
+
TR_SCREENORECORD_CHANNEL_1
@@ -296,7 +296,7 @@
Outline
-
+
TR_SCREENORECORD_CHANNEL_2
@@ -325,7 +325,7 @@
Outline
-
+
TR_SCREENORECORD_MIC_DELAY
@@ -355,7 +355,7 @@
Outline
-
+
TR_SCREENORECORD_MIC_WARNING
@@ -384,7 +384,7 @@
Outline
-
+
@@ -413,7 +413,7 @@
Outline
-
+
@@ -458,7 +458,7 @@
Outline
-
+
TR_BUTTON_BACK
@@ -515,7 +515,7 @@
Outline
-
+
TR_SCREENORECORD_BUTTON_DELAYTEST
@@ -858,5 +858,67 @@
5
+
+
+ Invisible
+
+ 50
+ 400
+ -1,00
+ 230
+ 150
+
+ 10
+
+ 2,00
+
+
+
+ TR_CONFIG_OFF
+
+
+ ButtonColor
+
+
+ ButtonColor
+
+
+
+
+ 10
+ 26
+
+
+
+
+ Invisible
+
+ 400
+ 400
+ -1,00
+ 230
+ 150
+
+ 10
+
+ 2,00
+
+
+
+ TR_CONFIG_OFF
+
+
+ ButtonColor
+
+
+ ButtonColor
+
+
+
+
+ 10
+ 26
+
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Screens/ScreenOptionsSound.xml b/Output/Themes/Ambient/Screens/ScreenOptionsSound.xml
index 597e24f4..3f23d55c 100644
--- a/Output/Themes/Ambient/Screens/ScreenOptionsSound.xml
+++ b/Output/Themes/Ambient/Screens/ScreenOptionsSound.xml
@@ -52,7 +52,7 @@
Outline
-
+
TR_SCREENOSOUND_OPTIONS
@@ -81,7 +81,7 @@
Outline
-
+
TR_SCREENOSOUND_BACKGROUNDMUSIC
@@ -110,7 +110,7 @@
Outline
-
+
TR_SCREENOSOUND_BACKGROUNDMUSICVOLUME
@@ -139,7 +139,7 @@
Outline
-
+
TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE
@@ -184,7 +184,7 @@
Outline
-
+
TR_BUTTON_BACK
diff --git a/Output/Themes/Ambient/Screens/ScreenOptionsTheme.xml b/Output/Themes/Ambient/Screens/ScreenOptionsTheme.xml
index fbb7f91c..15c6492b 100644
--- a/Output/Themes/Ambient/Screens/ScreenOptionsTheme.xml
+++ b/Output/Themes/Ambient/Screens/ScreenOptionsTheme.xml
@@ -180,7 +180,7 @@
Outline
-
+
TR_SCREENOTHEME_OPTIONS
@@ -209,7 +209,7 @@
Outline
-
+
TR_SCREENOTHEME_THEME
@@ -238,7 +238,7 @@
Outline
-
+
TR_SCREENOTHEME_SKIN
@@ -267,7 +267,7 @@
Outline
-
+
TR_SCREENOTHEME_COVERTHEME
@@ -296,7 +296,7 @@
Outline
-
+
TR_SCREENOTHEME_NOTELINES
@@ -325,7 +325,7 @@
Outline
-
+
TR_SCREENOTHEME_TONEHELPER
@@ -354,7 +354,7 @@
Outline
-
+
TR_SCREENOTHEME_TIMERLOOK
@@ -383,7 +383,7 @@
Outline
-
+
TR_SCREENOTHEME_FADEINFO
@@ -412,7 +412,7 @@
Outline
-
+
TR_SCREENOTHEME_COVERLOADING
@@ -457,7 +457,7 @@
Outline
-
+
TR_BUTTON_BACK
diff --git a/Output/Themes/Ambient/Screens/ScreenOptionsVideo.xml b/Output/Themes/Ambient/Screens/ScreenOptionsVideo.xml
index 0bacb58b..74d6bfac 100644
--- a/Output/Themes/Ambient/Screens/ScreenOptionsVideo.xml
+++ b/Output/Themes/Ambient/Screens/ScreenOptionsVideo.xml
@@ -100,7 +100,7 @@
Outline
-
+
TR_SCREENOVIDEO_OPTIONS
@@ -129,7 +129,7 @@
Outline
-
+
TR_SCREENOVIDEO_VIDEOBACKGROUNDS
@@ -158,7 +158,7 @@
Outline
-
+
TR_SCREENOVIDEO_VIDEOPREVIEW
@@ -187,7 +187,7 @@
Outline
-
+
TR_SCREENOVIDEO_VIDEOINSONGS
@@ -216,7 +216,7 @@
Normal
-
+
TR_SCREENO_VIDEO_VIDEOSTOBACKGROUND
@@ -261,7 +261,7 @@
Outline
-
+
TR_BUTTON_BACK
diff --git a/Output/Themes/Ambient/Screens/ScreenProfiles.xml b/Output/Themes/Ambient/Screens/ScreenProfiles.xml
index 128a373b..7bd59c6b 100644
--- a/Output/Themes/Ambient/Screens/ScreenProfiles.xml
+++ b/Output/Themes/Ambient/Screens/ScreenProfiles.xml
@@ -148,7 +148,7 @@
Outline
-
+
TR_SCREENPROFILES_PROFILES
@@ -177,7 +177,7 @@
Outline
-
+
TR_SCREENPROFILES_PLAYERNAME
@@ -206,7 +206,7 @@
Outline
-
+
TR_SCREENPROFILES_GAMEDIFFICULTY
@@ -235,7 +235,7 @@
Outline
-
+
TR_SCREENPROFILES_AVATAR
@@ -264,7 +264,7 @@
Outline
-
+
TR_SCREENPROFILES_GUESTPROFILE
@@ -293,7 +293,7 @@
Outline
-
+
TR_SCREENPROFILES_ACTIVE
@@ -338,7 +338,7 @@
Outline
-
+
@@ -387,7 +387,7 @@
Outline
-
+
TR_BUTTON_BACK
@@ -444,7 +444,7 @@
Outline
-
+
TR_BUTTON_SAVE
@@ -501,7 +501,7 @@
Outline
-
+
TR_SCREENPROFILES_BUTTON_NEW
@@ -558,7 +558,7 @@
Outline
-
+
TR_SCREENPROFILES_BUTTON_DELETE
diff --git a/Output/Themes/Ambient/Screens/ScreenScore.xml b/Output/Themes/Ambient/Screens/ScreenScore.xml
index cccaaae3..814efcfe 100644
--- a/Output/Themes/Ambient/Screens/ScreenScore.xml
+++ b/Output/Themes/Ambient/Screens/ScreenScore.xml
@@ -1226,7 +1226,7 @@
Outline
-
+
TR_SCREENSCORE_SCORES
@@ -1255,7 +1255,7 @@
Outline
-
+
@@ -1284,7 +1284,7 @@
Outline
-
+
@@ -1313,7 +1313,7 @@
Outline
-
+
@@ -1342,7 +1342,7 @@
Outline
-
+
@@ -1371,7 +1371,7 @@
Outline
-
+
@@ -1400,7 +1400,7 @@
Outline
-
+
@@ -1429,7 +1429,7 @@
Outline
-
+
@@ -1458,7 +1458,7 @@
Outline
-
+
@@ -1487,7 +1487,7 @@
Outline
-
+
@@ -1516,7 +1516,7 @@
Outline
-
+
@@ -1545,7 +1545,7 @@
Outline
-
+
@@ -1574,7 +1574,7 @@
Outline
-
+
@@ -1603,7 +1603,7 @@
Outline
-
+
@@ -1632,7 +1632,7 @@
Outline
-
+
@@ -1661,7 +1661,7 @@
Outline
-
+
@@ -1690,7 +1690,7 @@
Outline
-
+
@@ -1719,7 +1719,7 @@
Outline
-
+
@@ -1748,7 +1748,7 @@
Outline
-
+
@@ -1777,7 +1777,7 @@
Outline
-
+
@@ -1806,7 +1806,7 @@
Outline
-
+
@@ -1835,7 +1835,7 @@
Outline
-
+
@@ -1864,7 +1864,7 @@
Outline
-
+
@@ -1893,7 +1893,7 @@
Outline
-
+
@@ -1922,7 +1922,7 @@
Outline
-
+
@@ -1951,7 +1951,7 @@
Outline
-
+
@@ -1980,7 +1980,7 @@
Outline
-
+
@@ -2009,7 +2009,7 @@
Outline
-
+
@@ -2039,7 +2039,7 @@
Outline
-
+
@@ -2068,7 +2068,7 @@
Outline
-
+
@@ -2097,7 +2097,7 @@
Outline
-
+
@@ -2126,7 +2126,7 @@
Outline
-
+
@@ -2156,7 +2156,7 @@
Outline
-
+
@@ -2185,7 +2185,7 @@
Outline
-
+
@@ -2214,7 +2214,7 @@
Outline
-
+
@@ -2243,7 +2243,7 @@
Outline
-
+
@@ -2273,7 +2273,7 @@
Outline
-
+
@@ -2302,7 +2302,7 @@
Outline
-
+
@@ -2331,7 +2331,7 @@
Outline
-
+
@@ -2360,7 +2360,7 @@
Outline
-
+
@@ -2390,7 +2390,7 @@
Outline
-
+
@@ -2419,7 +2419,7 @@
Outline
-
+
@@ -2449,7 +2449,7 @@
Outline
-
+
@@ -2479,7 +2479,7 @@
Outline
-
+
@@ -2509,7 +2509,7 @@
Outline
-
+
@@ -2539,7 +2539,7 @@
Outline
-
+
@@ -2569,7 +2569,7 @@
Outline
-
+
@@ -2599,7 +2599,7 @@
Outline
-
+
@@ -2629,7 +2629,7 @@
Outline
-
+
@@ -2659,7 +2659,7 @@
Outline
-
+
@@ -2689,7 +2689,7 @@
Outline
-
+
@@ -2719,7 +2719,7 @@
Outline
-
+
@@ -2749,7 +2749,7 @@
Outline
-
+
@@ -2779,7 +2779,7 @@
Outline
-
+
@@ -2809,7 +2809,7 @@
Outline
-
+
@@ -2839,7 +2839,7 @@
Outline
-
+
@@ -2869,7 +2869,7 @@
Outline
-
+
@@ -2899,7 +2899,7 @@
Outline
-
+
@@ -2929,7 +2929,7 @@
Outline
-
+
@@ -2959,7 +2959,7 @@
Outline
-
+
@@ -2989,7 +2989,7 @@
Outline
-
+
@@ -3019,7 +3019,7 @@
Outline
-
+
@@ -3049,7 +3049,7 @@
Outline
-
+
@@ -3079,7 +3079,7 @@
Outline
-
+
@@ -3109,7 +3109,7 @@
Outline
-
+
@@ -3139,7 +3139,7 @@
Outline
-
+
@@ -3169,7 +3169,7 @@
Outline
-
+
@@ -3199,7 +3199,7 @@
Outline
-
+
@@ -3229,7 +3229,7 @@
Outline
-
+
@@ -3259,7 +3259,7 @@
Outline
-
+
@@ -3289,7 +3289,7 @@
Outline
-
+
@@ -3319,7 +3319,7 @@
Outline
-
+
@@ -3349,7 +3349,7 @@
Outline
-
+
@@ -3379,7 +3379,7 @@
Outline
-
+
@@ -3409,7 +3409,7 @@
Outline
-
+
@@ -3439,7 +3439,7 @@
Outline
-
+
@@ -3469,7 +3469,7 @@
Outline
-
+
@@ -3499,7 +3499,7 @@
Outline
-
+
@@ -3529,7 +3529,7 @@
Outline
-
+
@@ -3559,7 +3559,7 @@
Outline
-
+
@@ -3589,7 +3589,7 @@
Outline
-
+
@@ -3619,7 +3619,7 @@
Outline
-
+
@@ -3649,7 +3649,7 @@
Outline
-
+
@@ -3679,7 +3679,7 @@
Outline
-
+
@@ -3709,7 +3709,7 @@
Outline
-
+
@@ -3739,7 +3739,7 @@
Outline
-
+
diff --git a/Output/Themes/Ambient/Screens/ScreenSing.xml b/Output/Themes/Ambient/Screens/ScreenSing.xml
index 4d33b2f0..21d12061 100644
--- a/Output/Themes/Ambient/Screens/ScreenSing.xml
+++ b/Output/Themes/Ambient/Screens/ScreenSing.xml
@@ -1,7 +1,7 @@
- 4
+ 5
None
@@ -982,7 +982,7 @@
Normal
-
+
@@ -1011,7 +1011,7 @@
Normal
-
+
@@ -1040,12 +1040,70 @@
Normal
-
+
TR_SCREENSING_PAUSE
+
+
+ 40
+ 80
+
+ -1,00
+
+ 35
+
+
+
+ TextSColor
+
+
+ TextSColor
+
+ Left
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+ 40
+ 585
+
+ -1,00
+
+ 35
+
+
+
+ TextSColor
+
+
+ TextSColor
+
+ Left
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
1240
@@ -1069,7 +1127,7 @@
Normal
-
+
@@ -1101,7 +1159,7 @@
Outline
-
+
@@ -1130,7 +1188,7 @@
Normal
-
+
@@ -1162,7 +1220,7 @@
Outline
-
+
@@ -1191,7 +1249,7 @@
Normal
-
+
@@ -1223,7 +1281,7 @@
Outline
-
+
@@ -1252,7 +1310,7 @@
Normal
-
+
@@ -1284,7 +1342,7 @@
Outline
-
+
@@ -1313,7 +1371,7 @@
Normal
-
+
@@ -1345,7 +1403,7 @@
Outline
-
+
@@ -1374,7 +1432,7 @@
Normal
-
+
@@ -1406,7 +1464,7 @@
Outline
-
+
@@ -1435,7 +1493,7 @@
Normal
-
+
@@ -1467,7 +1525,7 @@
Outline
-
+
@@ -1496,7 +1554,7 @@
Normal
-
+
@@ -1528,7 +1586,7 @@
Outline
-
+
@@ -1557,7 +1615,7 @@
Normal
-
+
@@ -1589,7 +1647,7 @@
Outline
-
+
@@ -1618,7 +1676,7 @@
Normal
-
+
@@ -1650,7 +1708,7 @@
Outline
-
+
@@ -1679,7 +1737,7 @@
Normal
-
+
@@ -1711,7 +1769,7 @@
Outline
-
+
@@ -1740,7 +1798,7 @@
Normal
-
+
@@ -1772,7 +1830,7 @@
Outline
-
+
@@ -1801,7 +1859,7 @@
Normal
-
+
@@ -1833,7 +1891,7 @@
Outline
-
+
@@ -1862,7 +1920,7 @@
Normal
-
+
@@ -1894,7 +1952,7 @@
Outline
-
+
@@ -1923,7 +1981,7 @@
Normal
-
+
@@ -1955,7 +2013,7 @@
Outline
-
+
@@ -1984,7 +2042,7 @@
Normal
-
+
@@ -2016,7 +2074,7 @@
Outline
-
+
@@ -2045,7 +2103,7 @@
Normal
-
+
@@ -2077,7 +2135,7 @@
Outline
-
+
@@ -2106,7 +2164,7 @@
Normal
-
+
@@ -2138,7 +2196,7 @@
Outline
-
+
@@ -2167,7 +2225,7 @@
Normal
-
+
@@ -2199,7 +2257,7 @@
Outline
-
+
@@ -2228,7 +2286,7 @@
Normal
-
+
@@ -2260,7 +2318,7 @@
Outline
-
+
@@ -2289,7 +2347,7 @@
Normal
-
+
@@ -2321,7 +2379,7 @@
Outline
-
+
@@ -2333,7 +2391,7 @@
Button
- 670
+ 775
300
-2,11
150
@@ -2366,7 +2424,7 @@
Outline
-
+
TR_SCREENSING_BUTTON_CANCEL
@@ -2390,7 +2448,7 @@
Button
- 460
+ 355
300
-2,11
150
@@ -2423,7 +2481,7 @@
Outline
-
+
TR_SCREENSING_BUTTON_CONTINUE
@@ -2441,6 +2499,63 @@
26
+
+
+ Button
+
+ Button
+
+ 565
+ 300
+ -2,11
+ 150
+ 50
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ 75
+ 10
+
+ 32
+
+ 142
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+ TR_SCREENSING_BUTTON_SKIP
+
+
+
+
+
+ 10
+ 26
+
+
+
+
+
+ 10
+ 26
+
+
637
diff --git a/Output/Themes/Ambient/Screens/ScreenSong.xml b/Output/Themes/Ambient/Screens/ScreenSong.xml
index 4abd92ab..3d744951 100644
--- a/Output/Themes/Ambient/Screens/ScreenSong.xml
+++ b/Output/Themes/Ambient/Screens/ScreenSong.xml
@@ -33,25 +33,6 @@
26
-
-
- SongMenuBG
-
- 40
- 40
- -2,10
- 360
- 360
-
-
- 1
- 1
- 1
- 1
-
-
-
-
Menu
@@ -72,175 +53,25 @@
26
-
+
- Button
-
- Button
-
+ SongMenuBG
+
40
- 90
- -2,11
+ 40
+ -2,10
360
- 40
-
+ 360
+
- ButtonColor
-
-
- ButtonSColor
-
-
- 180
- 5
-
- 30
-
- 350
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
-
-
- Outline
-
- TR_SCREENSONG_BUTTON_SING
-
+ 1,00
+ 1,00
+ 1,00
+ 1,00
-
-
-
-
-
-
- Button
-
- Button
-
- 40
- 180
- -2,11
- 360
- 40
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 180
- 5
-
- 30
-
- 350
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
-
-
- Outline
-
- TR_SCREENSONG_BUTTON_PLAYLIST
-
-
-
-
-
-
-
-
-
-
- Button
-
- Button
-
- 40
- 225
- -2,11
- 360
- 40
-
-
- ButtonColor
-
-
- ButtonSColor
-
-
- 180
- 5
-
- 30
-
- 350
-
-
- ButtonTextColor
-
-
- ButtonTextSColor
-
- Center
-
-
-
- Outline
-
- TR_SCREENSONG_BUTTON_CANCEL
-
-
-
-
-
-
-
-
-
-
- 200
- 45
-
- -2,11
-
- 40
-
- 350
-
-
- StaticColor
-
-
- TextSColor
-
- Center
-
-
-
- Outline
-
- TR_SCREENSONG_SONGOPTIONS
-
-
-
-
+
220
@@ -265,7 +96,7 @@
Outline
-
+
@@ -299,7 +130,7 @@
Outline
-
+
@@ -332,7 +163,7 @@
Outline
-
+
TR_SCREENSONG_SEARCH
@@ -361,12 +192,434 @@
Outline
-
+
+
+
+ 220
+ 45
+
+ -2,11
+
+ 40
+
+ 350
+
+
+ StaticColor
+
+
+ TextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+ TR_SCREENSONG_SONGOPTIONS
+
+
+
+
+
+
+ Button
+
+ Button
+
+ 40
+ 360
+ -2,11
+ 360
+ 40
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ 180
+ 5
+
+ 30
+
+ 350
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+ TR_SCREENSONG_BUTTON_CANCEL
+
+
+
+
+
+
+
+
+
+
+ Button
+
+ Button
+
+ 40
+ 235
+ -2,11
+ 360
+ 40
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ 180
+ 5
+
+ 30
+
+ 350
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+ TR_SCREENSONG_BUTTON_PLAYLIST
+
+
+
+
+
+
+
+
+
+
+ Button
+
+ Button
+
+ 40
+ 90
+ -2,11
+ 360
+ 40
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ 180
+ 5
+
+ 30
+
+ 350
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+ TR_SCREENSONG_BUTTON_SING
+
+
+
+
+
+
+
+
+
+
+ Button
+
+ Button
+
+ 40
+ 135
+ -2,11
+ 360
+ 40
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ 180
+ 5
+
+ 30
+
+ 350
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+ TR_SCREENSONG_BUTTON_SINGALL
+
+
+
+
+
+
+
+
+
+
+ Button
+
+ Button
+
+ 40
+ 180
+ -2,11
+ 360
+ 40
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ 180
+ 5
+
+ 30
+
+ 350
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+ TR_SCREENSONG_BUTTON_SINGALLVISIBLE
+
+
+
+
+
+
+
+
+
+
+ Button
+
+ Button
+
+ 40
+ 90
+ -2,11
+ 360
+ 40
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ 180
+ 5
+
+ 30
+
+ 350
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+ TR_SCREENSONG_BUTTON_RANDOM
+
+
+
+
+
+
+
+
+
+
+ Button
+
+ Button
+
+ 40
+ 275
+ -2,11
+ 360
+ 40
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ 180
+ 5
+
+ 30
+
+ 350
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+ TR_SCREENSONG_BUTTON_OPENPLAYLIST
+
+
+
+
+
+
+
+
+
+
+ Invisible
+
+ Invisible
+
+ 40
+ 40
+ -1,01
+ 360
+ 360
+
+
+ Invisible
+
+
+ Invisible
+
+
+ 180
+ 5
+
+ 30
+
+ 350
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+
+
Button
@@ -422,16 +675,146 @@
TextSColor
- 30
+ 30,00
- 280
+ 280,00
Outline
Bold
1
-
+
+
+
+ Button
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ SelectSlide
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ SelectSlide
+
+ 40
+ 190
+ -2,11
+ 360
+ 40
+
+ 45
+ 195
+ -2,12
+ 30
+ 30
+
+ 365
+ 195
+ -2,12
+ 30
+ 30
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ SelectSlideHColor
+
+
+ ArrowColor
+
+
+ ArrowSColor
+
+
+ TextColor
+
+
+ TextSColor
+
+ 30,00
+
+ 280,00
+
+ Outline
+
+ Bold
+
+ 1
+
+
+
+ Button
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ SelectSlide
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ SelectSlide
+
+ 40
+ 230
+ -2,11
+ 360
+ 40
+
+ 45
+ 235
+ -2,12
+ 30
+ 30
+
+ 365
+ 235
+ -2,12
+ 30
+ 30
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ SelectSlideHColor
+
+
+ ArrowColor
+
+
+ ArrowSColor
+
+
+ TextColor
+
+
+ TextSColor
+
+ 30,00
+
+ 280,00
+
+ Outline
+
+ Bold
+
+ 1
+
CoverTile
@@ -445,12 +828,6 @@
MedleyCalcIcon
MedleyTagIcon
-
- 40
- 100
- -1,00
- 1200
- 530
1,00
@@ -463,21 +840,21 @@
6
4
-
- 4
-
- 4
10,00
10,00
+
+ 4
+
+ 4
410
40
-1,00
830
550
-
+
410
40
-1,00
@@ -507,7 +884,7 @@
Outline
-
+
@@ -537,7 +914,7 @@
Outline
-
+
@@ -567,7 +944,7 @@
Outline
-
+
@@ -671,5 +1048,414 @@
+
+
+ 970
+ 80
+ -0,90
+ 295
+ 460
+ 50,00
+
+ CoverTile
+
+ CoverTile
+
+
+ StaticColorAlpha
+
+
+ StaticColor
+
+
+
+
+ 54
+ 4
+
+ -1,01
+
+ 24
+
+ 235
+
+
+ StaticColor
+
+
+ TextSColor
+
+ Left
+
+ Top
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+ Menu
+
+ 970
+ 550
+ -1,00
+ 295
+ 40
+
+
+ StaticColor
+
+
+
+
+
+
+ Menu
+
+ 970
+ 40
+ -1,00
+ 295
+ 40
+
+
+ StaticColor
+
+
+
+
+
+
+
+
+ 4
+ 2
+ -1,00
+ 46
+ 46
+
+
+ Visible
+
+
+
+
+
+
+ Button
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ SelectSlide
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ SelectSlide
+
+ 54
+ 28
+ -1,01
+ 235
+ 24
+
+ 54
+ 30
+ -1,02
+ 20
+ 20
+
+ 235
+ 30
+ -1,02
+ 20
+ 20
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ SelectSlideHColor
+
+
+ ArrowColor
+
+
+ ArrowSColor
+
+
+ TextColor
+
+
+ TextSColor
+
+ 24,00
+
+ 230,00
+
+ Outline
+
+ Bold
+
+ 1
+
+
+
+ Invisible
+
+ Invisible
+
+ 975
+ 45
+ -1,01
+ 220
+ 30
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ 0
+ 0
+
+ 30
+
+ 220
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Left
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+
+
+
+
+ CloseIcon
+
+ CloseIcon
+
+ 1215
+ 42
+ -1,01
+ 35
+ 35
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ 180
+ 5
+
+ 30
+
+ 350
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+
+
+
+
+ DeleteIcon
+
+ DeleteIcon
+
+ 1215
+ 553
+ -1,01
+ 35
+ 35
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ 180
+ 5
+
+ 30
+
+ 350
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+
+
+
+
+ SaveIcon
+
+ SaveIcon
+
+ 1175
+ 553
+ -1,01
+ 35
+ 35
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ 180
+ 5
+
+ 30
+
+ 350
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+
+
+
+
+ SingIcon
+
+ SingIcon
+
+ 975
+ 553
+ -1,01
+ 35
+ 35
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ 180
+ 5
+
+ 30
+
+ 350
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Output/Themes/Ambient/Sing.png b/Output/Themes/Ambient/Sing.png
new file mode 100644
index 00000000..c7daf961
Binary files /dev/null and b/Output/Themes/Ambient/Sing.png differ
diff --git a/Output/Themes/Ambient/Skin Blue.xml b/Output/Themes/Ambient/Skin Blue.xml
index 50a16aa8..64b055f6 100644
--- a/Output/Themes/Ambient/Skin Blue.xml
+++ b/Output/Themes/Ambient/Skin Blue.xml
@@ -117,7 +117,7 @@
0,000
0,500
0,400
-
+
0,000
0,000
@@ -130,6 +130,12 @@
0,969
1,000
+
+ 0,675
+ 0,890
+ 0,969
+ 0,500
+
0,675
0,890
@@ -166,6 +172,12 @@
0,969
1,000
+
+ 0,675
+ 0,890
+ 0,969
+ 0,500
+
0,675
0,890
@@ -251,11 +263,11 @@
1,000
- 0,00
- 0,00
- 1,00
- 0,50
-
+ 0,000
+ 0,000
+ 1,000
+ 0,500
+
0,800
0,950
@@ -309,12 +321,16 @@
MedleyTagIcon.png
Invisible.png
PlayerSelector.png
- PreviousIcon.png
- NextIcon.png
- PlayIcon.png
- PauseIcon.png
- RepeatIcon.png
- SongMenuBG.png
+ PreviousIcon.png
+ NextIcon.png
+ PlayIcon.png
+ PauseIcon.png
+ RepeatIcon.png
+ SongMenuBG.png
+ Close.png
+ Delete.png
+ Save.png
+ Sing.png
[Blue]BG_Video.mp4
@@ -322,4 +338,4 @@
[Blue]IntroMid.mp4
[Blue]IntroOut.mp4
-
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Skin Green.xml b/Output/Themes/Ambient/Skin Green.xml
index 7aefeb34..20c3ebe3 100644
--- a/Output/Themes/Ambient/Skin Green.xml
+++ b/Output/Themes/Ambient/Skin Green.xml
@@ -117,7 +117,7 @@
0,000
0,500
0,400
-
+
0,000
0,750
@@ -130,6 +130,12 @@
0,674
1,000
+
+ 0,709
+ 0,968
+ 0,674
+ 0,500
+
0,709
0,968
@@ -251,10 +257,10 @@
1,000
- 0,00
- 1,00
- 0,00
- 0,50
+ 0,000
+ 1,000
+ 0,000
+ 0,500
0,800
@@ -309,12 +315,16 @@
MedleyTagIcon.png
Invisible.png
PlayerSelector.png
- PreviousIcon.png
- NextIcon.png
- PlayIcon.png
- PauseIcon.png
- RepeatIcon.png
- SongMenuBG.png
+ PreviousIcon.png
+ NextIcon.png
+ PlayIcon.png
+ PauseIcon.png
+ RepeatIcon.png
+ SongMenuBG.png
+ Close.png
+ Delete.png
+ Save.png
+ Sing.png
[Green]BG_Video.mp4
@@ -322,4 +332,4 @@
[Green]IntroMid.mp4
[Green]IntroOut.mp4
-
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Skin Red.xml b/Output/Themes/Ambient/Skin Red.xml
index d7f5ecf2..3a187e67 100644
--- a/Output/Themes/Ambient/Skin Red.xml
+++ b/Output/Themes/Ambient/Skin Red.xml
@@ -117,7 +117,7 @@
0,000
0,500
0,400
-
+
0,750
0,000
@@ -130,6 +130,12 @@
0,674
1,000
+
+ 0,968
+ 0,674
+ 0,674
+ 0,500
+
0,968
0,674
@@ -251,11 +257,11 @@
1,000
- 1,00
- 0,00
- 0,00
- 0,50
-
+ 1,000
+ 0,000
+ 0,000
+ 0,500
+
1,000
0,800
@@ -309,12 +315,16 @@
MedleyTagIcon.png
Invisible.png
PlayerSelector.png
- PreviousIcon.png
- NextIcon.png
- PlayIcon.png
- PauseIcon.png
- RepeatIcon.png
- SongMenuBG.png
+ PreviousIcon.png
+ NextIcon.png
+ PlayIcon.png
+ PauseIcon.png
+ RepeatIcon.png
+ SongMenuBG.png
+ Close.png
+ Delete.png
+ Save.png
+ Sing.png
[Red]BG_Video.mp4
@@ -322,4 +332,4 @@
[Red]IntroMid.mp4
[Red]IntroOut.mp4
-
+
\ No newline at end of file
diff --git a/Output/Themes/Ambient/Skin Yellow.xml b/Output/Themes/Ambient/Skin Yellow.xml
index d7366abc..9735075b 100644
--- a/Output/Themes/Ambient/Skin Yellow.xml
+++ b/Output/Themes/Ambient/Skin Yellow.xml
@@ -117,7 +117,7 @@
0,000
0,500
0,400
-
+
0,750
0,750
@@ -130,6 +130,12 @@
0,674
1,000
+
+ 0,968
+ 0,956
+ 0,674
+ 0,500
+
0,968
0,956
@@ -251,11 +257,11 @@
1,000
- 1,00
- 1,00
- 0,00
- 0,50
-
+ 1,000
+ 1,000
+ 0,000
+ 0,500
+
0,949
1,000
@@ -309,12 +315,16 @@
MedleyTagIcon.png
Invisible.png
PlayerSelector.png
- PreviousIcon.png
- NextIcon.png
- PlayIcon.png
- PauseIcon.png
- RepeatIcon.png
- SongMenuBG.png
+ PreviousIcon.png
+ NextIcon.png
+ PlayIcon.png
+ PauseIcon.png
+ RepeatIcon.png
+ SongMenuBG.png
+ Close.png
+ Delete.png
+ Save.png
+ Sing.png
[Yellow]BG_Video.mp4
@@ -322,4 +332,4 @@
[Yellow]IntroMid.mp4
[Yellow]IntroOut.mp4
-
+
\ No newline at end of file
diff --git a/Output/Themes/Changelog/Changelog_ScreenNames.txt b/Output/Themes/Changelog/Changelog_ScreenNames.txt
index 47d04016..221c9331 100644
--- a/Output/Themes/Changelog/Changelog_ScreenNames.txt
+++ b/Output/Themes/Changelog/Changelog_ScreenNames.txt
@@ -1,5 +1,11 @@
SceenNames
+++++++++++
+Version 3:
+
+ (One Equalizer for each player): Equalizer shows input from assigned mic for this player.
+ (One SelectSlide for each player)
+
++++++++++
Version 2:
diff --git a/Output/Themes/Changelog/Changelog_ScreenOptionsRecord.txt b/Output/Themes/Changelog/Changelog_ScreenOptionsRecord.txt
new file mode 100644
index 00000000..89d9465c
--- /dev/null
+++ b/Output/Themes/Changelog/Changelog_ScreenOptionsRecord.txt
@@ -0,0 +1,9 @@
+ScreenOptionsRecord
+
+++++++++++
+Version 2:
+
+Add:
+ and .
+This is a new theme-element. Check ScreenOptionsRecord.xml for style-possibilities.
+++++++++++
\ No newline at end of file
diff --git a/Output/Themes/Changelog/Changelog_ScreenSing.txt b/Output/Themes/Changelog/Changelog_ScreenSing.txt
index 22c5fa99..9027a30c 100644
--- a/Output/Themes/Changelog/Changelog_ScreenSing.txt
+++ b/Output/Themes/Changelog/Changelog_ScreenSing.txt
@@ -1,5 +1,17 @@
ScreenSing
++++++++++
+Version 5
+
+Add:
+ and (only showed when sining duet)
+
+++++++++++
+Version 5:
+
+Add:
+
+
++++++++++
Version 4:
Added Elements for 6-player-singing!
diff --git a/Output/Themes/Changelog/Changelog_ScreenSong.txt b/Output/Themes/Changelog/Changelog_ScreenSong.txt
index 1303abb5..c1402b34 100644
--- a/Output/Themes/Changelog/Changelog_ScreenSong.txt
+++ b/Output/Themes/Changelog/Changelog_ScreenSong.txt
@@ -1,5 +1,16 @@
ScreenSong
+++++++++++
+Version 3:
+
+Add:
+
+
+, , , , , , ,
+, ,
+and
+ as a new Screen-Element. For details, look at ScreenSong.xml
+
++++++++++
Version 2:
diff --git a/Vocaluxe/Base/CConfig.cs b/Vocaluxe/Base/CConfig.cs
index 4589654e..60a30d7d 100644
--- a/Vocaluxe/Base/CConfig.cs
+++ b/Vocaluxe/Base/CConfig.cs
@@ -933,6 +933,11 @@ namespace Vocaluxe.Base
CSettings.sFileHighscoreDB = value;
}
break;
+
+ case "playlistfolder":
+ CSettings.CreateFolder(value);
+ CSettings.sFolderPlaylists = value;
+ break;
}
}
}
diff --git a/Vocaluxe/Base/CDraw.cs b/Vocaluxe/Base/CDraw.cs
index d1743b0a..e468162e 100644
--- a/Vocaluxe/Base/CDraw.cs
+++ b/Vocaluxe/Base/CDraw.cs
@@ -117,6 +117,11 @@ namespace Vocaluxe.Base
_Draw.DrawColor(color, rect);
}
+ public static void DrawColorReflection(SColorF color, SRectF rect, float space, float height)
+ {
+ _Draw.DrawColorReflection(color, rect, space, height);
+ }
+
public static void ClearScreen()
{
_Draw.ClearScreen();
diff --git a/Vocaluxe/Base/CFont.cs b/Vocaluxe/Base/CFont.cs
index 97fcd8a4..0e13f8e2 100644
--- a/Vocaluxe/Base/CFont.cs
+++ b/Vocaluxe/Base/CFont.cs
@@ -803,10 +803,10 @@ namespace Vocaluxe.Base
writer.WriteElementString("Folder", _Fonts[Index].Folder);
writer.WriteElementString("Outline", _Fonts[Index].Outline.ToString("#0.00"));
- writer.WriteElementString("ColorR", _Fonts[Index].OutlineColor.R.ToString("#0.00"));
- writer.WriteElementString("ColorG", _Fonts[Index].OutlineColor.G.ToString("#0.00"));
- writer.WriteElementString("ColorB", _Fonts[Index].OutlineColor.B.ToString("#0.00"));
- writer.WriteElementString("ColorA", _Fonts[Index].OutlineColor.A.ToString("#0.00"));
+ writer.WriteElementString("OutlineColorR", _Fonts[Index].OutlineColor.R.ToString("#0.00"));
+ writer.WriteElementString("OutlineColorG", _Fonts[Index].OutlineColor.G.ToString("#0.00"));
+ writer.WriteElementString("OutlineColorB", _Fonts[Index].OutlineColor.B.ToString("#0.00"));
+ writer.WriteElementString("OutlineColorA", _Fonts[Index].OutlineColor.A.ToString("#0.00"));
writer.WriteElementString("FileNormal", _Fonts[Index].FileNormal);
writer.WriteElementString("FileBold", _Fonts[Index].FileBold);
diff --git a/Vocaluxe/Base/CGame.cs b/Vocaluxe/Base/CGame.cs
index 53f1b1c3..a6323536 100644
--- a/Vocaluxe/Base/CGame.cs
+++ b/Vocaluxe/Base/CGame.cs
@@ -180,6 +180,11 @@ namespace Vocaluxe.Base
return _GameMode.GetSong(Num);
}
+ public static EGameMode GetGameMode(int Num)
+ {
+ return _GameMode.GetGameMode(Num);
+ }
+
public static int GetNumSongs()
{
return _GameMode.GetNumSongs();
@@ -190,6 +195,11 @@ namespace Vocaluxe.Base
return _GameMode.GetPoints();
}
+ public static int NumRounds
+ {
+ get { return _GameMode.GetNumSongs(); }
+ }
+
public static int NumPlayer
{
get { return _NumPlayer; }
diff --git a/Vocaluxe/Base/CPlaylists.cs b/Vocaluxe/Base/CPlaylists.cs
index a720107a..c9babd16 100644
--- a/Vocaluxe/Base/CPlaylists.cs
+++ b/Vocaluxe/Base/CPlaylists.cs
@@ -13,14 +13,27 @@ namespace Vocaluxe.Base
static class CPlaylists
{
- private static List _Playlists;
+ private static List _Playlists;
private static CHelper Helper = new CHelper();
- public static CPlaylist[] Playlists
+ public static CPlaylistFile[] Playlists
{
get { return _Playlists.ToArray(); }
}
+ public static string[] PlaylistNames
+ {
+ get
+ {
+ List names = new List();
+ for (int i = 0; i < _Playlists.Count; i++)
+ {
+ names.Add(_Playlists[i].PlaylistName);
+ }
+ return names.ToArray();
+ }
+ }
+
public static int NumPlaylists
{
get { return _Playlists.Count; }
@@ -33,13 +46,14 @@ namespace Vocaluxe.Base
public static void LoadPlaylists()
{
- _Playlists = new List();
+ _Playlists = new List();
List files = new List();
files.AddRange(Helper.ListFiles(CSettings.sFolderPlaylists, "*.xml", true, true));
foreach (string file in files)
{
- CPlaylist playlist = new CPlaylist(file);
+ CPlaylistFile playlist = new CPlaylistFile(file);
+ _Playlists.Add(playlist);
}
SortPlaylistsByName();
@@ -52,7 +66,7 @@ namespace Vocaluxe.Base
_Playlists.Sort(CompareByPlaylistName);
}
- private static int CompareByPlaylistName(CPlaylist a, CPlaylist b)
+ private static int CompareByPlaylistName(CPlaylistFile a, CPlaylistFile b)
{
return String.Compare(a.PlaylistName, b.PlaylistName);
}
@@ -75,6 +89,21 @@ namespace Vocaluxe.Base
}
}
+ public static void SavePlaylist(int PlaylistID)
+ {
+ if (PlaylistID < 0 || PlaylistID >= _Playlists.Count)
+ return;
+ _Playlists[PlaylistID].SavePlaylist();
+ }
+
+ public static int NewPlaylist()
+ {
+ CPlaylistFile pl = new CPlaylistFile();
+ pl.PlaylistName = "New Playlist";
+ _Playlists.Add(pl);
+ return (_Playlists.Count - 1);
+ }
+
#endregion
}
}
diff --git a/Vocaluxe/Base/CSettings.cs b/Vocaluxe/Base/CSettings.cs
index 0d844070..5fe0fb8b 100644
--- a/Vocaluxe/Base/CSettings.cs
+++ b/Vocaluxe/Base/CSettings.cs
@@ -94,7 +94,7 @@ namespace Vocaluxe.Base
public const string sFolderLanguages = "Languages";
public const string sFolderScreenshots = "Screenshots";
public const string sFolderBackgroundMusic = "BackgroundMusic";
- public const string sFolderPlaylists = "Playlists";
+ public static string sFolderPlaylists = "Playlists";
//public const String[] ToneStrings = new String[]{ "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B" };
public const int ToneMin = -36;
@@ -185,6 +185,7 @@ namespace Vocaluxe.Base
Folders.Add(sFolderScreenshots);
Folders.Add(sFolderBackgroundMusic);
Folders.Add(sFolderSounds);
+ Folders.Add(sFolderPlaylists);
foreach (string folder in Folders)
{
@@ -193,5 +194,11 @@ namespace Vocaluxe.Base
Directory.CreateDirectory(path);
}
}
+
+ public static void CreateFolder(string path)
+ {
+ if (!Directory.Exists(path))
+ Directory.CreateDirectory(path);
+ }
}
}
diff --git a/Vocaluxe/Base/CSound.cs b/Vocaluxe/Base/CSound.cs
index 85112fd3..986476e9 100644
--- a/Vocaluxe/Base/CSound.cs
+++ b/Vocaluxe/Base/CSound.cs
@@ -315,6 +315,10 @@ namespace Vocaluxe.Base
public CBuffer()
{
_ToneWeigth = new float[_NumHalfTones];
+ for (int i = 0; i < _ToneWeigth.Length; i++)
+ {
+ _ToneWeigth[i] = 0.99f;
+ }
_Stream = new MemoryStream();
_NewSamples = false;
}
diff --git a/Vocaluxe/GameModes/CGameMode.cs b/Vocaluxe/GameModes/CGameMode.cs
index 6dfe5ca5..b58ca133 100644
--- a/Vocaluxe/GameModes/CGameMode.cs
+++ b/Vocaluxe/GameModes/CGameMode.cs
@@ -248,6 +248,7 @@ namespace Vocaluxe.GameModes
if (_CurrentSong >= 0 && _CurrentSong < _SongQueque.Count)
{
CSong song = CSongs.GetSong(_SongQueque[_CurrentSong].SongID);
+ song = new CSong(song);
switch (GetCurrentGameMode())
{
@@ -283,12 +284,20 @@ namespace Vocaluxe.GameModes
public virtual CSong GetSong(int Num)
{
- if (Num - 1 < _SongQueque.Count)
+ if (Num - 1 < _SongQueque.Count && Num - 1 > -1)
return CSongs.GetSong(_SongQueque[Num - 1].SongID);
return null;
}
+ public virtual EGameMode GetGameMode(int Num)
+ {
+ if(Num - 1 < _SongQueque.Count && Num > -1)
+ return _SongQueque[Num].GameMode;
+
+ return EGameMode.TR_GAMEMODE_NORMAL;
+ }
+
public virtual CPoints GetPoints()
{
return _Points;
diff --git a/Vocaluxe/GameModes/IGameMode.cs b/Vocaluxe/GameModes/IGameMode.cs
index 4d83391f..79a8fefc 100644
--- a/Vocaluxe/GameModes/IGameMode.cs
+++ b/Vocaluxe/GameModes/IGameMode.cs
@@ -38,5 +38,6 @@ namespace Vocaluxe.GameModes
int GetNumSongs();
CSong GetSong();
CSong GetSong(int Num);
+ EGameMode GetGameMode(int Num);
}
}
diff --git a/Vocaluxe/Lib/Draw/CDirect3D.cs b/Vocaluxe/Lib/Draw/CDirect3D.cs
index 3141d237..492834c9 100644
--- a/Vocaluxe/Lib/Draw/CDirect3D.cs
+++ b/Vocaluxe/Lib/Draw/CDirect3D.cs
@@ -836,6 +836,19 @@ namespace Vocaluxe.Lib.Draw
{
DrawTexture(_BlankTexture, rect, color);
}
+
+ ///
+ /// Draws reflection of a colored rectangle
+ ///
+ /// The color in which the rectangle will be drawn in
+ /// The coordinates in a SRectF struct
+ /// The space between the texture and the reflection
+ /// The height of the reflection
+ public void DrawColorReflection(SColorF color, SRectF rect, float space, float height)
+ {
+ DrawTextureReflection(_BlankTexture, rect, color, rect, space, height);
+ }
+
#endregion Basic Draw Methods
#region Textures
#region adding
diff --git a/Vocaluxe/Lib/Draw/CDrawWinForm.cs b/Vocaluxe/Lib/Draw/CDrawWinForm.cs
index c94f0073..51cc0c4f 100644
--- a/Vocaluxe/Lib/Draw/CDrawWinForm.cs
+++ b/Vocaluxe/Lib/Draw/CDrawWinForm.cs
@@ -352,6 +352,11 @@ namespace Vocaluxe.Lib.Draw
}
+ public void DrawColorReflection(SColorF color, SRectF rect, float space, float height)
+ {
+
+ }
+
public STexture AddTexture(Bitmap bmp)
{
Bitmap bmp2 = new Bitmap(bmp);
diff --git a/Vocaluxe/Lib/Draw/COpenGL.cs b/Vocaluxe/Lib/Draw/COpenGL.cs
index 54ee1fcf..06a09e95 100644
--- a/Vocaluxe/Lib/Draw/COpenGL.cs
+++ b/Vocaluxe/Lib/Draw/COpenGL.cs
@@ -661,6 +661,59 @@ namespace Vocaluxe.Lib.Draw
GL.Disable(EnableCap.Blend);
}
+ public void DrawColorReflection(SColorF color, SRectF rect, float space, float height)
+ {
+
+ if (rect.H < height)
+ height = rect.H;
+
+ float rx1 = rect.X;
+ float rx2 = rect.X + rect.W;
+ float ry1 = rect.Y + rect.H + space;
+ float ry2 = rect.Y + rect.H + space + height;
+
+ if (rx1 < rect.X)
+ rx1 = rect.X;
+
+ if (rx2 > rect.X + rect.W)
+ rx2 = rect.X + rect.W;
+
+ if (ry1 < rect.Y + space)
+ ry1 = rect.Y + space;
+
+ if (ry2 > rect.Y + rect.H + space + height)
+ ry2 = rect.Y + rect.H + space + height;
+
+
+ GL.Enable(EnableCap.Blend);
+
+ if (rect.Rotation != 0f)
+ {
+ GL.Translate(0.5f, 0.5f, 0);
+ GL.Rotate(-rect.Rotation, 0f, 0f, 1f);
+ GL.Translate(-0.5f, -0.5f, 0);
+ }
+
+ GL.Begin(BeginMode.Quads);
+
+ GL.Color4(color.R, color.G, color.B, color.A * CGraphics.GlobalAlpha);
+ GL.Vertex3(rx2, ry1, rect.Z + CGraphics.ZOffset);
+
+ GL.Color4(color.R, color.G, color.B, 0f);
+ GL.Vertex3(rx2, ry2, rect.Z + CGraphics.ZOffset);
+
+ GL.Color4(color.R, color.G, color.B, 0f);
+ GL.Vertex3(rx1, ry2, rect.Z + CGraphics.ZOffset);
+
+ GL.Color4(color.R, color.G, color.B, color.A * CGraphics.GlobalAlpha);
+ GL.Vertex3(rx1, ry1, rect.Z + CGraphics.ZOffset);
+
+ GL.End();
+
+ GL.Disable(EnableCap.Blend);
+
+ }
+
#endregion Basic Draw Methods
#region Textures
diff --git a/Vocaluxe/Lib/Draw/IDraw.cs b/Vocaluxe/Lib/Draw/IDraw.cs
index 2f8bbc82..9a7bf1d6 100644
--- a/Vocaluxe/Lib/Draw/IDraw.cs
+++ b/Vocaluxe/Lib/Draw/IDraw.cs
@@ -125,6 +125,7 @@ namespace Vocaluxe.Lib.Draw
// Basic Draw Methods
void DrawLine(int a, int r, int g, int b, int w, int x1, int y1, int x2, int y2);
void DrawColor(SColorF color, SRectF rect);
+ void DrawColorReflection(SColorF color, SRectF rect, float space, float height);
void ClearScreen();
STexture CopyScreen();
diff --git a/Vocaluxe/Lib/Playlist/CPlaylist.cs b/Vocaluxe/Lib/Playlist/CPlaylistFile.cs
similarity index 72%
rename from Vocaluxe/Lib/Playlist/CPlaylist.cs
rename to Vocaluxe/Lib/Playlist/CPlaylistFile.cs
index a87ee61a..0bef3b65 100644
--- a/Vocaluxe/Lib/Playlist/CPlaylist.cs
+++ b/Vocaluxe/Lib/Playlist/CPlaylistFile.cs
@@ -29,24 +29,26 @@ namespace Vocaluxe.Lib.Playlist
}
}
- public class CPlaylist
+ public class CPlaylistFile
{
private static XmlWriterSettings _settings = new XmlWriterSettings();
private static CHelper Helper = new CHelper();
public string PlaylistName;
public string PlaylistFile;
- public List Songs;
+ public List Songs = new List();
- public CPlaylist()
+ public CPlaylistFile()
{
Init();
+ PlaylistName = string.Empty;
+ PlaylistFile = string.Empty;
}
- public CPlaylist(string file)
+ public CPlaylistFile(string file)
{
Init();
- PlaylistName = file;
+ PlaylistFile = file;
LoadPlaylist();
}
@@ -58,29 +60,32 @@ namespace Vocaluxe.Lib.Playlist
}
- private void SavePlaylist()
+ public void SavePlaylist()
{
- string filename = string.Empty;
- foreach (char chr in PlaylistName)
+ if (PlaylistFile == string.Empty)
{
- if (char.IsLetter(chr))
- filename += chr.ToString();
- }
-
- if (filename == String.Empty)
- filename = "1";
-
- int i = 0;
- while (File.Exists(Path.Combine(CSettings.sFolderPlaylists, filename + ".xml")))
- {
- i++;
- if (!File.Exists(Path.Combine(CSettings.sFolderPlaylists, filename + i + ".xml")))
+ string filename = string.Empty;
+ foreach (char chr in PlaylistName)
{
- filename += i;
+ if (char.IsLetter(chr))
+ filename += chr.ToString();
}
- }
- PlaylistFile = Path.Combine(CSettings.sFolderPlaylists, filename + ".xml");
+ if (filename == String.Empty)
+ filename = "1";
+
+ int i = 0;
+ while (File.Exists(Path.Combine(CSettings.sFolderPlaylists, filename + ".xml")))
+ {
+ i++;
+ if (!File.Exists(Path.Combine(CSettings.sFolderPlaylists, filename + i + ".xml")))
+ {
+ filename += i;
+ }
+ }
+
+ PlaylistFile = Path.Combine(CSettings.sFolderPlaylists, filename + ".xml");
+ }
XmlWriter writer;
try
@@ -107,7 +112,7 @@ namespace Vocaluxe.Lib.Playlist
writer.WriteEndElement();
writer.WriteStartElement("Songs");
- for (i = 0; i < Songs.Count; i++)
+ for (int i = 0; i < Songs.Count; i++)
{
CSong song = CSongs.GetSong(Songs[i].SongID);
if (song != null)
@@ -202,5 +207,47 @@ namespace Vocaluxe.Lib.Playlist
}
}
}
+
+ public void AddSong(int SongID)
+ {
+ CPlaylistSong song = new CPlaylistSong();
+ song.SongID = SongID;
+ if (CSongs.GetSong(SongID).IsDuet)
+ song.GameMode = EGameMode.TR_GAMEMODE_DUET;
+ else
+ song.GameMode = EGameMode.TR_GAMEMODE_NORMAL;
+
+ Songs.Add(song);
+ }
+
+ public void AddSong(int SongID, EGameMode gm)
+ {
+ CPlaylistSong song = new CPlaylistSong();
+ song.SongID = SongID;
+ song.GameMode = gm;
+
+ Songs.Add(song);
+ }
+
+ public void DeleteSong(int SongNr)
+ {
+ Songs.RemoveAt(SongNr);
+ }
+
+ public void SongDown(int SongNr)
+ {
+ if (SongNr != 0)
+ {
+ Songs.Reverse(SongNr - 1, 2);
+ }
+ }
+
+ public void SongUp(int SongNr)
+ {
+ if (SongNr + 1 < Songs.Count)
+ {
+ Songs.Reverse(SongNr, 2);
+ }
+ }
}
}
diff --git a/Vocaluxe/Lib/Song/CNotes.cs b/Vocaluxe/Lib/Song/CNotes.cs
index d38dc820..d6203ca0 100644
--- a/Vocaluxe/Lib/Song/CNotes.cs
+++ b/Vocaluxe/Lib/Song/CNotes.cs
@@ -6,7 +6,7 @@ using Vocaluxe.Base;
namespace Vocaluxe.Lib.Song
{
- class CNotes
+ class CNotes
{
private List _Lines = new List();
@@ -549,6 +549,7 @@ namespace Vocaluxe.Lib.Song
updateMinMaxBeat(note);
}
}
+
#endregion Methods
}
diff --git a/Vocaluxe/Lib/Song/CSong.cs b/Vocaluxe/Lib/Song/CSong.cs
index 120efbf6..7485bc3d 100644
--- a/Vocaluxe/Lib/Song/CSong.cs
+++ b/Vocaluxe/Lib/Song/CSong.cs
@@ -7,6 +7,7 @@ using System.Text.RegularExpressions;
using Vocaluxe.Base;
using Vocaluxe.Lib.Draw;
using Vocaluxe.Menu;
+using Vocaluxe.GameModes;
namespace Vocaluxe.Lib.Song
{
@@ -128,6 +129,9 @@ namespace Vocaluxe.Lib.Song
public float Gap = 0f;
public float VideoGap = 0f;
+ public string DuetPart1 = String.Empty;
+ public string DuetPart2 = String.Empty;
+
public List Comment = new List();
// Sorting
@@ -148,6 +152,23 @@ namespace Vocaluxe.Lib.Song
// Notes
public CNotes Notes = new CNotes();
+ public EGameMode[] AvailableGameModes
+ {
+ get
+ {
+ List gms = new List();
+ if (IsDuet)
+ gms.Add(EGameMode.TR_GAMEMODE_DUET);
+ else
+ gms.Add(EGameMode.TR_GAMEMODE_NORMAL);
+ if (Medley.Source != EMedleySource.None)
+ gms.Add(EGameMode.TR_GAMEMODE_MEDLEY);
+ gms.Add(EGameMode.TR_GAMEMODE_SHORTSONG);
+
+ return gms.ToArray();
+ }
+ }
+
public CSong()
{
}
@@ -363,6 +384,18 @@ namespace Vocaluxe.Lib.Song
this.ArtistSorting = Value;
}
break;
+ case "P1":
+ if (Value != String.Empty)
+ {
+ this.DuetPart1 = Value;
+ }
+ break;
+ case "P2":
+ if (Value != String.Empty)
+ {
+ this.DuetPart2 = Value;
+ }
+ break;
case "MP3":
if (File.Exists(Path.Combine(this.Folder, Value)))
{
@@ -545,12 +578,12 @@ namespace Vocaluxe.Lib.Song
CheckFiles();
//Before saving this tags to .txt: Check, if ArtistSorting and Artist are equal, then don't save this tag.
- if (this.ArtistSorting == "")
+ if (this.ArtistSorting == String.Empty)
{
this.ArtistSorting = this.Artist;
}
- if (this.TitleSorting == "")
+ if (this.TitleSorting == String.Empty)
{
this.TitleSorting = this.Title;
}
@@ -609,9 +642,10 @@ namespace Vocaluxe.Lib.Song
FileLineNo++;
if (TempC.CompareTo('P') == 0)
{
- char chr = (char)sr.Read();
- int.TryParse(chr.ToString(), out Param1);
+ char chr;
+ while ((chr = (char)sr.Read()) == ' '){ }
+ int.TryParse(chr.ToString(), out Param1);
if (Param1 == 1)
Player = 0;
else if (Param1 == 2)
@@ -696,7 +730,8 @@ namespace Vocaluxe.Lib.Song
FindRefrain();
FindShortEnd();
_NotesLoaded = true;
-
+ if(IsDuet)
+ CheckDuet();
return true;
}
@@ -763,6 +798,20 @@ namespace Vocaluxe.Lib.Song
}
}
+ private void CheckDuet()
+ {
+ if (DuetPart1 == String.Empty)
+ {
+ DuetPart1 = "Part 1";
+ CLog.LogError("Warning: Can't find #P1-tag for duets in \"" + this.Artist + " - " + this.Title + "\".");
+ }
+ if (DuetPart2 == String.Empty)
+ {
+ DuetPart2 = "Part 2";
+ CLog.LogError("Warning: Can't find #P2-tag for duets in \"" + this.Artist + " - " + this.Title + "\".");
+ }
+ }
+
private struct Series
{
public int start;
@@ -962,5 +1011,10 @@ namespace Vocaluxe.Lib.Song
ShortEnd = stop;
}
+
+ public object Clone()
+ {
+ return base.MemberwiseClone();
+ }
}
}
diff --git a/Vocaluxe/Lib/Sound/COpenALPlay.cs b/Vocaluxe/Lib/Sound/COpenALPlay.cs
index 99215d7a..85e17cd4 100644
--- a/Vocaluxe/Lib/Sound/COpenALPlay.cs
+++ b/Vocaluxe/Lib/Sound/COpenALPlay.cs
@@ -804,7 +804,7 @@ namespace Vocaluxe.Lib.Sound
{
AL.GetSource(_source, ALGetSourcei.BuffersProcessed, out processed_count);
doit = false;
- Console.WriteLine("Buffers Prozessed on Stream " + _source.ToString() + " = " + processed_count.ToString());
+ Console.WriteLine("Buffers Processed on Stream " + _source.ToString() + " = " + processed_count.ToString());
if (processed_count < 1)
return;
}
diff --git a/Vocaluxe/Menu/Animations/CAnimation.cs b/Vocaluxe/Menu/Animations/CAnimation.cs
new file mode 100644
index 00000000..2d062033
--- /dev/null
+++ b/Vocaluxe/Menu/Animations/CAnimation.cs
@@ -0,0 +1,92 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text;
+using System.Xml;
+using System.Xml.XPath;
+
+using Vocaluxe.Base;
+using Vocaluxe.Lib.Draw;
+
+namespace Vocaluxe.Menu.Animations
+{
+ public class CAnimation:IAnimation
+ {
+ private IAnimation _Animation;
+
+ public CAnimation(EAnimationType Type)
+ {
+ setAnimation(Type);
+ }
+
+ public void Init()
+ {
+ _Animation.Init();
+ }
+
+ public bool LoadAnimation(string item, XPathNavigator navigator)
+ {
+ return _Animation.LoadAnimation(item, navigator);
+ }
+
+ public bool SaveAnimation(XmlWriter writer)
+ {
+ return _Animation.SaveAnimation(writer);
+ }
+
+ public void StartAnimation()
+ {
+ _Animation.StartAnimation();
+ }
+
+ public void StopAnimation()
+ {
+ _Animation.StopAnimation();
+ }
+
+ public void ResetAnimation()
+ {
+ _Animation.ResetAnimation();
+ }
+
+ public bool AnimationActive()
+ {
+ return _Animation.AnimationActive();
+ }
+
+ public void Update()
+ {
+ _Animation.Update();
+ }
+
+ public void setRect(SRectF rect)
+ {
+ _Animation.setRect(rect);
+ }
+
+ public SRectF getRect()
+ {
+ return _Animation.getRect();
+ }
+
+ public void setColor(SColorF color)
+ {
+ _Animation.setColor(color);
+ }
+
+ public SColorF getColor()
+ {
+ return _Animation.getColor();
+ }
+
+ public void setAnimation(EAnimationType Type)
+ {
+ switch (Type)
+ {
+ case EAnimationType.Resize:
+ _Animation = new CAnimationResize();
+ break;
+ }
+ }
+ }
+}
diff --git a/Vocaluxe/Menu/Animations/CAnimationFramework.cs b/Vocaluxe/Menu/Animations/CAnimationFramework.cs
new file mode 100644
index 00000000..3ac3d18c
--- /dev/null
+++ b/Vocaluxe/Menu/Animations/CAnimationFramework.cs
@@ -0,0 +1,95 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text;
+using System.Xml;
+using System.Xml.XPath;
+
+using Vocaluxe.Base;
+using Vocaluxe.Lib.Draw;
+
+namespace Vocaluxe.Menu.Animations
+{
+ public enum EAnimationType
+ {
+ Resize
+ }
+
+ public enum EAnimationRepeat
+ {
+ None,
+ Reset,
+ Repeat,
+ RepeatWithReset
+ }
+
+ public abstract class CAnimationFramework:IAnimation
+ {
+ public bool _AnimationLoaded;
+
+ public EAnimationType Type;
+ public EAnimationRepeat Repeat;
+ public float Speed;
+
+ public Stopwatch Timer = new Stopwatch();
+ public bool ResetMode = false;
+
+ public abstract void Init();
+
+ public virtual bool LoadAnimation(string item, XPathNavigator navigator)
+ {
+ _AnimationLoaded = true;
+
+ _AnimationLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Speed", navigator, ref Speed);
+ _AnimationLoaded &= CHelper.TryGetEnumValueFromXML(item + "/Repeat", navigator, ref Repeat);
+
+ return _AnimationLoaded;
+ }
+
+ public virtual bool SaveAnimation(XmlWriter writer)
+ {
+ return false;
+ }
+
+ public virtual void StartAnimation()
+ {
+ Timer.Start();
+ }
+
+ public virtual void StopAnimation()
+ {
+ Timer.Stop();
+ Timer.Reset();
+ }
+
+ public virtual void ResetAnimation()
+ {
+ ResetMode = !ResetMode;
+ }
+
+ public virtual bool AnimationActive()
+ {
+ return Timer.IsRunning;
+ }
+
+ public virtual void setRect(SRectF rect)
+ {
+ }
+
+ public virtual SRectF getRect()
+ {
+ return new SRectF();
+ }
+
+ public virtual void setColor(SColorF color)
+ {
+ }
+
+ public virtual SColorF getColor()
+ {
+ return new SColorF();
+ }
+
+ public abstract void Update();
+ }
+}
diff --git a/Vocaluxe/Menu/Animations/CAnimationResize.cs b/Vocaluxe/Menu/Animations/CAnimationResize.cs
new file mode 100644
index 00000000..ecc77feb
--- /dev/null
+++ b/Vocaluxe/Menu/Animations/CAnimationResize.cs
@@ -0,0 +1,106 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text;
+using System.Xml;
+using System.Xml.XPath;
+
+using Vocaluxe.Base;
+using Vocaluxe.Lib.Draw;
+
+namespace Vocaluxe.Menu.Animations
+{
+ public class CAnimationResize : CAnimationFramework
+ {
+ public SRectF FinalRect;
+ public SRectF CurrentRect;
+ public SRectF OriginalRect;
+
+ public CAnimationResize()
+ {
+ }
+
+ public override void Init()
+ {
+ Type = EAnimationType.Resize;
+ }
+
+ public override bool LoadAnimation(string item, XPathNavigator navigator)
+ {
+ //Load normal animation-options
+ _AnimationLoaded &= base.LoadAnimation(item, navigator);
+
+ //Load specific animation-options
+ _AnimationLoaded &= CHelper.TryGetFloatValueFromXML(item + "/X", navigator, ref FinalRect.X);
+ _AnimationLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Y", navigator, ref FinalRect.Y);
+ _AnimationLoaded &= CHelper.TryGetFloatValueFromXML(item + "/W", navigator, ref FinalRect.W);
+ _AnimationLoaded &= CHelper.TryGetFloatValueFromXML(item + "/H", navigator, ref FinalRect.H);
+
+ return _AnimationLoaded;
+ }
+
+ public override void setRect(SRectF rect)
+ {
+ OriginalRect = rect;
+ }
+
+ public override SRectF getRect()
+ {
+ return CurrentRect;
+ }
+
+ public override void StartAnimation()
+ {
+ base.StartAnimation();
+
+ CurrentRect = OriginalRect;
+ }
+
+ public override void Update()
+ {
+ //Update CurrentRect
+ if (!ResetMode)
+ {
+ CLog.LogError((CurrentRect.X + ((FinalRect.X - CurrentRect.X) / Speed * Timer.ElapsedMilliseconds)).ToString("#.#####"));
+ CurrentRect.X = CurrentRect.X + ((FinalRect.X - CurrentRect.X) / Speed * Timer.ElapsedMilliseconds);
+ CurrentRect.Y = CurrentRect.Y + ((FinalRect.Y - CurrentRect.Y) / Speed * Timer.ElapsedMilliseconds);
+ CurrentRect.H = CurrentRect.H + ((FinalRect.H - CurrentRect.H) / Speed * Timer.ElapsedMilliseconds);
+ CurrentRect.W = CurrentRect.W + ((FinalRect.W - CurrentRect.W) / Speed * Timer.ElapsedMilliseconds);
+ }
+ else
+ {
+ CurrentRect.X = CurrentRect.X + ((OriginalRect.X - CurrentRect.X) / Speed * Timer.ElapsedMilliseconds);
+ CurrentRect.Y = CurrentRect.Y + ((OriginalRect.Y - CurrentRect.Y) / Speed * Timer.ElapsedMilliseconds);
+ CurrentRect.H = CurrentRect.H + ((OriginalRect.H - CurrentRect.H) / Speed * Timer.ElapsedMilliseconds);
+ CurrentRect.W = CurrentRect.W + ((OriginalRect.W - CurrentRect.W) / Speed * Timer.ElapsedMilliseconds);
+ }
+
+ if (CurrentRect.X == FinalRect.X && CurrentRect.Y == FinalRect.Y && CurrentRect.H == FinalRect.H && CurrentRect.W == FinalRect.W)
+ {
+ switch (Repeat)
+ {
+ case EAnimationRepeat.Repeat:
+ StopAnimation();
+ CurrentRect = OriginalRect;
+ StartAnimation();
+ break;
+
+ case EAnimationRepeat.RepeatWithReset:
+ ResetAnimation();
+ break;
+
+ case EAnimationRepeat.Reset:
+ if (!ResetMode)
+ ResetAnimation();
+ else
+ StopAnimation();
+ break;
+
+ case EAnimationRepeat.None:
+ StopAnimation();
+ break;
+ }
+ }
+ }
+ }
+}
diff --git a/Vocaluxe/Menu/Animations/IAnimation.cs b/Vocaluxe/Menu/Animations/IAnimation.cs
new file mode 100644
index 00000000..444181c7
--- /dev/null
+++ b/Vocaluxe/Menu/Animations/IAnimation.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Text;
+using System.Xml;
+using System.Xml.XPath;
+
+using Vocaluxe.Base;
+using Vocaluxe.Lib.Draw;
+
+namespace Vocaluxe.Menu.Animations
+{
+ interface IAnimation
+ {
+ void Init();
+ bool LoadAnimation(string item, XPathNavigator navigator);
+ bool SaveAnimation(XmlWriter writer);
+
+ void setRect(SRectF rect);
+ SRectF getRect();
+ void setColor(SColorF color);
+ SColorF getColor();
+
+ void StartAnimation();
+ void StopAnimation();
+ void ResetAnimation();
+ bool AnimationActive();
+ void Update();
+ }
+}
diff --git a/Vocaluxe/Menu/CBackground.cs b/Vocaluxe/Menu/CBackground.cs
index cedc4eb5..1b6b0b83 100644
--- a/Vocaluxe/Menu/CBackground.cs
+++ b/Vocaluxe/Menu/CBackground.cs
@@ -38,6 +38,11 @@ namespace Vocaluxe.Menu
public SColorF Color;
+ public string GetThemeName()
+ {
+ return _Theme.Name;
+ }
+
#region Constructors
public CBackground()
{
diff --git a/Vocaluxe/Menu/CButton.cs b/Vocaluxe/Menu/CButton.cs
index d4b5d231..b25c6482 100644
--- a/Vocaluxe/Menu/CButton.cs
+++ b/Vocaluxe/Menu/CButton.cs
@@ -30,7 +30,9 @@ namespace Vocaluxe.Menu
public SColorF Color;
public SColorF SColor;
+ public bool SelText;
public CText Text;
+ public CText SText;
public bool Reflection;
public float ReflectionSpace;
@@ -53,6 +55,11 @@ namespace Vocaluxe.Menu
}
public bool Visible;
+ public string GetThemeName()
+ {
+ return _Theme.Name;
+ }
+
public CButton()
{
_Theme = new SThemeButton();
@@ -60,7 +67,9 @@ namespace Vocaluxe.Menu
Color = new SColorF();
SColor = new SColorF();
+ SelText = false;
Text = new CText();
+ SText = new CText();
Selected = false;
Visible = true;
@@ -113,6 +122,13 @@ namespace Vocaluxe.Menu
_ThemeLoaded &= Text.LoadTheme(item, "Text", navigator, SkinIndex, true);
Text.Z = Rect.Z;
+ if (CHelper.ItemExistsInXML(item + "/SText", navigator))
+ {
+ SelText = true;
+ _ThemeLoaded &= SText.LoadTheme(item, "SText", navigator, SkinIndex, true);
+ SText.Z = Rect.Z;
+ }
+
//Reflections
if (CHelper.ItemExistsInXML(item + "/Reflection", navigator))
@@ -189,6 +205,8 @@ namespace Vocaluxe.Menu
}
Text.SaveTheme(writer);
+ if (SelText)
+ SText.SaveTheme(writer);
writer.WriteComment(" If exists:");
writer.WriteComment(" : Reflection Space");
@@ -240,28 +258,42 @@ namespace Vocaluxe.Menu
{
texture = CTheme.GetSkinTexture(_Theme.TextureName);
CDraw.DrawTexture(texture, Rect, Color);
+ Text.DrawRelative(Rect.X, Rect.Y);
if (Reflection)
{
CDraw.DrawTextureReflection(texture, Rect, Color, Rect, ReflectionSpace, ReflectionHeight);
+ Text.DrawRelative(Rect.X, Rect.Y, ReflectionSpace, ReflectionHeight, Rect.H);
}
}
- else
+ else if(!SelText)
{
texture = CTheme.GetSkinTexture(_Theme.STextureName);
CDraw.DrawTexture(texture, Rect, SColor);
+ Text.DrawRelative(Rect.X, Rect.Y);
if (Reflection)
{
CDraw.DrawTextureReflection(texture, Rect, SColor, Rect, ReflectionSpace, ReflectionHeight);
+ Text.DrawRelative(Rect.X, Rect.Y, ReflectionSpace, ReflectionHeight, Rect.H);
}
}
-
- Text.DrawRelative(Rect.X, Rect.Y);
- if (Reflection)
+ else if(SelText)
{
- Text.DrawRelative(Rect.X, Rect.Y, ReflectionSpace, ReflectionHeight, Rect.H);
+ texture = CTheme.GetSkinTexture(_Theme.STextureName);
+ CDraw.DrawTexture(texture, Rect, SColor);
+ SText.DrawRelative(Rect.X, Rect.Y);
+ if (Reflection)
+ {
+ CDraw.DrawTextureReflection(texture, Rect, SColor, Rect, ReflectionSpace, ReflectionHeight);
+ SText.DrawRelative(Rect.X, Rect.Y, ReflectionSpace, ReflectionHeight, Rect.H);
+ }
}
}
+ public void ProcessMouseMove(int x, int y)
+ {
+ Selected = CHelper.IsInBounds(Rect, x, y);
+ }
+
public void UnloadTextures()
{
Text.UnloadTextures();
diff --git a/Vocaluxe/Menu/CEqualizer.cs b/Vocaluxe/Menu/CEqualizer.cs
new file mode 100644
index 00000000..4b8c3997
--- /dev/null
+++ b/Vocaluxe/Menu/CEqualizer.cs
@@ -0,0 +1,310 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Text;
+using System.Xml;
+using System.Xml.XPath;
+
+using Vocaluxe.Base;
+using Vocaluxe.Lib.Draw;
+
+namespace Vocaluxe.Menu
+{
+ enum EEqualizerStyle
+ {
+ Collums
+ }
+
+ struct SThemeEqualizer
+ {
+ public string Name;
+
+ public string ColorName;
+ public string MaxColorName;
+ public string TextureName;
+
+ public int NumBars;
+
+ public EEqualizerStyle Style;
+ public EOffOn DrawNegative;
+ }
+
+ class CEqualizer : IMenuElement
+ {
+ private SThemeEqualizer _Theme;
+ private bool _ThemeLoaded;
+
+ public SRectF Rect;
+ public SColorF Color;
+ public SColorF MaxColor;
+ public float Space;
+
+ public bool Reflection;
+ public float ReflectionSpace;
+ public float ReflectionHeight;
+
+ public bool Selected;
+ public bool Visible;
+ public bool ScreenHandles;
+
+ public string GetThemeName()
+ {
+ return _Theme.Name;
+ }
+
+ private float[] _Bars;
+
+ public CEqualizer()
+ {
+ _Theme = new SThemeEqualizer();
+ _ThemeLoaded = false;
+
+ Rect = new SRectF();
+ Color = new SColorF();
+ MaxColor = new SColorF();
+
+ Selected = false;
+ Visible = true;
+ ScreenHandles = false;
+
+ Reflection = false;
+ ReflectionSpace = 0f;
+ ReflectionHeight = 0f;
+ }
+
+ public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex)
+ {
+ string item = XmlPath + "/" + ElementName;
+ _ThemeLoaded = true;
+
+ _ThemeLoaded &= CHelper.GetValueFromXML(item + "/Skin", navigator, ref _Theme.TextureName, String.Empty);
+
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/X", navigator, ref Rect.X);
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Y", navigator, ref Rect.Y);
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Z", navigator, ref Rect.Z);
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/W", navigator, ref Rect.W);
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/H", navigator, ref Rect.H);
+
+ _ThemeLoaded &= CHelper.TryGetIntValueFromXML(item + "/NumBars", navigator, ref _Theme.NumBars);
+
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Space", navigator, ref Space);
+
+ _ThemeLoaded &= CHelper.TryGetEnumValueFromXML(item + "/Style", navigator, ref _Theme.Style);
+
+ _ThemeLoaded &= CHelper.TryGetEnumValueFromXML(item + "/DrawNegative", navigator, ref _Theme.DrawNegative);
+
+ if (CHelper.GetValueFromXML(item + "/Color", navigator, ref _Theme.ColorName, String.Empty))
+ {
+ _ThemeLoaded &= CTheme.GetColor(_Theme.ColorName, SkinIndex, ref Color);
+ }
+ else
+ {
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/R", navigator, ref Color.R);
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/G", navigator, ref Color.G);
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/B", navigator, ref Color.B);
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/A", navigator, ref Color.A);
+ }
+
+ if (CHelper.GetValueFromXML(item + "/MaxColor", navigator, ref _Theme.MaxColorName, String.Empty))
+ {
+ _ThemeLoaded &= CTheme.GetColor(_Theme.ColorName, SkinIndex, ref Color);
+ }
+ else
+ {
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/MaxR", navigator, ref MaxColor.R);
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/MaxG", navigator, ref MaxColor.G);
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/MaxB", navigator, ref MaxColor.B);
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/MaxA", navigator, ref MaxColor.A);
+ }
+
+ //Reflection
+ if (CHelper.ItemExistsInXML(item + "/Reflection", navigator))
+ {
+ Reflection = true;
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Reflection/Space", navigator, ref ReflectionSpace);
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/Reflection/Height", navigator, ref ReflectionHeight);
+ }
+ else
+ Reflection = false;
+
+ if (_ThemeLoaded)
+ {
+ _Theme.Name = ElementName;
+ _Bars = new float[_Theme.NumBars];
+ for (int i = 0; i < _Bars.Length; i++)
+ {
+ _Bars[i] = 0f;
+ }
+ LoadTextures();
+ }
+ return _ThemeLoaded;
+ }
+
+ public bool SaveTheme(XmlWriter writer)
+ {
+ if (_ThemeLoaded)
+ {
+ writer.WriteStartElement(_Theme.Name);
+
+ writer.WriteComment(": Texture name");
+ writer.WriteElementString("Skin", _Theme.TextureName);
+
+ writer.WriteComment(", , , , : Equalizer position, width and height");
+ writer.WriteElementString("X", Rect.X.ToString("#0"));
+ writer.WriteElementString("Y", Rect.Y.ToString("#0"));
+ writer.WriteElementString("Z", Rect.Z.ToString("#0.00"));
+ writer.WriteElementString("W", Rect.W.ToString("#0"));
+ writer.WriteElementString("H", Rect.H.ToString("#0"));
+
+ writer.WriteComment(": Number of equalizer-elements.");
+ writer.WriteElementString("NumBars", _Theme.NumBars.ToString("#0"));
+ writer.WriteComment(": Space between equalizer-elements.");
+ writer.WriteElementString("Space", Space.ToString("#0.00"));
+ writer.WriteComment("