diff --git a/Output/Themes/Ambient/Random.png b/Output/Themes/Ambient/Random.png
new file mode 100644
index 00000000..f19c9dc3
Binary files /dev/null and b/Output/Themes/Ambient/Random.png differ
diff --git a/Output/Themes/Ambient/Screens/ScreenSong.xml b/Output/Themes/Ambient/Screens/ScreenSong.xml
index 7cc7cfd0..ebe1f39b 100644
--- a/Output/Themes/Ambient/Screens/ScreenSong.xml
+++ b/Output/Themes/Ambient/Screens/ScreenSong.xml
@@ -669,6 +669,300 @@
+
+
+ Random
+
+ Random
+
+ 980
+ 50
+ -1,01
+ 80
+ 80
+
+
+ Player1Dim
+
+
+ Player1
+
+
+ 40
+ 20
+
+ 40
+
+ 60
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+
+
+
+
+ Random
+
+ Random
+
+ 980
+ 120
+ -1,01
+ 80
+ 80
+
+
+ Player2Dim
+
+
+ Player2
+
+
+ 40
+ 20
+
+ 40
+
+ 60
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+
+
+
+
+ Random
+
+ Random
+
+ 980
+ 190
+ -1,01
+ 80
+ 80
+
+
+ Player3Dim
+
+
+ Player3
+
+
+ 40
+ 20
+
+ 40
+
+ 60
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+
+
+
+
+ Random
+
+ Random
+
+ 980
+ 260
+ -1,01
+ 80
+ 80
+
+
+ Player4Dim
+
+
+ Player4
+
+
+ 40
+ 20
+
+ 40
+
+ 60
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+
+
+
+
+ Random
+
+ Random
+
+ 980
+ 330
+ -1,01
+ 80
+ 80
+
+
+ Player5Dim
+
+
+ Player5
+
+
+ 40
+ 20
+
+ 40
+
+ 60
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+
+
+
+
+ Random
+
+ Random
+
+ 980
+ 400
+ -1,01
+ 80
+ 80
+
+
+ Player6Dim
+
+
+ Player6
+
+
+ 40
+ 20
+
+ 40
+
+ 60
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+
+
Button
diff --git a/Output/Themes/Ambient/Skin Blue.xml b/Output/Themes/Ambient/Skin Blue.xml
index f4549af2..eb483724 100644
--- a/Output/Themes/Ambient/Skin Blue.xml
+++ b/Output/Themes/Ambient/Skin Blue.xml
@@ -335,6 +335,7 @@
Sing.png
Minus.png
Plus.png
+ Random.png
[Blue]BG_Video.mp4
diff --git a/Output/Themes/Ambient/Skin Green.xml b/Output/Themes/Ambient/Skin Green.xml
index 994705cd..a1865f81 100644
--- a/Output/Themes/Ambient/Skin Green.xml
+++ b/Output/Themes/Ambient/Skin Green.xml
@@ -329,6 +329,7 @@
Sing.png
Minus.png
Plus.png
+ Random.png
[Green]BG_Video.mp4
diff --git a/Output/Themes/Ambient/Skin Red.xml b/Output/Themes/Ambient/Skin Red.xml
index b669bfd0..cdbaebd4 100644
--- a/Output/Themes/Ambient/Skin Red.xml
+++ b/Output/Themes/Ambient/Skin Red.xml
@@ -329,6 +329,7 @@
Sing.png
Minus.png
Plus.png
+ Random.png
[Red]BG_Video.mp4
diff --git a/Output/Themes/Ambient/Skin Yellow.xml b/Output/Themes/Ambient/Skin Yellow.xml
index 6e3d562e..22bb6061 100644
--- a/Output/Themes/Ambient/Skin Yellow.xml
+++ b/Output/Themes/Ambient/Skin Yellow.xml
@@ -329,6 +329,7 @@
Sing.png
Minus.png
Plus.png
+ Random.png
[Yellow]BG_Video.mp4
diff --git a/Vocaluxe/Screens/CScreenSong.cs b/Vocaluxe/Screens/CScreenSong.cs
index 1c6432c1..52ccf803 100644
--- a/Vocaluxe/Screens/CScreenSong.cs
+++ b/Vocaluxe/Screens/CScreenSong.cs
@@ -55,6 +55,7 @@ namespace Vocaluxe.Screens
private string _SearchText = String.Empty;
private bool _SearchActive = false;
+ private List ButtonsJoker = new List();
private bool _SongOptionsActive = false;
private bool _PlaylistActive = false;
private List _AvailableGameModes;
@@ -74,11 +75,27 @@ namespace Vocaluxe.Screens
{
base.Init();
+ for (int i = 0; i < _Base.Settings.GetMaxNumPlayer(); i++)
+ {
+ ButtonsJoker.Add("ButtonJoker" + (i + 1));
+ }
+ List list = new List();
+ list.AddRange(ButtonsJoker);
+ list.Add(ButtonOptionsClose);
+ list.Add(ButtonOptionsPlaylist);
+ list.Add(ButtonOptionsSing);
+ list.Add(ButtonOptionsRandom);
+ list.Add(ButtonOptionsRandomCategory);
+ list.Add(ButtonOptionsSingAll);
+ list.Add(ButtonOptionsSingAllVisible);
+ list.Add(ButtonOptionsOpenPlaylist);
+ list.Add(ButtonOpenOptions);
+
_ThemeName = "ScreenSong";
_ScreenVersion = ScreenVersion;
_ThemeStatics = new string[] { StaticSearchBar, StaticOptionsBG };
_ThemeTexts = new string[] { TextCategory, TextSelection, TextSearchBarTitle, TextSearchBar, TextOptionsTitle };
- _ThemeButtons = new string[] { ButtonOptionsClose, ButtonOptionsPlaylist, ButtonOptionsSing, ButtonOptionsRandom, ButtonOptionsRandomCategory, ButtonOptionsSingAll, ButtonOptionsSingAllVisible, ButtonOptionsOpenPlaylist, ButtonOpenOptions };
+ _ThemeButtons = list.ToArray();
_ThemeSelectSlides = new string[] { SelectSlideOptionsMode, SelectSlideOptionsPlaylistAdd, SelectSlideOptionsPlaylistOpen };
_ThemeSongMenus = new string[] { SongMenu };
_ThemePlaylists = new string[] { Playlist };
@@ -162,6 +179,20 @@ namespace Vocaluxe.Screens
break;
case Keys.Enter:
+ if (_sso.Selection.RandomOnly && _sso.Selection.NumJokers != null)
+ {
+ for (int i = 0; i < ButtonsJoker.Count; i++)
+ {
+ if (i < _sso.Selection.NumJokers.Length)
+ {
+ if (Buttons[htButtons(ButtonsJoker[i])].Selected)
+ {
+ SelectNextRandom(i);
+ return true;
+ }
+ }
+ }
+ }
if (CSongs.NumVisibleSongs > 0)
{
if (SongMenus[htSongMenus(SongMenu)].GetSelectedSong() != -1 && !_SongOptionsActive)
@@ -498,6 +529,21 @@ namespace Vocaluxe.Screens
OpenPlaylistAction();
return true;
}
+
+ if (_sso.Selection.RandomOnly && _sso.Selection.NumJokers != null)
+ {
+ for (int i = 0; i < ButtonsJoker.Count; i++)
+ {
+ if (i < _sso.Selection.NumJokers.Length)
+ {
+ if (Buttons[htButtons(ButtonsJoker[i])].Selected)
+ {
+ SelectNextRandom(i);
+ return true;
+ }
+ }
+ }
+ }
}
if (CSongs.NumVisibleSongs > 0 && SongMenus[htSongMenus(SongMenu)].GetActualSelection() != -1)
@@ -612,6 +658,31 @@ namespace Vocaluxe.Screens
Statics[htStatics(StaticSearchBar)].Visible = false;
}
+ if (_sso.Selection.RandomOnly && _sso.Selection.NumJokers != null)
+ {
+ SongMenus[htSongMenus(SongMenu)].SetSmallView(true);
+ for (int i = 0; i < ButtonsJoker.Count; i++)
+ {
+ if (i < _sso.Selection.NumJokers.Length)
+ {
+ Buttons[htButtons(ButtonsJoker[i])].Visible = true;
+ Buttons[htButtons(ButtonsJoker[i])].Text.Text = _sso.Selection.NumJokers[i].ToString();
+ }
+ else
+ {
+ Buttons[htButtons(ButtonsJoker[i])].Visible = false;
+ }
+ }
+ }
+ else
+ { if(SongMenus[htSongMenus(SongMenu)].IsSmallView())
+ SongMenus[htSongMenus(SongMenu)].SetSmallView(false);
+ for (int i = 0; i < ButtonsJoker.Count; i++)
+ {
+ Buttons[htButtons(ButtonsJoker[i])].Visible = false;
+ }
+ }
+
return true;
}