From 4b0f563a6cb9680a16a32ed43cc1ce7a1a9286d5 Mon Sep 17 00:00:00 2001 From: Flamefire Date: Mon, 1 Dec 2014 22:40:47 +0100 Subject: [PATCH] Fix crashes/assertion failures on theme/skin change First step of fixing theme saving (still needs some work) --- .../PartyModeChallenge/CPartyModeChallenge.cs | 3 +- .../CPartyModeChallengeMedley.cs | 3 +- .../PartyModeTicTacToe/CPartyModeTicTacToe.cs | 3 +- Vocaluxe/Base/ThemeSystem/CThemes.cs | 5 +- VocaluxeLib/Menu/CBackground.cs | 29 ++-- VocaluxeLib/Menu/CButton.cs | 81 ++++++----- VocaluxeLib/Menu/CEqualizer.cs | 61 ++++---- VocaluxeLib/Menu/CLyric.cs | 47 +++---- VocaluxeLib/Menu/CMenu.cs | 71 +++++----- VocaluxeLib/Menu/CNameSelection.cs | 67 +++++---- VocaluxeLib/Menu/CParticleEffect.cs | 43 +++--- VocaluxeLib/Menu/CPlaylist.cs | 95 +++++++------ VocaluxeLib/Menu/CScreenSetting.cs | 10 +- VocaluxeLib/Menu/CSelectSlide.cs | 131 +++++++++--------- VocaluxeLib/Menu/CStatic.cs | 43 +++--- VocaluxeLib/Menu/CText.cs | 59 ++++---- VocaluxeLib/Menu/IThemeable.cs | 2 + VocaluxeLib/Menu/SingNotes/CSingNotes.cs | 45 +++--- .../Menu/SongMenu/CSongMenuFramework.cs | 69 +++++---- .../Menu/SongMenu/CSongMenuTileBoard.cs | 18 +-- VocaluxeLib/Menu/SongMenu/ISongMenu.cs | 3 - VocaluxeLib/PartyModes/CPartyMode.cs | 9 +- VocaluxeLib/PartyModes/CPartyModeNone.cs | 3 +- 23 files changed, 442 insertions(+), 458 deletions(-) diff --git a/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs b/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs index 4635d741..5d76b077 100644 --- a/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs +++ b/PartyModes/PartyModeChallenge/CPartyModeChallenge.cs @@ -108,8 +108,7 @@ namespace VocaluxeLib.PartyModes.Challenge public SData GameData; private EStage _Stage; - public CPartyModeChallenge(int id, string folder) - : base(id, folder) + public CPartyModeChallenge(int id, string folder) : base(id, folder) { _ScreenSongOptions.Selection.RandomOnly = false; _ScreenSongOptions.Selection.PartyMode = true; diff --git a/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs b/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs index 2cb2a866..27f162f3 100644 --- a/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs +++ b/PartyModes/PartyModeChallengeMedley/CPartyModeChallengeMedley.cs @@ -113,8 +113,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley public SData GameData; private EStage _Stage; - public CPartyModeChallengeMedley(int id, string folder) - : base(id, folder) + public CPartyModeChallengeMedley(int id, string folder) : base(id, folder) { _ScreenSongOptions.Selection.RandomOnly = false; _ScreenSongOptions.Selection.PartyMode = true; diff --git a/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs b/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs index b918a0fa..bfbde42a 100644 --- a/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs +++ b/PartyModes/PartyModeTicTacToe/CPartyModeTicTacToe.cs @@ -114,8 +114,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe public SData GameData; private EStage _Stage; - public CPartyModeTicTacToe(int id, string folder) - : base(id, folder) + public CPartyModeTicTacToe(int id, string folder) : base(id, folder) { _ScreenSongOptions.Selection.RandomOnly = false; _ScreenSongOptions.Selection.PartyMode = true; diff --git a/Vocaluxe/Base/ThemeSystem/CThemes.cs b/Vocaluxe/Base/ThemeSystem/CThemes.cs index 665a9e32..fabfa85f 100644 --- a/Vocaluxe/Base/ThemeSystem/CThemes.cs +++ b/Vocaluxe/Base/ThemeSystem/CThemes.cs @@ -30,7 +30,7 @@ namespace Vocaluxe.Base.ThemeSystem private static readonly List _Themes = new List(); public static string[] ThemeNames { - get { return _Themes.Select(th => th.Name).ToArray(); } + get { return _Themes.Where(th=>th is CBaseTheme).Select(th => th.Name).Distinct().ToArray(); } } public static string[] SkinNames @@ -164,7 +164,8 @@ namespace Vocaluxe.Base.ThemeSystem public static string GetThemeScreensPath(int partyModeID) { - return CurrentThemes[partyModeID].GetScreenPath(); + CTheme theme; + return CurrentThemes.TryGetValue(partyModeID, out theme) ? theme.GetScreenPath() : null; } private static void _LogMissingElement(int partyModeID, string elType, string elName) diff --git a/VocaluxeLib/Menu/CBackground.cs b/VocaluxeLib/Menu/CBackground.cs index 90fab98c..90ccfb86 100644 --- a/VocaluxeLib/Menu/CBackground.cs +++ b/VocaluxeLib/Menu/CBackground.cs @@ -48,7 +48,6 @@ namespace VocaluxeLib.Menu { private readonly int _PartyModeID; private SThemeBackground _Theme; - private bool _ThemeLoaded; private int _SlideShowCurrent; private readonly Stopwatch _SlideShowTimer = new Stopwatch(); @@ -62,10 +61,7 @@ namespace VocaluxeLib.Menu } public SColorF Color; - public bool ThemeLoaded - { - get { return _ThemeLoaded; } - } + public bool ThemeLoaded { get; private set; } public string GetThemeName() { @@ -76,7 +72,7 @@ namespace VocaluxeLib.Menu public CBackground(int partyModeID) { _PartyModeID = partyModeID; - _ThemeLoaded = false; + ThemeLoaded = false; _Theme = new SThemeBackground {SlideShowTextures = new List()}; Color = new SColorF(0f, 0f, 0f, 1f); @@ -87,6 +83,7 @@ namespace VocaluxeLib.Menu _Theme = theme; _PartyModeID = partyModeID; + ThemeLoaded = true; LoadSkin(); } #endregion Constructors @@ -95,16 +92,16 @@ namespace VocaluxeLib.Menu public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) { string item = xmlPath + "/" + elementName; - _ThemeLoaded = true; + ThemeLoaded = true; - _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Type", ref _Theme.Type); + ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Type", ref _Theme.Type); bool vid = xmlReader.GetValue(item + "/Video", out _Theme.VideoName, String.Empty); bool tex = xmlReader.GetValue(item + "/Skin", out _Theme.Skin, String.Empty); - _ThemeLoaded &= vid || tex || _Theme.Type == EBackgroundTypes.None; + ThemeLoaded &= vid || tex || _Theme.Type == EBackgroundTypes.None; if (xmlReader.GetValue(item + "/Color", out _Theme.Color.Name, String.Empty)) - _ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out Color); + ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out Color); else { bool success = true; @@ -114,7 +111,7 @@ namespace VocaluxeLib.Menu success &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); if (_Theme.Type != EBackgroundTypes.None) - _ThemeLoaded &= success; + ThemeLoaded &= success; } _Theme.Color.Color = Color; @@ -130,12 +127,12 @@ namespace VocaluxeLib.Menu i++; } - if (_ThemeLoaded) + if (ThemeLoaded) { _Theme.Name = elementName; LoadSkin(); } - return _ThemeLoaded; + return ThemeLoaded; } public void Resume() @@ -179,12 +176,16 @@ namespace VocaluxeLib.Menu public void UnloadSkin() { + if (!ThemeLoaded) + return; _SlideShowTextures.Clear(); CBase.Video.Close(ref _VideoStream); } public void LoadSkin() { + if (!ThemeLoaded) + return; _Theme.Color.Get(_PartyModeID, out Color); if (_Theme.Type == EBackgroundTypes.SlideShow) @@ -224,7 +225,7 @@ namespace VocaluxeLib.Menu LoadSkin(); } - public SThemeBackground GetTheme() + public object GetTheme() { return _Theme; } diff --git a/VocaluxeLib/Menu/CButton.cs b/VocaluxeLib/Menu/CButton.cs index 8e0ff6b9..cdf2c8f7 100644 --- a/VocaluxeLib/Menu/CButton.cs +++ b/VocaluxeLib/Menu/CButton.cs @@ -42,7 +42,6 @@ namespace VocaluxeLib.Menu public sealed class CButton : CMenuElementBase, IMenuElement, IThemeable { private SThemeButton _Theme; - private bool _ThemeLoaded; private readonly int _PartyModeID; public CTextureRef Texture; @@ -100,10 +99,7 @@ namespace VocaluxeLib.Menu return _Theme.Name; } - public bool ThemeLoaded - { - get { return _ThemeLoaded; } - } + public bool ThemeLoaded { get; private set; } public CButton(int partyModeID) { @@ -125,6 +121,7 @@ namespace VocaluxeLib.Menu Selected = false; EditMode = false; + ThemeLoaded = true; LoadSkin(); } @@ -161,42 +158,42 @@ namespace VocaluxeLib.Menu public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) { string item = xmlPath + "/" + elementName; - _ThemeLoaded = true; + ThemeLoaded = true; - _ThemeLoaded &= xmlReader.GetValue(item + "/Skin", out _Theme.Skin, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinSelected", out _Theme.SkinSelected, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/Skin", out _Theme.Skin, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinSelected", out _Theme.SkinSelected, String.Empty); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); if (xmlReader.GetValue(item + "/Color", out _Theme.Color.Name, String.Empty)) - _ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out Color); + ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out Color); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); } if (xmlReader.GetValue(item + "/SColor", out _Theme.SelColor.Name, String.Empty)) - _ThemeLoaded &= _Theme.SelColor.Get(_PartyModeID, out SelColor); + ThemeLoaded &= _Theme.SelColor.Get(_PartyModeID, out SelColor); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SR", ref SelColor.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SG", ref SelColor.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SB", ref SelColor.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SA", ref SelColor.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SR", ref SelColor.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SG", ref SelColor.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SB", ref SelColor.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SA", ref SelColor.A); } - _ThemeLoaded &= Text.LoadTheme(item, "Text", xmlReader, true); + ThemeLoaded &= Text.LoadTheme(item, "Text", xmlReader, true); Text.Z = Rect.Z; if (xmlReader.ItemExists(item + "/SText")) { - _ThemeLoaded &= _SelText.LoadTheme(item, "SText", xmlReader, true); + ThemeLoaded &= _SelText.LoadTheme(item, "SText", xmlReader, true); _SelText.Z = Rect.Z; } else @@ -207,8 +204,8 @@ namespace VocaluxeLib.Menu if (xmlReader.ItemExists(item + "/Reflection")) { _Reflection = true; - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Space", ref _ReflectionSpace); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Height", ref _ReflectionHeight); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Space", ref _ReflectionSpace); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Height", ref _ReflectionHeight); _Theme.Reflection = new SReflection(_ReflectionHeight, _ReflectionSpace); } @@ -221,8 +218,8 @@ namespace VocaluxeLib.Menu if (xmlReader.ItemExists(item + "/SReflection")) { _SelReflection = true; - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SReflection/Space", ref _SelReflectionSpace); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SReflection/Height", ref _SelReflectionHeight); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SReflection/Space", ref _SelReflectionSpace); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SReflection/Height", ref _SelReflectionHeight); _Theme.SelReflection = new SReflection(_SelReflectionHeight, _SelReflectionSpace); } @@ -232,20 +229,25 @@ namespace VocaluxeLib.Menu _Theme.SelReflection = null; } - if (_ThemeLoaded) + if (ThemeLoaded) { _Theme.Name = elementName; _Theme.Color.Color = Color; _Theme.SelColor.Color = SelColor; - _Theme.Text = Text.GetTheme(); - if (_SelText == null) - _Theme.SelText = null; - else - _Theme.SelText = _SelText.GetTheme(); + _ReadSubThemeElements(); LoadSkin(); } - return _ThemeLoaded; + return ThemeLoaded; + } + + private void _ReadSubThemeElements() + { + _Theme.Text = (SThemeText)Text.GetTheme(); + if (_SelText == null) + _Theme.SelText = null; + else + _Theme.SelText = (SThemeText)_SelText.GetTheme(); } public void Draw() @@ -306,11 +308,15 @@ namespace VocaluxeLib.Menu public void UnloadSkin() { + if (!ThemeLoaded) + return; Text.UnloadSkin(); } public void LoadSkin() { + if (!ThemeLoaded) + return; Text = new CText(_Theme.Text, _PartyModeID); Text.LoadSkin(); @@ -351,8 +357,9 @@ namespace VocaluxeLib.Menu LoadSkin(); } - public SThemeButton GetTheme() + public object GetTheme() { + _ReadSubThemeElements(); return _Theme; } diff --git a/VocaluxeLib/Menu/CEqualizer.cs b/VocaluxeLib/Menu/CEqualizer.cs index 55ef5a61..a1ad1a54 100644 --- a/VocaluxeLib/Menu/CEqualizer.cs +++ b/VocaluxeLib/Menu/CEqualizer.cs @@ -50,7 +50,6 @@ namespace VocaluxeLib.Menu { private readonly int _PartyModeID; private SThemeEqualizer _Theme; - private bool _ThemeLoaded; public SColorF Color; public SColorF MaxColor; @@ -65,10 +64,7 @@ namespace VocaluxeLib.Menu return _Theme.Name; } - public bool ThemeLoaded - { - get { return _ThemeLoaded; } - } + public bool ThemeLoaded { get; private set; } private float[] _Bars; private int _MaxBar; @@ -83,7 +79,7 @@ namespace VocaluxeLib.Menu { _PartyModeID = partyModeID; _Theme = new SThemeEqualizer(); - _ThemeLoaded = false; + ThemeLoaded = false; Color = new SColorF(); MaxColor = new SColorF(); @@ -98,56 +94,57 @@ namespace VocaluxeLib.Menu _PartyModeID = partyModeID; _Theme = theme; + ThemeLoaded = true; LoadSkin(); } public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) { string item = xmlPath + "/" + elementName; - _ThemeLoaded = true; + ThemeLoaded = true; - _ThemeLoaded &= xmlReader.GetValue(item + "/Skin", out _Theme.Skin, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/Skin", out _Theme.Skin, String.Empty); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); - _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/NumBars", ref _Theme.NumBars); + ThemeLoaded &= xmlReader.TryGetIntValue(item + "/NumBars", ref _Theme.NumBars); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Space", ref _Theme.Space); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Space", ref _Theme.Space); - _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Style", ref _Theme.Style); + ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Style", ref _Theme.Style); - _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/DrawNegative", ref _Theme.DrawNegative); + ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/DrawNegative", ref _Theme.DrawNegative); if (xmlReader.GetValue(item + "/Color", out _Theme.Color.Name, String.Empty)) - _ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out Color); + ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out Color); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); } if (xmlReader.GetValue(item + "/MaxColor", out _Theme.MaxColor.Name, String.Empty)) - _ThemeLoaded &= _Theme.MaxColor.Get(_PartyModeID, out MaxColor); + ThemeLoaded &= _Theme.MaxColor.Get(_PartyModeID, out MaxColor); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/MaxR", ref MaxColor.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/MaxG", ref MaxColor.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/MaxB", ref MaxColor.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/MaxA", ref MaxColor.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/MaxR", ref MaxColor.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/MaxG", ref MaxColor.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/MaxB", ref MaxColor.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/MaxA", ref MaxColor.A); } //Reflection if (xmlReader.ItemExists(item + "/Reflection")) { Reflection = true; - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Space", ref ReflectionSpace); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Height", ref ReflectionHeight); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Space", ref ReflectionSpace); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Height", ref ReflectionHeight); _Theme.Reflection = new SReflection(ReflectionHeight, ReflectionSpace); } @@ -157,14 +154,14 @@ namespace VocaluxeLib.Menu _Theme.Reflection = null; } - if (_ThemeLoaded) + if (ThemeLoaded) { _Theme.Name = elementName; _Theme.Color.Color = Color; _Theme.MaxColor.Color = MaxColor; LoadSkin(); } - return _ThemeLoaded; + return ThemeLoaded; } public void Update(float[] weights, float volume) @@ -264,7 +261,7 @@ namespace VocaluxeLib.Menu LoadSkin(); } - public SThemeEqualizer GetTheme() + public object GetTheme() { return _Theme; } diff --git a/VocaluxeLib/Menu/CLyric.cs b/VocaluxeLib/Menu/CLyric.cs index 48e74062..aee0feae 100644 --- a/VocaluxeLib/Menu/CLyric.cs +++ b/VocaluxeLib/Menu/CLyric.cs @@ -37,7 +37,6 @@ namespace VocaluxeLib.Menu { private readonly int _PartyModeID; private SThemeLyrics _Theme; - private bool _ThemeLoaded; /// /// Holds a reference to Songline. DO NOT MODIFY @@ -61,10 +60,7 @@ namespace VocaluxeLib.Menu return _Theme.Name; } - public bool ThemeLoaded - { - get { return _ThemeLoaded; } - } + public bool ThemeLoaded { get; private set; } private SColorF _Color; private SColorF _ColorProcessed; @@ -85,7 +81,7 @@ namespace VocaluxeLib.Menu { _PartyModeID = partyModeID; _Theme = new SThemeLyrics(); - _ThemeLoaded = false; + ThemeLoaded = false; _Color = new SColorF(); _ColorProcessed = new SColorF(); @@ -106,48 +102,49 @@ namespace VocaluxeLib.Menu LyricStyle = ELyricStyle.Fill; + ThemeLoaded = true; LoadSkin(); } public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) { string item = xmlPath + "/" + elementName; - _ThemeLoaded = true; + ThemeLoaded = true; - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); if (xmlReader.GetValue(item + "/Color", out _Theme.Color.Name, String.Empty)) - _ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out _Color); + ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out _Color); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref _Color.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref _Color.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref _Color.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref _Color.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref _Color.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref _Color.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref _Color.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref _Color.A); } if (xmlReader.GetValue(item + "/SColor", out _Theme.ProcessedColor.Name, String.Empty)) - _ThemeLoaded &= _Theme.ProcessedColor.Get(_PartyModeID, out _ColorProcessed); + ThemeLoaded &= _Theme.ProcessedColor.Get(_PartyModeID, out _ColorProcessed); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SR", ref _ColorProcessed.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SG", ref _ColorProcessed.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SB", ref _ColorProcessed.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SA", ref _ColorProcessed.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SR", ref _ColorProcessed.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SG", ref _ColorProcessed.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SB", ref _ColorProcessed.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SA", ref _ColorProcessed.A); } - if (_ThemeLoaded) + if (ThemeLoaded) { _Theme.Name = elementName; _Theme.Color.Color = _Color; _Theme.ProcessedColor.Color = _ColorProcessed; LoadSkin(); } - return _ThemeLoaded; + return ThemeLoaded; } public void SetLine(CSongLine line) @@ -441,7 +438,7 @@ namespace VocaluxeLib.Menu LoadSkin(); } - public SThemeLyrics GetTheme() + public object GetTheme() { return _Theme; } diff --git a/VocaluxeLib/Menu/CMenu.cs b/VocaluxeLib/Menu/CMenu.cs index 9ce8c465..3d575c10 100644 --- a/VocaluxeLib/Menu/CMenu.cs +++ b/VocaluxeLib/Menu/CMenu.cs @@ -18,6 +18,7 @@ using System; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Windows.Forms; using System.Xml.Serialization; using VocaluxeLib.Draw; @@ -49,7 +50,7 @@ namespace VocaluxeLib.Menu [XmlArray("Equalizers")] public List Equalizers; [XmlArray("Playlists")] public List Playlists; [XmlArray("ParticleEffects")] public List ParticleEffects; - [XmlArray("ScreenSettings")] public List ScreenSettings; + [XmlArray("ScreenSettings")] public List ScreenSettings; } struct SZSort @@ -64,7 +65,7 @@ namespace VocaluxeLib.Menu protected abstract int _ScreenVersion { get; } public int PartyModeID { get; protected set; } - public string ThemeName { get; set; } + public string ThemeName { get; private set; } public SThemeScreen Theme; // ReSharper disable MemberCanBePrivate.Global @@ -161,7 +162,7 @@ namespace VocaluxeLib.Menu Theme.Equalizers = new List(); Theme.Playlists = new List(); Theme.ParticleEffects = new List(); - Theme.ScreenSettings = new List(); + Theme.ScreenSettings = new List(); try { @@ -190,7 +191,7 @@ namespace VocaluxeLib.Menu foreach (SThemePlaylist pl in Theme.Playlists) _AddPlaylist(new CPlaylist(pl, PartyModeID), pl.Name); - foreach (SScreenSetting ss in Theme.ScreenSettings) + foreach (SThemeScreenSetting ss in Theme.ScreenSettings) _AddScreenSetting(new CScreenSetting(ss, PartyModeID), ss.Name); foreach (SThemeSelectSlide sl in Theme.SelectSlides) @@ -234,7 +235,7 @@ namespace VocaluxeLib.Menu _ScreenSettings.Add(name, screenSetting); } - public virtual void LoadThemeOld(string xmlPath) + public void LoadThemeOld(string xmlPath) { string file = Path.Combine(xmlPath, ThemeName + ".xml"); @@ -286,44 +287,21 @@ namespace VocaluxeLib.Menu Theme.Equalizers = new List(); Theme.Playlists = new List(); Theme.ParticleEffects = new List(); - Theme.ScreenSettings = new List(); + Theme.ScreenSettings = new List(); + } + + private static void _AddThemeablesToList(ICollection themeList, IEnumerable objects) where T : IThemeable + { + themeList.Clear(); + foreach (T el in objects.Where(el => el.ThemeLoaded)) + themeList.Add((TT)el.GetTheme()); } public virtual void SaveTheme() { - if (CBase.Config.GetLoadOldThemeFiles()) - { - //Have to add theme-stuff manually, later it will be done while de-serialization - foreach (CBackground el in _Backgrounds) - Theme.Backgrounds.Add(el.GetTheme()); - foreach (CButton el in _Buttons) - Theme.Buttons.Add(el.GetTheme()); - foreach (CEqualizer el in _Equalizers) - Theme.Equalizers.Add(el.GetTheme()); - foreach (CLyric el in _Lyrics) - Theme.Lyrics.Add(el.GetTheme()); - foreach (CNameSelection el in _NameSelections) - Theme.NameSelections.Add(el.GetTheme()); - foreach (CParticleEffect el in _ParticleEffects) - Theme.ParticleEffects.Add(el.GetTheme()); - foreach (CPlaylist el in _Playlists) - Theme.Playlists.Add(el.GetTheme()); - foreach (CScreenSetting el in _ScreenSettings.Values) - Theme.ScreenSettings.Add(el.GetTheme()); - foreach (CSelectSlide el in _SelectSlides) - Theme.SelectSlides.Add(el.GetTheme()); - foreach (CStatic el in _Statics) - Theme.Statics.Add(el.GetTheme()); - foreach (CText el in _Texts) - Theme.Texts.Add(el.GetTheme()); - foreach (CSongMenuFramework el in _SongMenus) - Theme.SongMenus.Add(el.GetTheme()); - foreach (CSingNotes el in _SingNotes) - Theme.SingNotes.Add(el.GetTheme()); - } - if (string.IsNullOrEmpty(ThemePath)) return; + _ReadThemeSubElements(); try { @@ -340,6 +318,24 @@ namespace VocaluxeLib.Menu } } + private void _ReadThemeSubElements() + { + // Load changed/added theme elements into theme struct + _AddThemeablesToList(Theme.Backgrounds, _Backgrounds); + _AddThemeablesToList(Theme.Buttons, _Buttons); + _AddThemeablesToList(Theme.Equalizers, _Equalizers); + _AddThemeablesToList(Theme.Lyrics, _Lyrics); + _AddThemeablesToList(Theme.NameSelections, _NameSelections); + _AddThemeablesToList(Theme.ParticleEffects, _ParticleEffects); + _AddThemeablesToList(Theme.Playlists, _Playlists); + _AddThemeablesToList(Theme.ScreenSettings, _ScreenSettings.Values); + _AddThemeablesToList(Theme.SelectSlides, _SelectSlides); + _AddThemeablesToList(Theme.Statics, _Statics); + _AddThemeablesToList(Theme.Texts, _Texts); + _AddThemeablesToList(Theme.SongMenus, _SongMenus); + _AddThemeablesToList(Theme.SingNotes, _SingNotes); + } + public virtual void ReloadSkin() { foreach (CBackground background in _Backgrounds) @@ -423,6 +419,7 @@ namespace VocaluxeLib.Menu if (ThemePath == "") return; + _ReadThemeSubElements(); UnloadSkin(); _ClearElements(); LoadTheme(xmlPath); diff --git a/VocaluxeLib/Menu/CNameSelection.cs b/VocaluxeLib/Menu/CNameSelection.cs index dd2c2e7b..9da34173 100644 --- a/VocaluxeLib/Menu/CNameSelection.cs +++ b/VocaluxeLib/Menu/CNameSelection.cs @@ -74,17 +74,13 @@ namespace VocaluxeLib.Menu private readonly int _PartyModeID; private SThemeNameSelection _Theme; - private bool _ThemeLoaded; public string GetThemeName() { return _Theme.Name; } - public bool ThemeLoaded - { - get { return _ThemeLoaded; } - } + public bool ThemeLoaded { get; private set; } private readonly List _Tiles; @@ -139,6 +135,7 @@ namespace VocaluxeLib.Menu _VisibleProfiles = new List(); _UsedProfiles = new List(); + ThemeLoaded = true; LoadSkin(); } @@ -159,59 +156,59 @@ namespace VocaluxeLib.Menu public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) { string item = xmlPath + "/" + elementName; - _ThemeLoaded = true; + ThemeLoaded = true; - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinEmptyTile", out _Theme.SkinEmptyTile, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinEmptyTile", out _Theme.SkinEmptyTile, String.Empty); if (xmlReader.GetValue(item + "/ColorEmptyTile", out _Theme.ColorEmptyTile.Name, String.Empty)) - _ThemeLoaded &= _Theme.ColorEmptyTile.Get(_PartyModeID, out _ColorEmptyTile); + ThemeLoaded &= _Theme.ColorEmptyTile.Get(_PartyModeID, out _ColorEmptyTile); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref _ColorEmptyTile.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref _ColorEmptyTile.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref _ColorEmptyTile.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref _ColorEmptyTile.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref _ColorEmptyTile.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref _ColorEmptyTile.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref _ColorEmptyTile.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref _ColorEmptyTile.A); } - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinTileSelected", out _Theme.SkinTileSelected, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinTileSelected", out _Theme.SkinTileSelected, String.Empty); - _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/Tiles/W", ref _Theme.Tiles.W); - _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/Tiles/H", ref _Theme.Tiles.H); - _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/Tiles/NumW", ref _Theme.Tiles.NumW); - _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/Tiles/NumH", ref _Theme.Tiles.NumH); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/SpaceW", ref _Theme.Tiles.SpaceW); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/SpaceH", ref _Theme.Tiles.SpaceH); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/Space", ref _Theme.Tiles.Name.Space); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/H", ref _Theme.Tiles.Name.Height); - _ThemeLoaded &= xmlReader.GetValue(item + "/Tiles/Name/Font", out _Theme.Tiles.Name.Font, "Normal"); - _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Tiles/Name/Style", ref _Theme.Tiles.Name.Style); + ThemeLoaded &= xmlReader.TryGetIntValue(item + "/Tiles/W", ref _Theme.Tiles.W); + ThemeLoaded &= xmlReader.TryGetIntValue(item + "/Tiles/H", ref _Theme.Tiles.H); + ThemeLoaded &= xmlReader.TryGetIntValue(item + "/Tiles/NumW", ref _Theme.Tiles.NumW); + ThemeLoaded &= xmlReader.TryGetIntValue(item + "/Tiles/NumH", ref _Theme.Tiles.NumH); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/SpaceW", ref _Theme.Tiles.SpaceW); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/SpaceH", ref _Theme.Tiles.SpaceH); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/Space", ref _Theme.Tiles.Name.Space); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/H", ref _Theme.Tiles.Name.Height); + ThemeLoaded &= xmlReader.GetValue(item + "/Tiles/Name/Font", out _Theme.Tiles.Name.Font, "Normal"); + ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Tiles/Name/Style", ref _Theme.Tiles.Name.Style); if (xmlReader.GetValue(item + "/Tiles/Name/Color", out _Theme.Tiles.Name.Color.Name, String.Empty)) - _ThemeLoaded &= _Theme.Tiles.Name.Color.Get(_PartyModeID, out _ColorNameTile); + ThemeLoaded &= _Theme.Tiles.Name.Color.Get(_PartyModeID, out _ColorNameTile); else { if (xmlReader.TryGetFloatValue(item + "/Tiles/Name/R", ref _ColorNameTile.R)) { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/G", ref _ColorNameTile.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/B", ref _ColorNameTile.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/A", ref _ColorNameTile.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/G", ref _ColorNameTile.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/B", ref _ColorNameTile.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Tiles/Name/A", ref _ColorNameTile.A); } } - if (_ThemeLoaded) + if (ThemeLoaded) { _Theme.Name = elementName; _Theme.Tiles.Name.Color.Color = _ColorNameTile; _Theme.ColorEmptyTile.Color = _ColorEmptyTile; LoadSkin(); } - return _ThemeLoaded; + return ThemeLoaded; } public void Draw() @@ -528,7 +525,7 @@ namespace VocaluxeLib.Menu } } - public SThemeNameSelection GetTheme() + public object GetTheme() { return _Theme; } diff --git a/VocaluxeLib/Menu/CParticleEffect.cs b/VocaluxeLib/Menu/CParticleEffect.cs index 0db8fa9c..059f64ca 100644 --- a/VocaluxeLib/Menu/CParticleEffect.cs +++ b/VocaluxeLib/Menu/CParticleEffect.cs @@ -50,7 +50,6 @@ namespace VocaluxeLib.Menu { private readonly int _PartyModeID; private SThemeParticleEffect _Theme; - private bool _ThemeLoaded; public CTextureRef Texture; public SColorF Color; @@ -66,10 +65,7 @@ namespace VocaluxeLib.Menu return _Theme.Name; } - public bool ThemeLoaded - { - get { return _ThemeLoaded; } - } + public bool ThemeLoaded { get; private set; } public bool IsAlive { @@ -128,43 +124,44 @@ namespace VocaluxeLib.Menu _NextSpawnTime = 0f; Visible = true; + ThemeLoaded = true; LoadSkin(); } public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) { string item = xmlPath + "/" + elementName; - _ThemeLoaded = true; + ThemeLoaded = true; - _ThemeLoaded &= xmlReader.GetValue(item + "/Skin", out _Theme.Skin, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/Skin", out _Theme.Skin, String.Empty); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); if (xmlReader.GetValue(item + "/Color", out _Theme.Color.Name, String.Empty)) - _ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out Color); + ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out Color); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); } - _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Type", ref _Theme.Type); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Size", ref _Theme.Size); - _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/MaxNumber", ref _Theme.MaxNumber); + ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Type", ref _Theme.Type); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Size", ref _Theme.Size); + ThemeLoaded &= xmlReader.TryGetIntValue(item + "/MaxNumber", ref _Theme.MaxNumber); - if (_ThemeLoaded) + if (ThemeLoaded) { _Theme.Name = elementName; _Theme.Color.Color = Color; LoadSkin(); } - return _ThemeLoaded; + return ThemeLoaded; } public void Update() @@ -330,7 +327,7 @@ namespace VocaluxeLib.Menu LoadSkin(); } - public SThemeParticleEffect GetTheme() + public object GetTheme() { return _Theme; } diff --git a/VocaluxeLib/Menu/CPlaylist.cs b/VocaluxeLib/Menu/CPlaylist.cs index 6e019cb3..e78dc8d6 100644 --- a/VocaluxeLib/Menu/CPlaylist.cs +++ b/VocaluxeLib/Menu/CPlaylist.cs @@ -144,17 +144,13 @@ namespace VocaluxeLib.Menu private readonly int _PartyModeID; private SThemePlaylist _Theme; - private bool _ThemeLoaded; public string GetThemeName() { return _Theme.Name; } - public bool ThemeLoaded - { - get { return _ThemeLoaded; } - } + public bool ThemeLoaded { get; private set; } private readonly List _PlaylistElements = new List(); private readonly List _PlaylistElementContents = new List(); @@ -259,6 +255,7 @@ namespace VocaluxeLib.Menu Visible = false; Selected = false; + ThemeLoaded = true; } public override void Init() @@ -277,69 +274,74 @@ namespace VocaluxeLib.Menu public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) { string item = xmlPath + "/" + elementName; - _ThemeLoaded = true; + ThemeLoaded = true; - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackground", out _Theme.SkinBackground, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundSelected", out _Theme.SkinBackgroundSelected, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackground", out _Theme.SkinBackground, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundSelected", out _Theme.SkinBackgroundSelected, String.Empty); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); if (xmlReader.GetValue(item + "/ColorBackground", out _Theme.ColorBackground.Name, String.Empty)) - _ThemeLoaded &= _Theme.ColorBackground.Get(_PartyModeID, out _BackgroundColor); + ThemeLoaded &= _Theme.ColorBackground.Get(_PartyModeID, out _BackgroundColor); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/BackgroundR", ref _BackgroundColor.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/BackgroundG", ref _BackgroundColor.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/BackgroundB", ref _BackgroundColor.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/BackgroundA", ref _BackgroundColor.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/BackgroundR", ref _BackgroundColor.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/BackgroundG", ref _BackgroundColor.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/BackgroundB", ref _BackgroundColor.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/BackgroundA", ref _BackgroundColor.A); } if (xmlReader.GetValue(item + "/SColorBackground", out _Theme.SelColorBackground.Name, String.Empty)) - _ThemeLoaded &= _Theme.SelColorBackground.Get(_PartyModeID, out _BackgroundSelColor); + ThemeLoaded &= _Theme.SelColorBackground.Get(_PartyModeID, out _BackgroundSelColor); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SBackgroundR", ref _BackgroundSelColor.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SBackgroundG", ref _BackgroundSelColor.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SBackgroundB", ref _BackgroundSelColor.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SBackgroundA", ref _BackgroundSelColor.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SBackgroundR", ref _BackgroundSelColor.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SBackgroundG", ref _BackgroundSelColor.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SBackgroundB", ref _BackgroundSelColor.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SBackgroundA", ref _BackgroundSelColor.A); } - _ThemeLoaded &= _Text1.LoadTheme(item, "TextPart1", xmlReader); + ThemeLoaded &= _Text1.LoadTheme(item, "TextPart1", xmlReader); CStatic tmpStatic = new CStatic(_PartyModeID); - _ThemeLoaded &= tmpStatic.LoadTheme(item, "StaticCover", xmlReader); - _ThemeLoaded &= _StaticPlaylistHeader.LoadTheme(item, "StaticPlaylistHeader", xmlReader); - _ThemeLoaded &= _StaticPlaylistFooter.LoadTheme(item, "StaticPlaylistFooter", xmlReader); + ThemeLoaded &= tmpStatic.LoadTheme(item, "StaticCover", xmlReader); + ThemeLoaded &= _StaticPlaylistHeader.LoadTheme(item, "StaticPlaylistHeader", xmlReader); + ThemeLoaded &= _StaticPlaylistFooter.LoadTheme(item, "StaticPlaylistFooter", xmlReader); - _ThemeLoaded &= _ButtonPlaylistName.LoadTheme(item, "ButtonPlaylistName", xmlReader); - _ThemeLoaded &= _ButtonPlaylistSing.LoadTheme(item, "ButtonPlaylistSing", xmlReader); - _ThemeLoaded &= _ButtonPlaylistClose.LoadTheme(item, "ButtonPlaylistClose", xmlReader); - _ThemeLoaded &= _ButtonPlaylistSave.LoadTheme(item, "ButtonPlaylistSave", xmlReader); - _ThemeLoaded &= _ButtonPlaylistDelete.LoadTheme(item, "ButtonPlaylistDelete", xmlReader); + ThemeLoaded &= _ButtonPlaylistName.LoadTheme(item, "ButtonPlaylistName", xmlReader); + ThemeLoaded &= _ButtonPlaylistSing.LoadTheme(item, "ButtonPlaylistSing", xmlReader); + ThemeLoaded &= _ButtonPlaylistClose.LoadTheme(item, "ButtonPlaylistClose", xmlReader); + ThemeLoaded &= _ButtonPlaylistSave.LoadTheme(item, "ButtonPlaylistSave", xmlReader); + ThemeLoaded &= _ButtonPlaylistDelete.LoadTheme(item, "ButtonPlaylistDelete", xmlReader); - _ThemeLoaded &= _SelectSlideGameMode.LoadTheme(item, "SelectSlideGameMode", xmlReader); + ThemeLoaded &= _SelectSlideGameMode.LoadTheme(item, "SelectSlideGameMode", xmlReader); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/EntryHeight", ref _Theme.EntryHeight); - if (_ThemeLoaded) + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/EntryHeight", ref _Theme.EntryHeight); + if (ThemeLoaded) { _Theme.Name = elementName; _Theme.ColorBackground.Color = _BackgroundColor; _Theme.SelColorBackground.Color = _BackgroundSelColor; - _Theme.Text1 = _Text1.GetTheme(); - _Theme.StaticCover = tmpStatic.GetTheme(); - _Theme.StaticPlaylistFooter = _StaticPlaylistFooter.GetTheme(); - _Theme.StaticPlaylistHeader = _StaticPlaylistHeader.GetTheme(); - _Theme.ButtonPlaylistName = _ButtonPlaylistName.GetTheme(); - _Theme.ButtonPlaylistSing = _ButtonPlaylistSing.GetTheme(); - _Theme.ButtonPlaylistClose = _ButtonPlaylistClose.GetTheme(); - _Theme.ButtonPlaylistSave = _ButtonPlaylistSave.GetTheme(); - _Theme.ButtonPlaylistDelete = _ButtonPlaylistDelete.GetTheme(); + _Theme.StaticCover = (SThemeStatic)tmpStatic.GetTheme(); + _ReadSubThemeElements(); LoadSkin(); } - return _ThemeLoaded; + return ThemeLoaded; + } + + private void _ReadSubThemeElements() + { + _Theme.Text1 = (SThemeText)_Text1.GetTheme(); + _Theme.StaticPlaylistFooter = (SThemeStatic)_StaticPlaylistFooter.GetTheme(); + _Theme.StaticPlaylistHeader = (SThemeStatic)_StaticPlaylistHeader.GetTheme(); + _Theme.ButtonPlaylistName = (SThemeButton)_ButtonPlaylistName.GetTheme(); + _Theme.ButtonPlaylistSing = (SThemeButton)_ButtonPlaylistSing.GetTheme(); + _Theme.ButtonPlaylistClose = (SThemeButton)_ButtonPlaylistClose.GetTheme(); + _Theme.ButtonPlaylistSave = (SThemeButton)_ButtonPlaylistSave.GetTheme(); + _Theme.ButtonPlaylistDelete = (SThemeButton)_ButtonPlaylistDelete.GetTheme(); } public void UpdateGame() @@ -1164,8 +1166,9 @@ namespace VocaluxeLib.Menu } } - public SThemePlaylist GetTheme() + public object GetTheme() { + _ReadSubThemeElements(); return _Theme; } diff --git a/VocaluxeLib/Menu/CScreenSetting.cs b/VocaluxeLib/Menu/CScreenSetting.cs index 863fccdc..35148cf7 100644 --- a/VocaluxeLib/Menu/CScreenSetting.cs +++ b/VocaluxeLib/Menu/CScreenSetting.cs @@ -31,7 +31,7 @@ namespace VocaluxeLib.Menu } [XmlType("ScreenSetting")] - public struct SScreenSetting + public struct SThemeScreenSetting { [XmlAttribute(AttributeName = "Name")] public string Name; public string Value; @@ -45,7 +45,7 @@ namespace VocaluxeLib.Menu { private readonly int _PartyModeID; - private SScreenSetting _Theme; + private SThemeScreenSetting _Theme; private bool _ThemeLoaded; public string GetThemeName() @@ -61,11 +61,11 @@ namespace VocaluxeLib.Menu public CScreenSetting(int partyModeID) { _PartyModeID = partyModeID; - _Theme = new SScreenSetting(); + _Theme = new SThemeScreenSetting(); _ThemeLoaded = false; } - public CScreenSetting(SScreenSetting theme, int partyModeID) + public CScreenSetting(SThemeScreenSetting theme, int partyModeID) { _PartyModeID = partyModeID; _Theme = theme; @@ -104,7 +104,7 @@ namespace VocaluxeLib.Menu return null; } - public SScreenSetting GetTheme() + public object GetTheme() { return _Theme; } diff --git a/VocaluxeLib/Menu/CSelectSlide.cs b/VocaluxeLib/Menu/CSelectSlide.cs index 55ae44f1..38d4412e 100644 --- a/VocaluxeLib/Menu/CSelectSlide.cs +++ b/VocaluxeLib/Menu/CSelectSlide.cs @@ -65,17 +65,13 @@ namespace VocaluxeLib.Menu { private readonly int _PartyModeID; private SThemeSelectSlide _Theme; - private bool _ThemeLoaded; public string GetThemeName() { return _Theme.Name; } - public bool ThemeLoaded - { - get { return _ThemeLoaded; } - } + public bool ThemeLoaded { get; private set; } public SRectF RectArrowLeft; public SRectF RectArrowRight; @@ -211,7 +207,7 @@ namespace VocaluxeLib.Menu public CSelectSlide(int partyModeID) { _PartyModeID = partyModeID; - _ThemeLoaded = false; + ThemeLoaded = false; _TextH = 1f; _MaxW = 0f; @@ -226,7 +222,7 @@ namespace VocaluxeLib.Menu _PartyModeID = slide._PartyModeID; _Theme = slide._Theme; - _ThemeLoaded = false; + ThemeLoaded = false; MaxRect = slide.MaxRect; RectArrowLeft = slide.RectArrowLeft; @@ -267,110 +263,111 @@ namespace VocaluxeLib.Menu _ValueNames = new List(); _ValuePartyModeIDs = new List(); + ThemeLoaded = true; LoadSkin(); } public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) { string item = xmlPath + "/" + elementName; - _ThemeLoaded = true; + ThemeLoaded = true; - _ThemeLoaded &= xmlReader.GetValue(item + "/Skin", out _Theme.Skin, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinArrowLeft", out _Theme.SkinArrowLeft, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinArrowRight", out _Theme.SkinArrowRight, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/Skin", out _Theme.Skin, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinArrowLeft", out _Theme.SkinArrowLeft, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinArrowRight", out _Theme.SkinArrowRight, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinSelected", out _Theme.SkinSelected, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinArrowLeftSelected", out _Theme.SkinArrowLeftSelected, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinArrowRightSelected", out _Theme.SkinArrowRightSelected, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinSelected", out _Theme.SkinSelected, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinArrowLeftSelected", out _Theme.SkinArrowLeftSelected, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinArrowRightSelected", out _Theme.SkinArrowRightSelected, String.Empty); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); if (xmlReader.GetValue(item + "/Color", out _Theme.Color.Name, String.Empty)) - _ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out _Color); + ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out _Color); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref _Color.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref _Color.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref _Color.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref _Color.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref _Color.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref _Color.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref _Color.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref _Color.A); } if (xmlReader.GetValue(item + "/SColor", out _Theme.SelColor.Name, String.Empty)) - _ThemeLoaded &= _Theme.SelColor.Get(_PartyModeID, out _SelColor); + ThemeLoaded &= _Theme.SelColor.Get(_PartyModeID, out _SelColor); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SR", ref _SelColor.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SG", ref _SelColor.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SB", ref _SelColor.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SA", ref _SelColor.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SR", ref _SelColor.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SG", ref _SelColor.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SB", ref _SelColor.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SA", ref _SelColor.A); } - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftX", ref RectArrowLeft.X); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftY", ref RectArrowLeft.Y); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftZ", ref RectArrowLeft.Z); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftW", ref RectArrowLeft.W); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftH", ref RectArrowLeft.H); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftX", ref RectArrowLeft.X); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftY", ref RectArrowLeft.Y); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftZ", ref RectArrowLeft.Z); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftW", ref RectArrowLeft.W); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowLeftH", ref RectArrowLeft.H); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightX", ref RectArrowRight.X); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightY", ref RectArrowRight.Y); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightZ", ref RectArrowRight.Z); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightW", ref RectArrowRight.W); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightH", ref RectArrowRight.H); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightX", ref RectArrowRight.X); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightY", ref RectArrowRight.Y); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightZ", ref RectArrowRight.Z); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightW", ref RectArrowRight.W); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowRightH", ref RectArrowRight.H); if (xmlReader.GetValue(item + "/ArrowColor", out _Theme.ArrowColor.Name, String.Empty)) - _ThemeLoaded &= _Theme.ArrowColor.Get(_PartyModeID, out _ColorArrow); + ThemeLoaded &= _Theme.ArrowColor.Get(_PartyModeID, out _ColorArrow); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowR", ref _ColorArrow.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowG", ref _ColorArrow.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowB", ref _ColorArrow.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowA", ref _ColorArrow.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowR", ref _ColorArrow.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowG", ref _ColorArrow.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowB", ref _ColorArrow.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowA", ref _ColorArrow.A); } if (xmlReader.GetValue(item + "/ArrowSColor", out _Theme.ArrowSelColor.Name, String.Empty)) - _ThemeLoaded &= _Theme.ArrowSelColor.Get(_PartyModeID, out _SelColorArrow); + ThemeLoaded &= _Theme.ArrowSelColor.Get(_PartyModeID, out _SelColorArrow); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowSR", ref _SelColorArrow.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowSG", ref _SelColorArrow.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowSB", ref _SelColorArrow.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowSA", ref _SelColorArrow.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowSR", ref _SelColorArrow.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowSG", ref _SelColorArrow.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowSB", ref _SelColorArrow.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/ArrowSA", ref _SelColorArrow.A); } if (xmlReader.GetValue(item + "/TextColor", out _Theme.TextColor.Name, String.Empty)) - _ThemeLoaded &= _Theme.TextColor.Get(_PartyModeID, out _TextColor); + ThemeLoaded &= _Theme.TextColor.Get(_PartyModeID, out _TextColor); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextR", ref _TextColor.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextG", ref _TextColor.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextB", ref _TextColor.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextA", ref _TextColor.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextR", ref _TextColor.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextG", ref _TextColor.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextB", ref _TextColor.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextA", ref _TextColor.A); } if (xmlReader.GetValue(item + "/TextSColor", out _Theme.TextSelColor.Name, String.Empty)) - _ThemeLoaded &= _Theme.TextSelColor.Get(_PartyModeID, out _SelTextColor); + ThemeLoaded &= _Theme.TextSelColor.Get(_PartyModeID, out _SelTextColor); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextSR", ref _SelTextColor.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextSG", ref _SelTextColor.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextSB", ref _SelTextColor.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextSA", ref _SelTextColor.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextSR", ref _SelTextColor.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextSG", ref _SelTextColor.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextSB", ref _SelTextColor.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextSA", ref _SelTextColor.A); } - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextH", ref _Theme.TextH); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextH", ref _Theme.TextH); xmlReader.TryGetFloatValue(item + "/TextRelativeX", ref _Theme.TextRelativeX); xmlReader.TryGetFloatValue(item + "/TextRelativeY", ref _Theme.TextRelativeY); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextMaxW", ref _Theme.TextMaxW); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextMaxW", ref _Theme.TextMaxW); - _ThemeLoaded &= xmlReader.GetValue(item + "/TextFont", out _Theme.TextFont, "Normal"); - _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/TextStyle", ref _Theme.TextStyle); + ThemeLoaded &= xmlReader.GetValue(item + "/TextFont", out _Theme.TextFont, "Normal"); + ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/TextStyle", ref _Theme.TextStyle); - _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/NumVisible", ref _Theme.NumVisible); + ThemeLoaded &= xmlReader.TryGetIntValue(item + "/NumVisible", ref _Theme.NumVisible); - if (_ThemeLoaded) + if (ThemeLoaded) { _Theme.Name = elementName; _Theme.ArrowColor.Color = _ColorArrow; @@ -383,7 +380,7 @@ namespace VocaluxeLib.Menu _Theme.TextSelColor.Color = _SelTextColor; LoadSkin(); } - return _ThemeLoaded; + return ThemeLoaded; } public void AddValue(string value) @@ -656,7 +653,7 @@ namespace VocaluxeLib.Menu } } - public SThemeSelectSlide GetTheme() + public object GetTheme() { return _Theme; } diff --git a/VocaluxeLib/Menu/CStatic.cs b/VocaluxeLib/Menu/CStatic.cs index b1774f5f..82328426 100644 --- a/VocaluxeLib/Menu/CStatic.cs +++ b/VocaluxeLib/Menu/CStatic.cs @@ -38,17 +38,13 @@ namespace VocaluxeLib.Menu private readonly int _PartyModeID; private SThemeStatic _Theme; - private bool _ThemeLoaded; public string GetThemeName() { return _Theme.Name; } - public bool ThemeLoaded - { - get { return _ThemeLoaded; } - } + public bool ThemeLoaded { get; private set; } public bool Selectable { @@ -114,6 +110,7 @@ namespace VocaluxeLib.Menu { _PartyModeID = partyModeID; _Theme = theme; + ThemeLoaded = true; LoadSkin(); } @@ -121,24 +118,24 @@ namespace VocaluxeLib.Menu public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) { string item = xmlPath + "/" + elementName; - _ThemeLoaded = true; + ThemeLoaded = true; - _ThemeLoaded &= xmlReader.GetValue(item + "/Skin", out _Theme.Skin, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/Skin", out _Theme.Skin, String.Empty); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.Rect.X); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Rect.Y); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Rect.Z); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/W", ref _Theme.Rect.W); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.Rect.H); if (xmlReader.GetValue(item + "/Color", out _Theme.Color.Name, String.Empty)) - _ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out Color); + ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out Color); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); } _Theme.Color.Color = Color; @@ -146,8 +143,8 @@ namespace VocaluxeLib.Menu if (xmlReader.ItemExists(item + "/Reflection")) { Reflection = true; - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Space", ref ReflectionSpace); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Height", ref ReflectionHeight); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Space", ref ReflectionSpace); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Height", ref ReflectionHeight); _Theme.Reflection = new SReflection(ReflectionHeight, ReflectionSpace); } else @@ -156,12 +153,12 @@ namespace VocaluxeLib.Menu _Theme.Reflection = null; } - if (_ThemeLoaded) + if (ThemeLoaded) { _Theme.Name = elementName; LoadSkin(); } - return _ThemeLoaded; + return ThemeLoaded; } public void Draw() @@ -196,6 +193,8 @@ namespace VocaluxeLib.Menu public void LoadSkin() { + if (!ThemeLoaded) + return; _Theme.Color.Get(_PartyModeID, out Color); MaxRect = _Theme.Rect; @@ -214,7 +213,7 @@ namespace VocaluxeLib.Menu LoadSkin(); } - public SThemeStatic GetTheme() + public object GetTheme() { return _Theme; } diff --git a/VocaluxeLib/Menu/CText.cs b/VocaluxeLib/Menu/CText.cs index 6523d964..cad2c505 100644 --- a/VocaluxeLib/Menu/CText.cs +++ b/VocaluxeLib/Menu/CText.cs @@ -45,7 +45,6 @@ namespace VocaluxeLib.Menu public sealed class CText : CMenuElementBase, IMenuElement, IThemeable, IFontObserver { private SThemeText _Theme; - private bool _ThemeLoaded; private readonly int _PartyModeID = -1; private int _TranslationID = -1; @@ -54,10 +53,7 @@ namespace VocaluxeLib.Menu return _Theme.Name; } - public bool ThemeLoaded - { - get { return _ThemeLoaded; } - } + public bool ThemeLoaded { get; private set; } private bool _ButtonText; private bool _PositionNeedsUpdate = true; @@ -266,7 +262,7 @@ namespace VocaluxeLib.Menu float rspace = 0) : this(partyModeID) { _Theme = new SThemeText {FontFamily = fontFamily, FontStyle = style, FontHeight = h, Text = text}; - _ThemeLoaded = false; + ThemeLoaded = false; _ButtonText = false; MaxRect = new SRectF(x, y, mw, h, z); @@ -295,6 +291,7 @@ namespace VocaluxeLib.Menu _ButtonText = buttonText; + ThemeLoaded = true; LoadSkin(); } @@ -306,50 +303,50 @@ namespace VocaluxeLib.Menu public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader, bool buttonText) { string item = xmlPath + "/" + elementName; - _ThemeLoaded = true; + ThemeLoaded = true; - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.X); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Y); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/X", ref _Theme.X); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Y", ref _Theme.Y); if (!buttonText) - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Z); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Z", ref _Theme.Z); xmlReader.TryGetFloatValue(item + "/MaxW", ref _Theme.MaxWidth); if (xmlReader.GetValue(item + "/Color", out _Theme.Color.Name, String.Empty)) - _ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out Color); + ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out Color); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref Color.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref Color.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref Color.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref Color.A); } if (xmlReader.GetValue(item + "/SColor", out _Theme.SelColor.Name, String.Empty)) - _ThemeLoaded &= _Theme.SelColor.Get(_PartyModeID, out SelColor); + ThemeLoaded &= _Theme.SelColor.Get(_PartyModeID, out SelColor); else { if (xmlReader.TryGetFloatValue(item + "/SR", ref SelColor.R)) { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SG", ref SelColor.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SB", ref SelColor.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SA", ref SelColor.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SG", ref SelColor.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SB", ref SelColor.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SA", ref SelColor.A); } } - _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Align", ref _Align); + ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Align", ref _Align); xmlReader.TryGetEnumValue(item + "/ResizeAlign", ref _ResizeAlign); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.FontHeight); - _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Style", ref _Theme.FontStyle); - _ThemeLoaded &= xmlReader.GetValue(item + "/Font", out _Theme.FontFamily); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/H", ref _Theme.FontHeight); + ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/Style", ref _Theme.FontStyle); + ThemeLoaded &= xmlReader.GetValue(item + "/Font", out _Theme.FontFamily); - _ThemeLoaded &= xmlReader.GetValue(item + "/Text", out _Theme.Text); + ThemeLoaded &= xmlReader.GetValue(item + "/Text", out _Theme.Text); if (xmlReader.ItemExists(item + "/Reflection") && !buttonText) { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Space", ref _ReflectionSpace); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Height", ref _ReflectionHeight); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Space", ref _ReflectionSpace); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/Reflection/Height", ref _ReflectionHeight); _Theme.Reflection = new SReflection(_ReflectionHeight, _ReflectionSpace); } else @@ -366,9 +363,9 @@ namespace VocaluxeLib.Menu _ButtonText = buttonText; _PositionNeedsUpdate = true; - if (_ThemeLoaded) + if (ThemeLoaded) LoadSkin(); - return _ThemeLoaded; + return ThemeLoaded; } public void Draw() @@ -436,6 +433,8 @@ namespace VocaluxeLib.Menu public void LoadSkin() { + if (!ThemeLoaded) + return; _Theme.Color.Get(_PartyModeID, out Color); _Theme.SelColor.Get(_PartyModeID, out SelColor); @@ -457,8 +456,6 @@ namespace VocaluxeLib.Menu Text = _Theme.Text; Selected = false; - - _ThemeLoaded = true; } public void ReloadSkin() @@ -467,7 +464,7 @@ namespace VocaluxeLib.Menu LoadSkin(); } - public SThemeText GetTheme() + public object GetTheme() { return _Theme; } diff --git a/VocaluxeLib/Menu/IThemeable.cs b/VocaluxeLib/Menu/IThemeable.cs index 2de6599a..8576904d 100644 --- a/VocaluxeLib/Menu/IThemeable.cs +++ b/VocaluxeLib/Menu/IThemeable.cs @@ -22,6 +22,8 @@ namespace VocaluxeLib.Menu public interface IThemeable { string GetThemeName(); + object GetTheme(); + bool ThemeLoaded { get; } bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader); diff --git a/VocaluxeLib/Menu/SingNotes/CSingNotes.cs b/VocaluxeLib/Menu/SingNotes/CSingNotes.cs index 0b6555b3..2c7c7270 100644 --- a/VocaluxeLib/Menu/SingNotes/CSingNotes.cs +++ b/VocaluxeLib/Menu/SingNotes/CSingNotes.cs @@ -53,7 +53,6 @@ namespace VocaluxeLib.Menu.SingNotes { private readonly int _PartyModeID; private SThemeSingBar _Theme; - private bool _ThemeLoaded; public readonly List PlayerNotes = new List(); @@ -74,7 +73,7 @@ namespace VocaluxeLib.Menu.SingNotes { _PartyModeID = partyModeID; _Theme = new SThemeSingBar {BarPos = new SBarPosition[CHelper.Sum(CBase.Settings.GetMaxNumPlayer())]}; - _ThemeLoaded = false; + ThemeLoaded = false; } public CSingNotes(SThemeSingBar theme, int partyModeID) @@ -84,6 +83,7 @@ namespace VocaluxeLib.Menu.SingNotes _BarPos = new SRectF[CBase.Settings.GetMaxNumPlayer(),CBase.Settings.GetMaxNumPlayer()]; + ThemeLoaded = true; LoadSkin(); } @@ -92,27 +92,24 @@ namespace VocaluxeLib.Menu.SingNotes return _Theme.Name; } - public bool ThemeLoaded - { - get { return _ThemeLoaded; } - } + public bool ThemeLoaded { get; private set; } public bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) { string item = xmlPath + "/" + elementName; - _ThemeLoaded = true; + ThemeLoaded = true; - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinLeft", out _Theme.SkinLeft, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinMiddle", out _Theme.SkinMiddle, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinRight", out _Theme.SkinRight, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinLeft", out _Theme.SkinLeft, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinMiddle", out _Theme.SkinMiddle, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinRight", out _Theme.SkinRight, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundLeft", out _Theme.SkinBackgroundLeft, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundMiddle", out _Theme.SkinBackgroundMiddle, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundRight", out _Theme.SkinBackgroundRight, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundLeft", out _Theme.SkinBackgroundLeft, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundMiddle", out _Theme.SkinBackgroundMiddle, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinBackgroundRight", out _Theme.SkinBackgroundRight, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinGoldenStar", out _Theme.SkinGoldenStar, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinToneHelper", out _Theme.SkinToneHelper, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/SkinPerfectNoteStar", out _Theme.SkinPerfectNoteStart, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinGoldenStar", out _Theme.SkinGoldenStar, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinToneHelper", out _Theme.SkinToneHelper, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/SkinPerfectNoteStar", out _Theme.SkinPerfectNoteStart, String.Empty); int i = 0; _BarPos = new SRectF[CBase.Settings.GetMaxNumPlayer(),CBase.Settings.GetMaxNumPlayer()]; @@ -122,24 +119,24 @@ namespace VocaluxeLib.Menu.SingNotes { _BarPos[player, numplayer] = new SRectF(); string target = "/BarPositions/P" + (player + 1) + "N" + (numplayer + 1); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "X", ref _BarPos[player, numplayer].X); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "Y", ref _BarPos[player, numplayer].Y); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "Z", ref _BarPos[player, numplayer].Z); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "W", ref _BarPos[player, numplayer].W); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "H", ref _BarPos[player, numplayer].H); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "X", ref _BarPos[player, numplayer].X); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "Y", ref _BarPos[player, numplayer].Y); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "Z", ref _BarPos[player, numplayer].Z); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "W", ref _BarPos[player, numplayer].W); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + target + "H", ref _BarPos[player, numplayer].H); _Theme.BarPos[i].Name = "P" + (player + 1) + "N" + (numplayer + 1); _Theme.BarPos[i].Rect = _BarPos[player, numplayer]; i++; } } - if (_ThemeLoaded) + if (ThemeLoaded) { _Theme.Name = elementName; LoadSkin(); } - return _ThemeLoaded; + return ThemeLoaded; } public void Init(int numPlayers) @@ -174,7 +171,7 @@ namespace VocaluxeLib.Menu.SingNotes LoadSkin(); } - public SThemeSingBar GetTheme() + public object GetTheme() { return _Theme; } diff --git a/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs b/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs index 9ad43614..b12c35a0 100644 --- a/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs +++ b/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs @@ -94,12 +94,8 @@ namespace VocaluxeLib.Menu.SongMenu { protected readonly int _PartyModeID; protected SThemeSongMenu _Theme; - private bool _ThemeLoaded; - public bool ThemeLoaded - { - get { return _ThemeLoaded; } - } + public bool ThemeLoaded { get; private set; } public bool Selectable { @@ -160,6 +156,7 @@ namespace VocaluxeLib.Menu.SongMenu _PartyModeID = partyModeID; _Theme = theme; + ThemeLoaded = true; LoadSkin(); } @@ -169,7 +166,7 @@ namespace VocaluxeLib.Menu.SongMenu return _Theme.Name; } - public SThemeSongMenu GetTheme() + public object GetTheme() { return _Theme; } @@ -177,49 +174,49 @@ namespace VocaluxeLib.Menu.SongMenu public virtual bool LoadTheme(string xmlPath, string elementName, CXmlReader xmlReader) { string item = xmlPath + "/" + elementName; - _ThemeLoaded = true; + ThemeLoaded = true; - _ThemeLoaded &= xmlReader.GetValue(item + "/CoverBackground", out _Theme.CoverBackground, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/CoverBigBackground", out _Theme.CoverBigBackground, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/DuetIcon", out _Theme.DuetIcon, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/VideoIcon", out _Theme.VideoIcon, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/MedleyCalcIcon", out _Theme.MedleyCalcIcon, String.Empty); - _ThemeLoaded &= xmlReader.GetValue(item + "/MedleyTagIcon", out _Theme.MedleyTagIcon, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/CoverBackground", out _Theme.CoverBackground, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/CoverBigBackground", out _Theme.CoverBigBackground, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/DuetIcon", out _Theme.DuetIcon, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/VideoIcon", out _Theme.VideoIcon, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/MedleyCalcIcon", out _Theme.MedleyCalcIcon, String.Empty); + ThemeLoaded &= xmlReader.GetValue(item + "/MedleyTagIcon", out _Theme.MedleyTagIcon, String.Empty); if (xmlReader.GetValue(item + "/Color", out _Theme.Color.Name, String.Empty)) - _ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out _ColorInternal); + ThemeLoaded &= _Theme.Color.Get(_PartyModeID, out _ColorInternal); else { - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref _ColorInternal.R); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref _ColorInternal.G); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref _ColorInternal.B); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref _ColorInternal.A); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/R", ref _ColorInternal.R); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/G", ref _ColorInternal.G); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/B", ref _ColorInternal.B); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/A", ref _ColorInternal.A); } _Theme.Color.Color = _ColorInternal; #region SongMenuTileBoard - _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/SongMenuTileBoard/NumW", ref _Theme.SongMenuTileBoard.NumW); - _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/SongMenuTileBoard/NumH", ref _Theme.SongMenuTileBoard.NumH); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/SpaceW", ref _Theme.SongMenuTileBoard.SpaceW); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/SpaceH", ref _Theme.SongMenuTileBoard.SpaceH); + ThemeLoaded &= xmlReader.TryGetIntValue(item + "/SongMenuTileBoard/NumW", ref _Theme.SongMenuTileBoard.NumW); + ThemeLoaded &= xmlReader.TryGetIntValue(item + "/SongMenuTileBoard/NumH", ref _Theme.SongMenuTileBoard.NumH); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/SpaceW", ref _Theme.SongMenuTileBoard.SpaceW); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/SpaceH", ref _Theme.SongMenuTileBoard.SpaceH); - _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/SongMenuTileBoard/NumWsmall", ref _Theme.SongMenuTileBoard.NumWsmall); - _ThemeLoaded &= xmlReader.TryGetIntValue(item + "/SongMenuTileBoard/NumHsmall", ref _Theme.SongMenuTileBoard.NumHsmall); + ThemeLoaded &= xmlReader.TryGetIntValue(item + "/SongMenuTileBoard/NumWsmall", ref _Theme.SongMenuTileBoard.NumWsmall); + ThemeLoaded &= xmlReader.TryGetIntValue(item + "/SongMenuTileBoard/NumHsmall", ref _Theme.SongMenuTileBoard.NumHsmall); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectX", ref _Theme.SongMenuTileBoard.TileRect.X); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectY", ref _Theme.SongMenuTileBoard.TileRect.Y); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectZ", ref _Theme.SongMenuTileBoard.TileRect.Z); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectW", ref _Theme.SongMenuTileBoard.TileRect.W); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectH", ref _Theme.SongMenuTileBoard.TileRect.H); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectX", ref _Theme.SongMenuTileBoard.TileRect.X); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectY", ref _Theme.SongMenuTileBoard.TileRect.Y); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectZ", ref _Theme.SongMenuTileBoard.TileRect.Z); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectW", ref _Theme.SongMenuTileBoard.TileRect.W); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectH", ref _Theme.SongMenuTileBoard.TileRect.H); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallX", ref _Theme.SongMenuTileBoard.TileRectSmall.X); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallY", ref _Theme.SongMenuTileBoard.TileRectSmall.Y); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallZ", ref _Theme.SongMenuTileBoard.TileRectSmall.Z); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallW", ref _Theme.SongMenuTileBoard.TileRectSmall.W); - _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallH", ref _Theme.SongMenuTileBoard.TileRectSmall.H); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallX", ref _Theme.SongMenuTileBoard.TileRectSmall.X); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallY", ref _Theme.SongMenuTileBoard.TileRectSmall.Y); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallZ", ref _Theme.SongMenuTileBoard.TileRectSmall.Z); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallW", ref _Theme.SongMenuTileBoard.TileRectSmall.W); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallH", ref _Theme.SongMenuTileBoard.TileRectSmall.H); #endregion SongMenuTileBoard - if (_ThemeLoaded) + if (ThemeLoaded) { _Theme.Name = elementName; @@ -227,7 +224,7 @@ namespace VocaluxeLib.Menu.SongMenu Init(); } - return _ThemeLoaded; + return ThemeLoaded; } #endregion Theme diff --git a/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs b/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs index eabca5e4..7aa3c89a 100644 --- a/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs +++ b/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs @@ -143,15 +143,15 @@ namespace VocaluxeLib.Menu.SongMenu { _Theme.Name = elementName; - _Theme.SongMenuTileBoard.TextArtist = _Artist.GetTheme(); - _Theme.SongMenuTileBoard.TextSongLength = _SongLength.GetTheme(); - _Theme.SongMenuTileBoard.TextTitle = _Title.GetTheme(); - _Theme.SongMenuTileBoard.StaticCoverBig = _CoverBig.GetTheme(); - _Theme.SongMenuTileBoard.StaticDuetIcon = _DuetIcon.GetTheme(); - _Theme.SongMenuTileBoard.StaticMedleyCalcIcon = _MedleyCalcIcon.GetTheme(); - _Theme.SongMenuTileBoard.StaticMedleyTagIcon = _MedleyTagIcon.GetTheme(); - _Theme.SongMenuTileBoard.StaticTextBG = _TextBG.GetTheme(); - _Theme.SongMenuTileBoard.StaticVideoIcon = _VideoIcon.GetTheme(); + _Theme.SongMenuTileBoard.TextArtist = (SThemeText)_Artist.GetTheme(); + _Theme.SongMenuTileBoard.TextSongLength = (SThemeText)_SongLength.GetTheme(); + _Theme.SongMenuTileBoard.TextTitle = (SThemeText)_Title.GetTheme(); + _Theme.SongMenuTileBoard.StaticCoverBig = (SThemeStatic)_CoverBig.GetTheme(); + _Theme.SongMenuTileBoard.StaticDuetIcon = (SThemeStatic)_DuetIcon.GetTheme(); + _Theme.SongMenuTileBoard.StaticMedleyCalcIcon = (SThemeStatic)_MedleyCalcIcon.GetTheme(); + _Theme.SongMenuTileBoard.StaticMedleyTagIcon = (SThemeStatic)_MedleyTagIcon.GetTheme(); + _Theme.SongMenuTileBoard.StaticTextBG = (SThemeStatic)_TextBG.GetTheme(); + _Theme.SongMenuTileBoard.StaticVideoIcon = (SThemeStatic)_VideoIcon.GetTheme(); LoadSkin(); Init(); diff --git a/VocaluxeLib/Menu/SongMenu/ISongMenu.cs b/VocaluxeLib/Menu/SongMenu/ISongMenu.cs index 7c688afc..5d15a6a4 100644 --- a/VocaluxeLib/Menu/SongMenu/ISongMenu.cs +++ b/VocaluxeLib/Menu/SongMenu/ISongMenu.cs @@ -45,8 +45,5 @@ namespace VocaluxeLib.Menu.SongMenu int GetPreviewSong(); bool SmallView { get; set; } - - bool ThemeLoaded { get; } - SThemeSongMenu GetTheme(); } } \ No newline at end of file diff --git a/VocaluxeLib/PartyModes/CPartyMode.cs b/VocaluxeLib/PartyModes/CPartyMode.cs index 139dce23..14192af7 100644 --- a/VocaluxeLib/PartyModes/CPartyMode.cs +++ b/VocaluxeLib/PartyModes/CPartyMode.cs @@ -23,17 +23,22 @@ namespace VocaluxeLib.PartyModes public abstract class CPartyMode : IPartyMode { private readonly string _Folder; - public int ID { get; private set; } + private readonly int _ID; protected SScreenSongOptions _ScreenSongOptions = new SScreenSongOptions {Selection = new SSelectionOptions(), Sorting = new SSortingOptions()}; protected readonly Dictionary _Screens = new Dictionary(); protected CPartyMode(int id, string folder) { - ID = id; + _ID = id; _Folder = folder; } #region Implementation + public int ID + { + get { return _ID; } + } + public abstract bool Init(); public void LoadTheme() diff --git a/VocaluxeLib/PartyModes/CPartyModeNone.cs b/VocaluxeLib/PartyModes/CPartyModeNone.cs index 28a6082c..c3e3ea6a 100644 --- a/VocaluxeLib/PartyModes/CPartyModeNone.cs +++ b/VocaluxeLib/PartyModes/CPartyModeNone.cs @@ -23,8 +23,7 @@ namespace VocaluxeLib.PartyModes public class CPartyModeNone : CPartyMode { //just a dummy for normal game mode - public CPartyModeNone(int id, string folder) - : base(id, folder) + public CPartyModeNone(int id, string folder) : base(id, folder) { _ScreenSongOptions.Selection.RandomOnly = false; _ScreenSongOptions.Selection.PartyMode = false;