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..6e94ebeb 100644
--- a/Output/Themes/Ambient/Screens/ScreenSong.xml
+++ b/Output/Themes/Ambient/Screens/ScreenSong.xml
@@ -228,6 +228,186 @@
+
+
+ 1070
+ 65
+
+ -2,11
+
+ 50
+
+ 350
+
+
+ Player1
+
+
+ Player1
+
+ Left
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+ 1070
+ 135
+
+ -2,11
+
+ 50
+
+ 350
+
+
+ Player2
+
+
+ Player2
+
+ Left
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+ 1070
+ 205
+
+ -2,11
+
+ 50
+
+ 350
+
+
+ Player3
+
+
+ Player3
+
+ Left
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+ 1070
+ 275
+
+ -2,11
+
+ 50
+
+ 350
+
+
+ Player4
+
+
+ Player4
+
+ Left
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+ 1070
+ 345
+
+ -2,11
+
+ 50
+
+ 350
+
+
+ Player5
+
+
+ Player5
+
+ Left
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+ 1070
+ 415
+
+ -2,11
+
+ 50
+
+ 350
+
+
+ Player6
+
+
+ Player6
+
+ Left
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
Button
@@ -669,6 +849,357 @@
+
+
+ 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
+
+ Button
+
+ 985
+ 500
+ 0,00
+ 150
+ 50
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ 75
+ 10
+
+ 32
+
+ 142
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+ TR_BUTTON_START
+
+
+
+
+
+ 10
+ 26
+
+
+
+
+
+ 10
+ 26
+
+
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..36e4d9fa 100644
--- a/Vocaluxe/Screens/CScreenSong.cs
+++ b/Vocaluxe/Screens/CScreenSong.cs
@@ -42,6 +42,7 @@ namespace Vocaluxe.Screens
private const string ButtonOptionsSingAll = "ButtonOptionsSingAll";
private const string ButtonOptionsSingAllVisible = "ButtonOptionsSingAllVisible";
private const string ButtonOptionsOpenPlaylist = "ButtonOptionsOpenPlaylist";
+ private const string ButtonStart = "ButtonStart";
private const string SelectSlideOptionsMode = "SelectSlideOptionsMode";
private const string SelectSlideOptionsPlaylistAdd = "SelectSlideOptionsPlaylistAdd";
@@ -55,6 +56,8 @@ namespace Vocaluxe.Screens
private string _SearchText = String.Empty;
private bool _SearchActive = false;
+ private List ButtonsJoker = new List();
+ private List TextsPlayer = new List();
private bool _SongOptionsActive = false;
private bool _PlaylistActive = false;
private List _AvailableGameModes;
@@ -74,11 +77,40 @@ namespace Vocaluxe.Screens
{
base.Init();
+ for (int i = 0; i < _Base.Settings.GetMaxNumPlayer(); i++)
+ {
+ ButtonsJoker.Add("ButtonJoker" + (i + 1));
+ }
+ List blist = new List();
+ blist.AddRange(ButtonsJoker);
+ blist.Add(ButtonOptionsClose);
+ blist.Add(ButtonOptionsPlaylist);
+ blist.Add(ButtonOptionsSing);
+ blist.Add(ButtonOptionsRandom);
+ blist.Add(ButtonOptionsRandomCategory);
+ blist.Add(ButtonOptionsSingAll);
+ blist.Add(ButtonOptionsSingAllVisible);
+ blist.Add(ButtonOptionsOpenPlaylist);
+ blist.Add(ButtonOpenOptions);
+ blist.Add(ButtonStart);
+
+ for (int i = 0; i < _Base.Settings.GetMaxNumPlayer(); i++)
+ {
+ TextsPlayer.Add("TextPlayer" + (i + 1));
+ }
+ List tlist = new List();
+ tlist.AddRange(TextsPlayer);
+ tlist.Add(TextCategory);
+ tlist.Add(TextSelection);
+ tlist.Add(TextSearchBarTitle);
+ tlist.Add(TextSearchBar);
+ tlist.Add(TextOptionsTitle);
+
_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 };
+ _ThemeTexts = tlist.ToArray();
+ _ThemeButtons = blist.ToArray();
_ThemeSelectSlides = new string[] { SelectSlideOptionsMode, SelectSlideOptionsPlaylistAdd, SelectSlideOptionsPlaylistOpen };
_ThemeSongMenus = new string[] { SongMenu };
_ThemePlaylists = new string[] { Playlist };
@@ -162,6 +194,24 @@ 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 (Buttons[htButtons(ButtonStart)].Selected)
+ {
+ HandlePartySongSelection(SongMenus[htSongMenus(SongMenu)].GetSelectedSong());
+ }
+ }
if (CSongs.NumVisibleSongs > 0)
{
if (SongMenus[htSongMenus(SongMenu)].GetSelectedSong() != -1 && !_SongOptionsActive)
@@ -169,6 +219,7 @@ namespace Vocaluxe.Screens
if (!_sso.Selection.PartyMode)
ToggleSongOptions(ESongOptionsView.Song);
else
+ //Is this still needed?
HandlePartySongSelection(SongMenus[htSongMenus(SongMenu)].GetSelectedSong());
}
}
@@ -498,6 +549,27 @@ namespace Vocaluxe.Screens
OpenPlaylistAction();
return true;
}
+
+ if (_sso.Selection.RandomOnly && _sso.Selection.NumJokers != null)
+ {
+ if (Buttons[htButtons(ButtonOptionsOpenPlaylist)].Selected)
+ {
+ HandlePartySongSelection(SongMenus[htSongMenus(SongMenu)].GetSelectedSong());
+ return true;
+ }
+
+ 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)
@@ -507,6 +579,7 @@ namespace Vocaluxe.Screens
if (!_sso.Selection.PartyMode)
ToggleSongOptions(ESongOptionsView.Song);
else
+ //Is this still needed?
HandlePartySongSelection(SongMenus[htSongMenus(SongMenu)].GetSelectedSong());
return true;
}
@@ -612,6 +685,39 @@ namespace Vocaluxe.Screens
Statics[htStatics(StaticSearchBar)].Visible = false;
}
+ if (_sso.Selection.RandomOnly && _sso.Selection.NumJokers != null)
+ {
+ Buttons[htButtons(ButtonStart)].Visible = true;
+ SongMenus[htSongMenus(SongMenu)].SetSmallView(true);
+ for (int i = 0; i < _Base.Settings.GetMaxNumPlayer(); i++)
+ {
+ if (i < _sso.Selection.NumJokers.Length)
+ {
+ Buttons[htButtons(ButtonsJoker[i])].Visible = true;
+ Buttons[htButtons(ButtonsJoker[i])].Text.Text = _sso.Selection.NumJokers[i].ToString();
+ Texts[htTexts(TextsPlayer[i])].Visible = true;
+ //TODO: Set text to player-name.
+ Texts[htTexts(TextsPlayer[i])].Text = i.ToString();
+ }
+ else
+ {
+ Buttons[htButtons(ButtonsJoker[i])].Visible = false;
+ Texts[htTexts(TextsPlayer[i])].Visible = false;
+ }
+ }
+ }
+ else
+ {
+ Buttons[htButtons(ButtonStart)].Visible = true;
+ if(SongMenus[htSongMenus(SongMenu)].IsSmallView())
+ SongMenus[htSongMenus(SongMenu)].SetSmallView(false);
+ for (int i = 0; i < _Base.Settings.GetMaxNumPlayer(); i++)
+ {
+ Buttons[htButtons(ButtonsJoker[i])].Visible = false;
+ Texts[htTexts(TextsPlayer[i])].Visible = false;
+ }
+ }
+
return true;
}