diff --git a/Output/CreditsRessourcesDB.sqlite b/Output/CreditsRessourcesDB.sqlite index dbfe78bb..3f960232 100644 Binary files a/Output/CreditsRessourcesDB.sqlite and b/Output/CreditsRessourcesDB.sqlite differ diff --git a/PartyModes/PartyModeChallenge/PartyScreenChallengeConfig.cs b/PartyModes/PartyModeChallenge/PartyScreenChallengeConfig.cs index 61910470..acb8ba59 100644 --- a/PartyModes/PartyModeChallenge/PartyScreenChallengeConfig.cs +++ b/PartyModes/PartyModeChallenge/PartyScreenChallengeConfig.cs @@ -10,7 +10,7 @@ namespace Vocaluxe.PartyModes public class PartyScreenChallengeConfig : CMenuParty { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } const string SelectSlideNumPlayers = "SelectSlideNumPlayers"; const string SelectSlideNumMics = "SelectSlideNumMics"; @@ -28,14 +28,12 @@ namespace Vocaluxe.PartyModes { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "PartyScreenChallengeConfig"; _ThemeSelectSlides = new string[] { SelectSlideNumPlayers, SelectSlideNumMics, SelectSlideNumRounds }; _ThemeButtons = new string[] { ButtonNext, ButtonBack }; - _ScreenVersion = ScreenVersion; Data = new DataFromScreen(); FromScreenConfig config = new FromScreenConfig(); @@ -63,7 +61,7 @@ namespace Vocaluxe.PartyModes } catch (Exception e) { - CBase.Log.LogError("Error in party mode screen challenge config. Can't cast received data from game mode " + _ThemeName + ". " + e.Message);; + CBase.Log.LogError("Error in party mode screen challenge config. Can't cast received data from game mode " + ThemeName + ". " + e.Message);; } } @@ -153,11 +151,6 @@ namespace Vocaluxe.PartyModes return true; } - public override void OnClose() - { - base.OnClose(); - } - private void RebuildSlides() { // build num player slide (min player ... max player); @@ -251,7 +244,7 @@ namespace Vocaluxe.PartyModes private void Next() { - _PartyMode.DataFromScreen(_ThemeName, Data); + _PartyMode.DataFromScreen(ThemeName, Data); } } } diff --git a/PartyModes/PartyModeChallenge/PartyScreenChallengeMain.cs b/PartyModes/PartyModeChallenge/PartyScreenChallengeMain.cs index 9a36b657..54ae3304 100644 --- a/PartyModes/PartyModeChallenge/PartyScreenChallengeMain.cs +++ b/PartyModes/PartyModeChallenge/PartyScreenChallengeMain.cs @@ -28,7 +28,7 @@ namespace Vocaluxe.PartyModes public class PartyScreenChallengeMain : CMenuParty { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } const string TextPosition = "TextPosition"; const string TextPlayerName = "TextPlayerName"; @@ -81,15 +81,13 @@ namespace Vocaluxe.PartyModes Data.ScreenMain = new FromScreenMain(); } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "PartyScreenChallengeMain"; _ThemeTexts = new string[] { TextPosition, TextPlayerName, TextNumPlayed, TextWon, TextSingPoints, TextGamePoints, TextNextPlayer, TextPopupReallyExit, TextRoundNumber, TextRoundPlayer, TextRoundScore, TextFinishMessage, TextFinishPlayerWin, TextNextPlayerMessage }; _ThemeButtons = new string[] { ButtonNextRound, ButtonBack, ButtonExit, ButtonPopupYes, ButtonPopupNo, ButtonPlayerScrollDown, ButtonPlayerScrollUp, ButtonRoundsScrollDown, ButtonRoundsScrollUp }; _ThemeStatics = new string[] { StaticPopupBG, StaticNextPlayer }; - _ScreenVersion = ScreenVersion; } public override void LoadTheme(string XmlPath) @@ -122,7 +120,7 @@ namespace Vocaluxe.PartyModes } catch (Exception e) { - CBase.Log.LogError("Error in party mode screen challenge main. Can't cast received data from game mode " + _ThemeName + ". " + e.Message); ; + CBase.Log.LogError("Error in party mode screen challenge main. Can't cast received data from game mode " + ThemeName + ". " + e.Message); ; } } @@ -292,16 +290,11 @@ namespace Vocaluxe.PartyModes return true; } - public override void OnClose() - { - base.OnClose(); - } - private void NextRound() { Data.ScreenMain.FadeToNameSelection = false; Data.ScreenMain.FadeToSongSelection = true; - _PartyMode.DataFromScreen(_ThemeName, Data); + _PartyMode.DataFromScreen(ThemeName, Data); } private void EndParty() @@ -326,7 +319,7 @@ namespace Vocaluxe.PartyModes { Data.ScreenMain.FadeToNameSelection = true; Data.ScreenMain.FadeToSongSelection = false; - _PartyMode.DataFromScreen(_ThemeName, Data); + _PartyMode.DataFromScreen(ThemeName, Data); } private void UpdateNextPlayerPositions() diff --git a/PartyModes/PartyModeChallenge/PartyScreenChallengeNames.cs b/PartyModes/PartyModeChallenge/PartyScreenChallengeNames.cs index 13c1c902..f42240cf 100644 --- a/PartyModes/PartyModeChallenge/PartyScreenChallengeNames.cs +++ b/PartyModes/PartyModeChallenge/PartyScreenChallengeNames.cs @@ -10,7 +10,7 @@ namespace Vocaluxe.PartyModes public class PartyScreenChallengeNames : CMenuParty { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } const string ButtonNext = "ButtonNext"; const string ButtonBack = "ButtonBack"; @@ -57,7 +57,7 @@ namespace Vocaluxe.PartyModes { } - protected override void Init() + public override void Init() { base.Init(); @@ -68,10 +68,8 @@ namespace Vocaluxe.PartyModes Data.ScreenNames.ProfileIDs = new List(); - _ThemeName = "PartyScreenChallengeNames"; List buttons = new List(); _ThemeButtons = new string[] { ButtonBack, ButtonNext, ButtonPlayerDestination, ButtonPlayerChoose }; - _ScreenVersion = ScreenVersion; Data = new DataFromScreen(); FromScreenNames names = new FromScreenNames(); @@ -108,7 +106,7 @@ namespace Vocaluxe.PartyModes } catch (Exception e) { - CBase.Log.LogError("Error in party mode screen challenge names. Can't cast received data from game mode " + _ThemeName + ". " + e.Message); ; + CBase.Log.LogError("Error in party mode screen challenge names. Can't cast received data from game mode " + ThemeName + ". " + e.Message); ; } } @@ -286,11 +284,6 @@ namespace Vocaluxe.PartyModes return true; } - public override void OnClose() - { - base.OnClose(); - } - private void AddButtonPlayerDestination() { Buttons[ButtonPlayerDestination].Visible = false; @@ -521,14 +514,14 @@ namespace Vocaluxe.PartyModes { Data.ScreenNames.FadeToConfig = true; Data.ScreenNames.FadeToMain = false; - _PartyMode.DataFromScreen(_ThemeName, Data); + _PartyMode.DataFromScreen(ThemeName, Data); } private void Next() { Data.ScreenNames.FadeToConfig = false; Data.ScreenNames.FadeToMain = true; - _PartyMode.DataFromScreen(_ThemeName, Data); + _PartyMode.DataFromScreen(ThemeName, Data); } } } diff --git a/PartyModes/PartyModeChallengeMedley/PartyScreenChallengeConfig.cs b/PartyModes/PartyModeChallengeMedley/PartyScreenChallengeConfig.cs index 61910470..acb8ba59 100644 --- a/PartyModes/PartyModeChallengeMedley/PartyScreenChallengeConfig.cs +++ b/PartyModes/PartyModeChallengeMedley/PartyScreenChallengeConfig.cs @@ -10,7 +10,7 @@ namespace Vocaluxe.PartyModes public class PartyScreenChallengeConfig : CMenuParty { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } const string SelectSlideNumPlayers = "SelectSlideNumPlayers"; const string SelectSlideNumMics = "SelectSlideNumMics"; @@ -28,14 +28,12 @@ namespace Vocaluxe.PartyModes { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "PartyScreenChallengeConfig"; _ThemeSelectSlides = new string[] { SelectSlideNumPlayers, SelectSlideNumMics, SelectSlideNumRounds }; _ThemeButtons = new string[] { ButtonNext, ButtonBack }; - _ScreenVersion = ScreenVersion; Data = new DataFromScreen(); FromScreenConfig config = new FromScreenConfig(); @@ -63,7 +61,7 @@ namespace Vocaluxe.PartyModes } catch (Exception e) { - CBase.Log.LogError("Error in party mode screen challenge config. Can't cast received data from game mode " + _ThemeName + ". " + e.Message);; + CBase.Log.LogError("Error in party mode screen challenge config. Can't cast received data from game mode " + ThemeName + ". " + e.Message);; } } @@ -153,11 +151,6 @@ namespace Vocaluxe.PartyModes return true; } - public override void OnClose() - { - base.OnClose(); - } - private void RebuildSlides() { // build num player slide (min player ... max player); @@ -251,7 +244,7 @@ namespace Vocaluxe.PartyModes private void Next() { - _PartyMode.DataFromScreen(_ThemeName, Data); + _PartyMode.DataFromScreen(ThemeName, Data); } } } diff --git a/PartyModes/PartyModeChallengeMedley/PartyScreenChallengeMain.cs b/PartyModes/PartyModeChallengeMedley/PartyScreenChallengeMain.cs index 9a36b657..54ae3304 100644 --- a/PartyModes/PartyModeChallengeMedley/PartyScreenChallengeMain.cs +++ b/PartyModes/PartyModeChallengeMedley/PartyScreenChallengeMain.cs @@ -28,7 +28,7 @@ namespace Vocaluxe.PartyModes public class PartyScreenChallengeMain : CMenuParty { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } const string TextPosition = "TextPosition"; const string TextPlayerName = "TextPlayerName"; @@ -81,15 +81,13 @@ namespace Vocaluxe.PartyModes Data.ScreenMain = new FromScreenMain(); } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "PartyScreenChallengeMain"; _ThemeTexts = new string[] { TextPosition, TextPlayerName, TextNumPlayed, TextWon, TextSingPoints, TextGamePoints, TextNextPlayer, TextPopupReallyExit, TextRoundNumber, TextRoundPlayer, TextRoundScore, TextFinishMessage, TextFinishPlayerWin, TextNextPlayerMessage }; _ThemeButtons = new string[] { ButtonNextRound, ButtonBack, ButtonExit, ButtonPopupYes, ButtonPopupNo, ButtonPlayerScrollDown, ButtonPlayerScrollUp, ButtonRoundsScrollDown, ButtonRoundsScrollUp }; _ThemeStatics = new string[] { StaticPopupBG, StaticNextPlayer }; - _ScreenVersion = ScreenVersion; } public override void LoadTheme(string XmlPath) @@ -122,7 +120,7 @@ namespace Vocaluxe.PartyModes } catch (Exception e) { - CBase.Log.LogError("Error in party mode screen challenge main. Can't cast received data from game mode " + _ThemeName + ". " + e.Message); ; + CBase.Log.LogError("Error in party mode screen challenge main. Can't cast received data from game mode " + ThemeName + ". " + e.Message); ; } } @@ -292,16 +290,11 @@ namespace Vocaluxe.PartyModes return true; } - public override void OnClose() - { - base.OnClose(); - } - private void NextRound() { Data.ScreenMain.FadeToNameSelection = false; Data.ScreenMain.FadeToSongSelection = true; - _PartyMode.DataFromScreen(_ThemeName, Data); + _PartyMode.DataFromScreen(ThemeName, Data); } private void EndParty() @@ -326,7 +319,7 @@ namespace Vocaluxe.PartyModes { Data.ScreenMain.FadeToNameSelection = true; Data.ScreenMain.FadeToSongSelection = false; - _PartyMode.DataFromScreen(_ThemeName, Data); + _PartyMode.DataFromScreen(ThemeName, Data); } private void UpdateNextPlayerPositions() diff --git a/PartyModes/PartyModeChallengeMedley/PartyScreenChallengeNames.cs b/PartyModes/PartyModeChallengeMedley/PartyScreenChallengeNames.cs index 13c1c902..f42240cf 100644 --- a/PartyModes/PartyModeChallengeMedley/PartyScreenChallengeNames.cs +++ b/PartyModes/PartyModeChallengeMedley/PartyScreenChallengeNames.cs @@ -10,7 +10,7 @@ namespace Vocaluxe.PartyModes public class PartyScreenChallengeNames : CMenuParty { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } const string ButtonNext = "ButtonNext"; const string ButtonBack = "ButtonBack"; @@ -57,7 +57,7 @@ namespace Vocaluxe.PartyModes { } - protected override void Init() + public override void Init() { base.Init(); @@ -68,10 +68,8 @@ namespace Vocaluxe.PartyModes Data.ScreenNames.ProfileIDs = new List(); - _ThemeName = "PartyScreenChallengeNames"; List buttons = new List(); _ThemeButtons = new string[] { ButtonBack, ButtonNext, ButtonPlayerDestination, ButtonPlayerChoose }; - _ScreenVersion = ScreenVersion; Data = new DataFromScreen(); FromScreenNames names = new FromScreenNames(); @@ -108,7 +106,7 @@ namespace Vocaluxe.PartyModes } catch (Exception e) { - CBase.Log.LogError("Error in party mode screen challenge names. Can't cast received data from game mode " + _ThemeName + ". " + e.Message); ; + CBase.Log.LogError("Error in party mode screen challenge names. Can't cast received data from game mode " + ThemeName + ". " + e.Message); ; } } @@ -286,11 +284,6 @@ namespace Vocaluxe.PartyModes return true; } - public override void OnClose() - { - base.OnClose(); - } - private void AddButtonPlayerDestination() { Buttons[ButtonPlayerDestination].Visible = false; @@ -521,14 +514,14 @@ namespace Vocaluxe.PartyModes { Data.ScreenNames.FadeToConfig = true; Data.ScreenNames.FadeToMain = false; - _PartyMode.DataFromScreen(_ThemeName, Data); + _PartyMode.DataFromScreen(ThemeName, Data); } private void Next() { Data.ScreenNames.FadeToConfig = false; Data.ScreenNames.FadeToMain = true; - _PartyMode.DataFromScreen(_ThemeName, Data); + _PartyMode.DataFromScreen(ThemeName, Data); } } } diff --git a/PartyModes/PartyModeTicTacToe/PartyScreenTicTacToeConfig.cs b/PartyModes/PartyModeTicTacToe/PartyScreenTicTacToeConfig.cs index bad59f10..b6a4d497 100644 --- a/PartyModes/PartyModeTicTacToe/PartyScreenTicTacToeConfig.cs +++ b/PartyModes/PartyModeTicTacToe/PartyScreenTicTacToeConfig.cs @@ -10,7 +10,7 @@ namespace Vocaluxe.PartyModes public class PartyScreenTicTacToeConfig : CMenuParty { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } const string SelectSlideNumPlayerTeam1 = "SelectSlideNumPlayerTeam1"; const string SelectSlideNumPlayerTeam2 = "SelectSlideNumPlayerTeam2"; @@ -30,14 +30,12 @@ namespace Vocaluxe.PartyModes { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "PartyScreenTicTacToeConfig"; _ThemeSelectSlides = new string[] { SelectSlideNumPlayerTeam1, SelectSlideNumPlayerTeam2, SelectSlideNumFields, SelectSlideSongSource, SelectSlidePlaylist, SelectSlideCategory, SelectSlideGameMode }; _ThemeButtons = new string[] { ButtonNext, ButtonBack }; - _ScreenVersion = ScreenVersion; Data = new DataFromScreen(); FromScreenConfig config = new FromScreenConfig(); @@ -73,7 +71,7 @@ namespace Vocaluxe.PartyModes } catch (Exception e) { - CBase.Log.LogError("Error in party mode screen TicTacToe config. Can't cast received data from game mode " + _ThemeName + ". " + e.Message);; + CBase.Log.LogError("Error in party mode screen TicTacToe config. Can't cast received data from game mode " + ThemeName + ". " + e.Message);; } } @@ -162,11 +160,6 @@ namespace Vocaluxe.PartyModes return true; } - public override void OnClose() - { - base.OnClose(); - } - private void FillSlides() { // build num player slide (min player ... max player); @@ -339,7 +332,7 @@ namespace Vocaluxe.PartyModes private void Next() { - _PartyMode.DataFromScreen(_ThemeName, Data); + _PartyMode.DataFromScreen(ThemeName, Data); } } } diff --git a/PartyModes/PartyModeTicTacToe/PartyScreenTicTacToeMain.cs b/PartyModes/PartyModeTicTacToe/PartyScreenTicTacToeMain.cs index c8a5c5fa..d1c45100 100644 --- a/PartyModes/PartyModeTicTacToe/PartyScreenTicTacToeMain.cs +++ b/PartyModes/PartyModeTicTacToe/PartyScreenTicTacToeMain.cs @@ -24,7 +24,7 @@ namespace Vocaluxe.PartyModes public class PartyScreenTicTacToeMain : CMenuParty { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } const string TextPopupReallyExit = "TextPopupReallyExit"; const string TextTeamChoosing = "TextTeamChoosing"; @@ -73,15 +73,13 @@ namespace Vocaluxe.PartyModes { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "PartyScreenTicTacToeMain"; _ThemeTexts = new string[] { TextPopupReallyExit, TextTeamChoosing, TextFinishMessage, TextNextPlayerT1, TextNextPlayerT2, TextNextPlayerNameT1, TextNextPlayerNameT2 }; _ThemeButtons = new string[] { ButtonNextRound, ButtonBack, ButtonExit, ButtonPopupYes, ButtonPopupNo, ButtonField, ButtonJokerRandomT1, ButtonJokerRandomT2, ButtonJokerRetryT1, ButtonJokerRetryT2 }; _ThemeStatics = new string[] { StaticPopupBG, StaticAvatarT1, StaticAvatarT2 }; - _ScreenVersion = ScreenVersion; Data = new DataFromScreen(); FromScreenMain config = new FromScreenMain(); @@ -117,7 +115,7 @@ namespace Vocaluxe.PartyModes } catch (Exception e) { - CBase.Log.LogError("Error in party mode screen TicTacToe main. Can't cast received data from game mode " + _ThemeName + ". " + e.Message); ; + CBase.Log.LogError("Error in party mode screen TicTacToe main. Can't cast received data from game mode " + ThemeName + ". " + e.Message); ; } } @@ -629,7 +627,7 @@ namespace Vocaluxe.PartyModes Data.ScreenMain.SingRoundNr = SelectedField; Data.ScreenMain.PlayerTeam1 = GameData.PlayerTeam1; Data.ScreenMain.PlayerTeam2 = GameData.PlayerTeam2; - _PartyMode.DataFromScreen(_ThemeName, Data); + _PartyMode.DataFromScreen(ThemeName, Data); } private void EndParty() @@ -657,7 +655,7 @@ namespace Vocaluxe.PartyModes Data.ScreenMain.FadeToNameSelection = true; Data.ScreenMain.FadeToSinging = false; Data.ScreenMain.SingRoundNr = SelectedField; - _PartyMode.DataFromScreen(_ThemeName, Data); + _PartyMode.DataFromScreen(ThemeName, Data); } private int BuildWinnerPossibilities() diff --git a/PartyModes/PartyModeTicTacToe/PartyScreenTicTacToeNames.cs b/PartyModes/PartyModeTicTacToe/PartyScreenTicTacToeNames.cs index c095028a..64710c80 100644 --- a/PartyModes/PartyModeTicTacToe/PartyScreenTicTacToeNames.cs +++ b/PartyModes/PartyModeTicTacToe/PartyScreenTicTacToeNames.cs @@ -10,7 +10,7 @@ namespace Vocaluxe.PartyModes public class PartyScreenTicTacToeNames : CMenuParty { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } const string ButtonNext = "ButtonNext"; const string ButtonBack = "ButtonBack"; @@ -60,7 +60,7 @@ namespace Vocaluxe.PartyModes { } - protected override void Init() + public override void Init() { base.Init(); @@ -72,10 +72,8 @@ namespace Vocaluxe.PartyModes Data.ScreenNames.ProfileIDsTeam1 = new List(); Data.ScreenNames.ProfileIDsTeam2 = new List(); - _ThemeName = "PartyScreenTicTacToeNames"; List buttons = new List(); _ThemeButtons = new string[] { ButtonBack, ButtonNext, ButtonPlayerDestination, ButtonPlayerChoose, ButtonPlayerChooseScrollUp, ButtonPlayerChooseScrollDown }; - _ScreenVersion = ScreenVersion; Data = new DataFromScreen(); FromScreenNames names = new FromScreenNames(); @@ -121,7 +119,7 @@ namespace Vocaluxe.PartyModes } catch (Exception e) { - CBase.Log.LogError("Error in party mode screen TicTacToe names. Can't cast received data from game mode " + _ThemeName + ". " + e.Message); ; + CBase.Log.LogError("Error in party mode screen TicTacToe names. Can't cast received data from game mode " + ThemeName + ". " + e.Message); ; } } @@ -332,11 +330,6 @@ namespace Vocaluxe.PartyModes return true; } - public override void OnClose() - { - base.OnClose(); - } - private void Scroll(int Offset) { if (Offset < 0 && PlayerChooseButtonsOffset > 0) @@ -663,14 +656,14 @@ namespace Vocaluxe.PartyModes { Data.ScreenNames.FadeToConfig = true; Data.ScreenNames.FadeToMain = false; - _PartyMode.DataFromScreen(_ThemeName, Data); + _PartyMode.DataFromScreen(ThemeName, Data); } private void Next() { Data.ScreenNames.FadeToConfig = false; Data.ScreenNames.FadeToMain = true; - _PartyMode.DataFromScreen(_ThemeName, Data); + _PartyMode.DataFromScreen(ThemeName, Data); } } } diff --git a/Vocaluxe/Base/CDataBase.cs b/Vocaluxe/Base/CDataBase.cs index 0220890c..244491fa 100644 --- a/Vocaluxe/Base/CDataBase.cs +++ b/Vocaluxe/Base/CDataBase.cs @@ -1304,7 +1304,6 @@ namespace Vocaluxe.Base private static bool AddImageToCreditsDB(String ImagePath) { bool result = false; - STexture tex; if (File.Exists(ImagePath)) { @@ -1336,21 +1335,35 @@ namespace Vocaluxe.Base int w = origin.Width; int h = origin.Height; byte[] data; - + try { - using (Bitmap bmp = new Bitmap(w, h)) - { - using (Graphics g = Graphics.FromImage(bmp)) - { - g.DrawImage(origin, new Rectangle(0, 0, w, h)); - } - tex = CDraw.AddTexture(bmp); - data = new byte[w * h * 4]; + data = new byte[w * h * 4]; - BitmapData bmp_data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb); - Marshal.Copy(bmp_data.Scan0, data, 0, w * h * 4); - bmp.UnlockBits(bmp_data); + BitmapData bmp_data = origin.LockBits(new Rectangle(0, 0, w, h), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb); + Marshal.Copy(bmp_data.Scan0, data, 0, w * h * 4); + origin.UnlockBits(bmp_data); + + command.CommandText = "INSERT INTO Images (Path, width, height) VALUES (@path, @w, @h)"; + command.Parameters.Add("@path", System.Data.DbType.String, 0).Value = Path.GetFileName(ImagePath); + command.Parameters.Add("@w", System.Data.DbType.Int32, 0).Value = w; + command.Parameters.Add("@h", System.Data.DbType.Int32, 0).Value = h; + command.ExecuteNonQuery(); + + command.CommandText = "SELECT id FROM Images WHERE [Path] = @path"; + command.Parameters.Add("@path", System.Data.DbType.String, 0).Value = Path.GetFileName(ImagePath); + SQLiteDataReader reader = command.ExecuteReader(); + + if (reader != null) + { + reader.Read(); + int id = reader.GetInt32(0); + reader.Close(); + command.CommandText = "INSERT INTO ImageData (ImageID, Data) VALUES (@id, @data)"; + command.Parameters.Add("@id", System.Data.DbType.Int32, 20).Value = id; + command.Parameters.Add("@data", System.Data.DbType.Binary, 20).Value = data; + command.ExecuteReader(); + result = true; } } finally @@ -1358,27 +1371,6 @@ namespace Vocaluxe.Base origin.Dispose(); } - command.CommandText = "INSERT INTO Images (Path, width, height) VALUES (@path, @w, @h)"; - command.Parameters.Add("@path", System.Data.DbType.String, 0).Value = Path.GetFileName(ImagePath); - command.Parameters.Add("@w", System.Data.DbType.Int32, 0).Value = w; - command.Parameters.Add("@h", System.Data.DbType.Int32, 0).Value = h; - command.ExecuteNonQuery(); - - command.CommandText = "SELECT id FROM Images WHERE [Path] = @path"; - command.Parameters.Add("@path", System.Data.DbType.String, 0).Value = Path.GetFileName(ImagePath); - SQLiteDataReader reader = command.ExecuteReader(); - - if (reader != null) - { - reader.Read(); - int id = reader.GetInt32(0); - reader.Close(); - command.CommandText = "INSERT INTO ImageData (ImageID, Data) VALUES (@id, @data)"; - command.Parameters.Add("@id", System.Data.DbType.Int32, 20).Value = id; - command.Parameters.Add("@data", System.Data.DbType.Binary, 20).Value = data; - command.ExecuteReader(); - result = true; - } } } } diff --git a/Vocaluxe/Base/CGraphics.cs b/Vocaluxe/Base/CGraphics.cs index 0d8474c8..f9e07175 100644 --- a/Vocaluxe/Base/CGraphics.cs +++ b/Vocaluxe/Base/CGraphics.cs @@ -251,14 +251,14 @@ namespace Vocaluxe.Base for (int i = 0; i < _Screens.Count; i++) { CLog.StartBenchmark(1, "Load Theme " + Enum.GetNames(typeof(EScreens))[i]); - _Screens[i].Initialize(); + _Screens[i].Init(); _Screens[i].LoadTheme(CTheme.GetThemeScreensPath(-1)); CLog.StopBenchmark(1, "Load Theme " + Enum.GetNames(typeof(EScreens))[i]); } for (int i = 0; i < _PopupScreens.Count; i++) { - _PopupScreens[i].Initialize(); + _PopupScreens[i].Init(); _PopupScreens[i].LoadTheme(CTheme.GetThemeScreensPath(-1)); } } @@ -644,7 +644,7 @@ namespace Vocaluxe.Base UpdateMousePosition(MouseEvent.X, MouseEvent.Y); - bool isOverPopupPlayerControl = CHelper.IsInBounds(_PopupScreens[(int)EPopupScreens.PopupPlayerControl].GetScreenArea(), MouseEvent); + bool isOverPopupPlayerControl = CHelper.IsInBounds(_PopupScreens[(int)EPopupScreens.PopupPlayerControl].ScreenArea, MouseEvent); if (PopupPlayerControlAllowed && isOverPopupPlayerControl) { if (_CurrentPopupScreen == EPopupScreens.NoPopup && CConfig.BackgroundMusic == EOffOn.TR_CONFIG_ON) @@ -654,7 +654,7 @@ namespace Vocaluxe.Base if (!isOverPopupPlayerControl && _CurrentPopupScreen == EPopupScreens.PopupPlayerControl) HidePopup(EPopupScreens.PopupPlayerControl); - bool isOverPopupVolumeControl = CHelper.IsInBounds(_PopupScreens[(int)EPopupScreens.PopupVolumeControl].GetScreenArea(), MouseEvent); + bool isOverPopupVolumeControl = CHelper.IsInBounds(_PopupScreens[(int)EPopupScreens.PopupVolumeControl].ScreenArea, MouseEvent); if (PopupVolumeControlAllowed && isOverPopupVolumeControl) { if (_CurrentPopupScreen == EPopupScreens.NoPopup) diff --git a/Vocaluxe/Base/CParty.cs b/Vocaluxe/Base/CParty.cs index 0b17b4e9..55c2645c 100644 --- a/Vocaluxe/Base/CParty.cs +++ b/Vocaluxe/Base/CParty.cs @@ -314,7 +314,7 @@ namespace Vocaluxe.Base if (Screen != null) { - Screen.Initialize(); + Screen.Init(); Screen.AssingPartyMode(pm.PartyMode); Screen.SetPartyModeID(pm.PartyModeID); Screen.LoadTheme(XmlPath); diff --git a/Vocaluxe/Screens/CPopupScreenPlayerControl.cs b/Vocaluxe/Screens/CPopupScreenPlayerControl.cs index 1e10751e..3c1210eb 100644 --- a/Vocaluxe/Screens/CPopupScreenPlayerControl.cs +++ b/Vocaluxe/Screens/CPopupScreenPlayerControl.cs @@ -15,7 +15,7 @@ namespace Vocaluxe.Screens class CPopupScreenPlayerControl : CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } private const string StaticBG = "StaticBG"; private const string StaticCover = "StaticCover"; @@ -78,13 +78,10 @@ namespace Vocaluxe.Screens { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "PopupScreenPlayerControl"; - _ScreenVersion = ScreenVersion; - _ThemeStatics = new string[] { StaticBG, StaticCover }; _ThemeTexts = new string[] { TextCurrentSong }; @@ -191,11 +188,6 @@ namespace Vocaluxe.Screens return true; } - public override void OnShow() - { - base.OnShow(); - } - public override bool Draw() { if (!_Active) diff --git a/Vocaluxe/Screens/CPopupScreenVolumeControl.cs b/Vocaluxe/Screens/CPopupScreenVolumeControl.cs index 2256acb1..2cc2ea5c 100644 --- a/Vocaluxe/Screens/CPopupScreenVolumeControl.cs +++ b/Vocaluxe/Screens/CPopupScreenVolumeControl.cs @@ -15,7 +15,7 @@ namespace Vocaluxe.Screens class CPopupScreenVolumeControl : CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } private const string StaticBG = "StaticBG"; @@ -26,13 +26,10 @@ namespace Vocaluxe.Screens { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "PopupScreenVolumeControl"; - _ScreenVersion = ScreenVersion; - _ThemeStatics = new string[] { StaticBG }; _ThemeSelectSlides = new string[] { SelectSlideVolume }; diff --git a/Vocaluxe/Screens/CScreenCredits.cs b/Vocaluxe/Screens/CScreenCredits.cs index fb241f53..a254aff5 100644 --- a/Vocaluxe/Screens/CScreenCredits.cs +++ b/Vocaluxe/Screens/CScreenCredits.cs @@ -18,20 +18,82 @@ enum EDirection class CCreditName { - public CStatic image; - public CParticleEffect particle; - public SRectF particleRect; - public EDirection direction; + private CStatic _Image; + private CStatic _ImgDot; + private CParticleEffect _Particle; + private int _ParticleOffsetX; + private int _ParticleOffsetY; + public EDirection Direction; public float StartTimeUp; - public bool active; + public bool Active; + + public CCreditName(CStatic Image, CStatic ImgDot, CParticleEffect Particle, int ParticleOffsetX, int ParticleOffsetY) + { + _Image = Image; + _ImgDot = ImgDot; + _Particle = Particle; + _ParticleOffsetX = (int)Math.Round(ParticleOffsetX * (float)Image.Rect.W / Image.Texture.w2 - Particle.Rect.W / 2); + _ParticleOffsetY = (int)Math.Round(ParticleOffsetY * (float)Image.Rect.H / Image.Texture.h2 - Particle.Rect.H / 2); + Active = true; + } + + public float X + { + get + { + return _Image.Rect.X; + } + set + { + _Image.Rect.X = value; + _ImgDot.Rect.X = value + _ParticleOffsetX; + _Particle.Rect.X = value + _ParticleOffsetX; + } + } + public float Y + { + get + { + return _Image.Rect.Y; + } + set + { + _Image.Rect.Y = value; + _ImgDot.Rect.Y = value + _ParticleOffsetY; + _Particle.Rect.Y = value + _ParticleOffsetY; + } + } + + public float W { get { return _Image.Rect.W; } } + public float H { get { return _Image.Rect.H; } } + + public float Alpha + { + get { return _Image.Alpha; } + set + { + _Image.Alpha = value; + _ImgDot.Alpha = value; + } + } + + public void Draw() + { + if (Active) + { + _Image.Draw(); + _ImgDot.Draw(); + _Particle.Draw(); + } + } } namespace Vocaluxe.Screens { - class CScreenCredits :CMenu + class CScreenCredits : CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } private CStatic logo; private CParticleEffect starsRed; @@ -48,6 +110,9 @@ namespace Vocaluxe.Screens private STexture _TexLogo; private STexture _TexPerfectNoteStar; + private STexture _TexRedDot; + private STexture _TexBlueDot; + private STexture _TexNameBrunzel; private STexture _TexNameDarkice; private STexture _TexNameFlokuep; @@ -56,18 +121,15 @@ namespace Vocaluxe.Screens private STexture _TexNameBabene03; private STexture _TexNamePantero; private STexture _TexNamePinky007; - + public CScreenCredits() { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "ScreenCredits"; - _ScreenVersion = ScreenVersion; - LogoTimer = new Stopwatch(); CreditsTimer = new Stopwatch(); TextTimer = new Stopwatch(); @@ -110,34 +172,22 @@ namespace Vocaluxe.Screens { //Vocaluxe-Logo CDataBase.GetCreditsRessource("Logo_voc.png", ref _TexLogo); - + //Little stars for logo CDataBase.GetCreditsRessource("PerfectNoteStar.png", ref _TexPerfectNoteStar); - - //brunzel + + CDataBase.GetCreditsRessource("redDot.png", ref _TexRedDot); + CDataBase.GetCreditsRessource("blueDot.png", ref _TexBlueDot); + CDataBase.GetCreditsRessource("brunzel.png", ref _TexNameBrunzel); - - //Darkice CDataBase.GetCreditsRessource("Darkice.png", ref _TexNameDarkice); - - //flokuep CDataBase.GetCreditsRessource("flokuep.png", ref _TexNameFlokuep); - - //bohning CDataBase.GetCreditsRessource("bohning.png", ref _TexNameBohning); - - //mesand CDataBase.GetCreditsRessource("mesand.png", ref _TexNameMesand); - - //babene03 CDataBase.GetCreditsRessource("babene03.png", ref _TexNameBabene03); - - //pantero CDataBase.GetCreditsRessource("pantero.png", ref _TexNamePantero); - - //Pinky007 CDataBase.GetCreditsRessource("Pinky007.png", ref _TexNamePinky007); - + //Prepare Text int lastY = 280; for (int i = 0; i < paragraphs.Count; i++) @@ -178,25 +228,18 @@ namespace Vocaluxe.Screens public override void SaveTheme() { } - public override void UnloadTextures() {} + public override void UnloadTextures() { } - public override void ReloadTextures() {} + public override void ReloadTextures() { } public override bool HandleInput(KeyEvent KeyEvent) { - if (KeyEvent.KeyPressed && !Char.IsControl(KeyEvent.Unicode)) - { - - } - else + if (!KeyEvent.KeyPressed || Char.IsControl(KeyEvent.Unicode)) { switch (KeyEvent.Key) { case Keys.Escape: case Keys.Back: - CGraphics.FadeTo(EScreens.ScreenMain); - break; - case Keys.Enter: CGraphics.FadeTo(EScreens.ScreenMain); break; @@ -208,17 +251,7 @@ namespace Vocaluxe.Screens public override bool HandleMouse(MouseEvent MouseEvent) { - if (MouseEvent.LB && IsMouseOver(MouseEvent)) - { - - } - - if (MouseEvent.LB) - { - CGraphics.FadeTo(EScreens.ScreenMain); - } - - if (MouseEvent.RB) + if (MouseEvent.LB || MouseEvent.RB) { CGraphics.FadeTo(EScreens.ScreenMain); } @@ -234,93 +267,70 @@ namespace Vocaluxe.Screens return true; } + public CParticleEffect _GetStarParticles(int NumStars, bool isRed, SRectF Rect, bool BigParticles) + { + SColorF partColor = (isRed) ? new SColorF(1, 0, 0, 1) : new SColorF(0.149f, 0.415f, 0.819f, 1); + int partSize = (BigParticles) ? 35 : 25; + return GetNewParticleEffect(NumStars, partColor, Rect, _TexPerfectNoteStar, partSize, EParticleType.Star); + } + + private void _AddNewCreditName(STexture Texture, int ParticleOffsetX, int ParticleOffsetY, bool BigParticles) + { + bool isRight = _CreditNames.Count % 2 == 0; + int partRectSize = (BigParticles) ? 25 : 20; + int partCount = (BigParticles) ? 8 : 6; + STexture TexDot = (isRight) ? _TexRedDot : _TexBlueDot; + + CStatic Image = GetNewStatic(Texture, new SColorF(1, 1, 1, 1), new SRectF(-1, -1, 400, 120, -4)); + + SRectF particleRect = new SRectF(-1, -1, partRectSize, partRectSize, -6); + SRectF imgDotRect = new SRectF(particleRect); + imgDotRect.Z = -5; + CStatic ImgDot = GetNewStatic(TexDot, new SColorF(1, 1, 1, 1), imgDotRect); + CParticleEffect Particle = _GetStarParticles(partCount, isRight, particleRect, BigParticles); + + CCreditName credit = new CCreditName(Image, ImgDot, Particle, ParticleOffsetX, ParticleOffsetY); + + if (isRight) + { + credit.X = CSettings.iRenderW; + credit.Direction = EDirection.Right; + } + else + { + credit.X = -450; + credit.Direction = EDirection.Left; + + } + credit.Y = 580; + _CreditNames.Add(credit); + } + + public override void OnShow() { base.OnShow(); //Vocaluxe-Logo logo = GetNewStatic(_TexLogo, new SColorF(1, 1, 1, 1), new SRectF((CSettings.iRenderW - _TexLogo.width) / 2, -270, _TexLogo.width, _TexLogo.height, -2)); - + //Little stars for logo int numstars = (int)(logo.Rect.W * 0.25f / 2f); - starsRed = GetNewParticleEffect(numstars, new SColorF(1, 0, 0, 1), new SRectF(logo.Rect.X, logo.Rect.Y, logo.Rect.W, logo.Rect.H, -1), _TexPerfectNoteStar, 35, EParticleType.Star); - starsBlue = GetNewParticleEffect(numstars, new SColorF(0.149f, 0.415f, 0.819f, 1), new SRectF(logo.Rect.X, logo.Rect.Y, logo.Rect.W, logo.Rect.H, -1), _TexPerfectNoteStar, 35, EParticleType.Star); + SRectF partRect = new SRectF(logo.Rect.X, logo.Rect.Y, logo.Rect.W, logo.Rect.H, -1); + starsRed = _GetStarParticles(numstars, true, partRect, true); + starsBlue = _GetStarParticles(numstars, false, partRect, true); //Credit names _CreditNames = new List(); - CCreditName CreditEntry = new CCreditName(); - //brunzel - CCreditName CreditEntryBrunzel = new CCreditName(); - CreditEntryBrunzel.image = GetNewStatic(_TexNameBrunzel, new SColorF(1, 1, 1, 1), new SRectF(-450, 580, 400, 120, -4)); - CreditEntryBrunzel.particleRect = new SRectF(CreditEntryBrunzel.image.Rect.X + 342, CreditEntryBrunzel.image.Rect.Y + 4, 30, 30, -5); - CreditEntryBrunzel.particle = GetNewParticleEffect(8, new SColorF(1, 0, 0, 1), CreditEntryBrunzel.particleRect, _TexPerfectNoteStar, 35, EParticleType.Star); - CreditEntryBrunzel.active = true; - CreditEntryBrunzel.direction = EDirection.Left; - _CreditNames.Add(CreditEntryBrunzel); - - //Darkice - CCreditName CreditEntryDarkice = new CCreditName(); - CreditEntryDarkice.image = GetNewStatic(_TexNameDarkice, new SColorF(1, 1, 1, 1), new SRectF(CSettings.iRenderW, 580, 400, 120, -4)); - CreditEntryDarkice.particleRect = new SRectF(CreditEntryDarkice.image.Rect.X + 242, CreditEntryDarkice.image.Rect.Y + 23, 30, 30, -5); - CreditEntryDarkice.particle = GetNewParticleEffect(8, new SColorF(0.149f, 0.415f, 0.819f, 1), CreditEntryDarkice.particleRect, _TexPerfectNoteStar, 35, EParticleType.Star); - CreditEntryDarkice.active = true; - CreditEntryDarkice.direction = EDirection.Right; - _CreditNames.Add(CreditEntryDarkice); - - //flokuep - CCreditName CreditEntryFlokuep = new CCreditName(); - CreditEntryFlokuep.image = GetNewStatic(_TexNameFlokuep, new SColorF(1, 1, 1, 1), new SRectF(-450, 580, 400, 120, -4)); - CreditEntryFlokuep.particleRect = new SRectF(CreditEntryFlokuep.image.Rect.X + 141, CreditEntryFlokuep.image.Rect.Y - 2, 30, 30, -5); - CreditEntryFlokuep.particle = GetNewParticleEffect(8, new SColorF(1, 0, 0, 1), CreditEntryFlokuep.particleRect, _TexPerfectNoteStar, 35, EParticleType.Star); - CreditEntryFlokuep.active = true; - CreditEntryFlokuep.direction = EDirection.Left; - _CreditNames.Add(CreditEntryFlokuep); - - //bohning - CCreditName CreditEntryBohning = new CCreditName(); - CreditEntryBohning.image = GetNewStatic(_TexNameBohning, new SColorF(1, 1, 1, 1), new SRectF(CSettings.iRenderW, 580, 350, 110, -4)); - CreditEntryBohning.particleRect = new SRectF(CreditEntryBohning.image.Rect.X + 172, CreditEntryBohning.image.Rect.Y + 16, 10, 10, -5); - CreditEntryBohning.particle = GetNewParticleEffect(4, new SColorF(0.149f, 0.415f, 0.819f, 1), CreditEntryBohning.particleRect, _TexPerfectNoteStar, 25, EParticleType.Star); - CreditEntryBohning.active = true; - CreditEntryBohning.direction = EDirection.Right; - _CreditNames.Add(CreditEntryBohning); - - //mesand - CCreditName CreditEntryMesand = new CCreditName(); - CreditEntryMesand.image = GetNewStatic(_TexNameMesand, new SColorF(1, 1, 1, 1), new SRectF(-450, 580, 350, 110, -4)); - CreditEntryMesand.particleRect = new SRectF(CreditEntryMesand.image.Rect.X + 240, CreditEntryMesand.image.Rect.Y - 2, 10, 10, -5); - CreditEntryMesand.particle = GetNewParticleEffect(4, new SColorF(1, 0, 0, 1), CreditEntryMesand.particleRect, _TexPerfectNoteStar, 25, EParticleType.Star); - CreditEntryMesand.active = true; - CreditEntryMesand.direction = EDirection.Left; - _CreditNames.Add(CreditEntryMesand); - - //babene03 - CCreditName CreditEntryBabene03 = new CCreditName(); - CreditEntryBabene03.image = GetNewStatic(_TexNameBabene03, new SColorF(1, 1, 1, 1), new SRectF(CSettings.iRenderW, 580, 350, 110, -4)); - CreditEntryBabene03.particleRect = new SRectF(CreditEntryBabene03.image.Rect.X + 7, CreditEntryBabene03.image.Rect.Y + 4, 10, 10, -5); - CreditEntryBabene03.particle = GetNewParticleEffect(4, new SColorF(0.149f, 0.415f, 0.819f, 1), CreditEntryBabene03.particleRect, _TexPerfectNoteStar, 25, EParticleType.Star); - CreditEntryBabene03.active = true; - CreditEntryBabene03.direction = EDirection.Right; - _CreditNames.Add(CreditEntryBabene03); - - //pantero - CCreditName CreditEntrypantero = new CCreditName(); - CreditEntrypantero.image = GetNewStatic(_TexNamePantero, new SColorF(1, 1, 1, 1), new SRectF(-450, 580, 350, 110, -4)); - CreditEntrypantero.particleRect = new SRectF(CreditEntrypantero.image.Rect.X + 140, CreditEntrypantero.image.Rect.Y + 15, 10, 10, -5); - CreditEntrypantero.particle = GetNewParticleEffect(4, new SColorF(1, 0, 0, 1), CreditEntrypantero.particleRect, _TexPerfectNoteStar, 25, EParticleType.Star); - CreditEntrypantero.active = true; - CreditEntrypantero.direction = EDirection.Left; - _CreditNames.Add(CreditEntrypantero); - - //Pinky007 - CCreditName CreditEntryPinky007 = new CCreditName(); - CreditEntryPinky007.image = GetNewStatic(_TexNamePinky007, new SColorF(1, 1, 1, 1), new SRectF(CSettings.iRenderW, 580, 350, 110, -4)); - CreditEntryPinky007.particleRect = new SRectF(CreditEntryPinky007.image.Rect.X + 42, CreditEntryPinky007.image.Rect.Y + 15, 10, 10, -5); - CreditEntryPinky007.particle = GetNewParticleEffect(4, new SColorF(0.149f, 0.415f, 0.819f, 1), CreditEntryPinky007.particleRect, _TexPerfectNoteStar, 25, EParticleType.Star); - CreditEntryPinky007.active = true; - CreditEntryPinky007.direction = EDirection.Right; - _CreditNames.Add(CreditEntryPinky007); + _AddNewCreditName(_TexNameBrunzel, 502, 29, true); + _AddNewCreditName(_TexNameDarkice, 360, 55, true); + _AddNewCreditName(_TexNameFlokuep, 214, 14, true); + _AddNewCreditName(_TexNameBohning, 383, 54, false); + _AddNewCreditName(_TexNameMesand, 525, 13, false); + _AddNewCreditName(_TexNameBabene03, 33, 26, false); + _AddNewCreditName(_TexNamePantero, 311, 45, false); + _AddNewCreditName(_TexNamePinky007, 113, 50, false); TextTimer.Reset(); LogoTimer.Reset(); @@ -348,13 +358,9 @@ namespace Vocaluxe.Screens logo.Draw(); //Draw credit-entries - for (int i = 0; i < _CreditNames.Count; i++) + foreach (CCreditName cn in _CreditNames) { - if (_CreditNames[i].active) - { - _CreditNames[i].image.Draw(); - _CreditNames[i].particle.Draw(); - } + cn.Draw(); } //Draw Text @@ -376,9 +382,8 @@ namespace Vocaluxe.Screens active = true; logo.Rect.Y = -270 + (270f / 3000f) * LogoTimer.ElapsedMilliseconds; - SRectF rect = new SRectF(logo.Rect.X, logo.Rect.Y, logo.Rect.W, logo.Rect.H, -1); - starsRed.Rect = rect; - starsBlue.Rect = rect; + starsRed.Rect.Y = logo.Rect.Y; + starsBlue.Rect.Y = logo.Rect.Y; if (LogoTimer.ElapsedMilliseconds >= 2000 && !CreditsTimer.IsRunning) { CreditsTimer.Start(); @@ -396,40 +401,34 @@ namespace Vocaluxe.Screens for (int i = 0; i < _CreditNames.Count; i++) { - if (_CreditNames[i].active) + if (_CreditNames[i].Active) { - switch (_CreditNames[i].direction) + switch (_CreditNames[i].Direction) { - case EDirection.Left: + case EDirection.Right: if (i * 4000f <= CreditsTimer.ElapsedMilliseconds) { - float xOld = _CreditNames[i].image.Rect.X; - _CreditNames[i].image.Rect.X = -450 + (((CSettings.iRenderW - _CreditNames[i].image.Rect.W) / 2)/3000f) * (CreditsTimer.ElapsedMilliseconds-(i*4000f)); - _CreditNames[i].particleRect.X += (_CreditNames[i].image.Rect.X - xOld); - _CreditNames[i].particle.Rect = _CreditNames[i].particleRect; + _CreditNames[i].X = -450 + (((CSettings.iRenderW - _CreditNames[i].W) / 2) / 3000f) * (CreditsTimer.ElapsedMilliseconds - (i * 4000f)); //Check if name is in middle of screen and should go up - if (_CreditNames[i].image.Rect.X >= (CSettings.iRenderW - _CreditNames[i].image.Rect.W) / 2) + if (_CreditNames[i].X >= (CSettings.iRenderW - _CreditNames[i].W) / 2) { - _CreditNames[i].direction = EDirection.Up; + _CreditNames[i].Direction = EDirection.Up; _CreditNames[i].StartTimeUp = CreditsTimer.ElapsedMilliseconds; } } break; - case EDirection.Right: + case EDirection.Left: if (i * 4000f <= CreditsTimer.ElapsedMilliseconds) { - float xOld = _CreditNames[i].image.Rect.X; - _CreditNames[i].image.Rect.X = CSettings.iRenderW - (((CSettings.iRenderW - _CreditNames[i].image.Rect.W) / 2) / 3000f) * (CreditsTimer.ElapsedMilliseconds - (i * 4000f)); - _CreditNames[i].particleRect.X -= (xOld - _CreditNames[i].image.Rect.X); - _CreditNames[i].particle.Rect = _CreditNames[i].particleRect; + _CreditNames[i].X = CSettings.iRenderW - (((CSettings.iRenderW - _CreditNames[i].W) / 2) / 3000f) * (CreditsTimer.ElapsedMilliseconds - (i * 4000f)); //Check if name is in middle of screen and should go up - if (_CreditNames[i].image.Rect.X <= (CSettings.iRenderW - _CreditNames[i].image.Rect.W) / 2 ) + if (_CreditNames[i].X <= (CSettings.iRenderW - _CreditNames[i].W) / 2) { - _CreditNames[i].direction = EDirection.Up; + _CreditNames[i].Direction = EDirection.Up; _CreditNames[i].StartTimeUp = CreditsTimer.ElapsedMilliseconds; } @@ -437,31 +436,12 @@ namespace Vocaluxe.Screens break; case EDirection.Up: - float yOld = _CreditNames[i].image.Rect.Y; - _CreditNames[i].image.Rect.Y = 580 - (430f / 3000f) * (CreditsTimer.ElapsedMilliseconds - _CreditNames[i].StartTimeUp); - _CreditNames[i].particleRect.Y -= (yOld - _CreditNames[i].image.Rect.Y); - _CreditNames[i].particle.Rect = _CreditNames[i].particleRect; - - //Fade names out - if (_CreditNames[i].image.Rect.Y <= 350f) - { - //Catch some bad alpha-values - float alpha = ((250 - _CreditNames[i].image.Rect.Y) / 20); - if(alpha > 1) - { - alpha = 1; - } - else if(alpha < 0) - { - alpha = 0; - } - _CreditNames[i].image.Alpha = 1 - alpha; - } + _CreditNames[i].Y = 580 - (430f / 3000f) * (CreditsTimer.ElapsedMilliseconds - _CreditNames[i].StartTimeUp); //Set name inactive - if (_CreditNames[i].image.Rect.Y <= 150f) + if (_CreditNames[i].Y <= 160f) { - _CreditNames[i].active = false; + _CreditNames[i].Active = false; //Check, if last name is set to false if (i == _CreditNames.Count - 1) { @@ -474,6 +454,22 @@ namespace Vocaluxe.Screens active = true; } } + else if (_CreditNames[i].Y <= 360f) + { + //Fade names out + float alpha = ((360 - _CreditNames[i].Y) / 200); + //Catch some bad alpha-values + if (alpha > 1) + { + alpha = 1; + } + else if (alpha < 0) + { + alpha = 0; + } + _CreditNames[i].Alpha = 1 - alpha; + } + break; } } @@ -482,14 +478,7 @@ namespace Vocaluxe.Screens if (TextTimer.IsRunning) { - if (TextTimer.ElapsedMilliseconds > 600000) - { - active = false; - } - else - { - active = true; - } + active = TextTimer.ElapsedMilliseconds <= 60000; } return active; diff --git a/Vocaluxe/Screens/CScreenHighscore.cs b/Vocaluxe/Screens/CScreenHighscore.cs index 33a84e39..e625c468 100644 --- a/Vocaluxe/Screens/CScreenHighscore.cs +++ b/Vocaluxe/Screens/CScreenHighscore.cs @@ -13,7 +13,7 @@ namespace Vocaluxe.Screens class CScreenHighscore : CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 2; + protected override int _ScreenVersion { get { return 2; } } private const int NumEntrys = 10; private const string TextSongName = "TextSongName"; @@ -34,13 +34,10 @@ namespace Vocaluxe.Screens { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "ScreenHighscore"; - _ScreenVersion = ScreenVersion; - List texts = new List(); texts.Add(TextSongName); texts.Add(TextSongMode); diff --git a/Vocaluxe/Screens/CScreenLoad.cs b/Vocaluxe/Screens/CScreenLoad.cs index 8569ab59..c0d81fdd 100644 --- a/Vocaluxe/Screens/CScreenLoad.cs +++ b/Vocaluxe/Screens/CScreenLoad.cs @@ -17,7 +17,7 @@ namespace Vocaluxe.Screens class CScreenLoad: CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } const float WaitTime = 0.5f; //wait time before starting first video const string TextStatus = "TextStatus"; @@ -38,12 +38,10 @@ namespace Vocaluxe.Screens { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "ScreenLoad"; - _ScreenVersion = ScreenVersion; _ThemeTexts = new string[] { TextStatus }; _Intros = new VideoPlayer[IntroVideo.Length]; for (int i = 0; i < _Intros.Length; i++) diff --git a/Vocaluxe/Screens/CScreenMain.cs b/Vocaluxe/Screens/CScreenMain.cs index 4278b878..943b9470 100644 --- a/Vocaluxe/Screens/CScreenMain.cs +++ b/Vocaluxe/Screens/CScreenMain.cs @@ -16,7 +16,7 @@ namespace Vocaluxe.Screens class CScreenMain: CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } const string ButtonSing = "ButtonSing"; const string ButtonParty = "ButtonParty"; @@ -30,12 +30,10 @@ namespace Vocaluxe.Screens { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "ScreenMain"; - _ScreenVersion = ScreenVersion; _ThemeStatics = new string[] { "StaticMenuBar" }; _ThemeButtons = new string[] { ButtonSing, ButtonParty, ButtonOptions, ButtonProfiles, ButtonExit }; } diff --git a/Vocaluxe/Screens/CScreenNames.cs b/Vocaluxe/Screens/CScreenNames.cs index 269cb060..9baa0f89 100644 --- a/Vocaluxe/Screens/CScreenNames.cs +++ b/Vocaluxe/Screens/CScreenNames.cs @@ -12,7 +12,7 @@ namespace Vocaluxe.Screens class CScreenNames : CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 3; + protected override int _ScreenVersion { get { return 3; } } private CStatic chooseAvatarStatic; private int OldMouseX; @@ -45,13 +45,10 @@ namespace Vocaluxe.Screens { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "ScreenNames"; - _ScreenVersion = ScreenVersion; - List statics = new List(); foreach(string text in StaticPlayer){ statics.Add(text); diff --git a/Vocaluxe/Screens/CScreenOptions.cs b/Vocaluxe/Screens/CScreenOptions.cs index addb4a58..69a4f5a3 100644 --- a/Vocaluxe/Screens/CScreenOptions.cs +++ b/Vocaluxe/Screens/CScreenOptions.cs @@ -12,7 +12,7 @@ namespace Vocaluxe.Screens class CScreenOptions : CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } private const string ButtonOptionsGame = "ButtonOptionsGame"; private const string ButtonOptionsSound = "ButtonOptionsSound"; @@ -25,12 +25,10 @@ namespace Vocaluxe.Screens { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "ScreenOptions"; - _ScreenVersion = ScreenVersion; _ThemeButtons = new string[] { ButtonOptionsGame, ButtonOptionsSound, ButtonOptionsRecord, ButtonOptionsVideo, ButtonOptionsLyrics, ButtonOptionsTheme }; } diff --git a/Vocaluxe/Screens/CScreenOptionsGame.cs b/Vocaluxe/Screens/CScreenOptionsGame.cs index 80c4ee3a..b3799fc7 100644 --- a/Vocaluxe/Screens/CScreenOptionsGame.cs +++ b/Vocaluxe/Screens/CScreenOptionsGame.cs @@ -13,7 +13,7 @@ namespace Vocaluxe.Screens class CScreenOptionsGame : CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } private const string SelectSlideLanguage = "SelectSlideLanguage"; private const string SelectSlideDebugLevel = "SelectSlideDebugLevel"; @@ -28,12 +28,10 @@ namespace Vocaluxe.Screens { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "ScreenOptionsGame"; - _ScreenVersion = ScreenVersion; _ThemeButtons = new string[] { ButtonExit }; _ThemeSelectSlides = new string[] { SelectSlideLanguage, SelectSlideDebugLevel, SelectSlideSongMenu, SelectSlideSongSorting, SelectSlideTabs, SelectSlideTimerMode }; } diff --git a/Vocaluxe/Screens/CScreenOptionsLyrics.cs b/Vocaluxe/Screens/CScreenOptionsLyrics.cs index 81257172..38081910 100644 --- a/Vocaluxe/Screens/CScreenOptionsLyrics.cs +++ b/Vocaluxe/Screens/CScreenOptionsLyrics.cs @@ -11,7 +11,7 @@ namespace Vocaluxe.Screens class CScreenOptionsLyrics : CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } private const string SelectSlideLyricStyle = "SelectSlideLyricStyle"; private const string SelectSlideLyricsOnTop = "SelectSlideLyricsOnTop"; @@ -22,13 +22,10 @@ namespace Vocaluxe.Screens { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "ScreenOptionsLyrics"; - _ScreenVersion = ScreenVersion; - _ThemeButtons = new string[] { ButtonExit }; _ThemeSelectSlides = new string[] { SelectSlideLyricStyle, SelectSlideLyricsOnTop }; } diff --git a/Vocaluxe/Screens/CScreenOptionsRecord.cs b/Vocaluxe/Screens/CScreenOptionsRecord.cs index 8a8bfca9..96ec3a0b 100644 --- a/Vocaluxe/Screens/CScreenOptionsRecord.cs +++ b/Vocaluxe/Screens/CScreenOptionsRecord.cs @@ -21,7 +21,7 @@ namespace Vocaluxe.Screens class CScreenOptionsRecord : CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 2; + protected override int _ScreenVersion { get { return 2; } } private const float MaxDelayTime = 1f; private const string SelectSlideRecordDevices = "SelectSlideRecordDevices"; @@ -58,13 +58,10 @@ namespace Vocaluxe.Screens { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "ScreenOptionsRecord"; - _ScreenVersion = ScreenVersion; - List values = new List(); values.Add(StaticWarning); values.AddRange(StaticEnergyChannel); diff --git a/Vocaluxe/Screens/CScreenOptionsSound.cs b/Vocaluxe/Screens/CScreenOptionsSound.cs index 414bcbd1..0c86e642 100644 --- a/Vocaluxe/Screens/CScreenOptionsSound.cs +++ b/Vocaluxe/Screens/CScreenOptionsSound.cs @@ -12,7 +12,7 @@ namespace Vocaluxe.Screens class CScreenOptionsSound : CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 3; + protected override int _ScreenVersion { get { return 3; } } private const string SelectSlideBackgroundMusic = "SelectSlideBackgroundMusic"; private const string SelectSlideBackgroundMusicVolume = "SelectSlideBackgroundMusicVolume"; @@ -29,13 +29,10 @@ namespace Vocaluxe.Screens { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "ScreenOptionsSound"; - _ScreenVersion = ScreenVersion; - _ThemeButtons = new string[] { ButtonExit }; _ThemeSelectSlides = new string[] { SelectSlideBackgroundMusic, SelectSlideBackgroundMusicVolume, SelectSlideBackgroundMusicSource, SelectSlidePreviewMusicVolume, SelectSlideGameMusicVolume }; } diff --git a/Vocaluxe/Screens/CScreenOptionsTheme.cs b/Vocaluxe/Screens/CScreenOptionsTheme.cs index d696a646..76de3983 100644 --- a/Vocaluxe/Screens/CScreenOptionsTheme.cs +++ b/Vocaluxe/Screens/CScreenOptionsTheme.cs @@ -12,7 +12,7 @@ namespace Vocaluxe.Screens class CScreenOptionsTheme : CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 3; + protected override int _ScreenVersion { get { return 3; } } private const string SelectSlideTheme = "SelectSlideTheme"; private const string SelectSlideSkin = "SelectSlideSkin"; @@ -35,12 +35,10 @@ namespace Vocaluxe.Screens { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "ScreenOptionsTheme"; - _ScreenVersion = ScreenVersion; _ThemeButtons = new string[] { ButtonExit }; _ThemeSelectSlides = new string[] { SelectSlideTheme, diff --git a/Vocaluxe/Screens/CScreenOptionsVideo.cs b/Vocaluxe/Screens/CScreenOptionsVideo.cs index 9744e8cf..ff9e3f5a 100644 --- a/Vocaluxe/Screens/CScreenOptionsVideo.cs +++ b/Vocaluxe/Screens/CScreenOptionsVideo.cs @@ -13,7 +13,7 @@ namespace Vocaluxe.Screens class CScreenOptionsVideo : CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 3; + protected override int _ScreenVersion { get { return 3; } } private const string SelectSlideVideoBackgrounds = "SelectSlideVideoBackgrounds"; private const string SelectSlideVideoPreview = "SelectSlideVideoPreview"; @@ -35,13 +35,10 @@ namespace Vocaluxe.Screens { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "ScreenOptionsVideo"; - _ScreenVersion = ScreenVersion; - _ThemeStatics = new string[] { StaticWebcamOutput }; _ThemeButtons = new string[] { ButtonExit }; _ThemeSelectSlides = new string[] { SelectSlideVideoBackgrounds, SelectSlideVideoPreview, SelectSlideVideosInSongs, SelectSlideVideosToBackground, SelectSlideWebcamDevices, SelectSlideWebcamCapabilities }; diff --git a/Vocaluxe/Screens/CScreenParty.cs b/Vocaluxe/Screens/CScreenParty.cs index 55d2a17c..c73726a5 100644 --- a/Vocaluxe/Screens/CScreenParty.cs +++ b/Vocaluxe/Screens/CScreenParty.cs @@ -11,7 +11,7 @@ namespace Vocaluxe.Screens class CScreenParty : CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } const string TextDescription = "TextDescription"; const string TextTargetAudience = "TextTargetAudience"; @@ -30,12 +30,10 @@ namespace Vocaluxe.Screens { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "ScreenParty"; - _ScreenVersion = ScreenVersion; _ThemeTexts = new string[] { TextDescription, TextTargetAudience, TextNumTeams, TextNumPlayers, TextAuthor, TextVersion, TextError }; _ThemeButtons = new string[] { ButtonStart, ButtonExit }; _ThemeSelectSlides = new string[] { SelectSlideModes }; @@ -134,11 +132,6 @@ namespace Vocaluxe.Screens return true; } - public override void OnClose() - { - base.OnClose(); - } - private void UpdateSelection() { if (_PartyModeInfos.Count == 0) diff --git a/Vocaluxe/Screens/CScreenProfiles.cs b/Vocaluxe/Screens/CScreenProfiles.cs index e030efee..717e33af 100644 --- a/Vocaluxe/Screens/CScreenProfiles.cs +++ b/Vocaluxe/Screens/CScreenProfiles.cs @@ -20,7 +20,7 @@ namespace Vocaluxe.Screens class CScreenProfiles : CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 2; + protected override int _ScreenVersion { get { return 2; } } private const string SelectSlideProfiles = "SelectSlideProfiles"; private const string SelectSlideDifficulty = "SelectSlideDifficulty"; @@ -48,12 +48,10 @@ namespace Vocaluxe.Screens { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "ScreenProfiles"; - _ScreenVersion = ScreenVersion; _ThemeButtons = new string[] { ButtonPlayerName, ButtonExit, ButtonSave, ButtonNew, ButtonDelete, ButtonWebcam, ButtonSaveSnapshot, ButtonDiscardSnapshot, ButtonTakeSnapshot }; _ThemeSelectSlides = new string[] { SelectSlideProfiles, SelectSlideDifficulty, SelectSlideAvatars, SelectSlideGuestProfile, SelectSlideActive }; _ThemeStatics = new string[] { StaticAvatar }; diff --git a/Vocaluxe/Screens/CScreenScore.cs b/Vocaluxe/Screens/CScreenScore.cs index 2ab40aec..cabb6bcf 100644 --- a/Vocaluxe/Screens/CScreenScore.cs +++ b/Vocaluxe/Screens/CScreenScore.cs @@ -15,7 +15,7 @@ namespace Vocaluxe.Screens class CScreenScore : CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 3; + protected override int _ScreenVersion { get { return 3; } } private const string TextSong = "TextSong"; @@ -40,13 +40,10 @@ namespace Vocaluxe.Screens { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "ScreenScore"; - _ScreenVersion = ScreenVersion; - List texts = new List(); texts.Add(TextSong); diff --git a/Vocaluxe/Screens/CScreenSing.cs b/Vocaluxe/Screens/CScreenSing.cs index 626b8c3b..063a10c6 100644 --- a/Vocaluxe/Screens/CScreenSing.cs +++ b/Vocaluxe/Screens/CScreenSing.cs @@ -17,7 +17,7 @@ namespace Vocaluxe.Screens class CScreenSing : CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 6; + protected override int _ScreenVersion { get { return 6; } } struct TimeRect { @@ -99,13 +99,10 @@ namespace Vocaluxe.Screens { } - protected override void Init() + public override void Init() { base.Init(); - _ThemeName = "ScreenSing"; - _ScreenVersion = ScreenVersion; - List texts = new List(); texts.Add(TextSongName); texts.Add(TextTime); diff --git a/Vocaluxe/Screens/CScreenSong.cs b/Vocaluxe/Screens/CScreenSong.cs index ee58cd9d..b954441b 100644 --- a/Vocaluxe/Screens/CScreenSong.cs +++ b/Vocaluxe/Screens/CScreenSong.cs @@ -26,7 +26,7 @@ namespace Vocaluxe.Screens } // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 5; + protected override int _ScreenVersion { get { return 5; } } private const string TextCategory = "TextCategory"; private const string TextSelection = "TextSelection"; @@ -80,7 +80,7 @@ namespace Vocaluxe.Screens _AvailableGameModes = new List(); } - protected override void Init() + public override void Init() { base.Init(); @@ -117,8 +117,6 @@ namespace Vocaluxe.Screens tlist.Add(TextSearchBar); tlist.Add(TextOptionsTitle); - _ThemeName = "ScreenSong"; - _ScreenVersion = ScreenVersion; _ThemeStatics = new string[] { StaticSearchBar, StaticOptionsBG }; _ThemeTexts = tlist.ToArray(); _ThemeButtons = blist.ToArray(); diff --git a/Vocaluxe/Screens/CScreenTest.cs b/Vocaluxe/Screens/CScreenTest.cs index a203518e..f4523d71 100644 --- a/Vocaluxe/Screens/CScreenTest.cs +++ b/Vocaluxe/Screens/CScreenTest.cs @@ -13,7 +13,7 @@ namespace Vocaluxe.Screens class CScreenTest : CMenu { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } private int _TestMusic = -1; @@ -21,14 +21,6 @@ namespace Vocaluxe.Screens { } - protected override void Init() - { - base.Init(); - - _ThemeName = "ScreenTest"; - _ScreenVersion = ScreenVersion; - } - public override bool HandleInput(KeyEvent KeyEvent) { if (KeyEvent.KeyPressed && !Char.IsControl(KeyEvent.Unicode)) @@ -90,12 +82,6 @@ namespace Vocaluxe.Screens return true; } - public override void OnShow() - { - base.OnShow(); - - } - public override bool Draw() { return base.Draw(); diff --git a/VocaluxeLib/Menu/CMenu.cs b/VocaluxeLib/Menu/CMenu.cs index e76db2b6..b925aabb 100644 --- a/VocaluxeLib/Menu/CMenu.cs +++ b/VocaluxeLib/Menu/CMenu.cs @@ -20,79 +20,6 @@ namespace Vocaluxe.Menu public abstract class CMenu : IMenu { - public class COrderedDictionaryLite : IEnumerable - { - private List _Items; - private Dictionary _htIndex; - private CMenu _Parent; - - public COrderedDictionaryLite(CMenu Parent) - { - _Items = new List(); - _htIndex = new Dictionary(); - _Parent = Parent; - } - - public COrderedDictionaryLite(COrderedDictionaryLite Dict) - { - _Items = new List(Dict._Items); - _htIndex = new Dictionary(Dict._htIndex); - _Parent = Dict._Parent; - } - - public T this[int index] - { - get { return _Items[index]; } - set { _Items[index] = value; } - } - - public T this[string key] - { - get - { - try - { - return _Items[_htIndex[key]]; - } - catch (Exception) - { - CBase.Log.LogError("Can't find " + typeof(T).Name.Substring(1) + " Element \"" + key + "\" in Screen " + _Parent._ThemeName); - throw; - } - } - set - { - if (!_htIndex.ContainsKey(key)) - { - _htIndex.Add(key, _Items.Count); - _Items.Add(value); - } - else - _Items[_htIndex[key]] = value; - } - } - - public int Add(T item, String key = null) - { - if (key != null) - _htIndex.Add(key, _Items.Count); - _Items.Add(item); - return _Items.Count - 1; - } - - public IEnumerator GetEnumerator() - { - return _Items.GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() - { - return (IEnumerator)GetEnumerator(); - } - } - - - private List _Interactions; private int _Selection = 0; private string _ThemePath = String.Empty; @@ -121,8 +48,13 @@ namespace Vocaluxe.Menu protected bool _Active; - protected int _ScreenVersion; - protected string _ThemeName; + protected abstract int _ScreenVersion { get; } + private string _ThemeName; + public string ThemeName + { + get { return _ThemeName; } + } + protected string[] _ThemeBackgrounds; protected string[] _ThemeStatics; protected string[] _ThemeTexts; @@ -138,17 +70,11 @@ namespace Vocaluxe.Menu protected string[] _ThemeScreenSettings; protected SRectF _ScreenArea; - public SRectF ScreenArea { get { return _ScreenArea; } } - public SRectF GetScreenArea() - { - return _ScreenArea; - } - public int ThemeScreenVersion { get { return _ScreenVersion; } @@ -158,13 +84,12 @@ namespace Vocaluxe.Menu { } - public void Initialize() + public virtual void Init() { - Init(); - } + _ThemeName = this.GetType().Name; + if(_ThemeName[0]=='C' && Char.IsUpper(_ThemeName[1])) + _ThemeName = _ThemeName.Remove(0, 1); - protected virtual void Init() - { _Interactions = new List(); _Selection = 0; @@ -191,7 +116,6 @@ namespace Vocaluxe.Menu _Active = false; _ScreenArea = new SRectF(0f, 0f, CBase.Settings.GetRenderW(), CBase.Settings.GetRenderH(), 0f); - _ThemeName = String.Empty; _ThemeBackgrounds = null; _ThemeStatics = null; _ThemeTexts = null; @@ -223,13 +147,13 @@ namespace Vocaluxe.Menu foreach (string elName in Elements) { T Element = (T)Activator.CreateInstance(typeof(T), _PartyModeID); - if (Element.LoadTheme("//root/" + _ThemeName, elName, xmlReader, SkinIndex)) + if (Element.LoadTheme("//root/" + ThemeName, elName, xmlReader, SkinIndex)) { MAddElement(Element, elName); } else { - CBase.Log.LogError("Can't load " + typeof(T).Name.Substring(1) + " \"" + elName + "\" in screen " + _ThemeName); + CBase.Log.LogError("Can't load " + typeof(T).Name.Substring(1) + " \"" + elName + "\" in screen " + ThemeName); } } } @@ -237,7 +161,7 @@ namespace Vocaluxe.Menu public virtual void LoadTheme(string XmlPath) { - string file = Path.Combine(XmlPath, _ThemeName + ".xml"); + string file = Path.Combine(XmlPath, ThemeName + ".xml"); CXMLReader xmlReader = CXMLReader.OpenFile(file); if (xmlReader == null) @@ -279,14 +203,14 @@ namespace Vocaluxe.Menu settings.Encoding = Encoding.UTF8; settings.ConformanceLevel = ConformanceLevel.Document; - string file = Path.Combine(_ThemePath, _ThemeName + ".xml"); + string file = Path.Combine(_ThemePath, ThemeName + ".xml"); using (XmlWriter writer = XmlWriter.Create(file, settings)) { writer.WriteStartDocument(); writer.WriteStartElement("root"); - writer.WriteStartElement(_ThemeName); + writer.WriteStartElement(ThemeName); // Screen Version writer.WriteElementString("ScreenVersion", _ScreenVersion.ToString()); @@ -2139,13 +2063,13 @@ namespace Vocaluxe.Menu private bool CheckVersion(int Version, CXMLReader xmlReader) { int version = 0; - xmlReader.TryGetIntValue("//root/" + _ThemeName + "/ScreenVersion", ref version); + xmlReader.TryGetIntValue("//root/" + ThemeName + "/ScreenVersion", ref version); if (version == Version) return true; else { - string msg = "Can't load screen file of screen \"" + _ThemeName + "\", "; + string msg = "Can't load screen file of screen \"" + ThemeName + "\", "; if (version < Version) msg += "the file ist outdated! "; else @@ -2164,7 +2088,7 @@ namespace Vocaluxe.Menu // Backgrounds CBackground background = new CBackground(_PartyModeID); int i = 1; - while (background.LoadTheme("//root/" + _ThemeName, "Background" + i.ToString(), xmlReader, SkinIndex)) + while (background.LoadTheme("//root/" + ThemeName, "Background" + i.ToString(), xmlReader, SkinIndex)) { AddBackground(background); background = new CBackground(_PartyModeID); @@ -2174,7 +2098,7 @@ namespace Vocaluxe.Menu // Statics CStatic stat = new CStatic(_PartyModeID); i = 1; - while (stat.LoadTheme("//root/" + _ThemeName, "Static" + i.ToString(), xmlReader, SkinIndex)) + while (stat.LoadTheme("//root/" + ThemeName, "Static" + i.ToString(), xmlReader, SkinIndex)) { AddStatic(stat); stat = new CStatic(_PartyModeID); @@ -2184,7 +2108,7 @@ namespace Vocaluxe.Menu // Texts CText text = new CText(_PartyModeID); i = 1; - while (text.LoadTheme("//root/" + _ThemeName, "Text" + i.ToString(), xmlReader, SkinIndex)) + while (text.LoadTheme("//root/" + ThemeName, "Text" + i.ToString(), xmlReader, SkinIndex)) { AddText(text); text = new CText(_PartyModeID); @@ -2194,7 +2118,7 @@ namespace Vocaluxe.Menu // ParticleEffects CParticleEffect partef = new CParticleEffect(_PartyModeID); i = 1; - while (partef.LoadTheme("//root/" + _ThemeName, "ParticleEffect" + i.ToString(), xmlReader, SkinIndex)) + while (partef.LoadTheme("//root/" + ThemeName, "ParticleEffect" + i.ToString(), xmlReader, SkinIndex)) { AddParticleEffect(partef); partef = new CParticleEffect(_PartyModeID); diff --git a/VocaluxeLib/Menu/COrderedDictionaryLite.cs b/VocaluxeLib/Menu/COrderedDictionaryLite.cs new file mode 100644 index 00000000..444fa13e --- /dev/null +++ b/VocaluxeLib/Menu/COrderedDictionaryLite.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text; + +namespace Vocaluxe.Menu +{ + public class COrderedDictionaryLite : IEnumerable + { + private List _Items; + private Dictionary _htIndex; + private CMenu _Parent; + + public COrderedDictionaryLite(CMenu Parent) + { + _Items = new List(); + _htIndex = new Dictionary(); + _Parent = Parent; + } + + public COrderedDictionaryLite(COrderedDictionaryLite Dict) + { + _Items = new List(Dict._Items); + _htIndex = new Dictionary(Dict._htIndex); + _Parent = Dict._Parent; + } + + public T this[int index] + { + get { return _Items[index]; } + set { _Items[index] = value; } + } + + public T this[string key] + { + get + { + try + { + return _Items[_htIndex[key]]; + } + catch (Exception) + { + CBase.Log.LogError("Can't find " + typeof(T).Name.Substring(1) + " Element \"" + key + "\" in Screen " + _Parent.ThemeName); + throw; + } + } + set + { + if (!_htIndex.ContainsKey(key)) + { + _htIndex.Add(key, _Items.Count); + _Items.Add(value); + } + else + _Items[_htIndex[key]] = value; + } + } + + public int Add(T item, String key = null) + { + if (key != null) + _htIndex.Add(key, _Items.Count); + _Items.Add(item); + return _Items.Count - 1; + } + + public IEnumerator GetEnumerator() + { + return _Items.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } +} diff --git a/VocaluxeLib/Menu/IMenu.cs b/VocaluxeLib/Menu/IMenu.cs index cb64b806..81b41b60 100644 --- a/VocaluxeLib/Menu/IMenu.cs +++ b/VocaluxeLib/Menu/IMenu.cs @@ -12,7 +12,7 @@ namespace Vocaluxe.Menu { public interface IMenu { - void Initialize(); + void Init(); void LoadTheme(string XmlPath); void SaveTheme(); @@ -32,7 +32,7 @@ namespace Vocaluxe.Menu void OnClose(); bool Draw(); - SRectF GetScreenArea(); + SRectF ScreenArea { get; } void NextInteraction(); void PrevInteraction(); diff --git a/VocaluxeLib/PartyModes/CScreenPartyDummy.cs b/VocaluxeLib/PartyModes/CScreenPartyDummy.cs index 47b1d37a..771ff1bd 100644 --- a/VocaluxeLib/PartyModes/CScreenPartyDummy.cs +++ b/VocaluxeLib/PartyModes/CScreenPartyDummy.cs @@ -10,21 +10,13 @@ namespace Vocaluxe.PartyModes public class CScreenPartyDummy : CMenuParty { // Version number for theme files. Increment it, if you've changed something on the theme files! - const int ScreenVersion = 1; + protected override int _ScreenVersion { get { return 1; } } private CText Warning; public CScreenPartyDummy() { } - protected override void Init() - { - base.Init(); - - _ThemeName = "ScreenPartyDummy"; - _ScreenVersion = ScreenVersion; - } - public override void LoadTheme(string XmlPath) { Warning = GetNewText(); @@ -93,11 +85,6 @@ namespace Vocaluxe.PartyModes return true; } - public override void OnShow() - { - base.OnShow(); - } - public override bool UpdateGame() { return true; @@ -109,9 +96,5 @@ namespace Vocaluxe.PartyModes return true; } - public override void OnClose() - { - base.OnClose(); - } } } diff --git a/VocaluxeLib/VocaluxeLib.csproj b/VocaluxeLib/VocaluxeLib.csproj index 44f557a2..b66a1afd 100644 --- a/VocaluxeLib/VocaluxeLib.csproj +++ b/VocaluxeLib/VocaluxeLib.csproj @@ -123,6 +123,7 @@ +