Merge remote-tracking branch 'remotes/upstream/develop' into webcam

Conflicts:
	Vocaluxe/Screens/CScreenSing.cs
Merged CScreenSing.cs manually
This commit is contained in:
Stephan Sundermann committed 2012-12-07 20:30:17 +01:00
commit 463ba9a4b2
105 files changed
+8822 -877

No files matched your search

+13
View File
@@ -23,6 +23,7 @@
<TR_GAMEMODE_NORMAL>Normal</TR_GAMEMODE_NORMAL>
<TR_GAMEMODE_DUET>Duett</TR_GAMEMODE_DUET>
<TR_GAMEMODE_MEDLEY>Medley</TR_GAMEMODE_MEDLEY>
<TR_GAMEMODE_SHORTSONG>Kurz-Version</TR_GAMEMODE_SHORTSONG>
<!--General: Ratings-->
<TR_RATING_VOCAL_HERO>Vocal Hero</TR_RATING_VOCAL_HERO>
<TR_RATING_SUPERSTAR>Superstar</TR_RATING_SUPERSTAR>
@@ -118,6 +119,16 @@
<TR_SCREENNAMES_WARNING_PROFILES_PL>Warnung: Den Spielern %v sind keine Profile zugeordnet!</TR_SCREENNAMES_WARNING_PROFILES_PL>
<!--ScreenSong-->
<TR_SCREENSONG_MENU>Songauswahl</TR_SCREENSONG_MENU>
<TR_SCREENSONG_BUTTON_SING>Lied singen</TR_SCREENSONG_BUTTON_SING>
<TR_SCREENSONG_BUTTON_PLAYLIST>Zur Playlist hinzufügen</TR_SCREENSONG_BUTTON_PLAYLIST>
<TR_SCREENSONG_BUTTON_CANCEL>Schließen</TR_SCREENSONG_BUTTON_CANCEL>
<TR_SCREENSONG_BUTTON_RANDOM>Zufälligen Song wählen</TR_SCREENSONG_BUTTON_RANDOM>
<TR_SCREENSONG_BUTTON_RANDOMCAT>Zufällige Kategorie wählen</TR_SCREENSONG_BUTTON_RANDOMCAT>
<TR_SCREENSONG_BUTTON_SINGALL>Alle Songs singen</TR_SCREENSONG_BUTTON_SINGALL>
<TR_SCREENSONG_BUTTON_SINGALLVISIBLE>Alle sichtbaren Songs singen</TR_SCREENSONG_BUTTON_SINGALLVISIBLE>
<TR_SCREENSONG_BUTTON_OPENPLAYLIST>Playlist öffnen</TR_SCREENSONG_BUTTON_OPENPLAYLIST>
<TR_SCREENSONG_NEWPLAYLIST>Neue Playlist</TR_SCREENSONG_NEWPLAYLIST>
<TR_SCREENSONG_SONGOPTIONS>Lied-Optionen</TR_SCREENSONG_SONGOPTIONS>
<TR_SCREENSONG_SEARCH>Suche:</TR_SCREENSONG_SEARCH>
<TR_SCREENSONG_NOLANGUAGE>Ohne Sprache</TR_SCREENSONG_NOLANGUAGE>
<TR_SCREENSONG_NOYEAR>Ohne Jahr</TR_SCREENSONG_NOYEAR>
@@ -130,11 +141,13 @@
<TR_SCREENSING_PAUSE>Pause</TR_SCREENSING_PAUSE>
<TR_SCREENSING_BUTTON_CANCEL>Lied beenden</TR_SCREENSING_BUTTON_CANCEL>
<TR_SCREENSING_BUTTON_CONTINUE>Fortfahren</TR_SCREENSING_BUTTON_CONTINUE>
<TR_SCREENSING_BUTTON_SKIP>Lied überspringen</TR_SCREENSING_BUTTON_SKIP>
<!--ScreenScore-->
<TR_SCREENSCORE_SCORES>Auswertung</TR_SCREENSCORE_SCORES>
<TR_SCREENSCORE_RATING>Bewertung</TR_SCREENSCORE_RATING>
<TR_SCREENSCORE_POINTS>Punkte</TR_SCREENSCORE_POINTS>
<TR_SCREENSCORE_GAMEDIFFICULTY>Schwierigkeit</TR_SCREENSCORE_GAMEDIFFICULTY>
<TR_SCREENSCORE_OVERALLSCORE>Gesamtpunktzahl</TR_SCREENSCORE_OVERALLSCORE>
<!--ScreenHighscore-->
<TR_SCREENHIGHSCORE_HIGHSCORE>Highscore</TR_SCREENHIGHSCORE_HIGHSCORE>
<!--ScreenProfiles-->
+13
View File
@@ -23,6 +23,7 @@
<TR_GAMEMODE_NORMAL>Normal</TR_GAMEMODE_NORMAL>
<TR_GAMEMODE_DUET>Duet</TR_GAMEMODE_DUET>
<TR_GAMEMODE_MEDLEY>Medley</TR_GAMEMODE_MEDLEY>
<TR_GAMEMODE_SHORTSONG>Short version</TR_GAMEMODE_SHORTSONG>
<!--General: Ratings-->
<TR_RATING_VOCAL_HERO>Vocal Hero</TR_RATING_VOCAL_HERO>
<TR_RATING_SUPERSTAR>Superstar</TR_RATING_SUPERSTAR>
@@ -118,6 +119,16 @@
<TR_SCREENNAMES_WARNING_PROFILES_PL>Warning: There are no profiles assigned to players %v!</TR_SCREENNAMES_WARNING_PROFILES_PL>
<!--ScreenSong-->
<TR_SCREENSONG_MENU>Song Selection</TR_SCREENSONG_MENU>
<TR_SCREENSONG_BUTTON_SING>Sing</TR_SCREENSONG_BUTTON_SING>
<TR_SCREENSONG_BUTTON_PLAYLIST>Add to playlist</TR_SCREENSONG_BUTTON_PLAYLIST>
<TR_SCREENSONG_BUTTON_CANCEL>Close</TR_SCREENSONG_BUTTON_CANCEL>
<TR_SCREENSONG_BUTTON_RANDOM>Select a random song</TR_SCREENSONG_BUTTON_RANDOM>
<TR_SCREENSONG_BUTTON_RANDOMCAT>Select a random category</TR_SCREENSONG_BUTTON_RANDOMCAT>
<TR_SCREENSONG_BUTTON_SINGALL>Sing all songs</TR_SCREENSONG_BUTTON_SINGALL>
<TR_SCREENSONG_BUTTON_SINGALLVISIBLE>Sing all visible songs</TR_SCREENSONG_BUTTON_SINGALLVISIBLE>
<TR_SCREENSONG_BUTTON_OPENPLAYLIST>Open playlist</TR_SCREENSONG_BUTTON_OPENPLAYLIST>
<TR_SCREENSONG_NEWPLAYLIST>New Playlist</TR_SCREENSONG_NEWPLAYLIST>
<TR_SCREENSONG_SONGOPTIONS>Song Options</TR_SCREENSONG_SONGOPTIONS>
<TR_SCREENSONG_SEARCH>Search:</TR_SCREENSONG_SEARCH>
<TR_SCREENSONG_NOLANGUAGE>No Language</TR_SCREENSONG_NOLANGUAGE>
<TR_SCREENSONG_NOYEAR>No Year</TR_SCREENSONG_NOYEAR>
@@ -130,11 +141,13 @@
<TR_SCREENSING_PAUSE>Pause</TR_SCREENSING_PAUSE>
<TR_SCREENSING_BUTTON_CANCEL>Stop singing</TR_SCREENSING_BUTTON_CANCEL>
<TR_SCREENSING_BUTTON_CONTINUE>Continue</TR_SCREENSING_BUTTON_CONTINUE>
<TR_SCREENSING_BUTTON_SKIP>Skip this song</TR_SCREENSING_BUTTON_SKIP>
<!--ScreenScore-->
<TR_SCREENSCORE_SCORES>Scores</TR_SCREENSCORE_SCORES>
<TR_SCREENSCORE_RATING>Rating</TR_SCREENSCORE_RATING>
<TR_SCREENSCORE_POINTS>Points</TR_SCREENSCORE_POINTS>
<TR_SCREENSCORE_GAMEDIFFICULTY>Difficulty</TR_SCREENSCORE_GAMEDIFFICULTY>
<TR_SCREENSCORE_OVERALLSCORE>Overall score</TR_SCREENSCORE_OVERALLSCORE>
<!--ScreenHighscore-->
<TR_SCREENHIGHSCORE_HIGHSCORE>Highscore</TR_SCREENHIGHSCORE_HIGHSCORE>
<!--ScreenProfiles-->
+1
View File
@@ -117,6 +117,7 @@
<TR_SCREENSONG_SEARCH>Rechercher:</TR_SCREENSONG_SEARCH>
<TR_SCREENSONG_NOLANGUAGE>Pas de Langue</TR_SCREENSONG_NOLANGUAGE>
<TR_SCREENSONG_NOYEAR>Pas d'Année</TR_SCREENSONG_NOYEAR>
<TR_SCREENSONG_NEWPLAYLIST>TODO: New Playlist</TR_SCREENSONG_NEWPLAYLIST>
<TR_SCREENSONG_NOGENRE>Pas de Genre</TR_SCREENSONG_NOGENRE>
<TR_SCREENSONG_NOEDITION>Pas d'Edition</TR_SCREENSONG_NOEDITION>
<TR_SCREENSONG_ALLSONGS>Toutes les chansons</TR_SCREENSONG_ALLSONGS>
+1
View File
@@ -116,6 +116,7 @@
<TR_SCREENSONG_MENU>Selección de Canciones</TR_SCREENSONG_MENU>
<TR_SCREENSONG_SEARCH>Buscar:</TR_SCREENSONG_SEARCH>
<TR_SCREENSONG_NOLANGUAGE>Sin Idioma</TR_SCREENSONG_NOLANGUAGE>
<TR_SCREENSONG_NEWPLAYLIST>TODO: New Playlist</TR_SCREENSONG_NEWPLAYLIST>
<TR_SCREENSONG_NOYEAR>Sin Año</TR_SCREENSONG_NOYEAR>
<TR_SCREENSONG_NOGENRE>Sin Género</TR_SCREENSONG_NOGENRE>
<TR_SCREENSONG_NOEDITION>Sin Edición</TR_SCREENSONG_NOEDITION>
+2 -1
View File
@@ -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
=================================
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

@@ -10,10 +10,10 @@
<Y>0</Y>
<Z>0,00</Z>
<W>1181</W>
<H>50</H>
<H>42</H>
<!--<Color>: Static color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>Visible</Color>
<Color>StaticColor</Color>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
@@ -22,11 +22,11 @@
<!--<Skin>: Texture name-->
<Skin>CoverBackground</Skin>
<!--<X>, <Y>, <Z>, <W>, <H>: Static position, width and height-->
<X>50</X>
<Y>0</Y>
<X>55</X>
<Y>2</Y>
<Z>0,00</Z>
<W>50</W>
<H>50</H>
<W>38</W>
<H>38</H>
<!--<Color>: Static color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>Visible</Color>
@@ -36,14 +36,14 @@
</StaticCover>
<TextCurrentSong>
<!--<X>, <Y>: Text position-->
<X>630</X>
<Y>0</Y>
<X>410</X>
<Y>4</Y>
<!--<Z>: Text position-->
<Z>0,00</Z>
<!--<H>: Text height-->
<H>50</H>
<H>32</H>
<!--<MaxW>: Maximum text width (if exists)-->
<MaxW>650</MaxW>
<MaxW>769</MaxW>
<!--<Color>: Text color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>StaticColor</Color>
@@ -58,7 +58,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -70,11 +70,11 @@
<!--<SkinSelected>: Texture name for selected button-->
<SkinSelected>PlayIcon</SkinSelected>
<!--<X>, <Y>, <Z>, <W>, <H>: Button position, width and height-->
<X>200</X>
<Y>5</Y>
<X>146</X>
<Y>8</Y>
<Z>0,00</Z>
<W>40</W>
<H>40</H>
<W>28</W>
<H>28</H>
<!--<Color>: Button color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonColor</Color>
@@ -103,7 +103,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
</Text>
<!--<Reflection> If exists:-->
@@ -119,11 +119,11 @@
<!--<SkinSelected>: Texture name for selected button-->
<SkinSelected>PauseIcon</SkinSelected>
<!--<X>, <Y>, <Z>, <W>, <H>: Button position, width and height-->
<X>200</X>
<Y>5</Y>
<X>145</X>
<Y>8</Y>
<Z>0,00</Z>
<W>40</W>
<H>40</H>
<W>28</W>
<H>28</H>
<!--<Color>: Button color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonColor</Color>
@@ -152,7 +152,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
</Text>
<!--<Reflection> If exists:-->
@@ -168,11 +168,11 @@
<!--<SkinSelected>: Texture name for selected button-->
<SkinSelected>PreviousIcon</SkinSelected>
<!--<X>, <Y>, <Z>, <W>, <H>: Button position, width and height-->
<X>125</X>
<Y>0</Y>
<X>100</X>
<Y>2</Y>
<Z>0,00</Z>
<W>50</W>
<H>50</H>
<W>38</W>
<H>38</H>
<!--<Color>: Button color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonColor</Color>
@@ -201,7 +201,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
</Text>
<!--<Reflection> If exists:-->
@@ -217,11 +217,11 @@
<!--<SkinSelected>: Texture name for selected button-->
<SkinSelected>NextIcon</SkinSelected>
<!--<X>, <Y>, <Z>, <W>, <H>: Button position, width and height-->
<X>265</X>
<Y>0</Y>
<X>185</X>
<Y>2</Y>
<Z>0,00</Z>
<W>50</W>
<H>50</H>
<W>38</W>
<H>38</H>
<!--<Color>: Button color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonColor</Color>
@@ -250,7 +250,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
</Text>
<!--<Reflection> If exists:-->
@@ -266,11 +266,11 @@
<!--<SkinSelected>: Texture name for selected button-->
<SkinSelected>RepeatIcon</SkinSelected>
<!--<X>, <Y>, <Z>, <W>, <H>: Button position, width and height-->
<X>330</X>
<Y>0</Y>
<X>225</X>
<Y>2</Y>
<Z>0,00</Z>
<W>50</W>
<H>50</H>
<W>38</W>
<H>38</H>
<!--<Color>: Button color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonColor</Color>
@@ -299,7 +299,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
</Text>
<!--<Reflection> If exists:-->
@@ -311,15 +311,15 @@
</ButtonRepeat>
<ButtonShowVideo>
<!--<Skin>: Texture name-->
<Skin>VideoIcon</Skin>
<Skin>VideoIconCO</Skin>
<!--<SkinSelected>: Texture name for selected button-->
<SkinSelected>VideoIcon</SkinSelected>
<SkinSelected>VideoIconCO</SkinSelected>
<!--<X>, <Y>, <Z>, <W>, <H>: Button position, width and height-->
<X>405</X>
<Y>0</Y>
<X>270</X>
<Y>2</Y>
<Z>0,00</Z>
<W>50</W>
<H>50</H>
<W>38</W>
<H>38</H>
<!--<Color>: Button color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonColor</Color>
@@ -348,7 +348,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
</Text>
<!--<Reflection> If exists:-->
@@ -364,11 +364,11 @@
<!--<SkinSelected>: Texture name for selected button-->
<SkinSelected>DuetIcon</SkinSelected>
<!--<X>, <Y>, <Z>, <W>, <H>: Button position, width and height-->
<X>555</X>
<Y>0</Y>
<X>360</X>
<Y>2</Y>
<Z>0,00</Z>
<W>50</W>
<H>50</H>
<W>38</W>
<H>38</H>
<!--<Color>: Button color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonColor</Color>
@@ -397,7 +397,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
</Text>
<!--<Reflection> If exists:-->
@@ -409,15 +409,15 @@
</ButtonSing>
<ButtonToBackgroundVideo>
<!--<Skin>: Texture name-->
<Skin>VideoIcon</Skin>
<Skin>VideoIconBG</Skin>
<!--<SkinSelected>: Texture name for selected button-->
<SkinSelected>VideoIcon</SkinSelected>
<SkinSelected>VideoIconBG</SkinSelected>
<!--<X>, <Y>, <Z>, <W>, <H>: Button position, width and height-->
<X>480</X>
<Y>0</Y>
<X>315</X>
<Y>2</Y>
<Z>0,00</Z>
<W>50</W>
<H>50</H>
<W>38</W>
<H>38</H>
<!--<Color>: Button color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonColor</Color>
@@ -446,7 +446,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
</Text>
<!--<Reflection> If exists:-->
@@ -68,7 +68,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENHIGHSCORE_HIGHSCORE</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -97,7 +97,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -126,7 +126,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -155,7 +155,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -184,7 +184,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -213,7 +213,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -242,7 +242,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -271,7 +271,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -300,7 +300,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -329,7 +329,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -358,7 +358,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -387,7 +387,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -416,7 +416,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -445,7 +445,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -474,7 +474,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -503,7 +503,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -532,7 +532,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -561,7 +561,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -590,7 +590,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -619,7 +619,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -648,7 +648,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -677,7 +677,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -706,7 +706,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -735,7 +735,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -764,7 +764,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -793,7 +793,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -822,7 +822,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -851,7 +851,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -880,7 +880,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -909,7 +909,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -938,7 +938,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -967,7 +967,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -996,7 +996,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1025,7 +1025,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1054,7 +1054,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1083,7 +1083,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1112,7 +1112,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1141,7 +1141,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1170,7 +1170,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1199,7 +1199,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1228,7 +1228,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1257,7 +1257,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1286,7 +1286,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
+3 -3
View File
@@ -52,7 +52,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_PROGRAM_NAME</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -81,7 +81,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENLOAD_LOADING</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -110,7 +110,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
+4 -4
View File
@@ -68,7 +68,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENMAIN_BUTTON_SING</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -125,7 +125,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENMAIN_BUTTON_OPTIONS</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -182,7 +182,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENMAIN_BUTTON_PROFILES</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -239,7 +239,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_BUTTON_EXIT</Text>
</Text>
<!--<Reflection> If exists:-->
+564 -12
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<ScreenNames>
<ScreenVersion>2</ScreenVersion>
<ScreenVersion>3</ScreenVersion>
<Background1>
<!--<Type>: Background type: None, Color, Texture, Video-->
<Type>Video</Type>
@@ -276,7 +276,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENNAMES_MENU</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -306,7 +306,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -336,7 +336,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -365,7 +365,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -394,7 +394,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -423,7 +423,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -452,7 +452,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -481,7 +481,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -510,7 +510,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -555,7 +555,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_BUTTON_BACK</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -612,7 +612,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_BUTTON_START</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -695,6 +695,396 @@
<!--<NumVisible>: Number of visible elements in the slide-->
<NumVisible>6</NumVisible>
</SelectSlidePlayerNumber>
<SelectSlideDuetPlayer1>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<SkinArrowLeft>: Texture name of left arrow-->
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
<!--<SkinArrowRight>: Texture name of right arrow-->
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
<!--<SkinSelected>: Texture name for selected SelectSlide-->
<SkinSelected>Button</SkinSelected>
<!--<SkinArrowLeftSelected>: Texture name of selected left arrow-->
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
<!--<SkinArrowRightSelected>: Texture name of selected right arrow-->
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
<!--<SkinHighlighted>: Texture name for highlighted SelectSlide-->
<SkinHighlighted>Button</SkinHighlighted>
<!--<X>, <Y>, <Z>, <W>, <H>: SelectSlide position, width and height-->
<X>41</X>
<Y>105</Y>
<Z>-4,00</Z>
<W>88</W>
<H>20</H>
<!--<ArrowLeftX>, <ArrowLeftY>, <ArrowLeftZ>, <ArrowLeftW>, <ArrowLeftH>: Left arrow position, width and height-->
<ArrowLeftX>20</ArrowLeftX>
<ArrowLeftY>105</ArrowLeftY>
<ArrowLeftZ>-4,01</ArrowLeftZ>
<ArrowLeftW>20</ArrowLeftW>
<ArrowLeftH>20</ArrowLeftH>
<!--<ArrowRightX>, <ArrowRightY>, <ArrowRightZ>, <ArrowRightW>, <ArrowRightH>: Right arrow position, width and height-->
<ArrowRightX>20</ArrowRightX>
<ArrowRightY>105</ArrowRightY>
<ArrowRightZ>-4,01</ArrowRightZ>
<ArrowRightW>20</ArrowRightW>
<ArrowRightH>20</ArrowRightH>
<!--<Color>: SelectSlide color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>SelectSlideColor</Color>
<!--<SColor>: Selected SelectSlide color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>SelectSlideSColor</SColor>
<!--<HColor>: Highlighted SelectSlide color from ColorScheme (high priority)-->
<!--or <HR>, <HG>, <HB>, <HA> (lower priority)-->
<HColor>SelectSlideHColor</HColor>
<!--<ArrowColor>: Arrow color from ColorScheme (high priority)-->
<!--or <ArrowR>, <ArrowG>, <ArrowB>, <ArrowA> (lower priority)-->
<ArrowColor>ArrowColor</ArrowColor>
<!--<ArrowSColor>: Selected arrow color from ColorScheme (high priority)-->
<!--or <ArrowSR>, <ArrowSG>, <ArrowSB>, <ArrowSA> (lower priority)-->
<ArrowSColor>ArrowSColor</ArrowSColor>
<!--<TextColor>: Text color from ColorScheme (high priority)-->
<!--or <TextR>, <TextG>, <TextB>, <TextA> (lower priority)-->
<TextColor>TextColor</TextColor>
<!--<TextSColor>: Selected text color from ColorScheme (high priority)-->
<!--or <TextSR>, <TextSG>, <TextSB>, <TextSA> (lower priority)-->
<TextSColor>TextSColor</TextSColor>
<!--<TextH>: Text height-->
<TextH>20,00</TextH>
<!--<TextMaxW>: Maximum text width (if exists)-->
<TextMaxW>86,00</TextMaxW>
<!--<TextFont>: Text font name-->
<TextFont>Outline</TextFont>
<!--<TextStyle>: Text style: Normal, Italic, Bold, BoldItalic-->
<TextStyle>Bold</TextStyle>
<!--<NumVisible>: Number of visible elements in the slide-->
<NumVisible>1</NumVisible>
</SelectSlideDuetPlayer1>
<SelectSlideDuetPlayer2>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<SkinArrowLeft>: Texture name of left arrow-->
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
<!--<SkinArrowRight>: Texture name of right arrow-->
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
<!--<SkinSelected>: Texture name for selected SelectSlide-->
<SkinSelected>Button</SkinSelected>
<!--<SkinArrowLeftSelected>: Texture name of selected left arrow-->
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
<!--<SkinArrowRightSelected>: Texture name of selected right arrow-->
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
<!--<SkinHighlighted>: Texture name for highlighted SelectSlide-->
<SkinHighlighted>Button</SkinHighlighted>
<!--<X>, <Y>, <Z>, <W>, <H>: SelectSlide position, width and height-->
<X>41</X>
<Y>260</Y>
<Z>-4,00</Z>
<W>88</W>
<H>20</H>
<!--<ArrowLeftX>, <ArrowLeftY>, <ArrowLeftZ>, <ArrowLeftW>, <ArrowLeftH>: Left arrow position, width and height-->
<ArrowLeftX>20</ArrowLeftX>
<ArrowLeftY>260</ArrowLeftY>
<ArrowLeftZ>-4,01</ArrowLeftZ>
<ArrowLeftW>20</ArrowLeftW>
<ArrowLeftH>20</ArrowLeftH>
<!--<ArrowRightX>, <ArrowRightY>, <ArrowRightZ>, <ArrowRightW>, <ArrowRightH>: Right arrow position, width and height-->
<ArrowRightX>20</ArrowRightX>
<ArrowRightY>260</ArrowRightY>
<ArrowRightZ>-4,01</ArrowRightZ>
<ArrowRightW>20</ArrowRightW>
<ArrowRightH>20</ArrowRightH>
<!--<Color>: SelectSlide color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>SelectSlideColor</Color>
<!--<SColor>: Selected SelectSlide color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>SelectSlideSColor</SColor>
<!--<HColor>: Highlighted SelectSlide color from ColorScheme (high priority)-->
<!--or <HR>, <HG>, <HB>, <HA> (lower priority)-->
<HColor>SelectSlideHColor</HColor>
<!--<ArrowColor>: Arrow color from ColorScheme (high priority)-->
<!--or <ArrowR>, <ArrowG>, <ArrowB>, <ArrowA> (lower priority)-->
<ArrowColor>ArrowColor</ArrowColor>
<!--<ArrowSColor>: Selected arrow color from ColorScheme (high priority)-->
<!--or <ArrowSR>, <ArrowSG>, <ArrowSB>, <ArrowSA> (lower priority)-->
<ArrowSColor>ArrowSColor</ArrowSColor>
<!--<TextColor>: Text color from ColorScheme (high priority)-->
<!--or <TextR>, <TextG>, <TextB>, <TextA> (lower priority)-->
<TextColor>TextColor</TextColor>
<!--<TextSColor>: Selected text color from ColorScheme (high priority)-->
<!--or <TextSR>, <TextSG>, <TextSB>, <TextSA> (lower priority)-->
<TextSColor>TextSColor</TextSColor>
<!--<TextH>: Text height-->
<TextH>20,00</TextH>
<!--<TextMaxW>: Maximum text width (if exists)-->
<TextMaxW>86,00</TextMaxW>
<!--<TextFont>: Text font name-->
<TextFont>Outline</TextFont>
<!--<TextStyle>: Text style: Normal, Italic, Bold, BoldItalic-->
<TextStyle>Bold</TextStyle>
<!--<NumVisible>: Number of visible elements in the slide-->
<NumVisible>1</NumVisible>
</SelectSlideDuetPlayer2>
<SelectSlideDuetPlayer3>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<SkinArrowLeft>: Texture name of left arrow-->
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
<!--<SkinArrowRight>: Texture name of right arrow-->
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
<!--<SkinSelected>: Texture name for selected SelectSlide-->
<SkinSelected>Button</SkinSelected>
<!--<SkinArrowLeftSelected>: Texture name of selected left arrow-->
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
<!--<SkinArrowRightSelected>: Texture name of selected right arrow-->
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
<!--<SkinHighlighted>: Texture name for highlighted SelectSlide-->
<SkinHighlighted>Button</SkinHighlighted>
<!--<X>, <Y>, <Z>, <W>, <H>: SelectSlide position, width and height-->
<X>41</X>
<Y>415</Y>
<Z>-4,00</Z>
<W>88</W>
<H>20</H>
<!--<ArrowLeftX>, <ArrowLeftY>, <ArrowLeftZ>, <ArrowLeftW>, <ArrowLeftH>: Left arrow position, width and height-->
<ArrowLeftX>20</ArrowLeftX>
<ArrowLeftY>415</ArrowLeftY>
<ArrowLeftZ>-4,01</ArrowLeftZ>
<ArrowLeftW>20</ArrowLeftW>
<ArrowLeftH>20</ArrowLeftH>
<!--<ArrowRightX>, <ArrowRightY>, <ArrowRightZ>, <ArrowRightW>, <ArrowRightH>: Right arrow position, width and height-->
<ArrowRightX>20</ArrowRightX>
<ArrowRightY>415</ArrowRightY>
<ArrowRightZ>-4,01</ArrowRightZ>
<ArrowRightW>20</ArrowRightW>
<ArrowRightH>20</ArrowRightH>
<!--<Color>: SelectSlide color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>SelectSlideColor</Color>
<!--<SColor>: Selected SelectSlide color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>SelectSlideSColor</SColor>
<!--<HColor>: Highlighted SelectSlide color from ColorScheme (high priority)-->
<!--or <HR>, <HG>, <HB>, <HA> (lower priority)-->
<HColor>SelectSlideHColor</HColor>
<!--<ArrowColor>: Arrow color from ColorScheme (high priority)-->
<!--or <ArrowR>, <ArrowG>, <ArrowB>, <ArrowA> (lower priority)-->
<ArrowColor>ArrowColor</ArrowColor>
<!--<ArrowSColor>: Selected arrow color from ColorScheme (high priority)-->
<!--or <ArrowSR>, <ArrowSG>, <ArrowSB>, <ArrowSA> (lower priority)-->
<ArrowSColor>ArrowSColor</ArrowSColor>
<!--<TextColor>: Text color from ColorScheme (high priority)-->
<!--or <TextR>, <TextG>, <TextB>, <TextA> (lower priority)-->
<TextColor>TextColor</TextColor>
<!--<TextSColor>: Selected text color from ColorScheme (high priority)-->
<!--or <TextSR>, <TextSG>, <TextSB>, <TextSA> (lower priority)-->
<TextSColor>TextSColor</TextSColor>
<!--<TextH>: Text height-->
<TextH>20,00</TextH>
<!--<TextMaxW>: Maximum text width (if exists)-->
<TextMaxW>86,00</TextMaxW>
<!--<TextFont>: Text font name-->
<TextFont>Outline</TextFont>
<!--<TextStyle>: Text style: Normal, Italic, Bold, BoldItalic-->
<TextStyle>Bold</TextStyle>
<!--<NumVisible>: Number of visible elements in the slide-->
<NumVisible>1</NumVisible>
</SelectSlideDuetPlayer3>
<SelectSlideDuetPlayer4>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<SkinArrowLeft>: Texture name of left arrow-->
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
<!--<SkinArrowRight>: Texture name of right arrow-->
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
<!--<SkinSelected>: Texture name for selected SelectSlide-->
<SkinSelected>Button</SkinSelected>
<!--<SkinArrowLeftSelected>: Texture name of selected left arrow-->
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
<!--<SkinArrowRightSelected>: Texture name of selected right arrow-->
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
<!--<SkinHighlighted>: Texture name for highlighted SelectSlide-->
<SkinHighlighted>Button</SkinHighlighted>
<!--<X>, <Y>, <Z>, <W>, <H>: SelectSlide position, width and height-->
<X>1152</X>
<Y>105</Y>
<Z>-4,00</Z>
<W>88</W>
<H>20</H>
<!--<ArrowLeftX>, <ArrowLeftY>, <ArrowLeftZ>, <ArrowLeftW>, <ArrowLeftH>: Left arrow position, width and height-->
<ArrowLeftX>1240</ArrowLeftX>
<ArrowLeftY>105</ArrowLeftY>
<ArrowLeftZ>-4,01</ArrowLeftZ>
<ArrowLeftW>20</ArrowLeftW>
<ArrowLeftH>20</ArrowLeftH>
<!--<ArrowRightX>, <ArrowRightY>, <ArrowRightZ>, <ArrowRightW>, <ArrowRightH>: Right arrow position, width and height-->
<ArrowRightX>1240</ArrowRightX>
<ArrowRightY>105</ArrowRightY>
<ArrowRightZ>-4,01</ArrowRightZ>
<ArrowRightW>20</ArrowRightW>
<ArrowRightH>20</ArrowRightH>
<!--<Color>: SelectSlide color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>SelectSlideColor</Color>
<!--<SColor>: Selected SelectSlide color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>SelectSlideSColor</SColor>
<!--<HColor>: Highlighted SelectSlide color from ColorScheme (high priority)-->
<!--or <HR>, <HG>, <HB>, <HA> (lower priority)-->
<HColor>SelectSlideHColor</HColor>
<!--<ArrowColor>: Arrow color from ColorScheme (high priority)-->
<!--or <ArrowR>, <ArrowG>, <ArrowB>, <ArrowA> (lower priority)-->
<ArrowColor>ArrowColor</ArrowColor>
<!--<ArrowSColor>: Selected arrow color from ColorScheme (high priority)-->
<!--or <ArrowSR>, <ArrowSG>, <ArrowSB>, <ArrowSA> (lower priority)-->
<ArrowSColor>ArrowSColor</ArrowSColor>
<!--<TextColor>: Text color from ColorScheme (high priority)-->
<!--or <TextR>, <TextG>, <TextB>, <TextA> (lower priority)-->
<TextColor>TextColor</TextColor>
<!--<TextSColor>: Selected text color from ColorScheme (high priority)-->
<!--or <TextSR>, <TextSG>, <TextSB>, <TextSA> (lower priority)-->
<TextSColor>TextSColor</TextSColor>
<!--<TextH>: Text height-->
<TextH>20,00</TextH>
<!--<TextMaxW>: Maximum text width (if exists)-->
<TextMaxW>86,00</TextMaxW>
<!--<TextFont>: Text font name-->
<TextFont>Outline</TextFont>
<!--<TextStyle>: Text style: Normal, Italic, Bold, BoldItalic-->
<TextStyle>Bold</TextStyle>
<!--<NumVisible>: Number of visible elements in the slide-->
<NumVisible>1</NumVisible>
</SelectSlideDuetPlayer4>
<SelectSlideDuetPlayer5>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<SkinArrowLeft>: Texture name of left arrow-->
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
<!--<SkinArrowRight>: Texture name of right arrow-->
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
<!--<SkinSelected>: Texture name for selected SelectSlide-->
<SkinSelected>Button</SkinSelected>
<!--<SkinArrowLeftSelected>: Texture name of selected left arrow-->
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
<!--<SkinArrowRightSelected>: Texture name of selected right arrow-->
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
<!--<SkinHighlighted>: Texture name for highlighted SelectSlide-->
<SkinHighlighted>Button</SkinHighlighted>
<!--<X>, <Y>, <Z>, <W>, <H>: SelectSlide position, width and height-->
<X>1152</X>
<Y>260</Y>
<Z>-4,00</Z>
<W>88</W>
<H>20</H>
<!--<ArrowLeftX>, <ArrowLeftY>, <ArrowLeftZ>, <ArrowLeftW>, <ArrowLeftH>: Left arrow position, width and height-->
<ArrowLeftX>1240</ArrowLeftX>
<ArrowLeftY>260</ArrowLeftY>
<ArrowLeftZ>-4,01</ArrowLeftZ>
<ArrowLeftW>20</ArrowLeftW>
<ArrowLeftH>20</ArrowLeftH>
<!--<ArrowRightX>, <ArrowRightY>, <ArrowRightZ>, <ArrowRightW>, <ArrowRightH>: Right arrow position, width and height-->
<ArrowRightX>1240</ArrowRightX>
<ArrowRightY>260</ArrowRightY>
<ArrowRightZ>-4,01</ArrowRightZ>
<ArrowRightW>20</ArrowRightW>
<ArrowRightH>20</ArrowRightH>
<!--<Color>: SelectSlide color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>SelectSlideColor</Color>
<!--<SColor>: Selected SelectSlide color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>SelectSlideSColor</SColor>
<!--<HColor>: Highlighted SelectSlide color from ColorScheme (high priority)-->
<!--or <HR>, <HG>, <HB>, <HA> (lower priority)-->
<HColor>SelectSlideHColor</HColor>
<!--<ArrowColor>: Arrow color from ColorScheme (high priority)-->
<!--or <ArrowR>, <ArrowG>, <ArrowB>, <ArrowA> (lower priority)-->
<ArrowColor>ArrowColor</ArrowColor>
<!--<ArrowSColor>: Selected arrow color from ColorScheme (high priority)-->
<!--or <ArrowSR>, <ArrowSG>, <ArrowSB>, <ArrowSA> (lower priority)-->
<ArrowSColor>ArrowSColor</ArrowSColor>
<!--<TextColor>: Text color from ColorScheme (high priority)-->
<!--or <TextR>, <TextG>, <TextB>, <TextA> (lower priority)-->
<TextColor>TextColor</TextColor>
<!--<TextSColor>: Selected text color from ColorScheme (high priority)-->
<!--or <TextSR>, <TextSG>, <TextSB>, <TextSA> (lower priority)-->
<TextSColor>TextSColor</TextSColor>
<!--<TextH>: Text height-->
<TextH>20,00</TextH>
<!--<TextMaxW>: Maximum text width (if exists)-->
<TextMaxW>86,00</TextMaxW>
<!--<TextFont>: Text font name-->
<TextFont>Outline</TextFont>
<!--<TextStyle>: Text style: Normal, Italic, Bold, BoldItalic-->
<TextStyle>Bold</TextStyle>
<!--<NumVisible>: Number of visible elements in the slide-->
<NumVisible>1</NumVisible>
</SelectSlideDuetPlayer5>
<SelectSlideDuetPlayer6>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<SkinArrowLeft>: Texture name of left arrow-->
<SkinArrowLeft>SelectSlideArrowLeft</SkinArrowLeft>
<!--<SkinArrowRight>: Texture name of right arrow-->
<SkinArrowRight>SelectSlideArrowRight</SkinArrowRight>
<!--<SkinSelected>: Texture name for selected SelectSlide-->
<SkinSelected>Button</SkinSelected>
<!--<SkinArrowLeftSelected>: Texture name of selected left arrow-->
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
<!--<SkinArrowRightSelected>: Texture name of selected right arrow-->
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
<!--<SkinHighlighted>: Texture name for highlighted SelectSlide-->
<SkinHighlighted>Button</SkinHighlighted>
<!--<X>, <Y>, <Z>, <W>, <H>: SelectSlide position, width and height-->
<X>1152</X>
<Y>415</Y>
<Z>-4,00</Z>
<W>88</W>
<H>20</H>
<!--<ArrowLeftX>, <ArrowLeftY>, <ArrowLeftZ>, <ArrowLeftW>, <ArrowLeftH>: Left arrow position, width and height-->
<ArrowLeftX>1240</ArrowLeftX>
<ArrowLeftY>415</ArrowLeftY>
<ArrowLeftZ>-4,01</ArrowLeftZ>
<ArrowLeftW>20</ArrowLeftW>
<ArrowLeftH>20</ArrowLeftH>
<!--<ArrowRightX>, <ArrowRightY>, <ArrowRightZ>, <ArrowRightW>, <ArrowRightH>: Right arrow position, width and height-->
<ArrowRightX>1240</ArrowRightX>
<ArrowRightY>415</ArrowRightY>
<ArrowRightZ>-4,01</ArrowRightZ>
<ArrowRightW>20</ArrowRightW>
<ArrowRightH>20</ArrowRightH>
<!--<Color>: SelectSlide color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>SelectSlideColor</Color>
<!--<SColor>: Selected SelectSlide color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>SelectSlideSColor</SColor>
<!--<HColor>: Highlighted SelectSlide color from ColorScheme (high priority)-->
<!--or <HR>, <HG>, <HB>, <HA> (lower priority)-->
<HColor>SelectSlideHColor</HColor>
<!--<ArrowColor>: Arrow color from ColorScheme (high priority)-->
<!--or <ArrowR>, <ArrowG>, <ArrowB>, <ArrowA> (lower priority)-->
<ArrowColor>ArrowColor</ArrowColor>
<!--<ArrowSColor>: Selected arrow color from ColorScheme (high priority)-->
<!--or <ArrowSR>, <ArrowSG>, <ArrowSB>, <ArrowSA> (lower priority)-->
<ArrowSColor>ArrowSColor</ArrowSColor>
<!--<TextColor>: Text color from ColorScheme (high priority)-->
<!--or <TextR>, <TextG>, <TextB>, <TextA> (lower priority)-->
<TextColor>TextColor</TextColor>
<!--<TextSColor>: Selected text color from ColorScheme (high priority)-->
<!--or <TextSR>, <TextSG>, <TextSB>, <TextSA> (lower priority)-->
<TextSColor>TextSColor</TextSColor>
<!--<TextH>: Text height-->
<TextH>20,00</TextH>
<!--<TextMaxW>: Maximum text width (if exists)-->
<TextMaxW>86,00</TextMaxW>
<!--<TextFont>: Text font name-->
<TextFont>Outline</TextFont>
<!--<TextStyle>: Text style: Normal, Italic, Bold, BoldItalic-->
<TextStyle>Bold</TextStyle>
<!--<NumVisible>: Number of visible elements in the slide-->
<NumVisible>1</NumVisible>
</SelectSlideDuetPlayer6>
<NameSelection>
<!--<X>, <Y>, <Z>, <W>, <H>: NameSelection position, width and height-->
<X>172</X>
@@ -738,5 +1128,167 @@
</Name>
</Tiles>
</NameSelection>
<EqualizerPlayer1>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<X>, <Y>, <Z>, <W>, <H>: Equalizer position, width and height-->
<X>21</X>
<Y>152</Y>
<Z>-4,00</Z>
<W>108</W>
<H>60</H>
<!--<NumBars>: Number of equalizer-elements.-->
<NumBars>8</NumBars>
<!--<Space>: Space between equalizer-elements.-->
<Space>2,00</Space>
<!--<Style>: Style of equalizer-elements: Collums-->
<Style>Collums</Style>
<!--<DrawNegative>: Draw negative values: TR_CONFIG_OFF, TR_CONFIG_ON-->
<DrawNegative>TR_CONFIG_OFF</DrawNegative>
<!--<Color>: Equalizer color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>Player1Dim2</Color>
<!--<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)-->
<!--or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)-->
<MaxColor>Player1Dim2</MaxColor>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</EqualizerPlayer1>
<EqualizerPlayer2>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<X>, <Y>, <Z>, <W>, <H>: Equalizer position, width and height-->
<X>21</X>
<Y>307</Y>
<Z>-4,00</Z>
<W>108</W>
<H>60</H>
<!--<NumBars>: Number of equalizer-elements.-->
<NumBars>8</NumBars>
<!--<Space>: Space between equalizer-elements.-->
<Space>2,00</Space>
<!--<Style>: Style of equalizer-elements: Collums-->
<Style>Collums</Style>
<!--<DrawNegative>: Draw negative values: TR_CONFIG_OFF, TR_CONFIG_ON-->
<DrawNegative>TR_CONFIG_OFF</DrawNegative>
<!--<Color>: Equalizer color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>Player2Dim2</Color>
<!--<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)-->
<!--or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)-->
<MaxColor>Player2Dim2</MaxColor>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</EqualizerPlayer2>
<EqualizerPlayer3>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<X>, <Y>, <Z>, <W>, <H>: Equalizer position, width and height-->
<X>21</X>
<Y>467</Y>
<Z>-4,00</Z>
<W>108</W>
<H>60</H>
<!--<NumBars>: Number of equalizer-elements.-->
<NumBars>8</NumBars>
<!--<Space>: Space between equalizer-elements.-->
<Space>2,00</Space>
<!--<Style>: Style of equalizer-elements: Collums-->
<Style>Collums</Style>
<!--<DrawNegative>: Draw negative values: TR_CONFIG_OFF, TR_CONFIG_ON-->
<DrawNegative>TR_CONFIG_OFF</DrawNegative>
<!--<Color>: Equalizer color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>Player3Dim2</Color>
<!--<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)-->
<!--or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)-->
<MaxColor>Player3Dim2</MaxColor>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</EqualizerPlayer3>
<EqualizerPlayer4>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<X>, <Y>, <Z>, <W>, <H>: Equalizer position, width and height-->
<X>1153</X>
<Y>152</Y>
<Z>-4,00</Z>
<W>108</W>
<H>60</H>
<!--<NumBars>: Number of equalizer-elements.-->
<NumBars>8</NumBars>
<!--<Space>: Space between equalizer-elements.-->
<Space>2,00</Space>
<!--<Style>: Style of equalizer-elements: Collums-->
<Style>Collums</Style>
<!--<DrawNegative>: Draw negative values: TR_CONFIG_OFF, TR_CONFIG_ON-->
<DrawNegative>TR_CONFIG_OFF</DrawNegative>
<!--<Color>: Equalizer color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>Player4Dim2</Color>
<!--<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)-->
<!--or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)-->
<MaxColor>Player4Dim2</MaxColor>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</EqualizerPlayer4>
<EqualizerPlayer5>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<X>, <Y>, <Z>, <W>, <H>: Equalizer position, width and height-->
<X>1153</X>
<Y>307</Y>
<Z>-4,00</Z>
<W>108</W>
<H>60</H>
<!--<NumBars>: Number of equalizer-elements.-->
<NumBars>8</NumBars>
<!--<Space>: Space between equalizer-elements.-->
<Space>2,00</Space>
<!--<Style>: Style of equalizer-elements: Collums-->
<Style>Collums</Style>
<!--<DrawNegative>: Draw negative values: TR_CONFIG_OFF, TR_CONFIG_ON-->
<DrawNegative>TR_CONFIG_OFF</DrawNegative>
<!--<Color>: Equalizer color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>Player5Dim2</Color>
<!--<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)-->
<!--or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)-->
<MaxColor>Player5Dim2</MaxColor>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</EqualizerPlayer5>
<EqualizerPlayer6>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<X>, <Y>, <Z>, <W>, <H>: Equalizer position, width and height-->
<X>1153</X>
<Y>467</Y>
<Z>-4,00</Z>
<W>108</W>
<H>60</H>
<!--<NumBars>: Number of equalizer-elements.-->
<NumBars>8</NumBars>
<!--<Space>: Space between equalizer-elements.-->
<Space>2,00</Space>
<!--<Style>: Style of equalizer-elements: Collums-->
<Style>Collums</Style>
<!--<DrawNegative>: Draw negative values: TR_CONFIG_OFF, TR_CONFIG_ON-->
<DrawNegative>TR_CONFIG_OFF</DrawNegative>
<!--<Color>: Equalizer color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>Player6Dim2</Color>
<!--<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)-->
<!--or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)-->
<MaxColor>Player6Dim2</MaxColor>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</EqualizerPlayer6>
</ScreenNames>
</root>
@@ -52,7 +52,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENO_OPTIONS</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -97,7 +97,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENO_BUTTON_GAME</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -154,7 +154,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCRENNO_BUTTON_SOUND</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -211,7 +211,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENO_BUTTON_RECORD</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -268,7 +268,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENO_BUTTON_VIDEO</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -325,7 +325,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENO_BUTTON_LYRICS</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -382,7 +382,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENO_BUTTON_THEME</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -148,7 +148,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOGAME_OPTIONS</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -177,7 +177,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOGAME_LANGUAGE</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -206,7 +206,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOGAME_DEBUGLEVEL</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -235,7 +235,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOGAME_SONGMENU</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -264,7 +264,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOGAME_SONGSORTING</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -293,7 +293,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOGAME_TABS</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -322,7 +322,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOGAME_TIMERMODE</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -367,7 +367,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_BUTTON_BACK</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -52,7 +52,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOLYRICS_OPTIONS</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -81,7 +81,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOLYRICS_STYLE</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -110,7 +110,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOLYRICS_ONTOP</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -155,7 +155,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_BUTTON_BACK</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<ScreenOptionsRecord>
<ScreenVersion>1</ScreenVersion>
<ScreenVersion>2</ScreenVersion>
<Background1>
<!--<Type>: Background type: None, Color, Texture, Video-->
<Type>Video</Type>
@@ -180,7 +180,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENORECORD_OPTIONS</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -209,7 +209,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENORECORD_DEVICE</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -238,7 +238,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENORECORD_INPUT</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -267,7 +267,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENORECORD_CHANNEL_1</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -296,7 +296,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENORECORD_CHANNEL_2</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -325,7 +325,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENORECORD_MIC_DELAY</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -355,7 +355,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENORECORD_MIC_WARNING</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -384,7 +384,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -413,7 +413,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -458,7 +458,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_BUTTON_BACK</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -515,7 +515,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENORECORD_BUTTON_DELAYTEST</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -858,5 +858,67 @@
<!--<NumVisible>: Number of visible elements in the slide-->
<NumVisible>5</NumVisible>
</SelectSlideDelay>
<EqualizerChannel1>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<X>, <Y>, <Z>, <W>, <H>: Equalizer position, width and height-->
<X>50</X>
<Y>400</Y>
<Z>-1,00</Z>
<W>230</W>
<H>150</H>
<!--<NumBars>: Number of equalizer-elements.-->
<NumBars>10</NumBars>
<!--<Space>: Space between equalizer-elements.-->
<Space>2,00</Space>
<!--<Style>: Style of equalizer-elements: Collums-->
<Style>Collums</Style>
<!--<DrawNegative>: Draw negative values: TR_CONFIG_OFF, TR_CONFIG_ON-->
<DrawNegative>TR_CONFIG_OFF</DrawNegative>
<!--<Color>: Equalizer color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonColor</Color>
<!--<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)-->
<!--or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)-->
<MaxColor>ButtonColor</MaxColor>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
<Reflection>
<Space>10</Space>
<Height>26</Height>
</Reflection>
</EqualizerChannel1>
<EqualizerChannel2>
<!--<Skin>: Texture name-->
<Skin>Invisible</Skin>
<!--<X>, <Y>, <Z>, <W>, <H>: Equalizer position, width and height-->
<X>400</X>
<Y>400</Y>
<Z>-1,00</Z>
<W>230</W>
<H>150</H>
<!--<NumBars>: Number of equalizer-elements.-->
<NumBars>10</NumBars>
<!--<Space>: Space between equalizer-elements.-->
<Space>2,00</Space>
<!--<Style>: Style of equalizer-elements: Collums-->
<Style>Collums</Style>
<!--<DrawNegative>: Draw negative values: TR_CONFIG_OFF, TR_CONFIG_ON-->
<DrawNegative>TR_CONFIG_OFF</DrawNegative>
<!--<Color>: Equalizer color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonColor</Color>
<!--<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)-->
<!--or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)-->
<MaxColor>ButtonColor</MaxColor>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
<Reflection>
<Space>10</Space>
<Height>26</Height>
</Reflection>
</EqualizerChannel2>
</ScreenOptionsRecord>
</root>
@@ -52,7 +52,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOSOUND_OPTIONS</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -81,7 +81,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOSOUND_BACKGROUNDMUSIC</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -110,7 +110,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOSOUND_BACKGROUNDMUSICVOLUME</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -139,7 +139,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOSOUND_BACKGROUNDMUSICSOURCE</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -184,7 +184,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_BUTTON_BACK</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -180,7 +180,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOTHEME_OPTIONS</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -209,7 +209,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOTHEME_THEME</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -238,7 +238,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOTHEME_SKIN</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -267,7 +267,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOTHEME_COVERTHEME</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -296,7 +296,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOTHEME_NOTELINES</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -325,7 +325,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOTHEME_TONEHELPER</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -354,7 +354,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOTHEME_TIMERLOOK</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -383,7 +383,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOTHEME_FADEINFO</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -412,7 +412,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOTHEME_COVERLOADING</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -457,7 +457,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_BUTTON_BACK</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -100,7 +100,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOVIDEO_OPTIONS</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -129,7 +129,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOVIDEO_VIDEOBACKGROUNDS</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -158,7 +158,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOVIDEO_VIDEOPREVIEW</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -187,7 +187,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENOVIDEO_VIDEOINSONGS</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -216,7 +216,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENO_VIDEO_VIDEOSTOBACKGROUND</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -319,7 +319,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_BUTTON_BACK</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -148,7 +148,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENPROFILES_PROFILES</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -177,7 +177,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENPROFILES_PLAYERNAME</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -206,7 +206,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENPROFILES_GAMEDIFFICULTY</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -235,7 +235,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENPROFILES_AVATAR</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -264,7 +264,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENPROFILES_GUESTPROFILE</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -293,7 +293,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENPROFILES_ACTIVE</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -338,7 +338,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
</Text>
<!--<Reflection> If exists:-->
@@ -387,7 +387,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_BUTTON_BACK</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -444,7 +444,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_BUTTON_SAVE</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -501,7 +501,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENPROFILES_BUTTON_NEW</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -558,7 +558,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENPROFILES_BUTTON_DELETE</Text>
</Text>
<!--<Reflection> If exists:-->
+86 -86
View File
@@ -1226,7 +1226,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENSCORE_SCORES</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1255,7 +1255,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1284,7 +1284,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1313,7 +1313,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1342,7 +1342,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1371,7 +1371,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1400,7 +1400,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1429,7 +1429,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1458,7 +1458,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1487,7 +1487,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1516,7 +1516,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1545,7 +1545,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1574,7 +1574,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1603,7 +1603,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1632,7 +1632,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1661,7 +1661,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1690,7 +1690,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1719,7 +1719,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1748,7 +1748,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1777,7 +1777,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1806,7 +1806,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1835,7 +1835,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1864,7 +1864,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1893,7 +1893,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1922,7 +1922,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1951,7 +1951,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1980,7 +1980,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2009,7 +2009,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2039,7 +2039,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2068,7 +2068,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2097,7 +2097,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2126,7 +2126,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2156,7 +2156,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2185,7 +2185,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2214,7 +2214,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2243,7 +2243,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2273,7 +2273,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2302,7 +2302,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2331,7 +2331,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2360,7 +2360,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2390,7 +2390,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2419,7 +2419,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2449,7 +2449,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2479,7 +2479,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2509,7 +2509,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2539,7 +2539,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2569,7 +2569,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2599,7 +2599,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2629,7 +2629,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2659,7 +2659,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2689,7 +2689,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2719,7 +2719,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2749,7 +2749,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2779,7 +2779,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2809,7 +2809,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2839,7 +2839,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2869,7 +2869,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2899,7 +2899,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2929,7 +2929,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2959,7 +2959,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2989,7 +2989,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3019,7 +3019,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3049,7 +3049,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3079,7 +3079,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3109,7 +3109,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3139,7 +3139,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3169,7 +3169,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3199,7 +3199,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3229,7 +3229,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3259,7 +3259,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3289,7 +3289,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3319,7 +3319,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3349,7 +3349,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3379,7 +3379,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3409,7 +3409,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3439,7 +3439,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3469,7 +3469,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3499,7 +3499,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3529,7 +3529,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3559,7 +3559,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3589,7 +3589,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3619,7 +3619,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3649,7 +3649,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3679,7 +3679,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3709,7 +3709,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -3739,7 +3739,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
+165 -50
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<ScreenSing>
<ScreenVersion>4</ScreenVersion>
<ScreenVersion>5</ScreenVersion>
<Background1>
<!--<Type>: Background type: None, Color, Texture, Video-->
<Type>None</Type>
@@ -982,7 +982,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1011,7 +1011,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1040,12 +1040,70 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENSING_PAUSE</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</TextPause>
<TextDuetName1>
<!--<X>, <Y>: Text position-->
<X>40</X>
<Y>80</Y>
<!--<Z>: Text position-->
<Z>-1,00</Z>
<!--<H>: Text height-->
<H>35</H>
<!--<MaxW>: Maximum text width (if exists)-->
<!--<Color>: Text color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>TextSColor</Color>
<!--<SColor>: Selected Text color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>TextSColor</SColor>
<!--<Align>: Text align horizontal: Left, Center, Right-->
<Align>Left</Align>
<!--<HAlign>: Text align vertical (on downsizing): Top, Center, Bottom-->
<HAlign>Center</HAlign>
<!--<Style>: Text style: Normal, Italic, Bold, BoldItalic-->
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</TextDuetName1>
<TextDuetName2>
<!--<X>, <Y>: Text position-->
<X>40</X>
<Y>585</Y>
<!--<Z>: Text position-->
<Z>-1,00</Z>
<!--<H>: Text height-->
<H>35</H>
<!--<MaxW>: Maximum text width (if exists)-->
<!--<Color>: Text color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>TextSColor</Color>
<!--<SColor>: Selected Text color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>TextSColor</SColor>
<!--<Align>: Text align horizontal: Left, Center, Right-->
<Align>Left</Align>
<!--<HAlign>: Text align vertical (on downsizing): Top, Center, Bottom-->
<HAlign>Center</HAlign>
<!--<Style>: Text style: Normal, Italic, Bold, BoldItalic-->
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
</TextDuetName2>
<TextScoreP1N1>
<!--<X>, <Y>: Text position-->
<X>1240</X>
@@ -1069,7 +1127,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1101,7 +1159,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1130,7 +1188,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1162,7 +1220,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1191,7 +1249,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1223,7 +1281,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1252,7 +1310,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1284,7 +1342,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1313,7 +1371,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1345,7 +1403,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1374,7 +1432,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1406,7 +1464,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1435,7 +1493,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1467,7 +1525,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1496,7 +1554,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1528,7 +1586,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1557,7 +1615,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1589,7 +1647,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1618,7 +1676,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1650,7 +1708,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1679,7 +1737,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1711,7 +1769,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1740,7 +1798,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1772,7 +1830,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1801,7 +1859,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1833,7 +1891,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1862,7 +1920,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1894,7 +1952,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1923,7 +1981,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1955,7 +2013,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -1984,7 +2042,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2016,7 +2074,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2045,7 +2103,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2077,7 +2135,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2106,7 +2164,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2138,7 +2196,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2167,7 +2225,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2199,7 +2257,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2228,7 +2286,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2260,7 +2318,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2289,7 +2347,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Normal</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2321,7 +2379,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text />
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
@@ -2333,7 +2391,7 @@
<!--<SkinSelected>: Texture name for selected button-->
<SkinSelected>Button</SkinSelected>
<!--<X>, <Y>, <Z>, <W>, <H>: Button position, width and height-->
<X>670</X>
<X>775</X>
<Y>300</Y>
<Z>-2,11</Z>
<W>150</W>
@@ -2366,7 +2424,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENSING_BUTTON_CANCEL</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -2390,7 +2448,7 @@
<!--<SkinSelected>: Texture name for selected button-->
<SkinSelected>Button</SkinSelected>
<!--<X>, <Y>, <Z>, <W>, <H>: Button position, width and height-->
<X>460</X>
<X>355</X>
<Y>300</Y>
<Z>-2,11</Z>
<W>150</W>
@@ -2423,7 +2481,7 @@
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Text or translation tag-->
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENSING_BUTTON_CONTINUE</Text>
</Text>
<!--<Reflection> If exists:-->
@@ -2441,6 +2499,63 @@
<Height>26</Height>
</SReflection>
</ButtonContinue>
<ButtonSkip>
<!--<Skin>: Texture name-->
<Skin>Button</Skin>
<!--<SkinSelected>: Texture name for selected button-->
<SkinSelected>Button</SkinSelected>
<!--<X>, <Y>, <Z>, <W>, <H>: Button position, width and height-->
<X>565</X>
<Y>300</Y>
<Z>-2,11</Z>
<W>150</W>
<H>50</H>
<!--<Color>: Button color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonColor</Color>
<!--<SColor>: Selected button color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>ButtonSColor</SColor>
<Text>
<!--<X>, <Y>: Text position-->
<X>75</X>
<Y>10</Y>
<!--<H>: Text height-->
<H>32</H>
<!--<MaxW>: Maximum text width (if exists)-->
<MaxW>142</MaxW>
<!--<Color>: Text color from ColorScheme (high priority)-->
<!--or <R>, <G>, <B>, <A> (lower priority)-->
<Color>ButtonTextColor</Color>
<!--<SColor>: Selected Text color from ColorScheme (high priority)-->
<!--or <SR>, <SG>, <SB>, <SA> (lower priority)-->
<SColor>ButtonTextSColor</SColor>
<!--<Align>: Text align horizontal: Left, Center, Right-->
<Align>Center</Align>
<!--<HAlign>: Text align vertical (on downsizing): Top, Center, Bottom-->
<HAlign>Center</HAlign>
<!--<Style>: Text style: Normal, Italic, Bold, BoldItalic-->
<Style>Bold</Style>
<!--<Font>: Text font name-->
<Font>Outline</Font>
<!--<Text>: Nothing or translation tag-->
<Text>TR_SCREENSING_BUTTON_SKIP</Text>
</Text>
<!--<Reflection> If exists:-->
<!-- <Space>: Reflection Space-->
<!-- <Height>: Reflection Height-->
<Reflection>
<Space>10</Space>
<Height>26</Height>
</Reflection>
<!--<SReflection> If exists:-->
<!-- <Space>: Reflection Space of selected button-->
<!-- <Height>: Reflection Height of selected button-->
<SReflection>
<Space>10</Space>
<Height>26</Height>
</SReflection>
</ButtonSkip>
<LyricMain>
<!--<X>, <Y>, <Z>, <W>, <H>: Lyric position, width and height-->
<X>637</X>
File diff suppressed because it is too large. Load diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

+21
View File
@@ -130,6 +130,12 @@
<B>0,969</B>
<A>1,000</A>
</StaticColor>
<StaticColorAlpha>
<R>0,675</R>
<G>0,890</G>
<B>0,969</B>
<A>0,500</A>
</StaticColorAlpha>
<StaticWarningColor>
<R>0,675</R>
<G>0,890</G>
@@ -166,6 +172,12 @@
<B>0,969</B>
<A>1,000</A>
</SelectSlideColor>
<SelectSlideColorAlpha>
<R>0,675</R>
<G>0,890</G>
<B>0,969</B>
<A>0,500</A>
</SelectSlideColorAlpha>
<SelectSlideHColor>
<R>0,675</R>
<G>0,890</G>
@@ -305,6 +317,10 @@
<EnergyBeam>EnergyBeam.png</EnergyBeam>
<DuetIcon>DuetIcon.png</DuetIcon>
<VideoIcon>VideoIcon.png</VideoIcon>
<VideoIconCO>VideoIconCO.png</VideoIconCO>
<VideoIconBG>VideoIconBG.png</VideoIconBG>
<MedleyCalcIcon>MedleyCalcIcon.png</MedleyCalcIcon>
<MedleyTagIcon>MedleyTagIcon.png</MedleyTagIcon>
<Invisible>Invisible.png</Invisible>
<PlayerSelector>PlayerSelector.png</PlayerSelector>
<PreviousIcon>PreviousIcon.png</PreviousIcon>
@@ -312,6 +328,11 @@
<PlayIcon>PlayIcon.png</PlayIcon>
<PauseIcon>PauseIcon.png</PauseIcon>
<RepeatIcon>RepeatIcon.png</RepeatIcon>
<SongMenuBG>SongMenuBG.png</SongMenuBG>
<CloseIcon>Close.png</CloseIcon>
<DeleteIcon>Delete.png</DeleteIcon>
<SaveIcon>Save.png</SaveIcon>
<SingIcon>Sing.png</SingIcon>
</Skins>
<Videos>
<BG_Video>[Blue]BG_Video.mp4</BG_Video>
+15
View File
@@ -130,6 +130,12 @@
<B>0,674</B>
<A>1,000</A>
</StaticColor>
<StaticColorAlpha>
<R>0,709</R>
<G>0,968</G>
<B>0,674</B>
<A>0,500</A>
</StaticColorAlpha>
<StaticWarningColor>
<R>0,709</R>
<G>0,968</G>
@@ -305,6 +311,10 @@
<EnergyBeam>EnergyBeam.png</EnergyBeam>
<DuetIcon>DuetIcon.png</DuetIcon>
<VideoIcon>VideoIcon.png</VideoIcon>
<VideoIconCO>VideoIconCO.png</VideoIconCO>
<VideoIconBG>VideoIconBG.png</VideoIconBG>
<MedleyCalcIcon>MedleyCalcIcon.png</MedleyCalcIcon>
<MedleyTagIcon>MedleyTagIcon.png</MedleyTagIcon>
<Invisible>Invisible.png</Invisible>
<PlayerSelector>PlayerSelector.png</PlayerSelector>
<PreviousIcon>PreviousIcon.png</PreviousIcon>
@@ -312,6 +322,11 @@
<PlayIcon>PlayIcon.png</PlayIcon>
<PauseIcon>PauseIcon.png</PauseIcon>
<RepeatIcon>RepeatIcon.png</RepeatIcon>
<SongMenuBG>SongMenuBG.png</SongMenuBG>
<CloseIcon>Close.png</CloseIcon>
<DeleteIcon>Delete.png</DeleteIcon>
<SaveIcon>Save.png</SaveIcon>
<SingIcon>Sing.png</SingIcon>
</Skins>
<Videos>
<BG_Video>[Green]BG_Video.mp4</BG_Video>
+15
View File
@@ -130,6 +130,12 @@
<B>0,674</B>
<A>1,000</A>
</StaticColor>
<StaticColorAlpha>
<R>0,968</R>
<G>0,674</G>
<B>0,674</B>
<A>0,500</A>
</StaticColorAlpha>
<StaticWarningColor>
<R>0,968</R>
<G>0,674</G>
@@ -305,6 +311,10 @@
<EnergyBeam>EnergyBeam.png</EnergyBeam>
<DuetIcon>DuetIcon.png</DuetIcon>
<VideoIcon>VideoIcon.png</VideoIcon>
<VideoIconCO>VideoIconCO.png</VideoIconCO>
<VideoIconBG>VideoIconBG.png</VideoIconBG>
<MedleyCalcIcon>MedleyCalcIcon.png</MedleyCalcIcon>
<MedleyTagIcon>MedleyTagIcon.png</MedleyTagIcon>
<Invisible>Invisible.png</Invisible>
<PlayerSelector>PlayerSelector.png</PlayerSelector>
<PreviousIcon>PreviousIcon.png</PreviousIcon>
@@ -312,6 +322,11 @@
<PlayIcon>PlayIcon.png</PlayIcon>
<PauseIcon>PauseIcon.png</PauseIcon>
<RepeatIcon>RepeatIcon.png</RepeatIcon>
<SongMenuBG>SongMenuBG.png</SongMenuBG>
<CloseIcon>Close.png</CloseIcon>
<DeleteIcon>Delete.png</DeleteIcon>
<SaveIcon>Save.png</SaveIcon>
<SingIcon>Sing.png</SingIcon>
</Skins>
<Videos>
<BG_Video>[Red]BG_Video.mp4</BG_Video>
+15
View File
@@ -130,6 +130,12 @@
<B>0,674</B>
<A>1,000</A>
</StaticColor>
<StaticColorAlpha>
<R>0,968</R>
<G>0,956</G>
<B>0,674</B>
<A>0,500</A>
</StaticColorAlpha>
<StaticWarningColor>
<R>0,968</R>
<G>0,956</G>
@@ -305,6 +311,10 @@
<EnergyBeam>EnergyBeam.png</EnergyBeam>
<DuetIcon>DuetIcon.png</DuetIcon>
<VideoIcon>VideoIcon.png</VideoIcon>
<VideoIconCO>VideoIconCO.png</VideoIconCO>
<VideoIconBG>VideoIconBG.png</VideoIconBG>
<MedleyCalcIcon>MedleyCalcIcon.png</MedleyCalcIcon>
<MedleyTagIcon>MedleyTagIcon.png</MedleyTagIcon>
<Invisible>Invisible.png</Invisible>
<PlayerSelector>PlayerSelector.png</PlayerSelector>
<PreviousIcon>PreviousIcon.png</PreviousIcon>
@@ -312,6 +322,11 @@
<PlayIcon>PlayIcon.png</PlayIcon>
<PauseIcon>PauseIcon.png</PauseIcon>
<RepeatIcon>RepeatIcon.png</RepeatIcon>
<SongMenuBG>SongMenuBG.png</SongMenuBG>
<CloseIcon>Close.png</CloseIcon>
<DeleteIcon>Delete.png</DeleteIcon>
<SaveIcon>Save.png</SaveIcon>
<SingIcon>Sing.png</SingIcon>
</Skins>
<Videos>
<BG_Video>[Yellow]BG_Video.mp4</BG_Video>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

@@ -1,5 +1,11 @@
SceenNames
++++++++++
Version 3:
<EqualizerPlayer[1...6]> (One Equalizer for each player): Equalizer shows input from assigned mic for this player.
<SelectSlideDuetPlayer[1...6]> (One SelectSlide for each player)
++++++++++
Version 2:
@@ -0,0 +1,9 @@
ScreenOptionsRecord
++++++++++
Version 2:
Add:
<EqualizerChannel1> and <EqualizerChannel2>.
This is a new theme-element. Check ScreenOptionsRecord.xml for style-possibilities.
++++++++++
@@ -1,5 +1,17 @@
ScreenSing
+++++++++
Version 5
Add:
<TextDuetName1> and <TextDuetName2> (only showed when sining duet)
++++++++++
Version 5:
Add:
<ButtonSkip>
++++++++++
Version 4:
Added Elements for 6-player-singing!
@@ -0,0 +1,24 @@
ScreenSong
++++++++++
Version 3:
Add:
<StaticOptionsBG>
<TextOptionsTitle>
<ButtonOptionsSing>, <ButtonOptionsClose>, <ButtonOptionsPlaylist>, <ButtonOptionsSingAll>, <ButtonOptionsSingAllVisible>, <ButtonOptionsRandom>, <ButtonOptionsRandom>, <ButtonOptionsRandomCategory>, <ButtonOpenOptions>
<SelectSlideOptionsMode>, <SelectSlideOptionsPlaylistAdd>, <SelectSlideOptionsPlaylistOpen>
and
<Playlist> as a new Screen-Element. For details, look at ScreenSong.xml
++++++++++
Version 2:
Add:
<MedleyCalcIcon> and <MedleyTagIcon>
to SongMenu
Add:
<StaticMedleyCalcIcon> and <StaticMedleyTagIcon>
to SongMenu.SongMenuTileBoard
++++++++++
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+85 -23
View File
@@ -34,6 +34,7 @@ namespace Vocaluxe.Base
private static bool _Playing;
private static bool _Disabled;
private static bool _CanSing;
private static bool _RepeatSong;
public static bool VideoEnabled
{
@@ -84,6 +85,18 @@ namespace Vocaluxe.Base
}
}
public static bool RepeatSong
{
get
{
return _RepeatSong;
}
set
{
_RepeatSong = value;
}
}
public static int SongID
{
get
@@ -120,7 +133,10 @@ namespace Vocaluxe.Base
{
get
{
return _CurrentPlaylistElement.Artist + " - " + _CurrentPlaylistElement.Title;
if (_CurrentPlaylistElement.Artist != "" && _CurrentPlaylistElement.Title != "")
return _CurrentPlaylistElement.Artist + " - " + _CurrentPlaylistElement.Title;
else
return Path.GetFileNameWithoutExtension(_CurrentPlaylistElement.MusicFilePath);
}
}
@@ -165,7 +181,7 @@ namespace Vocaluxe.Base
{
if (_CurrentMusicStream != -1)
{
CSound.Fade(_CurrentMusicStream, CConfig.BackgroundMusicVolume, CSettings.BackgroundMusicFadeTime);
CSound.Fade(_CurrentMusicStream, 100f, CSettings.BackgroundMusicFadeTime);
CSound.Play(_CurrentMusicStream);
if (_VideoEnabled && _Video != -1)
CVideo.VdResume(_Video);
@@ -217,10 +233,22 @@ namespace Vocaluxe.Base
{
if (_AllFileNames.Count > 0 && _CurrentMusicStream != -1)
{
float timeToPlay = CSound.GetLength(_CurrentMusicStream) - CSound.GetPosition(_CurrentMusicStream);
float timeToPlay;
if(_CurrentPlaylistElement.Finish == 0f) //No End-Tag defined
timeToPlay = CSound.GetLength(_CurrentMusicStream) - CSound.GetPosition(_CurrentMusicStream);
else //End-Tag found
timeToPlay = _CurrentPlaylistElement.Finish - CSound.GetPosition(_CurrentMusicStream);
bool finished = CSound.IsFinished(_CurrentMusicStream);
if (_Playing && (timeToPlay <= CSettings.BackgroundMusicFadeTime || finished))
Next();
if (_RepeatSong)
{
CSound.SetPosition(_CurrentMusicStream, 0);
if (_VideoEnabled && _Video != -1)
CVideo.VdSkip(_Video, 0f, _CurrentPlaylistElement.VideoGap);
}
else
Next();
}
}
@@ -248,6 +276,12 @@ namespace Vocaluxe.Base
_CurrentPlaylistElement = _PreviousFileNames[_PreviousMusicIndex];
}
_CurrentMusicStream = CSound.Load(_CurrentPlaylistElement.MusicFilePath);
CSound.SetStreamVolumeMax(_CurrentMusicStream, CConfig.BackgroundMusicVolume);
//Seek to #Start-Tag, if found
if (_CurrentPlaylistElement.Start != 0f)
CSound.SetPosition(_CurrentMusicStream, _CurrentPlaylistElement.Start);
if (_VideoEnabled)
LoadVideo();
CSound.SetStreamVolume(_CurrentMusicStream, 0f);
@@ -261,25 +295,31 @@ namespace Vocaluxe.Base
{
if (_PreviousFileNames.Count > 0 || _PreviousMusicIndex >= 0)
{
Stop();
float pos = CSound.GetPosition(_CurrentMusicStream);
if (CSound.GetPosition(_CurrentMusicStream) >= 1.5f)
{
CSound.SetPosition(_CurrentMusicStream, 0);
if (_VideoEnabled && _Video != -1)
CVideo.VdSkip(_Video, 0f, _CurrentPlaylistElement.VideoGap);
}
else
{
Stop();
_PreviousMusicIndex--;
if (_PreviousMusicIndex < 0)
_PreviousMusicIndex = 0; //No previous songs left, so play the first
_PreviousMusicIndex--;
if (_PreviousMusicIndex < 0)
_PreviousMusicIndex = 0; //No previous songs left, so play the first
_CurrentPlaylistElement = _PreviousFileNames[_PreviousMusicIndex];
_CurrentPlaylistElement = _PreviousFileNames[_PreviousMusicIndex];
_CurrentMusicStream = CSound.Load(_CurrentPlaylistElement.MusicFilePath);
if (_VideoEnabled)
LoadVideo();
CSound.SetStreamVolume(_CurrentMusicStream, 0f);
Play();
_CurrentMusicStream = CSound.Load(_CurrentPlaylistElement.MusicFilePath);
CSound.SetStreamVolumeMax(_CurrentMusicStream, CConfig.BackgroundMusicVolume);
if (_VideoEnabled)
LoadVideo();
CSound.SetStreamVolume(_CurrentMusicStream, 0f);
Play();
}
}
}
public static void Repeat()
{
if (_AllFileNames.Count > 0 && _CurrentMusicStream != -1)
else if (_CurrentMusicStream != -1)
{
CSound.SetPosition(_CurrentMusicStream, 0);
if (_VideoEnabled && _Video != -1)
@@ -289,7 +329,7 @@ namespace Vocaluxe.Base
public static void ApplyVolume()
{
CSound.SetStreamVolume(_CurrentMusicStream, CConfig.BackgroundMusicVolume);
CSound.SetStreamVolumeMax(_CurrentMusicStream, CConfig.BackgroundMusicVolume);
}
public static void AddOwnMusic()
@@ -509,7 +549,7 @@ class PlaylistElement
if (_Song != null)
return _Song.Title;
return "Unknown";
return "";
}
}
@@ -520,7 +560,29 @@ class PlaylistElement
if (_Song != null)
return _Song.Artist;
return "Unknown";
return "";
}
}
public float Start
{
get
{
if (_Song != null)
return _Song.Start;
return 0f;
}
}
public float Finish
{
get
{
if (_Song != null)
return _Song.Finish;
return 0f;
}
}
+5
View File
@@ -960,6 +960,11 @@ namespace Vocaluxe.Base
CSettings.sFileHighscoreDB = value;
}
break;
case "playlistfolder":
CSettings.CreateFolder(value);
CSettings.sFolderPlaylists = value;
break;
}
}
}
+5
View File
@@ -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();
+38 -8
View File
@@ -40,13 +40,20 @@ namespace Vocaluxe.Base
class CGlyph
{
public readonly float SIZEh = 50f;
private float _SIZEh = 50f;
public float SIZEh
{
get { return _SIZEh; }
}
public STexture Texture;
public char Chr;
public int width;
public CGlyph(char chr)
public CGlyph(char chr, float MaxHigh)
{
_SIZEh = MaxHigh;
float outline = CFonts.Outline;
TextFormatFlags flags = TextFormatFlags.NoPadding | TextFormatFlags.NoPrefix;
@@ -152,7 +159,8 @@ namespace Vocaluxe.Base
private Hashtable _htGlyphs;
private PrivateFontCollection fonts;
private FontFamily family;
private float SIZEh;
public string FilePath;
@@ -181,6 +189,28 @@ namespace Vocaluxe.Base
_Glyphs = new List<CGlyph>();
_htGlyphs = new Hashtable();
switch (CConfig.TextureQuality)
{
case ETextureQuality.TR_CONFIG_TEXTURE_LOWEST:
SIZEh = 25f;
break;
case ETextureQuality.TR_CONFIG_TEXTURE_LOW:
SIZEh = 50f;
break;
case ETextureQuality.TR_CONFIG_TEXTURE_MEDIUM:
SIZEh = 100f;
break;
case ETextureQuality.TR_CONFIG_TEXTURE_HIGH:
SIZEh = 200f;
break;
case ETextureQuality.TR_CONFIG_TEXTURE_HIGHEST:
SIZEh = 400f;
break;
default:
SIZEh = 100f;
break;
}
}
public void DrawGlyph(char chr, float x, float y, float h, float z, SColorF color)
@@ -243,7 +273,7 @@ namespace Vocaluxe.Base
return;
float h = CFonts.Height;
_Glyphs.Add(new CGlyph(chr));
_Glyphs.Add(new CGlyph(chr, SIZEh));
_htGlyphs.Add(chr, _Glyphs.Count - 1);
CFonts.Height = h;
}
@@ -803,10 +833,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);
+12
View File
@@ -27,6 +27,7 @@ namespace Vocaluxe.Base
public int SongID;
public bool Medley;
public bool Duet;
public bool ShortSong;
public long DateTicks;
public bool SongFinished;
}
@@ -179,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();
@@ -189,6 +195,11 @@ namespace Vocaluxe.Base
return _GameMode.GetPoints();
}
public static int NumRounds
{
get { return _GameMode.GetNumSongs(); }
}
public static int NumPlayer
{
get { return _NumPlayer; }
@@ -214,6 +225,7 @@ namespace Vocaluxe.Base
_Player[i].SongID = -1;
_Player[i].Medley = false;
_Player[i].Duet = false;
_Player[i].ShortSong = false;
_Player[i].DateTicks = DateTime.Now.Ticks;
_Player[i].SongFinished = false;
}
+109
View File
@@ -0,0 +1,109 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.XPath;
using Vocaluxe.Lib.Song;
using Vocaluxe.Lib.Playlist;
namespace Vocaluxe.Base
{
static class CPlaylists
{
private static List<CPlaylistFile> _Playlists;
private static CHelper Helper = new CHelper();
public static CPlaylistFile[] Playlists
{
get { return _Playlists.ToArray(); }
}
public static string[] PlaylistNames
{
get
{
List<string> names = new List<string>();
for (int i = 0; i < _Playlists.Count; i++)
{
names.Add(_Playlists[i].PlaylistName);
}
return names.ToArray();
}
}
public static int NumPlaylists
{
get { return _Playlists.Count; }
}
public static void Init()
{
LoadPlaylists();
}
public static void LoadPlaylists()
{
_Playlists = new List<CPlaylistFile>();
List<string> files = new List<string>();
files.AddRange(Helper.ListFiles(CSettings.sFolderPlaylists, "*.xml", true, true));
foreach (string file in files)
{
CPlaylistFile playlist = new CPlaylistFile(file);
_Playlists.Add(playlist);
}
SortPlaylistsByName();
}
#region private methods
private static void SortPlaylistsByName()
{
_Playlists.Sort(CompareByPlaylistName);
}
private static int CompareByPlaylistName(CPlaylistFile a, CPlaylistFile b)
{
return String.Compare(a.PlaylistName, b.PlaylistName);
}
public static void DeletePlaylist(int PlaylistID)
{
if (PlaylistID < 0 || PlaylistID >= _Playlists.Count)
return;
if (_Playlists[PlaylistID].PlaylistFile != String.Empty)
{
try
{
File.Delete(_Playlists[PlaylistID].PlaylistFile);
_Playlists.RemoveAt(PlaylistID);
}
catch (Exception)
{
CLog.LogError("Can't delete Profile File " + _Playlists[PlaylistID].PlaylistFile + ".xml");
}
}
}
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
}
}
+15 -2
View File
@@ -47,7 +47,7 @@ namespace Vocaluxe.Base
public const int iVersionSub = 0; // patches
public const ERevision VersionRevision = ERevision.Alpha;
public const int iBuild = 67; // Increase on every published version! Never Reset!
public const int iBuild = 69; // Increase on every published version! Never Reset!
public const int iDatabaseHighscoreVersion = 1;
public const int iDatabaseCoverVersion = 1;
@@ -94,6 +94,7 @@ namespace Vocaluxe.Base
public const string sFolderLanguages = "Languages";
public const string sFolderScreenshots = "Screenshots";
public const string sFolderBackgroundMusic = "BackgroundMusic";
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;
@@ -112,6 +113,11 @@ namespace Vocaluxe.Base
public const float LyricHelperMoveTime = 1.5f;
public const float LyricHelperMinTime = 0.2f;
public const float DefaultMedleyFadeInTime = 8f;
public const float DefaultMedleyFadeOutTime = 2f;
public const int MedleyMinSeriesLength = 3;
public const float MedleyMinDuration = 40f;
public static bool TabNavigation = false;
public const float BackgroundMusicFadeTime = 0.5f;
@@ -158,7 +164,7 @@ namespace Vocaluxe.Base
return (float)iRenderW / (float)iRenderH;
}
public static void MouseInacive()
public static void MouseInactive()
{
MouseMoveDiffMin = 15;
}
@@ -179,6 +185,7 @@ namespace Vocaluxe.Base
Folders.Add(sFolderScreenshots);
Folders.Add(sFolderBackgroundMusic);
Folders.Add(sFolderSounds);
Folders.Add(sFolderPlaylists);
foreach (string folder in Folders)
{
@@ -187,5 +194,11 @@ namespace Vocaluxe.Base
Directory.CreateDirectory(path);
}
}
public static void CreateFolder(string path)
{
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
}
}
}
+30
View File
@@ -56,6 +56,7 @@ namespace Vocaluxe.Base
private static int _CoverLoadIndex = -1;
private static int _CatIndex = -1;
private static List<CCategory> _Categories = new List<CCategory>();
private static List<CCategory> _CategoriesForRandom = new List<CCategory>();
private static Stopwatch _CoverLoadTimer = new Stopwatch();
@@ -275,6 +276,35 @@ namespace Vocaluxe.Base
_SongsForRandom.AddRange(VisibleSongs);
}
public static int GetRandomCategory()
{
if (_CategoriesForRandom.Count == 0)
UpdateRandomCategoryList();
if (_CategoriesForRandom.Count == 0)
return -1;
CCategory category = _CategoriesForRandom[CGame.Rand.Next(0, _CategoriesForRandom.Count - 1)];
_CategoriesForRandom.Remove(category);
return GetCategoryNumber(category);
}
public static void UpdateRandomCategoryList()
{
_CategoriesForRandom.Clear();
_CategoriesForRandom.AddRange(Categories);
}
private static int GetCategoryNumber(CCategory category)
{
for (int i = 0; i < Categories.Length; i++)
{
if (Categories[i] == category)
return i;
}
return -1;
}
public static CSong[] AllSongs
{
get { return _Songs.ToArray(); }
+8
View File
@@ -108,6 +108,10 @@ namespace Vocaluxe.Base
_Playback.SetStreamVolume(Stream, Volume);
}
public static void SetStreamVolumeMax(int Stream, float Volume)
{
_Playback.SetStreamVolumeMax(Stream, Volume);
}
public static float GetLength(int Stream)
{
@@ -315,6 +319,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;
}
+34 -6
View File
@@ -68,6 +68,7 @@ namespace Vocaluxe.Base
public int X;
public int Y;
public bool LB; //left button click
public bool LD; //left button double click
public bool RB; //right button click
public bool MB; //middle button click
@@ -82,11 +83,12 @@ namespace Vocaluxe.Base
public Modifier Mod;
public int Wheel;
public MouseEvent(bool alt, bool shift, bool ctrl, int x, int y, bool lb, bool rb, int wheel, bool lbh, bool rbh, bool mb, bool mbh)
public MouseEvent(bool alt, bool shift, bool ctrl, int x, int y, bool lb, bool ld, bool rb, int wheel, bool lbh, bool rbh, bool mb, bool mbh)
{
X = x;
Y = y;
LB = lb;
LD = ld;
RB = rb;
MB = mb;
@@ -327,6 +329,8 @@ namespace Vocaluxe.Base
private bool _ModCTRL;
private bool _ModSHIFT;
private System.Diagnostics.Stopwatch _timer;
public int X
{
get { return _x; }
@@ -347,13 +351,16 @@ namespace Vocaluxe.Base
_EventsPool = new List<MouseEvent>();
_CurrentPool = new List<MouseEvent>();
_timer = new System.Diagnostics.Stopwatch();
}
private void Add(bool alt, bool shift, bool ctrl, int x, int y, bool lb, bool rb, int wheel, bool lbh, bool rbh, bool mb, bool mbh)
private void Add(bool alt, bool shift, bool ctrl, int x, int y, bool lb, bool ld, bool rb, int wheel, bool lbh, bool rbh, bool mb, bool mbh)
{
x = (int)((float)x * (float)CSettings.iRenderW / (float)CDraw.GetScreenWidth());
y = (int)((float)y * (float)CSettings.iRenderH / (float)CDraw.GetScreenHeight());
MouseEvent pool = new MouseEvent(alt, shift, ctrl, x, y, lb, rb, -wheel/120, lbh, rbh, mb, mbh);
MouseEvent pool = new MouseEvent(alt, shift, ctrl, x, y, lb, ld, rb, -wheel / 120, lbh, rbh, mb, mbh);
lock (_CopyLock)
{
@@ -380,21 +387,42 @@ namespace Vocaluxe.Base
public void MouseMove(MouseEventArgs e)
{
CheckModifiers();
Add(_ModALT, _ModSHIFT, _ModCTRL, e.X, e.Y, false, false, e.Delta, e.Button == MouseButtons.Left, e.Button == MouseButtons.Right,
Add(_ModALT, _ModSHIFT, _ModCTRL, e.X, e.Y, false, false, false, e.Delta, e.Button == MouseButtons.Left, e.Button == MouseButtons.Right,
false, e.Button == MouseButtons.Middle);
}
public void MouseWheel(MouseEventArgs e)
{
CheckModifiers();
Add(_ModALT, _ModSHIFT, _ModCTRL, e.X, e.Y, false, false, e.Delta, e.Button == MouseButtons.Left, e.Button == MouseButtons.Right,
Add(_ModALT, _ModSHIFT, _ModCTRL, e.X, e.Y, false, false, false, e.Delta, e.Button == MouseButtons.Left, e.Button == MouseButtons.Right,
false, e.Button == MouseButtons.Middle);
}
public void MouseDown(MouseEventArgs e)
{
CheckModifiers();
Add(_ModALT, _ModSHIFT, _ModCTRL, e.X, e.Y, e.Button == MouseButtons.Left, e.Button == MouseButtons.Right, e.Delta, false, false,
bool lb = e.Button == MouseButtons.Left;
bool ld = false;
if (lb)
{
if (_timer.IsRunning && _timer.ElapsedMilliseconds < 450)
{
ld = true;
_timer.Reset();
}
else
{
_timer.Reset();
_timer.Start();
}
}
else
{
_timer.Reset();
}
Add(_ModALT, _ModSHIFT, _ModCTRL, e.X, e.Y, lb, ld, e.Button == MouseButtons.Right, e.Delta, false, false,
e.Button == MouseButtons.Middle, false);
}
+12 -10
View File
@@ -71,31 +71,34 @@
- PortAudio Record and Playback
-------------------------------------------------------------
+ v0.1.0:
+ v0.1.0 (reached: 07.04.2012):
- Menu Background Music
- Jukebox light (bg music controls)
- Theme System Update
- A nicer Theme!
+ v0.2.0:
- Medley
- WiiMote Support
- Jukebox light (bg music controls)
- Show Avatars and Player Name in Sing Screen (and perhaps some other screens)
- Sing Short Version Mode
- Show Avatars and Player Name in Sing Screen
- New Lyric Effects
- More Player at once (up to 6)
- Duet (full support, choose/toggle names)
- Playlist-Support
- Spectrum Analyzer (Record Screen and Player Selection Screen)
-----------------
just some ideas:
- WiiMote Support
- Installer
- More Song List Views
- Tile Board: Show title and artist under each tile
- OnScreen Keyboard?
- Kinect Support?
- Help System
- Party Mode: Casting Show
- More Player at once
- Mark newly added songs
- Playlist-Support
- Party Mode: Casting Show
- Mark newly added songs
- Theme Editor
- Jukebox
- Tournament Mode
@@ -103,5 +106,4 @@ just some ideas:
- Party Mode: Tic, Tac, Toe
- Party Mode: 4 in a row
- Challenge Mode (with more than 2 player at once)
- Song Editor
- Duet (full support, choose/toggle names)
- Song Editor
+49 -9
View File
@@ -39,12 +39,13 @@ namespace Vocaluxe.GameModes
_Rounds[round, player].PointsLineBonus = 0f;
_Rounds[round, player].Medley = false;
_Rounds[round, player].Duet = false;
_Rounds[round, player].ShortSong = false;
_Rounds[round, player].SongFinished = false;
}
}
}
public void SetPoints(int Round, int SongID, SPlayer[] Player, bool Medley, bool Duet)
public void SetPoints(int Round, int SongID, SPlayer[] Player, bool Medley, bool Duet, bool ShortSong)
{
long DateTicks = DateTime.Now.Ticks;
for (int player = 0; player < Player.Length; player++)
@@ -56,6 +57,7 @@ namespace Vocaluxe.GameModes
_Rounds[Round, player].PointsLineBonus = Player[player].PointsLineBonus;
_Rounds[Round, player].Medley = Medley;
_Rounds[Round, player].Duet = Duet;
_Rounds[Round, player].ShortSong = ShortSong;
_Rounds[Round, player].DateTicks = DateTicks;
_Rounds[Round, player].SongFinished = Player[player].SongFinished;
}
@@ -91,6 +93,7 @@ namespace Vocaluxe.GameModes
player[p].Difficulty = _Rounds[Round, p].Difficulty;
player[p].Medley = _Rounds[Round, p].Medley;
player[p].Duet = _Rounds[Round, p].Duet;
player[p].ShortSong = _Rounds[Round, p].ShortSong;
player[p].DateTicks = _Rounds[Round, p].DateTicks;
player[p].SongFinished = _Rounds[Round, p].SongFinished;
player[p].ProfileID = _Rounds[Round, p].ProfileID;
@@ -119,7 +122,7 @@ namespace Vocaluxe.GameModes
{
return _SongQueque[_CurrentSong].GameMode;
}
return EGameMode.Normal;
return EGameMode.TR_GAMEMODE_NORMAL;
}
public virtual bool AddVisibleSong(int VisibleIndex, EGameMode GameMode)
@@ -127,7 +130,7 @@ namespace Vocaluxe.GameModes
if (CSongs.VisibleSongs.Length > VisibleIndex)
{
int SongID = CSongs.VisibleSongs[VisibleIndex].ID;
if (GameMode == EGameMode.Duet && !CSongs.GetSong(SongID).IsDuet)
if (GameMode == EGameMode.TR_GAMEMODE_DUET && !CSongs.GetSong(SongID).IsDuet)
return false;
_SongQueque.Add(new SongQueque(SongID, GameMode));
@@ -141,7 +144,7 @@ namespace Vocaluxe.GameModes
if (CSongs.AllSongs.Length > AbsoluteIndex)
{
int SongID = CSongs.AllSongs[AbsoluteIndex].ID;
if (GameMode == EGameMode.Duet && !CSongs.GetSong(SongID).IsDuet)
if (GameMode == EGameMode.TR_GAMEMODE_DUET && !CSongs.GetSong(SongID).IsDuet)
return false;
_SongQueque.Add(new SongQueque(SongID, GameMode));
@@ -188,7 +191,6 @@ namespace Vocaluxe.GameModes
break;
}
}
if (index == -1)
return false;
@@ -223,8 +225,9 @@ namespace Vocaluxe.GameModes
_CurrentSong,
_SongQueque[_CurrentSong].SongID,
Player,
_SongQueque[_CurrentSong].GameMode == EGameMode.Medley,
_SongQueque[_CurrentSong].GameMode == EGameMode.Duet);
_SongQueque[_CurrentSong].GameMode == EGameMode.TR_GAMEMODE_MEDLEY,
_SongQueque[_CurrentSong].GameMode == EGameMode.TR_GAMEMODE_DUET,
_SongQueque[_CurrentSong].GameMode == EGameMode.TR_GAMEMODE_SHORTSONG);
}
_CurrentSong++;
}
@@ -244,7 +247,32 @@ namespace Vocaluxe.GameModes
{
if (_CurrentSong >= 0 && _CurrentSong < _SongQueque.Count)
{
return CSongs.GetSong(_SongQueque[_CurrentSong].SongID);
CSong song = CSongs.GetSong(_SongQueque[_CurrentSong].SongID);
song = new CSong(song);
switch (GetCurrentGameMode())
{
case EGameMode.TR_GAMEMODE_MEDLEY:
// set medley mode timings
song.Start = CGame.GetTimeFromBeats(song.Medley.StartBeat, song.BPM) - song.Medley.FadeInTime + song.Gap;
if (song.Start < 0f)
song.Start = 0f;
song.Finish = CGame.GetTimeFromBeats(song.Medley.EndBeat, song.BPM) + song.Medley.FadeOutTime + song.Gap;
// set lines to medley mode
song.Notes.SetMedley(song.Medley.StartBeat, song.Medley.EndBeat);
break;
case EGameMode.TR_GAMEMODE_SHORTSONG:
song.Finish = CGame.GetTimeFromBeats(song.ShortEnd, song.BPM) + CSettings.DefaultMedleyFadeOutTime + song.Gap;
// set lines to medley mode
song.Notes.SetMedley(song.Notes.GetLines(0).Line[0].FirstNoteBeat, song.ShortEnd);
break;
}
return song;
}
return null;
}
@@ -256,16 +284,28 @@ 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;
}
#endregion Implementation
protected virtual void SongManipulation(int SongIndex)
{
}
}
}
+1 -1
View File
@@ -10,7 +10,7 @@ namespace Vocaluxe.GameModes
public override void Init()
{
base.Init();
_Initialized = true;
}
}
+5 -3
View File
@@ -9,9 +9,10 @@ namespace Vocaluxe.GameModes
{
public enum EGameMode
{
Normal,
Medley,
Duet
TR_GAMEMODE_NORMAL,
TR_GAMEMODE_MEDLEY,
TR_GAMEMODE_DUET,
TR_GAMEMODE_SHORTSONG
}
interface IGameMode
@@ -37,5 +38,6 @@ namespace Vocaluxe.GameModes
int GetNumSongs();
CSong GetSong();
CSong GetSong(int Num);
EGameMode GetGameMode(int Num);
}
}
+40 -14
View File
@@ -55,6 +55,8 @@ namespace Vocaluxe.Lib.Draw
private Queue<Texture> _VerticesTextures;
private Queue<Matrix> _VerticesRotationMatrices;
private bool _NonPowerOf2TextureSupported;
#endregion private vars
/// <summary>
@@ -182,6 +184,13 @@ namespace Vocaluxe.Lib.Draw
flags = CreateFlags.HardwareVertexProcessing;
else
flags = CreateFlags.SoftwareVertexProcessing;
//Check if Pow2 textures are needed
_NonPowerOf2TextureSupported = true;
_NonPowerOf2TextureSupported &= (caps.TextureCaps & TextureCaps.Pow2) == 0;
_NonPowerOf2TextureSupported &= (caps.TextureCaps & TextureCaps.NonPow2Conditional) == 0;
_NonPowerOf2TextureSupported &= (caps.TextureCaps & TextureCaps.SquareOnly) == 0;
try
{
_Device = new Device(_D3D, _D3D.Adapters.DefaultAdapter.Adapter, DeviceType.Hardware, Handle, flags, _PresentParameters);
@@ -731,8 +740,8 @@ namespace Vocaluxe.Lib.Draw
texture.rect = new SRectF(0f, 0f, texture.width, texture.height, 0f);
texture.width = w;
texture.height = h;
texture.w2 = NextPowerOfTwo(texture.width);
texture.h2 = NextPowerOfTwo(texture.height);
texture.w2 = CheckForNextPowerOf2(texture.width);
texture.h2 = CheckForNextPowerOf2(texture.height);
texture.index = _IDs.Dequeue();
lock (MutexTexture)
@@ -836,6 +845,19 @@ namespace Vocaluxe.Lib.Draw
{
DrawTexture(_BlankTexture, rect, color);
}
/// <summary>
/// Draws reflection of a colored rectangle
/// </summary>
/// <param name="color">The color in which the rectangle will be drawn in</param>
/// <param name="rect">The coordinates in a SRectF struct</param>
/// <param name="space">The space between the texture and the reflection</param>
/// <param name="height">The height of the reflection</param>
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
@@ -919,8 +941,8 @@ namespace Vocaluxe.Lib.Draw
texture.height = h;
//Older graphics card can only handle textures with sizes being powers of two
texture.w2 = (float)NextPowerOfTwo(w);
texture.h2 = (float)NextPowerOfTwo(h);
texture.w2 = (float)CheckForNextPowerOf2(w);
texture.h2 = (float)CheckForNextPowerOf2(h);
//Create a new Bitmap with the new sizes
Bitmap bmp2 = new Bitmap((int)texture.w2, (int)texture.h2);
@@ -1014,8 +1036,8 @@ namespace Vocaluxe.Lib.Draw
STexture texture = new STexture(-1);
texture.width = W;
texture.height = H;
texture.w2 = NextPowerOfTwo(texture.width);
texture.h2 = NextPowerOfTwo(texture.height);
texture.w2 = CheckForNextPowerOf2(texture.width);
texture.h2 = CheckForNextPowerOf2(texture.height);
texture.width_ratio = texture.width / texture.w2;
texture.height_ratio = texture.height / texture.h2;
@@ -1079,8 +1101,8 @@ namespace Vocaluxe.Lib.Draw
}
_D3DTextures[Texture.index].UnlockRectangle(0);
Texture.height_ratio = Texture.height / NextPowerOfTwo(Texture.height);
Texture.width_ratio = Texture.width / NextPowerOfTwo(Texture.width);
Texture.height_ratio = Texture.height / CheckForNextPowerOf2(Texture.height);
Texture.width_ratio = Texture.width / CheckForNextPowerOf2(Texture.width);
return true;
/*Surface s = _D3DTextures[Texture.index].GetSurfaceLevel(0);
@@ -1434,8 +1456,8 @@ namespace Vocaluxe.Lib.Draw
texture.width = q.width;
texture.height = q.height;
texture.w2 = NextPowerOfTwo(texture.width);
texture.h2 = NextPowerOfTwo(texture.height);
texture.w2 = CheckForNextPowerOf2(texture.width);
texture.h2 = CheckForNextPowerOf2(texture.height);
texture.width_ratio = texture.width / texture.w2;
texture.height_ratio = texture.height / texture.h2;
@@ -1475,14 +1497,18 @@ namespace Vocaluxe.Lib.Draw
#region utility
/// <summary>
/// Calculates the next power of two
/// Calculates the next power of two if the device has the POW2 flag set
/// </summary>
/// <param name="n">The value of which the next power of two will be calculated</param>
/// <returns>The next power of two</returns>
private static float NextPowerOfTwo(float n)
private float CheckForNextPowerOf2(float n)
{
if (n < 0) throw new ArgumentOutOfRangeException("n", "Must be positive.");
return (float)System.Math.Pow(2, System.Math.Ceiling(System.Math.Log((double)n, 2)));
if (!_NonPowerOf2TextureSupported)
{
if (n < 0) throw new ArgumentOutOfRangeException("n", "Must be positive.");
return (float)System.Math.Pow(2, System.Math.Ceiling(System.Math.Log((double)n, 2)));
}
else return n;
}
private Matrix CalculateRotationMatrix(float rot, float rx1, float rx2, float ry1, float ry2)
+5
View File
@@ -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);
+53
View File
@@ -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
+1
View File
@@ -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();
+282
View File
@@ -0,0 +1,282 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.XPath;
using Vocaluxe.Base;
using Vocaluxe.GameModes;
using Vocaluxe.Lib.Song;
namespace Vocaluxe.Lib.Playlist
{
public class CPlaylistSong
{
public int SongID;
public EGameMode GameMode;
public CPlaylistSong(int SongID, EGameMode gm)
{
this.SongID = SongID;
this.GameMode = gm;
}
public CPlaylistSong()
{
GameMode = EGameMode.TR_GAMEMODE_NORMAL;
}
public CPlaylistSong(CPlaylistSong ps)
{
SongID = ps.SongID;
GameMode = ps.GameMode;
}
}
public class CPlaylistFile
{
private static XmlWriterSettings _settings = new XmlWriterSettings();
private static CHelper Helper = new CHelper();
public string PlaylistName;
public string PlaylistFile;
public List<CPlaylistSong> Songs = new List<CPlaylistSong>();
public CPlaylistFile()
{
Init();
PlaylistName = string.Empty;
PlaylistFile = string.Empty;
}
public CPlaylistFile(string file)
{
Init();
PlaylistFile = file;
LoadPlaylist();
}
private void Init()
{
_settings.Indent = true;
_settings.Encoding = System.Text.Encoding.UTF8;
_settings.ConformanceLevel = ConformanceLevel.Document;
}
public void SavePlaylist()
{
if (PlaylistFile == string.Empty)
{
string filename = string.Empty;
foreach (char chr in PlaylistName)
{
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")))
{
filename += i;
}
}
PlaylistFile = Path.Combine(CSettings.sFolderPlaylists, filename + ".xml");
}
XmlWriter writer;
try
{
writer = XmlWriter.Create(PlaylistFile, _settings);
}
catch (Exception e)
{
CLog.LogError("Error creating/opening Playlist File " + PlaylistFile + ": " + e.Message);
return;
}
if (writer == null)
{
CLog.LogError("Error creating/opening Playlist File " + PlaylistFile);
return;
}
writer.WriteStartDocument();
writer.WriteStartElement("root");
writer.WriteStartElement("Info");
writer.WriteElementString("PlaylistName", PlaylistName);
writer.WriteEndElement();
writer.WriteStartElement("Songs");
for (int i = 0; i < Songs.Count; i++)
{
CSong song = CSongs.GetSong(Songs[i].SongID);
if (song != null)
{
writer.WriteStartElement("Song" + (i + 1).ToString());
writer.WriteElementString("Artist", song.Artist);
writer.WriteElementString("Title", song.Title);
writer.WriteElementString("GameMode", Enum.GetName(typeof(EGameMode), Songs[i].GameMode));
writer.WriteEndElement();
}
else
{
CLog.LogError("Playlist.SavePlaylist(): Can't find Song. This should never happen!");
}
}
writer.WriteEndElement();
writer.WriteEndElement(); //end of root
writer.WriteEndDocument();
writer.Flush();
writer.Close();
}
private void LoadPlaylist()
{
bool loaded = false;
XPathDocument xPathDoc = null;
XPathNavigator navigator = null;
try
{
xPathDoc = new XPathDocument(PlaylistFile);
navigator = xPathDoc.CreateNavigator();
loaded = true;
}
catch (Exception e)
{
loaded = false;
if (navigator != null)
navigator = null;
if (xPathDoc != null)
xPathDoc = null;
CLog.LogError("Error opening Playlist File " + PlaylistFile + ": " + e.Message);
}
if (loaded)
{
string value = String.Empty;
if (CHelper.GetValueFromXML("//root/Info/PlaylistName", navigator, ref value, value))
{
PlaylistName = value;
Songs = new List<CPlaylistSong>();
List<string> songs = CHelper.GetValuesFromXML("Songs", navigator);
string artist = String.Empty;
string title = String.Empty;
EGameMode gm = EGameMode.TR_GAMEMODE_NORMAL;
for (int i = 0; i < songs.Count; i++)
{
CHelper.GetValueFromXML("//root/Songs/" + songs[i] + "/Artist", navigator, ref artist, String.Empty);
CHelper.GetValueFromXML("//root/Songs/" + songs[i] + "/Title", navigator, ref title, String.Empty);
CHelper.TryGetEnumValueFromXML<EGameMode>("//root/Songs/" + songs[i] + "/GameMode", navigator, ref gm);
CPlaylistSong song = new CPlaylistSong();
song.SongID = -1;
CSong[] AllSongs = CSongs.AllSongs;
for (int s = 0; s < AllSongs.Length; s++)
{
if (AllSongs[s].Artist == artist && AllSongs[s].Title == title)
{
song.SongID = AllSongs[s].ID;
break;
}
}
if (song.SongID != -1)
{
song.GameMode = gm;
Songs.Add(song);
}
else
{
CLog.LogError("Can't find song '" + title + "' from '" + artist + "' in playlist file: " + PlaylistFile);
}
}
}
else
{
CLog.LogError("Can't find PlaylistName in Playlist File: " + PlaylistFile);
}
}
}
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 SongUp(int SongNr)
{
if (SongNr < Songs.Count - 1 && SongNr > 0)
{
Songs.Reverse(SongNr - 1, 2);
}
}
public void SongDown(int SongNr)
{
if (SongNr < Songs.Count - 1 && SongNr >= 0)
{
Songs.Reverse(SongNr, 2);
}
}
public void SongMove(int SourceNr, int DestNr)
{
if (SourceNr < 0 || DestNr < 0 || SourceNr == DestNr || SourceNr > Songs.Count - 1 || DestNr > Songs.Count - 1)
return;
CPlaylistSong ps = new CPlaylistSong(Songs[SourceNr]);
Songs.RemoveAt(SourceNr);
Songs.Insert(DestNr, ps);
}
public void SongInsert(int DestNr, int SongID, EGameMode gm)
{
if (DestNr < 0 || DestNr > Songs.Count - 1)
return;
CPlaylistSong ps = new CPlaylistSong(SongID, gm);
Songs.Insert(DestNr, ps);
}
}
}
+88 -11
View File
@@ -6,7 +6,7 @@ using Vocaluxe.Base;
namespace Vocaluxe.Lib.Song
{
class CNotes
class CNotes
{
private List<CLines> _Lines = new List<CLines>();
@@ -15,6 +15,18 @@ namespace Vocaluxe.Lib.Song
get { return _Lines.ToArray(); }
}
public CNotes()
{
}
public CNotes(CNotes notes)
{
foreach (CLines lines in notes._Lines)
{
_Lines.Add(new CLines(lines));
}
}
public CLines GetLines(int Index)
{
while (Index >= _Lines.Count)
@@ -60,6 +72,13 @@ namespace Vocaluxe.Lib.Song
_Lines.Clear();
}
public void SetMedley(int StartBeat, int EndBeat)
{
foreach (CLines lines in _Lines)
{
lines.SetMedley(StartBeat, EndBeat);
}
}
}
public enum ENoteType
@@ -91,6 +110,17 @@ namespace Vocaluxe.Lib.Song
_Perfect = false;
}
public CNote(CNote note)
{
_StartBeat = note._StartBeat;
_Duration = note._Duration;
_Tone = note._Tone;
_NoteType = note._NoteType;
_Text = note._Text;
_Hit = note._Hit;
_Perfect = note._Perfect;
}
public CNote(int StartBeat, int Duration, int Tone, string Text)
: this()
{
@@ -250,22 +280,43 @@ namespace Vocaluxe.Lib.Song
private int _StartBeat;
private int _EndBeat;
private bool _PerfectLine; // for drawing perfect line effect
private bool _VisibleInTimeLine;
private int _MinBeat = int.MaxValue;
private int _MaxBeat = int.MinValue;
private List<CNote> _Notes;
private List<CNote> _Notes = new List<CNote>();
#region Constructors
public CLine()
{
_Notes = new List<CNote>();
StartBeat = int.MinValue;
EndBeat = int.MaxValue;
_PerfectLine = false;
_VisibleInTimeLine = true;
}
public CLine(CLine line)
{
foreach (CNote note in line._Notes)
{
_Notes.Add(new CNote(note));
}
_StartBeat = line._StartBeat;
_EndBeat = line._EndBeat;
_PerfectLine = line._PerfectLine;
_MinBeat = line._MinBeat;
_MaxBeat = line._MaxBeat;
_VisibleInTimeLine = line._VisibleInTimeLine;
}
#endregion Constructors
#region Properties
public bool VisibleInTimeLine
{
get { return _VisibleInTimeLine; }
set { _VisibleInTimeLine = value; }
}
public int StartBeat
{
get { return _StartBeat; }
@@ -292,7 +343,7 @@ namespace Vocaluxe.Lib.Song
set { _PerfectLine = value; }
}
public int FirstBeat
public int FirstNoteBeat
{
get
{
@@ -300,7 +351,7 @@ namespace Vocaluxe.Lib.Song
}
}
public int LastBeat
public int LastNoteBeat
{
get
{
@@ -465,6 +516,17 @@ namespace Vocaluxe.Lib.Song
_MaxBeat = int.MinValue;
}
public void SetMedley(int StartBeat, int EndBeat)
{
foreach (CNote note in _Notes)
{
if (note.StartBeat < StartBeat || note.EndBeat > EndBeat)
note.NoteType = ENoteType.Freestyle;
}
_VisibleInTimeLine = _MinBeat >= StartBeat && _MaxBeat <= EndBeat;
}
private void updateMinMaxBeat(CNote Note)
{
if (Note.StartBeat < _MinBeat)
@@ -487,16 +549,24 @@ namespace Vocaluxe.Lib.Song
updateMinMaxBeat(note);
}
}
#endregion Methods
}
public class CLines
{
private List<CLine> _Lines;
private List<CLine> _Lines = new List<CLine>();
public CLines()
{
_Lines = new List<CLine>();
}
public CLines(CLines lines)
{
foreach (CLine line in lines._Lines)
{
_Lines.Add(new CLine(line));
}
}
public CLine[] Line
@@ -521,15 +591,15 @@ namespace Vocaluxe.Lib.Song
int startbeat = int.MaxValue;
for (int i = 0; i < _Lines.Count; i++)
{
if (_Lines[i].FirstBeat < startbeat)
startbeat = _Lines[i].FirstBeat;
if (_Lines[i].FirstNoteBeat < startbeat)
startbeat = _Lines[i].FirstNoteBeat;
}
int endbeat = int.MinValue;
for (int i = 0; i < _Lines.Count; i++)
{
if (_Lines[i].LastBeat < endbeat)
endbeat = _Lines[i].LastBeat;
if (_Lines[i].LastNoteBeat < endbeat)
endbeat = _Lines[i].LastNoteBeat;
}
int result = endbeat - startbeat;
@@ -688,6 +758,13 @@ namespace Vocaluxe.Lib.Song
}
}
public void SetMedley(int StartBeat, int EndBeat)
{
foreach (CLine line in _Lines)
{
line.SetMedley(StartBeat, EndBeat);
}
}
#endregion Methods
}
}
+469 -17
View File
@@ -7,19 +7,45 @@ using System.Text.RegularExpressions;
using Vocaluxe.Base;
using Vocaluxe.Lib.Draw;
using Vocaluxe.Menu;
using Vocaluxe.GameModes;
namespace Vocaluxe.Lib.Song
{
[Flags]
enum EHeaderFlags
{
Title,
Artist,
MP3,
BPM,
PreviewStart,
MedleyStartBeat,
MedleyEndBeat
Title = 1,
Artist = 2,
MP3 = 4,
BPM = 8,
PreviewStart = 16,
MedleyStartBeat = 32,
MedleyEndBeat = 64
}
enum EMedleySource
{
None,
Calculated,
Tag
}
struct SMedley
{
public EMedleySource Source;
public int StartBeat;
public int EndBeat;
public float FadeInTime;
public float FadeOutTime;
public SMedley(int dummy)
{
Source = EMedleySource.None;
StartBeat = 0;
EndBeat = 0;
FadeInTime = 0f;
FadeOutTime = 0f;
}
}
class CSong
@@ -29,10 +55,18 @@ namespace Vocaluxe.Lib.Song
private STexture _CoverTextureSmall = new STexture(-1);
private STexture _CoverTextureBig = new STexture(-1);
public SMedley Medley = new SMedley(0);
public bool CalculateMedley = true;
public float PreviewStart = 0f;
public int ShortEnd = 0;
public Encoding Encoding = Encoding.Default;
public string Folder = String.Empty;
public string FolderName = String.Empty;
public string FileName = String.Empty;
public EOffOn Relative = EOffOn.TR_CONFIG_OFF;
public string MP3FileName = String.Empty;
public string CoverFileName = String.Empty;
@@ -45,9 +79,12 @@ namespace Vocaluxe.Lib.Song
{
get { return _CoverLoaded; }
}
public bool NotesLoaded
{
get { return _NotesLoaded; }
}
public bool CoverBigLoaded = false;
public bool BackgroundLoaded = false;
public STexture CoverTextureSmall
{
@@ -84,8 +121,6 @@ namespace Vocaluxe.Lib.Song
set { _CoverTextureBig = value; }
}
public CBackground Background = new CBackground();
public string Title = String.Empty;
public string Artist = String.Empty;
@@ -99,6 +134,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<string> Comment = new List<string>();
// Sorting
@@ -119,6 +157,104 @@ namespace Vocaluxe.Lib.Song
// Notes
public CNotes Notes = new CNotes();
public EGameMode[] AvailableGameModes
{
get
{
List<EGameMode> gms = new List<EGameMode>();
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()
{
}
public CSong(CSong song)
{
this._CoverTextureSmall = song._CoverTextureSmall;
this._CoverTextureBig = song._CoverTextureBig;
this.Medley = new SMedley();
this.Medley.Source = song.Medley.Source;
this.Medley.StartBeat = song.Medley.StartBeat;
this.Medley.EndBeat = song.Medley.EndBeat;
this.Medley.FadeInTime = song.Medley.FadeInTime;
this.Medley.FadeOutTime = song.Medley.FadeOutTime;
this.CalculateMedley = song.CalculateMedley;
this.PreviewStart = song.PreviewStart;
this.ShortEnd = song.ShortEnd;
this.Encoding = song.Encoding;
this.Folder = song.Folder;
this.FolderName = song.FolderName;
this.FileName = song.FileName;
this.Relative = song.Relative;
this.MP3FileName = song.MP3FileName;
this.CoverFileName = song.CoverFileName;
this.BackgroundFileName = song.BackgroundFileName;
this.VideoFileName = song.VideoFileName;
this.VideoAspect = song.VideoAspect;
this._CoverLoaded = song._CoverLoaded;
this.CoverBigLoaded = song.CoverBigLoaded;
this._NotesLoaded = song._NotesLoaded;
this.Artist = song.Artist;
this.Title = song.Title;
this.Start = song.Start;
this.Finish = song.Finish;
this.BPM = song.BPM;
this.Gap = song.Gap;
this.VideoGap = song.VideoGap;
this.Comment = new List<string>();
foreach (string value in song.Comment)
{
this.Comment.Add(value);
}
this.ID = song.ID;
this.Visible = song.Visible;
this.CatIndex = song.CatIndex;
this.Selected = song.Selected;
this.Edition = new List<string>();
foreach (string value in song.Edition)
{
this.Edition.Add(value);
}
this.Genre = new List<string>();
foreach (string value in song.Genre)
{
this.Genre.Add(value);
}
this.Year = song.Year;
this.Language = new List<string>();
foreach (string value in song.Language)
{
this.Language.Add(value);
}
this.Notes = new CNotes(song.Notes);
}
public string GetMP3()
{
return Path.Combine(Folder, MP3FileName);
@@ -254,6 +390,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)))
{
@@ -328,6 +476,29 @@ namespace Vocaluxe.Lib.Song
if (CHelper.TryParse(Value, out this.Finish))
this.Finish /= 1000f;
break;
case "PREVIEWSTART":
if (CHelper.TryParse(Value, out this.PreviewStart))
if (this.PreviewStart < 0f)
this.PreviewStart = 0f;
else
HeaderFlags |= EHeaderFlags.PreviewStart;
break;
case "MEDLEYSTARTBEAT":
if (int.TryParse(Value, out this.Medley.StartBeat))
HeaderFlags |= EHeaderFlags.MedleyStartBeat;
break;
case "MEDLEYENDBEAT":
if (int.TryParse(Value, out this.Medley.EndBeat))
HeaderFlags |= EHeaderFlags.MedleyEndBeat;
break;
case "CALCMEDLEY":
if (Value.ToUpper() == "OFF")
this.CalculateMedley = false;
break;
case "RELATIVE":
if (Value.ToUpper() == "YES" && Value.ToUpper() != "NO")
this.Relative = EOffOn.TR_CONFIG_ON;
break;
default:
;
break;
@@ -343,25 +514,82 @@ namespace Vocaluxe.Lib.Song
}
} //end of while
if (HeaderFlags != (EHeaderFlags.Title | EHeaderFlags.Artist | EHeaderFlags.MP3 | EHeaderFlags.BPM))
if ((HeaderFlags & EHeaderFlags.Title) == 0)
{
CLog.LogError("Title tag missing: " + FilePath);
return false;
}
if ((HeaderFlags & EHeaderFlags.Artist) == 0)
{
CLog.LogError("Artist tag missing: " + FilePath);
return false;
}
if ((HeaderFlags & EHeaderFlags.MP3) == 0)
{
CLog.LogError("MP3 tag missing: " + FilePath);
return false;
}
if ((HeaderFlags & EHeaderFlags.BPM) == 0)
{
CLog.LogError("BPM tag missing: " + FilePath);
return false;
}
if (this.Relative == EOffOn.TR_CONFIG_ON)
{
CLog.LogError("Relative songs are not supported by Vocaluxe (perhaps later)! (" + FilePath + ")");
return false;
}
#region check medley tags
if ((HeaderFlags & EHeaderFlags.MedleyStartBeat) != 0 && (HeaderFlags & EHeaderFlags.MedleyEndBeat) != 0)
{
if (this.Medley.StartBeat > this.Medley.EndBeat)
{
CLog.LogError("MedleyStartBeat is bigger than MedleyEndBeat in file: " + FilePath);
HeaderFlags = HeaderFlags - EHeaderFlags.MedleyStartBeat - EHeaderFlags.MedleyEndBeat;
}
}
if ((HeaderFlags & EHeaderFlags.PreviewStart) == 0 || this.PreviewStart == 0f)
{
//PreviewStart is not set or <=0
if ((HeaderFlags & EHeaderFlags.MedleyStartBeat) != 0)
//fallback to MedleyStart
this.PreviewStart = CGame.GetTimeFromBeats(this.Medley.StartBeat, this.BPM);
else
//else set to 0, it will be set in FindRefrainStart
this.PreviewStart = 0f;
}
if ((HeaderFlags & EHeaderFlags.MedleyStartBeat) != 0 && (HeaderFlags & EHeaderFlags.MedleyEndBeat) != 0)
{
this.Medley.Source = EMedleySource.Tag;
this.Medley.FadeInTime = CSettings.DefaultMedleyFadeInTime;
this.Medley.FadeOutTime = CSettings.DefaultMedleyFadeOutTime;
}
#endregion check medley tags
this.Encoding = sr.CurrentEncoding;
}
catch (Exception)
catch (Exception e)
{
CLog.LogError("Error reading txt header in file \"" + FilePath + "\": " + e.Message);
return false;
}
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;
}
@@ -420,9 +648,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)
@@ -481,7 +710,7 @@ namespace Vocaluxe.Lib.Song
char chr = (char)sr.Read();
Param1 = CHelper.TryReadInt(sr);
NewSentence(Player, Param1);
isNewSentence = true;
@@ -504,7 +733,11 @@ namespace Vocaluxe.Lib.Song
CLog.LogError("Error loading song. Line No.: " + FileLineNo.ToString() + ". An unhandled exception occured (" + e.Message + "): " + FilePath);
return false;
}
FindRefrain();
FindShortEnd();
_NotesLoaded = true;
if(IsDuet)
CheckDuet();
return true;
}
@@ -570,5 +803,224 @@ 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;
public int end;
public int length;
}
private void FindRefrain()
{
if (this.IsDuet)
{
this.Medley.Source = EMedleySource.None;
return;
}
if (this.Medley.Source == EMedleySource.Tag)
return;
if (!this.CalculateMedley)
return;
CLines lines = this.Notes.GetLines(0);
if (lines.LineCount == 0)
return;
// build sentences list
List<string> sentences = new List<string>();
foreach (CLine line in lines.Line)
{
if (line.Points != 0)
sentences.Add(line.Lyrics);
else
sentences.Add(String.Empty);
}
// find equal sentences series
List<Series> series = new List<Series>();
for (int i = 0; i < lines.LineCount - 1; i++)
{
for (int j = i + 1; j < lines.LineCount; j++)
{
if (sentences[i] == sentences[j] && sentences[i] != String.Empty)
{
Series tempSeries = new Series();
tempSeries.start = i;
tempSeries.end = i;
int max = 0;
if (j + j - i - 1 > lines.LineCount - 1)
max = lines.LineCount - 1 - j;
else
max = j - i - 1;
for (int k = 1; k <= max; k++)
{
if (sentences[i + k] == sentences[j + k] && sentences[i + k] != String.Empty)
tempSeries.end = i + k;
else
break;
}
tempSeries.length = tempSeries.end - tempSeries.start + 1;
series.Add(tempSeries);
}
}
}
// search for longest series
int longest = 0;
for (int i = 0; i < series.Count; i++)
{
if (series[i].length > series[longest].length)
longest = i;
}
// set medley vars
if (series.Count > 0 && series[longest].length > CSettings.MedleyMinSeriesLength)
{
this.Medley.StartBeat = lines.Line[series[longest].start].FirstNoteBeat;
this.Medley.EndBeat = lines.Line[series[longest].end].LastNoteBeat;
bool foundEnd = false;
// set end if duration > MedleyMinDuration
if (CGame.GetTimeFromBeats(this.Medley.StartBeat, this.BPM) + CSettings.MedleyMinDuration >
CGame.GetTimeFromBeats(this.Medley.EndBeat, this.BPM))
foundEnd = true;
if (!foundEnd)
{
for (int i = series[longest].start + 1; i < lines.LineCount - 1; i++)
{
if (CGame.GetTimeFromBeats(this.Medley.StartBeat, this.BPM) + CSettings.MedleyMinDuration >
CGame.GetTimeFromBeats(lines.Line[i].LastNoteBeat, this.BPM))
{
foundEnd = true;
this.Medley.EndBeat = lines.Line[i].LastNoteBeat;
}
}
}
if (foundEnd)
{
this.Medley.Source = EMedleySource.Calculated;
this.Medley.FadeInTime = CSettings.DefaultMedleyFadeInTime;
this.Medley.FadeOutTime = CSettings.DefaultMedleyFadeOutTime;
}
}
if (this.PreviewStart == 0f)
{
if (this.Medley.Source == EMedleySource.Calculated)
this.PreviewStart = CGame.GetTimeFromBeats(this.Medley.StartBeat, this.BPM);
}
}
private void FindShortEnd(){
CLines lines = this.Notes.GetLines(0);
if (lines.LineCount == 0)
return;
// build sentences list
List<string> sentences = new List<string>();
foreach (CLine line in lines.Line)
{
if (line.Points != 0)
sentences.Add(line.Lyrics);
else
sentences.Add(String.Empty);
}
// find equal sentences series
List<Series> series = new List<Series>();
for (int i = 0; i < lines.LineCount - 1; i++)
{
for (int j = i + 1; j < lines.LineCount; j++)
{
if (sentences[i] == sentences[j] && sentences[i] != String.Empty)
{
Series tempSeries = new Series();
tempSeries.start = i;
tempSeries.end = i;
int max = 0;
if (j + j - i - 1 > lines.LineCount - 1)
max = lines.LineCount - 1 - j;
else
max = j - i - 1;
for (int k = 1; k <= max; k++)
{
if (sentences[i + k] == sentences[j + k] && sentences[i + k] != String.Empty)
tempSeries.end = i + k;
else
break;
}
tempSeries.length = tempSeries.end - tempSeries.start + 1;
series.Add(tempSeries);
}
}
}
//Calculate length of singing
int stop = (lines.Line[lines.Line.Length - 1].LastNoteBeat - lines.Line[0].FirstNoteBeat) / 2;
//Check if stop is in series
for (int i = 0; i < series.Count; i++)
{
if (lines.Line[series[i].start].FirstNoteBeat < stop && lines.Line[series[i].end].LastNoteBeat > stop)
{
if (stop < (lines.Line[series[i].start].FirstNoteBeat + ((lines.Line[series[i].end].LastNoteBeat - lines.Line[series[i].start].FirstNoteBeat) / 2)))
{
this.ShortEnd = lines.Line[series[i].start-1].LastNote.EndBeat;
return;
}
else
{
this.ShortEnd = lines.Line[series[i].end].LastNote.EndBeat;
return;
}
}
}
//Check if stop is in line
for (int i = 0; i < lines.Line.Length; i++)
{
if (lines.Line[i].FirstNoteBeat < stop && lines.Line[i].LastNoteBeat > stop)
{
this.ShortEnd = lines.Line[i].LastNoteBeat;
return;
}
}
ShortEnd = stop;
}
public object Clone()
{
return base.MemberwiseClone();
}
}
}
+36 -3
View File
@@ -234,6 +234,21 @@ namespace Vocaluxe.Lib.Sound
}
}
public void SetStreamVolumeMax(int Stream, float Volume)
{
if (_Initialized)
{
lock (MutexDecoder)
{
if (AlreadyAdded(Stream))
{
_Decoder[GetStreamIndex(Stream)].VolumeMax = Volume;
}
}
}
}
public float GetLength(int Stream)
{
if (_Initialized)
@@ -399,6 +414,7 @@ namespace Vocaluxe.Lib.Sound
private bool _Initialized;
private int _ByteCount = 4;
private float _Volume = 1f;
private float _VolumeMax = 1f;
private Stopwatch _fadeTimer = new Stopwatch();
@@ -500,6 +516,23 @@ namespace Vocaluxe.Lib.Sound
}
}
public float VolumeMax
{
get { return _VolumeMax * 100f; }
set
{
lock (MutexData)
{
_VolumeMax = value / 100f;
if (_VolumeMax < 0f)
_VolumeMax = 0f;
if (_VolumeMax > 1f)
_VolumeMax = 1f;
}
}
}
public float Position
{
get
@@ -804,7 +837,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;
}
@@ -826,7 +859,7 @@ namespace Vocaluxe.Lib.Sound
b[0] = buf[i];
b[1] = buf[i + 1];
b = BitConverter.GetBytes((Int16)(BitConverter.ToInt16(b, 0) * _Volume));
b = BitConverter.GetBytes((Int16)(BitConverter.ToInt16(b, 0) * _Volume * _VolumeMax));
buf[i] = b[0];
buf[i + 1] = b[1];
@@ -835,7 +868,7 @@ namespace Vocaluxe.Lib.Sound
b[0] = buf[i + 2];
b[1] = buf[i + 3];
b = BitConverter.GetBytes((Int16)(BitConverter.ToInt16(b, 0) * _Volume));
b = BitConverter.GetBytes((Int16)(BitConverter.ToInt16(b, 0) * _Volume * _VolumeMax));
buf[i + 2] = b[0];
buf[i + 3] = b[1];
}
+35 -2
View File
@@ -218,6 +218,21 @@ namespace Vocaluxe.Lib.Sound
}
}
public void SetStreamVolumeMax(int Stream, float Volume)
{
if (_Initialized)
{
lock (MutexDecoder)
{
if (AlreadyAdded(Stream))
{
_Decoder[GetStreamIndex(Stream)].VolumeMax = Volume;
}
}
}
}
public float GetLength(int Stream)
{
if (_Initialized)
@@ -375,6 +390,7 @@ namespace Vocaluxe.Lib.Sound
private bool _Initialized;
private int _ByteCount = 4;
private float _Volume = 1f;
private float _VolumeMax = 1f;
private Stopwatch _fadeTimer = new Stopwatch();
@@ -480,6 +496,23 @@ namespace Vocaluxe.Lib.Sound
}
}
public float VolumeMax
{
get { return _VolumeMax * 100f; }
set
{
lock (_LockData)
{
_VolumeMax = value / 100f;
if (_VolumeMax < 0f)
_VolumeMax = 0f;
if (_VolumeMax > 1f)
_VolumeMax = 1f;
}
}
}
public float Position
{
get
@@ -817,7 +850,7 @@ namespace Vocaluxe.Lib.Sound
b[0] = buf[i];
b[1] = buf[i + 1];
b = BitConverter.GetBytes((Int16)(BitConverter.ToInt16(b, 0) * _Volume));
b = BitConverter.GetBytes((Int16)(BitConverter.ToInt16(b, 0) * _Volume * _VolumeMax));
buf[i] = b[0];
buf[i + 1] = b[1];
@@ -826,7 +859,7 @@ namespace Vocaluxe.Lib.Sound
b[0] = buf[i + 2];
b[1] = buf[i + 3];
b = BitConverter.GetBytes((Int16)(BitConverter.ToInt16(b, 0) * _Volume));
b = BitConverter.GetBytes((Int16)(BitConverter.ToInt16(b, 0) * _Volume * _VolumeMax));
buf[i + 2] = b[0];
buf[i + 3] = b[1];
}
+2 -1
View File
@@ -37,7 +37,8 @@ namespace Vocaluxe.Lib.Sound
void Fade(int Stream, float TargetVolume, float Seconds);
void FadeAndPause(int Stream, float TargetVolume, float Seconds);
void FadeAndStop(int Stream, float TargetVolume, float Seconds);
void SetStreamVolume(int Stream, float Volume);
void SetStreamVolume(int Stream, float Volume);
void SetStreamVolumeMax(int Stream, float Volume);
float GetLength(int Stream);
float GetPosition(int Stream);
+92
View File
@@ -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;
}
}
}
}
@@ -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<EAnimationRepeat>(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();
}
}
@@ -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;
}
}
}
}
}
+30
View File
@@ -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();
}
}
+5
View File
@@ -38,6 +38,11 @@ namespace Vocaluxe.Menu
public SColorF Color;
public string GetThemeName()
{
return _Theme.Name;
}
#region Constructors
public CBackground()
{
+50 -6
View File
@@ -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;
@@ -40,8 +42,19 @@ namespace Vocaluxe.Menu
public float SReflectionSpace;
public float SReflectionHeight;
private bool _Selected;
public bool Pressed;
public bool EditMode
{
get { return Text.EditMode; }
set
{
Text.EditMode = value;
SText.EditMode = value;
}
}
private bool _Selected;
public bool Selected
{
get { return _Selected; }
@@ -53,6 +66,11 @@ namespace Vocaluxe.Menu
}
public bool Visible;
public string GetThemeName()
{
return _Theme.Name;
}
public CButton()
{
_Theme = new SThemeButton();
@@ -60,9 +78,12 @@ namespace Vocaluxe.Menu
Color = new SColorF();
SColor = new SColorF();
SelText = false;
Text = new CText();
SText = new CText();
Selected = false;
Visible = true;
EditMode = false;
Reflection = false;
ReflectionSpace = 0f;
@@ -113,6 +134,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 +217,8 @@ namespace Vocaluxe.Menu
}
Text.SaveTheme(writer);
if (SelText)
SText.SaveTheme(writer);
writer.WriteComment("<Reflection> If exists:");
writer.WriteComment(" <Space>: Reflection Space");
@@ -240,28 +270,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();
+310
View File
@@ -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<EEqualizerStyle>(item + "/Style", navigator, ref _Theme.Style);
_ThemeLoaded &= CHelper.TryGetEnumValueFromXML<EOffOn>(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("<Skin>: Texture name");
writer.WriteElementString("Skin", _Theme.TextureName);
writer.WriteComment("<X>, <Y>, <Z>, <W>, <H>: 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("<NumBars>: Number of equalizer-elements.");
writer.WriteElementString("NumBars", _Theme.NumBars.ToString("#0"));
writer.WriteComment("<Space>: Space between equalizer-elements.");
writer.WriteElementString("Space", Space.ToString("#0.00"));
writer.WriteComment("<Style>: Style of equalizer-elements: " + CConfig.ListStrings(Enum.GetNames(typeof(EEqualizerStyle))));
writer.WriteElementString("Style", Enum.GetName(typeof(EEqualizerStyle), _Theme.Style));
writer.WriteComment("<DrawNegative>: Draw negative values: " + CConfig.ListStrings(Enum.GetNames(typeof(EOffOn))));
writer.WriteElementString("DrawNegative", Enum.GetName(typeof(EOffOn), _Theme.DrawNegative));
writer.WriteComment("<Color>: Equalizer color from ColorScheme (high priority)");
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
if (_Theme.ColorName != String.Empty)
{
writer.WriteElementString("Color", _Theme.ColorName);
}
else
{
writer.WriteElementString("R", Color.R.ToString("#0.00"));
writer.WriteElementString("G", Color.G.ToString("#0.00"));
writer.WriteElementString("B", Color.B.ToString("#0.00"));
writer.WriteElementString("A", Color.A.ToString("#0.00"));
}
writer.WriteComment("<MaxColor>: Equalizer color for maximal volume from ColorScheme (high priority)");
writer.WriteComment("or <MaxR>, <MaxG>, <MaxB>, <MaxA> (lower priority)");
if (_Theme.ColorName != String.Empty)
{
writer.WriteElementString("MaxColor", _Theme.ColorName);
}
else
{
writer.WriteElementString("MaxR", Color.R.ToString("#0.00"));
writer.WriteElementString("MaxG", Color.G.ToString("#0.00"));
writer.WriteElementString("MaxB", Color.B.ToString("#0.00"));
writer.WriteElementString("MaxA", Color.A.ToString("#0.00"));
}
writer.WriteComment("<Reflection> If exists:");
writer.WriteComment(" <Space>: Reflection Space");
writer.WriteComment(" <Height>: Reflection Height");
if (Reflection)
{
writer.WriteStartElement("Reflection");
writer.WriteElementString("Space", ReflectionSpace.ToString("#0"));
writer.WriteElementString("Height", ReflectionHeight.ToString("#0"));
writer.WriteEndElement();
}
writer.WriteEndElement();
return true;
}
return false;
}
public void Update(float[] weights)
{
if (weights == null || weights.Length == 0 || _Bars == null)
return;
for (int i = 0; i < _Bars.Length; i++)
{
if (weights.Length > i){
_Bars[i] = 1f - weights[i];
if (_Theme.DrawNegative == EOffOn.TR_CONFIG_OFF && weights[i] < 0)
_Bars[i] = (1f + weights[i]);
}
else
_Bars[i] = 0f;
}
}
public void Reset()
{
if (_Bars == null || _Bars.Length == 0)
return;
for (int i = 0; i < _Bars.Length; i++)
{
_Bars[i] = 0f;
}
}
public void Draw()
{
if (_Bars == null)
return;
float dx = (Rect.W ) / _Bars.Length;
int max = _Bars.Length - 1;
float maxB = _Bars[max];
for (int i = 0; i < _Bars.Length - 1; i++)
{
if (_Bars[i] > maxB)
{
maxB = _Bars[i];
max = i;
}
}
for (int i = 0; i < _Bars.Length; i++)
{
SRectF bar = new SRectF(Rect.X + dx * i, Rect.Y + Rect.H - _Bars[i] * Rect.H, dx - Space, _Bars[i] * Rect.H, Rect.Z);
SColorF color = Color;
if (i == max)
{
color = MaxColor;
}
CDraw.DrawColor(color, bar);
if (Reflection)
CDraw.DrawColorReflection(color, bar, ReflectionSpace, ReflectionHeight);
}
}
public void UnloadTextures()
{
}
public void LoadTextures()
{
if (_Theme.ColorName != String.Empty)
Color = CTheme.GetColor(_Theme.ColorName);
if (_Theme.MaxColorName != String.Empty)
MaxColor = CTheme.GetColor(_Theme.MaxColorName);
}
public void ReloadTextures()
{
UnloadTextures();
LoadTextures();
}
#region ThemeEdit
public void MoveElement(int stepX, int stepY)
{
Rect.X += stepX;
Rect.Y += stepY;
}
public void ResizeElement(int stepW, int stepH)
{
Rect.W += stepW;
if (Rect.W <= 0)
Rect.W = 1;
Rect.H += stepH;
if (Rect.H <= 0)
Rect.H = 1;
}
#endregion ThemeEdit
}
}
+6 -5
View File
@@ -451,20 +451,21 @@ namespace Vocaluxe.Menu
KeyEvent KeyEvent = new KeyEvent();
MouseEvent MouseEvent = new MouseEvent();
bool PopupPlayerControlAllowed = _CurrentScreen != EScreens.ScreenOptionsRecord && _CurrentScreen != EScreens.ScreenSing && _CurrentScreen != EScreens.ScreenSong;
bool PopupPlayerControlAllowed = _CurrentScreen != EScreens.ScreenOptionsRecord && _CurrentScreen != EScreens.ScreenSing &&
_CurrentScreen != EScreens.ScreenSong && _CurrentScreen != EScreens.ScreenCredits;
bool Resume = true;
while (keys.PollEvent(ref KeyEvent))
{
if (KeyEvent.Key == Keys.Left || KeyEvent.Key == Keys.Right || KeyEvent.Key == Keys.Up || KeyEvent.Key == Keys.Down)
{
CSettings.MouseInacive();
CSettings.MouseInactive();
_Cursor.FadeOut();
}
if (PopupPlayerControlAllowed && KeyEvent.Key == Keys.Tab)
{
if (_CurrentPopupScreen == EPopupScreens.NoPopup)
if (_CurrentPopupScreen == EPopupScreens.NoPopup && CConfig.BackgroundMusic == EOffOn.TR_CONFIG_ON)
ShowPopup(EPopupScreens.PopupPlayerControl);
else
HidePopup(EPopupScreens.PopupPlayerControl);
@@ -509,7 +510,7 @@ namespace Vocaluxe.Menu
bool isOverPopupPlayerControl = CHelper.IsInBounds(_PopupScreens[(int)EPopupScreens.PopupPlayerControl].ScreenArea, MouseEvent);
if (PopupPlayerControlAllowed && isOverPopupPlayerControl)
{
if (_CurrentPopupScreen == EPopupScreens.NoPopup)
if (_CurrentPopupScreen == EPopupScreens.NoPopup && CConfig.BackgroundMusic == EOffOn.TR_CONFIG_ON)
ShowPopup(EPopupScreens.PopupPlayerControl);
}
@@ -520,7 +521,7 @@ namespace Vocaluxe.Menu
if (_CurrentPopupScreen != EPopupScreens.NoPopup)
handled = _PopupScreens[(int)_CurrentPopupScreen].HandleMouse(MouseEvent);
if (!handled && !_Fading && (_Cursor.IsActive || MouseEvent.LB || MouseEvent.RB))
if (!handled && !_Fading && (_Cursor.IsActive || MouseEvent.LB || MouseEvent.RB || MouseEvent.MB))
Resume &= _Screens[(int)_CurrentScreen].HandleMouse(MouseEvent);
}
return Resume;
+6 -2
View File
@@ -14,7 +14,9 @@ namespace Vocaluxe.Menu
TSongMenu,
TLyric,
TSingNote,
TNameSelection
TNameSelection,
TEqualizer,
TPlaylist
}
class CInteraction
@@ -42,7 +44,9 @@ namespace Vocaluxe.Menu
_Type == EType.TStatic ||
_Type == EType.TSongMenu ||
_Type == EType.TLyric ||
_Type == EType.TSingNote);
_Type == EType.TSingNote ||
_Type == EType.TEqualizer ||
_Type == EType.TPlaylist);
}
}
+5
View File
@@ -47,6 +47,11 @@ namespace Vocaluxe.Menu
private float _Alpha = 1f;
public string GetThemeName()
{
return _Theme.Name;
}
public SRectF Rect
{
get { return new SRectF(_X, _Y, _MaxW, _H, _Z); }
+264 -19
View File
@@ -36,6 +36,8 @@ namespace Vocaluxe.Menu
private List<CLyric> _Lyrics;
private List<CSingNotes> _SingNotes;
private List<CNameSelection> _NameSelections;
private List<CEqualizer> _Equalizers;
private List<CPlaylist> _Playlists;
private Hashtable _htBackgrounds;
private Hashtable _htStatics;
@@ -46,6 +48,8 @@ namespace Vocaluxe.Menu
private Hashtable _htSelectSlides;
private Hashtable _htSingNotes;
private Hashtable _htNameSelections;
private Hashtable _htEqualizers;
private Hashtable _htPlaylists;
private int _PrevMouseX;
@@ -67,6 +71,8 @@ namespace Vocaluxe.Menu
protected string[] _ThemeSelectSlides;
protected string[] _ThemeSingNotes;
protected string[] _ThemeNameSelections;
protected string[] _ThemeEqualizers;
protected string[] _ThemePlaylists;
protected SRectF _ScreenArea;
@@ -99,6 +105,8 @@ namespace Vocaluxe.Menu
_Lyrics = new List<CLyric>();
_SingNotes = new List<CSingNotes>();
_NameSelections = new List<CNameSelection>();
_Equalizers = new List<CEqualizer>();
_Playlists = new List<CPlaylist>();
_htBackgrounds = new Hashtable();
_htStatics = new Hashtable();
@@ -109,6 +117,8 @@ namespace Vocaluxe.Menu
_htSelectSlides = new Hashtable();
_htSingNotes = new Hashtable();
_htNameSelections = new Hashtable();
_htEqualizers = new Hashtable();
_htPlaylists = new Hashtable();
_PrevMouseX = 0;
_PrevMouseY = 0;
@@ -129,6 +139,8 @@ namespace Vocaluxe.Menu
_ThemeSelectSlides = null;
_ThemeSingNotes = null;
_ThemeNameSelections = null;
_ThemeEqualizers = null;
_ThemePlaylists = null;
}
#region ThemeHandler
@@ -311,6 +323,38 @@ namespace Vocaluxe.Menu
}
}
}
if (_ThemeEqualizers != null)
{
for (int i = 0; i < _ThemeEqualizers.Length; i++)
{
CEqualizer eq = new CEqualizer();
if (eq.LoadTheme("//root/" + _ThemeName, _ThemeEqualizers[i], navigator, SkinIndex))
{
_htEqualizers.Add(_ThemeEqualizers[i], AddEqualizer(eq));
}
else
{
CLog.LogError("Can't load equalizer \"" + _ThemeEqualizers[i] + "\" in screen " + _ThemeName);
}
}
}
if (_ThemePlaylists != null)
{
for (int i = 0; i < _ThemePlaylists.Length; i++)
{
CPlaylist pls = new CPlaylist();
if (pls.LoadTheme("//root/" + _ThemeName, _ThemePlaylists[i], navigator, SkinIndex))
{
_htPlaylists.Add(_ThemePlaylists[i], AddPlaylist(pls));
}
else
{
CLog.LogError("Can't load Playlist \"" + _ThemePlaylists[i] + "\" in screen " + _ThemeName);
}
}
}
}
else
{
@@ -386,6 +430,18 @@ namespace Vocaluxe.Menu
_NameSelections[i].SaveTheme(writer);
}
//Equalizers
for (int i = 0; i < _Equalizers.Count; i++)
{
_Equalizers[i].SaveTheme(writer);
}
//Playlists
for (int i = 0; i < _Playlists.Count; i++)
{
_Playlists[i].SaveTheme(writer);
}
writer.WriteEndElement();
// End of File
@@ -442,6 +498,16 @@ namespace Vocaluxe.Menu
{
ns.ReloadTextures();
}
foreach (CEqualizer eq in _Equalizers)
{
eq.ReloadTextures();
}
foreach (CPlaylist pls in _Playlists)
{
pls.ReloadTextures();
}
}
public virtual void UnloadTextures()
@@ -490,7 +556,15 @@ namespace Vocaluxe.Menu
{
ns.UnloadTextures();
}
foreach (CPlaylist pls in _Playlists)
{
pls.UnloadTextures();
}
foreach (CEqualizer eq in _Equalizers)
{
eq.UnloadTextures();
}
}
@@ -547,6 +621,16 @@ namespace Vocaluxe.Menu
{
return _NameSelections;
}
public List<CEqualizer> GetEqualizers()
{
return _Equalizers;
}
public List<CPlaylist> GetPlaylists()
{
return _Playlists;
}
#endregion GetLists
#region ElementHandler
@@ -622,6 +706,22 @@ namespace Vocaluxe.Menu
return _NameSelections.ToArray();
}
}
public CEqualizer[] Equalizers
{
get
{
return _Equalizers.ToArray();
}
}
public CPlaylist[] Playlists
{
get
{
return _Playlists.ToArray();
}
}
#endregion Get Arrays
#region Hashtables
@@ -741,6 +841,32 @@ namespace Vocaluxe.Menu
throw;
}
}
public int htEqualizer(string key)
{
try
{
return (int)_htEqualizers[key];
}
catch (Exception)
{
CLog.LogError("Can't find Equalizer Element \"" + key + "\" in Screen " + _ThemeName);
throw;
}
}
public int htPlaylists(string key)
{
try
{
return (int)_htPlaylists[key];
}
catch (Exception)
{
CLog.LogError("Can't find Playlist Element \"" + key + "\" in Screen " + _ThemeName);
throw;
}
}
#endregion Hashtables
#endregion ElementHandler
@@ -752,22 +878,22 @@ namespace Vocaluxe.Menu
if (KeyEvent.Key == Keys.Left)
{
if (_Interactions.Count > 0 && _Interactions[_Selection].Type == EType.TSelectSlide && KeyEvent.Mod != Modifier.Shift)
PrevElement();
KeyEvent.Handled = PrevElement();
else
_NextInteraction(KeyEvent);
KeyEvent.Handled = _NextInteraction(KeyEvent);
}
if (KeyEvent.Key == Keys.Right)
{
if (_Interactions.Count > 0 && _Interactions[_Selection].Type == EType.TSelectSlide && KeyEvent.Mod != Modifier.Shift)
NextElement();
KeyEvent.Handled = NextElement();
else
_NextInteraction(KeyEvent);
KeyEvent.Handled = _NextInteraction(KeyEvent);
}
if (KeyEvent.Key == Keys.Up || KeyEvent.Key == Keys.Down)
{
_NextInteraction(KeyEvent);
KeyEvent.Handled = _NextInteraction(KeyEvent);
}
}
else
@@ -999,7 +1125,9 @@ namespace Vocaluxe.Menu
_Interactions[i].Type == EType.TStatic ||
_Interactions[i].Type == EType.TNameSelection ||
_Interactions[i].Type == EType.TText ||
_Interactions[i].Type == EType.TSongMenu))
_Interactions[i].Type == EType.TSongMenu ||
_Interactions[i].Type == EType.TEqualizer ||
_Interactions[i].Type == EType.TPlaylist))
{
ZSort zs = new ZSort();
zs.ID = i;
@@ -1085,6 +1213,20 @@ namespace Vocaluxe.Menu
_AddInteraction(_NameSelections.Count - 1, EType.TNameSelection);
return _NameSelections.Count - 1;
}
public int AddEqualizer(CEqualizer eq)
{
_Equalizers.Add(eq);
_AddInteraction(_Equalizers.Count - 1, EType.TEqualizer);
return _Equalizers.Count - 1;
}
public int AddPlaylist(CPlaylist pls)
{
_Playlists.Add(pls);
_AddInteraction(_Playlists.Count - 1, EType.TPlaylist);
return _Playlists.Count - 1;
}
#endregion Elements
#region InteractionHandling
@@ -1100,16 +1242,28 @@ namespace Vocaluxe.Menu
_PrevInteraction();
}
public void NextElement()
/// <summary>
/// Selects the next element in a menu interaction.
/// </summary>
/// <returns>True if the next element is selected. False if either there is no next element or the interaction does not provide such a method.</returns>
public bool NextElement()
{
if (_Interactions.Count > 0)
_NextElement();
return _NextElement();
return false;
}
public void PrevElement()
/// <summary>
/// Selects the previous element in a menu interaction.
/// </summary>
/// <returns>True if the previous element is selected. False if either there is no next element or the interaction does not provide such a method.</returns>
public bool PrevElement()
{
if (_Interactions.Count > 0)
_PrevElement();
return _PrevElement();
return false;
}
public bool SetInteractionToButton(CButton button)
@@ -1233,6 +1387,14 @@ namespace Vocaluxe.Menu
if (CHelper.IsInBounds(_NameSelections[interact.Num].Rect, x, y))
return true;
break;
case EType.TEqualizer:
if (CHelper.IsInBounds(_Equalizers[interact.Num].Rect, x, y))
return true;
break;
case EType.TPlaylist:
if (CHelper.IsInBounds(_Playlists[interact.Num].Rect, x, y))
return true;
break;
}
return false;
}
@@ -1255,6 +1417,10 @@ namespace Vocaluxe.Menu
return _Lyrics[interact.Num].Rect.Z;
case EType.TNameSelection:
return _NameSelections[interact.Num].Rect.Z;
case EType.TEqualizer:
return _Equalizers[interact.Num].Rect.Z;
case EType.TPlaylist:
return _Playlists[interact.Num].Rect.Z;
}
return CSettings.zFar;
}
@@ -1283,6 +1449,12 @@ namespace Vocaluxe.Menu
case EType.TNameSelection:
return _NameSelections[_Interactions[interaction].Num].Rect.Z;
case EType.TEqualizer:
return _Equalizers[_Interactions[interaction].Num].Rect.Z;
case EType.TPlaylist:
return _Playlists[_Interactions[interaction].Num].Rect.Z;
}
return CSettings.zFar;
@@ -1342,7 +1514,12 @@ namespace Vocaluxe.Menu
_SetSelected();
}
private void _NextInteraction(KeyEvent Key)
/// <summary>
/// Selects the next best interaction in a menu.
/// </summary>
/// <param name="Key"></param>
/// <returns></returns>
private bool _NextInteraction(KeyEvent Key)
{
KeyEvent[] Directions = new KeyEvent[4];
float[] Distances = new float[4];
@@ -1408,8 +1585,11 @@ namespace Vocaluxe.Menu
_Selection = element;
_SetSelected();
_SetHighlighted(_Selection);
return true;
}
}
return false;
}
private int _GetNextElement(KeyEvent Key, out float Distance, out int Stage)
@@ -1501,22 +1681,22 @@ namespace Vocaluxe.Menu
switch (Key.Key)
{
case Keys.Up:
if (vector.Y < 0f && (targetRect.X + targetRect.W > actualRect.X || actualRect.X + actualRect.W > targetRect.X))
if (vector.Y < 0f && (targetRect.X + targetRect.W > actualRect.X && actualRect.X + actualRect.W > targetRect.X))
inDirection = true;
break;
case Keys.Down:
if (vector.Y > 0f && (targetRect.X + targetRect.W > actualRect.X || actualRect.X + actualRect.W > targetRect.X))
if (vector.Y > 0f && (targetRect.X + targetRect.W > actualRect.X && actualRect.X + actualRect.W > targetRect.X))
inDirection = true;
break;
case Keys.Left:
if (vector.X < 0f && (targetRect.Y + targetRect.H > actualRect.Y || actualRect.Y + actualRect.H > targetRect.Y))
if (vector.X < 0f && (targetRect.Y + targetRect.H > actualRect.Y && actualRect.Y + actualRect.H > targetRect.Y))
inDirection = true;
break;
case Keys.Right:
if (vector.X > 0f && (targetRect.Y + targetRect.H > actualRect.Y || actualRect.Y + actualRect.H > targetRect.Y))
if (vector.X > 0f && (targetRect.Y + targetRect.H > actualRect.Y && actualRect.Y + actualRect.H > targetRect.Y))
inDirection = true;
break;
@@ -1568,16 +1748,30 @@ namespace Vocaluxe.Menu
return distance;
}
private void _NextElement()
/// <summary>
/// Selects the next element in a menu interaction.
/// </summary>
/// <returns>True if the next element is selected. False if either there is no next element or the interaction does not provide such a method.</returns>
private bool _NextElement()
{
if (_Interactions[_Selection].Type == EType.TSelectSlide)
_SelectSlides[_Interactions[_Selection].Num].NextValue();
return _SelectSlides[_Interactions[_Selection].Num].NextValue();
return false;
}
private void _PrevElement()
/// <summary>
/// Selects the previous element in a menu interaction.
/// </summary>
/// <returns>
/// True if the previous element is selected. False if either there is no previous element or the interaction does not provide such a method.
/// </returns>
private bool _PrevElement()
{
if (_Interactions[_Selection].Type == EType.TSelectSlide)
_SelectSlides[_Interactions[_Selection].Num].PrevValue();
return _SelectSlides[_Interactions[_Selection].Num].PrevValue();
return false;
}
private void _SetSelected()
@@ -1605,6 +1799,12 @@ namespace Vocaluxe.Menu
case EType.TNameSelection:
_NameSelections[_Interactions[_Selection].Num].Selected = true;
break;
case EType.TEqualizer:
_Equalizers[_Interactions[_Selection].Num].Selected = true;
break;
case EType.TPlaylist:
_Playlists[_Interactions[_Selection].Num].Selected = true;
break;
}
}
@@ -1633,6 +1833,12 @@ namespace Vocaluxe.Menu
case EType.TNameSelection:
_NameSelections[_Interactions[_Selection].Num].Selected = false;
break;
case EType.TEqualizer:
_Equalizers[_Interactions[_Selection].Num].Selected = false;
break;
case EType.TPlaylist:
_Playlists[_Interactions[_Selection].Num].Selected = false;
break;
}
}
@@ -1664,6 +1870,9 @@ namespace Vocaluxe.Menu
case EType.TNameSelection:
//_NameSelections[_Interactions[selection].Num].Selected = true;
break;
case EType.TPlaylist:
//_Playlists[_Interactions[_Selection].Num].Selected = true;
break;
}
}
@@ -1695,6 +1904,9 @@ namespace Vocaluxe.Menu
case EType.TNameSelection:
//_NameSelections[_Interactions[selection].Num].Selected = false;
break;
case EType.TPlaylist:
//_Playlists[_Interactions[_Selection].Num].Selected = true;
break;
}
}
@@ -1744,6 +1956,12 @@ namespace Vocaluxe.Menu
case EType.TNameSelection:
return _NameSelections[_Interactions[interaction].Num].Visible;
case EType.TEqualizer:
return _Equalizers[_Interactions[interaction].Num].Visible;
case EType.TPlaylist:
return _Playlists[_Interactions[interaction].Num].Visible;
}
return false;
@@ -1774,6 +1992,12 @@ namespace Vocaluxe.Menu
case EType.TNameSelection:
return _NameSelections[_Interactions[interaction].Num].Rect;
case EType.TEqualizer:
return _Equalizers[_Interactions[interaction].Num].Rect;
case EType.TPlaylist:
return _Playlists[_Interactions[interaction].Num].Rect;
}
return Result;
@@ -1815,6 +2039,19 @@ namespace Vocaluxe.Menu
case EType.TNameSelection:
_NameSelections[_Interactions[interaction].Num].Draw();
break;
case EType.TEqualizer:
if (!_Equalizers[_Interactions[interaction].Num].ScreenHandles)
{
//TODO:
//Call Update-Method of Equalizer and give infos about bg-sound.
//_Equalizers[_Interactions[interaction].Num].Draw();
}
break;
case EType.TPlaylist:
_Playlists[_Interactions[interaction].Num].Draw();
break;
//TODO:
//case EType.TLyric:
@@ -1859,6 +2096,10 @@ namespace Vocaluxe.Menu
case EType.TNameSelection:
_NameSelections[_Interactions[_Selection].Num].MoveElement(stepX, stepY);
break;
case EType.TPlaylist:
_Playlists[_Interactions[_Selection].Num].MoveElement(stepX, stepY);
break;
}
}
}
@@ -1896,6 +2137,10 @@ namespace Vocaluxe.Menu
case EType.TNameSelection:
_NameSelections[_Interactions[_Selection].Num].ResizeElement(stepW, stepH);
break;
case EType.TPlaylist:
_Playlists[_Interactions[_Selection].Num].ResizeElement(stepW, stepH);
break;
}
}
}
+5
View File
@@ -49,6 +49,11 @@ namespace Vocaluxe.Menu
private SThemeNameSelection _Theme;
private bool _ThemeLoaded;
public string GetThemeName()
{
return _Theme.Name;
}
public bool Selected = false;
public bool Visible = true;
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+97 -8
View File
@@ -38,11 +38,16 @@ namespace Vocaluxe.Menu
public EStyle TextStyle;
}
class CSelectSlide : IMenuElement
class CSelectSlide : IMenuElement, ICloneable
{
private SThemeSelectSlide _Theme;
private bool _ThemeLoaded;
public string GetThemeName()
{
return _Theme.Name;
}
public SRectF Rect;
public SRectF RectArrowLeft;
public SRectF RectArrowRight;
@@ -56,6 +61,9 @@ namespace Vocaluxe.Menu
public SColorF TextColor;
public SColorF STextColor;
public float TextRelativeX;
public float TextRelativeY;
public float TextH;
public float MaxW;
@@ -112,6 +120,14 @@ namespace Vocaluxe.Menu
}
}
public int NumValues
{
get
{
return _ValueNames.Count;
}
}
private int _NumVisible = -1;
public int NumVisible
{
@@ -151,6 +167,63 @@ namespace Vocaluxe.Menu
_ValueNames = new List<string>();
}
public CSelectSlide(CSelectSlide slide)
{
_Theme = new SThemeSelectSlide();
_Theme.TextureArrowLeftName = slide._Theme.TextureArrowLeftName;
_Theme.TextureArrowRightName = slide._Theme.TextureArrowRightName;
_Theme.STextureName = slide._Theme.STextureName;
_Theme.STextureArrowLeftName = slide._Theme.STextureArrowLeftName;
_Theme.STextureArrowRightName = slide._Theme.STextureArrowRightName;
_Theme.HTextureName = slide._Theme.HTextureName;
_Theme.ColorName = slide._Theme.ColorName;
_Theme.SColorName = slide._Theme.SColorName;
_Theme.HColorName = slide._Theme.HColorName;
_Theme.ArrowColorName = slide._Theme.ArrowColorName;
_Theme.SArrowColorName = slide._Theme.SArrowColorName;
_Theme.TextColorName = slide._Theme.TextColorName;
_Theme.STextColorName = slide._Theme.STextColorName;
_Theme.TextFont = slide._Theme.TextFont;
_Theme.TextStyle = slide._Theme.TextStyle;
_ThemeLoaded = false;
Rect = new SRectF(slide.Rect);
RectArrowLeft = new SRectF(slide.RectArrowLeft);
RectArrowRight = new SRectF(slide.RectArrowRight);
Color = new SColorF(slide.Color);
SColor = new SColorF(slide.SColor);
ColorArrow = new SColorF(slide.ColorArrow);
SColorArrow = new SColorF(slide.SColorArrow);
TextColor = new SColorF(slide.TextColor);
STextColor = new SColorF(slide.STextColor);
TextH = slide.TextH;
TextRelativeX = slide.TextRelativeX;
TextRelativeY = slide.TextRelativeY;
MaxW = slide.MaxW;
_Selected = slide._Selected;
_Textures = new List<STexture>(slide._Textures);
_ValueIndexes = new List<int>(slide._ValueIndexes);
_ValueNames = new List<string>(slide._ValueNames);
_ValueBounds = new List<SRectF>(slide._ValueBounds);
_Selection = slide._Selection;
_NumVisible = slide._NumVisible;
WithTextures = slide.WithTextures;
Visible = slide.Visible;
}
public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex)
{
string item = XmlPath + "/" + ElementName;
@@ -269,6 +342,10 @@ namespace Vocaluxe.Menu
}
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/TextH", navigator, ref TextH);
if(CHelper.TryGetFloatValueFromXML(item + "/TextRelativeX", navigator, ref TextRelativeX))
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/TextRelativeX", navigator, ref TextRelativeX);
if(CHelper.TryGetFloatValueFromXML(item + "/TextRelativeY", navigator, ref TextRelativeY))
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/TextRelativeY", navigator, ref TextRelativeY);
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/TextMaxW", navigator, ref MaxW);
_ThemeLoaded &= CHelper.GetValueFromXML(item + "/TextFont", navigator, ref _Theme.TextFont, "Normal");
_ThemeLoaded &= CHelper.TryGetEnumValueFromXML<EStyle>(item + "/TextStyle", navigator, ref _Theme.TextStyle);
@@ -433,6 +510,14 @@ namespace Vocaluxe.Menu
writer.WriteComment("<TextH>: Text height");
writer.WriteElementString("TextH", TextH.ToString("#0.00"));
writer.WriteComment("<TextRelativeX>: Text relative x-position");
if (TextRelativeX != 0)
writer.WriteElementString("TextRelativeX", TextRelativeX.ToString("#0.00"));
writer.WriteComment("<TextRelativeY>: Text relative y-position");
if (TextRelativeY != 0)
writer.WriteElementString("TextRelativeY", TextRelativeY.ToString("#0.00"));
writer.WriteComment("<TextMaxW>: Maximum text width (if exists)");
writer.WriteElementString("TextMaxW", MaxW.ToString("#0.00"));
@@ -581,14 +666,13 @@ namespace Vocaluxe.Menu
public void ProcessMouseMove(int x, int y)
{
_ArrowLeftSelected = CHelper.IsInBounds(RectArrowLeft, x, y);
_ArrowRightSelected = CHelper.IsInBounds(RectArrowRight, x, y);
_ArrowLeftSelected = CHelper.IsInBounds(RectArrowLeft, x, y) && _Selection > 0;
_ArrowRightSelected = CHelper.IsInBounds(RectArrowRight, x, y) && _Selection < _ValueNames.Count - 1;
}
public void ProcessMouseLBClick(int x, int y)
{
_ArrowLeftSelected = CHelper.IsInBounds(RectArrowLeft, x, y);
_ArrowRightSelected = CHelper.IsInBounds(RectArrowRight, x, y);
ProcessMouseMove(x, y);
if (_ArrowLeftSelected)
PrevValue();
@@ -688,12 +772,12 @@ namespace Vocaluxe.Menu
}
RectangleF bounds = CDraw.GetTextBounds(Text);
Text.X = x + dx/2f + dx * i;
Text.X = (x + dx/2f + dx * i)+TextRelativeX;
if (!WithTextures)
Text.Y = (int)(Rect.Y + (Rect.H - bounds.Height) / 2);
Text.Y = (int)((Rect.Y + (Rect.H - bounds.Height) / 2) + TextRelativeY);
else
Text.Y = (int)(Rect.Y + (Rect.H - bounds.Height));
Text.Y = (int)((Rect.Y + (Rect.H - bounds.Height)) + TextRelativeY);
Text.Z = Rect.Z;
Text.Draw();
@@ -746,6 +830,11 @@ namespace Vocaluxe.Menu
LoadTextures();
}
public object Clone()
{
return base.MemberwiseClone();
}
#region ThemeEdit
public void MoveElement(int stepX, int stepY)
{
+22
View File
@@ -22,6 +22,11 @@ namespace Vocaluxe.Menu
private SThemeStatic _Theme;
private bool _ThemeLoaded;
public string GetThemeName()
{
return _Theme.Name;
}
private STexture _Texture;
public STexture Texture
{
@@ -65,6 +70,23 @@ namespace Vocaluxe.Menu
Visible = true;
}
public CStatic(CStatic s)
{
_Theme = new SThemeStatic();
_ThemeLoaded = false;
_Texture = s.Texture;
Color = new SColorF(s.Color);
Rect = new SRectF(s.Rect);
Reflection = s.Reflection;
ReflectionSpace = s.ReflectionHeight;
ReflectionHeight = s.ReflectionSpace;
Selected = s.Selected;
Alpha = s.Alpha;
Visible = s.Visible;
}
public CStatic(STexture texture, SColorF color, SRectF rect)
{
_Theme = new SThemeStatic();
+62 -7
View File
@@ -41,6 +41,12 @@ namespace Vocaluxe.Menu
{
private SThemeText _Theme;
private bool _ThemeLoaded;
public string GetThemeName()
{
return _Theme.Name;
}
private bool _ButtonText;
private bool _PositionNeedsUpdate = true;
@@ -211,6 +217,7 @@ namespace Vocaluxe.Menu
public bool Selected;
public bool Visible = true;
public bool EditMode = false;
public float Alpha = 1f;
@@ -243,6 +250,37 @@ namespace Vocaluxe.Menu
Alpha = 1f;
}
public CText(CText text)
{
_Theme = new SThemeText();
_ThemeLoaded = false;
_ButtonText = false;
X = text._X;
Y = text._Y;
Z = text._Z;
Height = text._Height;
MaxWidth = text._MaxWidth;
Bounds = new SRectF(text._Bounds);
Align = text._Align;
HAlign = text._HAlign;
Style = text._Style;
Fon = text._Fon;
Color = new SColorF(text.Color);
SColor = new SColorF(text.SColor);
Reflection = text.Reflection;
ReflectionSpace = text.ReflectionSpace;
ReflectionHeight = text.ReflectionHeight;
Text = text._Text;
Selected = text.Selected;
Visible = text.Visible;
Alpha = text.Alpha;
EditMode = text.EditMode;
}
public CText(float x, float y, float z, EAlignment align, float h, float mw, float r, float g, float b, float a, EStyle style, string font, string text, float rspace, float rheight)
{
_Theme = new SThemeText();
@@ -538,7 +576,7 @@ namespace Vocaluxe.Menu
writer.WriteComment("<Font>: Text font name");
writer.WriteElementString("Font", Fon);
writer.WriteComment("<Text>: Text or translation tag");
writer.WriteComment("<Text>: Nothing or translation tag");
if (CLanguage.TranslationExists(_Theme.Text))
writer.WriteElementString("Text", _Theme.Text);
else
@@ -596,8 +634,10 @@ namespace Vocaluxe.Menu
SColorF color = new SColorF(CurrentColor.R, CurrentColor.G, CurrentColor.B, CurrentColor.A * Alpha);
CFonts.DrawText(_Text, _DrawPosition.tH, _DrawPosition.X, _DrawPosition.Y, Z, color);
if (!EditMode)
CFonts.DrawText(_Text, _DrawPosition.tH, _DrawPosition.X, _DrawPosition.Y, Z, color);
else
CFonts.DrawText(_Text + "|", _DrawPosition.tH, _DrawPosition.X, _DrawPosition.Y, Z, color);
if (Reflection)
{
@@ -616,7 +656,10 @@ namespace Vocaluxe.Menu
default:
break;
}
CFonts.DrawTextReflection(_Text, _DrawPosition.tH, _DrawPosition.X, _DrawPosition.Y, Z, color, ReflectionSpace + sFactor, ReflectionHeight);
if (!EditMode)
CFonts.DrawTextReflection(_Text, _DrawPosition.tH, _DrawPosition.X, _DrawPosition.Y, Z, color, ReflectionSpace + sFactor, ReflectionHeight);
else
CFonts.DrawTextReflection(_Text + "|", _DrawPosition.tH, _DrawPosition.X, _DrawPosition.Y, Z, color, ReflectionSpace + sFactor, ReflectionHeight);
}
if (Selected && (CSettings.GameState == EGameState.EditTheme))
@@ -653,7 +696,11 @@ namespace Vocaluxe.Menu
CFonts.SetFont(Fon);
CFonts.Style = Style;
CFonts.DrawText(Text, Height, x, Y, Z, color, begin, end);
if (!EditMode)
CFonts.DrawText(Text, Height, x, Y, Z, color, begin, end);
else
CFonts.DrawText(Text + "|", Height, x, Y, Z, color, begin, end);
if (Reflection)
{
@@ -732,13 +779,21 @@ namespace Vocaluxe.Menu
CFonts.SetFont(Fon);
CFonts.Style = Style;
CFonts.DrawText(_Text, h, x, y, Z, color);
if (!EditMode)
CFonts.DrawText(_Text, h, x, y, Z, color);
else
CFonts.DrawText(_Text + "|", h, x, y, Z, color);
if (reflection)
{
float space = (rectHeight - Y - bounds.Height) * 2f + reflectionSpace;
float height = reflectionHeight - (rectHeight - Y) + bounds.Height;
CFonts.DrawTextReflection(_Text, h, x, y, Z, color, space, height);
if (!EditMode)
CFonts.DrawTextReflection(_Text, h, x, y, Z, color, space, height);
else
CFonts.DrawTextReflection(_Text + "|", h, x, y, Z, color, space, height);
}
if (Selected && (CSettings.GameState == EGameState.EditTheme))
+1
View File
@@ -8,6 +8,7 @@ namespace Vocaluxe.Menu
{
interface IMenuElement
{
string GetThemeName();
bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex);
bool SaveTheme(XmlWriter writer);
+10 -5
View File
@@ -75,6 +75,11 @@ namespace Vocaluxe.Menu.SingNotes
_ActID = 0;
}
public string GetThemeName()
{
return _Theme.Name;
}
public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex)
{
string item = XmlPath + "/" + ElementName;
@@ -304,7 +309,7 @@ namespace Vocaluxe.Menu.SingNotes
float h = _PlayerNotes[n].Rect.H;
float dh = h / CSettings.NumNoteLines * (2f - (int)CGame.Player[_PlayerNotes[n].PlayerNr].Difficulty) / 4f;
float beats = Line.LastBeat - Line.FirstBeat + 1;
float beats = Line.LastNoteBeat - Line.FirstNoteBeat + 1;
if (beats == 0)
return;
@@ -324,7 +329,7 @@ namespace Vocaluxe.Menu.SingNotes
float width = note.Duration / beats * w;
SRectF rect = new SRectF(
_PlayerNotes[n].Rect.X + (note.StartBeat - Line.FirstBeat) / beats * w,
_PlayerNotes[n].Rect.X + (note.StartBeat - Line.FirstNoteBeat) / beats * w,
_PlayerNotes[n].Rect.Y + (CSettings.NumNoteLines - 1 - (note.Tone - BaseLine)/2) / CSettings.NumNoteLines * h - dh,
width,
h / CSettings.NumNoteLines + 2 * dh,
@@ -344,7 +349,7 @@ namespace Vocaluxe.Menu.SingNotes
if (CConfig.DrawToneHelper == EOffOn.TR_CONFIG_ON)
{
DrawToneHelper(n, (int)BaseLine, (CGame.MidBeatD - Line.FirstBeat) / beats * w);
DrawToneHelper(n, (int)BaseLine, (CGame.MidBeatD - Line.FirstNoteBeat) / beats * w);
}
int i = 0;
@@ -377,7 +382,7 @@ namespace Vocaluxe.Menu.SingNotes
foreach (CNote note in SingLine[CGame.Player[Player].CurrentLine].Notes)
{
if (note.StartBeat >= Line.FirstBeat && note.EndBeat <= Line.LastBeat)
if (note.StartBeat >= Line.FirstNoteBeat && note.EndBeat <= Line.LastNoteBeat)
{
float width = note.Duration / beats * w;
@@ -385,7 +390,7 @@ namespace Vocaluxe.Menu.SingNotes
width -= (1 - (CGame.MidBeatD - CGame.ActBeatD)) / beats * w;
SRectF rect = new SRectF(
_PlayerNotes[n].Rect.X + (note.StartBeat - Line.FirstBeat) / beats * w,
_PlayerNotes[n].Rect.X + (note.StartBeat - Line.FirstNoteBeat) / beats * w,
_PlayerNotes[n].Rect.Y + (CSettings.NumNoteLines - 1 - (note.Tone - BaseLine)/2) / CSettings.NumNoteLines * h - dh,
width,
h / CSettings.NumNoteLines + 2 * dh,
+40
View File
@@ -73,11 +73,31 @@ namespace Vocaluxe.Menu.SongMenu
_SongMenu.Draw();
}
public void ApplyVolume(float VolumeMax)
{
_SongMenu.ApplyVolume(VolumeMax);
}
public bool IsActive()
{
return _SongMenu.IsActive();
}
public void SetActive(bool Active)
{
_SongMenu.SetActive(Active);
}
public int GetSelectedSong()
{
return _SongMenu.GetSelectedSong();
}
public CStatic GetSelectedSongCover()
{
return _SongMenu.GetSelectedSongCover();
}
public void SetSelectedSong(int VisibleSongNr)
{
_SongMenu.SetSelectedSong(VisibleSongNr);
@@ -88,6 +108,11 @@ namespace Vocaluxe.Menu.SongMenu
return _SongMenu.GetSelectedCategory();
}
public void SetSelectedCategory(int CategoryNr)
{
_SongMenu.SetSelectedCategory(CategoryNr);
}
public int GetActualSelection()
{
return _SongMenu.GetActualSelection();
@@ -118,9 +143,24 @@ namespace Vocaluxe.Menu.SongMenu
return _SongMenu.GetRect();
}
public bool IsSmallView()
{
return _SongMenu.IsSmallView();
}
public void SetSmallView(bool SmallView)
{
_SongMenu.SetSmallView(SmallView);
}
#endregion ISongMenu
#region IMenuElement
public string GetThemeName()
{
return _SongMenu.GetThemeName();
}
public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex)
{
return _SongMenu.LoadTheme(XmlPath, ElementName, navigator, SkinIndex);
@@ -1,10 +1,48 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Vocaluxe.Base;
using Vocaluxe.Lib.Draw;
using Vocaluxe.Lib.Song;
namespace Vocaluxe.Menu.SongMenu
{
class CSongMenuDreidel : CSongMenuFramework
{
private SRectF _ScrollRect;
private CStatic _CoverBig;
private CStatic _TextBG;
private CStatic _DuetIcon;
private CStatic _VideoIcon;
private CText _Artist;
private CText _Title;
private CText _SongLength;
private int _actualSelection = -1;
public override int GetActualSelection()
{
return _actualSelection;
}
public override void Init()
{
base.Init();
/**
_CoverBig = _Theme.songMenuDreidel.StaticCoverBig;
_TextBG = _Theme.songMenuDreidel.StaticTextBG;
_DuetIcon = _Theme.songMenuDreidel.StaticDuetIcon;
_VideoIcon = _Theme.songMenuDreidel.StaticVideoIcon;
_Artist = _Theme.songMenuDreidel.TextArtist;
_Title = _Theme.songMenuDreidel.TextTitle;
_SongLength = _Theme.songMenuDreidel.TextSongLength;
**/
}
}
}
+111 -23
View File
@@ -20,6 +20,9 @@ namespace Vocaluxe.Menu.SongMenu
public string DuetIconName;
public string VideoIconName;
public string MedleyCalcIcon;
public string MedleyTagIcon;
public string ColorName;
//public SThemeSongMenuBook songMenuBook;
@@ -52,6 +55,16 @@ namespace Vocaluxe.Menu.SongMenu
/// </summary>
public int numH;
/// <summary>
/// Number of tiles horizontal in small-modus
/// </summary>
public int numWsmall;
/// <summary>
/// Number of tiles vertical in small-modus
/// </summary>
public int numHsmall;
/// <summary>
/// Space between tiles horizontal
/// </summary>
@@ -63,6 +76,7 @@ namespace Vocaluxe.Menu.SongMenu
public float spaceH;
public SRectF TileRect;
public SRectF TileRectSmall;
public CText TextArtist;
public CText TextTitle;
@@ -72,6 +86,8 @@ namespace Vocaluxe.Menu.SongMenu
public CStatic StaticTextBG;
public CStatic StaticDuetIcon;
public CStatic StaticVideoIcon;
public CStatic StaticMedleyCalcIcon;
public CStatic StaticMedleyTagIcon;
}
abstract class CSongMenuFramework : ISongMenu
@@ -99,6 +115,9 @@ namespace Vocaluxe.Menu.SongMenu
protected long _PendingTime = 500L;
private int _LockedInternal = -1;
protected bool _Active = false;
protected float _MaxVolume = 100f;
protected int _PreviewSelected //for preview only
{
@@ -201,6 +220,7 @@ namespace Vocaluxe.Menu.SongMenu
public void SetSelected(bool Selected)
{
_Selected = Selected;
SetActive(Selected);
}
public bool IsVisible()
@@ -225,10 +245,17 @@ namespace Vocaluxe.Menu.SongMenu
_Theme.songMenuTileBoard.StaticTextBG = new CStatic();
_Theme.songMenuTileBoard.StaticDuetIcon = new CStatic();
_Theme.songMenuTileBoard.StaticVideoIcon = new CStatic();
_Theme.songMenuTileBoard.StaticMedleyCalcIcon = new CStatic();
_Theme.songMenuTileBoard.StaticMedleyTagIcon = new CStatic();
_ThemeLoaded = false;
}
public string GetThemeName()
{
return _Theme.Name;
}
public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex)
{
string item = XmlPath + "/" + ElementName;
@@ -238,13 +265,8 @@ namespace Vocaluxe.Menu.SongMenu
_ThemeLoaded &= CHelper.GetValueFromXML(item + "/CoverBigBackground", navigator, ref _Theme.CoverBigBackgroundName, String.Empty);
_ThemeLoaded &= CHelper.GetValueFromXML(item + "/DuetIcon", navigator, ref _Theme.DuetIconName, String.Empty);
_ThemeLoaded &= CHelper.GetValueFromXML(item + "/VideoIcon", navigator, ref _Theme.VideoIconName, 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.GetValueFromXML(item + "/MedleyCalcIcon", navigator, ref _Theme.MedleyCalcIcon, String.Empty);
_ThemeLoaded &= CHelper.GetValueFromXML(item + "/MedleyTagIcon", navigator, ref _Theme.MedleyTagIcon, String.Empty);
if (CHelper.GetValueFromXML(item + "/Color", navigator, ref _Theme.ColorName, String.Empty))
{
@@ -264,6 +286,9 @@ namespace Vocaluxe.Menu.SongMenu
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/SpaceW", navigator, ref _Theme.songMenuTileBoard.spaceW);
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/SpaceH", navigator, ref _Theme.songMenuTileBoard.spaceH);
_ThemeLoaded &= CHelper.TryGetIntValueFromXML(item + "/SongMenuTileBoard/NumWsmall", navigator, ref _Theme.songMenuTileBoard.numWsmall);
_ThemeLoaded &= CHelper.TryGetIntValueFromXML(item + "/SongMenuTileBoard/NumHsmall", navigator, ref _Theme.songMenuTileBoard.numHsmall);
_ThemeLoaded &= _Theme.songMenuTileBoard.TextArtist.LoadTheme(item + "/SongMenuTileBoard", "TextArtist", navigator, SkinIndex);
_ThemeLoaded &= _Theme.songMenuTileBoard.TextTitle.LoadTheme(item + "/SongMenuTileBoard", "TextTitle", navigator, SkinIndex);
_ThemeLoaded &= _Theme.songMenuTileBoard.TextSongLength.LoadTheme(item + "/SongMenuTileBoard", "TextSongLength", navigator, SkinIndex);
@@ -272,6 +297,8 @@ namespace Vocaluxe.Menu.SongMenu
_ThemeLoaded &= _Theme.songMenuTileBoard.StaticTextBG.LoadTheme(item + "/SongMenuTileBoard", "StaticTextBG", navigator, SkinIndex);
_ThemeLoaded &= _Theme.songMenuTileBoard.StaticDuetIcon.LoadTheme(item + "/SongMenuTileBoard", "StaticDuetIcon", navigator, SkinIndex);
_ThemeLoaded &= _Theme.songMenuTileBoard.StaticVideoIcon.LoadTheme(item + "/SongMenuTileBoard", "StaticVideoIcon", navigator, SkinIndex);
_ThemeLoaded &= _Theme.songMenuTileBoard.StaticMedleyCalcIcon.LoadTheme(item + "/SongMenuTileBoard", "StaticMedleyCalcIcon", navigator, SkinIndex);
_ThemeLoaded &= _Theme.songMenuTileBoard.StaticMedleyTagIcon.LoadTheme(item + "/SongMenuTileBoard", "StaticMedleyTagIcon", navigator, SkinIndex);
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectX", navigator, ref _Theme.songMenuTileBoard.TileRect.X);
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectY", navigator, ref _Theme.songMenuTileBoard.TileRect.Y);
@@ -279,6 +306,12 @@ namespace Vocaluxe.Menu.SongMenu
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectW", navigator, ref _Theme.songMenuTileBoard.TileRect.W);
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectH", navigator, ref _Theme.songMenuTileBoard.TileRect.H);
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectSmallX", navigator, ref _Theme.songMenuTileBoard.TileRectSmall.X);
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectSmallY", navigator, ref _Theme.songMenuTileBoard.TileRectSmall.Y);
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectSmallZ", navigator, ref _Theme.songMenuTileBoard.TileRectSmall.Z);
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectSmallW", navigator, ref _Theme.songMenuTileBoard.TileRectSmall.W);
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectSmallH", navigator, ref _Theme.songMenuTileBoard.TileRectSmall.H);
#endregion SongMenuTileBoard
if (_ThemeLoaded)
@@ -309,12 +342,11 @@ namespace Vocaluxe.Menu.SongMenu
writer.WriteComment("<VideoIcon>: Texture name of video icon");
writer.WriteElementString("VideoIcon", _Theme.VideoIconName);
writer.WriteComment("<X>, <Y>, <Z>, <W>, <H>: SongMenu 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("<MedleyCalcIcon>: Texture name of medley calc (calculated) icon");
writer.WriteElementString("MedleyCalcIcon", _Theme.MedleyCalcIcon);
writer.WriteComment("<MedleyTagIcon>: Texture name of medley tag (manuelly set) icon");
writer.WriteElementString("MedleyTagIcon", _Theme.MedleyTagIcon);
writer.WriteComment("<Color>: Tile color from ColorScheme (high priority)");
writer.WriteComment("or <R>, <G>, <B>, <A> (lower priority)");
@@ -346,6 +378,12 @@ namespace Vocaluxe.Menu.SongMenu
writer.WriteComment("<SpaceH>: Space between tiles vertical");
writer.WriteElementString("SpaceH", _Theme.songMenuTileBoard.spaceH.ToString("#0.00"));
writer.WriteComment("<NumWsmall>: Number of tiles horizontal in small-mode");
writer.WriteElementString("NumWsmall", _Theme.songMenuTileBoard.numWsmall.ToString());
writer.WriteComment("<NumHsmall>: Number of tiles vertical in small-mode");
writer.WriteElementString("NumHsmall", _Theme.songMenuTileBoard.numHsmall.ToString());
writer.WriteComment("<TileRectX>, <TileRectY>, <TileRectZ>, <TileRectW>, <TileRectH>: SongMenu position, width and height");
writer.WriteElementString("TileRectX", _Theme.songMenuTileBoard.TileRect.X.ToString("#0"));
writer.WriteElementString("TileRectY", _Theme.songMenuTileBoard.TileRect.Y.ToString("#0"));
@@ -353,6 +391,13 @@ namespace Vocaluxe.Menu.SongMenu
writer.WriteElementString("TileRectW", _Theme.songMenuTileBoard.TileRect.W.ToString("#0"));
writer.WriteElementString("TileRectH", _Theme.songMenuTileBoard.TileRect.H.ToString("#0"));
writer.WriteComment("<TileRectSmallX>, <TileRectSmallY>, <TileRectSmallZ>, <TileRectSmallW>, <TileRectSmallH>: SongMenu position, width and height in small-mode");
writer.WriteElementString("TileRectSmallX", _Theme.songMenuTileBoard.TileRectSmall.X.ToString("#0"));
writer.WriteElementString("TileRectSmallY", _Theme.songMenuTileBoard.TileRectSmall.Y.ToString("#0"));
writer.WriteElementString("TileRectSmallZ", _Theme.songMenuTileBoard.TileRectSmall.Z.ToString("#0.00"));
writer.WriteElementString("TileRectSmallW", _Theme.songMenuTileBoard.TileRectSmall.W.ToString("#0"));
writer.WriteElementString("TileRectSmallH", _Theme.songMenuTileBoard.TileRectSmall.H.ToString("#0"));
_Theme.songMenuTileBoard.TextArtist.SaveTheme(writer);
_Theme.songMenuTileBoard.TextTitle.SaveTheme(writer);
_Theme.songMenuTileBoard.TextSongLength.SaveTheme(writer);
@@ -361,6 +406,8 @@ namespace Vocaluxe.Menu.SongMenu
_Theme.songMenuTileBoard.StaticTextBG.SaveTheme(writer);
_Theme.songMenuTileBoard.StaticDuetIcon.SaveTheme(writer);
_Theme.songMenuTileBoard.StaticVideoIcon.SaveTheme(writer);
_Theme.songMenuTileBoard.StaticMedleyCalcIcon.SaveTheme(writer);
_Theme.songMenuTileBoard.StaticMedleyTagIcon.SaveTheme(writer);
writer.WriteEndElement();
#endregion SongMenuTileBoard
@@ -465,11 +512,36 @@ namespace Vocaluxe.Menu.SongMenu
}
public virtual void ApplyVolume(float VolumeMax)
{
_MaxVolume = VolumeMax;
foreach (int stream in _streams)
{
CSound.SetStreamVolumeMax(stream, _MaxVolume);
}
}
public virtual bool IsActive()
{
return _Active;
}
public virtual void SetActive(bool Active)
{
_Active = Active;
}
public virtual int GetSelectedSong()
{
return -1;
}
public virtual CStatic GetSelectedSongCover()
{
return new CStatic();
}
public virtual int GetSelectedCategory()
{
return -1;
@@ -481,6 +553,23 @@ namespace Vocaluxe.Menu.SongMenu
return;
}
public virtual void SetSelectedCategory(int CategoryNr)
{
if (!_Initialized)
return;
}
public virtual void SetSmallView(bool SmallView)
{
if (!_Initialized)
return;
}
public virtual bool IsSmallView()
{
return false;
}
public virtual void UnloadTextures()
{
}
@@ -491,14 +580,6 @@ namespace Vocaluxe.Menu.SongMenu
if (_Theme.ColorName != String.Empty)
_Color = CTheme.GetColor(_Theme.ColorName);
_Theme.songMenuTileBoard.StaticCoverBig.ReloadTextures();
_Theme.songMenuTileBoard.StaticTextBG.ReloadTextures();
_Theme.songMenuTileBoard.StaticDuetIcon.ReloadTextures();
_Theme.songMenuTileBoard.StaticVideoIcon.ReloadTextures();
_Theme.songMenuTileBoard.TextArtist.ReloadTextures();
_Theme.songMenuTileBoard.TextTitle.ReloadTextures();
}
public void ReloadTextures()
@@ -550,8 +631,15 @@ namespace Vocaluxe.Menu.SongMenu
int _stream = CSound.Load(Path.Combine(CSongs.VisibleSongs[_actsong].Folder, CSongs.VisibleSongs[_actsong].MP3FileName), true);
CSound.SetStreamVolumeMax(_stream, _MaxVolume);
CSound.SetStreamVolume(_stream, 0f);
CSound.SetPosition(_stream, CSound.GetLength(_stream) / 4f);
float startposition = CSongs.VisibleSongs[_actsong].PreviewStart;
if (startposition == 0f)
startposition = CSound.GetLength(_stream) / 4f;
CSound.SetPosition(_stream, startposition);
CSound.Play(_stream);
CSound.Fade(_stream, 100f, 3f);
_streams.Add(_stream);
@@ -562,7 +650,7 @@ namespace Vocaluxe.Menu.SongMenu
_video = CVideo.VdLoad(Path.Combine(CSongs.VisibleSongs[_actsong].Folder, CSongs.VisibleSongs[_actsong].VideoFileName));
if (_video == -1)
return;
CVideo.VdSkip(_video, CSound.GetLength(_stream) / 4f, CSongs.VisibleSongs[_actsong].VideoGap);
CVideo.VdSkip(_video, startposition, CSongs.VisibleSongs[_actsong].VideoGap);
_VideoFadeTimer.Stop();
_VideoFadeTimer.Reset();
_VideoFadeTimer.Start();
+167 -11
View File
@@ -18,6 +18,8 @@ namespace Vocaluxe.Menu.SongMenu
private CStatic _TextBG;
private CStatic _DuetIcon;
private CStatic _VideoIcon;
private CStatic _MedleyCalcIcon;
private CStatic _MedleyTagIcon;
private STexture _CoverBigTexture;
private STexture _CoverTexture;
@@ -38,6 +40,8 @@ namespace Vocaluxe.Menu.SongMenu
private int _Offset = 0;
private int _actualSelection = -1;
private bool _SmallView = false;
public override int GetActualSelection()
{
return _actualSelection;
@@ -47,6 +51,8 @@ namespace Vocaluxe.Menu.SongMenu
{
base.Init();
_Rect = _Theme.songMenuTileBoard.TileRect;
_NumW = _Theme.songMenuTileBoard.numW;
_NumH = _Theme.songMenuTileBoard.numH;
_SpaceW = _Theme.songMenuTileBoard.spaceW;
@@ -81,6 +87,8 @@ namespace Vocaluxe.Menu.SongMenu
_TextBG = _Theme.songMenuTileBoard.StaticTextBG;
_DuetIcon = _Theme.songMenuTileBoard.StaticDuetIcon;
_VideoIcon = _Theme.songMenuTileBoard.StaticVideoIcon;
_MedleyCalcIcon = _Theme.songMenuTileBoard.StaticMedleyCalcIcon;
_MedleyTagIcon = _Theme.songMenuTileBoard.StaticMedleyTagIcon;
_Artist = _Theme.songMenuTileBoard.TextArtist;
_Title = _Theme.songMenuTileBoard.TextTitle;
@@ -113,6 +121,8 @@ namespace Vocaluxe.Menu.SongMenu
_Locked = 0;
_DuetIcon.Visible = false;
_VideoIcon.Visible = false;
_MedleyCalcIcon.Visible = false;
_MedleyTagIcon.Visible = false;
}
if (CSongs.NumVisibleSongs == 0 && CSongs.SearchFilter != String.Empty)
@@ -125,6 +135,8 @@ namespace Vocaluxe.Menu.SongMenu
_Locked = -1;
_DuetIcon.Visible = false;
_VideoIcon.Visible = false;
_MedleyCalcIcon.Visible = false;
_MedleyTagIcon.Visible = false;
}
}
@@ -138,6 +150,11 @@ namespace Vocaluxe.Menu.SongMenu
}
else
{
if (!(KeyEvent.Key == Keys.Left || KeyEvent.Key == Keys.Right || KeyEvent.Key == Keys.Up || KeyEvent.Key == Keys.Down ||
KeyEvent.Key == Keys.Escape || KeyEvent.Key == Keys.Back || KeyEvent.Key == Keys.Enter ||
KeyEvent.Key == Keys.PageDown || KeyEvent.Key == Keys.PageUp))
return;
bool sel = false;
foreach (CStatic tile in _Tiles)
{
@@ -390,7 +407,7 @@ namespace Vocaluxe.Menu.SongMenu
{
foreach (CStatic tile in _Tiles)
{
if (tile.Selected)
if (tile.Selected && _Active)
tile.Draw(1.2f, tile.Rect.Z - 0.1f, true, false);
else
{
@@ -412,14 +429,9 @@ namespace Vocaluxe.Menu.SongMenu
_Artist.Text = song.Artist;
_Title.Text = song.Title;
_DuetIcon.Visible = song.IsDuet;
if (song.VideoFileName.Length > 0)
{
_VideoIcon.Visible = true;
}
else
{
_VideoIcon.Visible = false;
}
_VideoIcon.Visible = song.VideoFileName.Length > 0;
_MedleyCalcIcon.Visible = song.Medley.Source == EMedleySource.Calculated;
_MedleyTagIcon.Visible = song.Medley.Source == EMedleySource.Tag;
float Time = CSound.GetLength(_SongStream);
if (song.Finish != 0)
@@ -448,11 +460,14 @@ namespace Vocaluxe.Menu.SongMenu
_SongLength.Text = String.Empty;
_DuetIcon.Visible = false;
_VideoIcon.Visible = false;
_MedleyCalcIcon.Visible = false;
_MedleyTagIcon.Visible = false;
}
}
_CoverBig.Draw(1f, true);
if (_vidtex.color.A < 1)
_CoverBig.Draw(1f, true);
_TextBG.Draw();
if (_vidtex.index != -1 && _Video != -1)
@@ -462,15 +477,20 @@ namespace Vocaluxe.Menu.SongMenu
CHelper.SetRect(bounds, ref rect, rect.Width / rect.Height, EAspect.Crop);
CDraw.DrawTexture(_vidtex, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, _CoverBig.Rect.Z),
_vidtex.color, new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f), false);
_vidtex.color, new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f), false);
CDraw.DrawTextureReflection(_vidtex, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, _CoverBig.Rect.Z),
_vidtex.color, new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f), _CoverBig.ReflectionSpace, _CoverBig.ReflectionHeight);
}
_Artist.Draw();
_Title.Draw();
_SongLength.Draw();
_DuetIcon.Draw();
_VideoIcon.Draw();
_MedleyCalcIcon.Draw();
_MedleyTagIcon.Draw();
}
@@ -479,6 +499,16 @@ namespace Vocaluxe.Menu.SongMenu
return _Locked;
}
public override CStatic GetSelectedSongCover()
{
foreach (CStatic tile in _Tiles)
{
if (tile.Selected)
return new CStatic(tile);
}
return new CStatic();
}
public override void SetSelectedSong(int VisibleSongNr)
{
base.SetSelectedSong(VisibleSongNr);
@@ -536,6 +566,62 @@ namespace Vocaluxe.Menu.SongMenu
}
public override void SetSelectedCategory(int CategoryNr)
{
base.SetSelectedCategory(CategoryNr);
if (CategoryNr < 0)
return;
if (CSongs.Categories.Length > CategoryNr)
{
bool sel = false;
foreach (CStatic tile in _Tiles)
{
if (tile.Selected)
{
sel = true;
break;
}
}
if (_Locked == -1 || !sel)
{
if (_PreviewSelected > -1)
{
_Locked = _PreviewSelected;
}
else
{
_Locked = 0;
_actualSelection = 0;
_PreviewSelected = 0;
SetSelectedNow();
UpdateList(0);
}
}
foreach (CStatic tile in _Tiles)
{
tile.Selected = false;
}
_PreviewSelected = CategoryNr;
SetSelectedNow();
_Locked = CategoryNr;
UpdateList((CategoryNr / _NumW) * _NumW - (_NumW * (_NumH - 2)));
_PreviewSelected = _Locked;
_actualSelection = _Locked;
for (int i = 0; i < _Tiles.Count; i++)
{
_Tiles[i].Selected = _Locked == i + _Offset;
}
}
}
protected override void EnterCategory(int cat)
{
base.EnterCategory(cat);
@@ -649,6 +735,74 @@ namespace Vocaluxe.Menu.SongMenu
_Offset = offset;
}
public override void SetSmallView(bool SmallView)
{
base.SetSmallView(SmallView);
_SmallView = SmallView;
if (_SmallView)
{
_NumH = _Theme.songMenuTileBoard.numHsmall;
_NumW = _Theme.songMenuTileBoard.numWsmall;
_TileW = (int)((_Theme.songMenuTileBoard.TileRectSmall.W - _SpaceW * (_NumW - 1)) / _NumW);
_TileH = (int)((_Theme.songMenuTileBoard.TileRectSmall.H - _SpaceH * (_NumH - 1)) / _NumH);
_CoverTexture = CTheme.GetSkinTexture(_Theme.CoverBackgroundName);
_CoverBigTexture = CTheme.GetSkinTexture(_Theme.CoverBigBackgroundName);
_Tiles = new List<CStatic>();
for (int i = 0; i < _NumH; i++)
{
for (int j = 0; j < _NumW; j++)
{
SRectF rect = new SRectF(_Theme.songMenuTileBoard.TileRectSmall.X + j * (_TileW + _SpaceW),
_Theme.songMenuTileBoard.TileRectSmall.Y + i * (_TileH + _SpaceH), _TileW, _TileH, _Rect.Z);
CStatic tile = new CStatic(_CoverTexture, Color, rect);
_Tiles.Add(tile);
}
}
_Rect = _Theme.songMenuTileBoard.TileRectSmall;
_ScrollRect = new SRectF(0, 0, CSettings.iRenderW, CSettings.iRenderH, _Theme.songMenuTileBoard.TileRectSmall.Z);
}
else
{
_NumH = _Theme.songMenuTileBoard.numH;
_NumW = _Theme.songMenuTileBoard.numW;
_TileW = (int)((_Theme.songMenuTileBoard.TileRect.W - _SpaceW * (_NumW - 1)) / _NumW);
_TileH = (int)((_Theme.songMenuTileBoard.TileRect.H - _SpaceH * (_NumH - 1)) / _NumH);
_CoverTexture = CTheme.GetSkinTexture(_Theme.CoverBackgroundName);
_CoverBigTexture = CTheme.GetSkinTexture(_Theme.CoverBigBackgroundName);
_Tiles = new List<CStatic>();
for (int i = 0; i < _NumH; i++)
{
for (int j = 0; j < _NumW; j++)
{
SRectF rect = new SRectF(_Theme.songMenuTileBoard.TileRect.X + j * (_TileW + _SpaceW),
_Theme.songMenuTileBoard.TileRect.Y + i * (_TileH + _SpaceH), _TileW, _TileH, _Rect.Z);
CStatic tile = new CStatic(_CoverTexture, Color, rect);
_Tiles.Add(tile);
}
}
_Rect = _Theme.songMenuTileBoard.TileRect;
_ScrollRect = new SRectF(0, 0, CSettings.iRenderW, CSettings.iRenderH, _Theme.songMenuTileBoard.TileRect.Z);
}
UpdateList(_Offset);
}
public override bool IsSmallView()
{
return _SmallView;
}
public override void LoadTextures()
{
base.LoadTextures();
@@ -657,6 +811,8 @@ namespace Vocaluxe.Menu.SongMenu
_Theme.songMenuTileBoard.StaticTextBG.ReloadTextures();
_Theme.songMenuTileBoard.StaticDuetIcon.ReloadTextures();
_Theme.songMenuTileBoard.StaticVideoIcon.ReloadTextures();
_Theme.songMenuTileBoard.StaticMedleyCalcIcon.ReloadTextures();
_Theme.songMenuTileBoard.StaticMedleyTagIcon.ReloadTextures();
_Theme.songMenuTileBoard.TextArtist.ReloadTextures();
_Theme.songMenuTileBoard.TextTitle.ReloadTextures();
+10
View File
@@ -17,10 +17,17 @@ namespace Vocaluxe.Menu.SongMenu
void HandleMouse(ref MouseEvent MouseEvent);
void Draw();
void ApplyVolume(float VolumeMax);
int GetSelectedSong();
CStatic GetSelectedSongCover();
void SetSelectedSong(int VisibleSongNr);
bool IsActive();
void SetActive(bool Active);
int GetSelectedCategory();
void SetSelectedCategory(int CategoryNr);
int GetActualSelection();
bool IsSelected();
@@ -29,6 +36,9 @@ namespace Vocaluxe.Menu.SongMenu
bool IsVisible();
void SetVisible(bool Visible);
bool IsSmallView();
void SetSmallView(bool SmallView);
SRectF GetRect();
}
}
@@ -134,7 +134,7 @@ namespace Vocaluxe.Screens
if (Buttons[htButtons(ButtonPause)].Selected)
CBackgroundMusic.Pause();
if (Buttons[htButtons(ButtonRepeat)].Selected)
CBackgroundMusic.Repeat();
CBackgroundMusic.RepeatSong = !CBackgroundMusic.RepeatSong;
if (Buttons[htButtons(ButtonShowVideo)].Selected)
VideoPreview = !VideoPreview;
if (Buttons[htButtons(ButtonSing)].Selected)
@@ -162,7 +162,7 @@ namespace Vocaluxe.Screens
if (Buttons[htButtons(ButtonPause)].Selected)
CBackgroundMusic.Pause();
if (Buttons[htButtons(ButtonRepeat)].Selected)
CBackgroundMusic.Repeat();
CBackgroundMusic.RepeatSong = !CBackgroundMusic.RepeatSong;
if (Buttons[htButtons(ButtonShowVideo)].Selected)
VideoPreview = !VideoPreview;
if (Buttons[htButtons(ButtonSing)].Selected)
@@ -187,6 +187,7 @@ namespace Vocaluxe.Screens
Statics[htStatics(StaticCover)].Visible = !_VideoPreview || !CBackgroundMusic.SongHasVideo;
Buttons[htButtons(ButtonToBackgroundVideo)].Pressed = VideoBackground;
Buttons[htButtons(ButtonShowVideo)].Pressed = _VideoPreview;
Buttons[htButtons(ButtonRepeat)].Pressed = CBackgroundMusic.RepeatSong;
Buttons[htButtons(ButtonSing)].Visible = CBackgroundMusic.CanSing;
return true;
}
@@ -217,9 +218,9 @@ namespace Vocaluxe.Screens
CGame.Reset();
CGame.ClearSongs();
EGameMode gm = EGameMode.Normal;
EGameMode gm = EGameMode.TR_GAMEMODE_NORMAL;
if (CSongs.AllSongs[SongNr].IsDuet)
gm = EGameMode.Duet;
gm = EGameMode.TR_GAMEMODE_DUET;
CGame.AddSong(SongNr, gm);
-33
View File
@@ -323,39 +323,6 @@ namespace Vocaluxe.Screens
CreditEntryPinky007.direction = EDirection.Right;
_CreditNames.Add(CreditEntryPinky007);
//Prepare Text
int lastY = 280;
for (int i = 0; i < paragraphs.Count; i++)
{
string line = "";
for (int e = 0; e < paragraphs[i].Length; e++ )
{
if (paragraphs[i][e] != null)
{
string newline = line + " " + paragraphs[i][e];
CText text = new CText(75, lastY, -2, 30, -1, EAlignment.Left, EStyle.Bold, "Outline", new SColorF(1, 1, 1, 1), line);
if (CDraw.GetTextBounds(text).Width < (CSettings.iRenderW - 160))
{
line = line + " " + paragraphs[i][e];
//Check if all words are used
if ((e + 1) == paragraphs[i].Length)
{
text.Text = line;
paragraphTexts.Add(text);
line = "";
lastY += 40;
}
}
else
{
paragraphTexts.Add(text);
line = " "+paragraphs[i][e];
lastY += 27;
}
}
}
}
TextTimer.Reset();
LogoTimer.Reset();
CreditsTimer.Reset();
+70 -54
View File
@@ -23,7 +23,7 @@ namespace Vocaluxe.Screens
private string[] TextScore;
private string[] TextDate;
private List<SScores> _Scores;
private List<SScores>[] _Scores;
private List<int> _NewEntryIDs;
private int _Round;
private int _Pos;
@@ -135,6 +135,17 @@ namespace Vocaluxe.Screens
CGraphics.FadeTo(EScreens.ScreenSong);
}
if (MouseEvent.MB)
{
int LastRound = _Round;
ChangeRound(1);
if (LastRound == _Round)
{
_Round = 0;
UpdateRound();
}
}
ChangePos(MouseEvent.Wheel);
return true;
}
@@ -143,7 +154,7 @@ namespace Vocaluxe.Screens
{
for (int p = 0; p < NumEntrys; p++)
{
if (_Pos + p < _Scores.Count)
if (_Pos + p < _Scores[_Round].Count)
{
Texts[htTexts(TextNumber[p])].Visible = true;
Texts[htTexts(TextName[p])].Visible = true;
@@ -152,16 +163,16 @@ namespace Vocaluxe.Screens
Texts[htTexts(TextNumber[p])].Text = (_Pos + p + 1).ToString();
string name = _Scores[_Pos + p].Name;
name += " [" + CLanguage.Translate(Enum.GetName(typeof(EGameDifficulty), _Scores[_Pos + p].Difficulty)) + "]";
string name = _Scores[_Round][_Pos + p].Name;
name += " [" + CLanguage.Translate(Enum.GetName(typeof(EGameDifficulty), _Scores[_Round][_Pos + p].Difficulty)) + "]";
if (_IsDuet)
name += " (P" + (_Scores[_Pos + p].LineNr + 1).ToString() + ")";
name += " (P" + (_Scores[_Round][_Pos + p].LineNr + 1).ToString() + ")";
Texts[htTexts(TextName[p])].Text = name;
Texts[htTexts(TextScore[p])].Text = _Scores[_Pos + p].Score.ToString("00000");
Texts[htTexts(TextDate[p])].Text = _Scores[_Pos + p].Date;
Texts[htTexts(TextScore[p])].Text = _Scores[_Round][_Pos + p].Score.ToString("00000");
Texts[htTexts(TextDate[p])].Text = _Scores[_Round][_Pos + p].Date;
if (isNewEntry(_Scores[_Pos + p].ID) == true)
if (isNewEntry(_Scores[_Round][_Pos + p].ID) == true)
{
Texts[htTexts(TextNumber[p])].Style = EStyle.BoldItalic;
Texts[htTexts(TextName[p])].Style = EStyle.BoldItalic;
@@ -185,10 +196,16 @@ namespace Vocaluxe.Screens
base.OnShow();
_Round = 0;
_Pos = 0;
_Scores = new List<SScores>();
CPoints _Points = CGame.GetPoints();
_Scores = new List<SScores>[_Points.NumRounds];
for (int i = 0; i < _Scores.Length; i++)
{
_Scores[i] = new List<SScores>();
}
_NewEntryIDs.Clear();
AddScoresToDB();
LoadScores();
UpdateRound();
UpdateGame();
}
@@ -239,35 +256,47 @@ namespace Vocaluxe.Screens
for (int round = 0; round < points.NumRounds; round++)
{
SPlayer player = points.GetPlayer(round, CGame.NumPlayer)[0];
CDataBase.LoadScore(ref _Scores, player);
CDataBase.LoadScore(ref _Scores[round], player);
}
}
if (round == _Round)
{
_IsDuet = false;
private void UpdateRound()
{
_IsDuet = false;
CPoints points = CGame.GetPoints();
SPlayer player = points.GetPlayer(_Round, CGame.NumPlayer)[0];
CSong song = CGame.GetSong(_Round+1);
if (song == null)
return;
CSong song = CSongs.GetSong(player.SongID);
Texts[htTexts(TextSongName)].Text = song.Artist + " - " + song.Title;
Texts[htTexts(TextSongName)].Text = song.Artist + " - " + song.Title;
if (points.NumRounds > 1)
{
Texts[htTexts(TextSongName)].Text += " (" + (_Round+1) + "/" + points.NumRounds + ")";
}
switch (CGame.GameMode)
{
case EGameMode.Normal:
Texts[htTexts(TextSongMode)].Text = "TR_GAMEMODE_NORMAL";
break;
switch (CGame.GetGameMode(_Round))
{
case EGameMode.TR_GAMEMODE_NORMAL:
Texts[htTexts(TextSongMode)].Text = "TR_GAMEMODE_NORMAL";
break;
case EGameMode.Medley:
Texts[htTexts(TextSongMode)].Text = "TR_GAMEMODE_MEDLEY";
break;
case EGameMode.TR_GAMEMODE_MEDLEY:
Texts[htTexts(TextSongMode)].Text = "TR_GAMEMODE_MEDLEY";
break;
case EGameMode.Duet:
Texts[htTexts(TextSongMode)].Text = "TR_GAMEMODE_DUET";
_IsDuet = true;
break;
case EGameMode.TR_GAMEMODE_DUET:
Texts[htTexts(TextSongMode)].Text = "TR_GAMEMODE_DUET";
_IsDuet = true;
break;
default:
Texts[htTexts(TextSongMode)].Text = "TR_GAMEMODE_NORMAL";
break;
}
}
case EGameMode.TR_GAMEMODE_SHORTSONG:
Texts[htTexts(TextSongMode)].Text = "TR_GAMEMODE_SHORTSONG";
break;
default:
Texts[htTexts(TextSongMode)].Text = "TR_GAMEMODE_NORMAL";
break;
}
}
@@ -275,7 +304,7 @@ namespace Vocaluxe.Screens
{
if (Num > 0)
{
if (_Pos + Num + NumEntrys < _Scores.Count)
if (_Pos + Num + NumEntrys < _Scores[_Round].Count)
_Pos += Num;
}
if (Num < 0)
@@ -288,27 +317,14 @@ namespace Vocaluxe.Screens
private void ChangeRound(int Num)
{
CPoints points = CGame.GetPoints();
if (points.NumRounds < 2)
return;
_Round += Num;
if (Num > 0)
{
if (_Round >= points.NumRounds)
_Round = 0;
LoadScores();
}
if (Num < 0)
{
if (_Round < 0)
_Round = points.NumRounds - 1;
LoadScores();
}
CPoints _Points = CGame.GetPoints();
if (_Round + Num < _Points.NumRounds && _Round + Num > -1)
_Round += Num;
else if (_Round + Num >= _Points.NumRounds)
_Round = _Points.NumRounds - 1;
else if (_Round + Num < 0)
_Round = 0;
UpdateRound();
}
}
}
+5
View File
@@ -223,6 +223,11 @@ namespace Vocaluxe.Screens
CBackgroundMusic.CanSing = true;
CLog.StopBenchmark(3, "Load Cover");
//Init Playlists
CLog.StartBenchmark(0, "Init Playlists");
CPlaylists.Init();
CLog.StopBenchmark(0, "Init Playlists");
}
private void CheckStartIntroVideos()
+121 -10
View File
@@ -12,7 +12,7 @@ namespace Vocaluxe.Screens
class CScreenNames : CMenu
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
const int ScreenVersion = 2;
const int ScreenVersion = 3;
private CStatic chooseAvatarStatic;
private int OldMouseX;
@@ -29,10 +29,13 @@ namespace Vocaluxe.Screens
private readonly string[] StaticPlayer = new string[] { "StaticPlayer1", "StaticPlayer2", "StaticPlayer3", "StaticPlayer4", "StaticPlayer5", "StaticPlayer6" };
private readonly string[] StaticPlayerAvatar = new string[] { "StaticPlayerAvatar1", "StaticPlayerAvatar2", "StaticPlayerAvatar3", "StaticPlayerAvatar4", "StaticPlayerAvatar5", "StaticPlayerAvatar6" };
private readonly string[] TextPlayer = new string[] { "TextPlayer1", "TextPlayer2", "TextPlayer3", "TextPlayer4", "TextPlayer5", "TextPlayer6" };
private readonly string[] EqualizerPlayer = new string[] { "EqualizerPlayer1", "EqualizerPlayer2", "EqualizerPlayer3", "EqualizerPlayer4", "EqualizerPlayer5", "EqualizerPlayer6" };
private readonly string[] SelectSlideDuetPlayer = new string[] { "SelectSlideDuetPlayer1", "SelectSlideDuetPlayer2", "SelectSlideDuetPlayer3", "SelectSlideDuetPlayer4", "SelectSlideDuetPlayer5", "SelectSlideDuetPlayer6" };
private STexture[] OriginalPlayerAvatarTextures = new STexture[CSettings.MaxNumPlayer];
private bool selectingMouseActive = false;
private bool selectingKeyboardActive = false;
private bool selectingKeyboardUnendless = false;
private int selectingKeyboardPlayerNr = 0;
private int SelectedPlayerNr;
@@ -63,8 +66,9 @@ namespace Vocaluxe.Screens
_ThemeStatics = statics.ToArray();
List<string> texts = new List<string>();
_ThemeSelectSlides = new string[] { SelectSlidePlayerNumber };
texts.Add(SelectSlidePlayerNumber);
texts.AddRange(SelectSlideDuetPlayer);
_ThemeSelectSlides = texts.ToArray();
texts.Clear();
texts.Add(TextWarningMics);
@@ -84,6 +88,10 @@ namespace Vocaluxe.Screens
texts.Add(NameSelection);
_ThemeNameSelections = texts.ToArray();
texts.Clear();
texts.AddRange(EqualizerPlayer);
_ThemeEqualizers = texts.ToArray();
chooseAvatarStatic = new CStatic();
chooseAvatarStatic.Visible = false;
}
@@ -102,6 +110,11 @@ namespace Vocaluxe.Screens
{
OriginalPlayerAvatarTextures[i] = Statics[htStatics(StaticPlayerAvatar[i])].Texture;
}
for (int i = 1; i <= CSettings.MaxNumPlayer; i++)
{
Equalizers[htEqualizer("EqualizerPlayer" + i)].ScreenHandles = true;
}
}
public override bool HandleInput(KeyEvent KeyEvent)
@@ -127,6 +140,22 @@ namespace Vocaluxe.Screens
NameSelections[htNameSelections(NameSelection)].UpdateList();
}
break;
case Keys.P:
if (!selectingKeyboardActive)
{
selectingKeyboardPlayerNr = 1;
selectingKeyboardUnendless = true;
}
else
{
if (selectingKeyboardPlayerNr + 1 <= CGame.NumPlayer)
selectingKeyboardPlayerNr++;
else
selectingKeyboardPlayerNr = 1;
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(true, selectingKeyboardPlayerNr);
}
break;
}
//Check if selecting with keyboard is active
if (selectingKeyboardActive)
@@ -156,10 +185,29 @@ namespace Vocaluxe.Screens
NameSelections[htNameSelections(NameSelection)].UpdateList();
SetInteractionToButton(Buttons[htButtons(ButtonStart)]);
}
//Reset all values
selectingKeyboardPlayerNr = 0;
selectingKeyboardActive = false;
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(false, -1);
//Started selecting with 'P'
if (selectingKeyboardUnendless)
{
if (selectingKeyboardPlayerNr == CGame.NumPlayer)
{
//Reset all values
selectingKeyboardPlayerNr = 0;
selectingKeyboardActive = false;
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(false, -1);
}
else
{
selectingKeyboardPlayerNr++;
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(true, selectingKeyboardPlayerNr);
}
}
else
{
//Reset all values
selectingKeyboardPlayerNr = 0;
selectingKeyboardActive = false;
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(false, -1);
}
break;
case Keys.D1:
@@ -176,6 +224,7 @@ namespace Vocaluxe.Screens
selectingKeyboardPlayerNr = 1;
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(true, 1);
}
selectingKeyboardUnendless = false;
break;
case Keys.D2:
case Keys.NumPad2:
@@ -191,6 +240,7 @@ namespace Vocaluxe.Screens
selectingKeyboardPlayerNr = 2;
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(true, 2);
}
selectingKeyboardUnendless = false;
break;
case Keys.D3:
case Keys.NumPad3:
@@ -206,6 +256,7 @@ namespace Vocaluxe.Screens
selectingKeyboardPlayerNr = 3;
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(true, 3);
}
selectingKeyboardUnendless = false;
break;
case Keys.D4:
case Keys.NumPad4:
@@ -221,6 +272,7 @@ namespace Vocaluxe.Screens
selectingKeyboardPlayerNr = 4;
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(true, 4);
}
selectingKeyboardUnendless = false;
break;
case Keys.D5:
case Keys.NumPad5:
@@ -236,6 +288,7 @@ namespace Vocaluxe.Screens
selectingKeyboardPlayerNr = 5;
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(true, 5);
}
selectingKeyboardUnendless = false;
break;
case Keys.D6:
case Keys.NumPad6:
@@ -251,11 +304,14 @@ namespace Vocaluxe.Screens
selectingKeyboardPlayerNr = 6;
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(true, 6);
}
selectingKeyboardUnendless = false;
break;
case Keys.Escape:
//Reset all values
selectingKeyboardPlayerNr = 0;
selectingKeyboardActive = false;
selectingKeyboardUnendless = false;
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(false, -1);
break;
@@ -279,6 +335,22 @@ namespace Vocaluxe.Screens
//Update Tiles-List
NameSelections[htNameSelections(NameSelection)].UpdateList();
break;
case Keys.F10:
if (CGame.GetNumSongs() == 1 && CGame.GetSong(1).IsDuet)
{
if (SelectSlides[htSelectSlides(SelectSlideDuetPlayer[selectingKeyboardPlayerNr - 1])].Selection == 0)
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[selectingKeyboardPlayerNr - 1])].SetSelectionByValueIndex(1);
else
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[selectingKeyboardPlayerNr - 1])].SetSelectionByValueIndex(0);
//Reset all values
selectingKeyboardPlayerNr = 0;
selectingKeyboardActive = false;
selectingKeyboardUnendless = false;
NameSelections[htNameSelections(NameSelection)].KeyboardSelection(false, -1);
SetInteractionToButton(Buttons[htButtons(ButtonStart)]);
}
break;
}
}
@@ -378,7 +450,7 @@ namespace Vocaluxe.Screens
CStatic SelectedPlayer = NameSelections[htNameSelections(NameSelection)].TilePlayerAvatar(MouseEvent);
chooseAvatarStatic.Visible = true;
chooseAvatarStatic.Rect = SelectedPlayer.Rect;
chooseAvatarStatic.Rect.Z = CSettings.zNear + 1;
chooseAvatarStatic.Rect.Z = CSettings.zNear;
chooseAvatarStatic.Color = new SColorF(1, 1, 1, 1);
chooseAvatarStatic.Texture = SelectedPlayer.Texture;
}
@@ -503,13 +575,18 @@ namespace Vocaluxe.Screens
public override bool UpdateGame()
{
for (int i = 1; i <= CGame.NumPlayer; i++)
{
CSound.AnalyzeBuffer((i-1));
Equalizers[htEqualizer("EqualizerPlayer" + i)].Update(CSound.ToneWeigth((i-1)));
}
return true;
}
public override void OnShow()
{
base.OnShow();
CSound.RecordStart();
NameSelections[htNameSelections(NameSelection)].Init();
@@ -526,11 +603,33 @@ namespace Vocaluxe.Screens
Statics[htStatics(StaticPlayerAvatar[i])].Texture = CProfiles.Profiles[CGame.Player[i].ProfileID].Avatar.Texture;
Texts[htTexts(TextPlayer[i])].Text = CProfiles.Profiles[CGame.Player[i].ProfileID].PlayerName;
}
if (CGame.GetNumSongs() == 1 && CGame.GetSong(1).IsDuet)
{
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[i])].Clear();
if (i + 1 <= CGame.NumPlayer)
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[i])].Visible = true;
else
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[i])].Visible = false;
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[i])].AddValue(CGame.GetSong(1).DuetPart1);
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[i])].AddValue(CGame.GetSong(1).DuetPart2);
if ((i + 1) % 2 == 0)
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[i])].SetSelectionByValueIndex(1);
else
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[i])].SetSelectionByValueIndex(0);
}
else
SelectSlides[htSelectSlides(SelectSlideDuetPlayer[i])].Visible = false;
}
SetInteractionToButton(Buttons[htButtons(ButtonStart)]);
}
public override void OnClose()
{
base.OnClose();
CSound.RecordStop();
}
public override bool Draw()
{
base.Draw();
@@ -539,7 +638,10 @@ namespace Vocaluxe.Screens
{
chooseAvatarStatic.Draw();
}
for (int i = 1; i <= CGame.NumPlayer; i++)
{
Equalizers[htEqualizer("EqualizerPlayer" + i)].Draw();
}
return true;
}
@@ -561,6 +663,10 @@ namespace Vocaluxe.Screens
CGame.Player[i].Name = "";
}
}
if (CGame.GetNumSongs() == 1 && CGame.GetSong(1).IsDuet)
{
CGame.Player[i].LineNr = SelectSlides[htSelectSlides(SelectSlideDuetPlayer[i])].Selection;
}
}
CGraphics.FadeTo(EScreens.ScreenSing);
@@ -591,12 +697,17 @@ namespace Vocaluxe.Screens
{
Texts[htTexts("TextPlayer" + i)].Text = CLanguage.Translate("TR_SCREENNAMES_PLAYER") + " " + i.ToString();
}
Equalizers[htEqualizer("EqualizerPlayer" + i)].Visible = true;
if (CGame.GetNumSongs() == 1 && CGame.GetSong(1).IsDuet)
SelectSlides[htSelectSlides("SelectSlideDuetPlayer" + i)].Visible = true;
}
else
{
Statics[htStatics("StaticPlayer" + i)].Visible = false;
Statics[htStatics("StaticPlayerAvatar" + i)].Visible = false;
Texts[htTexts("TextPlayer" + i)].Visible = false;
Equalizers[htEqualizer("EqualizerPlayer" + i)].Visible = false;
SelectSlides[htSelectSlides("SelectSlideDuetPlayer" + i)].Visible = false;
}
}
CConfig.SaveConfig();
Loaded 100 of 105 files, more files were not shown because too many files have changed in this diff. Show more