Fix blank screen issue

Also fix some other bugs and improvements (easier party modes, volume fixes, new fields for screens to control volume and popups)
This commit is contained in:
Flamefire committed 2014-11-27 21:47:02 +01:00
1 parent 36b81e8c1f
commit 26484ad137
62 files changed
+1160 -1964

No files matched your search

@@ -28,6 +28,16 @@ namespace VocaluxeLib.PartyModes.Challenge
public readonly List<CCombination> Rounds; public readonly List<CCombination> 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) public CChallengeRounds(int numRounds, int numPlayer, int numPlayerAtOnce)
{ {
Rounds = new List<CCombination>(); Rounds = new List<CCombination>();
@@ -24,33 +24,6 @@ using VocaluxeLib.Menu;
namespace VocaluxeLib.PartyModes.Challenge 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<int> ProfileIDs;
}
public struct SDataToScreenMain
{
public int CurrentRoundNr;
public int NumPlayerAtOnce;
public List<CCombination> Combs;
public int[,] Results;
public List<CResultTableRow> ResultTable;
public List<int> ProfileIDs;
}
public class CResultTableRow : IComparable public class CResultTableRow : IComparable
{ {
public int Position; public int Position;
@@ -78,39 +51,21 @@ namespace VocaluxeLib.PartyModes.Challenge
throw new ArgumentException("object is not a ResultTableRow"); throw new ArgumentException("object is not a ResultTableRow");
} }
} }
#endregion ToScreen
#region FromScreen public abstract class CPartyScreenChallenge : CMenuParty
public struct SDataFromScreen
{ {
public SFromScreenConfig ScreenConfig; protected new CPartyModeChallenge _PartyMode;
public SFromScreenNames ScreenNames;
public SFromScreenMain ScreenMain; public override void Init()
{
base.Init();
_PartyMode = (CPartyModeChallenge)base._PartyMode;
}
} }
public struct SFromScreenConfig // ReSharper disable ClassNeverInstantiated.Global
{
public int NumPlayer;
public int NumPlayerAtOnce;
public int NumRounds;
}
public struct SFromScreenNames
{
public bool FadeBack;
public List<int> ProfileIDs;
}
public struct SFromScreenMain
{
public bool FadeToSongSelection;
public bool FadeToNameSelection;
}
#endregion FromScreen
#endregion Communication
public sealed class CPartyModeChallenge : CPartyMode public sealed class CPartyModeChallenge : CPartyMode
// ReSharper restore ClassNeverInstantiated.Global
{ {
private const int _MaxPlayer = 12; private const int _MaxPlayer = 12;
private const int _MinPlayer = 1; private const int _MinPlayer = 1;
@@ -120,14 +75,13 @@ namespace VocaluxeLib.PartyModes.Challenge
private enum EStage private enum EStage
{ {
NotStarted,
Config, Config,
Names, Names,
Main, Main,
Singing Singing
} }
private struct SData public struct SData
{ {
public int NumPlayer; public int NumPlayer;
public int NumPlayerAtOnce; public int NumPlayerAtOnce;
@@ -151,11 +105,7 @@ namespace VocaluxeLib.PartyModes.Challenge
public int Won; public int Won;
} }
private SDataToScreenConfig _ToScreenConfig; public SData GameData;
private SDataToScreenNames _ToScreenNames;
private SDataToScreenMain _ToScreenMain;
private SData _GameData;
private EStage _Stage; private EStage _Stage;
public CPartyModeChallenge(int id, string folder) public CPartyModeChallenge(int id, string folder)
@@ -171,18 +121,12 @@ namespace VocaluxeLib.PartyModes.Challenge
_ScreenSongOptions.Sorting.SearchActive = false; _ScreenSongOptions.Sorting.SearchActive = false;
_ScreenSongOptions.Sorting.DuetOptions = EDuetOptions.NoDuets; _ScreenSongOptions.Sorting.DuetOptions = EDuetOptions.NoDuets;
_Stage = EStage.NotStarted; GameData = new SData {NumPlayer = 4, NumPlayerAtOnce = 2, NumRounds = 12, CurrentRoundNr = 1, ProfileIDs = new List<int>(), CatSongIndices = null, Results = null};
_ToScreenConfig = new SDataToScreenConfig();
_ToScreenNames = new SDataToScreenNames();
_ToScreenMain = new SDataToScreenMain();
_GameData = new SData {NumPlayer = 4, NumPlayerAtOnce = 2, NumRounds = 2, CurrentRoundNr = 1, ProfileIDs = new List<int>(), CatSongIndices = null, Results = null};
} }
public override bool Init() public override bool Init()
{ {
_Stage = EStage.NotStarted; _Stage = EStage.Config;
_ScreenSongOptions.Sorting.IgnoreArticles = CBase.Config.GetIgnoreArticles(); _ScreenSongOptions.Sorting.IgnoreArticles = CBase.Config.GetIgnoreArticles();
_ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting(); _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) if (CBase.Config.GetTabs() == EOffOn.TR_CONFIG_ON && _ScreenSongOptions.Sorting.SongSorting != ESongSorting.TR_CONFIG_NONE)
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_ON; _ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_ON;
_ToScreenMain.ResultTable = new List<CResultTableRow>(); GameData.ResultTable = new List<CResultTableRow>();
_GameData.ResultTable = new List<CResultTableRow>();
return true; 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() public override void UpdateGame()
{ {
/* /*
@@ -277,78 +150,78 @@ namespace VocaluxeLib.PartyModes.Challenge
_ScreenSongOptions.Selection.RandomOnly = false;*/ _ScreenSongOptions.Selection.RandomOnly = false;*/
} }
public override CMenuParty GetNextPartyScreen(out EScreens alternativeScreen) private IMenu _GetNextScreen()
{ {
CMenuParty screen = null;
alternativeScreen = EScreens.ScreenSong;
switch (_Stage) 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: case EStage.Config:
_Screens.TryGetValue("CPartyScreenChallengeNames", out screen); return _Screens["CPartyScreenChallengeConfig"];
if (screen != null) case EStage.Names:
{ return _Screens["CPartyScreenChallengeNames"];
_ToScreenNames.NumPlayer = _GameData.NumPlayer; case EStage.Main:
_ToScreenNames.ProfileIDs = _GameData.ProfileIDs; return _Screens["CPartyScreenChallengeMain"];
screen.DataToScreen(_ToScreenNames); 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; break;
case EStage.Names: case EStage.Names:
_Screens.TryGetValue("CPartyScreenChallengeMain", out screen); _Stage = EStage.Main;
if (screen != null) CBase.Songs.ResetSongSung();
{ GameData.ResultTable = new List<CResultTableRow>();
CBase.Songs.ResetSongSung(); GameData.Rounds = new CChallengeRounds(GameData.NumRounds, GameData.NumPlayer, GameData.NumPlayerAtOnce);
_ToScreenMain.ResultTable = new List<CResultTableRow>(); GameData.CurrentRoundNr = 1;
_GameData.ResultTable = new List<CResultTableRow>();
_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);
}
break; break;
case EStage.Main: case EStage.Main:
//nothing to do _Stage = EStage.Singing;
_StartNextRound();
break; break;
case EStage.Singing: case EStage.Singing:
_Screens.TryGetValue("CPartyScreenChallengeMain", out screen); _Stage = EStage.Main;
if (screen != null) _UpdateScores();
{
_UpdateScores();
_ToScreenMain.CurrentRoundNr = _GameData.CurrentRoundNr;
_ToScreenMain.Combs = _GameData.Rounds.Rounds;
_ToScreenMain.Results = _GameData.Results;
screen.DataToScreen(_ToScreenMain);
}
break; break;
default:
throw new ArgumentException("Invalid stage: " + _Stage);
} }
_FadeToScreen();
return screen;
} }
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() public override SScreenSongOptions GetScreenSongOptions()
@@ -371,10 +244,10 @@ namespace VocaluxeLib.PartyModes.Challenge
_ScreenSongOptions.Selection.SelectNextRandomSong = false; _ScreenSongOptions.Selection.SelectNextRandomSong = false;
_CreateCatSongIndices(); _CreateCatSongIndices();
if (_GameData.CatSongIndices != null) if (GameData.CatSongIndices != null)
{ {
if (_GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] == -1) if (GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] == -1)
_GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] = songIndex; GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] = songIndex;
} }
} }
@@ -385,15 +258,15 @@ namespace VocaluxeLib.PartyModes.Challenge
public override void OnCategoryChange(int categoryIndex, ref SScreenSongOptions screenSongOptions) public override void OnCategoryChange(int categoryIndex, ref SScreenSongOptions screenSongOptions)
// ReSharper restore RedundantAssignment // 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; _ScreenSongOptions.Selection.SelectNextRandomSong = true;
else 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; _ScreenSongOptions.Selection.SelectNextRandomSong = true;
if (categoryIndex == -1) if (categoryIndex == -1)
@@ -456,34 +329,34 @@ namespace VocaluxeLib.PartyModes.Challenge
CBase.Game.Reset(); CBase.Game.Reset();
CBase.Game.ClearSongs(); CBase.Game.ClearSongs();
CBase.Game.AddSong(songID, gm); CBase.Game.AddSong(songID, gm);
CBase.Game.SetNumPlayer(_GameData.NumPlayerAtOnce); CBase.Game.SetNumPlayer(GameData.NumPlayerAtOnce);
SPlayer[] players = CBase.Game.GetPlayers(); SPlayer[] players = CBase.Game.GetPlayers();
if (players == null) if (players == null)
return; return;
if (players.Length < _GameData.NumPlayerAtOnce) if (players.Length < GameData.NumPlayerAtOnce)
return; 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 //try to fill with the right data
if (c != null) if (c != null)
players[i].ProfileID = _GameData.ProfileIDs[c.Player[i]]; players[i].ProfileID = GameData.ProfileIDs[c.Player[i]];
else else
players[i].ProfileID = -1; players[i].ProfileID = -1;
} }
CBase.Graphics.FadeTo(EScreens.ScreenSing); CBase.Graphics.FadeTo(EScreen.Sing);
} }
public override void LeavingHighscore() public override void LeavingHighscore()
{ {
CBase.Songs.AddPartySongSung(CBase.Game.GetSong(0).ID); CBase.Songs.AddPartySongSung(CBase.Game.GetSong(0).ID);
_GameData.CurrentRoundNr++; GameData.CurrentRoundNr++;
CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy); Next();
} }
private void _StartNextRound() private void _StartNextRound()
@@ -492,13 +365,13 @@ namespace VocaluxeLib.PartyModes.Challenge
_ScreenSongOptions.Selection.CategoryChangeAllowed = _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON; _ScreenSongOptions.Selection.CategoryChangeAllowed = _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON;
_SetNumJokers(); _SetNumJokers();
_SetTeamNames(); _SetTeamNames();
_GameData.CatSongIndices = null; GameData.CatSongIndices = null;
CBase.Graphics.FadeTo(EScreens.ScreenSong); CBase.Graphics.FadeTo(EScreen.Song);
} }
private void _SetNumJokers() private void _SetNumJokers()
{ {
switch (_GameData.NumPlayerAtOnce) switch (GameData.NumPlayerAtOnce)
{ {
case 1: case 1:
_ScreenSongOptions.Selection.NumJokers = new int[] {10}; _ScreenSongOptions.Selection.NumJokers = new int[] {10};
@@ -531,19 +404,19 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _SetTeamNames() 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"}; _ScreenSongOptions.Selection.TeamNames = new string[] {"foo", "bar"};
return; return;
} }
_ScreenSongOptions.Selection.TeamNames = new string[_GameData.NumPlayerAtOnce]; _ScreenSongOptions.Selection.TeamNames = new string[GameData.NumPlayerAtOnce];
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++)
{ {
if (c != null) 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 else
_ScreenSongOptions.Selection.TeamNames[i] = "foobar"; _ScreenSongOptions.Selection.TeamNames[i] = "foobar";
} }
@@ -551,19 +424,19 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _UpdateScores() 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}; var row = new CResultTableRow {PlayerID = GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0};
_GameData.ResultTable.Add(row); GameData.ResultTable.Add(row);
} }
_GameData.Results = new int[_GameData.NumRounds,_GameData.NumPlayerAtOnce]; GameData.Results = new int[GameData.NumRounds,GameData.NumPlayerAtOnce];
for (int i = 0; i < _GameData.NumRounds; i++) for (int i = 0; i < GameData.NumRounds; i++)
{ {
for (int j = 0; j < _GameData.NumPlayerAtOnce; j++) for (int j = 0; j < GameData.NumPlayerAtOnce; j++)
_GameData.Results[i, j] = 0; GameData.Results[i, j] = 0;
} }
} }
else else
@@ -572,20 +445,20 @@ namespace VocaluxeLib.PartyModes.Challenge
if (results == null) if (results == null)
return; return;
if (results.Length < _GameData.NumPlayerAtOnce) if (results.Length < GameData.NumPlayerAtOnce)
return; return;
for (int j = 0; j < _GameData.NumPlayerAtOnce; j++) for (int j = 0; j < GameData.NumPlayerAtOnce; j++)
_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<SStats> points = _GetPointsForPlayer(results); List<SStats> points = _GetPointsForPlayer(results);
for (int i = 0; i < _GameData.NumPlayerAtOnce; i++) for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{ {
int index = -1; 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; index = j;
break; break;
@@ -594,24 +467,24 @@ namespace VocaluxeLib.PartyModes.Challenge
if (index == -1) if (index == -1)
continue; continue;
CResultTableRow row = _GameData.ResultTable[index]; CResultTableRow row = GameData.ResultTable[index];
row.NumPlayed++; row.NumPlayed++;
row.NumWon += points[i].Won; row.NumWon += points[i].Won;
row.NumSingPoints += points[i].SingPoints; row.NumSingPoints += points[i].SingPoints;
row.NumGamePoints += points[i].GamePoints; row.NumGamePoints += points[i].GamePoints;
_GameData.ResultTable[index] = row; GameData.ResultTable[index] = row;
} }
} }
_GameData.ResultTable.Sort(); GameData.ResultTable.Sort();
//Update position-number //Update position-number
int pos = 1; int pos = 1;
int lastPoints = 0; int lastPoints = 0;
int lastSingPoints = 0; int lastSingPoints = 0;
foreach (CResultTableRow resultRow in _GameData.ResultTable) foreach (CResultTableRow resultRow in GameData.ResultTable)
{ {
if (lastPoints > resultRow.NumGamePoints || lastSingPoints > resultRow.NumSingPoints) if (lastPoints > resultRow.NumGamePoints || lastSingPoints > resultRow.NumSingPoints)
pos++; pos++;
@@ -624,7 +497,7 @@ namespace VocaluxeLib.PartyModes.Challenge
private List<SStats> _GetPointsForPlayer(SPlayer[] results) private List<SStats> _GetPointsForPlayer(SPlayer[] results)
{ {
var result = new List<SStats>(); var result = new List<SStats>();
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}; var stat = new SStats {ProfileID = results[i].ProfileID, SingPoints = (int)Math.Round(results[i].Points), Won = 0, GamePoints = 0};
result.Add(stat); result.Add(stat);
@@ -672,15 +545,15 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _CreateCatSongIndices() 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()]; GameData.CatSongIndices = new int[CBase.Songs.GetNumCategories()];
for (int i = 0; i < _GameData.CatSongIndices.Length; i++) for (int i = 0; i < GameData.CatSongIndices.Length; i++)
_GameData.CatSongIndices[i] = -1; GameData.CatSongIndices[i] = -1;
} }
if (CBase.Songs.GetNumCategories() == 0 || _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_OFF) if (CBase.Songs.GetNumCategories() == 0 || _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_OFF)
_GameData.CatSongIndices = null; GameData.CatSongIndices = null;
} }
} }
} }
@@ -15,14 +15,12 @@
// along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>. // along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>.
#endregion #endregion
using System;
using System.Windows.Forms; using System.Windows.Forms;
using VocaluxeLib.Menu;
namespace VocaluxeLib.PartyModes.Challenge namespace VocaluxeLib.PartyModes.Challenge
{ {
// ReSharper disable UnusedMember.Global // ReSharper disable UnusedMember.Global
public class CPartyScreenChallengeConfig : CMenuParty public class CPartyScreenChallengeConfig : CPartyScreenChallenge
// ReSharper restore UnusedMember.Global // ReSharper restore UnusedMember.Global
{ {
// Version number for theme files. Increment it, if you've changed something on the theme files! // 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 _MaxNumRounds = 100;
private int _RoundSteps = 1; private int _RoundSteps = 1;
private SDataFromScreen _Data;
public override void Init() public override void Init()
{ {
base.Init(); base.Init();
_ThemeSelectSlides = new string[] {_SelectSlideNumPlayers, _SelectSlideNumMics, _SelectSlideNumRounds}; _ThemeSelectSlides = new string[] {_SelectSlideNumPlayers, _SelectSlideNumMics, _SelectSlideNumRounds};
_ThemeButtons = new string[] {_ButtonNext, _ButtonBack}; _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) public override bool HandleInput(SKeyEvent keyEvent)
@@ -81,17 +58,17 @@ namespace VocaluxeLib.PartyModes.Challenge
{ {
case Keys.Back: case Keys.Back:
case Keys.Escape: case Keys.Escape:
_Back(); _PartyMode.Back();
break; break;
case Keys.Enter: case Keys.Enter:
_UpdateSlides(); _UpdateSlides();
if (_Buttons[_ButtonBack].Selected) if (_Buttons[_ButtonBack].Selected)
_Back(); _PartyMode.Back();
if (_Buttons[_ButtonNext].Selected) if (_Buttons[_ButtonNext].Selected)
_Next(); _PartyMode.Next();
break; break;
case Keys.Left: case Keys.Left:
@@ -114,14 +91,14 @@ namespace VocaluxeLib.PartyModes.Challenge
{ {
_UpdateSlides(); _UpdateSlides();
if (_Buttons[_ButtonBack].Selected) if (_Buttons[_ButtonBack].Selected)
_Back(); _PartyMode.Back();
if (_Buttons[_ButtonNext].Selected) if (_Buttons[_ButtonNext].Selected)
_Next(); _PartyMode.Next();
} }
if (mouseEvent.RB) if (mouseEvent.RB)
_Back(); _PartyMode.Back();
return true; return true;
} }
@@ -150,7 +127,7 @@ namespace VocaluxeLib.PartyModes.Challenge
_SelectSlides[_SelectSlideNumPlayers].Clear(); _SelectSlides[_SelectSlideNumPlayers].Clear();
for (int i = _PartyMode.GetMinPlayer(); i <= _PartyMode.GetMaxPlayer(); i++) for (int i = _PartyMode.GetMinPlayer(); i <= _PartyMode.GetMaxPlayer(); i++)
_SelectSlides[_SelectSlideNumPlayers].AddValue(i.ToString()); _SelectSlides[_SelectSlideNumPlayers].AddValue(i.ToString());
_SelectSlides[_SelectSlideNumPlayers].Selection = _Data.ScreenConfig.NumPlayer - _PartyMode.GetMinPlayer(); _SelectSlides[_SelectSlideNumPlayers].Selection = _PartyMode.GameData.NumPlayer - _PartyMode.GetMinPlayer();
_UpdateMicsAtOnce(); _UpdateMicsAtOnce();
_SetRoundSteps(); _SetRoundSteps();
@@ -159,21 +136,21 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _UpdateSlides() private void _UpdateSlides()
{ {
int player = _Data.ScreenConfig.NumPlayer; int player = _PartyMode.GameData.NumPlayer;
int mics = _Data.ScreenConfig.NumPlayerAtOnce; int mics = _PartyMode.GameData.NumPlayerAtOnce;
_Data.ScreenConfig.NumPlayer = _SelectSlides[_SelectSlideNumPlayers].Selection + _PartyMode.GetMinPlayer(); _PartyMode.GameData.NumPlayer = _SelectSlides[_SelectSlideNumPlayers].Selection + _PartyMode.GetMinPlayer();
_Data.ScreenConfig.NumPlayerAtOnce = _SelectSlides[_SelectSlideNumMics].Selection + _PartyMode.GetMinPlayer(); _PartyMode.GameData.NumPlayerAtOnce = _SelectSlides[_SelectSlideNumMics].Selection + _PartyMode.GetMinPlayer();
_Data.ScreenConfig.NumRounds = (_SelectSlides[_SelectSlideNumRounds].Selection + 1) * _RoundSteps; _PartyMode.GameData.NumRounds = (_SelectSlides[_SelectSlideNumRounds].Selection + 1) * _RoundSteps;
_UpdateMicsAtOnce(); _UpdateMicsAtOnce();
_SetRoundSteps(); _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) while (num > _MaxNumRounds)
num -= _RoundSteps; num -= _RoundSteps;
_Data.ScreenConfig.NumRounds = num; _PartyMode.GameData.NumRounds = num;
} }
_UpdateSlideRounds(); _UpdateSlideRounds();
@@ -181,19 +158,18 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _UpdateMicsAtOnce() private void _UpdateMicsAtOnce()
{ {
//Data.ScreenConfig.NumPlayerAtOnce
int maxNum = _MaxNumMics; int maxNum = _MaxNumMics;
if (_Data.ScreenConfig.NumPlayer < _MaxNumMics) if (_PartyMode.GameData.NumPlayer < _MaxNumMics)
maxNum = _Data.ScreenConfig.NumPlayer; maxNum = _PartyMode.GameData.NumPlayer;
if (_Data.ScreenConfig.NumPlayerAtOnce > maxNum) if (_PartyMode.GameData.NumPlayerAtOnce > maxNum)
_Data.ScreenConfig.NumPlayerAtOnce = maxNum; _PartyMode.GameData.NumPlayerAtOnce = maxNum;
// build mics at once slide // build mics at once slide
_SelectSlides[_SelectSlideNumMics].Clear(); _SelectSlides[_SelectSlideNumMics].Clear();
for (int i = 1; i <= maxNum; i++) for (int i = 1; i <= maxNum; i++)
_SelectSlides[_SelectSlideNumMics].AddValue(i.ToString()); _SelectSlides[_SelectSlideNumMics].AddValue(i.ToString());
_SelectSlides[_SelectSlideNumMics].Selection = _Data.ScreenConfig.NumPlayerAtOnce - _PartyMode.GetMinPlayer(); _SelectSlides[_SelectSlideNumMics].Selection = _PartyMode.GameData.NumPlayerAtOnce - _PartyMode.GetMinPlayer();
} }
private void _UpdateSlideRounds() private void _UpdateSlideRounds()
@@ -202,31 +178,21 @@ namespace VocaluxeLib.PartyModes.Challenge
_SelectSlides[_SelectSlideNumRounds].Clear(); _SelectSlides[_SelectSlideNumRounds].Clear();
for (int i = _RoundSteps; i <= _MaxNumRounds; i += _RoundSteps) for (int i = _RoundSteps; i <= _MaxNumRounds; i += _RoundSteps)
_SelectSlides[_SelectSlideNumRounds].AddValue(i.ToString()); _SelectSlides[_SelectSlideNumRounds].AddValue(i.ToString());
_SelectSlides[_SelectSlideNumRounds].Selection = _Data.ScreenConfig.NumRounds / _RoundSteps - 1; _SelectSlides[_SelectSlideNumRounds].Selection = _PartyMode.GameData.NumRounds / _RoundSteps - 1;
} }
private void _SetRoundSteps() 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; _RoundSteps = 1;
return; return;
} }
int res = _Data.ScreenConfig.NumPlayer / _Data.ScreenConfig.NumPlayerAtOnce; int res = _PartyMode.GameData.NumPlayer / _PartyMode.GameData.NumPlayerAtOnce;
int mod = _Data.ScreenConfig.NumPlayer % _Data.ScreenConfig.NumPlayerAtOnce; int mod = _PartyMode.GameData.NumPlayer % _PartyMode.GameData.NumPlayerAtOnce;
_RoundSteps = mod == 0 ? res : _Data.ScreenConfig.NumPlayer; _RoundSteps = mod == 0 ? res : _PartyMode.GameData.NumPlayer;
}
private void _Back()
{
_FadeTo(EScreens.ScreenParty);
}
private void _Next()
{
_PartyMode.DataFromScreen(ThemeName, _Data);
} }
} }
} }
@@ -40,7 +40,7 @@ namespace VocaluxeLib.PartyModes.Challenge
} }
// ReSharper disable UnusedMember.Global // ReSharper disable UnusedMember.Global
public class CPartyScreenChallengeMain : CMenuParty public class CPartyScreenChallengeMain : CPartyScreenChallenge
// ReSharper restore UnusedMember.Global // ReSharper restore UnusedMember.Global
{ {
// Version number for theme files. Increment it, if you've changed something on the theme files! // 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 bool _ExitPopupVisible;
private SDataFromScreen _Data;
private SDataToScreenMain _GameState;
private List<STableRow> _PlayerTable; private List<STableRow> _PlayerTable;
private List<CRoundsTableRow> _RoundsTable; private List<CRoundsTableRow> _RoundsTable;
@@ -94,11 +92,6 @@ namespace VocaluxeLib.PartyModes.Challenge
private const int _NumPlayerVisible = 10; private const int _NumPlayerVisible = 10;
private int _NumRoundsVisible = 3; private int _NumRoundsVisible = 3;
public CPartyScreenChallengeMain()
{
_Data = new SDataFromScreen {ScreenMain = new SFromScreenMain()};
}
public override void Init() public override void Init()
{ {
base.Init(); base.Init();
@@ -121,7 +114,6 @@ namespace VocaluxeLib.PartyModes.Challenge
{ {
base.LoadTheme(xmlPath); base.LoadTheme(xmlPath);
_GameState = new SDataToScreenMain();
_BuildPlayerTable(); _BuildPlayerTable();
_CreateRoundsTable(); _CreateRoundsTable();
_NextPlayerTexts = new List<CText>(); _NextPlayerTexts = new List<CText>();
@@ -137,19 +129,6 @@ namespace VocaluxeLib.PartyModes.Challenge
_Statics[_StaticNextPlayer].Visible = false; _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) public override bool HandleInput(SKeyEvent keyEvent)
{ {
base.HandleInput(keyEvent); base.HandleInput(keyEvent);
@@ -163,8 +142,8 @@ namespace VocaluxeLib.PartyModes.Challenge
case Keys.Escape: case Keys.Escape:
if (!_ExitPopupVisible) if (!_ExitPopupVisible)
{ {
if (_GameState.CurrentRoundNr == 1) if (_PartyMode.GameData.CurrentRoundNr == 1)
_Back(); _PartyMode.Back();
else else
_ShowPopup(true); _ShowPopup(true);
} }
@@ -176,10 +155,10 @@ namespace VocaluxeLib.PartyModes.Challenge
if (!_ExitPopupVisible) if (!_ExitPopupVisible)
{ {
if (_Buttons[_ButtonNextRound].Selected) if (_Buttons[_ButtonNextRound].Selected)
_NextRound(); _PartyMode.Next();
if (_Buttons[_ButtonBack].Selected && _GameState.CurrentRoundNr == 1) if (_Buttons[_ButtonBack].Selected && _PartyMode.GameData.CurrentRoundNr == 1)
_Back(); _PartyMode.Back();
if (_Buttons[_ButtonExit].Selected && _GameState.CurrentRoundNr > 1) if (_Buttons[_ButtonExit].Selected && _PartyMode.GameData.CurrentRoundNr > 1)
_ShowPopup(true); _ShowPopup(true);
if (_Buttons[_ButtonPlayerScrollUp].Selected) if (_Buttons[_ButtonPlayerScrollUp].Selected)
_ScrollPlayerTable(-1); _ScrollPlayerTable(-1);
@@ -212,10 +191,10 @@ namespace VocaluxeLib.PartyModes.Challenge
if (!_ExitPopupVisible) if (!_ExitPopupVisible)
{ {
if (_Buttons[_ButtonNextRound].Selected) if (_Buttons[_ButtonNextRound].Selected)
_NextRound(); _PartyMode.Next();
if (_Buttons[_ButtonBack].Selected && _GameState.CurrentRoundNr == 1) if (_Buttons[_ButtonBack].Selected && _PartyMode.GameData.CurrentRoundNr == 1)
_Back(); _PartyMode.Back();
if (_Buttons[_ButtonExit].Selected && _GameState.CurrentRoundNr > 1) if (_Buttons[_ButtonExit].Selected && _PartyMode.GameData.CurrentRoundNr > 1)
_ShowPopup(true); _ShowPopup(true);
if (_Buttons[_ButtonPlayerScrollUp].Selected) if (_Buttons[_ButtonPlayerScrollUp].Selected)
_ScrollPlayerTable(-1); _ScrollPlayerTable(-1);
@@ -239,8 +218,8 @@ namespace VocaluxeLib.PartyModes.Challenge
{ {
if (!_ExitPopupVisible) if (!_ExitPopupVisible)
{ {
if (_GameState.CurrentRoundNr == 1) if (_PartyMode.GameData.CurrentRoundNr == 1)
_Back(); _PartyMode.Back();
else else
_ShowPopup(true); _ShowPopup(true);
} }
@@ -269,13 +248,13 @@ namespace VocaluxeLib.PartyModes.Challenge
_UpdatePlayerTable(); _UpdatePlayerTable();
_UpdateNextPlayerPositions(); _UpdateNextPlayerPositions();
_UpdateNextPlayerContents(); _UpdateNextPlayerContents();
if (_GameState.CurrentRoundNr == 1) if (_PartyMode.GameData.CurrentRoundNr == 1)
_BuildRoundsTable(); _BuildRoundsTable();
else else
_ScrollRoundsTable(_GameState.CurrentRoundNr - 2); _ScrollRoundsTable(_PartyMode.GameData.CurrentRoundNr - 2);
_UpdateRoundsTable(); _UpdateRoundsTable();
if (_GameState.CurrentRoundNr == 1) if (_PartyMode.GameData.CurrentRoundNr == 1)
{ {
_Buttons[_ButtonBack].Visible = true; _Buttons[_ButtonBack].Visible = true;
_Buttons[_ButtonExit].Visible = false; _Buttons[_ButtonExit].Visible = false;
@@ -286,7 +265,7 @@ namespace VocaluxeLib.PartyModes.Challenge
_Buttons[_ButtonExit].Visible = true; _Buttons[_ButtonExit].Visible = true;
} }
if (_GameState.CurrentRoundNr <= _GameState.Combs.Count) if (_PartyMode.GameData.CurrentRoundNr <= _PartyMode.GameData.Rounds.Count)
{ {
_Buttons[_ButtonNextRound].Visible = true; _Buttons[_ButtonNextRound].Visible = true;
_Texts[_TextFinishMessage].Visible = false; _Texts[_TextFinishMessage].Visible = false;
@@ -310,16 +289,9 @@ namespace VocaluxeLib.PartyModes.Challenge
return true; return true;
} }
private void _NextRound()
{
_Data.ScreenMain.FadeToNameSelection = false;
_Data.ScreenMain.FadeToSongSelection = true;
_PartyMode.DataFromScreen(ThemeName, _Data);
}
private void _EndParty() private void _EndParty()
{ {
_FadeTo(EScreens.ScreenParty); CBase.Graphics.FadeTo(EScreen.Party);
} }
private void _ShowPopup(bool visible) private void _ShowPopup(bool visible)
@@ -335,19 +307,13 @@ namespace VocaluxeLib.PartyModes.Challenge
_SelectElement(_Buttons[_ButtonPopupNo]); _SelectElement(_Buttons[_ButtonPopupNo]);
} }
private void _Back()
{
_Data.ScreenMain.FadeToNameSelection = true;
_Data.ScreenMain.FadeToSongSelection = false;
_PartyMode.DataFromScreen(ThemeName, _Data);
}
private void _UpdateNextPlayerPositions() 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 staticY = 590;
const float textY = 550; const float textY = 550;
for (int i = 0; i < _GameState.NumPlayerAtOnce; i++) for (int i = 0; i < _PartyMode.GameData.NumPlayerAtOnce; i++)
{ {
//static //static
_NextPlayerStatics[i].X = x; _NextPlayerStatics[i].X = x;
@@ -360,7 +326,7 @@ namespace VocaluxeLib.PartyModes.Challenge
x += _Statics[_StaticNextPlayer].Rect.W + 15; 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; _NextPlayerStatics[i].Visible = false;
_NextPlayerTexts[i].Visible = false; _NextPlayerTexts[i].Visible = false;
@@ -369,12 +335,12 @@ namespace VocaluxeLib.PartyModes.Challenge
private void _UpdateNextPlayerContents() private void _UpdateNextPlayerContents()
{ {
if (_GameState.CurrentRoundNr <= _GameState.Combs.Count) if (_PartyMode.GameData.CurrentRoundNr <= _PartyMode.GameData.Rounds.Count)
{ {
_Texts[_TextNextPlayerMessage].Visible = true; _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); _NextPlayerStatics[i].Texture = CBase.Profiles.GetAvatar(id);
_NextPlayerTexts[i].Text = CBase.Profiles.GetPlayerName(id); _NextPlayerTexts[i].Text = CBase.Profiles.GetPlayerName(id);
_NextPlayerTexts[i].Color = CBase.Themes.GetPlayerColor(i + 1); _NextPlayerTexts[i].Color = CBase.Themes.GetPlayerColor(i + 1);
@@ -383,7 +349,7 @@ namespace VocaluxeLib.PartyModes.Challenge
else else
{ {
_Texts[_TextNextPlayerMessage].Visible = false; _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; _NextPlayerStatics[i].Visible = false;
_NextPlayerTexts[i].Visible = false; _NextPlayerTexts[i].Visible = false;
@@ -429,10 +395,10 @@ namespace VocaluxeLib.PartyModes.Challenge
_RoundsTableScrollArea = new SRectF(); _RoundsTableScrollArea = new SRectF();
const int numPlayerInOneRow = 3; const int numPlayerInOneRow = 3;
_NumRoundsVisible = _GameState.NumPlayerAtOnce <= numPlayerInOneRow ? 5 : 3; _NumRoundsVisible = _PartyMode.GameData.NumPlayerAtOnce <= numPlayerInOneRow ? 5 : 3;
if (_NumRoundsVisible > _GameState.Combs.Count) if (_NumRoundsVisible > _PartyMode.GameData.Rounds.Count)
_NumRoundsVisible = _GameState.Combs.Count; _NumRoundsVisible = _PartyMode.GameData.Rounds.Count;
float numberX = _Texts[_TextRoundNumber].X; float numberX = _Texts[_TextRoundNumber].X;
float numberY = _Texts[_TextRoundNumber].Y; float numberY = _Texts[_TextRoundNumber].Y;
@@ -449,15 +415,15 @@ namespace VocaluxeLib.PartyModes.Challenge
//Round-number //Round-number
roundRow.Number.X = numberX; roundRow.Number.X = numberX;
roundRow.Number.Y = numberY; 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++) for (int row = 0; row < numInnerRows; row++)
{ {
int num = (row + 1) * numPlayerInOneRow; int num = (row + 1) * numPlayerInOneRow;
int numPlayerInThisRow = numPlayerInOneRow; int numPlayerInThisRow = numPlayerInOneRow;
if (num > _GameState.NumPlayerAtOnce) if (num > _PartyMode.GameData.NumPlayerAtOnce)
{ {
num = _GameState.NumPlayerAtOnce; num = _PartyMode.GameData.NumPlayerAtOnce;
numPlayerInThisRow = _GameState.NumPlayerAtOnce - (row * numPlayerInOneRow); numPlayerInThisRow = _PartyMode.GameData.NumPlayerAtOnce - (row * numPlayerInOneRow);
} }
for (int column = row * numPlayerInOneRow; column < num; column++) 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++) 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].Number.Visible = true;
_RoundsTable[i].TextPlayer[p].Visible = true; _RoundsTable[i].TextPlayer[p].Visible = true;
_RoundsTable[i].TextScores[p].Visible = true; _RoundsTable[i].TextScores[p].Visible = true;
_RoundsTable[i].Number.Text = (i + 1 + _RoundsTableOffset) + ")"; _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 // ReSharper disable ConvertIfStatementToConditionalTernaryExpression
if ((_GameState.CurrentRoundNr - 1) > i + _RoundsTableOffset) if ((_PartyMode.GameData.CurrentRoundNr - 1) > i + _RoundsTableOffset)
// ReSharper restore ConvertIfStatementToConditionalTernaryExpression // 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 else
_RoundsTable[i].TextScores[p].Text = ""; _RoundsTable[i].TextScores[p].Text = "";
} }
@@ -506,7 +473,7 @@ namespace VocaluxeLib.PartyModes.Challenge
_RoundsTable[i].TextScores[p].Visible = false; _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; _RoundsTable[i].Number.Visible = false;
for (int p = 0; p < _RoundsTable[i].TextPlayer.Count; p++) for (int p = 0; p < _RoundsTable[i].TextPlayer.Count; p++)
@@ -518,7 +485,7 @@ namespace VocaluxeLib.PartyModes.Challenge
} }
_Buttons[_ButtonRoundsScrollUp].Visible = _RoundsTableOffset > 0; _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() private void _BuildPlayerTable()
@@ -578,7 +545,7 @@ namespace VocaluxeLib.PartyModes.Challenge
{ {
STableRow row = _PlayerTable[i]; STableRow row = _PlayerTable[i];
if (i + _PlayerTableOffset < _GameState.ResultTable.Count) if (i + _PlayerTableOffset < _PartyMode.GameData.ResultTable.Count)
{ {
row.Pos.Visible = true; row.Pos.Visible = true;
row.Name.Visible = true; row.Name.Visible = true;
@@ -587,12 +554,12 @@ namespace VocaluxeLib.PartyModes.Challenge
row.SingPoints.Visible = true; row.SingPoints.Visible = true;
row.GamePoints.Visible = true; row.GamePoints.Visible = true;
row.Pos.Text = _GameState.ResultTable[i + _PlayerTableOffset].Position + "."; row.Pos.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].Position + ".";
row.Name.Text = CBase.Profiles.GetPlayerName(_GameState.ResultTable[i + _PlayerTableOffset].PlayerID); row.Name.Text = CBase.Profiles.GetPlayerName(_PartyMode.GameData.ResultTable[i + _PlayerTableOffset].PlayerID);
row.Rounds.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumPlayed.ToString(); row.Rounds.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumPlayed.ToString();
row.Won.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumWon.ToString(); row.Won.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumWon.ToString();
row.SingPoints.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumSingPoints.ToString(); row.SingPoints.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumSingPoints.ToString();
row.GamePoints.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumGamePoints.ToString(); row.GamePoints.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumGamePoints.ToString();
} }
else else
{ {
@@ -606,37 +573,37 @@ namespace VocaluxeLib.PartyModes.Challenge
} }
_Buttons[_ButtonPlayerScrollUp].Visible = _PlayerTableOffset > 0; _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) private void _ScrollPlayerTable(int offset)
{ {
if (_GameState.ProfileIDs.Count <= _NumPlayerVisible) if (_PartyMode.GameData.ProfileIDs.Count <= _NumPlayerVisible)
_PlayerTableOffset = 0; _PlayerTableOffset = 0;
else if (offset < 0 && _PlayerTableOffset + offset >= 0) else if (offset < 0 && _PlayerTableOffset + offset >= 0)
_PlayerTableOffset += offset; _PlayerTableOffset += offset;
else if (offset < 0 && _PlayerTableOffset + offset < 0) else if (offset < 0 && _PlayerTableOffset + offset < 0)
_PlayerTableOffset = 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; _PlayerTableOffset += offset;
else if (offset > 0 && _PlayerTableOffset + offset > _GameState.ProfileIDs.Count - _NumPlayerVisible) else if (offset > 0 && _PlayerTableOffset + offset > _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible)
_PlayerTableOffset = _GameState.ProfileIDs.Count - _NumPlayerVisible; _PlayerTableOffset = _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible;
_UpdatePlayerTable(); _UpdatePlayerTable();
} }
private void _ScrollRoundsTable(int offset) private void _ScrollRoundsTable(int offset)
{ {
if (_GameState.Combs.Count <= _NumRoundsVisible) if (_PartyMode.GameData.Rounds.Count <= _NumRoundsVisible)
_RoundsTableOffset = 0; _RoundsTableOffset = 0;
else if (offset < 0 && _RoundsTableOffset + offset >= 0) else if (offset < 0 && _RoundsTableOffset + offset >= 0)
_RoundsTableOffset += offset; _RoundsTableOffset += offset;
else if (offset < 0 && _RoundsTableOffset + offset < 0) else if (offset < 0 && _RoundsTableOffset + offset < 0)
_RoundsTableOffset = 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; _RoundsTableOffset += offset;
else if (offset > 0 && _RoundsTableOffset + offset > _GameState.Combs.Count - _NumRoundsVisible) else if (offset > 0 && _RoundsTableOffset + offset > _PartyMode.GameData.Rounds.Count - _NumRoundsVisible)
_RoundsTableOffset = _GameState.Combs.Count - _NumRoundsVisible; _RoundsTableOffset = _PartyMode.GameData.Rounds.Count - _NumRoundsVisible;
_UpdateRoundsTable(); _UpdateRoundsTable();
} }
@@ -645,13 +612,13 @@ namespace VocaluxeLib.PartyModes.Challenge
{ {
string s = ""; 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) if (i > 0)
s += ", "; s += ", ";
s += CBase.Profiles.GetPlayerName(_GameState.ResultTable[i].PlayerID); s += CBase.Profiles.GetPlayerName(_PartyMode.GameData.ResultTable[i].PlayerID);
} }
else else
break; break;
@@ -15,7 +15,6 @@
// along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>. // along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>.
#endregion #endregion
using System;
using System.Collections.Generic; using System.Collections.Generic;
using VocaluxeLib.Menu; using VocaluxeLib.Menu;
@@ -31,62 +30,38 @@ namespace VocaluxeLib.PartyModes.Challenge
get { return 1; } get { return 1; }
} }
private SDataFromScreen _Data; private new CPartyModeChallenge _PartyMode;
public override void Init() public override void Init()
{ {
base.Init(); base.Init();
_PartyMode = (CPartyModeChallenge)base._PartyMode;
_Data.ScreenNames.ProfileIDs = new List<int>();
_Data = new SDataFromScreen();
var names = new SFromScreenNames {FadeBack = false, ProfileIDs = new List<int>()};
_Data.ScreenNames = names;
_AllowChangePlayerNum = false; _AllowChangePlayerNum = false;
} }
public override void DataToScreen(object receivedData)
{
try
{
var config = (SDataToScreenNames)receivedData;
_Data.ScreenNames.ProfileIDs = config.ProfileIDs ?? new List<int>();
SetPartyModeData(config.NumPlayer);
while (_Data.ScreenNames.ProfileIDs.Count > _NumPlayer)
_Data.ScreenNames.ProfileIDs.RemoveAt(_Data.ScreenNames.ProfileIDs.Count - 1);
List<int>[] ids = new List<int>[] {_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() public override void OnShow()
{ {
base.OnShow(); base.OnShow();
SetPartyModeData(_PartyMode.GameData.NumPlayer);
while (_PartyMode.GameData.ProfileIDs.Count > _NumPlayer)
_PartyMode.GameData.ProfileIDs.RemoveAt(_PartyMode.GameData.ProfileIDs.Count - 1);
List<int>[] ids = new List<int>[] {_PartyMode.GameData.ProfileIDs};
SetPartyModeProfiles(ids);
} }
public override void Back() public override void Back()
{ {
SPartyNameOptions options = GetData(); if (_TeamList.Length == 1)
if (options.TeamList.Length == 1) _PartyMode.GameData.ProfileIDs = _TeamList[0];
_Data.ScreenNames.ProfileIDs = options.TeamList[0]; _PartyMode.Back();
_Data.ScreenNames.FadeBack = true;
_PartyMode.DataFromScreen(ThemeName, _Data);
} }
public override void Next() public override void Next()
{ {
SPartyNameOptions options = GetData(); if (_TeamList.Length == 1)
if (options.TeamList.Length == 1) _PartyMode.GameData.ProfileIDs = _TeamList[0];
_Data.ScreenNames.ProfileIDs = options.TeamList[0]; _PartyMode.Next();
_Data.ScreenNames.FadeBack = false;
_PartyMode.DataFromScreen(ThemeName, _Data);
} }
} }
} }
@@ -28,6 +28,16 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
public readonly List<CCombination> Rounds; public readonly List<CCombination> 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) public CChallengeRounds(int numRounds, int numPlayer, int numPlayerAtOnce)
{ {
Rounds = new List<CCombination>(); Rounds = new List<CCombination>();
@@ -59,7 +69,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
Rounds.Add(combinations.GetNextCombination(_GetPlayerDemand(i))); Rounds.Add(combinations.GetNextCombination(_GetPlayerDemand(i)));
} }
private List<int> _GetPlayerDemand(int roundIndex) private IEnumerable<int> _GetPlayerDemand(int roundIndex)
{ {
List<int> numPlayed = new List<int>(_NumPlayer); List<int> numPlayed = new List<int>(_NumPlayer);
for (int i = 0; i < _NumPlayer; i++) for (int i = 0; i < _NumPlayer; i++)
@@ -21,40 +21,13 @@ using System.Collections.ObjectModel;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using VocaluxeLib.Game; using VocaluxeLib.Game;
using VocaluxeLib.Menu; using VocaluxeLib.Menu;
using VocaluxeLib.Songs;
using VocaluxeLib.Profile; using VocaluxeLib.Profile;
using VocaluxeLib.Songs;
[assembly: ComVisible(false)] [assembly: ComVisible(false)]
namespace VocaluxeLib.PartyModes.ChallengeMedley 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<int> ProfileIDs;
}
public struct SDataToScreenMain
{
public int CurrentRoundNr;
public int NumPlayerAtOnce;
public List<CCombination> Combs;
public int[,] Results;
public List<CResultTableRow> ResultTable;
public List<int> ProfileIDs;
}
public class CResultTableRow : IComparable public class CResultTableRow : IComparable
{ {
public int Position; public int Position;
@@ -66,7 +39,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
public int CompareTo(object obj) public int CompareTo(object obj)
{ {
CResultTableRow row = obj as CResultTableRow; var row = obj as CResultTableRow;
if (row != null) if (row != null)
{ {
int res = row.NumGamePoints.CompareTo(NumGamePoints); int res = row.NumGamePoints.CompareTo(NumGamePoints);
@@ -82,39 +55,21 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
throw new ArgumentException("object is not a ResultTableRow"); throw new ArgumentException("object is not a ResultTableRow");
} }
} }
#endregion ToScreen
#region FromScreen public abstract class CPartyScreenChallengeMedley : CMenuParty
public struct SDataFromScreen
{ {
public SFromScreenConfig ScreenConfig; protected new CPartyModeChallengeMedley _PartyMode;
public SFromScreenNames ScreenNames;
public SFromScreenMain ScreenMain; public override void Init()
{
base.Init();
_PartyMode = (CPartyModeChallengeMedley)base._PartyMode;
}
} }
public struct SFromScreenConfig // ReSharper disable ClassNeverInstantiated.Global
{
public int NumPlayer;
public int NumPlayerAtOnce;
public int NumRounds;
}
public struct SFromScreenNames
{
public bool FadeToConfig;
public List<int> ProfileIDs;
}
public struct SFromScreenMain
{
public bool FadeToSongSelection;
public bool FadeToNameSelection;
}
#endregion FromScreen
#endregion Communication
public sealed class CPartyModeChallengeMedley : CPartyMode public sealed class CPartyModeChallengeMedley : CPartyMode
// ReSharper restore ClassNeverInstantiated.Global
{ {
private const int _MaxPlayer = 12; private const int _MaxPlayer = 12;
private const int _MinPlayer = 1; private const int _MinPlayer = 1;
@@ -125,14 +80,13 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private enum EStage private enum EStage
{ {
NotStarted,
Config, Config,
Names, Names,
Main, Main,
Singing Singing
} }
private struct SData public struct SData
{ {
public int NumPlayer; public int NumPlayer;
public int NumPlayerAtOnce; public int NumPlayerAtOnce;
@@ -156,11 +110,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
public int Won; public int Won;
} }
private SDataToScreenConfig _ToScreenConfig; public SData GameData;
private SDataToScreenNames _ToScreenNames;
private SDataToScreenMain _ToScreenMain;
private SData _GameData;
private EStage _Stage; private EStage _Stage;
public CPartyModeChallengeMedley(int id, string folder) public CPartyModeChallengeMedley(int id, string folder)
@@ -176,103 +126,26 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_ScreenSongOptions.Sorting.SearchActive = false; _ScreenSongOptions.Sorting.SearchActive = false;
_ScreenSongOptions.Sorting.DuetOptions = EDuetOptions.NoDuets; _ScreenSongOptions.Sorting.DuetOptions = EDuetOptions.NoDuets;
_Stage = EStage.NotStarted; GameData = new SData {NumPlayer = 4, NumPlayerAtOnce = 2, NumRounds = 12, CurrentRoundNr = 1, ProfileIDs = new List<int>(), CatSongIndices = null, Results = null};
_ToScreenConfig = new SDataToScreenConfig();
_ToScreenNames = new SDataToScreenNames();
_ToScreenMain = new SDataToScreenMain();
_GameData = new SData {NumPlayer = 4, NumPlayerAtOnce = 2, NumRounds = 2, CurrentRoundNr = 1, ProfileIDs = new List<int>(), CatSongIndices = null, Results = null};
} }
public override bool Init() public override bool Init()
{ {
_Stage = EStage.NotStarted; _Stage = EStage.Config;
_ScreenSongOptions.Sorting.IgnoreArticles = EOffOn.TR_CONFIG_OFF; _ScreenSongOptions.Sorting.IgnoreArticles = EOffOn.TR_CONFIG_OFF;
_ScreenSongOptions.Sorting.SongSorting = ESongSorting.TR_CONFIG_NONE; _ScreenSongOptions.Sorting.SongSorting = ESongSorting.TR_CONFIG_NONE;
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_OFF; _ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_OFF;
_ScreenSongOptions.Selection.SongIndex = -1; _ScreenSongOptions.Selection.SongIndex = -1;
_ToScreenMain.ResultTable = new List<CResultTableRow>();
_GameData.ResultTable = new List<CResultTableRow>();
CBase.Songs.SortSongs(ESongSorting.TR_CONFIG_NONE, EOffOn.TR_CONFIG_OFF, EOffOn.TR_CONFIG_OFF, String.Empty, EDuetOptions.NoDuets); CBase.Songs.SortSongs(ESongSorting.TR_CONFIG_NONE, EOffOn.TR_CONFIG_OFF, EOffOn.TR_CONFIG_OFF, String.Empty, EDuetOptions.NoDuets);
CBase.Songs.SetCategory(0); CBase.Songs.SetCategory(0);
GameData.ResultTable = new List<CResultTableRow>();
return true; 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() public override void UpdateGame()
{ {
/* /*
@@ -282,78 +155,78 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_ScreenSongOptions.Selection.RandomOnly = false;*/ _ScreenSongOptions.Selection.RandomOnly = false;*/
} }
public override CMenuParty GetNextPartyScreen(out EScreens alternativeScreen) private IMenu _GetNextScreen()
{ {
CMenuParty screen = null;
alternativeScreen = EScreens.ScreenSong;
switch (_Stage) 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: case EStage.Config:
_Screens.TryGetValue("CPartyScreenChallengeMedleyNames", out screen); return _Screens["CPartyScreenChallengeMedleyConfig"];
if (screen != null) case EStage.Names:
{ return _Screens["CPartyScreenChallengeMedleyNames"];
_ToScreenNames.NumPlayer = _GameData.NumPlayer; case EStage.Main:
_ToScreenNames.ProfileIDs = _GameData.ProfileIDs; return _Screens["CPartyScreenChallengeMedleyMain"];
screen.DataToScreen(_ToScreenNames); 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; break;
case EStage.Names: case EStage.Names:
_Screens.TryGetValue("CPartyScreenChallengeMedleyMain", out screen); _Stage = EStage.Main;
if (screen != null) CBase.Songs.ResetSongSung();
{ GameData.ResultTable = new List<CResultTableRow>();
CBase.Songs.ResetSongSung(); GameData.Rounds = new CChallengeRounds(GameData.NumRounds, GameData.NumPlayer, GameData.NumPlayerAtOnce);
_ToScreenMain.ResultTable = new List<CResultTableRow>(); GameData.CurrentRoundNr = 1;
_GameData.ResultTable = new List<CResultTableRow>();
_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);
}
break; break;
case EStage.Main: case EStage.Main:
//nothing to do _Stage = EStage.Singing;
_StartNextRound();
break; break;
case EStage.Singing: case EStage.Singing:
_Screens.TryGetValue("CPartyScreenChallengeMedleyMain", out screen); _Stage = EStage.Main;
if (screen != null) _UpdateScores();
{
_UpdateScores();
_ToScreenMain.CurrentRoundNr = _GameData.CurrentRoundNr;
_ToScreenMain.Combs = _GameData.Rounds.Rounds;
_ToScreenMain.Results = _GameData.Results;
screen.DataToScreen(_ToScreenMain);
}
break; break;
default:
throw new ArgumentException("Invalid stage: " + _Stage);
} }
_FadeToScreen();
return screen;
} }
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() public override SScreenSongOptions GetScreenSongOptions()
@@ -376,10 +249,10 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_ScreenSongOptions.Selection.SelectNextRandomSong = false; _ScreenSongOptions.Selection.SelectNextRandomSong = false;
_CreateCatSongIndices(); _CreateCatSongIndices();
if (_GameData.CatSongIndices != null) if (GameData.CatSongIndices != null)
{ {
if (_GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] == -1) if (GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] == -1)
_GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] = songIndex; GameData.CatSongIndices[CBase.Songs.GetCurrentCategoryIndex()] = songIndex;
} }
} }
@@ -390,15 +263,15 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
public override void OnCategoryChange(int categoryIndex, ref SScreenSongOptions screenSongOptions) public override void OnCategoryChange(int categoryIndex, ref SScreenSongOptions screenSongOptions)
// ReSharper restore RedundantAssignment // 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; _ScreenSongOptions.Selection.SelectNextRandomSong = true;
else 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; _ScreenSongOptions.Selection.SelectNextRandomSong = true;
if (categoryIndex == -1) if (categoryIndex == -1)
@@ -458,10 +331,8 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
public override void LeavingHighscore() public override void LeavingHighscore()
{ {
for (int i = 0; i < CBase.Game.GetNumSongs(); i++) GameData.CurrentRoundNr++;
CBase.Songs.AddPartySongSung(CBase.Game.GetSong(i).ID); Next();
_GameData.CurrentRoundNr++;
CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy);
} }
private void _StartNextRound() private void _StartNextRound()
@@ -470,10 +341,10 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_ScreenSongOptions.Selection.CategoryChangeAllowed = _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON; _ScreenSongOptions.Selection.CategoryChangeAllowed = _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_ON;
_SetNumJokers(); _SetNumJokers();
_SetTeamNames(); _SetTeamNames();
_GameData.CatSongIndices = null; GameData.CatSongIndices = null;
if (_RandomizeSongs()) if (_RandomizeSongs())
CBase.Graphics.FadeTo(EScreens.ScreenSing); CBase.Graphics.FadeTo(EScreen.Sing);
} }
private bool _RandomizeSongs() private bool _RandomizeSongs()
@@ -482,27 +353,27 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
CBase.Game.ClearSongs(); CBase.Game.ClearSongs();
#region PlayerNames #region PlayerNames
CBase.Game.SetNumPlayer(_GameData.NumPlayerAtOnce); CBase.Game.SetNumPlayer(GameData.NumPlayerAtOnce);
SPlayer[] players = CBase.Game.GetPlayers(); SPlayer[] players = CBase.Game.GetPlayers();
if (players == null) if (players == null)
return false; return false;
if (players.Length < _GameData.NumPlayerAtOnce) if (players.Length < GameData.NumPlayerAtOnce)
return false; 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 //try to fill with the right data
if (c != null) if (c != null)
players[i].ProfileID = _GameData.ProfileIDs[c.Player[i]]; players[i].ProfileID = GameData.ProfileIDs[c.Player[i]];
else else
players[i].ProfileID = -1; players[i].ProfileID = -1;
} }
#endregion PlayerNames #endregion PlayerNames
#region SongQueue #region SongQueue
if (CBase.Songs.GetNumSongsVisible() < _NumSongs) if (CBase.Songs.GetNumSongsVisible() < _NumSongs)
CBase.Songs.ResetSongSung(); CBase.Songs.ResetSongSung();
@@ -512,7 +383,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
if (visibleSongs.Count == 0) if (visibleSongs.Count == 0)
{ {
CBase.Log.LogError("CPartyChallengeMedleyMode Error: There are no songs!"); CBase.Log.LogError("CPartyChallengeMedleyMode Error: There are no songs!");
CBase.Graphics.FadeTo(EScreens.ScreenParty); CBase.Graphics.FadeTo(EScreen.Party);
return false; return false;
} }
@@ -536,7 +407,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
if (ids.Count == 0) if (ids.Count == 0)
{ {
CBase.Log.LogError("CPartyChallengeMedleyMode Error: There are no medley songs!"); CBase.Log.LogError("CPartyChallengeMedleyMode Error: There are no medley songs!");
CBase.Graphics.FadeTo(EScreens.ScreenParty); CBase.Graphics.FadeTo(EScreen.Party);
return false; return false;
} }
@@ -545,6 +416,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{ {
int songID = ids[CBase.Game.GetRandom(ids.Count)]; int songID = ids[CBase.Game.GetRandom(ids.Count)];
CBase.Game.AddSong(songID, EGameMode.TR_GAMEMODE_MEDLEY); CBase.Game.AddSong(songID, EGameMode.TR_GAMEMODE_MEDLEY);
CBase.Songs.AddPartySongSung(songID);
ids.Remove(songID); ids.Remove(songID);
s++; s++;
} }
@@ -554,7 +426,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _SetNumJokers() private void _SetNumJokers()
{ {
switch (_GameData.NumPlayerAtOnce) switch (GameData.NumPlayerAtOnce)
{ {
case 1: case 1:
_ScreenSongOptions.Selection.NumJokers = new int[] {10}; _ScreenSongOptions.Selection.NumJokers = new int[] {10};
@@ -589,21 +461,27 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{ {
CProfile[] profiles = CBase.Profiles.GetProfiles(); 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"}; _ScreenSongOptions.Selection.TeamNames = new string[] {"foo", "bar"};
return; return;
} }
_ScreenSongOptions.Selection.TeamNames = new string[_GameData.NumPlayerAtOnce]; if (GameData.NumPlayerAtOnce < 1 || GameData.ProfileIDs.Count < GameData.NumPlayerAtOnce || profiles.Length < GameData.NumPlayerAtOnce)
CCombination c = _GameData.Rounds.GetRound(_GameData.CurrentRoundNr - 1); {
_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 (c != null)
{ {
if (_GameData.ProfileIDs[c.Player[i]] < profiles.Length) if (GameData.ProfileIDs[c.Player[i]] < profiles.Length)
_ScreenSongOptions.Selection.TeamNames[i] = profiles[_GameData.ProfileIDs[c.Player[i]]].PlayerName; _ScreenSongOptions.Selection.TeamNames[i] = profiles[GameData.ProfileIDs[c.Player[i]]].PlayerName;
else else
_ScreenSongOptions.Selection.TeamNames[i] = "foobar"; _ScreenSongOptions.Selection.TeamNames[i] = "foobar";
} }
@@ -614,32 +492,32 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _UpdateScores() 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}; CResultTableRow row = new CResultTableRow {PlayerID = GameData.ProfileIDs[i], NumPlayed = 0, NumWon = 0, NumSingPoints = 0, NumGamePoints = 0};
_GameData.ResultTable.Add(row); GameData.ResultTable.Add(row);
} }
_GameData.Results = new int[_GameData.NumRounds,_GameData.NumPlayerAtOnce]; GameData.Results = new int[GameData.NumRounds,GameData.NumPlayerAtOnce];
for (int i = 0; i < _GameData.NumRounds; i++) for (int i = 0; i < GameData.NumRounds; i++)
{ {
for (int j = 0; j < _GameData.NumPlayerAtOnce; j++) for (int j = 0; j < GameData.NumPlayerAtOnce; j++)
_GameData.Results[i, j] = 0; GameData.Results[i, j] = 0;
} }
} }
else else
{ {
CPoints gamePoints = CBase.Game.GetPoints(); CPoints gamePoints = CBase.Game.GetPoints();
if (gamePoints == null || gamePoints.NumPlayer < _GameData.NumPlayerAtOnce) if (gamePoints == null || gamePoints.NumPlayer < GameData.NumPlayerAtOnce)
return; return;
SPlayer[] results = gamePoints.GetPlayer(0, _GameData.NumPlayerAtOnce); SPlayer[] results = gamePoints.GetPlayer(0, GameData.NumPlayerAtOnce);
if (results == null) if (results == null)
return; return;
if (results.Length < _GameData.NumPlayerAtOnce) if (results.Length < GameData.NumPlayerAtOnce)
return; return;
if (gamePoints.NumRounds == 0) if (gamePoints.NumRounds == 0)
@@ -647,25 +525,25 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
for (int i = 1; i < gamePoints.NumRounds; i++) for (int i = 1; i < gamePoints.NumRounds; i++)
{ {
SPlayer[] temp = gamePoints.GetPlayer(i, _GameData.NumPlayerAtOnce); SPlayer[] temp = gamePoints.GetPlayer(i, GameData.NumPlayerAtOnce);
for (int p = 0; p < _GameData.NumPlayerAtOnce; p++) for (int p = 0; p < GameData.NumPlayerAtOnce; p++)
results[p].Points += temp[p].Points; 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; 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<SStats> points = _GetPointsForPlayer(results); List<SStats> points = _GetPointsForPlayer(results);
for (int i = 0; i < _GameData.NumPlayerAtOnce; i++) for (int i = 0; i < GameData.NumPlayerAtOnce; i++)
{ {
int index = -1; 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; index = j;
break; break;
@@ -674,25 +552,25 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
if (index != -1) if (index != -1)
{ {
CResultTableRow row = _GameData.ResultTable[index]; CResultTableRow row = GameData.ResultTable[index];
row.NumPlayed++; row.NumPlayed++;
row.NumWon += points[i].Won; row.NumWon += points[i].Won;
row.NumSingPoints += points[i].SingPoints; row.NumSingPoints += points[i].SingPoints;
row.NumGamePoints += points[i].GamePoints; row.NumGamePoints += points[i].GamePoints;
_GameData.ResultTable[index] = row; GameData.ResultTable[index] = row;
} }
} }
} }
_GameData.ResultTable.Sort(); GameData.ResultTable.Sort();
//Update position-number //Update position-number
int pos = 1; int pos = 1;
int lastPoints = 0; int lastPoints = 0;
int lastSingPoints = 0; int lastSingPoints = 0;
foreach (CResultTableRow resultRow in _GameData.ResultTable) foreach (CResultTableRow resultRow in GameData.ResultTable)
{ {
if (lastPoints > resultRow.NumGamePoints || lastSingPoints > resultRow.NumSingPoints) if (lastPoints > resultRow.NumGamePoints || lastSingPoints > resultRow.NumSingPoints)
pos++; pos++;
@@ -704,10 +582,10 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private List<SStats> _GetPointsForPlayer(SPlayer[] results) private List<SStats> _GetPointsForPlayer(SPlayer[] results)
{ {
List<SStats> result = new List<SStats>(); var result = new List<SStats>();
for (int i = 0; i < _GameData.NumPlayerAtOnce; i++) 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); result.Add(stat);
} }
@@ -753,15 +631,15 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _CreateCatSongIndices() 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()]; GameData.CatSongIndices = new int[CBase.Songs.GetNumCategories()];
for (int i = 0; i < _GameData.CatSongIndices.Length; i++) for (int i = 0; i < GameData.CatSongIndices.Length; i++)
_GameData.CatSongIndices[i] = -1; GameData.CatSongIndices[i] = -1;
} }
if (CBase.Songs.GetNumCategories() == 0 || _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_OFF) if (CBase.Songs.GetNumCategories() == 0 || _ScreenSongOptions.Sorting.Tabs == EOffOn.TR_CONFIG_OFF)
_GameData.CatSongIndices = null; GameData.CatSongIndices = null;
} }
} }
} }
@@ -15,14 +15,12 @@
// along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>. // along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>.
#endregion #endregion
using System;
using System.Windows.Forms; using System.Windows.Forms;
using VocaluxeLib.Menu;
namespace VocaluxeLib.PartyModes.ChallengeMedley namespace VocaluxeLib.PartyModes.ChallengeMedley
{ {
// ReSharper disable UnusedMember.Global // ReSharper disable UnusedMember.Global
public class CPartyScreenChallengeMedleyConfig : CMenuParty public class CPartyScreenChallengeMedleyConfig : CPartyScreenChallengeMedley
// ReSharper restore UnusedMember.Global // ReSharper restore UnusedMember.Global
{ {
// Version number for theme files. Increment it, if you've changed something on the theme files! // 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 _MaxNumRounds = 100;
private int _RoundSteps = 1; private int _RoundSteps = 1;
private SDataFromScreen _Data;
public override void Init() public override void Init()
{ {
base.Init(); base.Init();
_ThemeSelectSlides = new string[] {_SelectSlideNumPlayers, _SelectSlideNumMics, _SelectSlideNumRounds}; _ThemeSelectSlides = new string[] {_SelectSlideNumPlayers, _SelectSlideNumMics, _SelectSlideNumRounds};
_ThemeButtons = new string[] {_ButtonNext, _ButtonBack}; _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) public override bool HandleInput(SKeyEvent keyEvent)
@@ -81,17 +58,17 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{ {
case Keys.Back: case Keys.Back:
case Keys.Escape: case Keys.Escape:
_Back(); _PartyMode.Back();
break; break;
case Keys.Enter: case Keys.Enter:
_UpdateSlides(); _UpdateSlides();
if (_Buttons[_ButtonBack].Selected) if (_Buttons[_ButtonBack].Selected)
_Back(); _PartyMode.Back();
if (_Buttons[_ButtonNext].Selected) if (_Buttons[_ButtonNext].Selected)
_Next(); _PartyMode.Next();
break; break;
case Keys.Left: case Keys.Left:
@@ -114,14 +91,14 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{ {
_UpdateSlides(); _UpdateSlides();
if (_Buttons[_ButtonBack].Selected) if (_Buttons[_ButtonBack].Selected)
_Back(); _PartyMode.Back();
if (_Buttons[_ButtonNext].Selected) if (_Buttons[_ButtonNext].Selected)
_Next(); _PartyMode.Next();
} }
if (mouseEvent.RB) if (mouseEvent.RB)
_Back(); _PartyMode.Back();
return true; return true;
} }
@@ -150,7 +127,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_SelectSlides[_SelectSlideNumPlayers].Clear(); _SelectSlides[_SelectSlideNumPlayers].Clear();
for (int i = _PartyMode.GetMinPlayer(); i <= _PartyMode.GetMaxPlayer(); i++) for (int i = _PartyMode.GetMinPlayer(); i <= _PartyMode.GetMaxPlayer(); i++)
_SelectSlides[_SelectSlideNumPlayers].AddValue(i.ToString()); _SelectSlides[_SelectSlideNumPlayers].AddValue(i.ToString());
_SelectSlides[_SelectSlideNumPlayers].Selection = _Data.ScreenConfig.NumPlayer - _PartyMode.GetMinPlayer(); _SelectSlides[_SelectSlideNumPlayers].Selection = _PartyMode.GameData.NumPlayer - _PartyMode.GetMinPlayer();
_UpdateMicsAtOnce(); _UpdateMicsAtOnce();
_SetRoundSteps(); _SetRoundSteps();
@@ -159,21 +136,21 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _UpdateSlides() private void _UpdateSlides()
{ {
int player = _Data.ScreenConfig.NumPlayer; int player = _PartyMode.GameData.NumPlayer;
int mics = _Data.ScreenConfig.NumPlayerAtOnce; int mics = _PartyMode.GameData.NumPlayerAtOnce;
_Data.ScreenConfig.NumPlayer = _SelectSlides[_SelectSlideNumPlayers].Selection + _PartyMode.GetMinPlayer(); _PartyMode.GameData.NumPlayer = _SelectSlides[_SelectSlideNumPlayers].Selection + _PartyMode.GetMinPlayer();
_Data.ScreenConfig.NumPlayerAtOnce = _SelectSlides[_SelectSlideNumMics].Selection + _PartyMode.GetMinPlayer(); _PartyMode.GameData.NumPlayerAtOnce = _SelectSlides[_SelectSlideNumMics].Selection + _PartyMode.GetMinPlayer();
_Data.ScreenConfig.NumRounds = (_SelectSlides[_SelectSlideNumRounds].Selection + 1) * _RoundSteps; _PartyMode.GameData.NumRounds = (_SelectSlides[_SelectSlideNumRounds].Selection + 1) * _RoundSteps;
_UpdateMicsAtOnce(); _UpdateMicsAtOnce();
_SetRoundSteps(); _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) while (num > _MaxNumRounds)
num -= _RoundSteps; num -= _RoundSteps;
_Data.ScreenConfig.NumRounds = num; _PartyMode.GameData.NumRounds = num;
} }
_UpdateSlideRounds(); _UpdateSlideRounds();
@@ -181,19 +158,18 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _UpdateMicsAtOnce() private void _UpdateMicsAtOnce()
{ {
//Data.ScreenConfig.NumPlayerAtOnce
int maxNum = _MaxNumMics; int maxNum = _MaxNumMics;
if (_Data.ScreenConfig.NumPlayer < _MaxNumMics) if (_PartyMode.GameData.NumPlayer < _MaxNumMics)
maxNum = _Data.ScreenConfig.NumPlayer; maxNum = _PartyMode.GameData.NumPlayer;
if (_Data.ScreenConfig.NumPlayerAtOnce > maxNum) if (_PartyMode.GameData.NumPlayerAtOnce > maxNum)
_Data.ScreenConfig.NumPlayerAtOnce = maxNum; _PartyMode.GameData.NumPlayerAtOnce = maxNum;
// build mics at once slide // build mics at once slide
_SelectSlides[_SelectSlideNumMics].Clear(); _SelectSlides[_SelectSlideNumMics].Clear();
for (int i = 1; i <= maxNum; i++) for (int i = 1; i <= maxNum; i++)
_SelectSlides[_SelectSlideNumMics].AddValue(i.ToString()); _SelectSlides[_SelectSlideNumMics].AddValue(i.ToString());
_SelectSlides[_SelectSlideNumMics].Selection = _Data.ScreenConfig.NumPlayerAtOnce - _PartyMode.GetMinPlayer(); _SelectSlides[_SelectSlideNumMics].Selection = _PartyMode.GameData.NumPlayerAtOnce - _PartyMode.GetMinPlayer();
} }
private void _UpdateSlideRounds() private void _UpdateSlideRounds()
@@ -202,31 +178,21 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_SelectSlides[_SelectSlideNumRounds].Clear(); _SelectSlides[_SelectSlideNumRounds].Clear();
for (int i = _RoundSteps; i <= _MaxNumRounds; i += _RoundSteps) for (int i = _RoundSteps; i <= _MaxNumRounds; i += _RoundSteps)
_SelectSlides[_SelectSlideNumRounds].AddValue(i.ToString()); _SelectSlides[_SelectSlideNumRounds].AddValue(i.ToString());
_SelectSlides[_SelectSlideNumRounds].Selection = _Data.ScreenConfig.NumRounds / _RoundSteps - 1; _SelectSlides[_SelectSlideNumRounds].Selection = _PartyMode.GameData.NumRounds / _RoundSteps - 1;
} }
private void _SetRoundSteps() 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; _RoundSteps = 1;
return; return;
} }
int res = _Data.ScreenConfig.NumPlayer / _Data.ScreenConfig.NumPlayerAtOnce; int res = _PartyMode.GameData.NumPlayer / _PartyMode.GameData.NumPlayerAtOnce;
int mod = _Data.ScreenConfig.NumPlayer % _Data.ScreenConfig.NumPlayerAtOnce; int mod = _PartyMode.GameData.NumPlayer % _PartyMode.GameData.NumPlayerAtOnce;
_RoundSteps = mod == 0 ? res : _Data.ScreenConfig.NumPlayer; _RoundSteps = mod == 0 ? res : _PartyMode.GameData.NumPlayer;
}
private void _Back()
{
_FadeTo(EScreens.ScreenParty);
}
private void _Next()
{
_PartyMode.DataFromScreen(ThemeName, _Data);
} }
} }
} }
@@ -40,7 +40,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
} }
// ReSharper disable UnusedMember.Global // ReSharper disable UnusedMember.Global
public class CPartyScreenChallengeMedleyMain : CMenuParty public class CPartyScreenChallengeMedleyMain : CPartyScreenChallengeMedley
// ReSharper restore UnusedMember.Global // ReSharper restore UnusedMember.Global
{ {
// Version number for theme files. Increment it, if you've changed something on the theme files! // 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 bool _ExitPopupVisible;
private SDataFromScreen _Data;
private SDataToScreenMain _GameState;
private List<STableRow> _PlayerTable; private List<STableRow> _PlayerTable;
private List<CRoundsTableRow> _RoundsTable; private List<CRoundsTableRow> _RoundsTable;
@@ -94,11 +92,6 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private const int _NumPlayerVisible = 10; private const int _NumPlayerVisible = 10;
private int _NumRoundsVisible = 3; private int _NumRoundsVisible = 3;
public CPartyScreenChallengeMedleyMain()
{
_Data = new SDataFromScreen {ScreenMain = new SFromScreenMain()};
}
public override void Init() public override void Init()
{ {
base.Init(); base.Init();
@@ -121,7 +114,6 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{ {
base.LoadTheme(xmlPath); base.LoadTheme(xmlPath);
_GameState = new SDataToScreenMain();
_BuildPlayerTable(); _BuildPlayerTable();
_CreateRoundsTable(); _CreateRoundsTable();
_NextPlayerTexts = new List<CText>(); _NextPlayerTexts = new List<CText>();
@@ -137,19 +129,6 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_Statics[_StaticNextPlayer].Visible = false; _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) public override bool HandleInput(SKeyEvent keyEvent)
{ {
base.HandleInput(keyEvent); base.HandleInput(keyEvent);
@@ -163,8 +142,8 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
case Keys.Escape: case Keys.Escape:
if (!_ExitPopupVisible) if (!_ExitPopupVisible)
{ {
if (_GameState.CurrentRoundNr == 1) if (_PartyMode.GameData.CurrentRoundNr == 1)
_Back(); _PartyMode.Back();
else else
_ShowPopup(true); _ShowPopup(true);
} }
@@ -176,10 +155,10 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
if (!_ExitPopupVisible) if (!_ExitPopupVisible)
{ {
if (_Buttons[_ButtonNextRound].Selected) if (_Buttons[_ButtonNextRound].Selected)
_NextRound(); _PartyMode.Next();
if (_Buttons[_ButtonBack].Selected && _GameState.CurrentRoundNr == 1) if (_Buttons[_ButtonBack].Selected && _PartyMode.GameData.CurrentRoundNr == 1)
_Back(); _PartyMode.Back();
if (_Buttons[_ButtonExit].Selected && _GameState.CurrentRoundNr > 1) if (_Buttons[_ButtonExit].Selected && _PartyMode.GameData.CurrentRoundNr > 1)
_ShowPopup(true); _ShowPopup(true);
if (_Buttons[_ButtonPlayerScrollUp].Selected) if (_Buttons[_ButtonPlayerScrollUp].Selected)
_ScrollPlayerTable(-1); _ScrollPlayerTable(-1);
@@ -212,10 +191,10 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
if (!_ExitPopupVisible) if (!_ExitPopupVisible)
{ {
if (_Buttons[_ButtonNextRound].Selected) if (_Buttons[_ButtonNextRound].Selected)
_NextRound(); _PartyMode.Next();
if (_Buttons[_ButtonBack].Selected && _GameState.CurrentRoundNr == 1) if (_Buttons[_ButtonBack].Selected && _PartyMode.GameData.CurrentRoundNr == 1)
_Back(); _PartyMode.Back();
if (_Buttons[_ButtonExit].Selected && _GameState.CurrentRoundNr > 1) if (_Buttons[_ButtonExit].Selected && _PartyMode.GameData.CurrentRoundNr > 1)
_ShowPopup(true); _ShowPopup(true);
if (_Buttons[_ButtonPlayerScrollUp].Selected) if (_Buttons[_ButtonPlayerScrollUp].Selected)
_ScrollPlayerTable(-1); _ScrollPlayerTable(-1);
@@ -239,8 +218,8 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{ {
if (!_ExitPopupVisible) if (!_ExitPopupVisible)
{ {
if (_GameState.CurrentRoundNr == 1) if (_PartyMode.GameData.CurrentRoundNr == 1)
_Back(); _PartyMode.Back();
else else
_ShowPopup(true); _ShowPopup(true);
} }
@@ -269,13 +248,13 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_UpdatePlayerTable(); _UpdatePlayerTable();
_UpdateNextPlayerPositions(); _UpdateNextPlayerPositions();
_UpdateNextPlayerContents(); _UpdateNextPlayerContents();
if (_GameState.CurrentRoundNr == 1) if (_PartyMode.GameData.CurrentRoundNr == 1)
_BuildRoundsTable(); _BuildRoundsTable();
else else
_ScrollRoundsTable(_GameState.CurrentRoundNr - 2); _ScrollRoundsTable(_PartyMode.GameData.CurrentRoundNr - 2);
_UpdateRoundsTable(); _UpdateRoundsTable();
if (_GameState.CurrentRoundNr == 1) if (_PartyMode.GameData.CurrentRoundNr == 1)
{ {
_Buttons[_ButtonBack].Visible = true; _Buttons[_ButtonBack].Visible = true;
_Buttons[_ButtonExit].Visible = false; _Buttons[_ButtonExit].Visible = false;
@@ -286,7 +265,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_Buttons[_ButtonExit].Visible = true; _Buttons[_ButtonExit].Visible = true;
} }
if (_GameState.CurrentRoundNr <= _GameState.Combs.Count) if (_PartyMode.GameData.CurrentRoundNr <= _PartyMode.GameData.Rounds.Count)
{ {
_Buttons[_ButtonNextRound].Visible = true; _Buttons[_ButtonNextRound].Visible = true;
_Texts[_TextFinishMessage].Visible = false; _Texts[_TextFinishMessage].Visible = false;
@@ -310,16 +289,9 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
return true; return true;
} }
private void _NextRound()
{
_Data.ScreenMain.FadeToNameSelection = false;
_Data.ScreenMain.FadeToSongSelection = true;
_PartyMode.DataFromScreen(ThemeName, _Data);
}
private void _EndParty() private void _EndParty()
{ {
_FadeTo(EScreens.ScreenParty); CBase.Graphics.FadeTo(EScreen.Party);
} }
private void _ShowPopup(bool visible) private void _ShowPopup(bool visible)
@@ -335,19 +307,13 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_SelectElement(_Buttons[_ButtonPopupNo]); _SelectElement(_Buttons[_ButtonPopupNo]);
} }
private void _Back()
{
_Data.ScreenMain.FadeToNameSelection = true;
_Data.ScreenMain.FadeToSongSelection = false;
_PartyMode.DataFromScreen(ThemeName, _Data);
}
private void _UpdateNextPlayerPositions() 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 staticY = 590;
const float textY = 550; const float textY = 550;
for (int i = 0; i < _GameState.NumPlayerAtOnce; i++) for (int i = 0; i < _PartyMode.GameData.NumPlayerAtOnce; i++)
{ {
//static //static
_NextPlayerStatics[i].X = x; _NextPlayerStatics[i].X = x;
@@ -360,7 +326,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
x += _Statics[_StaticNextPlayer].Rect.W + 15; 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; _NextPlayerStatics[i].Visible = false;
_NextPlayerTexts[i].Visible = false; _NextPlayerTexts[i].Visible = false;
@@ -369,12 +335,12 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private void _UpdateNextPlayerContents() private void _UpdateNextPlayerContents()
{ {
if (_GameState.CurrentRoundNr <= _GameState.Combs.Count) if (_PartyMode.GameData.CurrentRoundNr <= _PartyMode.GameData.Rounds.Count)
{ {
_Texts[_TextNextPlayerMessage].Visible = true; _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); _NextPlayerStatics[i].Texture = CBase.Profiles.GetAvatar(id);
_NextPlayerTexts[i].Text = CBase.Profiles.GetPlayerName(id); _NextPlayerTexts[i].Text = CBase.Profiles.GetPlayerName(id);
_NextPlayerTexts[i].Color = CBase.Themes.GetPlayerColor(i + 1); _NextPlayerTexts[i].Color = CBase.Themes.GetPlayerColor(i + 1);
@@ -383,7 +349,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
else else
{ {
_Texts[_TextNextPlayerMessage].Visible = false; _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; _NextPlayerStatics[i].Visible = false;
_NextPlayerTexts[i].Visible = false; _NextPlayerTexts[i].Visible = false;
@@ -429,10 +395,10 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_RoundsTableScrollArea = new SRectF(); _RoundsTableScrollArea = new SRectF();
const int numPlayerInOneRow = 3; const int numPlayerInOneRow = 3;
_NumRoundsVisible = _GameState.NumPlayerAtOnce <= numPlayerInOneRow ? 5 : 3; _NumRoundsVisible = _PartyMode.GameData.NumPlayerAtOnce <= numPlayerInOneRow ? 5 : 3;
if (_NumRoundsVisible > _GameState.Combs.Count) if (_NumRoundsVisible > _PartyMode.GameData.Rounds.Count)
_NumRoundsVisible = _GameState.Combs.Count; _NumRoundsVisible = _PartyMode.GameData.Rounds.Count;
float numberX = _Texts[_TextRoundNumber].X; float numberX = _Texts[_TextRoundNumber].X;
float numberY = _Texts[_TextRoundNumber].Y; float numberY = _Texts[_TextRoundNumber].Y;
@@ -449,15 +415,15 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
//Round-number //Round-number
roundRow.Number.X = numberX; roundRow.Number.X = numberX;
roundRow.Number.Y = numberY; 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++) for (int row = 0; row < numInnerRows; row++)
{ {
int num = (row + 1) * numPlayerInOneRow; int num = (row + 1) * numPlayerInOneRow;
int numPlayerInThisRow = numPlayerInOneRow; int numPlayerInThisRow = numPlayerInOneRow;
if (num > _GameState.NumPlayerAtOnce) if (num > _PartyMode.GameData.NumPlayerAtOnce)
{ {
num = _GameState.NumPlayerAtOnce; num = _PartyMode.GameData.NumPlayerAtOnce;
numPlayerInThisRow = _GameState.NumPlayerAtOnce - (row * numPlayerInOneRow); numPlayerInThisRow = _PartyMode.GameData.NumPlayerAtOnce - (row * numPlayerInOneRow);
} }
for (int column = row * numPlayerInOneRow; column < num; column++) 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].Y = numberY + delta;
roundRow.TextScores[column].W = maxw; roundRow.TextScores[column].W = maxw;
} }
numberY = numberY + delta + delta; numberY = numberY + 2 * delta;
} }
numberY = numberY + delta / 2; numberY = numberY + delta / 2;
} }
@@ -486,17 +452,18 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{ {
for (int p = 0; p < _RoundsTable[i].TextPlayer.Count; p++) 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].Number.Visible = true;
_RoundsTable[i].TextPlayer[p].Visible = true; _RoundsTable[i].TextPlayer[p].Visible = true;
_RoundsTable[i].TextScores[p].Visible = true; _RoundsTable[i].TextScores[p].Visible = true;
_RoundsTable[i].Number.Text = (i + 1 + _RoundsTableOffset) + ")"; _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 // ReSharper disable ConvertIfStatementToConditionalTernaryExpression
if ((_GameState.CurrentRoundNr - 1) > i + _RoundsTableOffset) if ((_PartyMode.GameData.CurrentRoundNr - 1) > i + _RoundsTableOffset)
// ReSharper restore ConvertIfStatementToConditionalTernaryExpression // 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 else
_RoundsTable[i].TextScores[p].Text = ""; _RoundsTable[i].TextScores[p].Text = "";
} }
@@ -506,7 +473,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
_RoundsTable[i].TextScores[p].Visible = false; _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; _RoundsTable[i].Number.Visible = false;
for (int p = 0; p < _RoundsTable[i].TextPlayer.Count; p++) for (int p = 0; p < _RoundsTable[i].TextPlayer.Count; p++)
@@ -518,7 +485,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
} }
_Buttons[_ButtonRoundsScrollUp].Visible = _RoundsTableOffset > 0; _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() private void _BuildPlayerTable()
@@ -578,7 +545,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
{ {
STableRow row = _PlayerTable[i]; STableRow row = _PlayerTable[i];
if (i + _PlayerTableOffset < _GameState.ResultTable.Count) if (i + _PlayerTableOffset < _PartyMode.GameData.ResultTable.Count)
{ {
row.Pos.Visible = true; row.Pos.Visible = true;
row.Name.Visible = true; row.Name.Visible = true;
@@ -587,12 +554,12 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
row.SingPoints.Visible = true; row.SingPoints.Visible = true;
row.GamePoints.Visible = true; row.GamePoints.Visible = true;
row.Pos.Text = _GameState.ResultTable[i + _PlayerTableOffset].Position + "."; row.Pos.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].Position + ".";
row.Name.Text = CBase.Profiles.GetPlayerName(_GameState.ResultTable[i + _PlayerTableOffset].PlayerID); row.Name.Text = CBase.Profiles.GetPlayerName(_PartyMode.GameData.ResultTable[i + _PlayerTableOffset].PlayerID);
row.Rounds.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumPlayed.ToString(); row.Rounds.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumPlayed.ToString();
row.Won.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumWon.ToString(); row.Won.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumWon.ToString();
row.SingPoints.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumSingPoints.ToString(); row.SingPoints.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumSingPoints.ToString();
row.GamePoints.Text = _GameState.ResultTable[i + _PlayerTableOffset].NumGamePoints.ToString(); row.GamePoints.Text = _PartyMode.GameData.ResultTable[i + _PlayerTableOffset].NumGamePoints.ToString();
} }
else else
{ {
@@ -606,37 +573,37 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
} }
_Buttons[_ButtonPlayerScrollUp].Visible = _PlayerTableOffset > 0; _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) private void _ScrollPlayerTable(int offset)
{ {
if (_GameState.ProfileIDs.Count <= _NumPlayerVisible) if (_PartyMode.GameData.ProfileIDs.Count <= _NumPlayerVisible)
_PlayerTableOffset = 0; _PlayerTableOffset = 0;
else if (offset < 0 && _PlayerTableOffset + offset >= 0) else if (offset < 0 && _PlayerTableOffset + offset >= 0)
_PlayerTableOffset += offset; _PlayerTableOffset += offset;
else if (offset < 0 && _PlayerTableOffset + offset < 0) else if (offset < 0 && _PlayerTableOffset + offset < 0)
_PlayerTableOffset = 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; _PlayerTableOffset += offset;
else if (offset > 0 && _PlayerTableOffset + offset > _GameState.ProfileIDs.Count - _NumPlayerVisible) else if (offset > 0 && _PlayerTableOffset + offset > _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible)
_PlayerTableOffset = _GameState.ProfileIDs.Count - _NumPlayerVisible; _PlayerTableOffset = _PartyMode.GameData.ProfileIDs.Count - _NumPlayerVisible;
_UpdatePlayerTable(); _UpdatePlayerTable();
} }
private void _ScrollRoundsTable(int offset) private void _ScrollRoundsTable(int offset)
{ {
if (_GameState.Combs.Count <= _NumRoundsVisible) if (_PartyMode.GameData.Rounds.Count <= _NumRoundsVisible)
_RoundsTableOffset = 0; _RoundsTableOffset = 0;
else if (offset < 0 && _RoundsTableOffset + offset >= 0) else if (offset < 0 && _RoundsTableOffset + offset >= 0)
_RoundsTableOffset += offset; _RoundsTableOffset += offset;
else if (offset < 0 && _RoundsTableOffset + offset < 0) else if (offset < 0 && _RoundsTableOffset + offset < 0)
_RoundsTableOffset = 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; _RoundsTableOffset += offset;
else if (offset > 0 && _RoundsTableOffset + offset > _GameState.Combs.Count - _NumRoundsVisible) else if (offset > 0 && _RoundsTableOffset + offset > _PartyMode.GameData.Rounds.Count - _NumRoundsVisible)
_RoundsTableOffset = _GameState.Combs.Count - _NumRoundsVisible; _RoundsTableOffset = _PartyMode.GameData.Rounds.Count - _NumRoundsVisible;
_UpdateRoundsTable(); _UpdateRoundsTable();
} }
@@ -644,13 +611,14 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
private string _GetPlayerWinString() private string _GetPlayerWinString()
{ {
string s = ""; 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) if (i > 0)
s += ", "; s += ", ";
s += CBase.Profiles.GetPlayerName(_GameState.ResultTable[i].PlayerID); s += CBase.Profiles.GetPlayerName(_PartyMode.GameData.ResultTable[i].PlayerID);
} }
else else
break; break;
@@ -15,7 +15,6 @@
// along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>. // along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>.
#endregion #endregion
using System;
using System.Collections.Generic; using System.Collections.Generic;
using VocaluxeLib.Menu; using VocaluxeLib.Menu;
@@ -31,58 +30,38 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
get { return 1; } get { return 1; }
} }
private SDataFromScreen _Data; private new CPartyModeChallengeMedley _PartyMode;
public override void Init() public override void Init()
{ {
base.Init(); base.Init();
_PartyMode = (CPartyModeChallengeMedley)base._PartyMode;
_Data.ScreenNames.ProfileIDs = new List<int>();
_Data = new SDataFromScreen();
var names = new SFromScreenNames {FadeToConfig = false, ProfileIDs = new List<int>()};
_Data.ScreenNames = names;
_AllowChangePlayerNum = false; _AllowChangePlayerNum = false;
} }
public override void DataToScreen(object receivedData) public override void OnShow()
{ {
try base.OnShow();
{ SetPartyModeData(_PartyMode.GameData.NumPlayer);
var config = (SDataToScreenNames)receivedData; while (_PartyMode.GameData.ProfileIDs.Count > _NumPlayer)
_Data.ScreenNames.ProfileIDs = config.ProfileIDs ?? new List<int>(); _PartyMode.GameData.ProfileIDs.RemoveAt(_PartyMode.GameData.ProfileIDs.Count - 1);
SetPartyModeData(config.NumPlayer); List<int>[] ids = new List<int>[] {_PartyMode.GameData.ProfileIDs};
SetPartyModeProfiles(ids);
while (_Data.ScreenNames.ProfileIDs.Count > _NumPlayer)
_Data.ScreenNames.ProfileIDs.RemoveAt(_Data.ScreenNames.ProfileIDs.Count - 1);
List<int>[] ids = new List<int>[] {_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 Back() public override void Back()
{ {
SPartyNameOptions options = GetData(); if (_TeamList.Length == 1)
if (options.TeamList.Length == 1) _PartyMode.GameData.ProfileIDs = _TeamList[0];
_Data.ScreenNames.ProfileIDs = options.TeamList[0]; _PartyMode.Back();
_Data.ScreenNames.FadeToConfig = true;
_PartyMode.DataFromScreen(ThemeName, _Data);
} }
public override void Next() public override void Next()
{ {
SPartyNameOptions options = GetData(); if (_TeamList.Length == 1)
if (options.TeamList.Length == 1) _PartyMode.GameData.ProfileIDs = _TeamList[0];
_Data.ScreenNames.ProfileIDs = options.TeamList[0]; _PartyMode.Next();
_Data.ScreenNames.FadeToConfig = false;
_PartyMode.DataFromScreen(ThemeName, _Data);
} }
} }
} }
@@ -53,81 +53,20 @@ namespace VocaluxeLib.PartyModes.TicTacToe
public bool Finished; public bool Finished;
} }
#region Communication public abstract class CPartyScreenTicTacToe : CMenuParty
#region ToScreen
public struct SDataToScreenConfig
{ {
public int NumFields; protected new CPartyModeTicTacToe _PartyMode;
public ESongSource SongSource;
public int CategoryID; public override void Init()
public int PlaylistID; {
public EPartyGameMode GameMode; base.Init();
_PartyMode = (CPartyModeTicTacToe)base._PartyMode;
}
} }
public struct SDataToScreenNames // ReSharper disable ClassNeverInstantiated.Global
{
public int NumPlayerTeam1;
public int NumPlayerTeam2;
public List<int> ProfileIDsTeam1;
public List<int> ProfileIDsTeam2;
}
public struct SDataToScreenMain
{
public int CurrentRoundNr;
public int Team;
public int NumFields;
public List<CRound> Rounds;
public List<int> Songs;
public List<int> ProfileIDsTeam1;
public List<int> ProfileIDsTeam2;
public List<int> PlayerTeam1;
public List<int> 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<int> ProfileIDsTeam1;
public List<int> ProfileIDsTeam2;
}
public struct SFromScreenMain
{
public bool FadeToSinging;
public bool FadeToNameSelection;
public List<int> PlayerTeam1;
public List<int> PlayerTeam2;
public List<CRound> Rounds;
public int SingRoundNr;
public List<int> Songs;
}
#endregion FromScreen
#endregion Communication
public sealed class CPartyModeTicTacToe : CPartyMode public sealed class CPartyModeTicTacToe : CPartyMode
// ReSharper restore ClassNeverInstantiated.Global
{ {
private const int _MaxPlayer = 20; private const int _MaxPlayer = 20;
private const int _MinPlayer = 2; private const int _MinPlayer = 2;
@@ -139,14 +78,13 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private enum EStage private enum EStage
{ {
NotStarted,
Config, Config,
Names, Names,
Main, Main,
Singing Singing
} }
private struct SData public struct SData
{ {
public int NumPlayerTeam1; public int NumPlayerTeam1;
public int NumPlayerTeam2; public int NumPlayerTeam2;
@@ -173,11 +111,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
public int[] NumJokerRetry; public int[] NumJokerRetry;
} }
private SDataToScreenConfig _ToScreenConfig; public SData GameData;
private SDataToScreenNames _ToScreenNames;
private SDataToScreenMain _ToScreenMain;
private SData _GameData;
private EStage _Stage; private EStage _Stage;
public CPartyModeTicTacToe(int id, string folder) public CPartyModeTicTacToe(int id, string folder)
@@ -193,17 +127,11 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_ScreenSongOptions.Sorting.SearchActive = false; _ScreenSongOptions.Sorting.SearchActive = false;
_ScreenSongOptions.Sorting.DuetOptions = EDuetOptions.NoDuets; _ScreenSongOptions.Sorting.DuetOptions = EDuetOptions.NoDuets;
_Stage = EStage.NotStarted; GameData = new SData
_ToScreenConfig = new SDataToScreenConfig();
_ToScreenNames = new SDataToScreenNames();
_ToScreenMain = new SDataToScreenMain();
_GameData = new SData
{ {
NumFields = 9,
NumPlayerTeam1 = 2, NumPlayerTeam1 = 2,
NumPlayerTeam2 = 2, NumPlayerTeam2 = 2,
NumFields = 9,
ProfileIDsTeam1 = new List<int>(), ProfileIDsTeam1 = new List<int>(),
ProfileIDsTeam2 = new List<int>(), ProfileIDsTeam2 = new List<int>(),
PlayerTeam1 = new List<int>(), PlayerTeam1 = new List<int>(),
@@ -223,7 +151,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
public override bool Init() public override bool Init()
{ {
_Stage = EStage.NotStarted; _Stage = EStage.Config;
_ScreenSongOptions.Sorting.IgnoreArticles = CBase.Config.GetIgnoreArticles(); _ScreenSongOptions.Sorting.IgnoreArticles = CBase.Config.GetIgnoreArticles();
_ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting(); _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) if (CBase.Config.GetTabs() == EOffOn.TR_CONFIG_ON && _ScreenSongOptions.Sorting.SongSorting != ESongSorting.TR_CONFIG_NONE)
_ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_ON; _ScreenSongOptions.Sorting.Tabs = EOffOn.TR_CONFIG_ON;
_ToScreenMain.Rounds = new List<CRound>(); GameData.Songs = new List<int>();
_ToScreenMain.Songs = new List<int>(); GameData.Rounds = new List<CRound>();
_ToScreenMain.PlayerTeam1 = new List<int>(); GameData.PlayerTeam1 = new List<int>();
_ToScreenMain.PlayerTeam2 = new List<int>(); GameData.PlayerTeam2 = new List<int>();
_GameData.Songs = new List<int>();
_GameData.Rounds = new List<CRound>();
_GameData.PlayerTeam1 = new List<int>();
_GameData.PlayerTeam2 = new List<int>();
return true; 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() public override void UpdateGame()
{ {
/* /*
@@ -336,98 +177,83 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_ScreenSongOptions.Selection.RandomOnly = false;*/ _ScreenSongOptions.Selection.RandomOnly = false;*/
} }
public override CMenuParty GetNextPartyScreen(out EScreens alternativeScreen) private IMenu _GetNextScreen()
{ {
CMenuParty screen = null;
alternativeScreen = EScreens.ScreenSong;
switch (_Stage) 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: case EStage.Config:
_Screens.TryGetValue("CPartyScreenTicTacToeNames", out screen); return _Screens["CPartyScreenTicTacToeConfig"];
if (screen != null) case EStage.Names:
{ return _Screens["CPartyScreenTicTacToeNames"];
_ToScreenNames.NumPlayerTeam1 = _GameData.NumPlayerTeam1; case EStage.Main:
_ToScreenNames.NumPlayerTeam2 = _GameData.NumPlayerTeam2; return _Screens["CPartyScreenTicTacToeMain"];
_ToScreenNames.ProfileIDsTeam1 = _GameData.ProfileIDsTeam1; case EStage.Singing:
_ToScreenNames.ProfileIDsTeam2 = _GameData.ProfileIDsTeam2; return CBase.Graphics.GetScreen(EScreen.Song);
screen.DataToScreen(_ToScreenNames); 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; break;
case EStage.Names: case EStage.Names:
_Screens.TryGetValue("CPartyScreenTicTacToeMain", out screen); _Stage = EStage.Main;
if (screen != null) GameData.Team = CBase.Game.GetRandom(100) < 50 ? 0 : 1;
{ CBase.Songs.ResetSongSung();
_GameData.Team = _GameData.Team == 1 ? 0 : 1; GameData.CurrentRoundNr = 1;
CBase.Songs.ResetSongSung(); _CreateRounds();
_GameData.CurrentRoundNr = 1; _SetNumJokers();
_ToScreenMain.CurrentRoundNr = 1; _PreparePlayerList(0);
_ToScreenMain.NumFields = _GameData.NumFields; _PrepareSongList();
_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);
}
break; break;
case EStage.Main: case EStage.Main:
//nothing to do _Stage = EStage.Singing;
_StartRound(GameData.SingRoundNr);
break; break;
case EStage.Singing: case EStage.Singing:
_Screens.TryGetValue("CPartyScreenTicTacToeMain", out screen); _Stage = EStage.Main;
if (screen != null) GameData.Team = GameData.Team == 1 ? 0 : 1;
{ _UpdateSongList();
_GameData.Team = _GameData.Team == 1 ? 0 : 1; _UpdatePlayerList();
_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);
}
break; break;
default:
throw new ArgumentException("Invalid stage: " + _Stage);
} }
_FadeToScreen();
return screen;
} }
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() public override SScreenSongOptions GetScreenSongOptions()
@@ -500,7 +326,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{ {
var gm = EGameMode.TR_GAMEMODE_NORMAL; var gm = EGameMode.TR_GAMEMODE_NORMAL;
switch (_GameData.GameMode) switch (GameData.GameMode)
{ {
case EPartyGameMode.TR_GAMEMODE_NORMAL: case EPartyGameMode.TR_GAMEMODE_NORMAL:
gm = EGameMode.TR_GAMEMODE_NORMAL; gm = EGameMode.TR_GAMEMODE_NORMAL;
@@ -516,23 +342,23 @@ namespace VocaluxeLib.PartyModes.TicTacToe
} }
CBase.Game.AddSong(songID, gm); CBase.Game.AddSong(songID, gm);
CBase.Graphics.FadeTo(EScreens.ScreenSing); CBase.Graphics.FadeTo(EScreen.Sing);
} }
public override void LeavingHighscore() public override void LeavingHighscore()
{ {
CBase.Songs.AddPartySongSung(CBase.Game.GetSong(0).ID); CBase.Songs.AddPartySongSung(CBase.Game.GetSong(0).ID);
_UpdateScores(); _UpdateScores();
CBase.Graphics.FadeTo(EScreens.ScreenPartyDummy); Next();
} }
private void _CreateRounds() private void _CreateRounds()
{ {
_GameData.Rounds = new List<CRound>(); GameData.Rounds = new List<CRound>();
for (int i = 0; i < _GameData.NumFields; i++) for (int i = 0; i < GameData.NumFields; i++)
{ {
var r = new CRound(); var r = new CRound();
_GameData.Rounds.Add(r); GameData.Rounds.Add(r);
} }
} }
@@ -542,41 +368,41 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{ {
case 0: case 0:
{ {
_GameData.PlayerTeam1 = new List<int>(); GameData.PlayerTeam1 = new List<int>();
_GameData.PlayerTeam2 = new List<int>(); GameData.PlayerTeam2 = new List<int>();
//Prepare Player-IDs //Prepare Player-IDs
var ids1 = new List<int>(); var ids1 = new List<int>();
var ids2 = new List<int>(); var ids2 = new List<int>();
//Add IDs to team-list //Add IDs to team-list
while (_GameData.PlayerTeam1.Count < _GameData.NumFields + _GameData.NumJokerRetry[0] && while (GameData.PlayerTeam1.Count < GameData.NumFields + GameData.NumJokerRetry[0] &&
_GameData.PlayerTeam2.Count < _GameData.NumFields + _GameData.NumJokerRetry[1]) GameData.PlayerTeam2.Count < GameData.NumFields + GameData.NumJokerRetry[1])
{ {
if (ids1.Count == 0) if (ids1.Count == 0)
{ {
for (int i = 0; i < _GameData.NumPlayerTeam1; i++) for (int i = 0; i < GameData.NumPlayerTeam1; i++)
ids1.Add(i); ids1.Add(i);
} }
if (ids2.Count == 0) if (ids2.Count == 0)
{ {
for (int i = 0; i < _GameData.NumPlayerTeam2; i++) for (int i = 0; i < GameData.NumPlayerTeam2; i++)
ids2.Add(i); ids2.Add(i);
} }
int num; 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); num = CBase.Game.GetRandom(ids1.Count);
if (num >= ids1.Count) if (num >= ids1.Count)
num = ids1.Count - 1; num = ids1.Count - 1;
_GameData.PlayerTeam1.Add(ids1[num]); GameData.PlayerTeam1.Add(ids1[num]);
ids1.RemoveAt(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); num = CBase.Game.GetRandom(ids2.Count);
if (num >= ids2.Count) if (num >= ids2.Count)
num = ids2.Count - 1; num = ids2.Count - 1;
_GameData.PlayerTeam2.Add(ids2[num]); GameData.PlayerTeam2.Add(ids2[num]);
ids2.RemoveAt(num); ids2.RemoveAt(num);
} }
} }
@@ -587,19 +413,19 @@ namespace VocaluxeLib.PartyModes.TicTacToe
//Prepare Player-IDs //Prepare Player-IDs
var ids = new List<int>(); var ids = new List<int>();
//Add IDs to team-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) if (ids.Count == 0)
{ {
for (int i = 0; i < _GameData.NumPlayerTeam1; i++) for (int i = 0; i < GameData.NumPlayerTeam1; i++)
ids.Add(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); int num = CBase.Game.GetRandom(ids.Count);
if (num >= ids.Count) if (num >= ids.Count)
num = ids.Count - 1; num = ids.Count - 1;
_GameData.PlayerTeam1.Add(ids[num]); GameData.PlayerTeam1.Add(ids[num]);
ids.RemoveAt(num); ids.RemoveAt(num);
} }
} }
@@ -610,19 +436,19 @@ namespace VocaluxeLib.PartyModes.TicTacToe
//Prepare Player-IDs //Prepare Player-IDs
var ids = new List<int>(); var ids = new List<int>();
//Add IDs to team-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) if (ids.Count == 0)
{ {
for (int i = 0; i < _GameData.NumPlayerTeam2; i++) for (int i = 0; i < GameData.NumPlayerTeam2; i++)
ids.Add(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); int num = CBase.Game.GetRandom(ids.Count);
if (num >= ids.Count) if (num >= ids.Count)
num = ids.Count - 1; num = ids.Count - 1;
_GameData.PlayerTeam2.Add(ids[num]); GameData.PlayerTeam2.Add(ids[num]);
ids.RemoveAt(num); ids.RemoveAt(num);
} }
} }
@@ -635,7 +461,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{ {
var gm = EGameMode.TR_GAMEMODE_NORMAL; var gm = EGameMode.TR_GAMEMODE_NORMAL;
switch (_GameData.GameMode) switch (GameData.GameMode)
{ {
case EPartyGameMode.TR_GAMEMODE_NORMAL: case EPartyGameMode.TR_GAMEMODE_NORMAL:
gm = EGameMode.TR_GAMEMODE_NORMAL; gm = EGameMode.TR_GAMEMODE_NORMAL;
@@ -650,15 +476,15 @@ namespace VocaluxeLib.PartyModes.TicTacToe
break; 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<int>(); var songs = new List<int>();
switch (_GameData.SongSource) switch (GameData.SongSource)
{ {
case ESongSource.TR_PLAYLIST: 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 // ReSharper disable LoopCanBeConvertedToQuery
foreach (EGameMode mode in CBase.Songs.GetSongByID(id).AvailableGameModes) foreach (EGameMode mode in CBase.Songs.GetSongByID(id).AvailableGameModes)
// ReSharper restore LoopCanBeConvertedToQuery // ReSharper restore LoopCanBeConvertedToQuery
@@ -683,7 +509,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
break; break;
case ESongSource.TR_CATEGORY: case ESongSource.TR_CATEGORY:
CBase.Songs.SetCategory(_GameData.CategoryID); CBase.Songs.SetCategory(GameData.CategoryID);
for (int i = 0; i < CBase.Songs.GetNumSongsVisible(); i++) for (int i = 0; i < CBase.Songs.GetNumSongsVisible(); i++)
{ {
// ReSharper disable LoopCanBeConvertedToQuery // ReSharper disable LoopCanBeConvertedToQuery
@@ -699,23 +525,23 @@ namespace VocaluxeLib.PartyModes.TicTacToe
} }
while (songs.Count > 0) while (songs.Count > 0)
{ {
_GameData.Songs.Add(songs[CBase.Game.GetRandom(songs.Count - 1)]); GameData.Songs.Add(songs[CBase.Game.GetRandom(songs.Count - 1)]);
songs.Remove(_GameData.Songs[_GameData.Songs.Count - 1]); songs.Remove(GameData.Songs[GameData.Songs.Count - 1]);
} }
} }
} }
private void _UpdatePlayerList() private void _UpdatePlayerList()
{ {
if (_GameData.PlayerTeam1.Count == 0) if (GameData.PlayerTeam1.Count == 0)
_PreparePlayerList(1); _PreparePlayerList(1);
if (_GameData.PlayerTeam2.Count == 0) if (GameData.PlayerTeam2.Count == 0)
_PreparePlayerList(2); _PreparePlayerList(2);
} }
private void _UpdateSongList() private void _UpdateSongList()
{ {
if (_GameData.Songs.Count == 0) if (GameData.Songs.Count == 0)
_PrepareSongList(); _PrepareSongList();
} }
@@ -733,7 +559,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
if (players.Length < 2) if (players.Length < 2)
return; return;
CRound r = _GameData.Rounds[roundNr]; CRound r = GameData.Rounds[roundNr];
bool isDuet = CBase.Songs.GetSongByID(r.SongID).IsDuet; bool isDuet = CBase.Songs.GetSongByID(r.SongID).IsDuet;
for (int i = 0; i < 2; i++) for (int i = 0; i < 2; i++)
@@ -745,11 +571,11 @@ namespace VocaluxeLib.PartyModes.TicTacToe
//try to fill with the right data //try to fill with the right data
if (r != null) if (r != null)
{ {
players[0].ProfileID = _GameData.ProfileIDsTeam1[r.SingerTeam1]; players[0].ProfileID = GameData.ProfileIDsTeam1[r.SingerTeam1];
if (isDuet) if (isDuet)
players[0].VoiceNr = 0; players[0].VoiceNr = 0;
players[1].ProfileID = _GameData.ProfileIDsTeam2[r.SingerTeam2]; players[1].ProfileID = GameData.ProfileIDsTeam2[r.SingerTeam2];
if (isDuet) if (isDuet)
players[1].VoiceNr = 1; players[1].VoiceNr = 1;
@@ -759,35 +585,35 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private void _SetNumJokers() private void _SetNumJokers()
{ {
switch (_GameData.NumFields) switch (GameData.NumFields)
{ {
case 9: case 9:
_GameData.NumJokerRandom[0] = 1; GameData.NumJokerRandom[0] = 1;
_GameData.NumJokerRandom[1] = 1; GameData.NumJokerRandom[1] = 1;
_GameData.NumJokerRetry[0] = 0; GameData.NumJokerRetry[0] = 0;
_GameData.NumJokerRetry[1] = 0; GameData.NumJokerRetry[1] = 0;
break; break;
case 16: case 16:
_GameData.NumJokerRandom[0] = 2; GameData.NumJokerRandom[0] = 2;
_GameData.NumJokerRandom[1] = 2; GameData.NumJokerRandom[1] = 2;
_GameData.NumJokerRetry[0] = 1; GameData.NumJokerRetry[0] = 1;
_GameData.NumJokerRetry[1] = 1; GameData.NumJokerRetry[1] = 1;
break; break;
case 25: case 25:
_GameData.NumJokerRandom[0] = 3; GameData.NumJokerRandom[0] = 3;
_GameData.NumJokerRandom[1] = 3; GameData.NumJokerRandom[1] = 3;
_GameData.NumJokerRetry[0] = 2; GameData.NumJokerRetry[0] = 2;
_GameData.NumJokerRetry[1] = 2; GameData.NumJokerRetry[1] = 2;
break; break;
} }
} }
private void _UpdateScores() private void _UpdateScores()
{ {
if (!_GameData.Rounds[_GameData.SingRoundNr].Finished) if (!GameData.Rounds[GameData.SingRoundNr].Finished)
_GameData.CurrentRoundNr++; GameData.CurrentRoundNr++;
SPlayer[] results = CBase.Game.GetPlayers(); SPlayer[] results = CBase.Game.GetPlayers();
if (results == null) if (results == null)
@@ -796,17 +622,17 @@ namespace VocaluxeLib.PartyModes.TicTacToe
if (results.Length < 2) if (results.Length < 2)
return; return;
_GameData.Rounds[_GameData.SingRoundNr].PointsTeam1 = (int)Math.Round(results[0].Points); 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].PointsTeam2 = (int)Math.Round(results[1].Points);
_GameData.Rounds[_GameData.SingRoundNr].Finished = true; GameData.Rounds[GameData.SingRoundNr].Finished = true;
if (_GameData.Rounds[_GameData.SingRoundNr].PointsTeam1 < _GameData.Rounds[_GameData.SingRoundNr].PointsTeam2) if (GameData.Rounds[GameData.SingRoundNr].PointsTeam1 < GameData.Rounds[GameData.SingRoundNr].PointsTeam2)
_GameData.Rounds[_GameData.SingRoundNr].Winner = 2; GameData.Rounds[GameData.SingRoundNr].Winner = 2;
else if (_GameData.Rounds[_GameData.SingRoundNr].PointsTeam1 > _GameData.Rounds[_GameData.SingRoundNr].PointsTeam2) else if (GameData.Rounds[GameData.SingRoundNr].PointsTeam1 > GameData.Rounds[GameData.SingRoundNr].PointsTeam2)
_GameData.Rounds[_GameData.SingRoundNr].Winner = 1; GameData.Rounds[GameData.SingRoundNr].Winner = 1;
else else
{ {
_GameData.Rounds[_GameData.SingRoundNr].Finished = false; GameData.Rounds[GameData.SingRoundNr].Finished = false;
_GameData.CurrentRoundNr--; GameData.CurrentRoundNr--;
} }
} }
} }
@@ -15,17 +15,15 @@
// along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>. // along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>.
#endregion #endregion
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
using VocaluxeLib.Menu;
using VocaluxeLib.Songs; using VocaluxeLib.Songs;
namespace VocaluxeLib.PartyModes.TicTacToe namespace VocaluxeLib.PartyModes.TicTacToe
{ {
// ReSharper disable UnusedMember.Global // ReSharper disable UnusedMember.Global
public class CPartyScreenTicTacToeConfig : CMenuParty public class CPartyScreenTicTacToeConfig : CPartyScreenTicTacToe
// ReSharper restore UnusedMember.Global // ReSharper restore UnusedMember.Global
{ {
// Version number for theme files. Increment it, if you've changed something on the theme files! // 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 bool _ConfigOk = true;
private SDataFromScreen _Data;
public override void Init() public override void Init()
{ {
base.Init(); base.Init();
@@ -55,34 +51,6 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_SelectSlideNumFields, _SelectSlideSongSource, _SelectSlidePlaylist, _SelectSlideCategory, _SelectSlideGameMode _SelectSlideNumFields, _SelectSlideSongSource, _SelectSlidePlaylist, _SelectSlideCategory, _SelectSlideGameMode
}; };
_ThemeButtons = new string[] {_ButtonNext, _ButtonBack}; _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) public override bool HandleInput(SKeyEvent keyEvent)
@@ -96,17 +64,17 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{ {
case Keys.Back: case Keys.Back:
case Keys.Escape: case Keys.Escape:
_Back(); _PartyMode.Back();
break; break;
case Keys.Enter: case Keys.Enter:
_UpdateSlides(); _UpdateSlides();
if (_Buttons[_ButtonBack].Selected) if (_Buttons[_ButtonBack].Selected)
_Back(); _PartyMode.Back();
if (_Buttons[_ButtonNext].Selected) if (_Buttons[_ButtonNext].Selected)
_Next(); _PartyMode.Next();
break; break;
case Keys.Left: case Keys.Left:
@@ -129,14 +97,14 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{ {
_UpdateSlides(); _UpdateSlides();
if (_Buttons[_ButtonBack].Selected) if (_Buttons[_ButtonBack].Selected)
_Back(); _PartyMode.Back();
if (_Buttons[_ButtonNext].Selected) if (_Buttons[_ButtonNext].Selected)
_Next(); _PartyMode.Next();
} }
if (mouseEvent.RB) if (mouseEvent.RB)
_Back(); _PartyMode.Back();
return true; return true;
} }
@@ -164,15 +132,15 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_SelectSlides[_SelectSlideNumFields].AddValue("9"); _SelectSlides[_SelectSlideNumFields].AddValue("9");
_SelectSlides[_SelectSlideNumFields].AddValue("16"); _SelectSlides[_SelectSlideNumFields].AddValue("16");
_SelectSlides[_SelectSlideNumFields].AddValue("25"); _SelectSlides[_SelectSlideNumFields].AddValue("25");
if (_Data.ScreenConfig.NumFields == 9) if (_PartyMode.GameData.NumFields == 9)
_SelectSlides[_SelectSlideNumFields].Selection = 0; _SelectSlides[_SelectSlideNumFields].Selection = 0;
else if (_Data.ScreenConfig.NumFields == 16) else if (_PartyMode.GameData.NumFields == 16)
_SelectSlides[_SelectSlideNumFields].Selection = 1; _SelectSlides[_SelectSlideNumFields].Selection = 1;
else if (_Data.ScreenConfig.NumFields == 25) else if (_PartyMode.GameData.NumFields == 25)
_SelectSlides[_SelectSlideNumFields].Selection = 2; _SelectSlides[_SelectSlideNumFields].Selection = 2;
_SelectSlides[_SelectSlideSongSource].Clear(); _SelectSlides[_SelectSlideSongSource].Clear();
_SelectSlides[_SelectSlideSongSource].SetValues<ESongSource>((int)_Data.ScreenConfig.SongSource); _SelectSlides[_SelectSlideSongSource].SetValues<ESongSource>((int)_PartyMode.GameData.SongSource);
List<string> playlists = CBase.Playlist.GetNames(); List<string> playlists = CBase.Playlist.GetNames();
_SelectSlides[_SelectSlidePlaylist].Clear(); _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) + ")"; string value = playlists[i] + " (" + CBase.Playlist.GetSongCount(i) + " " + CBase.Language.Translate("TR_SONGS", PartyModeID) + ")";
_SelectSlides[_SelectSlidePlaylist].AddValue(value); _SelectSlides[_SelectSlidePlaylist].AddValue(value);
} }
_SelectSlides[_SelectSlidePlaylist].Selection = _Data.ScreenConfig.PlaylistID; _SelectSlides[_SelectSlidePlaylist].Selection = _PartyMode.GameData.PlaylistID;
_SelectSlides[_SelectSlidePlaylist].Visible = _Data.ScreenConfig.SongSource == ESongSource.TR_PLAYLIST; _SelectSlides[_SelectSlidePlaylist].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_PLAYLIST;
var categories = new string[CBase.Songs.GetNumCategories()]; var categories = new string[CBase.Songs.GetNumCategories()];
for (int i = 0; i < CBase.Songs.GetNumCategories(); i++) 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) + ")"; string value = categories[i] + " (" + CBase.Songs.GetNumSongsNotSungInCategory(i) + " " + CBase.Language.Translate("TR_SONGS", PartyModeID) + ")";
_SelectSlides[_SelectSlideCategory].AddValue(value); _SelectSlides[_SelectSlideCategory].AddValue(value);
} }
_SelectSlides[_SelectSlideCategory].Selection = _Data.ScreenConfig.CategoryID; _SelectSlides[_SelectSlideCategory].Selection = _PartyMode.GameData.CategoryID;
_SelectSlides[_SelectSlideCategory].Visible = _Data.ScreenConfig.SongSource == ESongSource.TR_CATEGORY; _SelectSlides[_SelectSlideCategory].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_CATEGORY;
_SelectSlides[_SelectSlideGameMode].Visible = true; _SelectSlides[_SelectSlideGameMode].Visible = true;
_SelectSlides[_SelectSlideGameMode].SetValues<EPartyGameMode>((int)_Data.ScreenConfig.GameMode); _SelectSlides[_SelectSlideGameMode].SetValues<EPartyGameMode>((int)_PartyMode.GameData.GameMode);
} }
private void _UpdateSlides() private void _UpdateSlides()
{ {
if (_SelectSlides[_SelectSlideNumFields].Selection == 0) if (_SelectSlides[_SelectSlideNumFields].Selection == 0)
_Data.ScreenConfig.NumFields = 9; _PartyMode.GameData.NumFields = 9;
else if (_SelectSlides[_SelectSlideNumFields].Selection == 1) else if (_SelectSlides[_SelectSlideNumFields].Selection == 1)
_Data.ScreenConfig.NumFields = 16; _PartyMode.GameData.NumFields = 16;
else if (_SelectSlides[_SelectSlideNumFields].Selection == 2) else if (_SelectSlides[_SelectSlideNumFields].Selection == 2)
_Data.ScreenConfig.NumFields = 25; _PartyMode.GameData.NumFields = 25;
_Data.ScreenConfig.SongSource = (ESongSource)_SelectSlides[_SelectSlideSongSource].Selection; _PartyMode.GameData.SongSource = (ESongSource)_SelectSlides[_SelectSlideSongSource].Selection;
_Data.ScreenConfig.PlaylistID = _SelectSlides[_SelectSlidePlaylist].Selection; _PartyMode.GameData.PlaylistID = _SelectSlides[_SelectSlidePlaylist].Selection;
_Data.ScreenConfig.CategoryID = _SelectSlides[_SelectSlideCategory].Selection; _PartyMode.GameData.CategoryID = _SelectSlides[_SelectSlideCategory].Selection;
_Data.ScreenConfig.GameMode = (EPartyGameMode)_SelectSlides[_SelectSlideGameMode].Selection; _PartyMode.GameData.GameMode = (EPartyGameMode)_SelectSlides[_SelectSlideGameMode].Selection;
var gm = EGameMode.TR_GAMEMODE_NORMAL; var gm = EGameMode.TR_GAMEMODE_NORMAL;
switch (_Data.ScreenConfig.GameMode) switch (_PartyMode.GameData.GameMode)
{ {
case EPartyGameMode.TR_GAMEMODE_NORMAL: case EPartyGameMode.TR_GAMEMODE_NORMAL:
gm = EGameMode.TR_GAMEMODE_NORMAL; gm = EGameMode.TR_GAMEMODE_NORMAL;
@@ -231,16 +199,16 @@ namespace VocaluxeLib.PartyModes.TicTacToe
break; break;
} }
if (_Data.ScreenConfig.SongSource == ESongSource.TR_PLAYLIST) if (_PartyMode.GameData.SongSource == ESongSource.TR_PLAYLIST)
{ {
if (CBase.Playlist.GetNumPlaylists() > 0) if (CBase.Playlist.GetNumPlaylists() > 0)
{ {
if (CBase.Playlist.GetSongCount(_Data.ScreenConfig.PlaylistID) > 0) if (CBase.Playlist.GetSongCount(_PartyMode.GameData.PlaylistID) > 0)
{ {
_ConfigOk = false; _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); _ConfigOk = CBase.Songs.GetSongByID(id).AvailableGameModes.Any(mode => mode == gm);
if (_ConfigOk) if (_ConfigOk)
break; break;
@@ -252,15 +220,15 @@ namespace VocaluxeLib.PartyModes.TicTacToe
else else
_ConfigOk = false; _ConfigOk = false;
} }
if (_Data.ScreenConfig.SongSource == ESongSource.TR_CATEGORY) if (_PartyMode.GameData.SongSource == ESongSource.TR_CATEGORY)
{ {
if (CBase.Songs.GetNumCategories() == 0) if (CBase.Songs.GetNumCategories() == 0)
_ConfigOk = false; _ConfigOk = false;
else if (CBase.Songs.GetNumSongsNotSungInCategory(_Data.ScreenConfig.CategoryID) <= 0) else if (CBase.Songs.GetNumSongsNotSungInCategory(_PartyMode.GameData.CategoryID) <= 0)
_ConfigOk = false; _ConfigOk = false;
else else
{ {
CBase.Songs.SetCategory(_Data.ScreenConfig.CategoryID); CBase.Songs.SetCategory(_PartyMode.GameData.CategoryID);
_ConfigOk = false; _ConfigOk = false;
foreach (CSong song in CBase.Songs.GetVisibleSongs()) foreach (CSong song in CBase.Songs.GetVisibleSongs())
{ {
@@ -271,7 +239,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
CBase.Songs.SetCategory(-1); CBase.Songs.SetCategory(-1);
} }
} }
if (_Data.ScreenConfig.SongSource == ESongSource.TR_ALLSONGS) if (_PartyMode.GameData.SongSource == ESongSource.TR_ALLSONGS)
{ {
if (CBase.Songs.GetNumSongs() > 0) if (CBase.Songs.GetNumSongs() > 0)
{ {
@@ -285,18 +253,8 @@ namespace VocaluxeLib.PartyModes.TicTacToe
else else
_ConfigOk = false; _ConfigOk = false;
} }
_SelectSlides[_SelectSlideCategory].Visible = _Data.ScreenConfig.SongSource == ESongSource.TR_CATEGORY; _SelectSlides[_SelectSlideCategory].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_CATEGORY;
_SelectSlides[_SelectSlidePlaylist].Visible = _Data.ScreenConfig.SongSource == ESongSource.TR_PLAYLIST; _SelectSlides[_SelectSlidePlaylist].Visible = _PartyMode.GameData.SongSource == ESongSource.TR_PLAYLIST;
}
private void _Back()
{
_FadeTo(EScreens.ScreenParty);
}
private void _Next()
{
_PartyMode.DataFromScreen(ThemeName, _Data);
} }
} }
} }
@@ -37,7 +37,9 @@ namespace VocaluxeLib.PartyModes.TicTacToe
None 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! // Version number for theme files. Increment it, if you've changed something on the theme files!
protected override int _ScreenVersion protected override int _ScreenVersion
@@ -71,9 +73,6 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private bool _ExitPopupVisible; private bool _ExitPopupVisible;
private SDataFromScreen _Data;
private SDataToScreenMain _GameData;
private List<CField> _Fields; private List<CField> _Fields;
private float _FieldFirstX = 25; private float _FieldFirstX = 25;
private float _FieldFirstY = 25; private float _FieldFirstY = 25;
@@ -100,18 +99,6 @@ namespace VocaluxeLib.PartyModes.TicTacToe
}; };
_ThemeStatics = new string[] {_StaticPopupBG, _StaticAvatarT1, _StaticAvatarT2}; _ThemeStatics = new string[] {_StaticPopupBG, _StaticAvatarT1, _StaticAvatarT2};
_Data = new SDataFromScreen();
var config = new SFromScreenMain();
_GameData = new SDataToScreenMain();
config.SingRoundNr = 1;
config.Rounds = new List<CRound>();
config.Songs = new List<int>();
config.PlayerTeam1 = new List<int>();
config.PlayerTeam2 = new List<int>();
config.FadeToNameSelection = false;
config.FadeToSinging = false;
_Data.ScreenMain = config;
_Fields = new List<CField>(); _Fields = new List<CField>();
} }
@@ -123,19 +110,6 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_Buttons[_ButtonField].Visible = false; _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) public override bool HandleInput(SKeyEvent keyEvent)
{ {
base.HandleInput(keyEvent); base.HandleInput(keyEvent);
@@ -149,7 +123,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
case Keys.Escape: case Keys.Escape:
if (!_ExitPopupVisible) if (!_ExitPopupVisible)
{ {
if (_GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected) if (_PartyMode.GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected)
_Back(); _Back();
else if (_Status == EStatus.None) else if (_Status == EStatus.None)
_EndParty(); _EndParty();
@@ -165,13 +139,13 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{ {
if (_Buttons[_ButtonNextRound].Selected) if (_Buttons[_ButtonNextRound].Selected)
_NextRound(); _NextRound();
if (_Buttons[_ButtonBack].Selected && _GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected) if (_Buttons[_ButtonBack].Selected && _PartyMode.GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected)
_Back(); _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); _ShowPopup(true);
else if (_Status == EStatus.None) else if (_Status == EStatus.None)
_EndParty(); _EndParty();
for (int i = 0; i < _GameData.NumFields; i++) for (int i = 0; i < _PartyMode.GameData.NumFields; i++)
{ {
switch (_Status) switch (_Status)
{ {
@@ -236,7 +210,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
else else
_ShowPopup(true); _ShowPopup(true);
} }
for (int i = 0; i < _GameData.NumFields; i++) for (int i = 0; i < _PartyMode.GameData.NumFields; i++)
{ {
switch (_Status) switch (_Status)
{ {
@@ -282,7 +256,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{ {
if (!_ExitPopupVisible) if (!_ExitPopupVisible)
{ {
if (_GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected) if (_PartyMode.GameData.CurrentRoundNr == 1 && _Status != EStatus.FieldSelected)
_Back(); _Back();
else if (_Status == EStatus.None) else if (_Status == EStatus.None)
_EndParty(); _EndParty();
@@ -304,7 +278,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_PreviewStream = -1; _PreviewStream = -1;
if (_GameData.CurrentRoundNr == 1) if (_PartyMode.GameData.CurrentRoundNr == 1)
{ {
_BuildWinnerPossibilities(); _BuildWinnerPossibilities();
_SelectedField = -1; _SelectedField = -1;
@@ -325,7 +299,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_UpdateFieldContents(); _UpdateFieldContents();
int winner = _GetWinner(); int winner = _GetWinner();
if (_GameData.CurrentRoundNr <= _GameData.NumFields && winner == 0) if (_PartyMode.GameData.CurrentRoundNr <= _PartyMode.GameData.NumFields && winner == 0)
{ {
_UpdateTeamChoosingMessage(); _UpdateTeamChoosingMessage();
_Texts[_TextNextPlayerT1].Visible = false; _Texts[_TextNextPlayerT1].Visible = false;
@@ -390,7 +364,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private void _UpdateFields() 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 fieldSizeY = ((float)CBase.Settings.GetRenderH() - 150 - numOneRow * _FieldSpace) / numOneRow;
float fieldSizeX = ((float)CBase.Settings.GetRenderW() - 300 - numOneRow * _FieldSpace) / numOneRow; float fieldSizeX = ((float)CBase.Settings.GetRenderW() - 300 - numOneRow * _FieldSpace) / numOneRow;
_FieldSize = Math.Min(fieldSizeX, fieldSizeY); _FieldSize = Math.Min(fieldSizeX, fieldSizeY);
@@ -402,7 +376,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
float y = _FieldFirstY; float y = _FieldFirstY;
for (int i = 0; i < _Fields.Count; i++) 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.W = _FieldSize;
_Fields[i].Button.H = _FieldSize; _Fields[i].Button.H = _FieldSize;
@@ -431,13 +405,13 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private void _UpdateFieldContents() 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.Selectable = true;
_Fields[i].Button.Texture = _Buttons[_ButtonField].Texture; _Fields[i].Button.Texture = _Buttons[_ButtonField].Texture;
_Fields[i].Button.Color = _Buttons[_ButtonField].Color; _Fields[i].Button.Color = _Buttons[_ButtonField].Color;
_Fields[i].Button.SelColor = _Buttons[_ButtonField].SelColor; _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) if (_Fields[i].Content.Finished)
{ {
_Fields[i].Button.Selectable = false; _Fields[i].Button.Selectable = false;
@@ -454,7 +428,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
} }
if (_Status == EStatus.JokerRetry && _Fields[i].Content.Finished) 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; _Fields[i].Button.Selectable = true;
} }
if (_Status == EStatus.JokerRetry && !_Fields[i].Content.Finished) if (_Status == EStatus.JokerRetry && !_Fields[i].Content.Finished)
@@ -471,40 +445,33 @@ namespace VocaluxeLib.PartyModes.TicTacToe
int singerTeam1 = 0; int singerTeam1 = 0;
int singerTeam2 = 0; int singerTeam2 = 0;
if (_GameData.PlayerTeam1.Count > 0) if (_PartyMode.GameData.PlayerTeam1.Count > 0)
{ {
singerTeam1 = _GameData.PlayerTeam1[0]; singerTeam1 = _PartyMode.GameData.PlayerTeam1[0];
_GameData.PlayerTeam1.RemoveAt(0); _PartyMode.GameData.PlayerTeam1.RemoveAt(0);
} }
if (_GameData.PlayerTeam2.Count > 0) if (_PartyMode.GameData.PlayerTeam2.Count > 0)
{ {
singerTeam2 = _GameData.PlayerTeam2[0]; singerTeam2 = _PartyMode.GameData.PlayerTeam2[0];
_GameData.PlayerTeam2.RemoveAt(0); _PartyMode.GameData.PlayerTeam2.RemoveAt(0);
} }
_GameData.Rounds[_SelectedField].SingerTeam1 = singerTeam1; _PartyMode.GameData.Rounds[_SelectedField].SingerTeam1 = singerTeam1;
_GameData.Rounds[_SelectedField].SingerTeam2 = singerTeam2; _PartyMode.GameData.Rounds[_SelectedField].SingerTeam2 = singerTeam2;
_UpdatePlayerInformation(); _UpdatePlayerInformation();
} }
int songID = 0; int songID = 0;
if (_GameData.Songs.Count > 0) if (_PartyMode.GameData.Songs.Count > 0)
{ {
songID = _GameData.Songs[0]; songID = _PartyMode.GameData.Songs[0];
_GameData.Songs.RemoveAt(0); _PartyMode.GameData.Songs.RemoveAt(0);
} }
CSong song = CBase.Songs.GetSongByID(songID);
CBase.BackgroundMusic.SetDisabled(true); _StartPreview(songID);
_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);
_Status = EStatus.FieldSelected; _Status = EStatus.FieldSelected;
_Fields[_SelectedField].Content.SongID = songID; _Fields[_SelectedField].Content.SongID = songID;
_GameData.Rounds[_SelectedField].SongID = songID; _PartyMode.GameData.Rounds[_SelectedField].SongID = songID;
_UpdateFieldContents(); _UpdateFieldContents();
_UpdateJokerButtons(); _UpdateJokerButtons();
@@ -518,23 +485,15 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private void _FieldSelectedAgain() private void _FieldSelectedAgain()
{ {
int songID = _Fields[_SelectedField].Content.SongID; int songID = _Fields[_SelectedField].Content.SongID;
CSong song = CBase.Songs.GetSongByID(songID); _StartPreview(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);
_Status = EStatus.FieldSelected; _Status = EStatus.FieldSelected;
_Fields[_SelectedField].Content.SongID = songID; _Fields[_SelectedField].Content.SongID = songID;
_GameData.Rounds[_SelectedField].SongID = songID; _PartyMode.GameData.Rounds[_SelectedField].SongID = songID;
_GameData.Rounds[_SelectedField].SingerTeam1 = _GameData.Rounds[_OldSelectedField].SingerTeam1; _PartyMode.GameData.Rounds[_SelectedField].SingerTeam1 = _PartyMode.GameData.Rounds[_OldSelectedField].SingerTeam1;
_GameData.Rounds[_SelectedField].SingerTeam2 = _GameData.Rounds[_OldSelectedField].SingerTeam2; _PartyMode.GameData.Rounds[_SelectedField].SingerTeam2 = _PartyMode.GameData.Rounds[_OldSelectedField].SingerTeam2;
_UpdateFieldContents(); _UpdateFieldContents();
_UpdatePlayerInformation(); _UpdatePlayerInformation();
_UpdateJokerButtons(); _UpdateJokerButtons();
_Buttons[_ButtonNextRound].Visible = true; _Buttons[_ButtonNextRound].Visible = true;
@@ -544,18 +503,31 @@ namespace VocaluxeLib.PartyModes.TicTacToe
_SelectElement(_Buttons[_ButtonNextRound]); _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, 0f);
CBase.Sound.Play(_PreviewStream);
CBase.Sound.Fade(_PreviewStream, 1f, 1f);
}
private void _UpdatePlayerInformation() private void _UpdatePlayerInformation()
{ {
_Texts[_TextNextPlayerT1].Visible = true; _Texts[_TextNextPlayerT1].Visible = true;
_Texts[_TextNextPlayerT2].Visible = true; _Texts[_TextNextPlayerT2].Visible = true;
_Texts[_TextNextPlayerNameT1].Visible = true; _Texts[_TextNextPlayerNameT1].Visible = true;
_Texts[_TextNextPlayerNameT2].Visible = true; _Texts[_TextNextPlayerNameT2].Visible = true;
_Texts[_TextNextPlayerNameT1].Text = CBase.Profiles.GetPlayerName(_GameData.ProfileIDsTeam1[_GameData.Rounds[_SelectedField].SingerTeam1]); _Texts[_TextNextPlayerNameT1].Text = CBase.Profiles.GetPlayerName(_PartyMode.GameData.ProfileIDsTeam1[_PartyMode.GameData.Rounds[_SelectedField].SingerTeam1]);
_Texts[_TextNextPlayerNameT2].Text = CBase.Profiles.GetPlayerName(_GameData.ProfileIDsTeam2[_GameData.Rounds[_SelectedField].SingerTeam2]); _Texts[_TextNextPlayerNameT2].Text = CBase.Profiles.GetPlayerName(_PartyMode.GameData.ProfileIDsTeam2[_PartyMode.GameData.Rounds[_SelectedField].SingerTeam2]);
_Statics[_StaticAvatarT1].Visible = true; _Statics[_StaticAvatarT1].Visible = true;
_Statics[_StaticAvatarT2].Visible = true; _Statics[_StaticAvatarT2].Visible = true;
_Statics[_StaticAvatarT1].Texture = CBase.Profiles.GetAvatar(_GameData.ProfileIDsTeam1[_GameData.Rounds[_SelectedField].SingerTeam1]); _Statics[_StaticAvatarT1].Texture = CBase.Profiles.GetAvatar(_PartyMode.GameData.ProfileIDsTeam1[_PartyMode.GameData.Rounds[_SelectedField].SingerTeam1]);
_Statics[_StaticAvatarT2].Texture = CBase.Profiles.GetAvatar(_GameData.ProfileIDsTeam2[_GameData.Rounds[_SelectedField].SingerTeam2]); _Statics[_StaticAvatarT2].Texture = CBase.Profiles.GetAvatar(_PartyMode.GameData.ProfileIDsTeam2[_PartyMode.GameData.Rounds[_SelectedField].SingerTeam2]);
} }
private void _UseJoker(int teamNr, int jokerNum) private void _UseJoker(int teamNr, int jokerNum)
@@ -564,9 +536,9 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{ {
//Random-Joker //Random-Joker
case 0: 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)) if (!CBase.Sound.IsFinished(_PreviewStream))
CBase.Sound.Fade(_PreviewStream, 0, 1, EStreamAction.Close); CBase.Sound.Fade(_PreviewStream, 0, 1, EStreamAction.Close);
_FieldSelected(true); _FieldSelected(true);
@@ -575,10 +547,10 @@ namespace VocaluxeLib.PartyModes.TicTacToe
//Retry-Joker //Retry-Joker
case 1: case 1:
if (_GameData.NumJokerRetry[teamNr] > 0 && _GameData.CurrentRoundNr > 1) if (_PartyMode.GameData.NumJokerRetry[teamNr] > 0 && _PartyMode.GameData.CurrentRoundNr > 1)
{ {
_GameData.NumJokerRetry[teamNr]--; _PartyMode.GameData.NumJokerRetry[teamNr]--;
_GameData.Team = teamNr; _PartyMode.GameData.Team = teamNr;
if (!CBase.Sound.IsFinished(_PreviewStream)) if (!CBase.Sound.IsFinished(_PreviewStream))
CBase.Sound.Fade(_PreviewStream, 0, 1, EStreamAction.Close); CBase.Sound.Fade(_PreviewStream, 0, 1, EStreamAction.Close);
_Status = EStatus.JokerRetry; _Status = EStatus.JokerRetry;
@@ -594,8 +566,8 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private void _UpdateTeamChoosingMessage() private void _UpdateTeamChoosingMessage()
{ {
_Texts[_TextTeamChoosing].Color = CBase.Themes.GetPlayerColor(_GameData.Team + 1); _Texts[_TextTeamChoosing].Color = CBase.Themes.GetPlayerColor(_PartyMode.GameData.Team + 1);
_Texts[_TextTeamChoosing].Text = CBase.Language.Translate("TR_TEAM", PartyModeID) + " " + (_GameData.Team + 1) + "! " + _Texts[_TextTeamChoosing].Text = CBase.Language.Translate("TR_TEAM", PartyModeID) + " " + (_PartyMode.GameData.Team + 1) + "! " +
CBase.Language.Translate("TR_SCREENMAIN_TEAM_CHOOSE", PartyModeID); CBase.Language.Translate("TR_SCREENMAIN_TEAM_CHOOSE", PartyModeID);
if (_Status == EStatus.JokerRetry || _Status == EStatus.FieldChoosing) if (_Status == EStatus.JokerRetry || _Status == EStatus.FieldChoosing)
_Texts[_TextTeamChoosing].Visible = true; _Texts[_TextTeamChoosing].Visible = true;
@@ -607,35 +579,28 @@ namespace VocaluxeLib.PartyModes.TicTacToe
{ {
_Buttons[_ButtonJokerRandomT1].Visible = true; _Buttons[_ButtonJokerRandomT1].Visible = true;
_Buttons[_ButtonJokerRandomT2].Visible = true; _Buttons[_ButtonJokerRandomT2].Visible = true;
_Buttons[_ButtonJokerRandomT1].Text.Text = _GameData.NumJokerRandom[0].ToString(); _Buttons[_ButtonJokerRandomT1].Text.Text = _PartyMode.GameData.NumJokerRandom[0].ToString();
_Buttons[_ButtonJokerRandomT2].Text.Text = _GameData.NumJokerRandom[1].ToString(); _Buttons[_ButtonJokerRandomT2].Text.Text = _PartyMode.GameData.NumJokerRandom[1].ToString();
_Buttons[_ButtonJokerRandomT1].Selectable = _GameData.NumJokerRandom[0] > 0; _Buttons[_ButtonJokerRandomT1].Selectable = _PartyMode.GameData.NumJokerRandom[0] > 0;
_Buttons[_ButtonJokerRandomT2].Selectable = _GameData.NumJokerRandom[1] > 0; _Buttons[_ButtonJokerRandomT2].Selectable = _PartyMode.GameData.NumJokerRandom[1] > 0;
_Buttons[_ButtonJokerRetryT1].Visible = true; _Buttons[_ButtonJokerRetryT1].Visible = true;
_Buttons[_ButtonJokerRetryT2].Visible = true; _Buttons[_ButtonJokerRetryT2].Visible = true;
_Buttons[_ButtonJokerRetryT1].Text.Text = _GameData.NumJokerRetry[0].ToString(); _Buttons[_ButtonJokerRetryT1].Text.Text = _PartyMode.GameData.NumJokerRetry[0].ToString();
_Buttons[_ButtonJokerRetryT2].Text.Text = _GameData.NumJokerRetry[1].ToString(); _Buttons[_ButtonJokerRetryT2].Text.Text = _PartyMode.GameData.NumJokerRetry[1].ToString();
_Buttons[_ButtonJokerRetryT1].Selectable = _GameData.NumJokerRetry[0] > 0; _Buttons[_ButtonJokerRetryT1].Selectable = _PartyMode.GameData.NumJokerRetry[0] > 0;
_Buttons[_ButtonJokerRetryT2].Selectable = _GameData.NumJokerRetry[1] > 0; _Buttons[_ButtonJokerRetryT2].Selectable = _PartyMode.GameData.NumJokerRetry[1] > 0;
} }
private void _NextRound() private void _NextRound()
{ {
CBase.Sound.Fade(_PreviewStream, 0f, 0.5f, EStreamAction.Close); CBase.Sound.Fade(_PreviewStream, 0f, 0.5f, EStreamAction.Close);
_Data.ScreenMain.Rounds = _GameData.Rounds; _PartyMode.Next();
_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);
} }
private void _EndParty() private void _EndParty()
{ {
CBase.Sound.Fade(_PreviewStream, 0f, 0.5f, EStreamAction.Close); CBase.Sound.Fade(_PreviewStream, 0f, 0.5f, EStreamAction.Close);
_FadeTo(EScreens.ScreenParty); CBase.Graphics.FadeTo(EScreen.Party);
} }
private void _ShowPopup(bool visible) private void _ShowPopup(bool visible)
@@ -654,15 +619,12 @@ namespace VocaluxeLib.PartyModes.TicTacToe
private void _Back() private void _Back()
{ {
CBase.Sound.Fade(_PreviewStream, 0f, 0.5f, EStreamAction.Close); CBase.Sound.Fade(_PreviewStream, 0f, 0.5f, EStreamAction.Close);
_Data.ScreenMain.FadeToNameSelection = true; _PartyMode.Back();
_Data.ScreenMain.FadeToSinging = false;
_Data.ScreenMain.SingRoundNr = _SelectedField;
_PartyMode.DataFromScreen(ThemeName, _Data);
} }
private void _BuildWinnerPossibilities() 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]; _Possibilities = new int[(numOneRow * 2) + 2,numOneRow];
for (int i = 0; i < _Possibilities.GetLength(0); i++) for (int i = 0; i < _Possibilities.GetLength(0); i++)
{ {
@@ -15,7 +15,6 @@
// along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>. // along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>.
#endregion #endregion
using System;
using System.Collections.Generic; using System.Collections.Generic;
using VocaluxeLib.Menu; using VocaluxeLib.Menu;
@@ -31,89 +30,57 @@ namespace VocaluxeLib.PartyModes.TicTacToe
get { return 1; } get { return 1; }
} }
private int _NumPlayerTeam1 = 2; private new CPartyModeTicTacToe _PartyMode;
private int _NumPlayerTeam2 = 2;
private SDataFromScreen _Data;
public override void Init() public override void Init()
{ {
base.Init(); base.Init();
_PartyMode = (CPartyModeTicTacToe)base._PartyMode;
_Data.ScreenNames.ProfileIDsTeam1 = new List<int>();
_Data.ScreenNames.ProfileIDsTeam2 = new List<int>();
_Data = new SDataFromScreen();
var names = new SFromScreenNames {FadeToConfig = false, ProfileIDsTeam1 = new List<int>(), ProfileIDsTeam2 = new List<int>()};
_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<int>();
if (_Data.ScreenNames.ProfileIDsTeam2 == null)
_Data.ScreenNames.ProfileIDsTeam2 = new List<int>();
_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);
}
} }
public override void OnShow() public override void OnShow()
{ {
base.OnShow(); base.OnShow();
SetPartyModeData(2, _NumPlayerTeam1 + _NumPlayerTeam2, new int[] {_NumPlayerTeam1, _NumPlayerTeam2});
List<int>[] ids = new List<int>[] {_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<int>[] ids = new List<int>[] {_PartyMode.GameData.ProfileIDsTeam1, _PartyMode.GameData.ProfileIDsTeam2};
SetPartyModeProfiles(ids); SetPartyModeProfiles(ids);
} }
public override void Back() public override void Back()
{ {
SPartyNameOptions options = GetData(); if (_TeamList.Length == 2)
if (options.TeamList.Length == 2)
{ {
_Data.ScreenNames.ProfileIDsTeam1 = options.TeamList[0]; _PartyMode.GameData.ProfileIDsTeam1 = _TeamList[0];
_Data.ScreenNames.ProfileIDsTeam2 = options.TeamList[1]; _PartyMode.GameData.ProfileIDsTeam2 = _TeamList[1];
} }
if (options.NumPlayerTeams.Length == 2) if (_NumPlayerTeams.Length == 2)
{ {
_Data.ScreenNames.NumPlayerTeam1 = options.NumPlayerTeams[0]; _PartyMode.GameData.NumPlayerTeam1 = _NumPlayerTeams[0];
_Data.ScreenNames.NumPlayerTeam2 = options.NumPlayerTeams[1]; _PartyMode.GameData.NumPlayerTeam2 = _NumPlayerTeams[1];
} }
_Data.ScreenNames.FadeToConfig = true; _PartyMode.Back();
_PartyMode.DataFromScreen(ThemeName, _Data);
} }
public override void Next() public override void Next()
{ {
SPartyNameOptions options = GetData(); if (_TeamList.Length == 2)
if (options.TeamList.Length == 2)
{ {
_Data.ScreenNames.ProfileIDsTeam1 = options.TeamList[0]; _PartyMode.GameData.ProfileIDsTeam1 = _TeamList[0];
_Data.ScreenNames.ProfileIDsTeam2 = options.TeamList[1]; _PartyMode.GameData.ProfileIDsTeam2 = _TeamList[1];
} }
if (options.NumPlayerTeams.Length == 2) if (_NumPlayerTeams.Length == 2)
{ {
_Data.ScreenNames.NumPlayerTeam1 = options.NumPlayerTeams[0]; _PartyMode.GameData.NumPlayerTeam1 = _NumPlayerTeams[0];
_Data.ScreenNames.NumPlayerTeam2 = options.NumPlayerTeams[1]; _PartyMode.GameData.NumPlayerTeam2 = _NumPlayerTeams[1];
} }
_Data.ScreenNames.FadeToConfig = false; _PartyMode.Next();
_PartyMode.DataFromScreen(ThemeName, _Data);
} }
} }
} }
+2 -1
View File
@@ -26,7 +26,8 @@ using System.Text.RegularExpressions;
namespace ServerLib namespace ServerLib
{ {
public delegate bool SendKeyEventDelegate(string key); 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 #region profile
public delegate SProfileData GetProfileDataDelegate(int profileId, bool isReadonly); public delegate SProfileData GetProfileDataDelegate(int profileId, bool isReadonly);
+34
View File
@@ -19,6 +19,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.ComponentModel; using System.ComponentModel;
using System.Diagnostics;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
@@ -208,6 +209,39 @@ namespace Vocaluxe.Base
private static readonly List<string> _Params = new List<string>(); private static readonly List<string> _Params = new List<string>();
private static readonly List<string> _Values = new List<string>(); private static readonly List<string> _Values = new List<string>();
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 public static int BackgroundMusicVolume
{ {
get { return Config.Sound.BackgroundMusicVolume; } get { return Config.Sound.BackgroundMusicVolume; }
+6
View File
@@ -20,6 +20,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Vocaluxe.Screens;
using Vocaluxe.SongQueue; using Vocaluxe.SongQueue;
using VocaluxeLib; using VocaluxeLib;
using VocaluxeLib.Game; using VocaluxeLib.Game;
@@ -187,6 +188,11 @@ namespace Vocaluxe.Base
} }
} }
public static void GotoNameSelection()
{
CGraphics.FadeTo(EScreen.Names);
}
public static void ResetPlayer() public static void ResetPlayer()
{ {
for (int i = 0; i < Players.Length; i++) for (int i = 0; i < Players.Length; i++)
+94 -134
View File
@@ -25,7 +25,6 @@ using Vocaluxe.Base.ThemeSystem;
using Vocaluxe.Screens; using Vocaluxe.Screens;
using VocaluxeLib; using VocaluxeLib;
using VocaluxeLib.Menu; using VocaluxeLib.Menu;
using VocaluxeLib.PartyModes;
namespace Vocaluxe.Base namespace Vocaluxe.Base
{ {
@@ -33,11 +32,7 @@ namespace Vocaluxe.Base
{ {
private static CFading _Fading; private static CFading _Fading;
private static readonly CCursor _Cursor = new CCursor(); 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 EPopupScreens _CurrentPopupScreen;
private static readonly List<IMenu> _Screens = new List<IMenu>(); private static readonly List<IMenu> _Screens = new List<IMenu>();
@@ -46,24 +41,20 @@ namespace Vocaluxe.Base
private static Stopwatch _VolumePopupTimer; private static Stopwatch _VolumePopupTimer;
private static bool _CursorOverVolumeControl; private static bool _CursorOverVolumeControl;
public static float GlobalAlpha public static float GlobalAlpha { get; private set; }
{
get { return _GlobalAlpha; }
}
public static float ZOffset public static float ZOffset { get; private set; }
{
get { return _ZOffset; }
}
public static EScreens CurrentScreen public static IMenu CurrentScreen { get; private set; }
{
get { return _CurrentScreen; }
}
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 #region public methods
@@ -91,7 +82,8 @@ namespace Vocaluxe.Base
_Screens.Add(new CScreenNames()); _Screens.Add(new CScreenNames());
_Screens.Add(new CScreenCredits()); _Screens.Add(new CScreenCredits());
_Screens.Add(new CScreenParty()); _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 CPopupScreenPlayerControl());
_PopupScreens.Add(new CPopupScreenVolumeControl()); _PopupScreens.Add(new CPopupScreenVolumeControl());
@@ -99,13 +91,13 @@ namespace Vocaluxe.Base
CLog.StopBenchmark("Build Screen List"); CLog.StopBenchmark("Build Screen List");
_CurrentScreen = EScreens.ScreenLoad; CurrentScreen = _Screens[(int)EScreen.Load];
_NextScreen = EScreens.ScreenNull; NextScreen = null;
_CurrentPopupScreen = EPopupScreens.NoPopup; _CurrentPopupScreen = EPopupScreens.NoPopup;
_VolumePopupTimer = new Stopwatch(); _VolumePopupTimer = new Stopwatch();
_GlobalAlpha = 1f; GlobalAlpha = 1f;
_ZOffset = 0f; ZOffset = 0f;
CLog.StartBenchmark("Load Theme"); CLog.StartBenchmark("Load Theme");
LoadTheme(); LoadTheme();
@@ -116,8 +108,8 @@ namespace Vocaluxe.Base
{ {
if (_CurrentPopupScreen != EPopupScreens.NoPopup && _PopupScreens.Count > 0) if (_CurrentPopupScreen != EPopupScreens.NoPopup && _PopupScreens.Count > 0)
_PopupScreens[(int)_CurrentPopupScreen].OnClose(); _PopupScreens[(int)_CurrentPopupScreen].OnClose();
if (_Screens.Count > 0) if (CurrentScreen != null)
_Screens[(int)_CurrentScreen].OnClose(); CurrentScreen.OnClose();
} }
public static void LoadTheme() public static void LoadTheme()
@@ -126,10 +118,10 @@ namespace Vocaluxe.Base
for (int i = 0; i < _Screens.Count; i++) 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].Init();
_Screens[i].LoadTheme(CThemes.GetThemeScreensPath(_Screens[i].PartyModeID)); _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) foreach (IMenu popup in _PopupScreens)
@@ -181,8 +173,8 @@ namespace Vocaluxe.Base
public static void InitFirstScreen() public static void InitFirstScreen()
{ {
_Screens[(int)_CurrentScreen].OnShow(); CurrentScreen.OnShow();
_Screens[(int)_CurrentScreen].OnShowFinish(); CurrentScreen.OnShowFinish();
} }
public static bool UpdateGameLogic(CKeys keys, CMouse mouse) public static bool UpdateGameLogic(CKeys keys, CMouse mouse)
@@ -216,18 +208,18 @@ namespace Vocaluxe.Base
public static bool Draw() public static bool Draw()
{ {
if (_NextScreen != EScreens.ScreenNull && _Fading == null) if (NextScreen != null && _Fading == null)
{ {
_Fading = new CFading(0f, 1f, CConfig.Config.Graphics.FadeTime); _Fading = new CFading(0f, 1f, CConfig.Config.Graphics.FadeTime);
if (_NextScreen == EScreens.ScreenPartyDummy) if (NextScreen.PartyModeID != -1)
{ {
CFonts.PartyModeID = CParty.CurrentPartyModeID; CFonts.PartyModeID = NextScreen.PartyModeID;
_Screens[(int)_NextScreen].OnShow(); NextScreen.OnShow();
CFonts.PartyModeID = -1; CFonts.PartyModeID = -1;
} }
else else
_Screens[(int)_NextScreen].OnShow(); NextScreen.OnShow();
HidePopup(EPopupScreens.PopupPlayerControl); HidePopup(EPopupScreens.PopupPlayerControl);
} }
@@ -239,35 +231,27 @@ namespace Vocaluxe.Base
if (!finished) if (!finished)
{ {
_GlobalAlpha = 1f; // -newAlpha / 100f; GlobalAlpha = 1f;
_ZOffset = CSettings.ZFar / 2; ZOffset = CSettings.ZFar / 2;
_DrawScreen(CurrentScreen);
_DrawScreen(_CurrentScreen); GlobalAlpha = newAlpha;
ZOffset = 0f;
_DrawScreen(NextScreen);
GlobalAlpha = 1f;
_GlobalAlpha = newAlpha;
_ZOffset = 0f;
_DrawScreen(_NextScreen);
_GlobalAlpha = 1f;
} }
else else
{ {
_Screens[(int)_CurrentScreen].OnClose(); _FinishScreenFading();
_CurrentScreen = _NextScreen;
_NextScreen = EScreens.ScreenNull;
_Screens[(int)_CurrentScreen].OnShowFinish();
if (_Cursor.IsActive) if (_Cursor.IsActive)
_Screens[(int)_CurrentScreen].ProcessMouseMove(_Cursor.X, _Cursor.Y); CurrentScreen.ProcessMouseMove(_Cursor.X, _Cursor.Y);
_DrawScreen(_CurrentScreen); _DrawScreen(CurrentScreen);
_Fading = null;
} }
} }
else else
_DrawScreen(_CurrentScreen); _DrawScreen(CurrentScreen);
foreach (IMenu popup in _PopupScreens) foreach (IMenu popup in _PopupScreens)
popup.Draw(); popup.Draw();
@@ -278,33 +262,53 @@ namespace Vocaluxe.Base
return true; 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) / 100f);
_Fading = null;
}
private static void _DrawScreen(IMenu screen)
{
if (screen.PartyModeID != -1)
{ {
CFonts.PartyModeID = CParty.CurrentPartyModeID; CFonts.PartyModeID = screen.PartyModeID;
_Screens[(int)screen].Draw(); screen.Draw();
CFonts.PartyModeID = -1; CFonts.PartyModeID = -1;
} }
else else
_Screens[(int)screen].Draw(); screen.Draw();
} }
public static void FadeTo(EScreens screen) public static IMenu GetScreen(EScreen screen)
{ {
if (screen == EScreens.ScreenPartyDummy) if (screen == EScreen.Unknown || screen == EScreen.CountEntry)
{ throw new ArgumentException("Invalid screen: " + screen);
EScreens alt; return _Screens[(int)screen];
CMenu scr = CParty.GetNextPartyScreen(out alt); }
if (scr == null)
{
_NextScreen = alt;
return;
}
_Screens[(int)EScreens.ScreenPartyDummy] = scr;
}
_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) public static void ShowPopup(EPopupScreens popupScreen)
@@ -342,18 +346,12 @@ namespace Vocaluxe.Base
SKeyEvent inputKeyEvent = new SKeyEvent(); SKeyEvent inputKeyEvent = new SKeyEvent();
SMouseEvent inputMouseEvent = new SMouseEvent(); SMouseEvent inputMouseEvent = new SMouseEvent();
bool popupPlayerControlAllowed = _CurrentScreen != EScreens.ScreenOptionsRecord && _CurrentScreen != EScreens.ScreenSing && bool popupPlayerControlAllowed = CurrentScreen.CurrentMusicType == EMusicType.Background && !CBackgroundMusic.Disabled;
(_CurrentScreen != EScreens.ScreenSong || bool popupVolumeControlAllowed = CurrentScreen.CurrentMusicType != EMusicType.None;
(_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;
//Hide volume control for bg-music if bg-music is disabled //Hide volume control for bg-music if bg-music is disabled
if (popupVolumeControlAllowed && (_CurrentScreen != EScreens.ScreenSong || CSongs.Category == -1) if (popupVolumeControlAllowed && CurrentScreen.CurrentMusicType == EMusicType.Background && CConfig.Config.Sound.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_OFF)
&& _CurrentScreen != EScreens.ScreenSing && CConfig.Config.Sound.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_OFF)
popupVolumeControlAllowed = false; popupVolumeControlAllowed = false;
bool resume = true; bool resume = true;
bool eventsAvailable; bool eventsAvailable;
bool inputEventsAvailable = CController.PollKeyEvent(ref inputKeyEvent); 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)) if (keyEvent.ModShift && (keyEvent.Key == Keys.F1))
CSettings.ProgramState = EProgramState.EditTheme; CSettings.ProgramState = EProgramState.EditTheme;
else if (keyEvent.ModAlt && (keyEvent.Key == Keys.Enter)) else if (keyEvent.ModAlt && (keyEvent.Key == Keys.Enter))
@@ -510,10 +461,19 @@ namespace Vocaluxe.Base
{ {
bool handled = false; bool handled = false;
if (_CurrentPopupScreen != EPopupScreens.NoPopup) if (_CurrentPopupScreen != EPopupScreens.NoPopup)
{
handled = _PopupScreens[(int)_CurrentPopupScreen].HandleInput(keyEvent); 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) 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); handled = _PopupScreens[(int)_CurrentPopupScreen].HandleMouse(mouseEvent);
if (!handled && _Fading == null && (_Cursor.IsActive || mouseEvent.LB || mouseEvent.RB || mouseEvent.MB)) if (!handled && _Fading == null && (_Cursor.IsActive || mouseEvent.LB || mouseEvent.RB || mouseEvent.MB))
resume &= _Screens[(int)_CurrentScreen].HandleMouse(mouseEvent); resume &= CurrentScreen.HandleMouse(mouseEvent);
if (!eventsAvailable) if (!eventsAvailable)
inputEventsAvailable = CController.PollMouseEvent(ref inputMouseEvent); inputEventsAvailable = CController.PollMouseEvent(ref inputMouseEvent);
@@ -588,7 +548,7 @@ namespace Vocaluxe.Base
if (keyEvent.ModShift && (keyEvent.Key == Keys.F1)) if (keyEvent.ModShift && (keyEvent.Key == Keys.F1))
{ {
CSettings.ProgramState = EProgramState.Normal; CSettings.ProgramState = EProgramState.Normal;
_Screens[(int)_CurrentScreen].NextElement(); CurrentScreen.NextElement();
} }
else if (keyEvent.ModAlt && (keyEvent.Key == Keys.Enter)) 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; 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 else
{ {
if (_Fading == null) if (_Fading == null)
_Screens[(int)_CurrentScreen].HandleInputThemeEditor(keyEvent); CurrentScreen.HandleInputThemeEditor(keyEvent);
} }
} }
while (mouse.PollEvent(ref mouseEvent)) while (mouse.PollEvent(ref mouseEvent))
{ {
if (_Fading == null) if (_Fading == null)
_Screens[(int)_CurrentScreen].HandleMouseThemeEditor(mouseEvent); CurrentScreen.HandleMouseThemeEditor(mouseEvent);
_UpdateMousePosition(mouseEvent.X, mouseEvent.Y); _UpdateMousePosition(mouseEvent.X, mouseEvent.Y);
} }
@@ -629,7 +589,7 @@ namespace Vocaluxe.Base
if (_CurrentPopupScreen != EPopupScreens.NoPopup) if (_CurrentPopupScreen != EPopupScreens.NoPopup)
_PopupScreens[(int)_CurrentPopupScreen].UpdateGame(); _PopupScreens[(int)_CurrentPopupScreen].UpdateGame();
return _Screens[(int)_CurrentScreen].UpdateGame(); return CurrentScreen.UpdateGame();
} }
private static void _DrawDebugInfos() private static void _DrawDebugInfos()
+24 -4
View File
@@ -71,9 +71,9 @@ namespace Vocaluxe.Base
CConfig.BackgroundMusicVolume = newVolume; CConfig.BackgroundMusicVolume = newVolume;
} }
public int GetBackgroundMusicVolume() public int GetMusicVolume(EMusicType type)
{ {
return CConfig.BackgroundMusicVolume; return CConfig.GetVolumeByType(type);
} }
public EBackgroundMusicOffOn GetBackgroundMusicStatus() public EBackgroundMusicOffOn GetBackgroundMusicStatus()
@@ -446,7 +446,12 @@ namespace Vocaluxe.Base
CGraphics.SaveTheme(); CGraphics.SaveTheme();
} }
public void FadeTo(EScreens nextScreen) public void FadeTo(EScreen nextScreen)
{
CGraphics.FadeTo(nextScreen);
}
public void FadeTo(IMenu nextScreen)
{ {
CGraphics.FadeTo(nextScreen); CGraphics.FadeTo(nextScreen);
} }
@@ -456,10 +461,20 @@ namespace Vocaluxe.Base
return CGraphics.GlobalAlpha; return CGraphics.GlobalAlpha;
} }
public EScreens GetNextScreen() public IMenu GetNextScreen()
{ {
return CGraphics.NextScreen; return CGraphics.NextScreen;
} }
public EScreen GetNextScreenType()
{
return CGraphics.NextScreenType;
}
public IMenu GetScreen(EScreen screen)
{
return CGraphics.GetScreen(screen);
}
} }
class CBlog : ILog class CBlog : ILog
@@ -857,6 +872,11 @@ namespace Vocaluxe.Base
{ {
CSound.SetStreamVolume(soundStream, volume); CSound.SetStreamVolume(soundStream, volume);
} }
public void SetGlobalVolume(int volume)
{
CSound.SetGlobalVolume(volume);
}
} }
class CBcover : ICover class CBcover : ICover
+1 -11
View File
@@ -113,11 +113,6 @@ namespace Vocaluxe.Base
_CurrentPartyMode.PartyMode.Init(); _CurrentPartyMode.PartyMode.Init();
} }
public static CMenu GetNextPartyScreen(out EScreens alternativeScreen)
{
return _CurrentPartyMode.PartyMode.GetNextPartyScreen(out alternativeScreen);
}
#endregion public stuff #endregion public stuff
#region Interface #region Interface
@@ -126,16 +121,11 @@ namespace Vocaluxe.Base
_CurrentPartyMode.PartyMode.UpdateGame(); _CurrentPartyMode.PartyMode.UpdateGame();
} }
public static EScreens GetStartScreen() public static IMenu GetStartScreen()
{ {
return _CurrentPartyMode.PartyMode.GetStartScreen(); return _CurrentPartyMode.PartyMode.GetStartScreen();
} }
public static EScreens GetMainScreen()
{
return _CurrentPartyMode.PartyMode.GetMainScreen();
}
public static SScreenSongOptions GetSongSelectionOptions() public static SScreenSongOptions GetSongSelectionOptions()
{ {
return _CurrentPartyMode.PartyMode.GetScreenSongOptions(); return _CurrentPartyMode.PartyMode.GetScreenSongOptions();
+1 -1
View File
@@ -188,7 +188,7 @@ namespace Vocaluxe.Base
if (VersionRevision != ERevision.Release) if (VersionRevision != ERevision.Release)
{ {
// ReSharper restore ConditionIsAlwaysTrueOrFalse // ReSharper restore ConditionIsAlwaysTrueOrFalse
var gitversion = Application.ProductVersion; string gitversion = Application.ProductVersion;
version += " " + _GetVersionStatus() + String.Format(" ({0})", gitversion); version += " " + _GetVersionStatus() + String.Format(" ({0})", gitversion);
} }
+8
View File
@@ -29,6 +29,8 @@ namespace Vocaluxe.Base
{ {
static class CSongs static class CSongs
{ {
public delegate void CategoryChangedHandler();
private static readonly List<CSong> _Songs = new List<CSong>(); private static readonly List<CSong> _Songs = new List<CSong>();
private static readonly List<CSong> _SongsForRandom = new List<CSong>(); private static readonly List<CSong> _SongsForRandom = new List<CSong>();
@@ -41,6 +43,7 @@ namespace Vocaluxe.Base
public static readonly CSongCategorizer Categorizer = new CSongCategorizer(); public static readonly CSongCategorizer Categorizer = new CSongCategorizer();
private static Thread _CoverLoaderThread; private static Thread _CoverLoaderThread;
public static event CategoryChangedHandler OnCategoryChanged;
public static List<CSong> Songs public static List<CSong> Songs
{ {
@@ -84,8 +87,13 @@ namespace Vocaluxe.Base
} }
set set
{ {
if (value == _CatIndex)
return;
if (value == -1 || _IsCatIndexValid(value)) if (value == -1 || _IsCatIndexValid(value))
{
_CatIndex = value; _CatIndex = value;
OnCategoryChanged();
}
} }
} }
-1
View File
@@ -15,7 +15,6 @@
// along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>. // along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>.
#endregion #endregion
using System;
using System.IO; using System.IO;
using Vocaluxe.Lib.Sound.Playback; using Vocaluxe.Lib.Sound.Playback;
using Vocaluxe.Lib.Sound.Playback.GstreamerSharp; using Vocaluxe.Lib.Sound.Playback.GstreamerSharp;
+11 -11
View File
@@ -126,7 +126,7 @@ namespace Vocaluxe.Base.Server
private static bool _SendKeyEvent(string key) private static bool _SendKeyEvent(string key)
{ {
bool result = false; bool result = false;
var lowerKey = key.ToLower(); string lowerKey = key.ToLower();
if (!string.IsNullOrEmpty(lowerKey)) if (!string.IsNullOrEmpty(lowerKey))
{ {
@@ -167,12 +167,12 @@ namespace Vocaluxe.Base.Server
default: default:
if (lowerKey.StartsWith("f")) if (lowerKey.StartsWith("f"))
{ {
var numberString = lowerKey.Substring(1); string numberString = lowerKey.Substring(1);
int number; int number;
Keys fKey; Keys fKey;
if (Int32.TryParse(numberString, out number) && number >= 1 if (Int32.TryParse(numberString, out number) && number >= 1
&& number <= 12 && number <= 12
&& Enum.TryParse("F" + number, true, out fKey)) && Enum.TryParse("F" + number, true, out fKey))
{ {
Controller.AddKeyEvent(new SKeyEvent(ESender.Keyboard, false, false, false, false, Char.MinValue, fKey)); Controller.AddKeyEvent(new SKeyEvent(ESender.Keyboard, false, false, false, false, Char.MinValue, fKey));
@@ -186,17 +186,17 @@ namespace Vocaluxe.Base.Server
return result; 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; bool result = false;
foreach (var key in keyString.ToCharArray()) foreach (char key in keyString.ToCharArray())
{ {
Controller.AddKeyEvent(new SKeyEvent(ESender.Keyboard, isAltPressed, Controller.AddKeyEvent(new SKeyEvent(ESender.Keyboard, isAltPressed,
Char.IsUpper(key) || isShiftPressed, Char.IsUpper(key) || isShiftPressed,
isCtrlPressed, true, isCtrlPressed, true,
isShiftPressed?Char.ToUpper(key) :key, isShiftPressed ? Char.ToUpper(key) : key,
_ParseKeys(key))); _ParseKeys(key)));
result = true; result = true;
} }
+1 -1
View File
@@ -147,7 +147,7 @@ namespace Vocaluxe.Base.ThemeSystem
} }
catch (Exception e) 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; return false;
} }
@@ -43,7 +43,7 @@ namespace Vocaluxe.Lib.Sound.Playback
public abstract bool IsPaused { get; set; } public abstract bool IsPaused { get; set; }
public abstract bool IsFinished { get; } public abstract bool IsFinished { get; }
public CAudioStreamBase(int id, string medium, bool loop) protected CAudioStreamBase(int id, string medium, bool loop)
{ {
_ID = id; _ID = id;
_Medium = medium; _Medium = medium;
@@ -206,7 +206,7 @@ namespace Vocaluxe.Screens
CGame.AddSong(songNr, gm); CGame.AddSong(songNr, gm);
CGraphics.FadeTo(EScreens.ScreenNames); CGame.GotoNameSelection();
} }
} }
} }
+19 -44
View File
@@ -15,6 +15,7 @@
// along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>. // along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>.
#endregion #endregion
using System.Windows.Forms;
using Vocaluxe.Base; using Vocaluxe.Base;
using VocaluxeLib; using VocaluxeLib;
using VocaluxeLib.Menu; using VocaluxeLib.Menu;
@@ -56,6 +57,19 @@ namespace Vocaluxe.Screens
public override bool HandleInput(SKeyEvent keyEvent) public override bool HandleInput(SKeyEvent keyEvent)
{ {
_UpdateSlides(); _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; return true;
} }
@@ -69,19 +83,13 @@ namespace Vocaluxe.Screens
} }
if (mouseEvent.Wheel > 0 && CHelper.IsInBounds(ScreenArea, mouseEvent)) if (mouseEvent.Wheel > 0 && CHelper.IsInBounds(ScreenArea, mouseEvent))
{ {
if (_SelectSlides[_SelectSlideVolume].Selection - mouseEvent.Wheel >= 0) _SelectSlides[_SelectSlideVolume].Selection = _SelectSlides[_SelectSlideVolume].Selection - mouseEvent.Wheel;
_SelectSlides[_SelectSlideVolume].Selection = _SelectSlides[_SelectSlideVolume].Selection - mouseEvent.Wheel;
else if (_SelectSlides[_SelectSlideVolume].Selection - mouseEvent.Wheel < 0)
_SelectSlides[_SelectSlideVolume].Selection = 0;
_SaveConfig(); _SaveConfig();
return true; return true;
} }
if (mouseEvent.Wheel < 0 && CHelper.IsInBounds(ScreenArea, mouseEvent)) 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;
_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;
_SaveConfig(); _SaveConfig();
return true; return true;
} }
@@ -103,47 +111,14 @@ namespace Vocaluxe.Screens
private void _SaveConfig() private void _SaveConfig()
{ {
int volume = _SelectSlides[_SelectSlideVolume].Selection * 5; int volume = _SelectSlides[_SelectSlideVolume].Selection * 5;
switch (CGraphics.CurrentScreen) CConfig.SetVolumeByType(CGraphics.CurrentScreen.CurrentMusicType, volume);
{
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.SaveConfig(); CConfig.SaveConfig();
CSound.SetGlobalVolume(volume); CSound.SetGlobalVolume(volume / 100f);
} }
private void _UpdateSlides() private void _UpdateSlides()
{ {
int volume; int volume = CConfig.GetVolumeByType(CGraphics.CurrentScreen.CurrentMusicType);
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;
}
_SelectSlides[_SelectSlideVolume].Selection = volume / 5; _SelectSlides[_SelectSlideVolume].Selection = volume / 5;
} }
} }
+8 -3
View File
@@ -145,6 +145,11 @@ namespace Vocaluxe.Screens
private SThemeBackground _BGTheme; private SThemeBackground _BGTheme;
public override EMusicType CurrentMusicType
{
get { return EMusicType.None; }
}
public override void Init() public override void Init()
{ {
base.Init(); base.Init();
@@ -292,7 +297,7 @@ namespace Vocaluxe.Screens
case Keys.Escape: case Keys.Escape:
case Keys.Back: case Keys.Back:
case Keys.Enter: case Keys.Enter:
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
break; break;
} }
} }
@@ -303,14 +308,14 @@ namespace Vocaluxe.Screens
public override bool HandleMouse(SMouseEvent mouseEvent) public override bool HandleMouse(SMouseEvent mouseEvent)
{ {
if (mouseEvent.LB || mouseEvent.RB) if (mouseEvent.LB || mouseEvent.RB)
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
return true; return true;
} }
public override bool UpdateGame() public override bool UpdateGame()
{ {
if (!_Animation()) if (!_Animation())
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
return true; return true;
} }
+4 -4
View File
@@ -137,11 +137,11 @@ namespace Vocaluxe.Screens
bool next = CConfig.Config.Theme.CoverLoading != ECoverLoading.TR_CONFIG_COVERLOADING_ATSTART || CSongs.CoverLoaded; 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; CSettings.ProgramState = EProgramState.Normal;
CGraphics.FadeTo(EScreen.Main);
if (CSettings.ProgramState == EProgramState.Normal) }
CGraphics.FadeTo(EScreens.ScreenMain);
_Texts[_TextStatus].Text = _Texts[_TextStatus].Text =
CLanguage.Translate("TR_SCREENLOAD_TOTAL") + ": " + CSongs.NumAllSongs + " " + CLanguage.Translate("TR_SCREENLOAD_TOTAL") + ": " + CSongs.NumAllSongs + " " +
+12 -12
View File
@@ -71,37 +71,37 @@ namespace Vocaluxe.Screens
switch (keyEvent.Key) switch (keyEvent.Key)
{ {
case Keys.O: case Keys.O:
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
break; break;
case Keys.S: case Keys.S:
if (CProfiles.NumProfiles > 0) if (CProfiles.NumProfiles > 0)
CGraphics.FadeTo(EScreens.ScreenSong); CGraphics.FadeTo(EScreen.Song);
break; break;
case Keys.C: case Keys.C:
CGraphics.FadeTo(EScreens.ScreenCredits); CGraphics.FadeTo(EScreen.Credits);
break; break;
case Keys.T: case Keys.T:
CGraphics.FadeTo(EScreens.ScreenTest); CGraphics.FadeTo(EScreen.Test);
break; break;
case Keys.Enter: case Keys.Enter:
if (_Buttons[_ButtonSing].Selected) if (_Buttons[_ButtonSing].Selected)
{ {
CParty.SetNormalGameMode(); CParty.SetNormalGameMode();
CGraphics.FadeTo(EScreens.ScreenSong); CGraphics.FadeTo(EScreen.Song);
} }
if (_Buttons[_ButtonParty].Selected) if (_Buttons[_ButtonParty].Selected)
CGraphics.FadeTo(EScreens.ScreenParty); CGraphics.FadeTo(EScreen.Party);
if (_Buttons[_ButtonOptions].Selected) if (_Buttons[_ButtonOptions].Selected)
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
if (_Buttons[_ButtonProfiles].Selected) if (_Buttons[_ButtonProfiles].Selected)
CGraphics.FadeTo(EScreens.ScreenProfiles); CGraphics.FadeTo(EScreen.Profiles);
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
return false; return false;
@@ -121,17 +121,17 @@ namespace Vocaluxe.Screens
if (_Buttons[_ButtonSing].Selected) if (_Buttons[_ButtonSing].Selected)
{ {
CParty.SetNormalGameMode(); CParty.SetNormalGameMode();
CGraphics.FadeTo(EScreens.ScreenSong); CGraphics.FadeTo(EScreen.Song);
} }
if (_Buttons[_ButtonParty].Selected) if (_Buttons[_ButtonParty].Selected)
CGraphics.FadeTo(EScreens.ScreenParty); CGraphics.FadeTo(EScreen.Party);
if (_Buttons[_ButtonOptions].Selected) if (_Buttons[_ButtonOptions].Selected)
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
if (_Buttons[_ButtonProfiles].Selected) if (_Buttons[_ButtonProfiles].Selected)
CGraphics.FadeTo(EScreens.ScreenProfiles); CGraphics.FadeTo(EScreen.Profiles);
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
return false; return false;
+5 -5
View File
@@ -277,13 +277,13 @@ namespace Vocaluxe.Screens
{ {
case Keys.Escape: case Keys.Escape:
case Keys.Back: case Keys.Back:
CGraphics.FadeTo(EScreens.ScreenSong); CGraphics.FadeTo(EScreen.Song);
break; break;
case Keys.Enter: case Keys.Enter:
if (_Buttons[_ButtonBack].Selected) if (_Buttons[_ButtonBack].Selected)
CGraphics.FadeTo(EScreens.ScreenSong); CGraphics.FadeTo(EScreen.Song);
else else
_StartSong(); _StartSong();
@@ -454,7 +454,7 @@ namespace Vocaluxe.Screens
else if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent)) else if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{ {
if (_Buttons[_ButtonBack].Selected) if (_Buttons[_ButtonBack].Selected)
CGraphics.FadeTo(EScreens.ScreenSong); CGraphics.FadeTo(EScreen.Song);
else if (_Buttons[_ButtonStart].Selected) else if (_Buttons[_ButtonStart].Selected)
_StartSong(); _StartSong();
else else
@@ -497,7 +497,7 @@ namespace Vocaluxe.Screens
} }
} }
if (exit) if (exit)
CGraphics.FadeTo(EScreens.ScreenSong); CGraphics.FadeTo(EScreen.Song);
} }
if (mouseEvent.MB && _SelectingFast) if (mouseEvent.MB && _SelectingFast)
@@ -619,7 +619,7 @@ namespace Vocaluxe.Screens
for (int i = 0; i < CGame.NumPlayers; i++) for (int i = 0; i < CGame.NumPlayers; i++)
CGame.Players[i].VoiceNr = _SelectSlides[_SelectSlideDuetPlayer[i]].Selection; CGame.Players[i].VoiceNr = _SelectSlides[_SelectSlideDuetPlayer[i]].Selection;
} }
CGraphics.FadeTo(EScreens.ScreenSing); CGraphics.FadeTo(EScreen.Sing);
} }
private void _UpdateSlides() private void _UpdateSlides()
+15 -15
View File
@@ -55,32 +55,32 @@ namespace Vocaluxe.Screens
{ {
case Keys.Escape: case Keys.Escape:
case Keys.Back: case Keys.Back:
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
break; break;
case Keys.S: case Keys.S:
CParty.SetNormalGameMode(); CParty.SetNormalGameMode();
CGraphics.FadeTo(EScreens.ScreenSong); CGraphics.FadeTo(EScreen.Song);
break; break;
case Keys.Enter: case Keys.Enter:
if (_Buttons[_ButtonOptionsGame].Selected) if (_Buttons[_ButtonOptionsGame].Selected)
CGraphics.FadeTo(EScreens.ScreenOptionsGame); CGraphics.FadeTo(EScreen.OptionsGame);
if (_Buttons[_ButtonOptionsSound].Selected) if (_Buttons[_ButtonOptionsSound].Selected)
CGraphics.FadeTo(EScreens.ScreenOptionsSound); CGraphics.FadeTo(EScreen.OptionsSound);
if (_Buttons[_ButtonOptionsRecord].Selected) if (_Buttons[_ButtonOptionsRecord].Selected)
CGraphics.FadeTo(EScreens.ScreenOptionsRecord); CGraphics.FadeTo(EScreen.OptionsRecord);
if (_Buttons[_ButtonOptionsVideo].Selected) if (_Buttons[_ButtonOptionsVideo].Selected)
CGraphics.FadeTo(EScreens.ScreenOptionsVideo); CGraphics.FadeTo(EScreen.OptionsVideo);
if (_Buttons[_ButtonOptionsLyrics].Selected) if (_Buttons[_ButtonOptionsLyrics].Selected)
CGraphics.FadeTo(EScreens.ScreenOptionsLyrics); CGraphics.FadeTo(EScreen.OptionsLyrics);
if (_Buttons[_ButtonOptionsTheme].Selected) if (_Buttons[_ButtonOptionsTheme].Selected)
CGraphics.FadeTo(EScreens.ScreenOptionsTheme); CGraphics.FadeTo(EScreen.OptionsTheme);
break; break;
} }
@@ -95,26 +95,26 @@ namespace Vocaluxe.Screens
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent)) if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{ {
if (_Buttons[_ButtonOptionsGame].Selected) if (_Buttons[_ButtonOptionsGame].Selected)
CGraphics.FadeTo(EScreens.ScreenOptionsGame); CGraphics.FadeTo(EScreen.OptionsGame);
if (_Buttons[_ButtonOptionsSound].Selected) if (_Buttons[_ButtonOptionsSound].Selected)
CGraphics.FadeTo(EScreens.ScreenOptionsSound); CGraphics.FadeTo(EScreen.OptionsSound);
if (_Buttons[_ButtonOptionsRecord].Selected) if (_Buttons[_ButtonOptionsRecord].Selected)
CGraphics.FadeTo(EScreens.ScreenOptionsRecord); CGraphics.FadeTo(EScreen.OptionsRecord);
if (_Buttons[_ButtonOptionsVideo].Selected) if (_Buttons[_ButtonOptionsVideo].Selected)
CGraphics.FadeTo(EScreens.ScreenOptionsVideo); CGraphics.FadeTo(EScreen.OptionsVideo);
if (_Buttons[_ButtonOptionsLyrics].Selected) if (_Buttons[_ButtonOptionsLyrics].Selected)
CGraphics.FadeTo(EScreens.ScreenOptionsLyrics); CGraphics.FadeTo(EScreen.OptionsLyrics);
if (_Buttons[_ButtonOptionsTheme].Selected) if (_Buttons[_ButtonOptionsTheme].Selected)
CGraphics.FadeTo(EScreens.ScreenOptionsTheme); CGraphics.FadeTo(EScreen.OptionsTheme);
} }
if (mouseEvent.RB) if (mouseEvent.RB)
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
return true; return true;
} }
+5 -5
View File
@@ -73,19 +73,19 @@ namespace Vocaluxe.Screens
case Keys.Escape: case Keys.Escape:
case Keys.Back: case Keys.Back:
_SaveConfig(); _SaveConfig();
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
break; break;
case Keys.S: case Keys.S:
CParty.SetNormalGameMode(); CParty.SetNormalGameMode();
CGraphics.FadeTo(EScreens.ScreenSong); CGraphics.FadeTo(EScreen.Song);
break; break;
case Keys.Enter: case Keys.Enter:
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
{ {
_SaveConfig(); _SaveConfig();
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
} }
else if (_Buttons[_ButtonServer].Selected) else if (_Buttons[_ButtonServer].Selected)
CGraphics.ShowPopup(EPopupScreens.PopupServerQR); CGraphics.ShowPopup(EPopupScreens.PopupServerQR);
@@ -110,14 +110,14 @@ namespace Vocaluxe.Screens
if (mouseEvent.RB) if (mouseEvent.RB)
{ {
_SaveConfig(); _SaveConfig();
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
} }
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent)) if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{ {
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
{ {
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
_SaveConfig(); _SaveConfig();
} }
else if (_Buttons[_ButtonServer].Selected) else if (_Buttons[_ButtonServer].Selected)
+5 -5
View File
@@ -62,19 +62,19 @@ namespace Vocaluxe.Screens
case Keys.Escape: case Keys.Escape:
case Keys.Back: case Keys.Back:
_SaveConfig(); _SaveConfig();
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
break; break;
case Keys.S: case Keys.S:
CParty.SetNormalGameMode(); CParty.SetNormalGameMode();
CGraphics.FadeTo(EScreens.ScreenSong); CGraphics.FadeTo(EScreen.Song);
break; break;
case Keys.Enter: case Keys.Enter:
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
{ {
_SaveConfig(); _SaveConfig();
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
} }
break; break;
@@ -97,13 +97,13 @@ namespace Vocaluxe.Screens
if (mouseEvent.RB) if (mouseEvent.RB)
{ {
_SaveConfig(); _SaveConfig();
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
} }
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent)) if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{ {
_SaveConfig(); _SaveConfig();
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
} }
return true; return true;
} }
+10 -5
View File
@@ -63,6 +63,11 @@ namespace Vocaluxe.Screens
private readonly CDelayTest _DelayTest = new CDelayTest(2); private readonly CDelayTest _DelayTest = new CDelayTest(2);
public override EMusicType CurrentMusicType
{
get { return EMusicType.None; }
}
public override void Init() public override void Init()
{ {
base.Init(); base.Init();
@@ -121,19 +126,19 @@ namespace Vocaluxe.Screens
case Keys.Escape: case Keys.Escape:
case Keys.Back: case Keys.Back:
_SaveMicConfig(); _SaveMicConfig();
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
break; break;
case Keys.S: case Keys.S:
CParty.SetNormalGameMode(); CParty.SetNormalGameMode();
CGraphics.FadeTo(EScreens.ScreenSong); CGraphics.FadeTo(EScreen.Song);
break; break;
case Keys.Enter: case Keys.Enter:
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
{ {
_SaveMicConfig(); _SaveMicConfig();
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
} }
if (_Buttons[_ButtonDelayTest].Selected) if (_Buttons[_ButtonDelayTest].Selected)
@@ -180,7 +185,7 @@ namespace Vocaluxe.Screens
if (mouseEvent.RB) if (mouseEvent.RB)
{ {
_SaveMicConfig(); _SaveMicConfig();
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
} }
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent)) if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
@@ -198,7 +203,7 @@ namespace Vocaluxe.Screens
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
{ {
_SaveMicConfig(); _SaveMicConfig();
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
} }
if (_Buttons[_ButtonDelayTest].Selected) if (_Buttons[_ButtonDelayTest].Selected)
+6 -6
View File
@@ -78,19 +78,19 @@ namespace Vocaluxe.Screens
case Keys.Escape: case Keys.Escape:
case Keys.Back: case Keys.Back:
_SaveConfig(); _SaveConfig();
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
break; break;
case Keys.S: case Keys.S:
CParty.SetNormalGameMode(); CParty.SetNormalGameMode();
CGraphics.FadeTo(EScreens.ScreenSong); CGraphics.FadeTo(EScreen.Song);
break; break;
case Keys.Enter: case Keys.Enter:
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
{ {
_SaveConfig(); _SaveConfig();
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
} }
break; break;
@@ -113,13 +113,13 @@ namespace Vocaluxe.Screens
if (mouseEvent.RB) if (mouseEvent.RB)
{ {
_SaveConfig(); _SaveConfig();
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
} }
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent)) if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{ {
_SaveConfig(); _SaveConfig();
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
} }
return true; return true;
} }
@@ -150,7 +150,7 @@ namespace Vocaluxe.Screens
CConfig.SaveConfig(); CConfig.SaveConfig();
CBackgroundMusic.SetMusicSource(CConfig.Config.Sound.BackgroundMusicSource); CBackgroundMusic.SetMusicSource(CConfig.Config.Sound.BackgroundMusicSource);
CSound.SetGlobalVolume(CConfig.BackgroundMusicVolume); CSound.SetGlobalVolume(CConfig.BackgroundMusicVolume / 100f);
if (CConfig.Config.Sound.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_ON) if (CConfig.Config.Sound.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_ON)
CBackgroundMusic.Play(); CBackgroundMusic.Play();
else else
+2 -2
View File
@@ -92,7 +92,7 @@ namespace Vocaluxe.Screens
case Keys.S: case Keys.S:
CParty.SetNormalGameMode(); CParty.SetNormalGameMode();
CGraphics.FadeTo(EScreens.ScreenSong); CGraphics.FadeTo(EScreen.Song);
break; break;
case Keys.Enter: case Keys.Enter:
@@ -157,7 +157,7 @@ namespace Vocaluxe.Screens
private void _Close() private void _Close()
{ {
_SaveConfig(); _SaveConfig();
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
} }
private void _SaveConfig() private void _SaveConfig()
+7 -7
View File
@@ -90,24 +90,24 @@ namespace Vocaluxe.Screens
case Keys.Escape: case Keys.Escape:
case Keys.Back: case Keys.Back:
_SaveConfig(); _SaveConfig();
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
break; break;
case Keys.S: case Keys.S:
CParty.SetNormalGameMode(); CParty.SetNormalGameMode();
CGraphics.FadeTo(EScreens.ScreenSong); CGraphics.FadeTo(EScreen.Song);
break; break;
case Keys.Enter: case Keys.Enter:
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
{ {
_SaveConfig(); _SaveConfig();
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
} }
else if (_Buttons[_ButtonScreenAdjustments].Selected) else if (_Buttons[_ButtonScreenAdjustments].Selected)
{ {
_SaveConfig(); _SaveConfig();
CGraphics.FadeTo(EScreens.ScreenOptionsVideoAdjustments); CGraphics.FadeTo(EScreen.OptionsVideoAdjustments);
} }
break; break;
@@ -138,7 +138,7 @@ namespace Vocaluxe.Screens
if (mouseEvent.RB) if (mouseEvent.RB)
{ {
_SaveConfig(); _SaveConfig();
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
} }
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent)) if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
@@ -149,9 +149,9 @@ namespace Vocaluxe.Screens
_OnCapabilitiesEvent(); _OnCapabilitiesEvent();
_SaveConfig(); _SaveConfig();
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
CGraphics.FadeTo(EScreens.ScreenOptions); CGraphics.FadeTo(EScreen.Options);
if (_Buttons[_ButtonScreenAdjustments].Selected) if (_Buttons[_ButtonScreenAdjustments].Selected)
CGraphics.FadeTo(EScreens.ScreenOptionsVideoAdjustments); CGraphics.FadeTo(EScreen.OptionsVideoAdjustments);
} }
return true; return true;
} }
@@ -51,19 +51,19 @@ namespace Vocaluxe.Screens
case Keys.Escape: case Keys.Escape:
case Keys.Back: case Keys.Back:
_SaveConfig(); _SaveConfig();
CGraphics.FadeTo(EScreens.ScreenOptionsVideo); CGraphics.FadeTo(EScreen.OptionsVideo);
break; break;
case Keys.S: case Keys.S:
CParty.SetNormalGameMode(); CParty.SetNormalGameMode();
CGraphics.FadeTo(EScreens.ScreenSong); CGraphics.FadeTo(EScreen.Song);
break; break;
case Keys.Enter: case Keys.Enter:
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
{ {
_SaveConfig(); _SaveConfig();
CGraphics.FadeTo(EScreens.ScreenOptionsVideo); CGraphics.FadeTo(EScreen.OptionsVideo);
} }
break; break;
} }
@@ -78,14 +78,14 @@ namespace Vocaluxe.Screens
if (mouseEvent.RB) if (mouseEvent.RB)
{ {
_SaveConfig(); _SaveConfig();
CGraphics.FadeTo(EScreens.ScreenOptionsVideo); CGraphics.FadeTo(EScreen.OptionsVideo);
} }
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent)) if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{ {
_SaveConfig(); _SaveConfig();
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
CGraphics.FadeTo(EScreens.ScreenOptionsVideo); CGraphics.FadeTo(EScreen.OptionsVideo);
} }
return true; return true;
} }
+5 -5
View File
@@ -64,7 +64,7 @@ namespace Vocaluxe.Screens
{ {
case Keys.Back: case Keys.Back:
case Keys.Escape: case Keys.Escape:
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
break; break;
case Keys.Enter: case Keys.Enter:
@@ -72,7 +72,7 @@ namespace Vocaluxe.Screens
_StartPartyMode(); _StartPartyMode();
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
break; break;
case Keys.Left: case Keys.Left:
@@ -95,14 +95,14 @@ namespace Vocaluxe.Screens
_StartPartyMode(); _StartPartyMode();
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
if (_SelectSlides[_SelectSlideModes].Selected) if (_SelectSlides[_SelectSlideModes].Selected)
_UpdateSelection(); _UpdateSelection();
} }
if (mouseEvent.RB) if (mouseEvent.RB)
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
return true; return true;
} }
@@ -194,7 +194,7 @@ namespace Vocaluxe.Screens
} }
CParty.SetPartyMode(_PartyModeInfos[index].PartyModeID); CParty.SetPartyMode(_PartyModeInfos[index].PartyModeID);
CGraphics.FadeTo(EScreens.ScreenPartyDummy); CGraphics.FadeTo(CParty.GetStartScreen());
} }
} }
} }
+5 -5
View File
@@ -122,12 +122,12 @@ namespace Vocaluxe.Screens
if (_EditMode == EEditMode.PlayerName) if (_EditMode == EEditMode.PlayerName)
_EditMode = EEditMode.None; _EditMode = EEditMode.None;
else else
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
break; break;
case Keys.Enter: case Keys.Enter:
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
else if (_Buttons[_ButtonSave].Selected) else if (_Buttons[_ButtonSave].Selected)
_SaveProfiles(); _SaveProfiles();
else if (_Buttons[_ButtonNew].Selected) else if (_Buttons[_ButtonNew].Selected)
@@ -159,7 +159,7 @@ namespace Vocaluxe.Screens
_ProfilesChanged = true; _ProfilesChanged = true;
} }
else else
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
break; break;
case Keys.Delete: case Keys.Delete:
@@ -199,7 +199,7 @@ namespace Vocaluxe.Screens
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent)) if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{ {
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
else if (_Buttons[_ButtonSave].Selected) else if (_Buttons[_ButtonSave].Selected)
_SaveProfiles(); _SaveProfiles();
else if (_Buttons[_ButtonNew].Selected) else if (_Buttons[_ButtonNew].Selected)
@@ -246,7 +246,7 @@ namespace Vocaluxe.Screens
} }
if (mouseEvent.RB) if (mouseEvent.RB)
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
return true; return true;
} }
+6 -19
View File
@@ -120,6 +120,11 @@ namespace Vocaluxe.Screens
private CBackground _SlideShow; private CBackground _SlideShow;
public override EMusicType CurrentMusicType
{
get { return EMusicType.Game; }
}
public override void Init() public override void Init()
{ {
base.Init(); base.Init();
@@ -232,24 +237,6 @@ namespace Vocaluxe.Screens
} }
break; 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: case Keys.V:
if (_VideoAspect == EAspect.Zoom2) if (_VideoAspect == EAspect.Zoom2)
_VideoAspect = EAspect.Crop; _VideoAspect = EAspect.Crop;
@@ -422,7 +409,6 @@ namespace Vocaluxe.Screens
_UpdateNames(); _UpdateNames();
_CloseSong(); _CloseSong();
CSound.SetGlobalVolume(CConfig.GameMusicVolume);
} }
public override void OnShowFinish() public override void OnShowFinish()
@@ -484,6 +470,7 @@ namespace Vocaluxe.Screens
_CloseSong(); _CloseSong();
if (_Webcam) if (_Webcam)
CWebcam.Stop(); CWebcam.Stop();
CBackgroundMusic.Disabled = false;
} }
private void _CloseSong() private void _CloseSong()
+26 -37
View File
@@ -94,6 +94,11 @@ namespace Vocaluxe.Screens
private ISongMenu _SongMenu; private ISongMenu _SongMenu;
private CPlaylist _Playlist; private CPlaylist _Playlist;
public override EMusicType CurrentMusicType
{
get { return CSongs.IsInCategory ? EMusicType.Preview : EMusicType.Background; }
}
public CScreenSong() public CScreenSong()
{ {
_AvailableGameModes = new List<EGameMode>(); _AvailableGameModes = new List<EGameMode>();
@@ -192,7 +197,7 @@ namespace Vocaluxe.Screens
{ {
case Keys.Escape: case Keys.Escape:
if ((CSongs.Category < 0 || _Sso.Sorting.Tabs == EOffOn.TR_CONFIG_OFF) && !_Sso.Selection.PartyMode && !_SearchActive) 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) if (_SearchActive)
{ {
_SearchActive = false; _SearchActive = false;
@@ -241,7 +246,7 @@ namespace Vocaluxe.Screens
_ApplyNewSearchFilter(_SearchText.Remove(_SearchText.Length - 1)); _ApplyNewSearchFilter(_SearchText.Remove(_SearchText.Length - 1));
} }
else if ((!CSongs.IsInCategory || _Sso.Sorting.Tabs == EOffOn.TR_CONFIG_OFF) && !_Sso.Selection.PartyMode) else if ((!CSongs.IsInCategory || _Sso.Sorting.Tabs == EOffOn.TR_CONFIG_OFF) && !_Sso.Selection.PartyMode)
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
break; break;
@@ -372,26 +377,6 @@ namespace Vocaluxe.Screens
break; 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; return true;
} }
@@ -447,7 +432,7 @@ namespace Vocaluxe.Screens
if (CSongs.Category < 0 && !_Sso.Selection.PartyMode && !_SearchActive) if (CSongs.Category < 0 && !_Sso.Selection.PartyMode && !_SearchActive)
{ {
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
return true; return true;
} }
} }
@@ -659,8 +644,17 @@ namespace Vocaluxe.Screens
_Playlist.DragAndDropSongID = -1; _Playlist.DragAndDropSongID = -1;
UpdateGame(); 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() public override bool UpdateGame()
@@ -716,12 +710,7 @@ namespace Vocaluxe.Screens
base.OnClose(); base.OnClose();
_SongMenu.OnHide(); _SongMenu.OnHide();
CSongs.OnCategoryChanged -= _OnCategoryChanged;
if (CGraphics.NextScreen != EScreens.ScreenNames || CConfig.Config.Sound.BackgroundMusic == EBackgroundMusicOffOn.TR_CONFIG_OFF)
{
CBackgroundMusic.Disabled = false;
CSound.SetGlobalVolume(CConfig.BackgroundMusicVolume);
}
} }
private void _HandlePartySongSelection(int songNr) private void _HandlePartySongSelection(int songNr)
@@ -835,7 +824,7 @@ namespace Vocaluxe.Screens
CGame.ClearSongs(); CGame.ClearSongs();
if (CGame.AddVisibleSong(songNr, gm)) if (CGame.AddVisibleSong(songNr, gm))
CGraphics.FadeTo(EScreens.ScreenNames); CGraphics.FadeTo(EScreen.Names);
} }
} }
@@ -849,7 +838,7 @@ namespace Vocaluxe.Screens
CGame.ClearSongs(); CGame.ClearSongs();
if (CGame.AddVisibleSong(songNr, gm)) if (CGame.AddVisibleSong(songNr, gm))
CGraphics.FadeTo(EScreens.ScreenNames); CGraphics.FadeTo(EScreen.Names);
} }
} }
@@ -863,7 +852,7 @@ namespace Vocaluxe.Screens
CGame.Reset(); CGame.Reset();
CGame.ClearSongs(); CGame.ClearSongs();
if (CGame.AddVisibleSong(songNr, EGameMode.TR_GAMEMODE_MEDLEY)) 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) if (CGame.GetNumSongs() > 0)
CGraphics.FadeTo(EScreens.ScreenNames); CGraphics.FadeTo(EScreen.Names);
} }
private void _StartRandomVisibleSongs() private void _StartRandomVisibleSongs()
@@ -914,7 +903,7 @@ namespace Vocaluxe.Screens
} }
if (CGame.GetNumSongs() > 0) if (CGame.GetNumSongs() > 0)
CGraphics.FadeTo(EScreens.ScreenNames); CGraphics.FadeTo(EScreen.Names);
} }
private void _StartRandomMedley(int numSongs, bool allSongs) private void _StartRandomMedley(int numSongs, bool allSongs)
@@ -950,7 +939,7 @@ namespace Vocaluxe.Screens
} }
if (CGame.GetNumSongs() > 0) if (CGame.GetNumSongs() > 0)
CGraphics.FadeTo(EScreens.ScreenNames); CGraphics.FadeTo(EScreen.Names);
} }
private bool _SelectNextRandom(int teamNr) private bool _SelectNextRandom(int teamNr)
+4 -4
View File
@@ -63,11 +63,11 @@ namespace Vocaluxe.Screens
{ {
case Keys.Escape: case Keys.Escape:
case Keys.Back: case Keys.Back:
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
break; break;
case Keys.Enter: case Keys.Enter:
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
break; break;
case Keys.F: case Keys.F:
@@ -92,10 +92,10 @@ namespace Vocaluxe.Screens
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent)) {} if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent)) {}
if (mouseEvent.LB) if (mouseEvent.LB)
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
if (mouseEvent.RB) if (mouseEvent.RB)
CGraphics.FadeTo(EScreens.ScreenMain); CGraphics.FadeTo(EScreen.Main);
return true; return true;
} }
+34 -22
View File
@@ -360,32 +360,44 @@ namespace VocaluxeLib
Freestyle Freestyle
} }
public enum EScreens public enum EMusicType
{ {
ScreenTest = 0, None,
ScreenLoad = 1, Background,
ScreenMain = 2, Preview,
ScreenSong = 3, Game
ScreenOptions = 4, }
ScreenSing = 5,
ScreenProfiles = 6,
ScreenScore = 7,
ScreenHighscore = 8,
ScreenOptionsGame = 9, /// <summary>
ScreenOptionsSound = 10, /// Base screens
ScreenOptionsRecord = 11, /// </summary>
ScreenOptionsVideo = 12, public enum EScreen
ScreenOptionsVideoAdjustments = 13, {
ScreenOptionsLyrics = 14, Unknown = -1,
ScreenOptionsTheme = 15,
ScreenNames = 16, Test,
ScreenCredits = 17, Load,
ScreenParty = 18, Main,
ScreenPartyDummy = 19, 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 public enum EPopupScreens
+7 -3
View File
@@ -32,7 +32,7 @@ namespace VocaluxeLib
EOffOn GetSaveModifiedSongs(); EOffOn GetSaveModifiedSongs();
void SetBackgroundMusicVolume(int newVolume); void SetBackgroundMusicVolume(int newVolume);
int GetBackgroundMusicVolume(); int GetMusicVolume(EMusicType type);
EBackgroundMusicOffOn GetBackgroundMusicStatus(); EBackgroundMusicOffOn GetBackgroundMusicStatus();
@@ -147,11 +147,14 @@ namespace VocaluxeLib
{ {
void ReloadTheme(); void ReloadTheme();
void SaveTheme(); void SaveTheme();
void FadeTo(EScreens nextScreen); void FadeTo(EScreen nextScreen);
void FadeTo(IMenu nextScreen);
float GetGlobalAlpha(); float GetGlobalAlpha();
EScreens GetNextScreen(); IMenu GetNextScreen();
EScreen GetNextScreenType();
IMenu GetScreen(EScreen screen);
} }
public interface ILog public interface ILog
@@ -272,6 +275,7 @@ namespace VocaluxeLib
float GetLength(int soundStream); float GetLength(int soundStream);
void SetStreamVolume(int soundStream, float volume); void SetStreamVolume(int soundStream, float volume);
void SetGlobalVolume(int volume);
} }
public interface ICover public interface ICover
+5 -5
View File
@@ -112,11 +112,6 @@ namespace VocaluxeLib.Menu
_ThemeScreenSettings = null; _ThemeScreenSettings = null;
} }
protected static void _FadeTo(EScreens nextScreen)
{
CBase.Graphics.FadeTo(nextScreen);
}
#region ThemeHandler #region ThemeHandler
protected override void _ClearElements() protected override void _ClearElements()
{ {
@@ -569,6 +564,11 @@ namespace VocaluxeLib.Menu
get { return CBase.Settings.GetRenderRect(); } get { return CBase.Settings.GetRenderRect(); }
} }
public virtual EMusicType CurrentMusicType
{
get { return EMusicType.Background; }
}
protected void _ResumeBG() protected void _ResumeBG()
{ {
foreach (CBackground bg in _Backgrounds) foreach (CBackground bg in _Backgrounds)
-2
View File
@@ -29,7 +29,5 @@ namespace VocaluxeLib.Menu
_PartyMode = partyMode; _PartyMode = partyMode;
PartyModeID = partyMode.ID; PartyModeID = partyMode.ID;
} }
public virtual void DataToScreen(Object data) {}
} }
} }
+1 -13
View File
@@ -22,12 +22,6 @@ using VocaluxeLib.Profile;
namespace VocaluxeLib.Menu namespace VocaluxeLib.Menu
{ {
public struct SPartyNameOptions
{
public int[] NumPlayerTeams;
public List<int>[] TeamList;
}
public abstract class CMenuPartyNameSelection : CMenuParty public abstract class CMenuPartyNameSelection : CMenuParty
{ {
private bool _Teams; private bool _Teams;
@@ -63,7 +57,7 @@ namespace VocaluxeLib.Menu
private const string _SelectSlidePlayer = "SelectSlidePlayer"; private const string _SelectSlidePlayer = "SelectSlidePlayer";
private const string _NameSelection = "NameSelection"; private const string _NameSelection = "NameSelection";
private List<int>[] _TeamList; protected List<int>[] _TeamList;
public override void Init() public override void Init()
{ {
@@ -558,12 +552,6 @@ namespace VocaluxeLib.Menu
public abstract void Back(); public abstract void Back();
public abstract void Next(); public abstract void Next();
public SPartyNameOptions GetData()
{
SPartyNameOptions option = new SPartyNameOptions {NumPlayerTeams = _NumPlayerTeams, TeamList = _TeamList};
return option;
}
public void IncreaseTeamNum() public void IncreaseTeamNum()
{ {
if (!_AllowChangeTeamNum) if (!_AllowChangeTeamNum)
+4 -2
View File
@@ -140,8 +140,10 @@ namespace VocaluxeLib.Menu
{ {
_PrepareTiles(); _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 = 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; {
Visible = false
};
_UpdateVisibleProfiles(); _UpdateVisibleProfiles();
+2 -2
View File
@@ -1112,7 +1112,7 @@ namespace VocaluxeLib.Menu
for (int i = 0; i < CBase.Playlist.GetSongCount(ActivePlaylistID); i++) 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); CBase.Game.AddSong(CBase.Playlist.GetSong(ActivePlaylistID, i).SongID, CBase.Playlist.GetSong(ActivePlaylistID, i).GameMode);
if (CBase.Game.GetNumSongs() > 0) 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); CBase.Game.AddSong(CBase.Playlist.GetSong(ActivePlaylistID, selected).SongID, CBase.Playlist.GetSong(ActivePlaylistID, selected).GameMode);
if (CBase.Game.GetNumSongs() > 0) if (CBase.Game.GetNumSongs() > 0)
CBase.Graphics.FadeTo(EScreens.ScreenNames); CBase.Graphics.FadeTo(EScreen.Names);
} }
private void _Update() private void _Update()
+4
View File
@@ -42,6 +42,10 @@ namespace VocaluxeLib.Menu
void OnClose(); void OnClose();
SRectF ScreenArea { get; } SRectF ScreenArea { get; }
/// <summary>
/// Type of currently playing music
/// </summary>
EMusicType CurrentMusicType { get; }
void NextElement(); void NextElement();
void PrevElement(); void PrevElement();
@@ -243,7 +243,7 @@ namespace VocaluxeLib.Menu.SongMenu
public virtual void OnHide() 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(); _ResetPreview();
} }
@@ -454,7 +454,7 @@ namespace VocaluxeLib.Menu.SongMenu
} }
if (CBase.Songs.GetTabs() == EOffOn.TR_CONFIG_OFF && !songOptions.Selection.PartyMode) if (CBase.Songs.GetTabs() == EOffOn.TR_CONFIG_OFF && !songOptions.Selection.PartyMode)
{ {
CBase.Graphics.FadeTo(EScreens.ScreenMain); CBase.Graphics.FadeTo(EScreen.Main);
return true; return true;
} }
} }
+6 -26
View File
@@ -15,7 +15,6 @@
// along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>. // along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>.
#endregion #endregion
using System;
using System.Collections.Generic; using System.Collections.Generic;
using VocaluxeLib.Menu; using VocaluxeLib.Menu;
@@ -35,10 +34,7 @@ namespace VocaluxeLib.PartyModes
} }
#region Implementation #region Implementation
public virtual bool Init() public abstract bool Init();
{
return false;
}
public void LoadTheme() public void LoadTheme()
{ {
@@ -74,25 +70,9 @@ namespace VocaluxeLib.PartyModes
entry.Value.SaveTheme(); entry.Value.SaveTheme();
} }
public virtual void DataFromScreen(string screenName, Object data) {}
public virtual void UpdateGame() {} public virtual void UpdateGame() {}
public virtual CMenuParty GetNextPartyScreen(out EScreens alternativeScreen) public abstract IMenu GetStartScreen();
{
alternativeScreen = EScreens.ScreenMain;
return null;
}
public virtual EScreens GetStartScreen()
{
return EScreens.ScreenSong;
}
public virtual EScreens GetMainScreen()
{
return EScreens.ScreenSong;
}
public virtual SScreenSongOptions GetScreenSongOptions() public virtual SScreenSongOptions GetScreenSongOptions()
{ {
@@ -157,21 +137,21 @@ namespace VocaluxeLib.PartyModes
_ScreenSongOptions.Selection.NumJokers[teamNr]--; _ScreenSongOptions.Selection.NumJokers[teamNr]--;
} }
public virtual void SongSelected(int songID) {} public abstract void SongSelected(int songID);
public virtual void FinishedSinging() public virtual void FinishedSinging()
{ {
CBase.Graphics.FadeTo(EScreens.ScreenScore); CBase.Graphics.FadeTo(EScreen.Score);
} }
public virtual void LeavingScore() public virtual void LeavingScore()
{ {
CBase.Graphics.FadeTo(EScreens.ScreenHighscore); CBase.Graphics.FadeTo(EScreen.Highscore);
} }
public virtual void LeavingHighscore() public virtual void LeavingHighscore()
{ {
CBase.Graphics.FadeTo(EScreens.ScreenSong); CBase.Graphics.FadeTo(EScreen.Song);
} }
#endregion Implementation #endregion Implementation
} }
+16
View File
@@ -16,6 +16,7 @@
#endregion #endregion
using System; using System;
using VocaluxeLib.Menu;
namespace VocaluxeLib.PartyModes namespace VocaluxeLib.PartyModes
{ {
@@ -37,6 +38,16 @@ namespace VocaluxeLib.PartyModes
_ScreenSongOptions.Sorting.DuetOptions = EDuetOptions.All; _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() public override SScreenSongOptions GetScreenSongOptions()
{ {
_ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting(); _ScreenSongOptions.Sorting.SongSorting = CBase.Config.GetSongSorting();
@@ -55,5 +66,10 @@ namespace VocaluxeLib.PartyModes
_ScreenSongOptions.Sorting.SearchString = searchString; _ScreenSongOptions.Sorting.SearchString = searchString;
_ScreenSongOptions.Sorting.SearchActive = visible; _ScreenSongOptions.Sorting.SearchActive = visible;
} }
public override void SongSelected(int songID)
{
CBase.Graphics.FadeTo(EScreen.Sing);
}
} }
} }
@@ -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 <http://www.gnu.org/licenses/>.
#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;
}
}
}
+1 -5
View File
@@ -15,7 +15,6 @@
// along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>. // along with Vocaluxe. If not, see <http://www.gnu.org/licenses/>.
#endregion #endregion
using System;
using VocaluxeLib.Menu; using VocaluxeLib.Menu;
namespace VocaluxeLib.PartyModes namespace VocaluxeLib.PartyModes
@@ -91,13 +90,10 @@ namespace VocaluxeLib.PartyModes
void AddScreen(CMenuParty screen, string screenName); void AddScreen(CMenuParty screen, string screenName);
void SaveScreens(); void SaveScreens();
void DataFromScreen(string screenName, Object data);
void UpdateGame(); void UpdateGame();
CMenuParty GetNextPartyScreen(out EScreens alternativeScreen); IMenu GetStartScreen();
EScreens GetStartScreen();
EScreens GetMainScreen();
SScreenSongOptions GetScreenSongOptions(); SScreenSongOptions GetScreenSongOptions();
void OnSongChange(int songIndex, ref SScreenSongOptions screenSongOptions); void OnSongChange(int songIndex, ref SScreenSongOptions screenSongOptions);
+2 -3
View File
@@ -71,7 +71,7 @@ namespace VocaluxeLib.Utils.Player
public bool IsFinished public bool IsFinished
{ {
get { return RepeatSong ? false : CBase.Sound.IsFinished(_StreamID); } get { return !RepeatSong && CBase.Sound.IsFinished(_StreamID); }
} }
public CSoundPlayer(bool loop = false) public CSoundPlayer(bool loop = false)
@@ -145,9 +145,8 @@ namespace VocaluxeLib.Utils.Player
if (_StreamID == -1 || !IsPlaying) if (_StreamID == -1 || !IsPlaying)
return; return;
float timeToPlay;
float len = CBase.Sound.GetLength(_StreamID); 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); bool finished = CBase.Sound.IsFinished(_StreamID);
if (timeToPlay <= _FadeTime || finished) if (timeToPlay <= _FadeTime || finished)
-1
View File
@@ -139,7 +139,6 @@
<Compile Include="Structs.cs" /> <Compile Include="Structs.cs" />
<Compile Include="PartyModes\CPartyMode.cs" /> <Compile Include="PartyModes\CPartyMode.cs" />
<Compile Include="PartyModes\CPartyModeNone.cs" /> <Compile Include="PartyModes\CPartyModeNone.cs" />
<Compile Include="PartyModes\CScreenPartyDummy.cs" />
<Compile Include="PartyModes\IPartyMode.cs" /> <Compile Include="PartyModes\IPartyMode.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Utils\CWavFile.cs" /> <Compile Include="Utils\CWavFile.cs" />
+2 -1
View File
@@ -44,7 +44,8 @@ namespace VocaluxeLib.Xml
/// Attribute for float fields to enforce normalized (0&lt;=x&lt;=1) values /// Attribute for float fields to enforce normalized (0&lt;=x&lt;=1) values
/// </summary> /// </summary>
[AttributeUsage(AttributeTargets.Field)] [AttributeUsage(AttributeTargets.Field)]
public class XmlNormalizedAttribute : XmlRangedAttribute { public class XmlNormalizedAttribute : XmlRangedAttribute
{
public XmlNormalizedAttribute() : base(0, 1) {} public XmlNormalizedAttribute() : base(0, 1) {}
} }