diff --git a/Output/PartyModes/Challenge/Languages/English.xml b/Output/PartyModes/Challenge/Languages/English.xml
index 98bcb69e..7134cee0 100644
--- a/Output/PartyModes/Challenge/Languages/English.xml
+++ b/Output/PartyModes/Challenge/Languages/English.xml
@@ -15,6 +15,7 @@
Number of mics
Number of rounds
Challenge Mode: Choose Player
+ Select random
Challenge Mode: Overview
Pos
Name
diff --git a/Output/PartyModes/Challenge/Screens/PartyScreenChallengeNames.xml b/Output/PartyModes/Challenge/Screens/PartyScreenChallengeNames.xml
index c87205b7..1715fc94 100644
--- a/Output/PartyModes/Challenge/Screens/PartyScreenChallengeNames.xml
+++ b/Output/PartyModes/Challenge/Screens/PartyScreenChallengeNames.xml
@@ -172,6 +172,63 @@
26
+
+
+ Button
+
+ Button
+
+ 565
+ 625
+ 0,00
+ 150
+ 50
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ 75
+ 10
+
+ 27
+
+ 142
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+ TR_SCREENNAMES_BUTTON_RANDOM
+
+
+
+
+
+ 10
+ 26
+
+
+
+
+
+ 10
+ 26
+
+
Plus
diff --git a/Output/PartyModes/ChallengeMedley/Languages/English.xml b/Output/PartyModes/ChallengeMedley/Languages/English.xml
index 2d20bb3b..bbe904d3 100644
--- a/Output/PartyModes/ChallengeMedley/Languages/English.xml
+++ b/Output/PartyModes/ChallengeMedley/Languages/English.xml
@@ -15,6 +15,7 @@
Number of mics
Number of rounds
Challenge Medley Mode: Choose Player
+ Select random
Challenge Medley Mode: Overview
Pos
Name
diff --git a/Output/PartyModes/ChallengeMedley/Screens/PartyScreenChallengeMedleyNames.xml b/Output/PartyModes/ChallengeMedley/Screens/PartyScreenChallengeMedleyNames.xml
index e7f55401..e6236e97 100644
--- a/Output/PartyModes/ChallengeMedley/Screens/PartyScreenChallengeMedleyNames.xml
+++ b/Output/PartyModes/ChallengeMedley/Screens/PartyScreenChallengeMedleyNames.xml
@@ -57,7 +57,7 @@
-
+
Button
@@ -65,7 +65,7 @@
Button
985
- 600
+ 625
0,00
150
50
@@ -122,7 +122,7 @@
Button
145
- 600
+ 625
0,00
150
50
@@ -172,17 +172,17 @@
26
-
+
- CoverTile
+ Button
- CoverTile
+ Button
- 0
- 0
+ 565
+ 625
0,00
- 100
- 100
+ 150
+ 50
ButtonColor
@@ -191,12 +191,69 @@
ButtonSColor
- 50
- 102
+ 75
+ 10
- 20
+ 27
- 98
+ 142
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+ TR_SCREENNAMES_BUTTON_RANDOM
+
+
+
+
+
+ 10
+ 26
+
+
+
+
+
+ 10
+ 26
+
+
+
+
+ Plus
+
+ Plus
+
+ 145
+ 1200
+ 0,00
+ 40
+ 40
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ 75
+ 10
+
+ 27
+
+ 142
ButtonTextColor
@@ -220,18 +277,18 @@
-
-
+
+
- CoverTile
+ Minus
- CoverTile
+ Minus
- 0
- 0
+ 145
+ 1200
0,00
- 100
- 100
+ 40
+ 40
ButtonColor
@@ -240,12 +297,12 @@
ButtonSColor
- 50
- 102
+ 75
+ 10
- 20
+ 27
- 98
+ 142
ButtonTextColor
@@ -269,6 +326,282 @@
-
+
+
+
+ Plus
+
+ Plus
+
+ 145
+ 1200
+ 0,00
+ 40
+ 40
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ 75
+ 10
+
+ 27
+
+ 142
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+
+
+
+
+ Minus
+
+ Minus
+
+ 145
+ 1200
+ 0,00
+ 40
+ 40
+
+
+ ButtonColor
+
+
+ ButtonSColor
+
+
+ 75
+ 10
+
+ 27
+
+ 142
+
+
+ ButtonTextColor
+
+
+ ButtonTextSColor
+
+ Center
+
+ Center
+
+
+
+ Outline
+
+
+
+
+
+
+
+
+
+
+
+
+ Invisible
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ SelectSlide
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ SelectSlide
+
+ 40
+ 100
+ 0,00
+ 1200
+ 50
+
+ 45
+ 105
+ 0,00
+ 40
+ 40
+
+ 1170
+ 105
+ 0,00
+ 40
+ 40
+
+
+ SelectSlideColor
+
+
+ SelectSlideSColor
+
+
+ SelectSlideHColor
+
+
+ ArrowColor
+
+
+ ArrowSColor
+
+
+ TextColor
+
+
+ TextSColor
+
+ 27,00
+
+
+
+ 205,33
+
+ Outline
+
+ Bold
+
+ 2
+
+
+
+ Invisible
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ SelectSlidePlayer
+
+ SelectSlideArrowLeft
+
+ SelectSlideArrowRight
+
+ SelectSlidePlayer
+
+ 40
+ 160
+ 0,00
+ 1200
+ 150
+
+ 45
+ 210
+ 0,00
+ 40
+ 40
+
+ 1170
+ 210
+ 0,00
+ 40
+ 40
+
+
+ SelectSlideColor
+
+
+ SelectSlideSColor
+
+
+ SelectSlideHColor
+
+
+ ArrowColor
+
+
+ ArrowSColor
+
+
+ TextColor
+
+
+ TextSColor
+
+ 27,00
+
+
+ -5,00
+
+ 205,33
+
+ Outline
+
+ Bold
+
+ 8
+
+
+
+ 42
+ 327
+ 0,00
+ 1200
+ 393
+
+ CoverTile
+
+
+ 1,00
+ 1,00
+ 1,00
+ 0,20
+
+ PlayerSelector
+
+
+
+ 100
+ 100
+
+ 10
+ 2
+
+ 20,71
+ 30,00
+
+
+
+ 2,0
+
+ Outline
+
+ TextColor
+
+
+
+ 17
+
+
+
diff --git a/Output/PartyModes/ChallengeMedley/Textures/Minus.png b/Output/PartyModes/ChallengeMedley/Textures/Minus.png
new file mode 100644
index 00000000..9bdede57
Binary files /dev/null and b/Output/PartyModes/ChallengeMedley/Textures/Minus.png differ
diff --git a/Output/PartyModes/ChallengeMedley/Textures/Plus.png b/Output/PartyModes/ChallengeMedley/Textures/Plus.png
new file mode 100644
index 00000000..5b813c53
Binary files /dev/null and b/Output/PartyModes/ChallengeMedley/Textures/Plus.png differ
diff --git a/Output/PartyModes/ChallengeMedley/Textures/Skin.xml b/Output/PartyModes/ChallengeMedley/Textures/Skin.xml
index 4912e998..e89952f1 100644
--- a/Output/PartyModes/ChallengeMedley/Textures/Skin.xml
+++ b/Output/PartyModes/ChallengeMedley/Textures/Skin.xml
@@ -148,8 +148,10 @@
ScrollUp.png
ScrollDown.png
Invisible.png
+ Plus.png
+ Minus.png
[Blue]BG_Video.mp4
-
\ No newline at end of file
+
diff --git a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs
index 9959e330..2bb5de75 100644
--- a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs
+++ b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs
@@ -25,7 +25,7 @@ using VocaluxeLib.Profile;
namespace VocaluxeLib.PartyModes.ChallengeMedley
{
// ReSharper disable UnusedMember.Global
- public class CPartyScreenChallengeMedleyNames : CMenuParty
+ public class CPartyScreenChallengeMedleyNames : CMenuPartyNameSelection
// ReSharper restore UnusedMember.Global
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
@@ -34,61 +34,19 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
get { return 1; }
}
- private const string _ButtonNext = "ButtonNext";
- private const string _ButtonBack = "ButtonBack";
- private const string _ButtonPlayerDestination = "ButtonPlayerDestination";
- private const string _ButtonPlayerChoose = "ButtonPlayerChoose";
-
- private List _PlayerChooseButtons;
- private List _PlayerDestinationButtons;
- //PlayerDestinationButtons-Option
- private const int _PlayerDestinationButtonsNumH = 3;
- private const int _PlayerDestinationButtonsFirstX = 900;
- private const int _PlayerDestinationButtonsFirstY = 105;
- private const int _PlayerDestinationButtonsSpaceH = 15;
- private const int _PlayerDestinationButtonsSpaceW = 25;
- //PlayerChooseButtons-Option
- private List _PlayerChooseButtonsVisibleProfiles;
- private const int _PlayerChooseButtonsNumH = 7;
- private const int _PlayerChooseButtonsNumW = 4;
- private const int _PlayerChooseButtonsFirstX = 52;
- private const int _PlayerChooseButtonsFirstY = 105;
- private const int _PlayerChooseButtonsSpaceH = 15;
- private const int _PlayerChooseButtonsSpaceW = 25;
- private const int _PlayerChooseButtonsOffset = 0;
-
- private CStatic _ChooseAvatarStatic;
- private bool _SelectingMouseActive;
- private int _OldMouseX;
- private int _OldMouseY;
- private bool _ButtonsAdded;
-
- private int _NumPlayer = 4;
-
private SDataFromScreen _Data;
- private class CPlayerChooseButton
- {
- public CButton Button;
- public int ProfileID;
- }
-
public override void Init()
{
base.Init();
- _ChooseAvatarStatic = GetNewStatic();
- _ChooseAvatarStatic.Visible = false;
-
- _PlayerChooseButtonsVisibleProfiles = new List();
-
_Data.ScreenNames.ProfileIDs = new List();
- _ThemeButtons = new string[] {_ButtonBack, _ButtonNext, _ButtonPlayerDestination, _ButtonPlayerChoose};
-
_Data = new SDataFromScreen();
var names = new SFromScreenNames {FadeToConfig = false, ProfileIDs = new List()};
_Data.ScreenNames = names;
+
+ _AllowChangePlayerNum = false;
}
public override void DataToScreen(object receivedData)
@@ -98,7 +56,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
var config = (SDataToScreenNames)receivedData;
_Data.ScreenNames.ProfileIDs = config.ProfileIDs ?? new List();
- _NumPlayer = config.NumPlayer;
+ SetPartyModeData(config.NumPlayer);
while (_Data.ScreenNames.ProfileIDs.Count > _NumPlayer)
_Data.ScreenNames.ProfileIDs.RemoveAt(_Data.ScreenNames.ProfileIDs.Count - 1);
@@ -109,320 +67,21 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
}
}
- public override bool HandleInput(SKeyEvent keyEvent)
- {
- base.HandleInput(keyEvent);
- if (keyEvent.KeyPressed) {}
- else
- {
- switch (keyEvent.Key)
- {
- case Keys.Back:
- case Keys.Escape:
- _Back();
- break;
-
- case Keys.Enter:
- if (_Buttons[_ButtonBack].Selected)
- _Back();
-
- if (_Buttons[_ButtonNext].Selected)
- _Next();
-
- if (!_OnAdd())
- _OnRemove();
- break;
-
- case Keys.Delete:
- _OnRemove();
- break;
- }
- }
- return true;
- }
-
- public override bool HandleMouse(SMouseEvent mouseEvent)
- {
- base.HandleMouse(mouseEvent);
-
- //Check if LeftButton is hold and Select-Mode active
- if (mouseEvent.LBH && _SelectingMouseActive)
- {
- //Update coords for Drag/Drop-Texture
- _ChooseAvatarStatic.Rect.X += mouseEvent.X - _OldMouseX;
- _ChooseAvatarStatic.Rect.Y += mouseEvent.Y - _OldMouseY;
- _OldMouseX = mouseEvent.X;
- _OldMouseY = mouseEvent.Y;
- }
- // LeftButton isn't hold anymore, but Selec-Mode is still active -> "Drop" of Avatar
- else if (_SelectingMouseActive)
- {
- //Reset variables
- _SelectingMouseActive = false;
- _ChooseAvatarStatic.Visible = false;
- }
-
- if (mouseEvent.LB && _IsMouseOver(mouseEvent))
- {
- if (_Buttons[_ButtonBack].Selected)
- _Back();
-
- if (_Buttons[_ButtonNext].Selected)
- _Next();
-
- if (!_OnAdd())
- _OnRemove();
- }
-
- if (mouseEvent.RB)
- _Back();
-
- return true;
- }
-
- public override void OnShow()
- {
- base.OnShow();
-
- if (!_ButtonsAdded)
- {
- _AddButtonPlayerDestination();
- _AddButtonPlayerChoose();
- _ButtonsAdded = true;
- }
-
- _UpdateButtonPlayerDestination();
- _UpdateButtonPlayerChoose();
-
- _UpdateButtonNext();
- }
-
- public override bool UpdateGame()
- {
- return true;
- }
-
- public override bool Draw()
- {
- base.Draw();
- if (_ChooseAvatarStatic.Visible)
- _ChooseAvatarStatic.Draw();
- return true;
- }
-
- private void _AddButtonPlayerDestination()
- {
- _Buttons[_ButtonPlayerDestination].Visible = false;
- _PlayerDestinationButtons = new List();
- int row = 0;
- int column = 0;
- for (int i = 1; i <= _PartyMode.GetMaxPlayer(); i++)
- {
- CButton b = GetNewButton(_Buttons[_ButtonPlayerDestination]);
- b.Rect.X = _PlayerDestinationButtonsFirstX + column * (b.Rect.W + _PlayerDestinationButtonsSpaceH);
- b.Rect.Y = _PlayerDestinationButtonsFirstY + row * (b.Rect.H + _PlayerDestinationButtonsSpaceW);
- _PlayerDestinationButtons.Add(b);
- column++;
- if (column >= _PlayerDestinationButtonsNumH)
- {
- row++;
- column = 0;
- }
- b.Visible = true;
- b.Enabled = false;
- _AddButton(b);
- }
- }
-
- private void _AddButtonPlayerChoose()
- {
- _Buttons[_ButtonPlayerChoose].Visible = false;
- _PlayerChooseButtons = new List();
- int row = 0;
- int column = 0;
- for (int i = 1; i <= _PlayerChooseButtonsNumH * _PlayerChooseButtonsNumW; i++)
- {
- CButton b = GetNewButton(_Buttons[_ButtonPlayerChoose]);
- b.Rect.X = _PlayerChooseButtonsFirstX + column * (b.Rect.W + _PlayerChooseButtonsSpaceH);
- b.Rect.Y = _PlayerChooseButtonsFirstY + row * (b.Rect.H + _PlayerChooseButtonsSpaceW);
- var pcb = new CPlayerChooseButton {Button = b, ProfileID = -1};
- _PlayerChooseButtons.Add(pcb);
- column++;
- if (column >= _PlayerChooseButtonsNumH)
- {
- row++;
- column = 0;
- }
- b.Visible = true;
- b.Enabled = false;
- _AddButton(b);
- }
- }
-
- private void _UpdateButtonPlayerChoose()
- {
- _UpdateVisibleProfiles();
- if ((_PlayerChooseButtonsNumW * _PlayerChooseButtonsNumH) * (_PlayerChooseButtonsOffset + 1) - _PlayerChooseButtonsVisibleProfiles.Count >=
- (_PlayerChooseButtonsNumW * _PlayerChooseButtonsNumH) * _PlayerChooseButtonsOffset)
- _UpdateButtonPlayerChoose(_PlayerChooseButtonsOffset - 1);
- else
- _UpdateButtonPlayerChoose(_PlayerChooseButtonsOffset);
- }
-
- private void _UpdateButtonPlayerChoose(int offset)
- {
- const int numButtonPlayerChoose = _PlayerChooseButtonsNumW * _PlayerChooseButtonsNumH;
- if (offset < 0)
- offset = 0;
-
- if (numButtonPlayerChoose * (offset + 1) - _PlayerChooseButtonsVisibleProfiles.Count <= numButtonPlayerChoose)
- {
- for (int i = 0; i < numButtonPlayerChoose; i++)
- {
- if ((i + offset * numButtonPlayerChoose) < _PlayerChooseButtonsVisibleProfiles.Count)
- {
- int id = _PlayerChooseButtonsVisibleProfiles[i + offset * numButtonPlayerChoose];
- _PlayerChooseButtons[i].ProfileID = id;
- _PlayerChooseButtons[i].Button.Text.Text = CBase.Profiles.GetPlayerName(id);
- _PlayerChooseButtons[i].Button.Texture = CBase.Profiles.GetAvatar(id);
- _PlayerChooseButtons[i].Button.SelTexture = CBase.Profiles.GetAvatar(id);
- _PlayerChooseButtons[i].Button.Color = new SColorF(1, 1, 1, 0.6f);
- _PlayerChooseButtons[i].Button.SelColor = new SColorF(1, 1, 1, 1);
- _PlayerChooseButtons[i].Button.Enabled = true;
- }
- else
- {
- _PlayerChooseButtons[i].ProfileID = -1;
- _PlayerChooseButtons[i].Button.Text.Text = String.Empty;
- _PlayerChooseButtons[i].Button.Texture = _Buttons[_ButtonPlayerChoose].Texture;
- _PlayerChooseButtons[i].Button.SelTexture = _Buttons[_ButtonPlayerChoose].SelTexture;
- _PlayerChooseButtons[i].Button.Color = _Buttons[_ButtonPlayerChoose].Color;
- _PlayerChooseButtons[i].Button.SelColor = _Buttons[_ButtonPlayerChoose].SelColor;
- _PlayerChooseButtons[i].Button.Enabled = false;
- }
- }
- }
- }
-
- private void _UpdateVisibleProfiles()
- {
- _PlayerChooseButtonsVisibleProfiles.Clear();
- CProfile[] profiles = CBase.Profiles.GetProfiles();
- foreach (CProfile profile in profiles)
- {
- bool visible = false;
- //Show profile only if active
- if (profile.Active == EOffOn.TR_CONFIG_ON)
- visible = _Data.ScreenNames.ProfileIDs.All(profileID => profileID != profile.ID);
- if (visible)
- _PlayerChooseButtonsVisibleProfiles.Add(profile.ID);
- }
- }
-
- private void _UpdateButtonPlayerDestination()
- {
- for (int i = 0; i < _PlayerDestinationButtons.Count; i++)
- {
- if (_NumPlayer > i)
- {
- _PlayerDestinationButtons[i].Visible = true;
- _PlayerDestinationButtons[i].Enabled = true;
- }
- else
- {
- _PlayerDestinationButtons[i].Visible = false;
- _PlayerDestinationButtons[i].Enabled = false;
- }
- }
- for (int i = 0; i < _NumPlayer; i++)
- {
- if (i < _Data.ScreenNames.ProfileIDs.Count)
- {
- if (_Data.ScreenNames.ProfileIDs[i] != -1)
- {
- int id = _Data.ScreenNames.ProfileIDs[i];
- _PlayerDestinationButtons[i].Color = new SColorF(1, 1, 1, 0.6f);
- _PlayerDestinationButtons[i].SelColor = new SColorF(1, 1, 1, 1);
- _PlayerDestinationButtons[i].Texture = CBase.Profiles.GetAvatar(id);
- _PlayerDestinationButtons[i].SelTexture = CBase.Profiles.GetAvatar(id);
- _PlayerDestinationButtons[i].Text.Text = CBase.Profiles.GetPlayerName(id);
- _PlayerDestinationButtons[i].Enabled = true;
- }
- }
- else
- {
- _PlayerDestinationButtons[i].Color = _Buttons[_ButtonPlayerDestination].Color;
- _PlayerDestinationButtons[i].SelColor = _Buttons[_ButtonPlayerDestination].SelColor;
- _PlayerDestinationButtons[i].Texture = _Buttons[_ButtonPlayerDestination].Texture;
- _PlayerDestinationButtons[i].SelTexture = _Buttons[_ButtonPlayerDestination].SelTexture;
- _PlayerDestinationButtons[i].Text.Text = String.Empty;
- _PlayerDestinationButtons[i].Enabled = false;
- }
- }
- }
-
- private void _UpdateButtonNext()
- {
- if (_Data.ScreenNames.ProfileIDs.Count == _NumPlayer)
- {
- _Buttons[_ButtonNext].Visible = true;
- _SetInteractionToButton(_Buttons[_ButtonNext]);
- }
- else
- _Buttons[_ButtonNext].Visible = false;
- }
-
- private bool _OnAdd()
- {
- foreach (CPlayerChooseButton button in _PlayerChooseButtons)
- {
- int id = button.ProfileID;
- if (!button.Button.Selected || id == -1 || _Data.ScreenNames.ProfileIDs.Count >= _NumPlayer)
- continue;
- _Data.ScreenNames.ProfileIDs.Add(id);
- int added = _Data.ScreenNames.ProfileIDs.Count - 1;
- _UpdateButtonNext();
- //Update texture and name
- _PlayerDestinationButtons[added].Color = new SColorF(1, 1, 1, 0.6f);
- _PlayerDestinationButtons[added].SelColor = new SColorF(1, 1, 1, 1);
- _PlayerDestinationButtons[added].Texture = CBase.Profiles.GetAvatar(id);
- _PlayerDestinationButtons[added].SelTexture = CBase.Profiles.GetAvatar(id);
- _PlayerDestinationButtons[added].Text.Text = CBase.Profiles.GetPlayerName(id);
- _PlayerDestinationButtons[added].Enabled = true;
- //Update Tiles-List
- _UpdateButtonPlayerChoose();
- _CheckInteraction();
- return true;
- }
- return false;
- }
-
- private void _OnRemove()
- {
- for (int i = 0; i < _PlayerDestinationButtons.Count; i++)
- {
- if (!_PlayerDestinationButtons[i].Selected)
- continue;
- if ((i + 1) > _Data.ScreenNames.ProfileIDs.Count)
- continue;
- _Data.ScreenNames.ProfileIDs.RemoveAt(i);
- _UpdateButtonNext();
- _UpdateButtonPlayerDestination();
- _UpdateButtonPlayerChoose();
- _CheckInteraction();
- return;
- }
- }
-
- private void _Back()
+ public override void Back()
{
+ SPartyNameOptions options = GetData();
+ if (options.TeamList.Length == 1)
+ _Data.ScreenNames.ProfileIDs = options.TeamList[0];
_Data.ScreenNames.FadeToConfig = true;
_PartyMode.DataFromScreen(ThemeName, _Data);
}
- private void _Next()
+ public override void Next()
{
+ SPartyNameOptions options = GetData();
+ if (options.TeamList.Length == 1)
+ _Data.ScreenNames.ProfileIDs = options.TeamList[0];
_Data.ScreenNames.FadeToConfig = false;
_PartyMode.DataFromScreen(ThemeName, _Data);
}