diff --git a/Output/Themes/Ambient/Screens/ScreenNames.xml b/Output/Themes/Ambient/Screens/ScreenNames.xml
index 1394ffdb..fe44cdc6 100644
--- a/Output/Themes/Ambient/Screens/ScreenNames.xml
+++ b/Output/Themes/Ambient/Screens/ScreenNames.xml
@@ -161,22 +161,22 @@
- 145
- 663
- 990
+ 300
+ 603
+ 685
50
- 0
+ -1
- 145
- 715
- 990
+ 300
+ 654
+ 685
50
- 0
+ -1
@@ -198,7 +198,7 @@
640
617
- 0
+ -1.1
27
970
@@ -212,7 +212,7 @@
640
652
- 0
+ -1.1
27
970
diff --git a/PartyModes/PartyModeChallenge/CChallengeRounds.cs b/PartyModes/PartyModeChallenge/CChallengeRounds.cs
index bb2d05cb..6b45ea1f 100644
--- a/PartyModes/PartyModeChallenge/CChallengeRounds.cs
+++ b/PartyModes/PartyModeChallenge/CChallengeRounds.cs
@@ -28,6 +28,16 @@ namespace VocaluxeLib.PartyModes.Challenge
public readonly List Rounds;
+ public int Count
+ {
+ get { return Rounds.Count; }
+ }
+
+ public CCombination this[int index]
+ {
+ get { return Rounds[index]; }
+ }
+
public CChallengeRounds(int numRounds, int numPlayer, int numPlayerAtOnce)
{
Rounds = new List();
diff --git a/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs b/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs
index d1d39b53..4635d741 100644
--- a/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs
+++ b/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs
@@ -24,33 +24,6 @@ using VocaluxeLib.Menu;
namespace VocaluxeLib.PartyModes.Challenge
{
-
- #region Communication
-
- #region ToScreen
- public struct SDataToScreenConfig
- {
- public int NumPlayer;
- public int NumPlayerAtOnce;
- public int NumRounds;
- }
-
- public struct SDataToScreenNames
- {
- public int NumPlayer;
- public List ProfileIDs;
- }
-
- public struct SDataToScreenMain
- {
- public int CurrentRoundNr;
- public int NumPlayerAtOnce;
- public List Combs;
- public int[,] Results;
- public List ResultTable;
- public List ProfileIDs;
- }
-
public class CResultTableRow : IComparable
{
public int Position;
@@ -78,39 +51,21 @@ namespace VocaluxeLib.PartyModes.Challenge
throw new ArgumentException("object is not a ResultTableRow");
}
}
- #endregion ToScreen
- #region FromScreen
- public struct SDataFromScreen
+ public abstract class CPartyScreenChallenge : CMenuParty
{
- public SFromScreenConfig ScreenConfig;
- public SFromScreenNames ScreenNames;
- public SFromScreenMain ScreenMain;
+ protected new CPartyModeChallenge _PartyMode;
+
+ public override void Init()
+ {
+ base.Init();
+ _PartyMode = (CPartyModeChallenge)base._PartyMode;
+ }
}
- public struct SFromScreenConfig
- {
- public int NumPlayer;
- public int NumPlayerAtOnce;
- public int NumRounds;
- }
-
- public struct SFromScreenNames
- {
- public bool FadeBack;
- public List ProfileIDs;
- }
-
- public struct SFromScreenMain
- {
- public bool FadeToSongSelection;
- public bool FadeToNameSelection;
- }
- #endregion FromScreen
-
- #endregion Communication
-
+ // ReSharper disable ClassNeverInstantiated.Global
public sealed class CPartyModeChallenge : CPartyMode
+ // ReSharper restore ClassNeverInstantiated.Global
{
private const int _MaxPlayer = 12;
private const int _MinPlayer = 1;
@@ -120,14 +75,13 @@ namespace VocaluxeLib.PartyModes.Challenge
private enum EStage
{
- NotStarted,
Config,
Names,
Main,
Singing
}
- private struct SData
+ public struct SData
{
public int NumPlayer;
public int NumPlayerAtOnce;
@@ -151,11 +105,7 @@ namespace VocaluxeLib.PartyModes.Challenge
public int Won;
}
- private SDataToScreenConfig _ToScreenConfig;
- private SDataToScreenNames _ToScreenNames;
- private SDataToScreenMain _ToScreenMain;
-
- private SData _GameData;
+ public SData GameData;
private EStage _Stage;
public CPartyModeChallenge(int id, string folder)
@@ -171,18 +121,12 @@ namespace VocaluxeLib.PartyModes.Challenge
_ScreenSongOptions.Sorting.SearchActive = false;
_ScreenSongOptions.Sorting.DuetOptions = EDuetOptions.NoDuets;
- _Stage = EStage.NotStarted;
-
- _ToScreenConfig = new SDataToScreenConfig();
- _ToScreenNames = new SDataToScreenNames();
- _ToScreenMain = new SDataToScreenMain();
-
- _GameData = new SData {NumPlayer = 4, NumPlayerAtOnce = 2, NumRounds = 2, CurrentRoundNr = 1, ProfileIDs = new List(), CatSongIndices = null, Results = null};
+ GameData = new SData {NumPlayer = 4, NumPlayerAtOnce = 2, NumRounds = 12, CurrentRoundNr = 1, ProfileIDs = new List(), CatSongIndices = null, Results = null};
}
public override bool Init()
{
- _Stage = EStage.NotStarted;
+ _Stage = EStage.Config;
_ScreenSongOptions.Sorting.IgnoreArticles = CBase.Config.GetIgnoreArticles();
_ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting();
@@ -192,82 +136,11 @@ namespace VocaluxeLib.PartyModes.Challenge
if (CBase.Config.GetTabs() == EOffOn.TR_CONFIG_ON && _ScreenSongOptions.Sorting.SongSorting != ESongSorting.TR_CONFIG_NONE)
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_ON;
- _ToScreenMain.ResultTable = new List();
- _GameData.ResultTable = new List();
+ GameData.ResultTable = new List();
return true;
}
- public override void DataFromScreen(string screenName, Object data)
- {
- SDataFromScreen dataFrom;
- switch (screenName)
- {
- case "PartyScreenChallengeConfig":
-
- try
- {
- dataFrom = (SDataFromScreen)data;
- _GameData.NumPlayer = dataFrom.ScreenConfig.NumPlayer;
- _GameData.NumPlayerAtOnce = dataFrom.ScreenConfig.NumPlayerAtOnce;
- _GameData.NumRounds = dataFrom.ScreenConfig.NumRounds;
-
- _Stage = EStage.Config;
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode challenge. Can't cast received data from screen " + screenName + ". " + e.Message);
- }
- break;
-
- case "PartyScreenChallengeNames":
- try
- {
- dataFrom = (SDataFromScreen)data;
- if (dataFrom.ScreenNames.FadeBack)
- _Stage = EStage.NotStarted;
- else
- {
- _GameData.ProfileIDs = dataFrom.ScreenNames.ProfileIDs;
- _Stage = EStage.Names;
- }
-
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode challenge. Can't cast received data from screen " + screenName + ". " + e.Message);
- }
- break;
-
- case "PartyScreenChallengeMain":
- try
- {
- dataFrom = (SDataFromScreen)data;
- if (dataFrom.ScreenMain.FadeToSongSelection)
- _Stage = EStage.Singing;
- if (dataFrom.ScreenMain.FadeToNameSelection)
- _Stage = EStage.Config;
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode challenge. Can't cast received data from screen " + screenName + ". " + e.Message);
- }
-
-
- if (_Stage == EStage.Singing)
- _StartNextRound();
- if (_Stage == EStage.Config)
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
- break;
-
- default:
- CBase.Log.LogError("Error in party mode challenge. Wrong screen is sending: " + screenName);
- break;
- }
- }
-
public override void UpdateGame()
{
/*
@@ -277,78 +150,78 @@ namespace VocaluxeLib.PartyModes.Challenge
_ScreenSongOptions.Selection.RandomOnly = false;*/
}
- public override CMenuParty GetNextPartyScreen(out EScreens alternativeScreen)
+ private IMenu _GetNextScreen()
{
- CMenuParty screen = null;
- alternativeScreen = EScreens.ScreenSong;
-
switch (_Stage)
{
- case EStage.NotStarted:
- _Screens.TryGetValue("CPartyScreenChallengeConfig", out screen);
- if (screen != null)
- {
- _ToScreenConfig.NumPlayer = _GameData.NumPlayer;
- _ToScreenConfig.NumPlayerAtOnce = _GameData.NumPlayerAtOnce;
- _ToScreenConfig.NumRounds = _GameData.NumRounds;
- screen.DataToScreen(_ToScreenConfig);
- }
- break;
case EStage.Config:
- _Screens.TryGetValue("CPartyScreenChallengeNames", out screen);
- if (screen != null)
- {
- _ToScreenNames.NumPlayer = _GameData.NumPlayer;
- _ToScreenNames.ProfileIDs = _GameData.ProfileIDs;
- screen.DataToScreen(_ToScreenNames);
- }
+ return _Screens["CPartyScreenChallengeConfig"];
+ case EStage.Names:
+ return _Screens["CPartyScreenChallengeNames"];
+ case EStage.Main:
+ return _Screens["CPartyScreenChallengeMain"];
+ case EStage.Singing:
+ return CBase.Graphics.GetScreen(EScreen.Song);
+ default:
+ throw new ArgumentException("Invalid stage: " + _Stage);
+ }
+ }
+
+ private void _FadeToScreen()
+ {
+ CBase.Graphics.FadeTo(_GetNextScreen());
+ }
+
+ public void Next()
+ {
+ switch (_Stage)
+ {
+ case EStage.Config:
+ _Stage = EStage.Names;
break;
case EStage.Names:
- _Screens.TryGetValue("CPartyScreenChallengeMain", out screen);
- if (screen != null)
- {
- CBase.Songs.ResetSongSung();
- _ToScreenMain.ResultTable = new List();
- _GameData.ResultTable = new List();
- _GameData.Rounds = new CChallengeRounds(_GameData.NumRounds, _GameData.NumPlayer, _GameData.NumPlayerAtOnce);
- _GameData.CurrentRoundNr = 1;
- _ToScreenMain.CurrentRoundNr = 1;
- _ToScreenMain.NumPlayerAtOnce = _GameData.NumPlayerAtOnce;
- _ToScreenMain.Combs = _GameData.Rounds.Rounds;
- _ToScreenMain.ProfileIDs = _GameData.ProfileIDs;
- _UpdateScores();
- _ToScreenMain.ResultTable = _GameData.ResultTable;
- _ToScreenMain.Results = _GameData.Results;
- screen.DataToScreen(_ToScreenMain);
- }
+ _Stage = EStage.Main;
+ CBase.Songs.ResetSongSung();
+ GameData.ResultTable = new List();
+ GameData.Rounds = new CChallengeRounds(GameData.NumRounds, GameData.NumPlayer, GameData.NumPlayerAtOnce);
+ GameData.CurrentRoundNr = 1;
break;
case EStage.Main:
- //nothing to do
+ _Stage = EStage.Singing;
+ _StartNextRound();
break;
case EStage.Singing:
- _Screens.TryGetValue("CPartyScreenChallengeMain", out screen);
- if (screen != null)
- {
- _UpdateScores();
- _ToScreenMain.CurrentRoundNr = _GameData.CurrentRoundNr;
- _ToScreenMain.Combs = _GameData.Rounds.Rounds;
- _ToScreenMain.Results = _GameData.Results;
- screen.DataToScreen(_ToScreenMain);
- }
+ _Stage = EStage.Main;
+ _UpdateScores();
break;
+ default:
+ throw new ArgumentException("Invalid stage: " + _Stage);
}
-
- return screen;
+ _FadeToScreen();
}
- public override EScreens GetStartScreen()
+ public void Back()
{
- return EScreens.ScreenPartyDummy;
+ switch (_Stage)
+ {
+ case EStage.Config:
+ CBase.Graphics.FadeTo(EScreen.Party);
+ return;
+ case EStage.Names:
+ _Stage = EStage.Config;
+ break;
+ case EStage.Main:
+ _Stage = EStage.Config;
+ break;
+ default: // Rest is not allowed
+ throw new ArgumentException("Invalid stage: " + _Stage);
+ }
+ _FadeToScreen();
}
- public override EScreens GetMainScreen()
+ public override IMenu GetStartScreen()
{
- return EScreens.ScreenPartyDummy;
+ return _Screens["CPartyScreenChallengeConfig"];
}
public override SScreenSongOptions GetScreenSongOptions()
@@ -371,10 +244,10 @@ namespace VocaluxeLib.PartyModes.Challenge
_ScreenSongOptions.Selection.SelectNextRandomSong = false;
_CreateCatSongIndices();
- if (_GameData.CatSongIndices != null)
+ if (GameData.CatSongIndices != null)
{
- if (_GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] == -1)
- _GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] = songIndex;
+ if (GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] == -1)
+ GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] = songIndex;
}
}
@@ -385,15 +258,15 @@ namespace VocaluxeLib.PartyModes.Challenge
public override void OnCategoryChange(int categoryIndex, ref SScreenSongOptions screenSongOptions)
// ReSharper restore RedundantAssignment
{
- if (_GameData.CatSongIndices != null && categoryIndex != -1)
+ if (GameData.CatSongIndices != null && categoryIndex != -1)
{
- if (_GameData.CatSongIndices[categoryIndex] == -1)
+ if (GameData.CatSongIndices[categoryIndex] == -1)
_ScreenSongOptions.Selection.SelectNextRandomSong = true;
else
- _ScreenSongOptions.Selection.SongIndex = _GameData.CatSongIndices[categoryIndex];
+ _ScreenSongOptions.Selection.SongIndex = GameData.CatSongIndices[categoryIndex];
}
- if (_GameData.CatSongIndices == null && categoryIndex != -1)
+ if (GameData.CatSongIndices == null && categoryIndex != -1)
_ScreenSongOptions.Selection.SelectNextRandomSong = true;
if (categoryIndex == -1)
@@ -456,34 +329,34 @@ namespace VocaluxeLib.PartyModes.Challenge
CBase.Game.Reset();
CBase.Game.ClearSongs();
CBase.Game.AddSong(songID, gm);
- CBase.Game.SetNumPlayer(_GameData.NumPlayerAtOnce);
+ CBase.Game.SetNumPlayer(GameData.NumPlayerAtOnce);
SPlayer[] players = CBase.Game.GetPlayers();
if (players == null)
return;
- if (players.Length < _GameData.NumPlayerAtOnce)
+ if (players.Length < GameData.NumPlayerAtOnce)
return;
- CCombination c = _GameData.Rounds.GetRound(_GameData.CurrentRoundNr - 1);
+ CCombination c = GameData.Rounds.GetRound(GameData.CurrentRoundNr - 1);
- for (int i = 0; i < _GameData.NumPlayerAtOnce; i++)
+ for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{
//try to fill with the right data
if (c != null)
- players[i].ProfileID = _GameData.ProfileIDs[c.Player[i]];
+ players[i].ProfileID = GameData.ProfileIDs[c.Player[i]];
else
players[i].ProfileID = -1;
}
- CBase.Graphics.FadeTo(EScreens.ScreenSing);
+ CBase.Graphics.FadeTo(EScreen.Sing);
}
public override void LeavingHighscore()
{
CBase.Songs.AddPartySongSung(CBase.Game.GetSong(0).ID);
- _GameData.CurrentRoundNr++;
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
+ GameData.CurrentRoundNr++;
+ Next();
}
private void _StartNextRound()
@@ -492,13 +365,12 @@ namespace VocaluxeLib.PartyModes.Challenge
_ScreenSongOptions.Selection.CategoryChangeAllowed = _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON;
_SetNumJokers();
_SetTeamNames();
- _GameData.CatSongIndices = null;
- CBase.Graphics.FadeTo(EScreens.ScreenSong);
+ GameData.CatSongIndices = null;
}
private void _SetNumJokers()
{
- switch (_GameData.NumPlayerAtOnce)
+ switch (GameData.NumPlayerAtOnce)
{
case 1:
_ScreenSongOptions.Selection.NumJokers = new int[] {10};
@@ -531,19 +403,19 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _SetTeamNames()
{
- if (_GameData.NumPlayerAtOnce < 1 || _GameData.ProfileIDs.Count < _GameData.NumPlayerAtOnce)
+ if (GameData.NumPlayerAtOnce < 1 || GameData.ProfileIDs.Count < GameData.NumPlayerAtOnce)
{
_ScreenSongOptions.Selection.TeamNames = new string[] {"foo", "bar"};
return;
}
- _ScreenSongOptions.Selection.TeamNames = new string[_GameData.NumPlayerAtOnce];
- CCombination c = _GameData.Rounds.GetRound(_GameData.CurrentRoundNr - 1);
+ _ScreenSongOptions.Selection.TeamNames = new string[GameData.NumPlayerAtOnce];
+ CCombination c = GameData.Rounds.GetRound(GameData.CurrentRoundNr - 1);
- for (int i = 0; i < _GameData.NumPlayerAtOnce; i++)
+ for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{
if (c != null)
- _ScreenSongOptions.Selection.TeamNames[i] = CBase.Profiles.GetPlayerName(_GameData.ProfileIDs[c.Player[i]]);
+ _ScreenSongOptions.Selection.TeamNames[i] = CBase.Profiles.GetPlayerName(GameData.ProfileIDs[c.Player[i]]);
else
_ScreenSongOptions.Selection.TeamNames[i] = "foobar";
}
@@ -551,19 +423,19 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _UpdateScores()
{
- if (_GameData.ResultTable.Count == 0)
+ if (GameData.ResultTable.Count == 0)
{
- for (int i = 0; i < _GameData.NumPlayer; i++)
+ for (int i = 0; i < GameData.NumPlayer; i++)
{
- var row = new CResultTableRow {PlayerID = _GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0};
- _GameData.ResultTable.Add(row);
+ var row = new CResultTableRow {PlayerID = GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0};
+ GameData.ResultTable.Add(row);
}
- _GameData.Results = new int[_GameData.NumRounds,_GameData.NumPlayerAtOnce];
- for (int i = 0; i < _GameData.NumRounds; i++)
+ GameData.Results = new int[GameData.NumRounds,GameData.NumPlayerAtOnce];
+ for (int i = 0; i < GameData.NumRounds; i++)
{
- for (int j = 0; j < _GameData.NumPlayerAtOnce; j++)
- _GameData.Results[i, j] = 0;
+ for (int j = 0; j < GameData.NumPlayerAtOnce; j++)
+ GameData.Results[i, j] = 0;
}
}
else
@@ -572,20 +444,20 @@ namespace VocaluxeLib.PartyModes.Challenge
if (results == null)
return;
- if (results.Length < _GameData.NumPlayerAtOnce)
+ if (results.Length < GameData.NumPlayerAtOnce)
return;
- for (int j = 0; j < _GameData.NumPlayerAtOnce; j++)
- _GameData.Results[_GameData.CurrentRoundNr - 2, j] = (int)Math.Round(results[j].Points);
+ for (int j = 0; j < GameData.NumPlayerAtOnce; j++)
+ GameData.Results[GameData.CurrentRoundNr - 2, j] = (int)Math.Round(results[j].Points);
List points = _GetPointsForPlayer(results);
- for (int i = 0; i < _GameData.NumPlayerAtOnce; i++)
+ for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{
int index = -1;
- for (int j = 0; j < _GameData.ResultTable.Count; j++)
+ for (int j = 0; j < GameData.ResultTable.Count; j++)
{
- if (points[i].ProfileID == _GameData.ResultTable[j].PlayerID)
+ if (points[i].ProfileID == GameData.ResultTable[j].PlayerID)
{
index = j;
break;
@@ -594,24 +466,24 @@ namespace VocaluxeLib.PartyModes.Challenge
if (index == -1)
continue;
- CResultTableRow row = _GameData.ResultTable[index];
+ CResultTableRow row = GameData.ResultTable[index];
row.NumPlayed++;
row.NumWon += points[i].Won;
row.NumSingPoints += points[i].SingPoints;
row.NumGamePoints += points[i].GamePoints;
- _GameData.ResultTable[index] = row;
+ GameData.ResultTable[index] = row;
}
}
- _GameData.ResultTable.Sort();
+ GameData.ResultTable.Sort();
//Update position-number
int pos = 1;
int lastPoints = 0;
int lastSingPoints = 0;
- foreach (CResultTableRow resultRow in _GameData.ResultTable)
+ foreach (CResultTableRow resultRow in GameData.ResultTable)
{
if (lastPoints > resultRow.NumGamePoints || lastSingPoints > resultRow.NumSingPoints)
pos++;
@@ -624,7 +496,7 @@ namespace VocaluxeLib.PartyModes.Challenge
private List _GetPointsForPlayer(SPlayer[] results)
{
var result = new List();
- for (int i = 0; i < _GameData.NumPlayerAtOnce; i++)
+ for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{
var stat = new SStats {ProfileID = results[i].ProfileID, SingPoints = (int)Math.Round(results[i].Points), Won = 0, GamePoints = 0};
result.Add(stat);
@@ -672,15 +544,15 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _CreateCatSongIndices()
{
- if (_GameData.CatSongIndices == null && CBase.Songs.GetNumCategories() > 0 && _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON)
+ if (GameData.CatSongIndices == null && CBase.Songs.GetNumCategories() > 0 && _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON)
{
- _GameData.CatSongIndices = new int[CBase.Songs.GetNumCategories()];
- for (int i = 0; i < _GameData.CatSongIndices.Length; i++)
- _GameData.CatSongIndices[i] = -1;
+ GameData.CatSongIndices = new int[CBase.Songs.GetNumCategories()];
+ for (int i = 0; i < GameData.CatSongIndices.Length; i++)
+ GameData.CatSongIndices[i] = -1;
}
if (CBase.Songs.GetNumCategories() == 0 || _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_OFF)
- _GameData.CatSongIndices = null;
+ GameData.CatSongIndices = null;
}
}
}
\ No newline at end of file
diff --git a/PartyModes/PartyModeChallenge/CPartyScreenChallengeConfig.cs b/PartyModes/PartyModeChallenge/CPartyScreenChallengeConfig.cs
index 6b1c3749..e1ef8456 100644
--- a/PartyModes/PartyModeChallenge/CPartyScreenChallengeConfig.cs
+++ b/PartyModes/PartyModeChallenge/CPartyScreenChallengeConfig.cs
@@ -15,14 +15,12 @@
// along with Vocaluxe. If not, see .
#endregion
-using System;
using System.Windows.Forms;
-using VocaluxeLib.Menu;
namespace VocaluxeLib.PartyModes.Challenge
{
// ReSharper disable UnusedMember.Global
- public class CPartyScreenChallengeConfig : CMenuParty
+ public class CPartyScreenChallengeConfig : CPartyScreenChallenge
// ReSharper restore UnusedMember.Global
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
@@ -41,33 +39,12 @@ namespace VocaluxeLib.PartyModes.Challenge
private int _MaxNumRounds = 100;
private int _RoundSteps = 1;
- private SDataFromScreen _Data;
-
public override void Init()
{
base.Init();
_ThemeSelectSlides = new string[] {_SelectSlideNumPlayers, _SelectSlideNumMics, _SelectSlideNumRounds};
_ThemeButtons = new string[] {_ButtonNext, _ButtonBack};
-
- _Data = new SDataFromScreen();
- SFromScreenConfig config = new SFromScreenConfig {NumPlayer = 4, NumPlayerAtOnce = 2, NumRounds = 12};
- _Data.ScreenConfig = config;
- }
-
- public override void DataToScreen(object receivedData)
- {
- try
- {
- SDataToScreenConfig config = (SDataToScreenConfig)receivedData;
- _Data.ScreenConfig.NumPlayer = config.NumPlayer;
- _Data.ScreenConfig.NumPlayerAtOnce = config.NumPlayerAtOnce;
- _Data.ScreenConfig.NumRounds = config.NumRounds;
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode screen challenge config. Can't cast received data from game mode " + ThemeName + ". " + e.Message);
- }
}
public override bool HandleInput(SKeyEvent keyEvent)
@@ -81,17 +58,17 @@ namespace VocaluxeLib.PartyModes.Challenge
{
case Keys.Back:
case Keys.Escape:
- _Back();
+ _PartyMode.Back();
break;
case Keys.Enter:
_UpdateSlides();
if (_Buttons[_ButtonBack].Selected)
- _Back();
+ _PartyMode.Back();
if (_Buttons[_ButtonNext].Selected)
- _Next();
+ _PartyMode.Next();
break;
case Keys.Left:
@@ -114,14 +91,14 @@ namespace VocaluxeLib.PartyModes.Challenge
{
_UpdateSlides();
if (_Buttons[_ButtonBack].Selected)
- _Back();
+ _PartyMode.Back();
if (_Buttons[_ButtonNext].Selected)
- _Next();
+ _PartyMode.Next();
}
if (mouseEvent.RB)
- _Back();
+ _PartyMode.Back();
return true;
}
@@ -150,7 +127,7 @@ namespace VocaluxeLib.PartyModes.Challenge
_SelectSlides[_SelectSlideNumPlayers].Clear();
for (int i = _PartyMode.GetMinPlayer(); i <= _PartyMode.GetMaxPlayer(); i++)
_SelectSlides[_SelectSlideNumPlayers].AddValue(i.ToString());
- _SelectSlides[_SelectSlideNumPlayers].Selection = _Data.ScreenConfig.NumPlayer - _PartyMode.GetMinPlayer();
+ _SelectSlides[_SelectSlideNumPlayers].Selection = _PartyMode.GameData.NumPlayer - _PartyMode.GetMinPlayer();
_UpdateMicsAtOnce();
_SetRoundSteps();
@@ -159,21 +136,21 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _UpdateSlides()
{
- int player = _Data.ScreenConfig.NumPlayer;
- int mics = _Data.ScreenConfig.NumPlayerAtOnce;
- _Data.ScreenConfig.NumPlayer = _SelectSlides[_SelectSlideNumPlayers].Selection + _PartyMode.GetMinPlayer();
- _Data.ScreenConfig.NumPlayerAtOnce = _SelectSlides[_SelectSlideNumMics].Selection + _PartyMode.GetMinPlayer();
- _Data.ScreenConfig.NumRounds = (_SelectSlides[_SelectSlideNumRounds].Selection + 1) * _RoundSteps;
+ int player = _PartyMode.GameData.NumPlayer;
+ int mics = _PartyMode.GameData.NumPlayerAtOnce;
+ _PartyMode.GameData.NumPlayer = _SelectSlides[_SelectSlideNumPlayers].Selection + _PartyMode.GetMinPlayer();
+ _PartyMode.GameData.NumPlayerAtOnce = _SelectSlides[_SelectSlideNumMics].Selection + _PartyMode.GetMinPlayer();
+ _PartyMode.GameData.NumRounds = (_SelectSlides[_SelectSlideNumRounds].Selection + 1) * _RoundSteps;
_UpdateMicsAtOnce();
_SetRoundSteps();
- if (player != _Data.ScreenConfig.NumPlayer || mics != _Data.ScreenConfig.NumPlayerAtOnce)
+ if (player != _PartyMode.GameData.NumPlayer || mics != _PartyMode.GameData.NumPlayerAtOnce)
{
- int num = CHelper.CombinationCount(_Data.ScreenConfig.NumPlayer, _Data.ScreenConfig.NumPlayerAtOnce);
+ int num = CHelper.CombinationCount(_PartyMode.GameData.NumPlayer, _PartyMode.GameData.NumPlayerAtOnce);
while (num > _MaxNumRounds)
num -= _RoundSteps;
- _Data.ScreenConfig.NumRounds = num;
+ _PartyMode.GameData.NumRounds = num;
}
_UpdateSlideRounds();
@@ -181,19 +158,18 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _UpdateMicsAtOnce()
{
- //Data.ScreenConfig.NumPlayerAtOnce
int maxNum = _MaxNumMics;
- if (_Data.ScreenConfig.NumPlayer < _MaxNumMics)
- maxNum = _Data.ScreenConfig.NumPlayer;
+ if (_PartyMode.GameData.NumPlayer < _MaxNumMics)
+ maxNum = _PartyMode.GameData.NumPlayer;
- if (_Data.ScreenConfig.NumPlayerAtOnce > maxNum)
- _Data.ScreenConfig.NumPlayerAtOnce = maxNum;
+ if (_PartyMode.GameData.NumPlayerAtOnce > maxNum)
+ _PartyMode.GameData.NumPlayerAtOnce = maxNum;
// build mics at once slide
_SelectSlides[_SelectSlideNumMics].Clear();
for (int i = 1; i <= maxNum; i++)
_SelectSlides[_SelectSlideNumMics].AddValue(i.ToString());
- _SelectSlides[_SelectSlideNumMics].Selection = _Data.ScreenConfig.NumPlayerAtOnce - _PartyMode.GetMinPlayer();
+ _SelectSlides[_SelectSlideNumMics].Selection = _PartyMode.GameData.NumPlayerAtOnce - _PartyMode.GetMinPlayer();
}
private void _UpdateSlideRounds()
@@ -202,31 +178,21 @@ namespace VocaluxeLib.PartyModes.Challenge
_SelectSlides[_SelectSlideNumRounds].Clear();
for (int i = _RoundSteps; i <= _MaxNumRounds; i += _RoundSteps)
_SelectSlides[_SelectSlideNumRounds].AddValue(i.ToString());
- _SelectSlides[_SelectSlideNumRounds].Selection = _Data.ScreenConfig.NumRounds / _RoundSteps - 1;
+ _SelectSlides[_SelectSlideNumRounds].Selection = _PartyMode.GameData.NumRounds / _RoundSteps - 1;
}
private void _SetRoundSteps()
{
- if (_Data.ScreenConfig.NumPlayerAtOnce < 1 || _Data.ScreenConfig.NumPlayer < 1 || _Data.ScreenConfig.NumPlayerAtOnce > _Data.ScreenConfig.NumPlayer)
+ if (_PartyMode.GameData.NumPlayerAtOnce < 1 || _PartyMode.GameData.NumPlayer < 1 || _PartyMode.GameData.NumPlayerAtOnce > _PartyMode.GameData.NumPlayer)
{
_RoundSteps = 1;
return;
}
- int res = _Data.ScreenConfig.NumPlayer / _Data.ScreenConfig.NumPlayerAtOnce;
- int mod = _Data.ScreenConfig.NumPlayer % _Data.ScreenConfig.NumPlayerAtOnce;
+ int res = _PartyMode.GameData.NumPlayer / _PartyMode.GameData.NumPlayerAtOnce;
+ int mod = _PartyMode.GameData.NumPlayer % _PartyMode.GameData.NumPlayerAtOnce;
- _RoundSteps = mod == 0 ? res : _Data.ScreenConfig.NumPlayer;
- }
-
- private void _Back()
- {
- _FadeTo(EScreens.ScreenParty);
- }
-
- private void _Next()
- {
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ _RoundSteps = mod == 0 ? res : _PartyMode.GameData.NumPlayer;
}
}
}
\ No newline at end of file
diff --git a/PartyModes/PartyModeChallenge/CPartyScreenChallengeMain.cs b/PartyModes/PartyModeChallenge/CPartyScreenChallengeMain.cs
index 840baaf7..41805118 100644
--- a/PartyModes/PartyModeChallenge/CPartyScreenChallengeMain.cs
+++ b/PartyModes/PartyModeChallenge/CPartyScreenChallengeMain.cs
@@ -40,7 +40,7 @@ namespace VocaluxeLib.PartyModes.Challenge
}
// ReSharper disable UnusedMember.Global
- public class CPartyScreenChallengeMain : CMenuParty
+ public class CPartyScreenChallengeMain : CPartyScreenChallenge
// ReSharper restore UnusedMember.Global
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
@@ -79,8 +79,6 @@ namespace VocaluxeLib.PartyModes.Challenge
private bool _ExitPopupVisible;
- private SDataFromScreen _Data;
- private SDataToScreenMain _GameState;
private List _PlayerTable;
private List _RoundsTable;
@@ -94,11 +92,6 @@ namespace VocaluxeLib.PartyModes.Challenge
private const int _NumPlayerVisible = 10;
private int _NumRoundsVisible = 3;
- public CPartyScreenChallengeMain()
- {
- _Data = new SDataFromScreen {ScreenMain = new SFromScreenMain()};
- }
-
public override void Init()
{
base.Init();
@@ -121,7 +114,6 @@ namespace VocaluxeLib.PartyModes.Challenge
{
base.LoadTheme(xmlPath);
- _GameState = new SDataToScreenMain();
_BuildPlayerTable();
_CreateRoundsTable();
_NextPlayerTexts = new List();
@@ -137,19 +129,6 @@ namespace VocaluxeLib.PartyModes.Challenge
_Statics[_StaticNextPlayer].Visible = false;
}
- public override void DataToScreen(object receivedData)
- {
- try
- {
- var data = (SDataToScreenMain)receivedData;
- _GameState = data;
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode screen challenge main. Can't cast received data from game mode " + ThemeName + ". " + e.Message);
- }
- }
-
public override bool HandleInput(SKeyEvent keyEvent)
{
base.HandleInput(keyEvent);
@@ -163,8 +142,8 @@ namespace VocaluxeLib.PartyModes.Challenge
case Keys.Escape:
if (!_ExitPopupVisible)
{
- if (_GameState.CurrentRoundNr == 1)
- _Back();
+ if (_PartyMode.GameData.CurrentRoundNr == 1)
+ _PartyMode.Back();
else
_ShowPopup(true);
}
@@ -176,10 +155,10 @@ namespace VocaluxeLib.PartyModes.Challenge
if (!_ExitPopupVisible)
{
if (_Buttons[_ButtonNextRound].Selected)
- _NextRound();
- if (_Buttons[_ButtonBack].Selected && _GameState.CurrentRoundNr == 1)
- _Back();
- if (_Buttons[_ButtonExit].Selected && _GameState.CurrentRoundNr > 1)
+ _PartyMode.Next();
+ if (_Buttons[_ButtonBack].Selected && _PartyMode.GameData.CurrentRoundNr == 1)
+ _PartyMode.Back();
+ if (_Buttons[_ButtonExit].Selected && _PartyMode.GameData.CurrentRoundNr > 1)
_ShowPopup(true);
if (_Buttons[_ButtonPlayerScrollUp].Selected)
_ScrollPlayerTable(-1);
@@ -212,10 +191,10 @@ namespace VocaluxeLib.PartyModes.Challenge
if (!_ExitPopupVisible)
{
if (_Buttons[_ButtonNextRound].Selected)
- _NextRound();
- if (_Buttons[_ButtonBack].Selected && _GameState.CurrentRoundNr == 1)
- _Back();
- if (_Buttons[_ButtonExit].Selected && _GameState.CurrentRoundNr > 1)
+ _PartyMode.Next();
+ if (_Buttons[_ButtonBack].Selected && _PartyMode.GameData.CurrentRoundNr == 1)
+ _PartyMode.Back();
+ if (_Buttons[_ButtonExit].Selected && _PartyMode.GameData.CurrentRoundNr > 1)
_ShowPopup(true);
if (_Buttons[_ButtonPlayerScrollUp].Selected)
_ScrollPlayerTable(-1);
@@ -239,8 +218,8 @@ namespace VocaluxeLib.PartyModes.Challenge
{
if (!_ExitPopupVisible)
{
- if (_GameState.CurrentRoundNr == 1)
- _Back();
+ if (_PartyMode.GameData.CurrentRoundNr == 1)
+ _PartyMode.Back();
else
_ShowPopup(true);
}
@@ -269,13 +248,13 @@ namespace VocaluxeLib.PartyModes.Challenge
_UpdatePlayerTable();
_UpdateNextPlayerPositions();
_UpdateNextPlayerContents();
- if (_GameState.CurrentRoundNr == 1)
+ if (_PartyMode.GameData.CurrentRoundNr == 1)
_BuildRoundsTable();
else
- _ScrollRoundsTable(_GameState.CurrentRoundNr - 2);
+ _ScrollRoundsTable(_PartyMode.GameData.CurrentRoundNr - 2);
_UpdateRoundsTable();
- if (_GameState.CurrentRoundNr == 1)
+ if (_PartyMode.GameData.CurrentRoundNr == 1)
{
_Buttons[_ButtonBack].Visible = true;
_Buttons[_ButtonExit].Visible = false;
@@ -286,7 +265,7 @@ namespace VocaluxeLib.PartyModes.Challenge
_Buttons[_ButtonExit].Visible = true;
}
- if (_GameState.CurrentRoundNr <= _GameState.Combs.Count)
+ if (_PartyMode.GameData.CurrentRoundNr <= _PartyMode.GameData.Rounds.Count)
{
_Buttons[_ButtonNextRound].Visible = true;
_Texts[_TextFinishMessage].Visible = false;
@@ -310,16 +289,9 @@ namespace VocaluxeLib.PartyModes.Challenge
return true;
}
- private void _NextRound()
- {
- _Data.ScreenMain.FadeToNameSelection = false;
- _Data.ScreenMain.FadeToSongSelection = true;
- _PartyMode.DataFromScreen(ThemeName, _Data);
- }
-
private void _EndParty()
{
- _FadeTo(EScreens.ScreenParty);
+ CBase.Graphics.FadeTo(EScreen.Party);
}
private void _ShowPopup(bool visible)
@@ -335,19 +307,13 @@ namespace VocaluxeLib.PartyModes.Challenge
_SelectElement(_Buttons[_ButtonPopupNo]);
}
- private void _Back()
- {
- _Data.ScreenMain.FadeToNameSelection = true;
- _Data.ScreenMain.FadeToSongSelection = false;
- _PartyMode.DataFromScreen(ThemeName, _Data);
- }
-
private void _UpdateNextPlayerPositions()
{
- float x = (float)CBase.Settings.GetRenderW() / 2 - ((_GameState.NumPlayerAtOnce * _Statics[_StaticNextPlayer].Rect.W) + ((_GameState.NumPlayerAtOnce - 1) * 15)) / 2;
+ float x = (float)CBase.Settings.GetRenderW() / 2 -
+ ((_PartyMode.GameData.NumPlayerAtOnce * _Statics[_StaticNextPlayer].Rect.W) + ((_PartyMode.GameData.NumPlayerAtOnce - 1) * 15)) / 2;
const float staticY = 590;
const float textY = 550;
- for (int i = 0; i < _GameState.NumPlayerAtOnce; i++)
+ for (int i = 0; i < _PartyMode.GameData.NumPlayerAtOnce; i++)
{
//static
_NextPlayerStatics[i].X = x;
@@ -360,7 +326,7 @@ namespace VocaluxeLib.PartyModes.Challenge
x += _Statics[_StaticNextPlayer].Rect.W + 15;
}
- for (int i = _GameState.NumPlayerAtOnce; i < _PartyMode.GetMaxPlayer(); i++)
+ for (int i = _PartyMode.GameData.NumPlayerAtOnce; i < _PartyMode.GetMaxPlayer(); i++)
{
_NextPlayerStatics[i].Visible = false;
_NextPlayerTexts[i].Visible = false;
@@ -369,12 +335,12 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _UpdateNextPlayerContents()
{
- if (_GameState.CurrentRoundNr <= _GameState.Combs.Count)
+ if (_PartyMode.GameData.CurrentRoundNr <= _PartyMode.GameData.Rounds.Count)
{
_Texts[_TextNextPlayerMessage].Visible = true;
- for (int i = 0; i < _GameState.NumPlayerAtOnce; i++)
+ for (int i = 0; i < _PartyMode.GameData.NumPlayerAtOnce; i++)
{
- int id = _GameState.ProfileIDs[_GameState.Combs[_GameState.CurrentRoundNr - 1].Player[i]];
+ int id = _PartyMode.GameData.ProfileIDs[_PartyMode.GameData.Rounds[_PartyMode.GameData.CurrentRoundNr - 1].Player[i]];
_NextPlayerStatics[i].Texture = CBase.Profiles.GetAvatar(id);
_NextPlayerTexts[i].Text = CBase.Profiles.GetPlayerName(id);
_NextPlayerTexts[i].Color = CBase.Themes.GetPlayerColor(i + 1);
@@ -383,7 +349,7 @@ namespace VocaluxeLib.PartyModes.Challenge
else
{
_Texts[_TextNextPlayerMessage].Visible = false;
- for (int i = 0; i < _GameState.NumPlayerAtOnce; i++)
+ for (int i = 0; i < _PartyMode.GameData.NumPlayerAtOnce; i++)
{
_NextPlayerStatics[i].Visible = false;
_NextPlayerTexts[i].Visible = false;
@@ -429,10 +395,10 @@ namespace VocaluxeLib.PartyModes.Challenge
_RoundsTableScrollArea = new SRectF();
const int numPlayerInOneRow = 3;
- _NumRoundsVisible = _GameState.NumPlayerAtOnce <= numPlayerInOneRow ? 5 : 3;
+ _NumRoundsVisible = _PartyMode.GameData.NumPlayerAtOnce <= numPlayerInOneRow ? 5 : 3;
- if (_NumRoundsVisible > _GameState.Combs.Count)
- _NumRoundsVisible = _GameState.Combs.Count;
+ if (_NumRoundsVisible > _PartyMode.GameData.Rounds.Count)
+ _NumRoundsVisible = _PartyMode.GameData.Rounds.Count;
float numberX = _Texts[_TextRoundNumber].X;
float numberY = _Texts[_TextRoundNumber].Y;
@@ -449,15 +415,15 @@ namespace VocaluxeLib.PartyModes.Challenge
//Round-number
roundRow.Number.X = numberX;
roundRow.Number.Y = numberY;
- var numInnerRows = (int)Math.Ceiling(_GameState.NumPlayerAtOnce / ((double)numPlayerInOneRow));
+ var numInnerRows = (int)Math.Ceiling(_PartyMode.GameData.NumPlayerAtOnce / ((double)numPlayerInOneRow));
for (int row = 0; row < numInnerRows; row++)
{
int num = (row + 1) * numPlayerInOneRow;
int numPlayerInThisRow = numPlayerInOneRow;
- if (num > _GameState.NumPlayerAtOnce)
+ if (num > _PartyMode.GameData.NumPlayerAtOnce)
{
- num = _GameState.NumPlayerAtOnce;
- numPlayerInThisRow = _GameState.NumPlayerAtOnce - (row * numPlayerInOneRow);
+ num = _PartyMode.GameData.NumPlayerAtOnce;
+ numPlayerInThisRow = _PartyMode.GameData.NumPlayerAtOnce - (row * numPlayerInOneRow);
}
for (int column = row * numPlayerInOneRow; column < num; column++)
{
@@ -486,17 +452,18 @@ namespace VocaluxeLib.PartyModes.Challenge
{
for (int p = 0; p < _RoundsTable[i].TextPlayer.Count; p++)
{
- if (_GameState.Combs.Count > i + _RoundsTableOffset && _GameState.Combs[i + _RoundsTableOffset].Player.Count > p)
+ if (_PartyMode.GameData.Rounds.Count > i + _RoundsTableOffset && _PartyMode.GameData.Rounds[i + _RoundsTableOffset].Player.Count > p)
{
_RoundsTable[i].Number.Visible = true;
_RoundsTable[i].TextPlayer[p].Visible = true;
_RoundsTable[i].TextScores[p].Visible = true;
_RoundsTable[i].Number.Text = (i + 1 + _RoundsTableOffset) + ")";
- _RoundsTable[i].TextPlayer[p].Text = CBase.Profiles.GetPlayerName(_GameState.ProfileIDs[_GameState.Combs[i + _RoundsTableOffset].Player[p]]);
+ _RoundsTable[i].TextPlayer[p].Text =
+ CBase.Profiles.GetPlayerName(_PartyMode.GameData.ProfileIDs[_PartyMode.GameData.Rounds[i + _RoundsTableOffset].Player[p]]);
// ReSharper disable ConvertIfStatementToConditionalTernaryExpression
- if ((_GameState.CurrentRoundNr - 1) > i + _RoundsTableOffset)
+ if ((_PartyMode.GameData.CurrentRoundNr - 1) > i + _RoundsTableOffset)
// ReSharper restore ConvertIfStatementToConditionalTernaryExpression
- _RoundsTable[i].TextScores[p].Text = _GameState.Results[i + _RoundsTableOffset, p].ToString();
+ _RoundsTable[i].TextScores[p].Text = _PartyMode.GameData.Results[i + _RoundsTableOffset, p].ToString();
else
_RoundsTable[i].TextScores[p].Text = "";
}
@@ -506,7 +473,7 @@ namespace VocaluxeLib.PartyModes.Challenge
_RoundsTable[i].TextScores[p].Visible = false;
}
}
- if (_GameState.Combs.Count < i + _RoundsTableOffset || i + 1 > _NumRoundsVisible)
+ if (_PartyMode.GameData.Rounds.Count < i + _RoundsTableOffset || i + 1 > _NumRoundsVisible)
{
_RoundsTable[i].Number.Visible = false;
for (int p = 0; p < _RoundsTable[i].TextPlayer.Count; p++)
@@ -518,7 +485,7 @@ namespace VocaluxeLib.PartyModes.Challenge
}
_Buttons[_ButtonRoundsScrollUp].Visible = _RoundsTableOffset > 0;
- _Buttons[_ButtonRoundsScrollDown].Visible = _GameState.Combs.Count - _NumRoundsVisible - _RoundsTableOffset > 0;
+ _Buttons[_ButtonRoundsScrollDown].Visible = _PartyMode.GameData.Rounds.Count - _NumRoundsVisible - _RoundsTableOffset > 0;
}
private void _BuildPlayerTable()
@@ -578,7 +545,7 @@ namespace VocaluxeLib.PartyModes.Challenge
{
STableRow row = _PlayerTable[i];
- if (i + _PlayerTableOffset < _GameState.ResultTable.Count)
+ if (i + _PlayerTableOffset < _PartyMode.GameData.ResultTable.Count)
{
row.Pos.Visible = true;
row.Name.Visible = true;
@@ -587,12 +554,12 @@ namespace VocaluxeLib.PartyModes.Challenge
row.SingPoints.Visible = true;
row.GamePoints.Visible = true;
- row.Pos.Text = _GameState.ResultTable[i + _PlayerTableOffset].Position + ".";
- row.Name.Text = CBase.Profiles.GetPlayerName(_GameState.ResultTable[i + _PlayerTableOffset].PlayerID);
- row.Rounds.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumPlayed.ToString();
- row.Won.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumWon.ToString();
- row.SingPoints.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumSingPoints.ToString();
- row.GamePoints.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumGamePoints.ToString();
+ row.Pos.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].Position + ".";
+ row.Name.Text = CBase.Profiles.GetPlayerName(_PartyMode.GameData.ResultTable[i + _PlayerTableOffset].PlayerID);
+ row.Rounds.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumPlayed.ToString();
+ row.Won.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumWon.ToString();
+ row.SingPoints.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumSingPoints.ToString();
+ row.GamePoints.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumGamePoints.ToString();
}
else
{
@@ -606,37 +573,37 @@ namespace VocaluxeLib.PartyModes.Challenge
}
_Buttons[_ButtonPlayerScrollUp].Visible = _PlayerTableOffset > 0;
- _Buttons[_ButtonPlayerScrollDown].Visible = _GameState.ProfileIDs.Count - _NumPlayerVisible - _PlayerTableOffset > 0;
+ _Buttons[_ButtonPlayerScrollDown].Visible = _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible - _PlayerTableOffset > 0;
}
private void _ScrollPlayerTable(int offset)
{
- if (_GameState.ProfileIDs.Count <= _NumPlayerVisible)
+ if (_PartyMode.GameData.ProfileIDs.Count <= _NumPlayerVisible)
_PlayerTableOffset = 0;
else if (offset < 0 && _PlayerTableOffset + offset >= 0)
_PlayerTableOffset += offset;
else if (offset < 0 && _PlayerTableOffset + offset < 0)
_PlayerTableOffset = 0;
- else if (offset > 0 && _PlayerTableOffset + offset <= _GameState.ProfileIDs.Count - _NumPlayerVisible)
+ else if (offset > 0 && _PlayerTableOffset + offset <= _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible)
_PlayerTableOffset += offset;
- else if (offset > 0 && _PlayerTableOffset + offset > _GameState.ProfileIDs.Count - _NumPlayerVisible)
- _PlayerTableOffset = _GameState.ProfileIDs.Count - _NumPlayerVisible;
+ else if (offset > 0 && _PlayerTableOffset + offset > _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible)
+ _PlayerTableOffset = _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible;
_UpdatePlayerTable();
}
private void _ScrollRoundsTable(int offset)
{
- if (_GameState.Combs.Count <= _NumRoundsVisible)
+ if (_PartyMode.GameData.Rounds.Count <= _NumRoundsVisible)
_RoundsTableOffset = 0;
else if (offset < 0 && _RoundsTableOffset + offset >= 0)
_RoundsTableOffset += offset;
else if (offset < 0 && _RoundsTableOffset + offset < 0)
_RoundsTableOffset = 0;
- else if (offset > 0 && _RoundsTableOffset + offset <= _GameState.Combs.Count - _NumRoundsVisible)
+ else if (offset > 0 && _RoundsTableOffset + offset <= _PartyMode.GameData.Rounds.Count - _NumRoundsVisible)
_RoundsTableOffset += offset;
- else if (offset > 0 && _RoundsTableOffset + offset > _GameState.Combs.Count - _NumRoundsVisible)
- _RoundsTableOffset = _GameState.Combs.Count - _NumRoundsVisible;
+ else if (offset > 0 && _RoundsTableOffset + offset > _PartyMode.GameData.Rounds.Count - _NumRoundsVisible)
+ _RoundsTableOffset = _PartyMode.GameData.Rounds.Count - _NumRoundsVisible;
_UpdateRoundsTable();
}
@@ -645,13 +612,13 @@ namespace VocaluxeLib.PartyModes.Challenge
{
string s = "";
- for (int i = 0; i < _GameState.ResultTable.Count; i++)
+ for (int i = 0; i < _PartyMode.GameData.ResultTable.Count; i++)
{
- if (_GameState.ResultTable[i].Position == 1)
+ if (_PartyMode.GameData.ResultTable[i].Position == 1)
{
if (i > 0)
s += ", ";
- s += CBase.Profiles.GetPlayerName(_GameState.ResultTable[i].PlayerID);
+ s += CBase.Profiles.GetPlayerName(_PartyMode.GameData.ResultTable[i].PlayerID);
}
else
break;
diff --git a/PartyModes/PartyModeChallenge/CPartyScreenChallengeNames.cs b/PartyModes/PartyModeChallenge/CPartyScreenChallengeNames.cs
index 14b5102c..9b79c0d2 100644
--- a/PartyModes/PartyModeChallenge/CPartyScreenChallengeNames.cs
+++ b/PartyModes/PartyModeChallenge/CPartyScreenChallengeNames.cs
@@ -15,7 +15,6 @@
// along with Vocaluxe. If not, see .
#endregion
-using System;
using System.Collections.Generic;
using VocaluxeLib.Menu;
@@ -31,62 +30,38 @@ namespace VocaluxeLib.PartyModes.Challenge
get { return 1; }
}
- private SDataFromScreen _Data;
+ private new CPartyModeChallenge _PartyMode;
public override void Init()
{
base.Init();
-
- _Data.ScreenNames.ProfileIDs = new List();
- _Data = new SDataFromScreen();
- var names = new SFromScreenNames {FadeBack = false, ProfileIDs = new List()};
- _Data.ScreenNames = names;
-
+ _PartyMode = (CPartyModeChallenge)base._PartyMode;
_AllowChangePlayerNum = false;
}
- public override void DataToScreen(object receivedData)
- {
- try
- {
- var config = (SDataToScreenNames)receivedData;
- _Data.ScreenNames.ProfileIDs = config.ProfileIDs ?? new List();
-
- SetPartyModeData(config.NumPlayer);
-
- while (_Data.ScreenNames.ProfileIDs.Count > _NumPlayer)
- _Data.ScreenNames.ProfileIDs.RemoveAt(_Data.ScreenNames.ProfileIDs.Count - 1);
-
- List[] ids = new List[] {_Data.ScreenNames.ProfileIDs};
- SetPartyModeProfiles(ids);
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode screen challenge names. Can't cast received data from game mode " + ThemeName + ". " + e.Message);
- }
- }
-
public override void OnShow()
{
base.OnShow();
+ SetPartyModeData(_PartyMode.GameData.NumPlayer);
+ while (_PartyMode.GameData.ProfileIDs.Count > _NumPlayer)
+ _PartyMode.GameData.ProfileIDs.RemoveAt(_PartyMode.GameData.ProfileIDs.Count - 1);
+
+ List[] ids = new List[] {_PartyMode.GameData.ProfileIDs};
+ SetPartyModeProfiles(ids);
}
public override void Back()
{
- SPartyNameOptions options = GetData();
- if (options.TeamList.Length == 1)
- _Data.ScreenNames.ProfileIDs = options.TeamList[0];
- _Data.ScreenNames.FadeBack = true;
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ if (_TeamList.Length == 1)
+ _PartyMode.GameData.ProfileIDs = _TeamList[0];
+ _PartyMode.Back();
}
public override void Next()
{
- SPartyNameOptions options = GetData();
- if (options.TeamList.Length == 1)
- _Data.ScreenNames.ProfileIDs = options.TeamList[0];
- _Data.ScreenNames.FadeBack = false;
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ if (_TeamList.Length == 1)
+ _PartyMode.GameData.ProfileIDs = _TeamList[0];
+ _PartyMode.Next();
}
}
}
\ No newline at end of file
diff --git a/PartyModes/PartyModeChallengeMedley/CChallengeRounds.cs b/PartyModes/PartyModeChallengeMedley/CChallengeRounds.cs
index 3b7f00a8..01b6068e 100644
--- a/PartyModes/PartyModeChallengeMedley/CChallengeRounds.cs
+++ b/PartyModes/PartyModeChallengeMedley/CChallengeRounds.cs
@@ -28,6 +28,16 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
public readonly List Rounds;
+ public int Count
+ {
+ get { return Rounds.Count; }
+ }
+
+ public CCombination this[int index]
+ {
+ get { return Rounds[index]; }
+ }
+
public CChallengeRounds(int numRounds, int numPlayer, int numPlayerAtOnce)
{
Rounds = new List();
@@ -59,7 +69,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
Rounds.Add(combinations.GetNextCombination(_GetPlayerDemand(i)));
}
- private List _GetPlayerDemand(int roundIndex)
+ private IEnumerable _GetPlayerDemand(int roundIndex)
{
List numPlayed = new List(_NumPlayer);
for (int i = 0; i < _NumPlayer; i++)
diff --git a/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs b/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs
index a7a5cbd0..2cb2a866 100644
--- a/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs
+++ b/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs
@@ -21,40 +21,13 @@ using System.Collections.ObjectModel;
using System.Runtime.InteropServices;
using VocaluxeLib.Game;
using VocaluxeLib.Menu;
-using VocaluxeLib.Songs;
using VocaluxeLib.Profile;
+using VocaluxeLib.Songs;
[assembly: ComVisible(false)]
namespace VocaluxeLib.PartyModes.ChallengeMedley
{
-
- #region Communication
-
- #region ToScreen
- public struct SDataToScreenConfig
- {
- public int NumPlayer;
- public int NumPlayerAtOnce;
- public int NumRounds;
- }
-
- public struct SDataToScreenNames
- {
- public int NumPlayer;
- public List ProfileIDs;
- }
-
- public struct SDataToScreenMain
- {
- public int CurrentRoundNr;
- public int NumPlayerAtOnce;
- public List Combs;
- public int[,] Results;
- public List ResultTable;
- public List ProfileIDs;
- }
-
public class CResultTableRow : IComparable
{
public int Position;
@@ -66,7 +39,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
public int CompareTo(object obj)
{
- CResultTableRow row = obj as CResultTableRow;
+ var row = obj as CResultTableRow;
if (row != null)
{
int res = row.NumGamePoints.CompareTo(NumGamePoints);
@@ -82,39 +55,21 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
throw new ArgumentException("object is not a ResultTableRow");
}
}
- #endregion ToScreen
- #region FromScreen
- public struct SDataFromScreen
+ public abstract class CPartyScreenChallengeMedley : CMenuParty
{
- public SFromScreenConfig ScreenConfig;
- public SFromScreenNames ScreenNames;
- public SFromScreenMain ScreenMain;
+ protected new CPartyModeChallengeMedley _PartyMode;
+
+ public override void Init()
+ {
+ base.Init();
+ _PartyMode = (CPartyModeChallengeMedley)base._PartyMode;
+ }
}
- public struct SFromScreenConfig
- {
- public int NumPlayer;
- public int NumPlayerAtOnce;
- public int NumRounds;
- }
-
- public struct SFromScreenNames
- {
- public bool FadeToConfig;
- public List ProfileIDs;
- }
-
- public struct SFromScreenMain
- {
- public bool FadeToSongSelection;
- public bool FadeToNameSelection;
- }
- #endregion FromScreen
-
- #endregion Communication
-
+ // ReSharper disable ClassNeverInstantiated.Global
public sealed class CPartyModeChallengeMedley : CPartyMode
+ // ReSharper restore ClassNeverInstantiated.Global
{
private const int _MaxPlayer = 12;
private const int _MinPlayer = 1;
@@ -125,14 +80,13 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private enum EStage
{
- NotStarted,
Config,
Names,
Main,
Singing
}
- private struct SData
+ public struct SData
{
public int NumPlayer;
public int NumPlayerAtOnce;
@@ -156,11 +110,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
public int Won;
}
- private SDataToScreenConfig _ToScreenConfig;
- private SDataToScreenNames _ToScreenNames;
- private SDataToScreenMain _ToScreenMain;
-
- private SData _GameData;
+ public SData GameData;
private EStage _Stage;
public CPartyModeChallengeMedley(int id, string folder)
@@ -176,103 +126,26 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_ScreenSongOptions.Sorting.SearchActive = false;
_ScreenSongOptions.Sorting.DuetOptions = EDuetOptions.NoDuets;
- _Stage = EStage.NotStarted;
-
- _ToScreenConfig = new SDataToScreenConfig();
- _ToScreenNames = new SDataToScreenNames();
- _ToScreenMain = new SDataToScreenMain();
-
- _GameData = new SData {NumPlayer = 4, NumPlayerAtOnce = 2, NumRounds = 2, CurrentRoundNr = 1, ProfileIDs = new List(), CatSongIndices = null, Results = null};
+ GameData = new SData {NumPlayer = 4, NumPlayerAtOnce = 2, NumRounds = 12, CurrentRoundNr = 1, ProfileIDs = new List(), CatSongIndices = null, Results = null};
}
public override bool Init()
{
- _Stage = EStage.NotStarted;
+ _Stage = EStage.Config;
_ScreenSongOptions.Sorting.IgnoreArticles = EOffOn.TR_CONFIG_OFF;
_ScreenSongOptions.Sorting.SongSorting = ESongSorting.TR_CONFIG_NONE;
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_OFF;
_ScreenSongOptions.Selection.SongIndex = -1;
- _ToScreenMain.ResultTable = new List();
- _GameData.ResultTable = new List();
-
CBase.Songs.SortSongs(ESongSorting.TR_CONFIG_NONE, EOffOn.TR_CONFIG_OFF, EOffOn.TR_CONFIG_OFF, String.Empty, EDuetOptions.NoDuets);
CBase.Songs.SetCategory(0);
+ GameData.ResultTable = new List();
+
return true;
}
- public override void DataFromScreen(string screenName, Object data)
- {
- SDataFromScreen dataFrom;
- switch (screenName)
- {
- case "PartyScreenChallengeMedleyConfig":
-
- try
- {
- dataFrom = (SDataFromScreen)data;
- _GameData.NumPlayer = dataFrom.ScreenConfig.NumPlayer;
- _GameData.NumPlayerAtOnce = dataFrom.ScreenConfig.NumPlayerAtOnce;
- _GameData.NumRounds = dataFrom.ScreenConfig.NumRounds;
-
- _Stage = EStage.Config;
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode challenge. Can't cast received data from screen " + screenName + ". " + e.Message);
- }
- break;
-
- case "PartyScreenChallengeMedleyNames":
- try
- {
- dataFrom = (SDataFromScreen)data;
- if (dataFrom.ScreenNames.FadeToConfig)
- _Stage = EStage.NotStarted;
- else
- {
- _GameData.ProfileIDs = dataFrom.ScreenNames.ProfileIDs;
- _Stage = EStage.Names;
- }
-
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode challenge. Can't cast received data from screen " + screenName + ". " + e.Message);
- }
- break;
-
- case "PartyScreenChallengeMedleyMain":
- try
- {
- dataFrom = (SDataFromScreen)data;
- if (dataFrom.ScreenMain.FadeToSongSelection)
- _Stage = EStage.Singing;
- if (dataFrom.ScreenMain.FadeToNameSelection)
- _Stage = EStage.Config;
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode challenge. Can't cast received data from screen " + screenName + ". " + e.Message);
- }
-
-
- if (_Stage == EStage.Singing)
- _StartNextRound();
- if (_Stage == EStage.Config)
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
- break;
-
- default:
- CBase.Log.LogError("Error in party mode challenge. Wrong screen is sending: " + screenName);
- break;
- }
- }
-
public override void UpdateGame()
{
/*
@@ -282,78 +155,79 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_ScreenSongOptions.Selection.RandomOnly = false;*/
}
- public override CMenuParty GetNextPartyScreen(out EScreens alternativeScreen)
+ private IMenu _GetNextScreen()
{
- CMenuParty screen = null;
- alternativeScreen = EScreens.ScreenSong;
-
switch (_Stage)
{
- case EStage.NotStarted:
- _Screens.TryGetValue("CPartyScreenChallengeMedleyConfig", out screen);
- if (screen != null)
- {
- _ToScreenConfig.NumPlayer = _GameData.NumPlayer;
- _ToScreenConfig.NumPlayerAtOnce = _GameData.NumPlayerAtOnce;
- _ToScreenConfig.NumRounds = _GameData.NumRounds;
- screen.DataToScreen(_ToScreenConfig);
- }
- break;
case EStage.Config:
- _Screens.TryGetValue("CPartyScreenChallengeMedleyNames", out screen);
- if (screen != null)
- {
- _ToScreenNames.NumPlayer = _GameData.NumPlayer;
- _ToScreenNames.ProfileIDs = _GameData.ProfileIDs;
- screen.DataToScreen(_ToScreenNames);
- }
+ return _Screens["CPartyScreenChallengeMedleyConfig"];
+ case EStage.Names:
+ return _Screens["CPartyScreenChallengeMedleyNames"];
+ case EStage.Main:
+ return _Screens["CPartyScreenChallengeMedleyMain"];
+ case EStage.Singing:
+ return CBase.Graphics.GetScreen(EScreen.Song);
+ default:
+ throw new ArgumentException("Invalid stage: " + _Stage);
+ }
+ }
+
+ private void _FadeToScreen()
+ {
+ CBase.Graphics.FadeTo(_GetNextScreen());
+ }
+
+ public void Next()
+ {
+ switch (_Stage)
+ {
+ case EStage.Config:
+ _Stage = EStage.Names;
break;
case EStage.Names:
- _Screens.TryGetValue("CPartyScreenChallengeMedleyMain", out screen);
- if (screen != null)
- {
- CBase.Songs.ResetSongSung();
- _ToScreenMain.ResultTable = new List();
- _GameData.ResultTable = new List();
- _GameData.Rounds = new CChallengeRounds(_GameData.NumRounds, _GameData.NumPlayer, _GameData.NumPlayerAtOnce);
- _GameData.CurrentRoundNr = 1;
- _ToScreenMain.CurrentRoundNr = 1;
- _ToScreenMain.NumPlayerAtOnce = _GameData.NumPlayerAtOnce;
- _ToScreenMain.Combs = _GameData.Rounds.Rounds;
- _ToScreenMain.ProfileIDs = _GameData.ProfileIDs;
- _UpdateScores();
- _ToScreenMain.ResultTable = _GameData.ResultTable;
- _ToScreenMain.Results = _GameData.Results;
- screen.DataToScreen(_ToScreenMain);
- }
+ _Stage = EStage.Main;
+ CBase.Songs.ResetSongSung();
+ GameData.ResultTable = new List();
+ GameData.Rounds = new CChallengeRounds(GameData.NumRounds, GameData.NumPlayer, GameData.NumPlayerAtOnce);
+ GameData.CurrentRoundNr = 1;
break;
case EStage.Main:
- //nothing to do
+ _Stage = EStage.Singing;
+ if (!_StartNextRound())
+ CBase.Graphics.FadeTo(EScreen.Party);
break;
case EStage.Singing:
- _Screens.TryGetValue("CPartyScreenChallengeMedleyMain", out screen);
- if (screen != null)
- {
- _UpdateScores();
- _ToScreenMain.CurrentRoundNr = _GameData.CurrentRoundNr;
- _ToScreenMain.Combs = _GameData.Rounds.Rounds;
- _ToScreenMain.Results = _GameData.Results;
- screen.DataToScreen(_ToScreenMain);
- }
+ _Stage = EStage.Main;
+ _UpdateScores();
break;
+ default:
+ throw new ArgumentException("Invalid stage: " + _Stage);
}
-
- return screen;
+ _FadeToScreen();
}
- public override EScreens GetStartScreen()
+ public void Back()
{
- return EScreens.ScreenPartyDummy;
+ switch (_Stage)
+ {
+ case EStage.Config:
+ CBase.Graphics.FadeTo(EScreen.Party);
+ return;
+ case EStage.Names:
+ _Stage = EStage.Config;
+ break;
+ case EStage.Main:
+ _Stage = EStage.Config;
+ break;
+ default: // Rest is not allowed
+ throw new ArgumentException("Invalid stage: " + _Stage);
+ }
+ _FadeToScreen();
}
- public override EScreens GetMainScreen()
+ public override IMenu GetStartScreen()
{
- return EScreens.ScreenPartyDummy;
+ return _Screens["CPartyScreenChallengeMedleyConfig"];
}
public override SScreenSongOptions GetScreenSongOptions()
@@ -376,10 +250,10 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_ScreenSongOptions.Selection.SelectNextRandomSong = false;
_CreateCatSongIndices();
- if (_GameData.CatSongIndices != null)
+ if (GameData.CatSongIndices != null)
{
- if (_GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] == -1)
- _GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] = songIndex;
+ if (GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] == -1)
+ GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] = songIndex;
}
}
@@ -390,15 +264,15 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
public override void OnCategoryChange(int categoryIndex, ref SScreenSongOptions screenSongOptions)
// ReSharper restore RedundantAssignment
{
- if (_GameData.CatSongIndices != null && categoryIndex != -1)
+ if (GameData.CatSongIndices != null && categoryIndex != -1)
{
- if (_GameData.CatSongIndices[categoryIndex] == -1)
+ if (GameData.CatSongIndices[categoryIndex] == -1)
_ScreenSongOptions.Selection.SelectNextRandomSong = true;
else
- _ScreenSongOptions.Selection.SongIndex = _GameData.CatSongIndices[categoryIndex];
+ _ScreenSongOptions.Selection.SongIndex = GameData.CatSongIndices[categoryIndex];
}
- if (_GameData.CatSongIndices == null && categoryIndex != -1)
+ if (GameData.CatSongIndices == null && categoryIndex != -1)
_ScreenSongOptions.Selection.SelectNextRandomSong = true;
if (categoryIndex == -1)
@@ -458,22 +332,19 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
public override void LeavingHighscore()
{
- for (int i = 0; i < CBase.Game.GetNumSongs(); i++)
- CBase.Songs.AddPartySongSung(CBase.Game.GetSong(i).ID);
- _GameData.CurrentRoundNr++;
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
+ GameData.CurrentRoundNr++;
+ Next();
}
- private void _StartNextRound()
+ private bool _StartNextRound()
{
_ScreenSongOptions.Selection.RandomOnly = _ScreenSongOptions.Sorting.Tabs != EOffOn.TR_CONFIG_ON;
_ScreenSongOptions.Selection.CategoryChangeAllowed = _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON;
_SetNumJokers();
_SetTeamNames();
- _GameData.CatSongIndices = null;
+ GameData.CatSongIndices = null;
- if (_RandomizeSongs())
- CBase.Graphics.FadeTo(EScreens.ScreenSing);
+ return _RandomizeSongs();
}
private bool _RandomizeSongs()
@@ -482,27 +353,27 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
CBase.Game.ClearSongs();
#region PlayerNames
- CBase.Game.SetNumPlayer(_GameData.NumPlayerAtOnce);
+ CBase.Game.SetNumPlayer(GameData.NumPlayerAtOnce);
SPlayer[] players = CBase.Game.GetPlayers();
if (players == null)
return false;
- if (players.Length < _GameData.NumPlayerAtOnce)
+ if (players.Length < GameData.NumPlayerAtOnce)
return false;
- CCombination c = _GameData.Rounds.GetRound(_GameData.CurrentRoundNr - 1);
+ CCombination c = GameData.Rounds.GetRound(GameData.CurrentRoundNr - 1);
- for (int i = 0; i < _GameData.NumPlayerAtOnce; i++)
+ for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{
//try to fill with the right data
if (c != null)
- players[i].ProfileID = _GameData.ProfileIDs[c.Player[i]];
+ players[i].ProfileID = GameData.ProfileIDs[c.Player[i]];
else
players[i].ProfileID = -1;
}
#endregion PlayerNames
- #region SongQueue
+ #region SongQueue
if (CBase.Songs.GetNumSongsVisible() < _NumSongs)
CBase.Songs.ResetSongSung();
@@ -512,7 +383,6 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
if (visibleSongs.Count == 0)
{
CBase.Log.LogError("CPartyChallengeMedleyMode Error: There are no songs!");
- CBase.Graphics.FadeTo(EScreens.ScreenParty);
return false;
}
@@ -536,7 +406,6 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
if (ids.Count == 0)
{
CBase.Log.LogError("CPartyChallengeMedleyMode Error: There are no medley songs!");
- CBase.Graphics.FadeTo(EScreens.ScreenParty);
return false;
}
@@ -545,6 +414,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
int songID = ids[CBase.Game.GetRandom(ids.Count)];
CBase.Game.AddSong(songID, EGameMode.TR_GAMEMODE_MEDLEY);
+ CBase.Songs.AddPartySongSung(songID);
ids.Remove(songID);
s++;
}
@@ -554,7 +424,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _SetNumJokers()
{
- switch (_GameData.NumPlayerAtOnce)
+ switch (GameData.NumPlayerAtOnce)
{
case 1:
_ScreenSongOptions.Selection.NumJokers = new int[] {10};
@@ -589,21 +459,27 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
CProfile[] profiles = CBase.Profiles.GetProfiles();
- if (_GameData.NumPlayerAtOnce < 1 || _GameData.ProfileIDs.Count < _GameData.NumPlayerAtOnce || profiles.Length < _GameData.NumPlayerAtOnce)
+ if (profiles == null)
{
_ScreenSongOptions.Selection.TeamNames = new string[] {"foo", "bar"};
return;
}
- _ScreenSongOptions.Selection.TeamNames = new string[_GameData.NumPlayerAtOnce];
- CCombination c = _GameData.Rounds.GetRound(_GameData.CurrentRoundNr - 1);
+ if (GameData.NumPlayerAtOnce < 1 || GameData.ProfileIDs.Count < GameData.NumPlayerAtOnce || profiles.Length < GameData.NumPlayerAtOnce)
+ {
+ _ScreenSongOptions.Selection.TeamNames = new string[] {"foo", "bar"};
+ return;
+ }
- for (int i = 0; i < _GameData.NumPlayerAtOnce; i++)
+ _ScreenSongOptions.Selection.TeamNames = new string[GameData.NumPlayerAtOnce];
+ CCombination c = GameData.Rounds.GetRound(GameData.CurrentRoundNr - 1);
+
+ for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{
if (c != null)
{
- if (_GameData.ProfileIDs[c.Player[i]] < profiles.Length)
- _ScreenSongOptions.Selection.TeamNames[i] = profiles[_GameData.ProfileIDs[c.Player[i]]].PlayerName;
+ if (GameData.ProfileIDs[c.Player[i]] < profiles.Length)
+ _ScreenSongOptions.Selection.TeamNames[i] = profiles[GameData.ProfileIDs[c.Player[i]]].PlayerName;
else
_ScreenSongOptions.Selection.TeamNames[i] = "foobar";
}
@@ -614,32 +490,32 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _UpdateScores()
{
- if (_GameData.ResultTable.Count == 0)
+ if (GameData.ResultTable.Count == 0)
{
- for (int i = 0; i < _GameData.NumPlayer; i++)
+ for (int i = 0; i < GameData.NumPlayer; i++)
{
- CResultTableRow row = new CResultTableRow {PlayerID = _GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0};
- _GameData.ResultTable.Add(row);
+ CResultTableRow row = new CResultTableRow {PlayerID = GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0};
+ GameData.ResultTable.Add(row);
}
- _GameData.Results = new int[_GameData.NumRounds,_GameData.NumPlayerAtOnce];
- for (int i = 0; i < _GameData.NumRounds; i++)
+ GameData.Results = new int[GameData.NumRounds,GameData.NumPlayerAtOnce];
+ for (int i = 0; i < GameData.NumRounds; i++)
{
- for (int j = 0; j < _GameData.NumPlayerAtOnce; j++)
- _GameData.Results[i, j] = 0;
+ for (int j = 0; j < GameData.NumPlayerAtOnce; j++)
+ GameData.Results[i, j] = 0;
}
}
else
{
CPoints gamePoints = CBase.Game.GetPoints();
- if (gamePoints == null || gamePoints.NumPlayer < _GameData.NumPlayerAtOnce)
+ if (gamePoints == null || gamePoints.NumPlayer < GameData.NumPlayerAtOnce)
return;
- SPlayer[] results = gamePoints.GetPlayer(0, _GameData.NumPlayerAtOnce);
+ SPlayer[] results = gamePoints.GetPlayer(0, GameData.NumPlayerAtOnce);
if (results == null)
return;
- if (results.Length < _GameData.NumPlayerAtOnce)
+ if (results.Length < GameData.NumPlayerAtOnce)
return;
if (gamePoints.NumRounds == 0)
@@ -647,25 +523,25 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
for (int i = 1; i < gamePoints.NumRounds; i++)
{
- SPlayer[] temp = gamePoints.GetPlayer(i, _GameData.NumPlayerAtOnce);
- for (int p = 0; p < _GameData.NumPlayerAtOnce; p++)
+ SPlayer[] temp = gamePoints.GetPlayer(i, GameData.NumPlayerAtOnce);
+ for (int p = 0; p < GameData.NumPlayerAtOnce; p++)
results[p].Points += temp[p].Points;
}
- for (int j = 0; j < _GameData.NumPlayerAtOnce; j++)
+ for (int j = 0; j < GameData.NumPlayerAtOnce; j++)
{
results[j].Points = results[j].Points / gamePoints.NumRounds;
- _GameData.Results[_GameData.CurrentRoundNr - 2, j] = (int)Math.Round(results[j].Points);
+ GameData.Results[GameData.CurrentRoundNr - 2, j] = (int)Math.Round(results[j].Points);
}
List points = _GetPointsForPlayer(results);
- for (int i = 0; i < _GameData.NumPlayerAtOnce; i++)
+ for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{
int index = -1;
- for (int j = 0; j < _GameData.ResultTable.Count; j++)
+ for (int j = 0; j < GameData.ResultTable.Count; j++)
{
- if (points[i].ProfileID == _GameData.ResultTable[j].PlayerID)
+ if (points[i].ProfileID == GameData.ResultTable[j].PlayerID)
{
index = j;
break;
@@ -674,25 +550,25 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
if (index != -1)
{
- CResultTableRow row = _GameData.ResultTable[index];
+ CResultTableRow row = GameData.ResultTable[index];
row.NumPlayed++;
row.NumWon += points[i].Won;
row.NumSingPoints += points[i].SingPoints;
row.NumGamePoints += points[i].GamePoints;
- _GameData.ResultTable[index] = row;
+ GameData.ResultTable[index] = row;
}
}
}
- _GameData.ResultTable.Sort();
+ GameData.ResultTable.Sort();
//Update position-number
int pos = 1;
int lastPoints = 0;
int lastSingPoints = 0;
- foreach (CResultTableRow resultRow in _GameData.ResultTable)
+ foreach (CResultTableRow resultRow in GameData.ResultTable)
{
if (lastPoints > resultRow.NumGamePoints || lastSingPoints > resultRow.NumSingPoints)
pos++;
@@ -704,10 +580,10 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private List _GetPointsForPlayer(SPlayer[] results)
{
- List result = new List();
- for (int i = 0; i < _GameData.NumPlayerAtOnce; i++)
+ var result = new List();
+ for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{
- SStats stat = new SStats {ProfileID = results[i].ProfileID, SingPoints = (int)Math.Round(results[i].Points), Won = 0, GamePoints = 0};
+ var stat = new SStats {ProfileID = results[i].ProfileID, SingPoints = (int)Math.Round(results[i].Points), Won = 0, GamePoints = 0};
result.Add(stat);
}
@@ -753,15 +629,15 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _CreateCatSongIndices()
{
- if (_GameData.CatSongIndices == null && CBase.Songs.GetNumCategories() > 0 && _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON)
+ if (GameData.CatSongIndices == null && CBase.Songs.GetNumCategories() > 0 && _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON)
{
- _GameData.CatSongIndices = new int[CBase.Songs.GetNumCategories()];
- for (int i = 0; i < _GameData.CatSongIndices.Length; i++)
- _GameData.CatSongIndices[i] = -1;
+ GameData.CatSongIndices = new int[CBase.Songs.GetNumCategories()];
+ for (int i = 0; i < GameData.CatSongIndices.Length; i++)
+ GameData.CatSongIndices[i] = -1;
}
if (CBase.Songs.GetNumCategories() == 0 || _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_OFF)
- _GameData.CatSongIndices = null;
+ GameData.CatSongIndices = null;
}
}
}
\ No newline at end of file
diff --git a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyConfig.cs b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyConfig.cs
index 24b8b5fd..2174939b 100644
--- a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyConfig.cs
+++ b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyConfig.cs
@@ -15,14 +15,12 @@
// along with Vocaluxe. If not, see .
#endregion
-using System;
using System.Windows.Forms;
-using VocaluxeLib.Menu;
namespace VocaluxeLib.PartyModes.ChallengeMedley
{
// ReSharper disable UnusedMember.Global
- public class CPartyScreenChallengeMedleyConfig : CMenuParty
+ public class CPartyScreenChallengeMedleyConfig : CPartyScreenChallengeMedley
// ReSharper restore UnusedMember.Global
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
@@ -41,33 +39,12 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private int _MaxNumRounds = 100;
private int _RoundSteps = 1;
- private SDataFromScreen _Data;
-
public override void Init()
{
base.Init();
_ThemeSelectSlides = new string[] {_SelectSlideNumPlayers, _SelectSlideNumMics, _SelectSlideNumRounds};
_ThemeButtons = new string[] {_ButtonNext, _ButtonBack};
-
- _Data = new SDataFromScreen();
- SFromScreenConfig config = new SFromScreenConfig {NumPlayer = 4, NumPlayerAtOnce = 2, NumRounds = 12};
- _Data.ScreenConfig = config;
- }
-
- public override void DataToScreen(object receivedData)
- {
- try
- {
- SDataToScreenConfig config = (SDataToScreenConfig)receivedData;
- _Data.ScreenConfig.NumPlayer = config.NumPlayer;
- _Data.ScreenConfig.NumPlayerAtOnce = config.NumPlayerAtOnce;
- _Data.ScreenConfig.NumRounds = config.NumRounds;
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode screen challenge config. Can't cast received data from game mode " + ThemeName + ". " + e.Message);
- }
}
public override bool HandleInput(SKeyEvent keyEvent)
@@ -81,17 +58,17 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
case Keys.Back:
case Keys.Escape:
- _Back();
+ _PartyMode.Back();
break;
case Keys.Enter:
_UpdateSlides();
if (_Buttons[_ButtonBack].Selected)
- _Back();
+ _PartyMode.Back();
if (_Buttons[_ButtonNext].Selected)
- _Next();
+ _PartyMode.Next();
break;
case Keys.Left:
@@ -114,14 +91,14 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
_UpdateSlides();
if (_Buttons[_ButtonBack].Selected)
- _Back();
+ _PartyMode.Back();
if (_Buttons[_ButtonNext].Selected)
- _Next();
+ _PartyMode.Next();
}
if (mouseEvent.RB)
- _Back();
+ _PartyMode.Back();
return true;
}
@@ -150,7 +127,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_SelectSlides[_SelectSlideNumPlayers].Clear();
for (int i = _PartyMode.GetMinPlayer(); i <= _PartyMode.GetMaxPlayer(); i++)
_SelectSlides[_SelectSlideNumPlayers].AddValue(i.ToString());
- _SelectSlides[_SelectSlideNumPlayers].Selection = _Data.ScreenConfig.NumPlayer - _PartyMode.GetMinPlayer();
+ _SelectSlides[_SelectSlideNumPlayers].Selection = _PartyMode.GameData.NumPlayer - _PartyMode.GetMinPlayer();
_UpdateMicsAtOnce();
_SetRoundSteps();
@@ -159,21 +136,21 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _UpdateSlides()
{
- int player = _Data.ScreenConfig.NumPlayer;
- int mics = _Data.ScreenConfig.NumPlayerAtOnce;
- _Data.ScreenConfig.NumPlayer = _SelectSlides[_SelectSlideNumPlayers].Selection + _PartyMode.GetMinPlayer();
- _Data.ScreenConfig.NumPlayerAtOnce = _SelectSlides[_SelectSlideNumMics].Selection + _PartyMode.GetMinPlayer();
- _Data.ScreenConfig.NumRounds = (_SelectSlides[_SelectSlideNumRounds].Selection + 1) * _RoundSteps;
+ int player = _PartyMode.GameData.NumPlayer;
+ int mics = _PartyMode.GameData.NumPlayerAtOnce;
+ _PartyMode.GameData.NumPlayer = _SelectSlides[_SelectSlideNumPlayers].Selection + _PartyMode.GetMinPlayer();
+ _PartyMode.GameData.NumPlayerAtOnce = _SelectSlides[_SelectSlideNumMics].Selection + _PartyMode.GetMinPlayer();
+ _PartyMode.GameData.NumRounds = (_SelectSlides[_SelectSlideNumRounds].Selection + 1) * _RoundSteps;
_UpdateMicsAtOnce();
_SetRoundSteps();
- if (player != _Data.ScreenConfig.NumPlayer || mics != _Data.ScreenConfig.NumPlayerAtOnce)
+ if (player != _PartyMode.GameData.NumPlayer || mics != _PartyMode.GameData.NumPlayerAtOnce)
{
- int num = CHelper.CombinationCount(_Data.ScreenConfig.NumPlayer, _Data.ScreenConfig.NumPlayerAtOnce);
+ int num = CHelper.CombinationCount(_PartyMode.GameData.NumPlayer, _PartyMode.GameData.NumPlayerAtOnce);
while (num > _MaxNumRounds)
num -= _RoundSteps;
- _Data.ScreenConfig.NumRounds = num;
+ _PartyMode.GameData.NumRounds = num;
}
_UpdateSlideRounds();
@@ -181,19 +158,18 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _UpdateMicsAtOnce()
{
- //Data.ScreenConfig.NumPlayerAtOnce
int maxNum = _MaxNumMics;
- if (_Data.ScreenConfig.NumPlayer < _MaxNumMics)
- maxNum = _Data.ScreenConfig.NumPlayer;
+ if (_PartyMode.GameData.NumPlayer < _MaxNumMics)
+ maxNum = _PartyMode.GameData.NumPlayer;
- if (_Data.ScreenConfig.NumPlayerAtOnce > maxNum)
- _Data.ScreenConfig.NumPlayerAtOnce = maxNum;
+ if (_PartyMode.GameData.NumPlayerAtOnce > maxNum)
+ _PartyMode.GameData.NumPlayerAtOnce = maxNum;
// build mics at once slide
_SelectSlides[_SelectSlideNumMics].Clear();
for (int i = 1; i <= maxNum; i++)
_SelectSlides[_SelectSlideNumMics].AddValue(i.ToString());
- _SelectSlides[_SelectSlideNumMics].Selection = _Data.ScreenConfig.NumPlayerAtOnce - _PartyMode.GetMinPlayer();
+ _SelectSlides[_SelectSlideNumMics].Selection = _PartyMode.GameData.NumPlayerAtOnce - _PartyMode.GetMinPlayer();
}
private void _UpdateSlideRounds()
@@ -202,31 +178,21 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_SelectSlides[_SelectSlideNumRounds].Clear();
for (int i = _RoundSteps; i <= _MaxNumRounds; i += _RoundSteps)
_SelectSlides[_SelectSlideNumRounds].AddValue(i.ToString());
- _SelectSlides[_SelectSlideNumRounds].Selection = _Data.ScreenConfig.NumRounds / _RoundSteps - 1;
+ _SelectSlides[_SelectSlideNumRounds].Selection = _PartyMode.GameData.NumRounds / _RoundSteps - 1;
}
private void _SetRoundSteps()
{
- if (_Data.ScreenConfig.NumPlayerAtOnce < 1 || _Data.ScreenConfig.NumPlayer < 1 || _Data.ScreenConfig.NumPlayerAtOnce > _Data.ScreenConfig.NumPlayer)
+ if (_PartyMode.GameData.NumPlayerAtOnce < 1 || _PartyMode.GameData.NumPlayer < 1 || _PartyMode.GameData.NumPlayerAtOnce > _PartyMode.GameData.NumPlayer)
{
_RoundSteps = 1;
return;
}
- int res = _Data.ScreenConfig.NumPlayer / _Data.ScreenConfig.NumPlayerAtOnce;
- int mod = _Data.ScreenConfig.NumPlayer % _Data.ScreenConfig.NumPlayerAtOnce;
+ int res = _PartyMode.GameData.NumPlayer / _PartyMode.GameData.NumPlayerAtOnce;
+ int mod = _PartyMode.GameData.NumPlayer % _PartyMode.GameData.NumPlayerAtOnce;
- _RoundSteps = mod == 0 ? res : _Data.ScreenConfig.NumPlayer;
- }
-
- private void _Back()
- {
- _FadeTo(EScreens.ScreenParty);
- }
-
- private void _Next()
- {
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ _RoundSteps = mod == 0 ? res : _PartyMode.GameData.NumPlayer;
}
}
}
\ No newline at end of file
diff --git a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyMain.cs b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyMain.cs
index 1f4e6e22..84831c23 100644
--- a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyMain.cs
+++ b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyMain.cs
@@ -40,7 +40,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
}
// ReSharper disable UnusedMember.Global
- public class CPartyScreenChallengeMedleyMain : CMenuParty
+ public class CPartyScreenChallengeMedleyMain : CPartyScreenChallengeMedley
// ReSharper restore UnusedMember.Global
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
@@ -79,8 +79,6 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private bool _ExitPopupVisible;
- private SDataFromScreen _Data;
- private SDataToScreenMain _GameState;
private List _PlayerTable;
private List _RoundsTable;
@@ -94,11 +92,6 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private const int _NumPlayerVisible = 10;
private int _NumRoundsVisible = 3;
- public CPartyScreenChallengeMedleyMain()
- {
- _Data = new SDataFromScreen {ScreenMain = new SFromScreenMain()};
- }
-
public override void Init()
{
base.Init();
@@ -121,7 +114,6 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
base.LoadTheme(xmlPath);
- _GameState = new SDataToScreenMain();
_BuildPlayerTable();
_CreateRoundsTable();
_NextPlayerTexts = new List();
@@ -137,19 +129,6 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_Statics[_StaticNextPlayer].Visible = false;
}
- public override void DataToScreen(object receivedData)
- {
- try
- {
- var data = (SDataToScreenMain)receivedData;
- _GameState = data;
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode screen challenge main. Can't cast received data from game mode " + ThemeName + ". " + e.Message);
- }
- }
-
public override bool HandleInput(SKeyEvent keyEvent)
{
base.HandleInput(keyEvent);
@@ -163,8 +142,8 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
case Keys.Escape:
if (!_ExitPopupVisible)
{
- if (_GameState.CurrentRoundNr == 1)
- _Back();
+ if (_PartyMode.GameData.CurrentRoundNr == 1)
+ _PartyMode.Back();
else
_ShowPopup(true);
}
@@ -176,10 +155,10 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
if (!_ExitPopupVisible)
{
if (_Buttons[_ButtonNextRound].Selected)
- _NextRound();
- if (_Buttons[_ButtonBack].Selected && _GameState.CurrentRoundNr == 1)
- _Back();
- if (_Buttons[_ButtonExit].Selected && _GameState.CurrentRoundNr > 1)
+ _PartyMode.Next();
+ if (_Buttons[_ButtonBack].Selected && _PartyMode.GameData.CurrentRoundNr == 1)
+ _PartyMode.Back();
+ if (_Buttons[_ButtonExit].Selected && _PartyMode.GameData.CurrentRoundNr > 1)
_ShowPopup(true);
if (_Buttons[_ButtonPlayerScrollUp].Selected)
_ScrollPlayerTable(-1);
@@ -212,10 +191,10 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
if (!_ExitPopupVisible)
{
if (_Buttons[_ButtonNextRound].Selected)
- _NextRound();
- if (_Buttons[_ButtonBack].Selected && _GameState.CurrentRoundNr == 1)
- _Back();
- if (_Buttons[_ButtonExit].Selected && _GameState.CurrentRoundNr > 1)
+ _PartyMode.Next();
+ if (_Buttons[_ButtonBack].Selected && _PartyMode.GameData.CurrentRoundNr == 1)
+ _PartyMode.Back();
+ if (_Buttons[_ButtonExit].Selected && _PartyMode.GameData.CurrentRoundNr > 1)
_ShowPopup(true);
if (_Buttons[_ButtonPlayerScrollUp].Selected)
_ScrollPlayerTable(-1);
@@ -239,8 +218,8 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
if (!_ExitPopupVisible)
{
- if (_GameState.CurrentRoundNr == 1)
- _Back();
+ if (_PartyMode.GameData.CurrentRoundNr == 1)
+ _PartyMode.Back();
else
_ShowPopup(true);
}
@@ -269,13 +248,13 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_UpdatePlayerTable();
_UpdateNextPlayerPositions();
_UpdateNextPlayerContents();
- if (_GameState.CurrentRoundNr == 1)
+ if (_PartyMode.GameData.CurrentRoundNr == 1)
_BuildRoundsTable();
else
- _ScrollRoundsTable(_GameState.CurrentRoundNr - 2);
+ _ScrollRoundsTable(_PartyMode.GameData.CurrentRoundNr - 2);
_UpdateRoundsTable();
- if (_GameState.CurrentRoundNr == 1)
+ if (_PartyMode.GameData.CurrentRoundNr == 1)
{
_Buttons[_ButtonBack].Visible = true;
_Buttons[_ButtonExit].Visible = false;
@@ -286,7 +265,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_Buttons[_ButtonExit].Visible = true;
}
- if (_GameState.CurrentRoundNr <= _GameState.Combs.Count)
+ if (_PartyMode.GameData.CurrentRoundNr <= _PartyMode.GameData.Rounds.Count)
{
_Buttons[_ButtonNextRound].Visible = true;
_Texts[_TextFinishMessage].Visible = false;
@@ -310,16 +289,9 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
return true;
}
- private void _NextRound()
- {
- _Data.ScreenMain.FadeToNameSelection = false;
- _Data.ScreenMain.FadeToSongSelection = true;
- _PartyMode.DataFromScreen(ThemeName, _Data);
- }
-
private void _EndParty()
{
- _FadeTo(EScreens.ScreenParty);
+ CBase.Graphics.FadeTo(EScreen.Party);
}
private void _ShowPopup(bool visible)
@@ -335,19 +307,13 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_SelectElement(_Buttons[_ButtonPopupNo]);
}
- private void _Back()
- {
- _Data.ScreenMain.FadeToNameSelection = true;
- _Data.ScreenMain.FadeToSongSelection = false;
- _PartyMode.DataFromScreen(ThemeName, _Data);
- }
-
private void _UpdateNextPlayerPositions()
{
- float x = (float)CBase.Settings.GetRenderW() / 2 - ((_GameState.NumPlayerAtOnce * _Statics[_StaticNextPlayer].Rect.W) + ((_GameState.NumPlayerAtOnce - 1) * 15)) / 2;
+ float x = (float)CBase.Settings.GetRenderW() / 2 -
+ ((_PartyMode.GameData.NumPlayerAtOnce * _Statics[_StaticNextPlayer].Rect.W) + ((_PartyMode.GameData.NumPlayerAtOnce - 1) * 15)) / 2;
const float staticY = 590;
const float textY = 550;
- for (int i = 0; i < _GameState.NumPlayerAtOnce; i++)
+ for (int i = 0; i < _PartyMode.GameData.NumPlayerAtOnce; i++)
{
//static
_NextPlayerStatics[i].X = x;
@@ -360,7 +326,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
x += _Statics[_StaticNextPlayer].Rect.W + 15;
}
- for (int i = _GameState.NumPlayerAtOnce; i < _PartyMode.GetMaxPlayer(); i++)
+ for (int i = _PartyMode.GameData.NumPlayerAtOnce; i < _PartyMode.GetMaxPlayer(); i++)
{
_NextPlayerStatics[i].Visible = false;
_NextPlayerTexts[i].Visible = false;
@@ -369,12 +335,12 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _UpdateNextPlayerContents()
{
- if (_GameState.CurrentRoundNr <= _GameState.Combs.Count)
+ if (_PartyMode.GameData.CurrentRoundNr <= _PartyMode.GameData.Rounds.Count)
{
_Texts[_TextNextPlayerMessage].Visible = true;
- for (int i = 0; i < _GameState.NumPlayerAtOnce; i++)
+ for (int i = 0; i < _PartyMode.GameData.NumPlayerAtOnce; i++)
{
- int id = _GameState.ProfileIDs[_GameState.Combs[_GameState.CurrentRoundNr - 1].Player[i]];
+ int id = _PartyMode.GameData.ProfileIDs[_PartyMode.GameData.Rounds[_PartyMode.GameData.CurrentRoundNr - 1].Player[i]];
_NextPlayerStatics[i].Texture = CBase.Profiles.GetAvatar(id);
_NextPlayerTexts[i].Text = CBase.Profiles.GetPlayerName(id);
_NextPlayerTexts[i].Color = CBase.Themes.GetPlayerColor(i + 1);
@@ -383,7 +349,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
else
{
_Texts[_TextNextPlayerMessage].Visible = false;
- for (int i = 0; i < _GameState.NumPlayerAtOnce; i++)
+ for (int i = 0; i < _PartyMode.GameData.NumPlayerAtOnce; i++)
{
_NextPlayerStatics[i].Visible = false;
_NextPlayerTexts[i].Visible = false;
@@ -429,10 +395,10 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_RoundsTableScrollArea = new SRectF();
const int numPlayerInOneRow = 3;
- _NumRoundsVisible = _GameState.NumPlayerAtOnce <= numPlayerInOneRow ? 5 : 3;
+ _NumRoundsVisible = _PartyMode.GameData.NumPlayerAtOnce <= numPlayerInOneRow ? 5 : 3;
- if (_NumRoundsVisible > _GameState.Combs.Count)
- _NumRoundsVisible = _GameState.Combs.Count;
+ if (_NumRoundsVisible > _PartyMode.GameData.Rounds.Count)
+ _NumRoundsVisible = _PartyMode.GameData.Rounds.Count;
float numberX = _Texts[_TextRoundNumber].X;
float numberY = _Texts[_TextRoundNumber].Y;
@@ -449,15 +415,15 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
//Round-number
roundRow.Number.X = numberX;
roundRow.Number.Y = numberY;
- var numInnerRows = (int)Math.Ceiling(_GameState.NumPlayerAtOnce / ((double)numPlayerInOneRow));
+ var numInnerRows = (int)Math.Ceiling(_PartyMode.GameData.NumPlayerAtOnce / ((double)numPlayerInOneRow));
for (int row = 0; row < numInnerRows; row++)
{
int num = (row + 1) * numPlayerInOneRow;
int numPlayerInThisRow = numPlayerInOneRow;
- if (num > _GameState.NumPlayerAtOnce)
+ if (num > _PartyMode.GameData.NumPlayerAtOnce)
{
- num = _GameState.NumPlayerAtOnce;
- numPlayerInThisRow = _GameState.NumPlayerAtOnce - (row * numPlayerInOneRow);
+ num = _PartyMode.GameData.NumPlayerAtOnce;
+ numPlayerInThisRow = _PartyMode.GameData.NumPlayerAtOnce - (row * numPlayerInOneRow);
}
for (int column = row * numPlayerInOneRow; column < num; column++)
{
@@ -473,7 +439,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
roundRow.TextScores[column].Y = numberY + delta;
roundRow.TextScores[column].W = maxw;
}
- numberY = numberY + delta + delta;
+ numberY = numberY + 2 * delta;
}
numberY = numberY + delta / 2;
}
@@ -486,17 +452,18 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
for (int p = 0; p < _RoundsTable[i].TextPlayer.Count; p++)
{
- if (_GameState.Combs.Count > i + _RoundsTableOffset && _GameState.Combs[i + _RoundsTableOffset].Player.Count > p)
+ if (_PartyMode.GameData.Rounds.Count > i + _RoundsTableOffset && _PartyMode.GameData.Rounds[i + _RoundsTableOffset].Player.Count > p)
{
_RoundsTable[i].Number.Visible = true;
_RoundsTable[i].TextPlayer[p].Visible = true;
_RoundsTable[i].TextScores[p].Visible = true;
_RoundsTable[i].Number.Text = (i + 1 + _RoundsTableOffset) + ")";
- _RoundsTable[i].TextPlayer[p].Text = CBase.Profiles.GetPlayerName(_GameState.ProfileIDs[_GameState.Combs[i + _RoundsTableOffset].Player[p]]);
+ _RoundsTable[i].TextPlayer[p].Text =
+ CBase.Profiles.GetPlayerName(_PartyMode.GameData.ProfileIDs[_PartyMode.GameData.Rounds[i + _RoundsTableOffset].Player[p]]);
// ReSharper disable ConvertIfStatementToConditionalTernaryExpression
- if ((_GameState.CurrentRoundNr - 1) > i + _RoundsTableOffset)
+ if ((_PartyMode.GameData.CurrentRoundNr - 1) > i + _RoundsTableOffset)
// ReSharper restore ConvertIfStatementToConditionalTernaryExpression
- _RoundsTable[i].TextScores[p].Text = _GameState.Results[i + _RoundsTableOffset, p].ToString();
+ _RoundsTable[i].TextScores[p].Text = _PartyMode.GameData.Results[i + _RoundsTableOffset, p].ToString();
else
_RoundsTable[i].TextScores[p].Text = "";
}
@@ -506,7 +473,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_RoundsTable[i].TextScores[p].Visible = false;
}
}
- if (_GameState.Combs.Count < i + _RoundsTableOffset || i + 1 > _NumRoundsVisible)
+ if (_PartyMode.GameData.Rounds.Count < i + _RoundsTableOffset || i + 1 > _NumRoundsVisible)
{
_RoundsTable[i].Number.Visible = false;
for (int p = 0; p < _RoundsTable[i].TextPlayer.Count; p++)
@@ -518,7 +485,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
}
_Buttons[_ButtonRoundsScrollUp].Visible = _RoundsTableOffset > 0;
- _Buttons[_ButtonRoundsScrollDown].Visible = _GameState.Combs.Count - _NumRoundsVisible - _RoundsTableOffset > 0;
+ _Buttons[_ButtonRoundsScrollDown].Visible = _PartyMode.GameData.Rounds.Count - _NumRoundsVisible - _RoundsTableOffset > 0;
}
private void _BuildPlayerTable()
@@ -578,7 +545,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{
STableRow row = _PlayerTable[i];
- if (i + _PlayerTableOffset < _GameState.ResultTable.Count)
+ if (i + _PlayerTableOffset < _PartyMode.GameData.ResultTable.Count)
{
row.Pos.Visible = true;
row.Name.Visible = true;
@@ -587,12 +554,12 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
row.SingPoints.Visible = true;
row.GamePoints.Visible = true;
- row.Pos.Text = _GameState.ResultTable[i + _PlayerTableOffset].Position + ".";
- row.Name.Text = CBase.Profiles.GetPlayerName(_GameState.ResultTable[i + _PlayerTableOffset].PlayerID);
- row.Rounds.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumPlayed.ToString();
- row.Won.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumWon.ToString();
- row.SingPoints.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumSingPoints.ToString();
- row.GamePoints.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumGamePoints.ToString();
+ row.Pos.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].Position + ".";
+ row.Name.Text = CBase.Profiles.GetPlayerName(_PartyMode.GameData.ResultTable[i + _PlayerTableOffset].PlayerID);
+ row.Rounds.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumPlayed.ToString();
+ row.Won.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumWon.ToString();
+ row.SingPoints.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumSingPoints.ToString();
+ row.GamePoints.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumGamePoints.ToString();
}
else
{
@@ -606,37 +573,37 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
}
_Buttons[_ButtonPlayerScrollUp].Visible = _PlayerTableOffset > 0;
- _Buttons[_ButtonPlayerScrollDown].Visible = _GameState.ProfileIDs.Count - _NumPlayerVisible - _PlayerTableOffset > 0;
+ _Buttons[_ButtonPlayerScrollDown].Visible = _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible - _PlayerTableOffset > 0;
}
private void _ScrollPlayerTable(int offset)
{
- if (_GameState.ProfileIDs.Count <= _NumPlayerVisible)
+ if (_PartyMode.GameData.ProfileIDs.Count <= _NumPlayerVisible)
_PlayerTableOffset = 0;
else if (offset < 0 && _PlayerTableOffset + offset >= 0)
_PlayerTableOffset += offset;
else if (offset < 0 && _PlayerTableOffset + offset < 0)
_PlayerTableOffset = 0;
- else if (offset > 0 && _PlayerTableOffset + offset <= _GameState.ProfileIDs.Count - _NumPlayerVisible)
+ else if (offset > 0 && _PlayerTableOffset + offset <= _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible)
_PlayerTableOffset += offset;
- else if (offset > 0 && _PlayerTableOffset + offset > _GameState.ProfileIDs.Count - _NumPlayerVisible)
- _PlayerTableOffset = _GameState.ProfileIDs.Count - _NumPlayerVisible;
+ else if (offset > 0 && _PlayerTableOffset + offset > _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible)
+ _PlayerTableOffset = _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible;
_UpdatePlayerTable();
}
private void _ScrollRoundsTable(int offset)
{
- if (_GameState.Combs.Count <= _NumRoundsVisible)
+ if (_PartyMode.GameData.Rounds.Count <= _NumRoundsVisible)
_RoundsTableOffset = 0;
else if (offset < 0 && _RoundsTableOffset + offset >= 0)
_RoundsTableOffset += offset;
else if (offset < 0 && _RoundsTableOffset + offset < 0)
_RoundsTableOffset = 0;
- else if (offset > 0 && _RoundsTableOffset + offset <= _GameState.Combs.Count - _NumRoundsVisible)
+ else if (offset > 0 && _RoundsTableOffset + offset <= _PartyMode.GameData.Rounds.Count - _NumRoundsVisible)
_RoundsTableOffset += offset;
- else if (offset > 0 && _RoundsTableOffset + offset > _GameState.Combs.Count - _NumRoundsVisible)
- _RoundsTableOffset = _GameState.Combs.Count - _NumRoundsVisible;
+ else if (offset > 0 && _RoundsTableOffset + offset > _PartyMode.GameData.Rounds.Count - _NumRoundsVisible)
+ _RoundsTableOffset = _PartyMode.GameData.Rounds.Count - _NumRoundsVisible;
_UpdateRoundsTable();
}
@@ -644,13 +611,14 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private string _GetPlayerWinString()
{
string s = "";
- for (int i = 0; i < _GameState.ResultTable.Count; i++)
+
+ for (int i = 0; i < _PartyMode.GameData.ResultTable.Count; i++)
{
- if (_GameState.ResultTable[i].Position == 1)
+ if (_PartyMode.GameData.ResultTable[i].Position == 1)
{
if (i > 0)
s += ", ";
- s += CBase.Profiles.GetPlayerName(_GameState.ResultTable[i].PlayerID);
+ s += CBase.Profiles.GetPlayerName(_PartyMode.GameData.ResultTable[i].PlayerID);
}
else
break;
diff --git a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs
index 9c3521af..4d92fc7d 100644
--- a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs
+++ b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs
@@ -15,7 +15,6 @@
// along with Vocaluxe. If not, see .
#endregion
-using System;
using System.Collections.Generic;
using VocaluxeLib.Menu;
@@ -31,58 +30,38 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
get { return 1; }
}
- private SDataFromScreen _Data;
+ private new CPartyModeChallengeMedley _PartyMode;
public override void Init()
{
base.Init();
-
- _Data.ScreenNames.ProfileIDs = new List();
-
- _Data = new SDataFromScreen();
- var names = new SFromScreenNames {FadeToConfig = false, ProfileIDs = new List()};
- _Data.ScreenNames = names;
-
+ _PartyMode = (CPartyModeChallengeMedley)base._PartyMode;
_AllowChangePlayerNum = false;
}
- public override void DataToScreen(object receivedData)
+ public override void OnShow()
{
- try
- {
- var config = (SDataToScreenNames)receivedData;
- _Data.ScreenNames.ProfileIDs = config.ProfileIDs ?? new List();
+ base.OnShow();
+ SetPartyModeData(_PartyMode.GameData.NumPlayer);
+ while (_PartyMode.GameData.ProfileIDs.Count > _NumPlayer)
+ _PartyMode.GameData.ProfileIDs.RemoveAt(_PartyMode.GameData.ProfileIDs.Count - 1);
- SetPartyModeData(config.NumPlayer);
-
- while (_Data.ScreenNames.ProfileIDs.Count > _NumPlayer)
- _Data.ScreenNames.ProfileIDs.RemoveAt(_Data.ScreenNames.ProfileIDs.Count - 1);
-
- List[] ids = new List[] {_Data.ScreenNames.ProfileIDs};
- SetPartyModeProfiles(ids);
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode screen challenge names. Can't cast received data from game mode " + ThemeName + ". " + e.Message);
- }
+ List[] ids = new List[] {_PartyMode.GameData.ProfileIDs};
+ SetPartyModeProfiles(ids);
}
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);
+ if (_TeamList.Length == 1)
+ _PartyMode.GameData.ProfileIDs = _TeamList[0];
+ _PartyMode.Back();
}
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);
+ if (_TeamList.Length == 1)
+ _PartyMode.GameData.ProfileIDs = _TeamList[0];
+ _PartyMode.Next();
}
}
}
\ No newline at end of file
diff --git a/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs b/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs
index 34f5677b..b918a0fa 100644
--- a/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs
+++ b/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs
@@ -53,81 +53,20 @@ namespace VocaluxeLib.PartyModes.TicTacToe
public bool Finished;
}
- #region Communication
-
- #region ToScreen
- public struct SDataToScreenConfig
+ public abstract class CPartyScreenTicTacToe : CMenuParty
{
- public int NumFields;
- public ESongSource SongSource;
- public int CategoryID;
- public int PlaylistID;
- public EPartyGameMode GameMode;
+ protected new CPartyModeTicTacToe _PartyMode;
+
+ public override void Init()
+ {
+ base.Init();
+ _PartyMode = (CPartyModeTicTacToe)base._PartyMode;
+ }
}
- public struct SDataToScreenNames
- {
- public int NumPlayerTeam1;
- public int NumPlayerTeam2;
- public List ProfileIDsTeam1;
- public List ProfileIDsTeam2;
- }
-
- public struct SDataToScreenMain
- {
- public int CurrentRoundNr;
- public int Team;
- public int NumFields;
- public List Rounds;
- public List Songs;
- public List ProfileIDsTeam1;
- public List ProfileIDsTeam2;
- public List PlayerTeam1;
- public List PlayerTeam2;
- public int[] NumJokerRandom;
- public int[] NumJokerRetry;
- }
-
- public struct SDataFromScreen
- {
- public SFromScreenConfig ScreenConfig;
- public SFromScreenNames ScreenNames;
- public SFromScreenMain ScreenMain;
- }
-
- public struct SFromScreenConfig
- {
- public int NumFields;
- public ESongSource SongSource;
- public int CategoryID;
- public int PlaylistID;
- public EPartyGameMode GameMode;
- }
-
- public struct SFromScreenNames
- {
- public bool FadeToConfig;
- public int NumPlayerTeam1;
- public int NumPlayerTeam2;
- public List ProfileIDsTeam1;
- public List ProfileIDsTeam2;
- }
-
- public struct SFromScreenMain
- {
- public bool FadeToSinging;
- public bool FadeToNameSelection;
- public List PlayerTeam1;
- public List PlayerTeam2;
- public List Rounds;
- public int SingRoundNr;
- public List Songs;
- }
- #endregion FromScreen
-
- #endregion Communication
-
+ // ReSharper disable ClassNeverInstantiated.Global
public sealed class CPartyModeTicTacToe : CPartyMode
+ // ReSharper restore ClassNeverInstantiated.Global
{
private const int _MaxPlayer = 20;
private const int _MinPlayer = 2;
@@ -139,14 +78,13 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private enum EStage
{
- NotStarted,
Config,
Names,
Main,
Singing
}
- private struct SData
+ public struct SData
{
public int NumPlayerTeam1;
public int NumPlayerTeam2;
@@ -173,11 +111,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
public int[] NumJokerRetry;
}
- private SDataToScreenConfig _ToScreenConfig;
- private SDataToScreenNames _ToScreenNames;
- private SDataToScreenMain _ToScreenMain;
-
- private SData _GameData;
+ public SData GameData;
private EStage _Stage;
public CPartyModeTicTacToe(int id, string folder)
@@ -193,17 +127,11 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_ScreenSongOptions.Sorting.SearchActive = false;
_ScreenSongOptions.Sorting.DuetOptions = EDuetOptions.NoDuets;
- _Stage = EStage.NotStarted;
-
- _ToScreenConfig = new SDataToScreenConfig();
- _ToScreenNames = new SDataToScreenNames();
- _ToScreenMain = new SDataToScreenMain();
-
- _GameData = new SData
+ GameData = new SData
{
- NumFields = 9,
NumPlayerTeam1 = 2,
NumPlayerTeam2 = 2,
+ NumFields = 9,
ProfileIDsTeam1 = new List(),
ProfileIDsTeam2 = new List(),
PlayerTeam1 = new List(),
@@ -223,7 +151,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
public override bool Init()
{
- _Stage = EStage.NotStarted;
+ _Stage = EStage.Config;
_ScreenSongOptions.Sorting.IgnoreArticles = CBase.Config.GetIgnoreArticles();
_ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting();
@@ -233,100 +161,13 @@ namespace VocaluxeLib.PartyModes.TicTacToe
if (CBase.Config.GetTabs() == EOffOn.TR_CONFIG_ON && _ScreenSongOptions.Sorting.SongSorting != ESongSorting.TR_CONFIG_NONE)
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_ON;
- _ToScreenMain.Rounds = new List();
- _ToScreenMain.Songs = new List();
- _ToScreenMain.PlayerTeam1 = new List();
- _ToScreenMain.PlayerTeam2 = new List();
- _GameData.Songs = new List();
- _GameData.Rounds = new List();
- _GameData.PlayerTeam1 = new List();
- _GameData.PlayerTeam2 = new List();
+ GameData.Songs = new List();
+ GameData.Rounds = new List();
+ GameData.PlayerTeam1 = new List();
+ GameData.PlayerTeam2 = new List();
return true;
}
- public override void DataFromScreen(string screenName, Object data)
- {
- var dataFrom = new SDataFromScreen();
- switch (screenName)
- {
- case "PartyScreenTicTacToeConfig":
-
- try
- {
- dataFrom = (SDataFromScreen)data;
- _GameData.NumFields = dataFrom.ScreenConfig.NumFields;
- _GameData.SongSource = dataFrom.ScreenConfig.SongSource;
- _GameData.CategoryID = dataFrom.ScreenConfig.CategoryID;
- _GameData.PlaylistID = dataFrom.ScreenConfig.PlaylistID;
- _GameData.GameMode = dataFrom.ScreenConfig.GameMode;
-
- _Stage = EStage.Config;
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode TicTacToe. Can't cast received data from screen " + screenName + ". " + e.Message);
- }
- break;
-
- case "PartyScreenTicTacToeNames":
- try
- {
- dataFrom = (SDataFromScreen)data;
- if (dataFrom.ScreenNames.FadeToConfig)
- _Stage = EStage.NotStarted;
- else
- {
- _GameData.Team = CBase.Game.GetRandom(100) < 50 ? 0 : 1;
- _GameData.NumPlayerTeam1 = dataFrom.ScreenNames.NumPlayerTeam1;
- _GameData.NumPlayerTeam2 = dataFrom.ScreenNames.NumPlayerTeam2;
- _GameData.ProfileIDsTeam1 = dataFrom.ScreenNames.ProfileIDsTeam1;
- _GameData.ProfileIDsTeam2 = dataFrom.ScreenNames.ProfileIDsTeam2;
- _Stage = EStage.Names;
- }
-
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode TicTacToe. Can't cast received data from screen " + screenName + ". " + e.Message);
- }
- break;
-
- case "PartyScreenTicTacToeMain":
- try
- {
- dataFrom = (SDataFromScreen)data;
- if (dataFrom.ScreenMain.FadeToSinging)
- {
- _Stage = EStage.Singing;
- _GameData.Rounds = dataFrom.ScreenMain.Rounds;
- _GameData.SingRoundNr = dataFrom.ScreenMain.SingRoundNr;
- _GameData.Songs = dataFrom.ScreenMain.Songs;
- _GameData.PlayerTeam1 = dataFrom.ScreenMain.PlayerTeam1;
- _GameData.PlayerTeam2 = dataFrom.ScreenMain.PlayerTeam2;
- }
- if (dataFrom.ScreenMain.FadeToNameSelection)
- _Stage = EStage.Config;
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode TicTacToe. Can't cast received data from screen " + screenName + ". " + e.Message);
- }
-
-
- if (_Stage == EStage.Singing)
- _StartRound(dataFrom.ScreenMain.SingRoundNr);
- if (_Stage == EStage.Config)
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
- break;
-
- default:
- CBase.Log.LogError("Error in party mode TicTacToe. Wrong screen is sending: " + screenName);
- break;
- }
- }
-
public override void UpdateGame()
{
/*
@@ -336,98 +177,83 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_ScreenSongOptions.Selection.RandomOnly = false;*/
}
- public override CMenuParty GetNextPartyScreen(out EScreens alternativeScreen)
+ private IMenu _GetNextScreen()
{
- CMenuParty screen = null;
- alternativeScreen = EScreens.ScreenSong;
-
switch (_Stage)
{
- case EStage.NotStarted:
- _Screens.TryGetValue("CPartyScreenTicTacToeConfig", out screen);
- if (screen != null)
- {
- _ToScreenConfig.NumFields = _GameData.NumFields;
- _ToScreenConfig.SongSource = _GameData.SongSource;
- _ToScreenConfig.CategoryID = _GameData.CategoryID;
- _ToScreenConfig.PlaylistID = _GameData.PlaylistID;
- _ToScreenConfig.GameMode = _GameData.GameMode;
- screen.DataToScreen(_ToScreenConfig);
- }
- break;
case EStage.Config:
- _Screens.TryGetValue("CPartyScreenTicTacToeNames", out screen);
- if (screen != null)
- {
- _ToScreenNames.NumPlayerTeam1 = _GameData.NumPlayerTeam1;
- _ToScreenNames.NumPlayerTeam2 = _GameData.NumPlayerTeam2;
- _ToScreenNames.ProfileIDsTeam1 = _GameData.ProfileIDsTeam1;
- _ToScreenNames.ProfileIDsTeam2 = _GameData.ProfileIDsTeam2;
- screen.DataToScreen(_ToScreenNames);
- }
+ return _Screens["CPartyScreenTicTacToeConfig"];
+ case EStage.Names:
+ return _Screens["CPartyScreenTicTacToeNames"];
+ case EStage.Main:
+ return _Screens["CPartyScreenTicTacToeMain"];
+ case EStage.Singing:
+ return CBase.Graphics.GetScreen(EScreen.Song);
+ default:
+ throw new ArgumentException("Invalid stage: " + _Stage);
+ }
+ }
+
+ private void _FadeToScreen()
+ {
+ CBase.Graphics.FadeTo(_GetNextScreen());
+ }
+
+ public void Next()
+ {
+ switch (_Stage)
+ {
+ case EStage.Config:
+ _Stage = EStage.Names;
break;
case EStage.Names:
- _Screens.TryGetValue("CPartyScreenTicTacToeMain", out screen);
- if (screen != null)
- {
- _GameData.Team = _GameData.Team == 1 ? 0 : 1;
- CBase.Songs.ResetSongSung();
- _GameData.CurrentRoundNr = 1;
- _ToScreenMain.CurrentRoundNr = 1;
- _ToScreenMain.NumFields = _GameData.NumFields;
- _ToScreenMain.ProfileIDsTeam1 = _GameData.ProfileIDsTeam1;
- _ToScreenMain.ProfileIDsTeam2 = _GameData.ProfileIDsTeam2;
- _CreateRounds();
- _SetNumJokers();
- _PreparePlayerList(0);
- _PrepareSongList();
- _ToScreenMain.Rounds = _GameData.Rounds;
- _ToScreenMain.Songs = _GameData.Songs;
- _ToScreenMain.PlayerTeam1 = _GameData.PlayerTeam1;
- _ToScreenMain.PlayerTeam1 = _GameData.PlayerTeam2;
- _ToScreenMain.NumJokerRandom = _GameData.NumJokerRandom;
- _ToScreenMain.NumJokerRetry = _GameData.NumJokerRetry;
- _ToScreenMain.Team = _GameData.Team;
- screen.DataToScreen(_ToScreenMain);
- }
+ _Stage = EStage.Main;
+ GameData.Team = CBase.Game.GetRandom(100) < 50 ? 0 : 1;
+ CBase.Songs.ResetSongSung();
+ GameData.CurrentRoundNr = 1;
+ _CreateRounds();
+ _SetNumJokers();
+ _PreparePlayerList(0);
+ _PrepareSongList();
break;
case EStage.Main:
- //nothing to do
+ _Stage = EStage.Singing;
+ _StartRound(GameData.SingRoundNr);
break;
case EStage.Singing:
- _Screens.TryGetValue("CPartyScreenTicTacToeMain", out screen);
- if (screen != null)
- {
- _GameData.Team = _GameData.Team == 1 ? 0 : 1;
- _UpdateSongList();
- _UpdatePlayerList();
- _ToScreenMain.CurrentRoundNr = _GameData.CurrentRoundNr;
- _ToScreenMain.NumFields = _GameData.NumFields;
- _ToScreenMain.ProfileIDsTeam1 = _GameData.ProfileIDsTeam1;
- _ToScreenMain.ProfileIDsTeam2 = _GameData.ProfileIDsTeam2;
- _ToScreenMain.Rounds = _GameData.Rounds;
- _ToScreenMain.Songs = _GameData.Songs;
- _ToScreenMain.PlayerTeam1 = _GameData.PlayerTeam1;
- _ToScreenMain.PlayerTeam2 = _GameData.PlayerTeam2;
- _ToScreenMain.NumJokerRandom = _GameData.NumJokerRandom;
- _ToScreenMain.NumJokerRetry = _GameData.NumJokerRetry;
- _ToScreenMain.Team = _GameData.Team;
- screen.DataToScreen(_ToScreenMain);
- }
+ _Stage = EStage.Main;
+ GameData.Team = GameData.Team == 1 ? 0 : 1;
+ _UpdateSongList();
+ _UpdatePlayerList();
break;
+ default:
+ throw new ArgumentException("Invalid stage: " + _Stage);
}
-
- return screen;
+ _FadeToScreen();
}
- public override EScreens GetStartScreen()
+ public void Back()
{
- return EScreens.ScreenPartyDummy;
+ switch (_Stage)
+ {
+ case EStage.Config:
+ CBase.Graphics.FadeTo(EScreen.Party);
+ return;
+ case EStage.Names:
+ _Stage = EStage.Config;
+ break;
+ case EStage.Main:
+ _Stage = EStage.Config;
+ break;
+ default: // Rest is not allowed
+ throw new ArgumentException("Invalid stage: " + _Stage);
+ }
+ _FadeToScreen();
}
- public override EScreens GetMainScreen()
+ public override IMenu GetStartScreen()
{
- return EScreens.ScreenPartyDummy;
+ return _Screens["CPartyScreenTicTacToeConfig"];
}
public override SScreenSongOptions GetScreenSongOptions()
@@ -500,7 +326,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
var gm = EGameMode.TR_GAMEMODE_NORMAL;
- switch (_GameData.GameMode)
+ switch (GameData.GameMode)
{
case EPartyGameMode.TR_GAMEMODE_NORMAL:
gm = EGameMode.TR_GAMEMODE_NORMAL;
@@ -516,23 +342,23 @@ namespace VocaluxeLib.PartyModes.TicTacToe
}
CBase.Game.AddSong(songID, gm);
- CBase.Graphics.FadeTo(EScreens.ScreenSing);
+ CBase.Graphics.FadeTo(EScreen.Sing);
}
public override void LeavingHighscore()
{
CBase.Songs.AddPartySongSung(CBase.Game.GetSong(0).ID);
_UpdateScores();
- CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
+ Next();
}
private void _CreateRounds()
{
- _GameData.Rounds = new List();
- for (int i = 0; i < _GameData.NumFields; i++)
+ GameData.Rounds = new List();
+ for (int i = 0; i < GameData.NumFields; i++)
{
var r = new CRound();
- _GameData.Rounds.Add(r);
+ GameData.Rounds.Add(r);
}
}
@@ -542,41 +368,41 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
case 0:
{
- _GameData.PlayerTeam1 = new List();
- _GameData.PlayerTeam2 = new List();
+ GameData.PlayerTeam1 = new List();
+ GameData.PlayerTeam2 = new List();
//Prepare Player-IDs
var ids1 = new List();
var ids2 = new List();
//Add IDs to team-list
- while (_GameData.PlayerTeam1.Count < _GameData.NumFields + _GameData.NumJokerRetry[0] &&
- _GameData.PlayerTeam2.Count < _GameData.NumFields + _GameData.NumJokerRetry[1])
+ while (GameData.PlayerTeam1.Count < GameData.NumFields + GameData.NumJokerRetry[0] &&
+ GameData.PlayerTeam2.Count < GameData.NumFields + GameData.NumJokerRetry[1])
{
if (ids1.Count == 0)
{
- for (int i = 0; i < _GameData.NumPlayerTeam1; i++)
+ for (int i = 0; i < GameData.NumPlayerTeam1; i++)
ids1.Add(i);
}
if (ids2.Count == 0)
{
- for (int i = 0; i < _GameData.NumPlayerTeam2; i++)
+ for (int i = 0; i < GameData.NumPlayerTeam2; i++)
ids2.Add(i);
}
int num;
- if (_GameData.PlayerTeam1.Count < _GameData.NumFields + _GameData.NumJokerRetry[0])
+ if (GameData.PlayerTeam1.Count < GameData.NumFields + GameData.NumJokerRetry[0])
{
num = CBase.Game.GetRandom(ids1.Count);
if (num >= ids1.Count)
num = ids1.Count - 1;
- _GameData.PlayerTeam1.Add(ids1[num]);
+ GameData.PlayerTeam1.Add(ids1[num]);
ids1.RemoveAt(num);
}
- if (_GameData.PlayerTeam2.Count < _GameData.NumFields + _GameData.NumJokerRetry[1])
+ if (GameData.PlayerTeam2.Count < GameData.NumFields + GameData.NumJokerRetry[1])
{
num = CBase.Game.GetRandom(ids2.Count);
if (num >= ids2.Count)
num = ids2.Count - 1;
- _GameData.PlayerTeam2.Add(ids2[num]);
+ GameData.PlayerTeam2.Add(ids2[num]);
ids2.RemoveAt(num);
}
}
@@ -587,19 +413,19 @@ namespace VocaluxeLib.PartyModes.TicTacToe
//Prepare Player-IDs
var ids = new List();
//Add IDs to team-list
- while (_GameData.PlayerTeam1.Count < _GameData.NumFields + _GameData.NumJokerRetry[0] && ids.Count == 0)
+ while (GameData.PlayerTeam1.Count < GameData.NumFields + GameData.NumJokerRetry[0] && ids.Count == 0)
{
if (ids.Count == 0)
{
- for (int i = 0; i < _GameData.NumPlayerTeam1; i++)
+ for (int i = 0; i < GameData.NumPlayerTeam1; i++)
ids.Add(i);
}
- if (_GameData.PlayerTeam1.Count < _GameData.NumFields + _GameData.NumJokerRetry[0])
+ if (GameData.PlayerTeam1.Count < GameData.NumFields + GameData.NumJokerRetry[0])
{
int num = CBase.Game.GetRandom(ids.Count);
if (num >= ids.Count)
num = ids.Count - 1;
- _GameData.PlayerTeam1.Add(ids[num]);
+ GameData.PlayerTeam1.Add(ids[num]);
ids.RemoveAt(num);
}
}
@@ -610,19 +436,19 @@ namespace VocaluxeLib.PartyModes.TicTacToe
//Prepare Player-IDs
var ids = new List();
//Add IDs to team-list
- while (_GameData.PlayerTeam2.Count < _GameData.NumFields + _GameData.NumJokerRetry[1] && ids.Count == 0)
+ while (GameData.PlayerTeam2.Count < GameData.NumFields + GameData.NumJokerRetry[1] && ids.Count == 0)
{
if (ids.Count == 0)
{
- for (int i = 0; i < _GameData.NumPlayerTeam2; i++)
+ for (int i = 0; i < GameData.NumPlayerTeam2; i++)
ids.Add(i);
}
- if (_GameData.PlayerTeam2.Count < _GameData.NumFields + _GameData.NumJokerRetry[1])
+ if (GameData.PlayerTeam2.Count < GameData.NumFields + GameData.NumJokerRetry[1])
{
int num = CBase.Game.GetRandom(ids.Count);
if (num >= ids.Count)
num = ids.Count - 1;
- _GameData.PlayerTeam2.Add(ids[num]);
+ GameData.PlayerTeam2.Add(ids[num]);
ids.RemoveAt(num);
}
}
@@ -635,7 +461,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
var gm = EGameMode.TR_GAMEMODE_NORMAL;
- switch (_GameData.GameMode)
+ switch (GameData.GameMode)
{
case EPartyGameMode.TR_GAMEMODE_NORMAL:
gm = EGameMode.TR_GAMEMODE_NORMAL;
@@ -650,15 +476,15 @@ namespace VocaluxeLib.PartyModes.TicTacToe
break;
}
- while (_GameData.Songs.Count < (_GameData.NumFields + _GameData.NumJokerRandom[0] + _GameData.NumJokerRandom[1]))
+ while (GameData.Songs.Count < (GameData.NumFields + GameData.NumJokerRandom[0] + GameData.NumJokerRandom[1]))
{
var songs = new List();
- switch (_GameData.SongSource)
+ switch (GameData.SongSource)
{
case ESongSource.TR_PLAYLIST:
- for (int i = 0; i < CBase.Playlist.GetSongCount(_GameData.PlaylistID); i++)
+ for (int i = 0; i < CBase.Playlist.GetSongCount(GameData.PlaylistID); i++)
{
- int id = CBase.Playlist.GetSong(_GameData.PlaylistID, i).SongID;
+ int id = CBase.Playlist.GetSong(GameData.PlaylistID, i).SongID;
// ReSharper disable LoopCanBeConvertedToQuery
foreach (EGameMode mode in CBase.Songs.GetSongByID(id).AvailableGameModes)
// ReSharper restore LoopCanBeConvertedToQuery
@@ -683,7 +509,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
break;
case ESongSource.TR_CATEGORY:
- CBase.Songs.SetCategory(_GameData.CategoryID);
+ CBase.Songs.SetCategory(GameData.CategoryID);
for (int i = 0; i < CBase.Songs.GetNumSongsVisible(); i++)
{
// ReSharper disable LoopCanBeConvertedToQuery
@@ -699,23 +525,23 @@ namespace VocaluxeLib.PartyModes.TicTacToe
}
while (songs.Count > 0)
{
- _GameData.Songs.Add(songs[CBase.Game.GetRandom(songs.Count - 1)]);
- songs.Remove(_GameData.Songs[_GameData.Songs.Count - 1]);
+ GameData.Songs.Add(songs[CBase.Game.GetRandom(songs.Count - 1)]);
+ songs.Remove(GameData.Songs[GameData.Songs.Count - 1]);
}
}
}
private void _UpdatePlayerList()
{
- if (_GameData.PlayerTeam1.Count == 0)
+ if (GameData.PlayerTeam1.Count == 0)
_PreparePlayerList(1);
- if (_GameData.PlayerTeam2.Count == 0)
+ if (GameData.PlayerTeam2.Count == 0)
_PreparePlayerList(2);
}
private void _UpdateSongList()
{
- if (_GameData.Songs.Count == 0)
+ if (GameData.Songs.Count == 0)
_PrepareSongList();
}
@@ -733,7 +559,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
if (players.Length < 2)
return;
- CRound r = _GameData.Rounds[roundNr];
+ CRound r = GameData.Rounds[roundNr];
bool isDuet = CBase.Songs.GetSongByID(r.SongID).IsDuet;
for (int i = 0; i < 2; i++)
@@ -745,11 +571,11 @@ namespace VocaluxeLib.PartyModes.TicTacToe
//try to fill with the right data
if (r != null)
{
- players[0].ProfileID = _GameData.ProfileIDsTeam1[r.SingerTeam1];
+ players[0].ProfileID = GameData.ProfileIDsTeam1[r.SingerTeam1];
if (isDuet)
players[0].VoiceNr = 0;
- players[1].ProfileID = _GameData.ProfileIDsTeam2[r.SingerTeam2];
+ players[1].ProfileID = GameData.ProfileIDsTeam2[r.SingerTeam2];
if (isDuet)
players[1].VoiceNr = 1;
@@ -759,35 +585,35 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private void _SetNumJokers()
{
- switch (_GameData.NumFields)
+ switch (GameData.NumFields)
{
case 9:
- _GameData.NumJokerRandom[0] = 1;
- _GameData.NumJokerRandom[1] = 1;
- _GameData.NumJokerRetry[0] = 0;
- _GameData.NumJokerRetry[1] = 0;
+ GameData.NumJokerRandom[0] = 1;
+ GameData.NumJokerRandom[1] = 1;
+ GameData.NumJokerRetry[0] = 0;
+ GameData.NumJokerRetry[1] = 0;
break;
case 16:
- _GameData.NumJokerRandom[0] = 2;
- _GameData.NumJokerRandom[1] = 2;
- _GameData.NumJokerRetry[0] = 1;
- _GameData.NumJokerRetry[1] = 1;
+ GameData.NumJokerRandom[0] = 2;
+ GameData.NumJokerRandom[1] = 2;
+ GameData.NumJokerRetry[0] = 1;
+ GameData.NumJokerRetry[1] = 1;
break;
case 25:
- _GameData.NumJokerRandom[0] = 3;
- _GameData.NumJokerRandom[1] = 3;
- _GameData.NumJokerRetry[0] = 2;
- _GameData.NumJokerRetry[1] = 2;
+ GameData.NumJokerRandom[0] = 3;
+ GameData.NumJokerRandom[1] = 3;
+ GameData.NumJokerRetry[0] = 2;
+ GameData.NumJokerRetry[1] = 2;
break;
}
}
private void _UpdateScores()
{
- if (!_GameData.Rounds[_GameData.SingRoundNr].Finished)
- _GameData.CurrentRoundNr++;
+ if (!GameData.Rounds[GameData.SingRoundNr].Finished)
+ GameData.CurrentRoundNr++;
SPlayer[] results = CBase.Game.GetPlayers();
if (results == null)
@@ -796,17 +622,17 @@ namespace VocaluxeLib.PartyModes.TicTacToe
if (results.Length < 2)
return;
- _GameData.Rounds[_GameData.SingRoundNr].PointsTeam1 = (int)Math.Round(results[0].Points);
- _GameData.Rounds[_GameData.SingRoundNr].PointsTeam2 = (int)Math.Round(results[1].Points);
- _GameData.Rounds[_GameData.SingRoundNr].Finished = true;
- if (_GameData.Rounds[_GameData.SingRoundNr].PointsTeam1 < _GameData.Rounds[_GameData.SingRoundNr].PointsTeam2)
- _GameData.Rounds[_GameData.SingRoundNr].Winner = 2;
- else if (_GameData.Rounds[_GameData.SingRoundNr].PointsTeam1 > _GameData.Rounds[_GameData.SingRoundNr].PointsTeam2)
- _GameData.Rounds[_GameData.SingRoundNr].Winner = 1;
+ GameData.Rounds[GameData.SingRoundNr].PointsTeam1 = (int)Math.Round(results[0].Points);
+ GameData.Rounds[GameData.SingRoundNr].PointsTeam2 = (int)Math.Round(results[1].Points);
+ GameData.Rounds[GameData.SingRoundNr].Finished = true;
+ if (GameData.Rounds[GameData.SingRoundNr].PointsTeam1 < GameData.Rounds[GameData.SingRoundNr].PointsTeam2)
+ GameData.Rounds[GameData.SingRoundNr].Winner = 2;
+ else if (GameData.Rounds[GameData.SingRoundNr].PointsTeam1 > GameData.Rounds[GameData.SingRoundNr].PointsTeam2)
+ GameData.Rounds[GameData.SingRoundNr].Winner = 1;
else
{
- _GameData.Rounds[_GameData.SingRoundNr].Finished = false;
- _GameData.CurrentRoundNr--;
+ GameData.Rounds[GameData.SingRoundNr].Finished = false;
+ GameData.CurrentRoundNr--;
}
}
}
diff --git a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeConfig.cs b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeConfig.cs
index f5b10a80..2986c303 100644
--- a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeConfig.cs
+++ b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeConfig.cs
@@ -15,17 +15,15 @@
// along with Vocaluxe. If not, see .
#endregion
-using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
-using VocaluxeLib.Menu;
using VocaluxeLib.Songs;
namespace VocaluxeLib.PartyModes.TicTacToe
{
// ReSharper disable UnusedMember.Global
- public class CPartyScreenTicTacToeConfig : CMenuParty
+ public class CPartyScreenTicTacToeConfig : CPartyScreenTicTacToe
// ReSharper restore UnusedMember.Global
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
@@ -44,8 +42,6 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private bool _ConfigOk = true;
- private SDataFromScreen _Data;
-
public override void Init()
{
base.Init();
@@ -55,34 +51,6 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_SelectSlideNumFields, _SelectSlideSongSource, _SelectSlidePlaylist, _SelectSlideCategory, _SelectSlideGameMode
};
_ThemeButtons = new string[] {_ButtonNext, _ButtonBack};
-
- _Data = new SDataFromScreen();
- var config = new SFromScreenConfig
- {
- PlaylistID = 0,
- NumFields = 9,
- GameMode = EPartyGameMode.TR_GAMEMODE_NORMAL,
- CategoryID = 0,
- SongSource = ESongSource.TR_ALLSONGS
- };
- _Data.ScreenConfig = config;
- }
-
- public override void DataToScreen(object receivedData)
- {
- try
- {
- var config = (SDataToScreenConfig)receivedData;
- _Data.ScreenConfig.NumFields = config.NumFields;
- _Data.ScreenConfig.PlaylistID = config.PlaylistID;
- _Data.ScreenConfig.CategoryID = config.CategoryID;
- _Data.ScreenConfig.SongSource = config.SongSource;
- _Data.ScreenConfig.GameMode = config.GameMode;
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode screen TicTacToe config. Can't cast received data from game mode " + ThemeName + ". " + e.Message);
- }
}
public override bool HandleInput(SKeyEvent keyEvent)
@@ -96,17 +64,17 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
case Keys.Back:
case Keys.Escape:
- _Back();
+ _PartyMode.Back();
break;
case Keys.Enter:
_UpdateSlides();
if (_Buttons[_ButtonBack].Selected)
- _Back();
+ _PartyMode.Back();
if (_Buttons[_ButtonNext].Selected)
- _Next();
+ _PartyMode.Next();
break;
case Keys.Left:
@@ -129,14 +97,14 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
_UpdateSlides();
if (_Buttons[_ButtonBack].Selected)
- _Back();
+ _PartyMode.Back();
if (_Buttons[_ButtonNext].Selected)
- _Next();
+ _PartyMode.Next();
}
if (mouseEvent.RB)
- _Back();
+ _PartyMode.Back();
return true;
}
@@ -164,15 +132,15 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_SelectSlides[_SelectSlideNumFields].AddValue("9");
_SelectSlides[_SelectSlideNumFields].AddValue("16");
_SelectSlides[_SelectSlideNumFields].AddValue("25");
- if (_Data.ScreenConfig.NumFields == 9)
+ if (_PartyMode.GameData.NumFields == 9)
_SelectSlides[_SelectSlideNumFields].Selection = 0;
- else if (_Data.ScreenConfig.NumFields == 16)
+ else if (_PartyMode.GameData.NumFields == 16)
_SelectSlides[_SelectSlideNumFields].Selection = 1;
- else if (_Data.ScreenConfig.NumFields == 25)
+ else if (_PartyMode.GameData.NumFields == 25)
_SelectSlides[_SelectSlideNumFields].Selection = 2;
_SelectSlides[_SelectSlideSongSource].Clear();
- _SelectSlides[_SelectSlideSongSource].SetValues((int)_Data.ScreenConfig.SongSource);
+ _SelectSlides[_SelectSlideSongSource].SetValues((int)_PartyMode.GameData.SongSource);
List playlists = CBase.Playlist.GetNames();
_SelectSlides[_SelectSlidePlaylist].Clear();
@@ -181,8 +149,8 @@ namespace VocaluxeLib.PartyModes.TicTacToe
string value = playlists[i] + " (" + CBase.Playlist.GetSongCount(i) + " " + CBase.Language.Translate("TR_SONGS", PartyModeID) + ")";
_SelectSlides[_SelectSlidePlaylist].AddValue(value);
}
- _SelectSlides[_SelectSlidePlaylist].Selection = _Data.ScreenConfig.PlaylistID;
- _SelectSlides[_SelectSlidePlaylist].Visible = _Data.ScreenConfig.SongSource == ESongSource.TR_PLAYLIST;
+ _SelectSlides[_SelectSlidePlaylist].Selection = _PartyMode.GameData.PlaylistID;
+ _SelectSlides[_SelectSlidePlaylist].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_PLAYLIST;
var categories = new string[CBase.Songs.GetNumCategories()];
for (int i = 0; i < CBase.Songs.GetNumCategories(); i++)
@@ -193,30 +161,30 @@ namespace VocaluxeLib.PartyModes.TicTacToe
string value = categories[i] + " (" + CBase.Songs.GetNumSongsNotSungInCategory(i) + " " + CBase.Language.Translate("TR_SONGS", PartyModeID) + ")";
_SelectSlides[_SelectSlideCategory].AddValue(value);
}
- _SelectSlides[_SelectSlideCategory].Selection = _Data.ScreenConfig.CategoryID;
- _SelectSlides[_SelectSlideCategory].Visible = _Data.ScreenConfig.SongSource == ESongSource.TR_CATEGORY;
+ _SelectSlides[_SelectSlideCategory].Selection = _PartyMode.GameData.CategoryID;
+ _SelectSlides[_SelectSlideCategory].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_CATEGORY;
_SelectSlides[_SelectSlideGameMode].Visible = true;
- _SelectSlides[_SelectSlideGameMode].SetValues((int)_Data.ScreenConfig.GameMode);
+ _SelectSlides[_SelectSlideGameMode].SetValues((int)_PartyMode.GameData.GameMode);
}
private void _UpdateSlides()
{
if (_SelectSlides[_SelectSlideNumFields].Selection == 0)
- _Data.ScreenConfig.NumFields = 9;
+ _PartyMode.GameData.NumFields = 9;
else if (_SelectSlides[_SelectSlideNumFields].Selection == 1)
- _Data.ScreenConfig.NumFields = 16;
+ _PartyMode.GameData.NumFields = 16;
else if (_SelectSlides[_SelectSlideNumFields].Selection == 2)
- _Data.ScreenConfig.NumFields = 25;
+ _PartyMode.GameData.NumFields = 25;
- _Data.ScreenConfig.SongSource = (ESongSource)_SelectSlides[_SelectSlideSongSource].Selection;
- _Data.ScreenConfig.PlaylistID = _SelectSlides[_SelectSlidePlaylist].Selection;
- _Data.ScreenConfig.CategoryID = _SelectSlides[_SelectSlideCategory].Selection;
- _Data.ScreenConfig.GameMode = (EPartyGameMode)_SelectSlides[_SelectSlideGameMode].Selection;
+ _PartyMode.GameData.SongSource = (ESongSource)_SelectSlides[_SelectSlideSongSource].Selection;
+ _PartyMode.GameData.PlaylistID = _SelectSlides[_SelectSlidePlaylist].Selection;
+ _PartyMode.GameData.CategoryID = _SelectSlides[_SelectSlideCategory].Selection;
+ _PartyMode.GameData.GameMode = (EPartyGameMode)_SelectSlides[_SelectSlideGameMode].Selection;
var gm = EGameMode.TR_GAMEMODE_NORMAL;
- switch (_Data.ScreenConfig.GameMode)
+ switch (_PartyMode.GameData.GameMode)
{
case EPartyGameMode.TR_GAMEMODE_NORMAL:
gm = EGameMode.TR_GAMEMODE_NORMAL;
@@ -231,16 +199,16 @@ namespace VocaluxeLib.PartyModes.TicTacToe
break;
}
- if (_Data.ScreenConfig.SongSource == ESongSource.TR_PLAYLIST)
+ if (_PartyMode.GameData.SongSource == ESongSource.TR_PLAYLIST)
{
if (CBase.Playlist.GetNumPlaylists() > 0)
{
- if (CBase.Playlist.GetSongCount(_Data.ScreenConfig.PlaylistID) > 0)
+ if (CBase.Playlist.GetSongCount(_PartyMode.GameData.PlaylistID) > 0)
{
_ConfigOk = false;
- for (int i = 0; i < CBase.Playlist.GetSongCount(_Data.ScreenConfig.PlaylistID); i++)
+ for (int i = 0; i < CBase.Playlist.GetSongCount(_PartyMode.GameData.PlaylistID); i++)
{
- int id = CBase.Playlist.GetSong(_Data.ScreenConfig.PlaylistID, i).SongID;
+ int id = CBase.Playlist.GetSong(_PartyMode.GameData.PlaylistID, i).SongID;
_ConfigOk = CBase.Songs.GetSongByID(id).AvailableGameModes.Any(mode => mode == gm);
if (_ConfigOk)
break;
@@ -252,15 +220,15 @@ namespace VocaluxeLib.PartyModes.TicTacToe
else
_ConfigOk = false;
}
- if (_Data.ScreenConfig.SongSource == ESongSource.TR_CATEGORY)
+ if (_PartyMode.GameData.SongSource == ESongSource.TR_CATEGORY)
{
if (CBase.Songs.GetNumCategories() == 0)
_ConfigOk = false;
- else if (CBase.Songs.GetNumSongsNotSungInCategory(_Data.ScreenConfig.CategoryID) <= 0)
+ else if (CBase.Songs.GetNumSongsNotSungInCategory(_PartyMode.GameData.CategoryID) <= 0)
_ConfigOk = false;
else
{
- CBase.Songs.SetCategory(_Data.ScreenConfig.CategoryID);
+ CBase.Songs.SetCategory(_PartyMode.GameData.CategoryID);
_ConfigOk = false;
foreach (CSong song in CBase.Songs.GetVisibleSongs())
{
@@ -271,7 +239,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
CBase.Songs.SetCategory(-1);
}
}
- if (_Data.ScreenConfig.SongSource == ESongSource.TR_ALLSONGS)
+ if (_PartyMode.GameData.SongSource == ESongSource.TR_ALLSONGS)
{
if (CBase.Songs.GetNumSongs() > 0)
{
@@ -285,18 +253,8 @@ namespace VocaluxeLib.PartyModes.TicTacToe
else
_ConfigOk = false;
}
- _SelectSlides[_SelectSlideCategory].Visible = _Data.ScreenConfig.SongSource == ESongSource.TR_CATEGORY;
- _SelectSlides[_SelectSlidePlaylist].Visible = _Data.ScreenConfig.SongSource == ESongSource.TR_PLAYLIST;
- }
-
- private void _Back()
- {
- _FadeTo(EScreens.ScreenParty);
- }
-
- private void _Next()
- {
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ _SelectSlides[_SelectSlideCategory].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_CATEGORY;
+ _SelectSlides[_SelectSlidePlaylist].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_PLAYLIST;
}
}
}
\ No newline at end of file
diff --git a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeMain.cs b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeMain.cs
index 619e4bab..fe1ccfd7 100644
--- a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeMain.cs
+++ b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeMain.cs
@@ -37,7 +37,9 @@ namespace VocaluxeLib.PartyModes.TicTacToe
None
}
- public class CPartyScreenTicTacToeMain : CMenuParty
+ // ReSharper disable UnusedMember.Global
+ public class CPartyScreenTicTacToeMain : CPartyScreenTicTacToe
+ // ReSharper restore UnusedMember.Global
{
// Version number for theme files. Increment it, if you've changed something on the theme files!
protected override int _ScreenVersion
@@ -71,9 +73,6 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private bool _ExitPopupVisible;
- private SDataFromScreen _Data;
- private SDataToScreenMain _GameData;
-
private List _Fields;
private float _FieldFirstX = 25;
private float _FieldFirstY = 25;
@@ -100,18 +99,6 @@ namespace VocaluxeLib.PartyModes.TicTacToe
};
_ThemeStatics = new string[] {_StaticPopupBG, _StaticAvatarT1, _StaticAvatarT2};
- _Data = new SDataFromScreen();
- var config = new SFromScreenMain();
- _GameData = new SDataToScreenMain();
- config.SingRoundNr = 1;
- config.Rounds = new List();
- config.Songs = new List();
- config.PlayerTeam1 = new List();
- config.PlayerTeam2 = new List();
- config.FadeToNameSelection = false;
- config.FadeToSinging = false;
- _Data.ScreenMain = config;
-
_Fields = new List();
}
@@ -123,19 +110,6 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_Buttons[_ButtonField].Visible = false;
}
- public override void DataToScreen(object receivedData)
- {
- try
- {
- var config = (SDataToScreenMain)receivedData;
- _GameData = config;
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode screen TicTacToe main. Can't cast received data from game mode " + ThemeName + ". " + e.Message);
- }
- }
-
public override bool HandleInput(SKeyEvent keyEvent)
{
base.HandleInput(keyEvent);
@@ -149,7 +123,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
case Keys.Escape:
if (!_ExitPopupVisible)
{
- if (_GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected)
+ if (_PartyMode.GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected)
_Back();
else if (_Status == EStatus.None)
_EndParty();
@@ -165,13 +139,13 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
if (_Buttons[_ButtonNextRound].Selected)
_NextRound();
- if (_Buttons[_ButtonBack].Selected && _GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected)
+ if (_Buttons[_ButtonBack].Selected && _PartyMode.GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected)
_Back();
- if (_Buttons[_ButtonExit].Selected && (_GameData.CurrentRoundNr > 1 || _Status == EStatus.FieldSelected) && _Status != EStatus.None)
+ if (_Buttons[_ButtonExit].Selected && (_PartyMode.GameData.CurrentRoundNr > 1 || _Status == EStatus.FieldSelected) && _Status != EStatus.None)
_ShowPopup(true);
else if (_Status == EStatus.None)
_EndParty();
- for (int i = 0; i < _GameData.NumFields; i++)
+ for (int i = 0; i < _PartyMode.GameData.NumFields; i++)
{
switch (_Status)
{
@@ -236,7 +210,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
else
_ShowPopup(true);
}
- for (int i = 0; i < _GameData.NumFields; i++)
+ for (int i = 0; i < _PartyMode.GameData.NumFields; i++)
{
switch (_Status)
{
@@ -282,7 +256,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
if (!_ExitPopupVisible)
{
- if (_GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected)
+ if (_PartyMode.GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected)
_Back();
else if (_Status == EStatus.None)
_EndParty();
@@ -304,7 +278,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_PreviewStream = -1;
- if (_GameData.CurrentRoundNr == 1)
+ if (_PartyMode.GameData.CurrentRoundNr == 1)
{
_BuildWinnerPossibilities();
_SelectedField = -1;
@@ -325,7 +299,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_UpdateFieldContents();
int winner = _GetWinner();
- if (_GameData.CurrentRoundNr <= _GameData.NumFields && winner == 0)
+ if (_PartyMode.GameData.CurrentRoundNr <= _PartyMode.GameData.NumFields && winner == 0)
{
_UpdateTeamChoosingMessage();
_Texts[_TextNextPlayerT1].Visible = false;
@@ -373,7 +347,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
base.OnClose();
CBase.BackgroundMusic.SetDisabled(false);
- CBase.Sound.Fade(_PreviewStream, 0f, 0.5f, EStreamAction.Close);
+ CBase.Sound.Fade(_PreviewStream, 0, 0.5f, EStreamAction.Close);
}
private void _CreateFields()
@@ -390,7 +364,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private void _UpdateFields()
{
- var numOneRow = (int)Math.Sqrt(_GameData.NumFields);
+ var numOneRow = (int)Math.Sqrt(_PartyMode.GameData.NumFields);
float fieldSizeY = ((float)CBase.Settings.GetRenderH() - 150 - numOneRow * _FieldSpace) / numOneRow;
float fieldSizeX = ((float)CBase.Settings.GetRenderW() - 300 - numOneRow * _FieldSpace) / numOneRow;
_FieldSize = Math.Min(fieldSizeX, fieldSizeY);
@@ -402,7 +376,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
float y = _FieldFirstY;
for (int i = 0; i < _Fields.Count; i++)
{
- if (i < _GameData.NumFields)
+ if (i < _PartyMode.GameData.NumFields)
{
_Fields[i].Button.W = _FieldSize;
_Fields[i].Button.H = _FieldSize;
@@ -431,13 +405,13 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private void _UpdateFieldContents()
{
- for (int i = 0; i < _GameData.Rounds.Count; i++)
+ for (int i = 0; i < _PartyMode.GameData.Rounds.Count; i++)
{
_Fields[i].Button.Selectable = true;
_Fields[i].Button.Texture = _Buttons[_ButtonField].Texture;
_Fields[i].Button.Color = _Buttons[_ButtonField].Color;
_Fields[i].Button.SelColor = _Buttons[_ButtonField].SelColor;
- _Fields[i].Content = _GameData.Rounds[i];
+ _Fields[i].Content = _PartyMode.GameData.Rounds[i];
if (_Fields[i].Content.Finished)
{
_Fields[i].Button.Selectable = false;
@@ -454,7 +428,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
}
if (_Status == EStatus.JokerRetry && _Fields[i].Content.Finished)
{
- _Fields[i].Button.SelColor = CBase.Themes.GetPlayerColor(_GameData.Team + 1);
+ _Fields[i].Button.SelColor = CBase.Themes.GetPlayerColor(_PartyMode.GameData.Team + 1);
_Fields[i].Button.Selectable = true;
}
if (_Status == EStatus.JokerRetry && !_Fields[i].Content.Finished)
@@ -471,40 +445,33 @@ namespace VocaluxeLib.PartyModes.TicTacToe
int singerTeam1 = 0;
int singerTeam2 = 0;
- if (_GameData.PlayerTeam1.Count > 0)
+ if (_PartyMode.GameData.PlayerTeam1.Count > 0)
{
- singerTeam1 = _GameData.PlayerTeam1[0];
- _GameData.PlayerTeam1.RemoveAt(0);
+ singerTeam1 = _PartyMode.GameData.PlayerTeam1[0];
+ _PartyMode.GameData.PlayerTeam1.RemoveAt(0);
}
- if (_GameData.PlayerTeam2.Count > 0)
+ if (_PartyMode.GameData.PlayerTeam2.Count > 0)
{
- singerTeam2 = _GameData.PlayerTeam2[0];
- _GameData.PlayerTeam2.RemoveAt(0);
+ singerTeam2 = _PartyMode.GameData.PlayerTeam2[0];
+ _PartyMode.GameData.PlayerTeam2.RemoveAt(0);
}
- _GameData.Rounds[_SelectedField].SingerTeam1 = singerTeam1;
- _GameData.Rounds[_SelectedField].SingerTeam2 = singerTeam2;
+ _PartyMode.GameData.Rounds[_SelectedField].SingerTeam1 = singerTeam1;
+ _PartyMode.GameData.Rounds[_SelectedField].SingerTeam2 = singerTeam2;
_UpdatePlayerInformation();
}
int songID = 0;
- if (_GameData.Songs.Count > 0)
+ if (_PartyMode.GameData.Songs.Count > 0)
{
- songID = _GameData.Songs[0];
- _GameData.Songs.RemoveAt(0);
+ songID = _PartyMode.GameData.Songs[0];
+ _PartyMode.GameData.Songs.RemoveAt(0);
}
- CSong song = CBase.Songs.GetSongByID(songID);
- CBase.BackgroundMusic.SetDisabled(true);
-
- _PreviewStream = CBase.Sound.Load(song.GetMP3());
- CBase.Sound.SetPosition(_PreviewStream, song.Preview.StartTime);
- CBase.Sound.SetStreamVolume(_PreviewStream, 0f);
- CBase.Sound.Play(_PreviewStream);
- CBase.Sound.Fade(_PreviewStream, CBase.Config.GetBackgroundMusicVolume(), 1f);
+ _StartPreview(songID);
_Status = EStatus.FieldSelected;
_Fields[_SelectedField].Content.SongID = songID;
- _GameData.Rounds[_SelectedField].SongID = songID;
+ _PartyMode.GameData.Rounds[_SelectedField].SongID = songID;
_UpdateFieldContents();
_UpdateJokerButtons();
@@ -518,23 +485,15 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private void _FieldSelectedAgain()
{
int songID = _Fields[_SelectedField].Content.SongID;
- CSong song = CBase.Songs.GetSongByID(songID);
- CBase.BackgroundMusic.SetDisabled(true);
-
- _PreviewStream = CBase.Sound.Load(song.GetMP3());
- CBase.Sound.SetPosition(_PreviewStream, song.Preview.StartTime);
- CBase.Sound.SetStreamVolume(_PreviewStream, 0f);
- CBase.Sound.Play(_PreviewStream);
- CBase.Sound.Fade(_PreviewStream, CBase.Config.GetBackgroundMusicVolume(), 1f);
+ _StartPreview(songID);
_Status = EStatus.FieldSelected;
_Fields[_SelectedField].Content.SongID = songID;
- _GameData.Rounds[_SelectedField].SongID = songID;
- _GameData.Rounds[_SelectedField].SingerTeam1 = _GameData.Rounds[_OldSelectedField].SingerTeam1;
- _GameData.Rounds[_SelectedField].SingerTeam2 = _GameData.Rounds[_OldSelectedField].SingerTeam2;
+ _PartyMode.GameData.Rounds[_SelectedField].SongID = songID;
+ _PartyMode.GameData.Rounds[_SelectedField].SingerTeam1 = _PartyMode.GameData.Rounds[_OldSelectedField].SingerTeam1;
+ _PartyMode.GameData.Rounds[_SelectedField].SingerTeam2 = _PartyMode.GameData.Rounds[_OldSelectedField].SingerTeam2;
_UpdateFieldContents();
_UpdatePlayerInformation();
-
_UpdateJokerButtons();
_Buttons[_ButtonNextRound].Visible = true;
@@ -544,18 +503,31 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_SelectElement(_Buttons[_ButtonNextRound]);
}
+ private void _StartPreview(int songID)
+ {
+ CSong song = CBase.Songs.GetSongByID(songID);
+ CBase.BackgroundMusic.SetDisabled(true);
+
+ _PreviewStream = CBase.Sound.Load(song.GetMP3());
+ CBase.Sound.SetGlobalVolume(CBase.Config.GetMusicVolume(EMusicType.Preview));
+ CBase.Sound.SetPosition(_PreviewStream, song.Preview.StartTime);
+ CBase.Sound.SetStreamVolume(_PreviewStream, 0);
+ CBase.Sound.Play(_PreviewStream);
+ CBase.Sound.Fade(_PreviewStream, 100, 1f);
+ }
+
private void _UpdatePlayerInformation()
{
_Texts[_TextNextPlayerT1].Visible = true;
_Texts[_TextNextPlayerT2].Visible = true;
_Texts[_TextNextPlayerNameT1].Visible = true;
_Texts[_TextNextPlayerNameT2].Visible = true;
- _Texts[_TextNextPlayerNameT1].Text = CBase.Profiles.GetPlayerName(_GameData.ProfileIDsTeam1[_GameData.Rounds[_SelectedField].SingerTeam1]);
- _Texts[_TextNextPlayerNameT2].Text = CBase.Profiles.GetPlayerName(_GameData.ProfileIDsTeam2[_GameData.Rounds[_SelectedField].SingerTeam2]);
+ _Texts[_TextNextPlayerNameT1].Text = CBase.Profiles.GetPlayerName(_PartyMode.GameData.ProfileIDsTeam1[_PartyMode.GameData.Rounds[_SelectedField].SingerTeam1]);
+ _Texts[_TextNextPlayerNameT2].Text = CBase.Profiles.GetPlayerName(_PartyMode.GameData.ProfileIDsTeam2[_PartyMode.GameData.Rounds[_SelectedField].SingerTeam2]);
_Statics[_StaticAvatarT1].Visible = true;
_Statics[_StaticAvatarT2].Visible = true;
- _Statics[_StaticAvatarT1].Texture = CBase.Profiles.GetAvatar(_GameData.ProfileIDsTeam1[_GameData.Rounds[_SelectedField].SingerTeam1]);
- _Statics[_StaticAvatarT2].Texture = CBase.Profiles.GetAvatar(_GameData.ProfileIDsTeam2[_GameData.Rounds[_SelectedField].SingerTeam2]);
+ _Statics[_StaticAvatarT1].Texture = CBase.Profiles.GetAvatar(_PartyMode.GameData.ProfileIDsTeam1[_PartyMode.GameData.Rounds[_SelectedField].SingerTeam1]);
+ _Statics[_StaticAvatarT2].Texture = CBase.Profiles.GetAvatar(_PartyMode.GameData.ProfileIDsTeam2[_PartyMode.GameData.Rounds[_SelectedField].SingerTeam2]);
}
private void _UseJoker(int teamNr, int jokerNum)
@@ -564,9 +536,9 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
//Random-Joker
case 0:
- if (_GameData.NumJokerRandom[teamNr] > 0)
+ if (_PartyMode.GameData.NumJokerRandom[teamNr] > 0)
{
- _GameData.NumJokerRandom[teamNr]--;
+ _PartyMode.GameData.NumJokerRandom[teamNr]--;
if (!CBase.Sound.IsFinished(_PreviewStream))
CBase.Sound.Fade(_PreviewStream, 0, 1, EStreamAction.Close);
_FieldSelected(true);
@@ -575,10 +547,10 @@ namespace VocaluxeLib.PartyModes.TicTacToe
//Retry-Joker
case 1:
- if (_GameData.NumJokerRetry[teamNr] > 0 && _GameData.CurrentRoundNr > 1)
+ if (_PartyMode.GameData.NumJokerRetry[teamNr] > 0 && _PartyMode.GameData.CurrentRoundNr > 1)
{
- _GameData.NumJokerRetry[teamNr]--;
- _GameData.Team = teamNr;
+ _PartyMode.GameData.NumJokerRetry[teamNr]--;
+ _PartyMode.GameData.Team = teamNr;
if (!CBase.Sound.IsFinished(_PreviewStream))
CBase.Sound.Fade(_PreviewStream, 0, 1, EStreamAction.Close);
_Status = EStatus.JokerRetry;
@@ -594,8 +566,8 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private void _UpdateTeamChoosingMessage()
{
- _Texts[_TextTeamChoosing].Color = CBase.Themes.GetPlayerColor(_GameData.Team + 1);
- _Texts[_TextTeamChoosing].Text = CBase.Language.Translate("TR_TEAM", PartyModeID) + " " + (_GameData.Team + 1) + "! " +
+ _Texts[_TextTeamChoosing].Color = CBase.Themes.GetPlayerColor(_PartyMode.GameData.Team + 1);
+ _Texts[_TextTeamChoosing].Text = CBase.Language.Translate("TR_TEAM", PartyModeID) + " " + (_PartyMode.GameData.Team + 1) + "! " +
CBase.Language.Translate("TR_SCREENMAIN_TEAM_CHOOSE", PartyModeID);
if (_Status == EStatus.JokerRetry || _Status == EStatus.FieldChoosing)
_Texts[_TextTeamChoosing].Visible = true;
@@ -607,35 +579,28 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{
_Buttons[_ButtonJokerRandomT1].Visible = true;
_Buttons[_ButtonJokerRandomT2].Visible = true;
- _Buttons[_ButtonJokerRandomT1].Text.Text = _GameData.NumJokerRandom[0].ToString();
- _Buttons[_ButtonJokerRandomT2].Text.Text = _GameData.NumJokerRandom[1].ToString();
- _Buttons[_ButtonJokerRandomT1].Selectable = _GameData.NumJokerRandom[0] > 0;
- _Buttons[_ButtonJokerRandomT2].Selectable = _GameData.NumJokerRandom[1] > 0;
+ _Buttons[_ButtonJokerRandomT1].Text.Text = _PartyMode.GameData.NumJokerRandom[0].ToString();
+ _Buttons[_ButtonJokerRandomT2].Text.Text = _PartyMode.GameData.NumJokerRandom[1].ToString();
+ _Buttons[_ButtonJokerRandomT1].Selectable = _PartyMode.GameData.NumJokerRandom[0] > 0;
+ _Buttons[_ButtonJokerRandomT2].Selectable = _PartyMode.GameData.NumJokerRandom[1] > 0;
_Buttons[_ButtonJokerRetryT1].Visible = true;
_Buttons[_ButtonJokerRetryT2].Visible = true;
- _Buttons[_ButtonJokerRetryT1].Text.Text = _GameData.NumJokerRetry[0].ToString();
- _Buttons[_ButtonJokerRetryT2].Text.Text = _GameData.NumJokerRetry[1].ToString();
- _Buttons[_ButtonJokerRetryT1].Selectable = _GameData.NumJokerRetry[0] > 0;
- _Buttons[_ButtonJokerRetryT2].Selectable = _GameData.NumJokerRetry[1] > 0;
+ _Buttons[_ButtonJokerRetryT1].Text.Text = _PartyMode.GameData.NumJokerRetry[0].ToString();
+ _Buttons[_ButtonJokerRetryT2].Text.Text = _PartyMode.GameData.NumJokerRetry[1].ToString();
+ _Buttons[_ButtonJokerRetryT1].Selectable = _PartyMode.GameData.NumJokerRetry[0] > 0;
+ _Buttons[_ButtonJokerRetryT2].Selectable = _PartyMode.GameData.NumJokerRetry[1] > 0;
}
private void _NextRound()
{
- CBase.Sound.Fade(_PreviewStream, 0f, 0.5f, EStreamAction.Close);
- _Data.ScreenMain.Rounds = _GameData.Rounds;
- _Data.ScreenMain.FadeToNameSelection = false;
- _Data.ScreenMain.FadeToSinging = true;
- _Data.ScreenMain.Songs = _GameData.Songs;
- _Data.ScreenMain.SingRoundNr = _SelectedField;
- _Data.ScreenMain.PlayerTeam1 = _GameData.PlayerTeam1;
- _Data.ScreenMain.PlayerTeam2 = _GameData.PlayerTeam2;
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ CBase.Sound.Fade(_PreviewStream, 0, 0.5f, EStreamAction.Close);
+ _PartyMode.Next();
}
private void _EndParty()
{
- CBase.Sound.Fade(_PreviewStream, 0f, 0.5f, EStreamAction.Close);
- _FadeTo(EScreens.ScreenParty);
+ CBase.Sound.Fade(_PreviewStream, 0, 0.5f, EStreamAction.Close);
+ CBase.Graphics.FadeTo(EScreen.Party);
}
private void _ShowPopup(bool visible)
@@ -653,16 +618,13 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private void _Back()
{
- CBase.Sound.Fade(_PreviewStream, 0f, 0.5f, EStreamAction.Close);
- _Data.ScreenMain.FadeToNameSelection = true;
- _Data.ScreenMain.FadeToSinging = false;
- _Data.ScreenMain.SingRoundNr = _SelectedField;
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ CBase.Sound.Fade(_PreviewStream, 0, 0.5f, EStreamAction.Close);
+ _PartyMode.Back();
}
private void _BuildWinnerPossibilities()
{
- var numOneRow = (int)Math.Sqrt(_GameData.NumFields);
+ var numOneRow = (int)Math.Sqrt(_PartyMode.GameData.NumFields);
_Possibilities = new int[(numOneRow * 2) + 2,numOneRow];
for (int i = 0; i < _Possibilities.GetLength(0); i++)
{
diff --git a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeNames.cs b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeNames.cs
index ebc7eddf..8d0e6cae 100644
--- a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeNames.cs
+++ b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeNames.cs
@@ -15,7 +15,6 @@
// along with Vocaluxe. If not, see .
#endregion
-using System;
using System.Collections.Generic;
using VocaluxeLib.Menu;
@@ -31,89 +30,57 @@ namespace VocaluxeLib.PartyModes.TicTacToe
get { return 1; }
}
- private int _NumPlayerTeam1 = 2;
- private int _NumPlayerTeam2 = 2;
-
- private SDataFromScreen _Data;
+ private new CPartyModeTicTacToe _PartyMode;
public override void Init()
{
base.Init();
-
- _Data.ScreenNames.ProfileIDsTeam1 = new List();
- _Data.ScreenNames.ProfileIDsTeam2 = new List();
-
- _Data = new SDataFromScreen();
- var names = new SFromScreenNames {FadeToConfig = false, ProfileIDsTeam1 = new List(), ProfileIDsTeam2 = new List()};
- _Data.ScreenNames = names;
- }
-
- public override void DataToScreen(object receivedData)
- {
- try
- {
- var config = (SDataToScreenNames)receivedData;
- _Data.ScreenNames.ProfileIDsTeam1 = config.ProfileIDsTeam1;
- _Data.ScreenNames.ProfileIDsTeam2 = config.ProfileIDsTeam2;
- if (_Data.ScreenNames.ProfileIDsTeam1 == null)
- _Data.ScreenNames.ProfileIDsTeam1 = new List();
- if (_Data.ScreenNames.ProfileIDsTeam2 == null)
- _Data.ScreenNames.ProfileIDsTeam2 = new List();
-
- _NumPlayerTeam1 = config.NumPlayerTeam1;
- _NumPlayerTeam2 = config.NumPlayerTeam2;
-
- while (_Data.ScreenNames.ProfileIDsTeam1.Count > _NumPlayerTeam1)
- _Data.ScreenNames.ProfileIDsTeam1.RemoveAt(_Data.ScreenNames.ProfileIDsTeam1.Count - 1);
- while (_Data.ScreenNames.ProfileIDsTeam2.Count > _NumPlayerTeam2)
- _Data.ScreenNames.ProfileIDsTeam2.RemoveAt(_Data.ScreenNames.ProfileIDsTeam2.Count - 1);
- }
- catch (Exception e)
- {
- CBase.Log.LogError("Error in party mode screen TicTacToe names. Can't cast received data from game mode " + ThemeName + ". " + e.Message);
- }
+ _PartyMode = (CPartyModeTicTacToe)base._PartyMode;
}
public override void OnShow()
{
base.OnShow();
- SetPartyModeData(2, _NumPlayerTeam1 + _NumPlayerTeam2, new int[] {_NumPlayerTeam1, _NumPlayerTeam2});
- List[] ids = new List[] {_Data.ScreenNames.ProfileIDsTeam1, _Data.ScreenNames.ProfileIDsTeam2};
+
+ while (_PartyMode.GameData.ProfileIDsTeam1.Count > _PartyMode.GameData.NumPlayerTeam1)
+ _PartyMode.GameData.ProfileIDsTeam1.RemoveAt(_PartyMode.GameData.ProfileIDsTeam1.Count - 1);
+ while (_PartyMode.GameData.ProfileIDsTeam2.Count > _PartyMode.GameData.NumPlayerTeam2)
+ _PartyMode.GameData.ProfileIDsTeam2.RemoveAt(_PartyMode.GameData.ProfileIDsTeam2.Count - 1);
+
+ SetPartyModeData(2, _PartyMode.GameData.NumPlayerTeam1 + _PartyMode.GameData.NumPlayerTeam2,
+ new int[] {_PartyMode.GameData.NumPlayerTeam1, _PartyMode.GameData.NumPlayerTeam2});
+ List[] ids = new List[] {_PartyMode.GameData.ProfileIDsTeam1, _PartyMode.GameData.ProfileIDsTeam2};
SetPartyModeProfiles(ids);
}
public override void Back()
{
- SPartyNameOptions options = GetData();
- if (options.TeamList.Length == 2)
+ if (_TeamList.Length == 2)
{
- _Data.ScreenNames.ProfileIDsTeam1 = options.TeamList[0];
- _Data.ScreenNames.ProfileIDsTeam2 = options.TeamList[1];
+ _PartyMode.GameData.ProfileIDsTeam1 = _TeamList[0];
+ _PartyMode.GameData.ProfileIDsTeam2 = _TeamList[1];
}
- if (options.NumPlayerTeams.Length == 2)
+ if (_NumPlayerTeams.Length == 2)
{
- _Data.ScreenNames.NumPlayerTeam1 = options.NumPlayerTeams[0];
- _Data.ScreenNames.NumPlayerTeam2 = options.NumPlayerTeams[1];
+ _PartyMode.GameData.NumPlayerTeam1 = _NumPlayerTeams[0];
+ _PartyMode.GameData.NumPlayerTeam2 = _NumPlayerTeams[1];
}
- _Data.ScreenNames.FadeToConfig = true;
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ _PartyMode.Back();
}
public override void Next()
{
- SPartyNameOptions options = GetData();
- if (options.TeamList.Length == 2)
+ if (_TeamList.Length == 2)
{
- _Data.ScreenNames.ProfileIDsTeam1 = options.TeamList[0];
- _Data.ScreenNames.ProfileIDsTeam2 = options.TeamList[1];
+ _PartyMode.GameData.ProfileIDsTeam1 = _TeamList[0];
+ _PartyMode.GameData.ProfileIDsTeam2 = _TeamList[1];
}
- if (options.NumPlayerTeams.Length == 2)
+ if (_NumPlayerTeams.Length == 2)
{
- _Data.ScreenNames.NumPlayerTeam1 = options.NumPlayerTeams[0];
- _Data.ScreenNames.NumPlayerTeam2 = options.NumPlayerTeams[1];
+ _PartyMode.GameData.NumPlayerTeam1 = _NumPlayerTeams[0];
+ _PartyMode.GameData.NumPlayerTeam2 = _NumPlayerTeams[1];
}
- _Data.ScreenNames.FadeToConfig = false;
- _PartyMode.DataFromScreen(ThemeName, _Data);
+ _PartyMode.Next();
}
}
}
\ No newline at end of file
diff --git a/ServerLib/DataStructs.cs b/ServerLib/DataStructs.cs
index cc88104e..d0541f67 100644
--- a/ServerLib/DataStructs.cs
+++ b/ServerLib/DataStructs.cs
@@ -26,7 +26,8 @@ using System.Text.RegularExpressions;
namespace ServerLib
{
public delegate bool SendKeyEventDelegate(string key);
- public delegate bool SendKeyStringEventDelegate(string keyString, bool isShiftPressed , bool isAltPressed , bool isCtrlPressed);
+
+ public delegate bool SendKeyStringEventDelegate(string keyString, bool isShiftPressed, bool isAltPressed, bool isCtrlPressed);
#region profile
public delegate SProfileData GetProfileDataDelegate(int profileId, bool isReadonly);
diff --git a/Vocaluxe/Base/CBackgroundMusic.cs b/Vocaluxe/Base/CBackgroundMusic.cs
index 806194ce..119d73e8 100644
--- a/Vocaluxe/Base/CBackgroundMusic.cs
+++ b/Vocaluxe/Base/CBackgroundMusic.cs
@@ -161,10 +161,8 @@ namespace Vocaluxe.Base
_AddBackgroundMusic();
_SongPlayer = new CSongPlayer();
- _SongPlayer.Volume = CConfig.BackgroundMusicVolume;
_PreviewPlayer = new CSongPlayer();
- _PreviewPlayer.Volume = CConfig.PreviewMusicVolume;
_PreviewPlayer.RepeatSong = true;
_VideoEnabled = (CConfig.Config.Video.VideoBackgrounds == EOffOn.TR_CONFIG_ON && CConfig.Config.Video.VideosToBackground == EOffOn.TR_CONFIG_ON);
@@ -213,6 +211,7 @@ namespace Vocaluxe.Base
_PreviewPlayer.Stop();
_PlaysPreview = false;
Pause();
+ CSound.SetGlobalVolume(CConfig.BackgroundMusicVolume);
}
else
{
@@ -344,6 +343,7 @@ namespace Vocaluxe.Base
start = song.Preview.StartTime;
_PlaysPreview = true;
+ CSound.SetGlobalVolume(CConfig.PreviewMusicVolume);
_PreviewPlayer.Load(song, start);
float startposition = song.Preview.StartTime;
@@ -375,6 +375,7 @@ namespace Vocaluxe.Base
{
_PreviewPlayer.Stop();
_PlaysPreview = false;
+ CSound.SetGlobalVolume(CConfig.BackgroundMusicVolume);
}
///
diff --git a/Vocaluxe/Base/CConfig.cs b/Vocaluxe/Base/CConfig.cs
index 1e3ca15e..347c39bb 100644
--- a/Vocaluxe/Base/CConfig.cs
+++ b/Vocaluxe/Base/CConfig.cs
@@ -19,6 +19,7 @@ using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
+using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
@@ -208,6 +209,39 @@ namespace Vocaluxe.Base
private static readonly List _Params = new List();
private static readonly List _Values = new List();
+ public static int GetVolumeByType(EMusicType type)
+ {
+ switch (type)
+ {
+ case EMusicType.Preview:
+ return PreviewMusicVolume;
+ case EMusicType.Game:
+ return GameMusicVolume;
+ case EMusicType.Background:
+ return BackgroundMusicVolume;
+ default:
+ throw new ArgumentException("Invalid type: " + type);
+ }
+ }
+
+ public static void SetVolumeByType(EMusicType type, int volume)
+ {
+ switch (type)
+ {
+ case EMusicType.Preview:
+ PreviewMusicVolume = volume;
+ break;
+ case EMusicType.Game:
+ GameMusicVolume = volume;
+ break;
+ case EMusicType.Background:
+ BackgroundMusicVolume = volume;
+ break;
+ default:
+ throw new ArgumentException("Invalid type: " + type);
+ }
+ }
+
public static int BackgroundMusicVolume
{
get { return Config.Sound.BackgroundMusicVolume; }
diff --git a/Vocaluxe/Base/CGame.cs b/Vocaluxe/Base/CGame.cs
index b4d7655f..24f58688 100644
--- a/Vocaluxe/Base/CGame.cs
+++ b/Vocaluxe/Base/CGame.cs
@@ -20,6 +20,7 @@
using System;
using System.Collections.Generic;
+using Vocaluxe.Screens;
using Vocaluxe.SongQueue;
using VocaluxeLib;
using VocaluxeLib.Game;
@@ -187,6 +188,11 @@ namespace Vocaluxe.Base
}
}
+ public static void GotoNameSelection()
+ {
+ CGraphics.FadeTo(EScreen.Names);
+ }
+
public static void ResetPlayer()
{
for (int i = 0; i < Players.Length; i++)
diff --git a/Vocaluxe/Base/CGraphics.cs b/Vocaluxe/Base/CGraphics.cs
index 372458c3..4494d790 100644
--- a/Vocaluxe/Base/CGraphics.cs
+++ b/Vocaluxe/Base/CGraphics.cs
@@ -25,7 +25,6 @@ using Vocaluxe.Base.ThemeSystem;
using Vocaluxe.Screens;
using VocaluxeLib;
using VocaluxeLib.Menu;
-using VocaluxeLib.PartyModes;
namespace Vocaluxe.Base
{
@@ -33,11 +32,7 @@ namespace Vocaluxe.Base
{
private static CFading _Fading;
private static readonly CCursor _Cursor = new CCursor();
- private static float _GlobalAlpha;
- private static float _ZOffset;
- private static EScreens _CurrentScreen;
- private static EScreens _NextScreen;
private static EPopupScreens _CurrentPopupScreen;
private static readonly List _Screens = new List();
@@ -46,24 +41,20 @@ namespace Vocaluxe.Base
private static Stopwatch _VolumePopupTimer;
private static bool _CursorOverVolumeControl;
- public static float GlobalAlpha
- {
- get { return _GlobalAlpha; }
- }
+ public static float GlobalAlpha { get; private set; }
- public static float ZOffset
- {
- get { return _ZOffset; }
- }
+ public static float ZOffset { get; private set; }
- public static EScreens CurrentScreen
- {
- get { return _CurrentScreen; }
- }
+ public static IMenu CurrentScreen { get; private set; }
- public static EScreens NextScreen
+ public static IMenu NextScreen { get; private set; }
+ public static EScreen NextScreenType
{
- get { return _NextScreen; }
+ get
+ {
+ int id = _Screens.IndexOf(NextScreen);
+ return (EScreen)id;
+ }
}
#region public methods
@@ -91,7 +82,8 @@ namespace Vocaluxe.Base
_Screens.Add(new CScreenNames());
_Screens.Add(new CScreenCredits());
_Screens.Add(new CScreenParty());
- _Screens.Add(new CScreenPartyDummy());
+
+ Debug.Assert(_Screens.Count == (int)EScreen.CountEntry, "Screen list and screens enum do not match");
_PopupScreens.Add(new CPopupScreenPlayerControl());
_PopupScreens.Add(new CPopupScreenVolumeControl());
@@ -99,13 +91,13 @@ namespace Vocaluxe.Base
CLog.StopBenchmark("Build Screen List");
- _CurrentScreen = EScreens.ScreenLoad;
- _NextScreen = EScreens.ScreenNull;
+ CurrentScreen = _Screens[(int)EScreen.Load];
+ NextScreen = null;
_CurrentPopupScreen = EPopupScreens.NoPopup;
_VolumePopupTimer = new Stopwatch();
- _GlobalAlpha = 1f;
- _ZOffset = 0f;
+ GlobalAlpha = 1f;
+ ZOffset = 0f;
CLog.StartBenchmark("Load Theme");
LoadTheme();
@@ -116,8 +108,8 @@ namespace Vocaluxe.Base
{
if (_CurrentPopupScreen != EPopupScreens.NoPopup && _PopupScreens.Count > 0)
_PopupScreens[(int)_CurrentPopupScreen].OnClose();
- if (_Screens.Count > 0)
- _Screens[(int)_CurrentScreen].OnClose();
+ if (CurrentScreen != null)
+ CurrentScreen.OnClose();
}
public static void LoadTheme()
@@ -126,10 +118,10 @@ namespace Vocaluxe.Base
for (int i = 0; i < _Screens.Count; i++)
{
- CLog.StartBenchmark("Load Theme " + Enum.GetNames(typeof(EScreens))[i]);
+ CLog.StartBenchmark("Load Theme " + Enum.GetNames(typeof(EScreen))[i]);
_Screens[i].Init();
_Screens[i].LoadTheme(CThemes.GetThemeScreensPath(_Screens[i].PartyModeID));
- CLog.StopBenchmark("Load Theme " + Enum.GetNames(typeof(EScreens))[i]);
+ CLog.StopBenchmark("Load Theme " + Enum.GetNames(typeof(EScreen))[i]);
}
foreach (IMenu popup in _PopupScreens)
@@ -181,8 +173,8 @@ namespace Vocaluxe.Base
public static void InitFirstScreen()
{
- _Screens[(int)_CurrentScreen].OnShow();
- _Screens[(int)_CurrentScreen].OnShowFinish();
+ CurrentScreen.OnShow();
+ CurrentScreen.OnShowFinish();
}
public static bool UpdateGameLogic(CKeys keys, CMouse mouse)
@@ -216,18 +208,18 @@ namespace Vocaluxe.Base
public static bool Draw()
{
- if (_NextScreen != EScreens.ScreenNull && _Fading == null)
+ if (NextScreen != null && _Fading == null)
{
_Fading = new CFading(0f, 1f, CConfig.Config.Graphics.FadeTime);
- if (_NextScreen == EScreens.ScreenPartyDummy)
+ if (NextScreen.PartyModeID != -1)
{
- CFonts.PartyModeID = CParty.CurrentPartyModeID;
- _Screens[(int)_NextScreen].OnShow();
+ CFonts.PartyModeID = NextScreen.PartyModeID;
+ NextScreen.OnShow();
CFonts.PartyModeID = -1;
}
else
- _Screens[(int)_NextScreen].OnShow();
+ NextScreen.OnShow();
HidePopup(EPopupScreens.PopupPlayerControl);
}
@@ -239,35 +231,27 @@ namespace Vocaluxe.Base
if (!finished)
{
- _GlobalAlpha = 1f; // -newAlpha / 100f;
- _ZOffset = CSettings.ZFar / 2;
+ GlobalAlpha = 1f;
+ ZOffset = CSettings.ZFar / 2;
+ _DrawScreen(CurrentScreen);
- _DrawScreen(_CurrentScreen);
+ GlobalAlpha = newAlpha;
+ ZOffset = 0f;
+ _DrawScreen(NextScreen);
-
- _GlobalAlpha = newAlpha;
- _ZOffset = 0f;
-
- _DrawScreen(_NextScreen);
-
- _GlobalAlpha = 1f;
+ GlobalAlpha = 1f;
}
else
{
- _Screens[(int)_CurrentScreen].OnClose();
- _CurrentScreen = _NextScreen;
- _NextScreen = EScreens.ScreenNull;
- _Screens[(int)_CurrentScreen].OnShowFinish();
+ _FinishScreenFading();
if (_Cursor.IsActive)
- _Screens[(int)_CurrentScreen].ProcessMouseMove(_Cursor.X, _Cursor.Y);
+ CurrentScreen.ProcessMouseMove(_Cursor.X, _Cursor.Y);
- _DrawScreen(_CurrentScreen);
-
- _Fading = null;
+ _DrawScreen(CurrentScreen);
}
}
else
- _DrawScreen(_CurrentScreen);
+ _DrawScreen(CurrentScreen);
foreach (IMenu popup in _PopupScreens)
popup.Draw();
@@ -278,33 +262,53 @@ namespace Vocaluxe.Base
return true;
}
- private static void _DrawScreen(EScreens screen)
+ private static void _FinishScreenFading()
{
- if (screen == EScreens.ScreenPartyDummy)
+ if (_Fading == null)
+ return;
+ Debug.Assert(NextScreen != null);
+ CurrentScreen.OnClose();
+ CurrentScreen = NextScreen;
+ NextScreen = null;
+ CurrentScreen.OnShowFinish();
+ CSound.SetGlobalVolume(CConfig.GetVolumeByType(CurrentScreen.CurrentMusicType));
+ _Fading = null;
+ }
+
+ private static void _DrawScreen(IMenu screen)
+ {
+ if (screen.PartyModeID != -1)
{
- CFonts.PartyModeID = CParty.CurrentPartyModeID;
- _Screens[(int)screen].Draw();
+ CFonts.PartyModeID = screen.PartyModeID;
+ screen.Draw();
CFonts.PartyModeID = -1;
}
else
- _Screens[(int)screen].Draw();
+ screen.Draw();
}
- public static void FadeTo(EScreens screen)
+ public static IMenu GetScreen(EScreen screen)
{
- if (screen == EScreens.ScreenPartyDummy)
- {
- EScreens alt;
- CMenu scr = CParty.GetNextPartyScreen(out alt);
- if (scr == null)
- {
- _NextScreen = alt;
- return;
- }
- _Screens[(int)EScreens.ScreenPartyDummy] = scr;
- }
+ if (screen == EScreen.Unknown || screen == EScreen.CountEntry)
+ throw new ArgumentException("Invalid screen: " + screen);
+ return _Screens[(int)screen];
+ }
- _NextScreen = screen;
+ public static void FadeTo(EScreen screen)
+ {
+ FadeTo(GetScreen(screen));
+ }
+
+ public static void FadeTo(IMenu screen)
+ {
+ if (screen == null)
+ throw new ArgumentNullException("screen");
+ Debug.Assert(NextScreen==null || NextScreen!=screen, "Don't fade to currently fading screen!");
+ if(screen==NextScreen)
+ return;
+ // Make sure the last screen change is done
+ _FinishScreenFading();
+ NextScreen = screen;
}
public static void ShowPopup(EPopupScreens popupScreen)
@@ -342,18 +346,12 @@ namespace Vocaluxe.Base
SKeyEvent inputKeyEvent = new SKeyEvent();
SMouseEvent inputMouseEvent = new SMouseEvent();
- bool popupPlayerControlAllowed = _CurrentScreen != EScreens.ScreenOptionsRecord && _CurrentScreen != EScreens.ScreenSing &&
- (_CurrentScreen != EScreens.ScreenSong ||
- (_CurrentScreen == EScreens.ScreenSong && !CSongs.IsInCategory && CConfig.Config.Game.Tabs == EOffOn.TR_CONFIG_ON))
- && _CurrentScreen != EScreens.ScreenCredits && !CBackgroundMusic.Disabled;
-
- bool popupVolumeControlAllowed = _CurrentScreen != EScreens.ScreenCredits && _CurrentScreen != EScreens.ScreenOptionsRecord;
+ bool popupPlayerControlAllowed = CurrentScreen.CurrentMusicType == EMusicType.Background && !CBackgroundMusic.Disabled;
+ bool popupVolumeControlAllowed = CurrentScreen.CurrentMusicType != EMusicType.None;
//Hide volume control for bg-music if bg-music is disabled
- if (popupVolumeControlAllowed && (_CurrentScreen != EScreens.ScreenSong || CSongs.Category == -1)
- && _CurrentScreen != EScreens.ScreenSing && CConfig.Config.Sound.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_OFF)
+ if (popupVolumeControlAllowed && CurrentScreen.CurrentMusicType == EMusicType.Background && CConfig.Config.Sound.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_OFF)
popupVolumeControlAllowed = false;
-
bool resume = true;
bool eventsAvailable;
bool inputEventsAvailable = CController.PollKeyEvent(ref inputKeyEvent);
@@ -451,53 +449,6 @@ namespace Vocaluxe.Base
}
}
- if (popupVolumeControlAllowed)
- {
- //TODO: Handle this in the volume popup
- int diff = 0;
- if ((keyEvent.ModShift && (keyEvent.Key == Keys.Add || keyEvent.Key == Keys.PageUp)) || (keyEvent.Sender == ESender.WiiMote && keyEvent.Key == Keys.Add))
- diff = 5;
- else if ((keyEvent.ModShift && (keyEvent.Key == Keys.Subtract || keyEvent.Key == Keys.PageDown)) ||
- (keyEvent.Sender == ESender.WiiMote && keyEvent.Key == Keys.Subtract))
- diff = -5;
-
- if (diff != 0)
- {
- switch (CurrentScreen)
- {
- case EScreens.ScreenSong:
- if (CSongs.IsInCategory)
- {
- CConfig.PreviewMusicVolume += diff;
- CSound.SetGlobalVolume(CConfig.PreviewMusicVolume);
- }
- else
- {
- CConfig.BackgroundMusicVolume += diff;
- CSound.SetGlobalVolume(CConfig.BackgroundMusicVolume);
- }
- break;
-
- case EScreens.ScreenSing:
- CConfig.GameMusicVolume += diff;
- CSound.SetGlobalVolume(CConfig.GameMusicVolume);
- break;
-
- default:
- CConfig.BackgroundMusicVolume += diff;
- CSound.SetGlobalVolume(CConfig.BackgroundMusicVolume);
- break;
- }
- CConfig.SaveConfig();
- }
-
- if (_CurrentPopupScreen == EPopupScreens.NoPopup && diff != 0)
- {
- ShowPopup(EPopupScreens.PopupVolumeControl);
- _VolumePopupTimer.Restart();
- }
- }
-
if (keyEvent.ModShift && (keyEvent.Key == Keys.F1))
CSettings.ProgramState = EProgramState.EditTheme;
else if (keyEvent.ModAlt && (keyEvent.Key == Keys.Enter))
@@ -510,10 +461,19 @@ namespace Vocaluxe.Base
{
bool handled = false;
if (_CurrentPopupScreen != EPopupScreens.NoPopup)
+ {
handled = _PopupScreens[(int)_CurrentPopupScreen].HandleInput(keyEvent);
+ if (popupVolumeControlAllowed && _CurrentPopupScreen == EPopupScreens.PopupVolumeControl && handled)
+ _VolumePopupTimer.Restart();
+ }
+ else if (popupVolumeControlAllowed && _PopupScreens[(int)EPopupScreens.PopupVolumeControl].HandleInput(keyEvent))
+ {
+ ShowPopup(EPopupScreens.PopupVolumeControl);
+ _VolumePopupTimer.Restart();
+ }
if (!handled)
- resume &= _Screens[(int)_CurrentScreen].HandleInput(keyEvent);
+ resume &= CurrentScreen.HandleInput(keyEvent);
}
}
@@ -570,7 +530,7 @@ namespace Vocaluxe.Base
handled = _PopupScreens[(int)_CurrentPopupScreen].HandleMouse(mouseEvent);
if (!handled && _Fading == null && (_Cursor.IsActive || mouseEvent.LB || mouseEvent.RB || mouseEvent.MB))
- resume &= _Screens[(int)_CurrentScreen].HandleMouse(mouseEvent);
+ resume &= CurrentScreen.HandleMouse(mouseEvent);
if (!eventsAvailable)
inputEventsAvailable = CController.PollMouseEvent(ref inputMouseEvent);
@@ -588,7 +548,7 @@ namespace Vocaluxe.Base
if (keyEvent.ModShift && (keyEvent.Key == Keys.F1))
{
CSettings.ProgramState = EProgramState.Normal;
- _Screens[(int)_CurrentScreen].NextElement();
+ CurrentScreen.NextElement();
}
else if (keyEvent.ModAlt && (keyEvent.Key == Keys.Enter))
CConfig.Config.Graphics.FullScreen = (CConfig.Config.Graphics.FullScreen == EOffOn.TR_CONFIG_ON) ? EOffOn.TR_CONFIG_OFF : EOffOn.TR_CONFIG_ON;
@@ -597,14 +557,14 @@ namespace Vocaluxe.Base
else
{
if (_Fading == null)
- _Screens[(int)_CurrentScreen].HandleInputThemeEditor(keyEvent);
+ CurrentScreen.HandleInputThemeEditor(keyEvent);
}
}
while (mouse.PollEvent(ref mouseEvent))
{
if (_Fading == null)
- _Screens[(int)_CurrentScreen].HandleMouseThemeEditor(mouseEvent);
+ CurrentScreen.HandleMouseThemeEditor(mouseEvent);
_UpdateMousePosition(mouseEvent.X, mouseEvent.Y);
}
@@ -629,7 +589,7 @@ namespace Vocaluxe.Base
if (_CurrentPopupScreen != EPopupScreens.NoPopup)
_PopupScreens[(int)_CurrentPopupScreen].UpdateGame();
- return _Screens[(int)_CurrentScreen].UpdateGame();
+ return CurrentScreen.UpdateGame();
}
private static void _DrawDebugInfos()
diff --git a/Vocaluxe/Base/CMain.cs b/Vocaluxe/Base/CMain.cs
index f5b00c13..320b8697 100644
--- a/Vocaluxe/Base/CMain.cs
+++ b/Vocaluxe/Base/CMain.cs
@@ -71,9 +71,9 @@ namespace Vocaluxe.Base
CConfig.BackgroundMusicVolume = newVolume;
}
- public int GetBackgroundMusicVolume()
+ public int GetMusicVolume(EMusicType type)
{
- return CConfig.BackgroundMusicVolume;
+ return CConfig.GetVolumeByType(type);
}
public EBackgroundMusicOffOn GetBackgroundMusicStatus()
@@ -446,7 +446,12 @@ namespace Vocaluxe.Base
CGraphics.SaveTheme();
}
- public void FadeTo(EScreens nextScreen)
+ public void FadeTo(EScreen nextScreen)
+ {
+ CGraphics.FadeTo(nextScreen);
+ }
+
+ public void FadeTo(IMenu nextScreen)
{
CGraphics.FadeTo(nextScreen);
}
@@ -456,10 +461,20 @@ namespace Vocaluxe.Base
return CGraphics.GlobalAlpha;
}
- public EScreens GetNextScreen()
+ public IMenu GetNextScreen()
{
return CGraphics.NextScreen;
}
+
+ public EScreen GetNextScreenType()
+ {
+ return CGraphics.NextScreenType;
+ }
+
+ public IMenu GetScreen(EScreen screen)
+ {
+ return CGraphics.GetScreen(screen);
+ }
}
class CBlog : ILog
@@ -828,7 +843,7 @@ namespace Vocaluxe.Base
CSound.Play(soundStream);
}
- public void Fade(int soundStream, float targetVolume, float duration, EStreamAction afterFadeAction = EStreamAction.Nothing)
+ public void Fade(int soundStream, int targetVolume, float duration, EStreamAction afterFadeAction = EStreamAction.Nothing)
{
CSound.Fade(soundStream, targetVolume, duration, afterFadeAction);
}
@@ -853,10 +868,15 @@ namespace Vocaluxe.Base
return CSound.GetLength(soundStream);
}
- public void SetStreamVolume(int soundStream, float volume)
+ public void SetStreamVolume(int soundStream, int volume)
{
CSound.SetStreamVolume(soundStream, volume);
}
+
+ public void SetGlobalVolume(int volume)
+ {
+ CSound.SetGlobalVolume(volume);
+ }
}
class CBcover : ICover
diff --git a/Vocaluxe/Base/CParty.cs b/Vocaluxe/Base/CParty.cs
index a04949eb..6408281b 100644
--- a/Vocaluxe/Base/CParty.cs
+++ b/Vocaluxe/Base/CParty.cs
@@ -113,11 +113,6 @@ namespace Vocaluxe.Base
_CurrentPartyMode.PartyMode.Init();
}
-
- public static CMenu GetNextPartyScreen(out EScreens alternativeScreen)
- {
- return _CurrentPartyMode.PartyMode.GetNextPartyScreen(out alternativeScreen);
- }
#endregion public stuff
#region Interface
@@ -126,16 +121,11 @@ namespace Vocaluxe.Base
_CurrentPartyMode.PartyMode.UpdateGame();
}
- public static EScreens GetStartScreen()
+ public static IMenu GetStartScreen()
{
return _CurrentPartyMode.PartyMode.GetStartScreen();
}
- public static EScreens GetMainScreen()
- {
- return _CurrentPartyMode.PartyMode.GetMainScreen();
- }
-
public static SScreenSongOptions GetSongSelectionOptions()
{
return _CurrentPartyMode.PartyMode.GetScreenSongOptions();
diff --git a/Vocaluxe/Base/CSettings.cs b/Vocaluxe/Base/CSettings.cs
index de9378cb..0063a2e6 100644
--- a/Vocaluxe/Base/CSettings.cs
+++ b/Vocaluxe/Base/CSettings.cs
@@ -188,7 +188,7 @@ namespace Vocaluxe.Base
if (VersionRevision != ERevision.Release)
{
// ReSharper restore ConditionIsAlwaysTrueOrFalse
- var gitversion = Application.ProductVersion;
+ string gitversion = Application.ProductVersion;
version += " " + _GetVersionStatus() + String.Format(" ({0})", gitversion);
}
diff --git a/Vocaluxe/Base/CSongs.cs b/Vocaluxe/Base/CSongs.cs
index d58f67ab..e0495076 100644
--- a/Vocaluxe/Base/CSongs.cs
+++ b/Vocaluxe/Base/CSongs.cs
@@ -29,6 +29,8 @@ namespace Vocaluxe.Base
{
static class CSongs
{
+ public delegate void CategoryChangedHandler();
+
private static readonly List _Songs = new List();
private static readonly List _SongsForRandom = new List();
@@ -41,6 +43,7 @@ namespace Vocaluxe.Base
public static readonly CSongCategorizer Categorizer = new CSongCategorizer();
private static Thread _CoverLoaderThread;
+ public static event CategoryChangedHandler OnCategoryChanged;
public static List Songs
{
@@ -84,8 +87,13 @@ namespace Vocaluxe.Base
}
set
{
+ if (value == _CatIndex)
+ return;
if (value == -1 || _IsCatIndexValid(value))
+ {
_CatIndex = value;
+ OnCategoryChanged();
+ }
}
}
diff --git a/Vocaluxe/Base/CSound.cs b/Vocaluxe/Base/CSound.cs
index e8dba147..dc76f86f 100644
--- a/Vocaluxe/Base/CSound.cs
+++ b/Vocaluxe/Base/CSound.cs
@@ -15,7 +15,6 @@
// along with Vocaluxe. If not, see .
#endregion
-using System;
using System.IO;
using Vocaluxe.Lib.Sound.Playback;
using Vocaluxe.Lib.Sound.Playback.GstreamerSharp;
@@ -61,7 +60,11 @@ namespace Vocaluxe.Base
return _Playback.Init();
}
- public static void SetGlobalVolume(float volume)
+ ///
+ /// Sets the volume (in percent 0-100)
+ ///
+ ///
+ public static void SetGlobalVolume(int volume)
{
_Playback.SetGlobalVolume(volume);
}
@@ -110,27 +113,27 @@ namespace Vocaluxe.Base
_Playback.Stop(stream);
}
- public static void Fade(int stream, float targetVolume, float seconds, EStreamAction afterFadeAction = EStreamAction.Nothing)
+ public static void Fade(int stream, int targetVolume, float seconds, EStreamAction afterFadeAction = EStreamAction.Nothing)
{
_Playback.Fade(stream, targetVolume, seconds, afterFadeAction);
}
- public static void FadeAndPause(int stream, float targetVolume, float seconds)
+ public static void FadeAndPause(int stream, int targetVolume, float seconds)
{
Fade(stream, targetVolume, seconds, EStreamAction.Pause);
}
- public static void FadeAndClose(int stream, float targetVolume, float seconds)
+ public static void FadeAndClose(int stream, int targetVolume, float seconds)
{
Fade(stream, targetVolume, seconds, EStreamAction.Close);
}
- public static void FadeAndStop(int stream, float targetVolume, float seconds)
+ public static void FadeAndStop(int stream, int targetVolume, float seconds)
{
Fade(stream, targetVolume, seconds, EStreamAction.Stop);
}
- public static void SetStreamVolume(int stream, float volume)
+ public static void SetStreamVolume(int stream, int volume)
{
_Playback.SetStreamVolume(stream, volume);
}
@@ -205,8 +208,8 @@ namespace Vocaluxe.Base
}
if (length > 0f)
{
- SetStreamVolume(stream, 0f);
- Fade(stream, 100f, length);
+ SetStreamVolume(stream, 0);
+ Fade(stream, 100, length);
}
}
return stream;
diff --git a/Vocaluxe/Base/Server/CVocaluxeServer.cs b/Vocaluxe/Base/Server/CVocaluxeServer.cs
index b324116a..0af844d2 100644
--- a/Vocaluxe/Base/Server/CVocaluxeServer.cs
+++ b/Vocaluxe/Base/Server/CVocaluxeServer.cs
@@ -126,7 +126,7 @@ namespace Vocaluxe.Base.Server
private static bool _SendKeyEvent(string key)
{
bool result = false;
- var lowerKey = key.ToLower();
+ string lowerKey = key.ToLower();
if (!string.IsNullOrEmpty(lowerKey))
{
@@ -167,12 +167,12 @@ namespace Vocaluxe.Base.Server
default:
if (lowerKey.StartsWith("f"))
{
- var numberString = lowerKey.Substring(1);
+ string numberString = lowerKey.Substring(1);
int number;
Keys fKey;
- if (Int32.TryParse(numberString, out number) && number >= 1
- && number <= 12
+ if (Int32.TryParse(numberString, out number) && number >= 1
+ && number <= 12
&& Enum.TryParse("F" + number, true, out fKey))
{
Controller.AddKeyEvent(new SKeyEvent(ESender.Keyboard, false, false, false, false, Char.MinValue, fKey));
@@ -186,17 +186,17 @@ namespace Vocaluxe.Base.Server
return result;
}
- private static bool _sendKeyStringEvent(string keyString, bool isShiftPressed , bool isAltPressed , bool isCtrlPressed )
+ private static bool _sendKeyStringEvent(string keyString, bool isShiftPressed, bool isAltPressed, bool isCtrlPressed)
{
bool result = false;
- foreach (var key in keyString.ToCharArray())
+ foreach (char key in keyString.ToCharArray())
{
- Controller.AddKeyEvent(new SKeyEvent(ESender.Keyboard, isAltPressed,
- Char.IsUpper(key) || isShiftPressed,
- isCtrlPressed, true,
- isShiftPressed?Char.ToUpper(key) :key,
- _ParseKeys(key)));
+ Controller.AddKeyEvent(new SKeyEvent(ESender.Keyboard, isAltPressed,
+ Char.IsUpper(key) || isShiftPressed,
+ isCtrlPressed, true,
+ isShiftPressed ? Char.ToUpper(key) : key,
+ _ParseKeys(key)));
result = true;
}
diff --git a/Vocaluxe/Base/ThemeSystem/CSkin.cs b/Vocaluxe/Base/ThemeSystem/CSkin.cs
index 65edc203..5474177e 100644
--- a/Vocaluxe/Base/ThemeSystem/CSkin.cs
+++ b/Vocaluxe/Base/ThemeSystem/CSkin.cs
@@ -147,7 +147,7 @@ namespace Vocaluxe.Base.ThemeSystem
}
catch (Exception e)
{
- CLog.LogError("Can't load skin file \"" + _FileName + "\". Invalid file!", false, false, e);
+ CLog.LogError("Can't load skin file \"" + Path.Combine(_Folder, _FileName) + "\". Invalid file!", false, false, e);
return false;
}
diff --git a/Vocaluxe/Lib/Sound/Playback/CAudioStreamBase.cs b/Vocaluxe/Lib/Sound/Playback/CAudioStreamBase.cs
index d8046b4d..5040c427 100644
--- a/Vocaluxe/Lib/Sound/Playback/CAudioStreamBase.cs
+++ b/Vocaluxe/Lib/Sound/Playback/CAudioStreamBase.cs
@@ -43,7 +43,7 @@ namespace Vocaluxe.Lib.Sound.Playback
public abstract bool IsPaused { get; set; }
public abstract bool IsFinished { get; }
- public CAudioStreamBase(int id, string medium, bool loop)
+ protected CAudioStreamBase(int id, string medium, bool loop)
{
_ID = id;
_Medium = medium;
diff --git a/Vocaluxe/Lib/Sound/Playback/CPlaybackBase.cs b/Vocaluxe/Lib/Sound/Playback/CPlaybackBase.cs
index dc702c8b..d3e4a168 100644
--- a/Vocaluxe/Lib/Sound/Playback/CPlaybackBase.cs
+++ b/Vocaluxe/Lib/Sound/Playback/CPlaybackBase.cs
@@ -15,6 +15,7 @@
// along with Vocaluxe. If not, see .
#endregion
+using System;
using System.Collections.Generic;
using System.Threading;
using VocaluxeLib;
@@ -62,19 +63,19 @@ namespace Vocaluxe.Lib.Sound.Playback
}
}
- public float GetGlobalVolume()
+ public int GetGlobalVolume()
{
- return (_Initialized) ? _GlobalVolume * 100f : 100f;
+ return (_Initialized) ? (int) Math.Round(_GlobalVolume * 100) : 100;
}
- public void SetGlobalVolume(float volume)
+ public void SetGlobalVolume(int volume)
{
if (!_Initialized)
return;
- volume = volume.Clamp(0f, 100f) / 100f;
+ float volumeF = volume.Clamp(0, 100) / 100f;
foreach (IAudioStream stream in _Streams)
- stream.VolumeMax = volume;
- _GlobalVolume = volume;
+ stream.VolumeMax = volumeF;
+ _GlobalVolume = volumeF;
}
public int GetStreamCount()
@@ -178,28 +179,28 @@ namespace Vocaluxe.Lib.Sound.Playback
}
}
- public void Fade(int streamID, float targetVolume, float seconds, EStreamAction afterFadeAction = EStreamAction.Nothing)
+ public void Fade(int streamID, int targetVolume, float seconds, EStreamAction afterFadeAction = EStreamAction.Nothing)
{
if (!_Initialized)
return;
- targetVolume = targetVolume.Clamp(0f, 100f) / 100f;
+ float targetVolumeF = targetVolume.Clamp(0, 100) / 100f;
lock (_Streams)
{
if (_StreamExists(streamID))
- _Streams[_GetStreamIndex(streamID)].Fade(targetVolume, seconds, afterFadeAction);
+ _Streams[_GetStreamIndex(streamID)].Fade(targetVolumeF, seconds, afterFadeAction);
}
}
- public void SetStreamVolume(int streamID, float volume)
+ public void SetStreamVolume(int streamID, int volume)
{
if (!_Initialized)
return;
- volume = volume.Clamp(0f, 100f) / 100f;
+ float volumeF = volume.Clamp(0, 100) / 100f;
lock (_Streams)
{
if (_StreamExists(streamID))
{
- _Streams[_GetStreamIndex(streamID)].Volume = volume;
+ _Streams[_GetStreamIndex(streamID)].Volume = volumeF;
_Streams[_GetStreamIndex(streamID)].CancelFading();
}
}
diff --git a/Vocaluxe/Lib/Sound/Playback/GstreamerSharp/CGstreamerSharpAudioStream.cs b/Vocaluxe/Lib/Sound/Playback/GstreamerSharp/CGstreamerSharpAudioStream.cs
index f1b7f2fc..ca0d602d 100644
--- a/Vocaluxe/Lib/Sound/Playback/GstreamerSharp/CGstreamerSharpAudioStream.cs
+++ b/Vocaluxe/Lib/Sound/Playback/GstreamerSharp/CGstreamerSharpAudioStream.cs
@@ -58,8 +58,9 @@ namespace Vocaluxe.Lib.Sound.Playback.GstreamerSharp
get
{
//TODO: Is it ok, to remove this? Gst should post a message if duration was changed so this should not be required
- //if (base.Length < 0 && _Element != null)
- // _UpdateDuration();
+ // Removing would not work in some cases where length is not know at startup
+ if (base.Length < 0 && _Element != null)
+ _UpdateDuration();
return base.Length >= 0f ? base.Length : 0f;
}
}
diff --git a/Vocaluxe/Lib/Sound/Playback/IPlayback.cs b/Vocaluxe/Lib/Sound/Playback/IPlayback.cs
index 1a414037..1dd10288 100644
--- a/Vocaluxe/Lib/Sound/Playback/IPlayback.cs
+++ b/Vocaluxe/Lib/Sound/Playback/IPlayback.cs
@@ -23,14 +23,14 @@ namespace Vocaluxe.Lib.Sound.Playback
{
bool Init();
void Close();
- float GetGlobalVolume();
+ int GetGlobalVolume();
///
/// Set the global (maximum) volume
/// All streams (existent and future ones) will have their maximum volume set to this value
///
/// Volume in percent
- void SetGlobalVolume(float volume);
+ void SetGlobalVolume(int volume);
int GetStreamCount();
void CloseAll();
@@ -42,14 +42,14 @@ namespace Vocaluxe.Lib.Sound.Playback
void Play(int streamID);
void Pause(int streamID);
void Stop(int streamID);
- void Fade(int streamID, float targetVolume, float seconds, EStreamAction afterFadeAction = EStreamAction.Nothing);
+ void Fade(int streamID, int targetVolume, float seconds, EStreamAction afterFadeAction = EStreamAction.Nothing);
///
/// Set the streams current volume. Cancels fading
///
/// Id of the stream (optained by Load)
/// Volume in percent
- void SetStreamVolume(int streamID, float volume);
+ void SetStreamVolume(int streamID, int volume);
float GetLength(int streamID);
float GetPosition(int streamID);
diff --git a/Vocaluxe/Screens/CPopupScreenPlayerControl.cs b/Vocaluxe/Screens/CPopupScreenPlayerControl.cs
index 801259da..0ed15bc7 100644
--- a/Vocaluxe/Screens/CPopupScreenPlayerControl.cs
+++ b/Vocaluxe/Screens/CPopupScreenPlayerControl.cs
@@ -206,7 +206,7 @@ namespace Vocaluxe.Screens
CGame.AddSong(songNr, gm);
- CGraphics.FadeTo(EScreens.ScreenNames);
+ CGame.GotoNameSelection();
}
}
}
\ No newline at end of file
diff --git a/Vocaluxe/Screens/CPopupScreenVolumeControl.cs b/Vocaluxe/Screens/CPopupScreenVolumeControl.cs
index 2158d825..4bb77849 100644
--- a/Vocaluxe/Screens/CPopupScreenVolumeControl.cs
+++ b/Vocaluxe/Screens/CPopupScreenVolumeControl.cs
@@ -15,6 +15,7 @@
// along with Vocaluxe. If not, see .
#endregion
+using System.Windows.Forms;
using Vocaluxe.Base;
using VocaluxeLib;
using VocaluxeLib.Menu;
@@ -56,6 +57,19 @@ namespace Vocaluxe.Screens
public override bool HandleInput(SKeyEvent keyEvent)
{
_UpdateSlides();
+ if (keyEvent.ModShift || keyEvent.Sender == ESender.WiiMote)
+ {
+ if (keyEvent.Key == Keys.Add || keyEvent.Key == Keys.PageUp)
+ _SelectSlides[_SelectSlideVolume].Selection++;
+ else if (keyEvent.Key == Keys.Subtract || keyEvent.Key == Keys.PageDown)
+ _SelectSlides[_SelectSlideVolume].Selection--;
+ else
+ return false;
+ }
+ else
+ return false;
+
+ _SaveConfig();
return true;
}
@@ -69,19 +83,13 @@ namespace Vocaluxe.Screens
}
if (mouseEvent.Wheel > 0 && CHelper.IsInBounds(ScreenArea, mouseEvent))
{
- if (_SelectSlides[_SelectSlideVolume].Selection - mouseEvent.Wheel >= 0)
- _SelectSlides[_SelectSlideVolume].Selection = _SelectSlides[_SelectSlideVolume].Selection - mouseEvent.Wheel;
- else if (_SelectSlides[_SelectSlideVolume].Selection - mouseEvent.Wheel < 0)
- _SelectSlides[_SelectSlideVolume].Selection = 0;
+ _SelectSlides[_SelectSlideVolume].Selection = _SelectSlides[_SelectSlideVolume].Selection - mouseEvent.Wheel;
_SaveConfig();
return true;
}
if (mouseEvent.Wheel < 0 && CHelper.IsInBounds(ScreenArea, mouseEvent))
{
- if (_SelectSlides[_SelectSlideVolume].Selection - mouseEvent.Wheel < _SelectSlides[_SelectSlideVolume].NumValues)
- _SelectSlides[_SelectSlideVolume].Selection = _SelectSlides[_SelectSlideVolume].Selection - mouseEvent.Wheel;
- else if (_SelectSlides[_SelectSlideVolume].Selection - mouseEvent.Wheel >= _SelectSlides[_SelectSlideVolume].NumValues)
- _SelectSlides[_SelectSlideVolume].Selection = _SelectSlides[_SelectSlideVolume].NumValues - 1;
+ _SelectSlides[_SelectSlideVolume].Selection = _SelectSlides[_SelectSlideVolume].Selection - mouseEvent.Wheel;
_SaveConfig();
return true;
}
@@ -103,47 +111,14 @@ namespace Vocaluxe.Screens
private void _SaveConfig()
{
int volume = _SelectSlides[_SelectSlideVolume].Selection * 5;
- switch (CGraphics.CurrentScreen)
- {
- case EScreens.ScreenSong:
- if (CSongs.IsInCategory)
- CConfig.PreviewMusicVolume = volume;
- else
- CConfig.BackgroundMusicVolume = volume;
- break;
-
- case EScreens.ScreenSing:
- CConfig.GameMusicVolume = volume;
- break;
-
- default:
- CConfig.BackgroundMusicVolume = volume;
- break;
- }
+ CConfig.SetVolumeByType(CGraphics.CurrentScreen.CurrentMusicType, volume);
CConfig.SaveConfig();
CSound.SetGlobalVolume(volume);
}
private void _UpdateSlides()
{
- int volume;
- switch (CGraphics.CurrentScreen)
- {
- case EScreens.ScreenSong:
- if (CSongs.IsInCategory)
- volume = CConfig.PreviewMusicVolume;
- else
- volume = CConfig.BackgroundMusicVolume;
- break;
-
- case EScreens.ScreenSing:
- volume = CConfig.GameMusicVolume;
- break;
-
- default:
- volume = CConfig.BackgroundMusicVolume;
- break;
- }
+ int volume = CConfig.GetVolumeByType(CGraphics.CurrentScreen.CurrentMusicType);
_SelectSlides[_SelectSlideVolume].Selection = volume / 5;
}
}
diff --git a/Vocaluxe/Screens/CScreenCredits.cs b/Vocaluxe/Screens/CScreenCredits.cs
index 93922427..bf585e2f 100644
--- a/Vocaluxe/Screens/CScreenCredits.cs
+++ b/Vocaluxe/Screens/CScreenCredits.cs
@@ -145,6 +145,11 @@ namespace Vocaluxe.Screens
private SThemeBackground _BGTheme;
+ public override EMusicType CurrentMusicType
+ {
+ get { return EMusicType.None; }
+ }
+
public override void Init()
{
base.Init();
@@ -292,7 +297,7 @@ namespace Vocaluxe.Screens
case Keys.Escape:
case Keys.Back:
case Keys.Enter:
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
break;
}
}
@@ -303,14 +308,14 @@ namespace Vocaluxe.Screens
public override bool HandleMouse(SMouseEvent mouseEvent)
{
if (mouseEvent.LB || mouseEvent.RB)
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
return true;
}
public override bool UpdateGame()
{
if (!_Animation())
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
return true;
}
diff --git a/Vocaluxe/Screens/CScreenLoad.cs b/Vocaluxe/Screens/CScreenLoad.cs
index bc30c7cb..641bad44 100644
--- a/Vocaluxe/Screens/CScreenLoad.cs
+++ b/Vocaluxe/Screens/CScreenLoad.cs
@@ -137,11 +137,11 @@ namespace Vocaluxe.Screens
bool next = CConfig.Config.Theme.CoverLoading != ECoverLoading.TR_CONFIG_COVERLOADING_ATSTART || CSongs.CoverLoaded;
- if ((_IntroOutPlayed || _SkipIntro) && next && CSettings.ProgramState != EProgramState.EditTheme && CSongs.SongsLoaded)
+ if ((_IntroOutPlayed || _SkipIntro) && next && CSettings.ProgramState == EProgramState.Start && CSongs.SongsLoaded)
+ {
CSettings.ProgramState = EProgramState.Normal;
-
- if (CSettings.ProgramState == EProgramState.Normal)
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
+ }
_Texts[_TextStatus].Text =
CLanguage.Translate("TR_SCREENLOAD_TOTAL") + ": " + CSongs.NumAllSongs + " " +
diff --git a/Vocaluxe/Screens/CScreenMain.cs b/Vocaluxe/Screens/CScreenMain.cs
index a363675b..f45915da 100644
--- a/Vocaluxe/Screens/CScreenMain.cs
+++ b/Vocaluxe/Screens/CScreenMain.cs
@@ -71,37 +71,37 @@ namespace Vocaluxe.Screens
switch (keyEvent.Key)
{
case Keys.O:
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
break;
case Keys.S:
if (CProfiles.NumProfiles > 0)
- CGraphics.FadeTo(EScreens.ScreenSong);
+ CGraphics.FadeTo(EScreen.Song);
break;
case Keys.C:
- CGraphics.FadeTo(EScreens.ScreenCredits);
+ CGraphics.FadeTo(EScreen.Credits);
break;
case Keys.T:
- CGraphics.FadeTo(EScreens.ScreenTest);
+ CGraphics.FadeTo(EScreen.Test);
break;
case Keys.Enter:
if (_Buttons[_ButtonSing].Selected)
{
CParty.SetNormalGameMode();
- CGraphics.FadeTo(EScreens.ScreenSong);
+ CGraphics.FadeTo(EScreen.Song);
}
if (_Buttons[_ButtonParty].Selected)
- CGraphics.FadeTo(EScreens.ScreenParty);
+ CGraphics.FadeTo(EScreen.Party);
if (_Buttons[_ButtonOptions].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
if (_Buttons[_ButtonProfiles].Selected)
- CGraphics.FadeTo(EScreens.ScreenProfiles);
+ CGraphics.FadeTo(EScreen.Profiles);
if (_Buttons[_ButtonExit].Selected)
return false;
@@ -121,17 +121,17 @@ namespace Vocaluxe.Screens
if (_Buttons[_ButtonSing].Selected)
{
CParty.SetNormalGameMode();
- CGraphics.FadeTo(EScreens.ScreenSong);
+ CGraphics.FadeTo(EScreen.Song);
}
if (_Buttons[_ButtonParty].Selected)
- CGraphics.FadeTo(EScreens.ScreenParty);
+ CGraphics.FadeTo(EScreen.Party);
if (_Buttons[_ButtonOptions].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
if (_Buttons[_ButtonProfiles].Selected)
- CGraphics.FadeTo(EScreens.ScreenProfiles);
+ CGraphics.FadeTo(EScreen.Profiles);
if (_Buttons[_ButtonExit].Selected)
return false;
diff --git a/Vocaluxe/Screens/CScreenNames.cs b/Vocaluxe/Screens/CScreenNames.cs
index c4687da5..8b854d28 100644
--- a/Vocaluxe/Screens/CScreenNames.cs
+++ b/Vocaluxe/Screens/CScreenNames.cs
@@ -180,14 +180,15 @@ namespace Vocaluxe.Screens
return true;
_UpdateSelectedProfile(_SelectingFastPlayerNr - 1, _SelectedProfileID);
-
- _SelectElement(_Buttons[_ButtonStart]);
}
//Started selecting with 'P'
if (_SelectingFast)
{
if (_SelectingFastPlayerNr == CGame.NumPlayers)
+ {
resetSelection = true;
+ _SelectElement(_Buttons[_ButtonStart]);
+ }
else
{
_SelectingFastPlayerNr++;
@@ -225,6 +226,7 @@ namespace Vocaluxe.Screens
case Keys.Escape:
resetSelection = true;
+ _SelectElement(_SelectSlides[_SelectSlidePlayerNumber]);
break;
case Keys.Delete:
@@ -277,14 +279,14 @@ namespace Vocaluxe.Screens
{
case Keys.Escape:
case Keys.Back:
- CGraphics.FadeTo(EScreens.ScreenSong);
+ CGraphics.FadeTo(EScreen.Song);
break;
case Keys.Enter:
if (_Buttons[_ButtonBack].Selected)
- CGraphics.FadeTo(EScreens.ScreenSong);
- else
+ CGraphics.FadeTo(EScreen.Song);
+ else if (_Buttons[_ButtonStart].Selected)
_StartSong();
break;
@@ -323,12 +325,20 @@ namespace Vocaluxe.Screens
break;
}
-
if (_SelectingFastPlayerNr > 0 && _SelectingFastPlayerNr <= CConfig.Config.Game.NumPlayers)
{
_SelectingKeyboardActive = true;
_NameSelections[_NameSelection].FastSelection(true, _SelectingFastPlayerNr);
}
+ if (_NameSelections[_NameSelection].Selected && !_SelectingKeyboardActive)
+ {
+ _SelectingKeyboardActive = true;
+ _ResetPlayerSelections();
+ _SelectingFast = true;
+ _SelectingFastPlayerNr = 1;
+ _SelectingKeyboardActive = true;
+ _NameSelections[_NameSelection].FastSelection(true, _SelectingFastPlayerNr);
+ }
}
return true;
@@ -454,7 +464,7 @@ namespace Vocaluxe.Screens
else if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{
if (_Buttons[_ButtonBack].Selected)
- CGraphics.FadeTo(EScreens.ScreenSong);
+ CGraphics.FadeTo(EScreen.Song);
else if (_Buttons[_ButtonStart].Selected)
_StartSong();
else
@@ -497,7 +507,7 @@ namespace Vocaluxe.Screens
}
}
if (exit)
- CGraphics.FadeTo(EScreens.ScreenSong);
+ CGraphics.FadeTo(EScreen.Song);
}
if (mouseEvent.MB && _SelectingFast)
@@ -619,7 +629,7 @@ namespace Vocaluxe.Screens
for (int i = 0; i < CGame.NumPlayers; i++)
CGame.Players[i].VoiceNr = _SelectSlides[_SelectSlideDuetPlayer[i]].Selection;
}
- CGraphics.FadeTo(EScreens.ScreenSing);
+ CGraphics.FadeTo(EScreen.Sing);
}
private void _UpdateSlides()
diff --git a/Vocaluxe/Screens/CScreenOptions.cs b/Vocaluxe/Screens/CScreenOptions.cs
index b9ad88e4..63ce4dd6 100644
--- a/Vocaluxe/Screens/CScreenOptions.cs
+++ b/Vocaluxe/Screens/CScreenOptions.cs
@@ -55,32 +55,32 @@ namespace Vocaluxe.Screens
{
case Keys.Escape:
case Keys.Back:
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
break;
case Keys.S:
CParty.SetNormalGameMode();
- CGraphics.FadeTo(EScreens.ScreenSong);
+ CGraphics.FadeTo(EScreen.Song);
break;
case Keys.Enter:
if (_Buttons[_ButtonOptionsGame].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptionsGame);
+ CGraphics.FadeTo(EScreen.OptionsGame);
if (_Buttons[_ButtonOptionsSound].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptionsSound);
+ CGraphics.FadeTo(EScreen.OptionsSound);
if (_Buttons[_ButtonOptionsRecord].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptionsRecord);
+ CGraphics.FadeTo(EScreen.OptionsRecord);
if (_Buttons[_ButtonOptionsVideo].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptionsVideo);
+ CGraphics.FadeTo(EScreen.OptionsVideo);
if (_Buttons[_ButtonOptionsLyrics].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptionsLyrics);
+ CGraphics.FadeTo(EScreen.OptionsLyrics);
if (_Buttons[_ButtonOptionsTheme].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptionsTheme);
+ CGraphics.FadeTo(EScreen.OptionsTheme);
break;
}
@@ -95,26 +95,26 @@ namespace Vocaluxe.Screens
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{
if (_Buttons[_ButtonOptionsGame].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptionsGame);
+ CGraphics.FadeTo(EScreen.OptionsGame);
if (_Buttons[_ButtonOptionsSound].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptionsSound);
+ CGraphics.FadeTo(EScreen.OptionsSound);
if (_Buttons[_ButtonOptionsRecord].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptionsRecord);
+ CGraphics.FadeTo(EScreen.OptionsRecord);
if (_Buttons[_ButtonOptionsVideo].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptionsVideo);
+ CGraphics.FadeTo(EScreen.OptionsVideo);
if (_Buttons[_ButtonOptionsLyrics].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptionsLyrics);
+ CGraphics.FadeTo(EScreen.OptionsLyrics);
if (_Buttons[_ButtonOptionsTheme].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptionsTheme);
+ CGraphics.FadeTo(EScreen.OptionsTheme);
}
if (mouseEvent.RB)
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
return true;
}
diff --git a/Vocaluxe/Screens/CScreenOptionsGame.cs b/Vocaluxe/Screens/CScreenOptionsGame.cs
index 248a2d55..ce71f532 100644
--- a/Vocaluxe/Screens/CScreenOptionsGame.cs
+++ b/Vocaluxe/Screens/CScreenOptionsGame.cs
@@ -73,19 +73,19 @@ namespace Vocaluxe.Screens
case Keys.Escape:
case Keys.Back:
_SaveConfig();
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
break;
case Keys.S:
CParty.SetNormalGameMode();
- CGraphics.FadeTo(EScreens.ScreenSong);
+ CGraphics.FadeTo(EScreen.Song);
break;
case Keys.Enter:
if (_Buttons[_ButtonExit].Selected)
{
_SaveConfig();
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
}
else if (_Buttons[_ButtonServer].Selected)
CGraphics.ShowPopup(EPopupScreens.PopupServerQR);
@@ -110,14 +110,14 @@ namespace Vocaluxe.Screens
if (mouseEvent.RB)
{
_SaveConfig();
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
}
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{
if (_Buttons[_ButtonExit].Selected)
{
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
_SaveConfig();
}
else if (_Buttons[_ButtonServer].Selected)
diff --git a/Vocaluxe/Screens/CScreenOptionsLyrics.cs b/Vocaluxe/Screens/CScreenOptionsLyrics.cs
index 5614b3b7..da4a608d 100644
--- a/Vocaluxe/Screens/CScreenOptionsLyrics.cs
+++ b/Vocaluxe/Screens/CScreenOptionsLyrics.cs
@@ -62,19 +62,19 @@ namespace Vocaluxe.Screens
case Keys.Escape:
case Keys.Back:
_SaveConfig();
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
break;
case Keys.S:
CParty.SetNormalGameMode();
- CGraphics.FadeTo(EScreens.ScreenSong);
+ CGraphics.FadeTo(EScreen.Song);
break;
case Keys.Enter:
if (_Buttons[_ButtonExit].Selected)
{
_SaveConfig();
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
}
break;
@@ -97,13 +97,13 @@ namespace Vocaluxe.Screens
if (mouseEvent.RB)
{
_SaveConfig();
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
}
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{
_SaveConfig();
if (_Buttons[_ButtonExit].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
}
return true;
}
diff --git a/Vocaluxe/Screens/CScreenOptionsRecord.cs b/Vocaluxe/Screens/CScreenOptionsRecord.cs
index 69ff4e8b..bcf3e902 100644
--- a/Vocaluxe/Screens/CScreenOptionsRecord.cs
+++ b/Vocaluxe/Screens/CScreenOptionsRecord.cs
@@ -63,6 +63,11 @@ namespace Vocaluxe.Screens
private readonly CDelayTest _DelayTest = new CDelayTest(2);
+ public override EMusicType CurrentMusicType
+ {
+ get { return EMusicType.None; }
+ }
+
public override void Init()
{
base.Init();
@@ -121,19 +126,19 @@ namespace Vocaluxe.Screens
case Keys.Escape:
case Keys.Back:
_SaveMicConfig();
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
break;
case Keys.S:
CParty.SetNormalGameMode();
- CGraphics.FadeTo(EScreens.ScreenSong);
+ CGraphics.FadeTo(EScreen.Song);
break;
case Keys.Enter:
if (_Buttons[_ButtonExit].Selected)
{
_SaveMicConfig();
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
}
if (_Buttons[_ButtonDelayTest].Selected)
@@ -180,7 +185,7 @@ namespace Vocaluxe.Screens
if (mouseEvent.RB)
{
_SaveMicConfig();
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
}
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
@@ -198,7 +203,7 @@ namespace Vocaluxe.Screens
if (_Buttons[_ButtonExit].Selected)
{
_SaveMicConfig();
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
}
if (_Buttons[_ButtonDelayTest].Selected)
diff --git a/Vocaluxe/Screens/CScreenOptionsSound.cs b/Vocaluxe/Screens/CScreenOptionsSound.cs
index d03537b5..b3deb818 100644
--- a/Vocaluxe/Screens/CScreenOptionsSound.cs
+++ b/Vocaluxe/Screens/CScreenOptionsSound.cs
@@ -78,19 +78,19 @@ namespace Vocaluxe.Screens
case Keys.Escape:
case Keys.Back:
_SaveConfig();
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
break;
case Keys.S:
CParty.SetNormalGameMode();
- CGraphics.FadeTo(EScreens.ScreenSong);
+ CGraphics.FadeTo(EScreen.Song);
break;
case Keys.Enter:
if (_Buttons[_ButtonExit].Selected)
{
_SaveConfig();
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
}
break;
@@ -113,13 +113,13 @@ namespace Vocaluxe.Screens
if (mouseEvent.RB)
{
_SaveConfig();
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
}
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{
_SaveConfig();
if (_Buttons[_ButtonExit].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
}
return true;
}
diff --git a/Vocaluxe/Screens/CScreenOptionsTheme.cs b/Vocaluxe/Screens/CScreenOptionsTheme.cs
index 4dbf8b69..e21f5087 100644
--- a/Vocaluxe/Screens/CScreenOptionsTheme.cs
+++ b/Vocaluxe/Screens/CScreenOptionsTheme.cs
@@ -92,7 +92,7 @@ namespace Vocaluxe.Screens
case Keys.S:
CParty.SetNormalGameMode();
- CGraphics.FadeTo(EScreens.ScreenSong);
+ CGraphics.FadeTo(EScreen.Song);
break;
case Keys.Enter:
@@ -157,7 +157,7 @@ namespace Vocaluxe.Screens
private void _Close()
{
_SaveConfig();
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
}
private void _SaveConfig()
diff --git a/Vocaluxe/Screens/CScreenOptionsVideo.cs b/Vocaluxe/Screens/CScreenOptionsVideo.cs
index 4bfd1022..754e88e2 100644
--- a/Vocaluxe/Screens/CScreenOptionsVideo.cs
+++ b/Vocaluxe/Screens/CScreenOptionsVideo.cs
@@ -90,24 +90,24 @@ namespace Vocaluxe.Screens
case Keys.Escape:
case Keys.Back:
_SaveConfig();
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
break;
case Keys.S:
CParty.SetNormalGameMode();
- CGraphics.FadeTo(EScreens.ScreenSong);
+ CGraphics.FadeTo(EScreen.Song);
break;
case Keys.Enter:
if (_Buttons[_ButtonExit].Selected)
{
_SaveConfig();
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
}
else if (_Buttons[_ButtonScreenAdjustments].Selected)
{
_SaveConfig();
- CGraphics.FadeTo(EScreens.ScreenOptionsVideoAdjustments);
+ CGraphics.FadeTo(EScreen.OptionsVideoAdjustments);
}
break;
@@ -138,7 +138,7 @@ namespace Vocaluxe.Screens
if (mouseEvent.RB)
{
_SaveConfig();
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
}
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
@@ -149,9 +149,9 @@ namespace Vocaluxe.Screens
_OnCapabilitiesEvent();
_SaveConfig();
if (_Buttons[_ButtonExit].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptions);
+ CGraphics.FadeTo(EScreen.Options);
if (_Buttons[_ButtonScreenAdjustments].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptionsVideoAdjustments);
+ CGraphics.FadeTo(EScreen.OptionsVideoAdjustments);
}
return true;
}
diff --git a/Vocaluxe/Screens/CScreenOptionsVideoAdjustments.cs b/Vocaluxe/Screens/CScreenOptionsVideoAdjustments.cs
index 5b9c62a4..0ad53c54 100644
--- a/Vocaluxe/Screens/CScreenOptionsVideoAdjustments.cs
+++ b/Vocaluxe/Screens/CScreenOptionsVideoAdjustments.cs
@@ -51,19 +51,19 @@ namespace Vocaluxe.Screens
case Keys.Escape:
case Keys.Back:
_SaveConfig();
- CGraphics.FadeTo(EScreens.ScreenOptionsVideo);
+ CGraphics.FadeTo(EScreen.OptionsVideo);
break;
case Keys.S:
CParty.SetNormalGameMode();
- CGraphics.FadeTo(EScreens.ScreenSong);
+ CGraphics.FadeTo(EScreen.Song);
break;
case Keys.Enter:
if (_Buttons[_ButtonExit].Selected)
{
_SaveConfig();
- CGraphics.FadeTo(EScreens.ScreenOptionsVideo);
+ CGraphics.FadeTo(EScreen.OptionsVideo);
}
break;
}
@@ -78,14 +78,14 @@ namespace Vocaluxe.Screens
if (mouseEvent.RB)
{
_SaveConfig();
- CGraphics.FadeTo(EScreens.ScreenOptionsVideo);
+ CGraphics.FadeTo(EScreen.OptionsVideo);
}
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{
_SaveConfig();
if (_Buttons[_ButtonExit].Selected)
- CGraphics.FadeTo(EScreens.ScreenOptionsVideo);
+ CGraphics.FadeTo(EScreen.OptionsVideo);
}
return true;
}
diff --git a/Vocaluxe/Screens/CScreenParty.cs b/Vocaluxe/Screens/CScreenParty.cs
index 5542b3fe..3f6d801f 100644
--- a/Vocaluxe/Screens/CScreenParty.cs
+++ b/Vocaluxe/Screens/CScreenParty.cs
@@ -64,7 +64,7 @@ namespace Vocaluxe.Screens
{
case Keys.Back:
case Keys.Escape:
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
break;
case Keys.Enter:
@@ -72,7 +72,7 @@ namespace Vocaluxe.Screens
_StartPartyMode();
if (_Buttons[_ButtonExit].Selected)
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
break;
case Keys.Left:
@@ -95,14 +95,14 @@ namespace Vocaluxe.Screens
_StartPartyMode();
if (_Buttons[_ButtonExit].Selected)
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
if (_SelectSlides[_SelectSlideModes].Selected)
_UpdateSelection();
}
if (mouseEvent.RB)
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
return true;
}
@@ -194,7 +194,7 @@ namespace Vocaluxe.Screens
}
CParty.SetPartyMode(_PartyModeInfos[index].PartyModeID);
- CGraphics.FadeTo(EScreens.ScreenPartyDummy);
+ CGraphics.FadeTo(CParty.GetStartScreen());
}
}
}
\ No newline at end of file
diff --git a/Vocaluxe/Screens/CScreenProfiles.cs b/Vocaluxe/Screens/CScreenProfiles.cs
index de24e17e..383ff57b 100644
--- a/Vocaluxe/Screens/CScreenProfiles.cs
+++ b/Vocaluxe/Screens/CScreenProfiles.cs
@@ -122,12 +122,12 @@ namespace Vocaluxe.Screens
if (_EditMode == EEditMode.PlayerName)
_EditMode = EEditMode.None;
else
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
break;
case Keys.Enter:
if (_Buttons[_ButtonExit].Selected)
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
else if (_Buttons[_ButtonSave].Selected)
_SaveProfiles();
else if (_Buttons[_ButtonNew].Selected)
@@ -159,7 +159,7 @@ namespace Vocaluxe.Screens
_ProfilesChanged = true;
}
else
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
break;
case Keys.Delete:
@@ -199,7 +199,7 @@ namespace Vocaluxe.Screens
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{
if (_Buttons[_ButtonExit].Selected)
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
else if (_Buttons[_ButtonSave].Selected)
_SaveProfiles();
else if (_Buttons[_ButtonNew].Selected)
@@ -246,7 +246,7 @@ namespace Vocaluxe.Screens
}
if (mouseEvent.RB)
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
return true;
}
diff --git a/Vocaluxe/Screens/CScreenSing.cs b/Vocaluxe/Screens/CScreenSing.cs
index 6b3f8dcc..1b1eec3a 100644
--- a/Vocaluxe/Screens/CScreenSing.cs
+++ b/Vocaluxe/Screens/CScreenSing.cs
@@ -97,7 +97,7 @@ namespace Vocaluxe.Screens
private int _CurrentStream = -1;
private float _Length = -1f;
//private int _NextStream = -1;
- private const float _Volume = 100f;
+ private const int _Volume = 100;
private CVideoStream _CurrentVideo;
private EAspect _VideoAspect = EAspect.Crop;
private CTextureRef _CurrentWebcamFrameTexture;
@@ -120,6 +120,11 @@ namespace Vocaluxe.Screens
private CBackground _SlideShow;
+ public override EMusicType CurrentMusicType
+ {
+ get { return EMusicType.Game; }
+ }
+
public override void Init()
{
base.Init();
@@ -232,24 +237,6 @@ namespace Vocaluxe.Screens
}
break;
- case Keys.Add:
- case Keys.PageUp:
- if (keyEvent.ModShift)
- {
- CConfig.GameMusicVolume += 5;
- CSound.SetGlobalVolume(CConfig.GameMusicVolume);
- }
- break;
-
- case Keys.Subtract:
- case Keys.PageDown:
- if (keyEvent.ModShift)
- {
- CConfig.GameMusicVolume -= 5;
- CSound.SetGlobalVolume(CConfig.GameMusicVolume);
- }
- break;
-
case Keys.V:
if (_VideoAspect == EAspect.Zoom2)
_VideoAspect = EAspect.Crop;
@@ -422,7 +409,6 @@ namespace Vocaluxe.Screens
_UpdateNames();
_CloseSong();
- CSound.SetGlobalVolume(CConfig.GameMusicVolume);
}
public override void OnShowFinish()
@@ -484,13 +470,14 @@ namespace Vocaluxe.Screens
_CloseSong();
if (_Webcam)
CWebcam.Stop();
+ CBackgroundMusic.Disabled = false;
}
private void _CloseSong()
{
if (_CurrentStream > -1)
{
- CSound.FadeAndClose(_CurrentStream, 0f, 0.5f);
+ CSound.FadeAndClose(_CurrentStream, 0, 0.5f);
_CurrentStream = -1;
}
CRecord.Stop();
diff --git a/Vocaluxe/Screens/CScreenSong.cs b/Vocaluxe/Screens/CScreenSong.cs
index 3111ac01..75dea6b9 100644
--- a/Vocaluxe/Screens/CScreenSong.cs
+++ b/Vocaluxe/Screens/CScreenSong.cs
@@ -94,6 +94,11 @@ namespace Vocaluxe.Screens
private ISongMenu _SongMenu;
private CPlaylist _Playlist;
+ public override EMusicType CurrentMusicType
+ {
+ get { return CSongs.IsInCategory ? EMusicType.Preview : EMusicType.Background; }
+ }
+
public CScreenSong()
{
_AvailableGameModes = new List();
@@ -192,7 +197,7 @@ namespace Vocaluxe.Screens
{
case Keys.Escape:
if ((CSongs.Category < 0 || _Sso.Sorting.Tabs == EOffOn.TR_CONFIG_OFF) && !_Sso.Selection.PartyMode && !_SearchActive)
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
if (_SearchActive)
{
_SearchActive = false;
@@ -241,7 +246,7 @@ namespace Vocaluxe.Screens
_ApplyNewSearchFilter(_SearchText.Remove(_SearchText.Length - 1));
}
else if ((!CSongs.IsInCategory || _Sso.Sorting.Tabs == EOffOn.TR_CONFIG_OFF) && !_Sso.Selection.PartyMode)
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
break;
@@ -372,26 +377,6 @@ namespace Vocaluxe.Screens
break;
}
}
-
- int volumeDiff = 0;
- if (keyEvent.ModShift && (keyEvent.Key == Keys.Add || keyEvent.Key == Keys.PageUp))
- volumeDiff = 5;
- else if (keyEvent.ModShift && (keyEvent.Key == Keys.Subtract || keyEvent.Key == Keys.PageDown))
- volumeDiff = -5;
- if (volumeDiff != 0)
- {
- if (CSongs.IsInCategory)
- {
- CConfig.PreviewMusicVolume += volumeDiff;
- CSound.SetGlobalVolume(CConfig.PreviewMusicVolume);
- }
- else
- {
- CConfig.BackgroundMusicVolume += volumeDiff;
- CSound.SetGlobalVolume(CConfig.BackgroundMusicVolume);
- }
- }
-
return true;
}
@@ -447,7 +432,7 @@ namespace Vocaluxe.Screens
if (CSongs.Category < 0 && !_Sso.Selection.PartyMode && !_SearchActive)
{
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
return true;
}
}
@@ -659,8 +644,17 @@ namespace Vocaluxe.Screens
_Playlist.DragAndDropSongID = -1;
UpdateGame();
- if (CSongs.IsInCategory)
- CSound.SetGlobalVolume(CConfig.PreviewMusicVolume);
+ }
+
+ public override void OnShowFinish()
+ {
+ base.OnShowFinish();
+ CSongs.OnCategoryChanged += _OnCategoryChanged;
+ }
+
+ private static void _OnCategoryChanged()
+ {
+ CSound.SetGlobalVolume(CSongs.IsInCategory ? CConfig.PreviewMusicVolume : CConfig.BackgroundMusicVolume);
}
public override bool UpdateGame()
@@ -716,12 +710,7 @@ namespace Vocaluxe.Screens
base.OnClose();
_SongMenu.OnHide();
-
- if (CGraphics.NextScreen != EScreens.ScreenNames || CConfig.Config.Sound.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_OFF)
- {
- CBackgroundMusic.Disabled = false;
- CSound.SetGlobalVolume(CConfig.BackgroundMusicVolume);
- }
+ CSongs.OnCategoryChanged -= _OnCategoryChanged;
}
private void _HandlePartySongSelection(int songNr)
@@ -835,7 +824,7 @@ namespace Vocaluxe.Screens
CGame.ClearSongs();
if (CGame.AddVisibleSong(songNr, gm))
- CGraphics.FadeTo(EScreens.ScreenNames);
+ CGraphics.FadeTo(EScreen.Names);
}
}
@@ -849,7 +838,7 @@ namespace Vocaluxe.Screens
CGame.ClearSongs();
if (CGame.AddVisibleSong(songNr, gm))
- CGraphics.FadeTo(EScreens.ScreenNames);
+ CGraphics.FadeTo(EScreen.Names);
}
}
@@ -863,7 +852,7 @@ namespace Vocaluxe.Screens
CGame.Reset();
CGame.ClearSongs();
if (CGame.AddVisibleSong(songNr, EGameMode.TR_GAMEMODE_MEDLEY))
- CGraphics.FadeTo(EScreens.ScreenNames);
+ CGraphics.FadeTo(EScreen.Names);
}
}
@@ -890,7 +879,7 @@ namespace Vocaluxe.Screens
}
if (CGame.GetNumSongs() > 0)
- CGraphics.FadeTo(EScreens.ScreenNames);
+ CGraphics.FadeTo(EScreen.Names);
}
private void _StartRandomVisibleSongs()
@@ -914,7 +903,7 @@ namespace Vocaluxe.Screens
}
if (CGame.GetNumSongs() > 0)
- CGraphics.FadeTo(EScreens.ScreenNames);
+ CGraphics.FadeTo(EScreen.Names);
}
private void _StartRandomMedley(int numSongs, bool allSongs)
@@ -950,7 +939,7 @@ namespace Vocaluxe.Screens
}
if (CGame.GetNumSongs() > 0)
- CGraphics.FadeTo(EScreens.ScreenNames);
+ CGraphics.FadeTo(EScreen.Names);
}
private bool _SelectNextRandom(int teamNr)
diff --git a/Vocaluxe/Screens/CScreenTest.cs b/Vocaluxe/Screens/CScreenTest.cs
index accdc14c..bfdc9827 100644
--- a/Vocaluxe/Screens/CScreenTest.cs
+++ b/Vocaluxe/Screens/CScreenTest.cs
@@ -63,11 +63,11 @@ namespace Vocaluxe.Screens
{
case Keys.Escape:
case Keys.Back:
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
break;
case Keys.Enter:
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
break;
case Keys.F:
@@ -92,10 +92,10 @@ namespace Vocaluxe.Screens
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent)) {}
if (mouseEvent.LB)
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
if (mouseEvent.RB)
- CGraphics.FadeTo(EScreens.ScreenMain);
+ CGraphics.FadeTo(EScreen.Main);
return true;
}
diff --git a/VocaluxeLib/Enums.cs b/VocaluxeLib/Enums.cs
index 4c30eb58..cf22c332 100644
--- a/VocaluxeLib/Enums.cs
+++ b/VocaluxeLib/Enums.cs
@@ -360,32 +360,44 @@ namespace VocaluxeLib
Freestyle
}
- public enum EScreens
+ public enum EMusicType
{
- ScreenTest = 0,
- ScreenLoad = 1,
- ScreenMain = 2,
- ScreenSong = 3,
- ScreenOptions = 4,
- ScreenSing = 5,
- ScreenProfiles = 6,
- ScreenScore = 7,
- ScreenHighscore = 8,
+ None,
+ Background,
+ Preview,
+ Game
+ }
- ScreenOptionsGame = 9,
- ScreenOptionsSound = 10,
- ScreenOptionsRecord = 11,
- ScreenOptionsVideo = 12,
- ScreenOptionsVideoAdjustments = 13,
- ScreenOptionsLyrics = 14,
- ScreenOptionsTheme = 15,
+ ///
+ /// Base screens
+ ///
+ public enum EScreen
+ {
+ Unknown = -1,
- ScreenNames = 16,
- ScreenCredits = 17,
- ScreenParty = 18,
- ScreenPartyDummy = 19,
+ Test,
+ Load,
+ Main,
+ Song,
+ Options,
+ Sing,
+ Profiles,
+ Score,
+ Highscore,
- ScreenNull = -1
+ OptionsGame,
+ OptionsSound,
+ OptionsRecord,
+ OptionsVideo,
+ OptionsVideoAdjustments,
+ OptionsLyrics,
+ OptionsTheme,
+
+ Names,
+ Credits,
+ Party,
+
+ CountEntry //Leave this as last entry and never use it!
}
public enum EPopupScreens
diff --git a/VocaluxeLib/IBasic.cs b/VocaluxeLib/IBasic.cs
index 765086c6..d4e367fc 100644
--- a/VocaluxeLib/IBasic.cs
+++ b/VocaluxeLib/IBasic.cs
@@ -32,7 +32,7 @@ namespace VocaluxeLib
EOffOn GetSaveModifiedSongs();
void SetBackgroundMusicVolume(int newVolume);
- int GetBackgroundMusicVolume();
+ int GetMusicVolume(EMusicType type);
EBackgroundMusicOffOn GetBackgroundMusicStatus();
@@ -147,11 +147,14 @@ namespace VocaluxeLib
{
void ReloadTheme();
void SaveTheme();
- void FadeTo(EScreens nextScreen);
+ void FadeTo(EScreen nextScreen);
+ void FadeTo(IMenu nextScreen);
float GetGlobalAlpha();
- EScreens GetNextScreen();
+ IMenu GetNextScreen();
+ EScreen GetNextScreenType();
+ IMenu GetScreen(EScreen screen);
}
public interface ILog
@@ -264,14 +267,15 @@ namespace VocaluxeLib
int Load(string soundFile, bool loop = false, bool prescan = false);
void SetPosition(int soundStream, float newPosition);
void Play(int soundStream);
- void Fade(int soundStream, float targetVolume, float duration, EStreamAction afterFadeAction = EStreamAction.Nothing);
+ void Fade(int soundStream, int targetVolume, float duration, EStreamAction afterFadeAction = EStreamAction.Nothing);
void Close(int soundStream);
bool IsFinished(int soundStream);
float GetPosition(int soundStream);
float GetLength(int soundStream);
- void SetStreamVolume(int soundStream, float volume);
+ void SetStreamVolume(int soundStream, int volume);
+ void SetGlobalVolume(int volume);
}
public interface ICover
diff --git a/VocaluxeLib/Menu/CButton.cs b/VocaluxeLib/Menu/CButton.cs
index 4fa4d4d8..8e0ff6b9 100644
--- a/VocaluxeLib/Menu/CButton.cs
+++ b/VocaluxeLib/Menu/CButton.cs
@@ -86,7 +86,7 @@ namespace VocaluxeLib.Menu
public bool Selectable
{
- get { return _Selectable; }
+ get { return _Selectable && Visible; }
set
{
_Selectable = value;
diff --git a/VocaluxeLib/Menu/CMenu.cs b/VocaluxeLib/Menu/CMenu.cs
index 8e89158d..9ce8c465 100644
--- a/VocaluxeLib/Menu/CMenu.cs
+++ b/VocaluxeLib/Menu/CMenu.cs
@@ -112,11 +112,6 @@ namespace VocaluxeLib.Menu
_ThemeScreenSettings = null;
}
- protected static void _FadeTo(EScreens nextScreen)
- {
- CBase.Graphics.FadeTo(nextScreen);
- }
-
#region ThemeHandler
protected override void _ClearElements()
{
@@ -569,6 +564,11 @@ namespace VocaluxeLib.Menu
get { return CBase.Settings.GetRenderRect(); }
}
+ public virtual EMusicType CurrentMusicType
+ {
+ get { return EMusicType.Background; }
+ }
+
protected void _ResumeBG()
{
foreach (CBackground bg in _Backgrounds)
diff --git a/VocaluxeLib/Menu/CMenuParty.cs b/VocaluxeLib/Menu/CMenuParty.cs
index 7113f466..4a5aeae6 100644
--- a/VocaluxeLib/Menu/CMenuParty.cs
+++ b/VocaluxeLib/Menu/CMenuParty.cs
@@ -29,7 +29,5 @@ namespace VocaluxeLib.Menu
_PartyMode = partyMode;
PartyModeID = partyMode.ID;
}
-
- public virtual void DataToScreen(Object data) {}
}
}
\ No newline at end of file
diff --git a/VocaluxeLib/Menu/CMenuPartyNameSelection.cs b/VocaluxeLib/Menu/CMenuPartyNameSelection.cs
index 2549d941..db867fb3 100644
--- a/VocaluxeLib/Menu/CMenuPartyNameSelection.cs
+++ b/VocaluxeLib/Menu/CMenuPartyNameSelection.cs
@@ -22,12 +22,6 @@ using VocaluxeLib.Profile;
namespace VocaluxeLib.Menu
{
- public struct SPartyNameOptions
- {
- public int[] NumPlayerTeams;
- public List[] TeamList;
- }
-
public abstract class CMenuPartyNameSelection : CMenuParty
{
private bool _Teams;
@@ -63,7 +57,7 @@ namespace VocaluxeLib.Menu
private const string _SelectSlidePlayer = "SelectSlidePlayer";
private const string _NameSelection = "NameSelection";
- private List[] _TeamList;
+ protected List[] _TeamList;
public override void Init()
{
@@ -558,12 +552,6 @@ namespace VocaluxeLib.Menu
public abstract void Back();
public abstract void Next();
- public SPartyNameOptions GetData()
- {
- SPartyNameOptions option = new SPartyNameOptions {NumPlayerTeams = _NumPlayerTeams, TeamList = _TeamList};
- return option;
- }
-
public void IncreaseTeamNum()
{
if (!_AllowChangeTeamNum)
diff --git a/VocaluxeLib/Menu/CNameSelection.cs b/VocaluxeLib/Menu/CNameSelection.cs
index 3b236e27..dd2c2e7b 100644
--- a/VocaluxeLib/Menu/CNameSelection.cs
+++ b/VocaluxeLib/Menu/CNameSelection.cs
@@ -109,6 +109,12 @@ namespace VocaluxeLib.Menu
private CStatic _PlayerSelector;
+ private SRectF _Rect;
+ public override SRectF Rect
+ {
+ get { return _Rect; }
+ }
+
public bool Selectable
{
get { return Visible; }
@@ -140,8 +146,10 @@ namespace VocaluxeLib.Menu
{
_PrepareTiles();
- _PlayerSelector = new CStatic(_PartyModeID, _TextureTileSelected, new SColorF(), new SRectF(0, 0, _Theme.Tiles.W + 6, _Theme.Tiles.H + 6, Rect.Z - 0.5f));
- _PlayerSelector.Visible = false;
+ _PlayerSelector = new CStatic(_PartyModeID, _TextureTileSelected, new SColorF(), new SRectF(0, 0, _Theme.Tiles.W + 6, _Theme.Tiles.H + 6, Rect.Z - 0.5f))
+ {
+ Visible = false
+ };
_UpdateVisibleProfiles();
@@ -487,15 +495,19 @@ namespace VocaluxeLib.Menu
{
for (int j = 0; j < _Theme.Tiles.NumW; j++)
{
- var rect = new SRectF(Rect.X + j * (_Theme.Tiles.W + _Theme.Tiles.SpaceW), Rect.Y + i * (_Theme.Tiles.H + _Theme.Tiles.SpaceH), _Theme.Tiles.W, _Theme.Tiles.H,
- Rect.Z);
+ var rect = new SRectF(MaxRect.X + j * (_Theme.Tiles.W + _Theme.Tiles.SpaceW), MaxRect.Y + i * (_Theme.Tiles.H + _Theme.Tiles.SpaceH),
+ _Theme.Tiles.W, _Theme.Tiles.H, MaxRect.Z);
var tileStatic = new CStatic(_PartyModeID, _TextureEmptyTile, _ColorEmptyTile, rect) {Aspect = EAspect.Crop};
var tileText = new CText(rect.X + rect.W / 2, rect.Y + rect.H + _Theme.Tiles.Name.Space, rect.Z, _Theme.Tiles.Name.Height, rect.W, EAlignment.Center,
- _Theme.Tiles.Name.Style,
- _Theme.Tiles.Name.Font, _ColorNameTile, "");
+ _Theme.Tiles.Name.Style, _Theme.Tiles.Name.Font, _ColorNameTile, "");
_Tiles.Add(new CTile(tileStatic, tileText, -1));
}
}
+ _Rect.X = MaxRect.X;
+ _Rect.Y = MaxRect.Y;
+ _Rect.Right = _Tiles[_Tiles.Count - 1].Avatar.Rect.Right;
+ _Rect.Bottom = _Tiles[_Tiles.Count - 1].Name.Rect.Bottom;
+ _Rect.Z = MaxRect.Z;
}
private void _UpdateVisibleProfiles()
diff --git a/VocaluxeLib/Menu/CObjectInteractions.cs b/VocaluxeLib/Menu/CObjectInteractions.cs
index ee91fa59..f46a2d00 100644
--- a/VocaluxeLib/Menu/CObjectInteractions.cs
+++ b/VocaluxeLib/Menu/CObjectInteractions.cs
@@ -600,13 +600,13 @@ namespace VocaluxeLib.Menu
{
case EDirection.Up:
case EDirection.Down:
- if (!other.X.IsInRange(current.X, current.Right) && !other.Right.IsInRange(current.X, current.Right))
+ if (!other.X.IsInRange(current.X, current.Right) && !other.Right.IsInRange(current.X, current.Right) && !current.X.IsInRange(other.X, other.Right))
return float.MaxValue;
break;
case EDirection.Left:
case EDirection.Right:
- if (!other.Y.IsInRange(current.Y, current.Bottom) && !other.Bottom.IsInRange(current.Y, current.Bottom))
+ if (!other.Y.IsInRange(current.Y, current.Bottom) && !other.Bottom.IsInRange(current.Y, current.Bottom) && !current.Y.IsInRange(other.Y, other.Bottom))
return float.MaxValue;
break;
}
diff --git a/VocaluxeLib/Menu/CPlaylist.cs b/VocaluxeLib/Menu/CPlaylist.cs
index 933a00c5..6e019cb3 100644
--- a/VocaluxeLib/Menu/CPlaylist.cs
+++ b/VocaluxeLib/Menu/CPlaylist.cs
@@ -1112,7 +1112,7 @@ namespace VocaluxeLib.Menu
for (int i = 0; i < CBase.Playlist.GetSongCount(ActivePlaylistID); i++)
CBase.Game.AddSong(CBase.Playlist.GetSong(ActivePlaylistID, i).SongID, CBase.Playlist.GetSong(ActivePlaylistID, i).GameMode);
if (CBase.Game.GetNumSongs() > 0)
- CBase.Graphics.FadeTo(EScreens.ScreenNames);
+ CBase.Graphics.FadeTo(EScreen.Names);
}
}
@@ -1124,7 +1124,7 @@ namespace VocaluxeLib.Menu
CBase.Game.AddSong(CBase.Playlist.GetSong(ActivePlaylistID, selected).SongID, CBase.Playlist.GetSong(ActivePlaylistID, selected).GameMode);
if (CBase.Game.GetNumSongs() > 0)
- CBase.Graphics.FadeTo(EScreens.ScreenNames);
+ CBase.Graphics.FadeTo(EScreen.Names);
}
private void _Update()
diff --git a/VocaluxeLib/Menu/IMenu.cs b/VocaluxeLib/Menu/IMenu.cs
index 8c8f0925..2f55edb3 100644
--- a/VocaluxeLib/Menu/IMenu.cs
+++ b/VocaluxeLib/Menu/IMenu.cs
@@ -42,6 +42,10 @@ namespace VocaluxeLib.Menu
void OnClose();
SRectF ScreenArea { get; }
+ ///
+ /// Type of currently playing music
+ ///
+ EMusicType CurrentMusicType { get; }
void NextElement();
void PrevElement();
diff --git a/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs b/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs
index 27a513c5..9ad43614 100644
--- a/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs
+++ b/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs
@@ -243,7 +243,7 @@ namespace VocaluxeLib.Menu.SongMenu
public virtual void OnHide()
{
- if (CBase.Graphics.GetNextScreen() != EScreens.ScreenNames || CBase.Config.GetBackgroundMusicStatus() == EBackgroundMusicOffOn.TR_CONFIG_OFF)
+ if (CBase.Graphics.GetNextScreenType() != EScreen.Names || CBase.Config.GetBackgroundMusicStatus() == EBackgroundMusicOffOn.TR_CONFIG_OFF)
_ResetPreview();
}
diff --git a/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs b/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs
index 5ee3587d..eabca5e4 100644
--- a/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs
+++ b/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs
@@ -454,7 +454,7 @@ namespace VocaluxeLib.Menu.SongMenu
}
if (CBase.Songs.GetTabs() == EOffOn.TR_CONFIG_OFF && !songOptions.Selection.PartyMode)
{
- CBase.Graphics.FadeTo(EScreens.ScreenMain);
+ CBase.Graphics.FadeTo(EScreen.Main);
return true;
}
}
diff --git a/VocaluxeLib/PartyModes/CPartyMode.cs b/VocaluxeLib/PartyModes/CPartyMode.cs
index 1a8db3fe..139dce23 100644
--- a/VocaluxeLib/PartyModes/CPartyMode.cs
+++ b/VocaluxeLib/PartyModes/CPartyMode.cs
@@ -15,7 +15,6 @@
// along with Vocaluxe. If not, see .
#endregion
-using System;
using System.Collections.Generic;
using VocaluxeLib.Menu;
@@ -35,10 +34,7 @@ namespace VocaluxeLib.PartyModes
}
#region Implementation
- public virtual bool Init()
- {
- return false;
- }
+ public abstract bool Init();
public void LoadTheme()
{
@@ -74,25 +70,9 @@ namespace VocaluxeLib.PartyModes
entry.Value.SaveTheme();
}
- public virtual void DataFromScreen(string screenName, Object data) {}
-
public virtual void UpdateGame() {}
- public virtual CMenuParty GetNextPartyScreen(out EScreens alternativeScreen)
- {
- alternativeScreen = EScreens.ScreenMain;
- return null;
- }
-
- public virtual EScreens GetStartScreen()
- {
- return EScreens.ScreenSong;
- }
-
- public virtual EScreens GetMainScreen()
- {
- return EScreens.ScreenSong;
- }
+ public abstract IMenu GetStartScreen();
public virtual SScreenSongOptions GetScreenSongOptions()
{
@@ -157,21 +137,21 @@ namespace VocaluxeLib.PartyModes
_ScreenSongOptions.Selection.NumJokers[teamNr]--;
}
- public virtual void SongSelected(int songID) {}
+ public abstract void SongSelected(int songID);
public virtual void FinishedSinging()
{
- CBase.Graphics.FadeTo(EScreens.ScreenScore);
+ CBase.Graphics.FadeTo(EScreen.Score);
}
public virtual void LeavingScore()
{
- CBase.Graphics.FadeTo(EScreens.ScreenHighscore);
+ CBase.Graphics.FadeTo(EScreen.Highscore);
}
public virtual void LeavingHighscore()
{
- CBase.Graphics.FadeTo(EScreens.ScreenSong);
+ CBase.Graphics.FadeTo(EScreen.Song);
}
#endregion Implementation
}
diff --git a/VocaluxeLib/PartyModes/CPartyModeNone.cs b/VocaluxeLib/PartyModes/CPartyModeNone.cs
index db862d2a..28a6082c 100644
--- a/VocaluxeLib/PartyModes/CPartyModeNone.cs
+++ b/VocaluxeLib/PartyModes/CPartyModeNone.cs
@@ -16,6 +16,7 @@
#endregion
using System;
+using VocaluxeLib.Menu;
namespace VocaluxeLib.PartyModes
{
@@ -37,6 +38,16 @@ namespace VocaluxeLib.PartyModes
_ScreenSongOptions.Sorting.DuetOptions = EDuetOptions.All;
}
+ public override bool Init()
+ {
+ return true;
+ }
+
+ public override IMenu GetStartScreen()
+ {
+ return CBase.Graphics.GetScreen(EScreen.Names);
+ }
+
public override SScreenSongOptions GetScreenSongOptions()
{
_ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting();
@@ -55,5 +66,10 @@ namespace VocaluxeLib.PartyModes
_ScreenSongOptions.Sorting.SearchString = searchString;
_ScreenSongOptions.Sorting.SearchActive = visible;
}
+
+ public override void SongSelected(int songID)
+ {
+ CBase.Graphics.FadeTo(EScreen.Sing);
+ }
}
}
\ No newline at end of file
diff --git a/VocaluxeLib/PartyModes/CScreenPartyDummy.cs b/VocaluxeLib/PartyModes/CScreenPartyDummy.cs
deleted file mode 100644
index 9222c178..00000000
--- a/VocaluxeLib/PartyModes/CScreenPartyDummy.cs
+++ /dev/null
@@ -1,87 +0,0 @@
-#region license
-// This file is part of Vocaluxe.
-//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
-#endregion
-
-using System.Windows.Forms;
-using VocaluxeLib.Menu;
-
-namespace VocaluxeLib.PartyModes
-{
- public class CScreenPartyDummy : CMenuParty
- {
- // Version number for theme files. Increment it, if you've changed something on the theme files!
- protected override int _ScreenVersion
- {
- get { return 1; }
- }
- private CText _Warning;
-
- public override void LoadTheme(string xmlPath)
- {
- _Warning = GetNewText();
- _Warning.Font.Height = 100f;
- _Warning.X = 150;
- _Warning.Y = 300;
- _Warning.Color = new SColorF(1f, 0f, 0f, 1f);
- _Warning.SelColor = new SColorF(1f, 0f, 0f, 1f);
- _Warning.Text = "SOMETHING WENT WRONG!";
- _AddText(_Warning);
- }
-
- public override void ReloadTheme(string xmlPath) {}
-
- public override void ReloadSkin() {}
-
- public override void SaveTheme() {}
-
- public override void UnloadSkin() {}
-
- public override bool HandleInput(SKeyEvent keyEvent)
- {
- base.HandleInput(keyEvent);
-
- if (keyEvent.KeyPressed) {}
- else
- {
- switch (keyEvent.Key)
- {
- case Keys.Back:
- case Keys.Escape:
- _FadeTo(EScreens.ScreenParty);
- break;
- }
- }
- return true;
- }
-
- public override bool HandleMouse(SMouseEvent mouseEvent)
- {
- base.HandleMouse(mouseEvent);
-
- if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent)) {}
-
- if (mouseEvent.RB)
- _FadeTo(EScreens.ScreenParty);
-
- return true;
- }
-
- public override bool UpdateGame()
- {
- return true;
- }
- }
-}
\ No newline at end of file
diff --git a/VocaluxeLib/PartyModes/IPartyMode.cs b/VocaluxeLib/PartyModes/IPartyMode.cs
index 23560437..d432e368 100644
--- a/VocaluxeLib/PartyModes/IPartyMode.cs
+++ b/VocaluxeLib/PartyModes/IPartyMode.cs
@@ -15,7 +15,6 @@
// along with Vocaluxe. If not, see .
#endregion
-using System;
using VocaluxeLib.Menu;
namespace VocaluxeLib.PartyModes
@@ -91,13 +90,10 @@ namespace VocaluxeLib.PartyModes
void AddScreen(CMenuParty screen, string screenName);
void SaveScreens();
- void DataFromScreen(string screenName, Object data);
void UpdateGame();
- CMenuParty GetNextPartyScreen(out EScreens alternativeScreen);
- EScreens GetStartScreen();
- EScreens GetMainScreen();
+ IMenu GetStartScreen();
SScreenSongOptions GetScreenSongOptions();
void OnSongChange(int songIndex, ref SScreenSongOptions screenSongOptions);
diff --git a/VocaluxeLib/Structs.cs b/VocaluxeLib/Structs.cs
index 67b85d9a..d59163a3 100644
--- a/VocaluxeLib/Structs.cs
+++ b/VocaluxeLib/Structs.cs
@@ -189,10 +189,20 @@ namespace VocaluxeLib
public float Right
{
get { return X + W; }
+ set
+ {
+ W = value - X;
+ Debug.Assert(W >= 0);
+ }
}
public float Bottom
{
get { return Y + H; }
+ set
+ {
+ H = value - Y;
+ Debug.Assert(H >= 0);
+ }
}
public Size SizeI
{
diff --git a/VocaluxeLib/Utils/Player/CSongPlayer.cs b/VocaluxeLib/Utils/Player/CSongPlayer.cs
index 92a848a7..0b22f47b 100644
--- a/VocaluxeLib/Utils/Player/CSongPlayer.cs
+++ b/VocaluxeLib/Utils/Player/CSongPlayer.cs
@@ -133,14 +133,7 @@ namespace VocaluxeLib.Utils.Player
Load(file, position, autoplay);
}
- public new void Play()
- {
- CBase.Sound.SetPosition(_StreamID, _StartPosition);
- CBase.Video.Skip(_Video, _StartPosition, _Song.VideoGap);
- TogglePause();
- }
-
- public new void Stop()
+ public override void Stop()
{
base.Stop();
@@ -150,7 +143,7 @@ namespace VocaluxeLib.Utils.Player
CBase.Video.Close(ref _Video);
}
- public new void TogglePause()
+ public override void TogglePause()
{
if (IsPlaying && _Video != null)
{
diff --git a/VocaluxeLib/Utils/Player/CSoundPlayer.cs b/VocaluxeLib/Utils/Player/CSoundPlayer.cs
index 078ae91b..b132643b 100644
--- a/VocaluxeLib/Utils/Player/CSoundPlayer.cs
+++ b/VocaluxeLib/Utils/Player/CSoundPlayer.cs
@@ -15,21 +15,16 @@
// along with Vocaluxe. If not, see .
#endregion
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
namespace VocaluxeLib.Utils.Player
{
public class CSoundPlayer
{
protected int _StreamID = -1;
- protected float _Volume;
+ protected int _Volume = 100;
protected float _StartPosition;
- protected float _FadeTime = CBase.Settings.GetSoundPlayerFadeTime();
+ protected readonly float _FadeTime = CBase.Settings.GetSoundPlayerFadeTime();
- public float Volume
+ public int Volume
{
set
{
@@ -71,7 +66,7 @@ namespace VocaluxeLib.Utils.Player
public bool IsFinished
{
- get { return RepeatSong ? false : CBase.Sound.IsFinished(_StreamID); }
+ get { return !RepeatSong && CBase.Sound.IsFinished(_StreamID); }
}
public CSoundPlayer(bool loop = false)
@@ -107,19 +102,19 @@ namespace VocaluxeLib.Utils.Player
return;
CBase.Sound.SetPosition(_StreamID, _StartPosition);
- CBase.Sound.SetStreamVolume(_StreamID, 0f);
+ CBase.Sound.SetStreamVolume(_StreamID, 0);
CBase.Sound.Fade(_StreamID, Volume, _FadeTime);
CBase.Sound.Play(_StreamID);
IsPlaying = true;
}
- public void TogglePause()
+ public virtual void TogglePause()
{
if (_StreamID == -1)
return;
if (IsPlaying)
- CBase.Sound.Fade(_StreamID, 0f, _FadeTime, EStreamAction.Pause);
+ CBase.Sound.Fade(_StreamID, 0, _FadeTime, EStreamAction.Pause);
else
{
CBase.Sound.Fade(_StreamID, Volume, _FadeTime);
@@ -129,12 +124,12 @@ namespace VocaluxeLib.Utils.Player
IsPlaying = !IsPlaying;
}
- public void Stop()
+ public virtual void Stop()
{
if (_StreamID == -1 || !IsPlaying)
return;
- CBase.Sound.Fade(_StreamID, 0f, _FadeTime, EStreamAction.Close);
+ CBase.Sound.Fade(_StreamID, 0, _FadeTime, EStreamAction.Close);
_StreamID = -1;
IsPlaying = false;
@@ -145,9 +140,8 @@ namespace VocaluxeLib.Utils.Player
if (_StreamID == -1 || !IsPlaying)
return;
- float timeToPlay;
float len = CBase.Sound.GetLength(_StreamID);
- timeToPlay = (len > 0f) ? len - CBase.Sound.GetPosition(_StreamID) : _FadeTime + 1f;
+ float timeToPlay = (len > 0f) ? len - CBase.Sound.GetPosition(_StreamID) : _FadeTime + 1f;
bool finished = CBase.Sound.IsFinished(_StreamID);
if (timeToPlay <= _FadeTime || finished)
diff --git a/VocaluxeLib/VocaluxeLib.csproj b/VocaluxeLib/VocaluxeLib.csproj
index 7cc7248d..b452b5e5 100644
--- a/VocaluxeLib/VocaluxeLib.csproj
+++ b/VocaluxeLib/VocaluxeLib.csproj
@@ -139,7 +139,6 @@
-
diff --git a/VocaluxeLib/Xml/CTypeExtensions.cs b/VocaluxeLib/Xml/CTypeExtensions.cs
index 39c47fe5..9ae85ad9 100644
--- a/VocaluxeLib/Xml/CTypeExtensions.cs
+++ b/VocaluxeLib/Xml/CTypeExtensions.cs
@@ -44,7 +44,8 @@ namespace VocaluxeLib.Xml
/// Attribute for float fields to enforce normalized (0<=x<=1) values
///
[AttributeUsage(AttributeTargets.Field)]
- public class XmlNormalizedAttribute : XmlRangedAttribute {
+ public class XmlNormalizedAttribute : XmlRangedAttribute
+ {
public XmlNormalizedAttribute() : base(0, 1) {}
}