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); }