From 8109d77ab1168c1d34d262603e8773f41fba71ff Mon Sep 17 00:00:00 2001 From: Flamefire Date: Thu, 16 Oct 2014 23:19:29 +0200 Subject: [PATCH] Fix wrong theme stuff --- .../Screens/PartyScreenChallengeMain.xml | 2050 ----------------- .../Screens/PartyScreenChallengeNames.xml | 8 +- .../PartyScreenChallengeMedleyMain.xml | 2050 ----------------- .../Screens/PartyScreenTicTacToeMain.xml | 725 ------ Output/Themes/Ambient/Screens/ScreenSong.xml | 63 +- Vocaluxe/Base/ThemeSystem/CSkin.cs | 2 - VocaluxeLib/Menu/CButton.cs | 9 +- VocaluxeLib/Menu/CMenu.cs | 2 +- VocaluxeLib/Menu/CSelectSlide.cs | 23 +- VocaluxeLib/Structs.cs | 64 +- 10 files changed, 118 insertions(+), 4878 deletions(-) diff --git a/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeMain.xml b/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeMain.xml index e623da57..0a93a7c7 100644 --- a/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeMain.xml +++ b/Output/PartyModes/Challenge/Themes/Default/Screens/PartyScreenChallengeMain.xml @@ -50,138 +50,6 @@ - - - - 0 - 0 - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - 0 - - - - - - - 0 - 0 - 0 - 0 - 0 - - - @@ -409,1924 +277,6 @@ TR_SCREENMAIN_NEXT_PLAYER - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - 1. - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_PLAYERNAME - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_NUMPLAYED - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_WON - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_SINGPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_GAMEPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - 2. - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_PLAYERNAME - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_NUMPLAYED - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_WON - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_SINGPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_GAMEPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - 3. - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_PLAYERNAME - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_NUMPLAYED - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_WON - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_SINGPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_GAMEPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - 4. - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_PLAYERNAME - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_NUMPLAYED - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_WON - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_SINGPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_GAMEPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - 5. - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_PLAYERNAME - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_NUMPLAYED - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_WON - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_SINGPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_GAMEPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - 6. - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_PLAYERNAME - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_NUMPLAYED - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_WON - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_SINGPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_GAMEPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - 7. - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_PLAYERNAME - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_NUMPLAYED - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_WON - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_SINGPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_GAMEPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - 8. - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_PLAYERNAME - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_NUMPLAYED - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_WON - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_SINGPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_GAMEPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - 9. - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_PLAYERNAME - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_NUMPLAYED - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_WON - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_SINGPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_GAMEPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - 10. - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_PLAYERNAME - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_NUMPLAYED - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_WON - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_SINGPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - TR_SCREENMAIN_TABLE_GAMEPOINTS - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - 0 - 0 - 0 - 0 - 0 - - - Left - Top - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Output/Themes/Ambient/Screens/ScreenSong.xml b/Output/Themes/Ambient/Screens/ScreenSong.xml index bf003565..624fb740 100644 --- a/Output/Themes/Ambient/Screens/ScreenSong.xml +++ b/Output/Themes/Ambient/Screens/ScreenSong.xml @@ -46,7 +46,7 @@ SongMenuBG - + 40 40 @@ -1354,40 +1354,47 @@ + Button + SelectSlideArrowLeft + SelectSlideArrowRight + + SelectSlideArrowLeft + SelectSlideArrowRight + 0 - 0 - 0 - 0 - 0 + 28 + 293 + 24 + -1.01 - 0 - 0 - 0 - 0 - 0 + 54 + 30 + 20 + 20 + -1.02 - 0 - 0 - 0 - 0 - 0 + 271 + 30 + 20 + 20 + -1.02 - - - - - - - - 0 - 0 - 0 - 0 - Normal - 0 + + + + + + + + 22.00 + 25.00 + 230.00 + Outline + Bold + 1 diff --git a/Vocaluxe/Base/ThemeSystem/CSkin.cs b/Vocaluxe/Base/ThemeSystem/CSkin.cs index 53e43840..5cde7d92 100644 --- a/Vocaluxe/Base/ThemeSystem/CSkin.cs +++ b/Vocaluxe/Base/ThemeSystem/CSkin.cs @@ -174,7 +174,6 @@ namespace Vocaluxe.Base.ThemeSystem public virtual CVideoStream GetVideo(string videoName, bool loop) { - Debug.Assert(_Parent.Name != "Default" || _RequiredVideos.Contains(videoName)); CVideoSkinElement sk; if (_Videos.TryGetValue(videoName, out sk)) { @@ -190,7 +189,6 @@ namespace Vocaluxe.Base.ThemeSystem public virtual CTextureRef GetTexture(string name) { - Debug.Assert(_Parent.Name != "Default" || _RequiredTextures.Contains(name)); CTextureRef texture; _Textures.TryGetValue(name, out texture); return texture; diff --git a/VocaluxeLib/Menu/CButton.cs b/VocaluxeLib/Menu/CButton.cs index 0b8fe627..2f2f52f1 100644 --- a/VocaluxeLib/Menu/CButton.cs +++ b/VocaluxeLib/Menu/CButton.cs @@ -70,7 +70,8 @@ namespace VocaluxeLib.Menu set { Text.EditMode = value; - _SelText.EditMode = value; + if (_SelText != null) + _SelText.EditMode = value; } } @@ -123,7 +124,7 @@ namespace VocaluxeLib.Menu _Theme = theme; Text = new CText(_Theme.Text, _PartyModeID, buttonText); - _SelText = new CText(_Theme.SText, _PartyModeID, buttonText); + _SelText = _Theme.STextSpecified ? new CText(_Theme.SText, _PartyModeID, buttonText) : null; Selected = false; EditMode = false; @@ -147,7 +148,7 @@ namespace VocaluxeLib.Menu SelTexture = button.SelTexture; Text = new CText(button.Text); - _SelText = new CText(button._SelText); + _SelText = _SelText == null ? null : new CText(button._SelText); Selected = false; EditMode = false; _Enabled = button._Enabled; @@ -282,7 +283,7 @@ namespace VocaluxeLib.Menu else Text.DrawRelative(Rect.X, Rect.Y); } - else if (_Theme.STextSpecified) + else { texture = SelTexture ?? CBase.Themes.GetSkinTexture(_Theme.SkinSelected, _PartyModeID); diff --git a/VocaluxeLib/Menu/CMenu.cs b/VocaluxeLib/Menu/CMenu.cs index d0514e68..1c0f10a5 100644 --- a/VocaluxeLib/Menu/CMenu.cs +++ b/VocaluxeLib/Menu/CMenu.cs @@ -385,7 +385,7 @@ namespace VocaluxeLib.Menu try { - TextWriter textWriter = new StreamWriter(@Path.Combine(ThemePath, ThemeName + ".xml")); + TextWriter textWriter = new StreamWriter(Path.Combine(ThemePath, ThemeName + ".xml")); XmlSerializer serializer = new XmlSerializer(typeof(STheme)); serializer.Serialize(textWriter, Theme); diff --git a/VocaluxeLib/Menu/CSelectSlide.cs b/VocaluxeLib/Menu/CSelectSlide.cs index 3772aa95..c2f3a1fc 100644 --- a/VocaluxeLib/Menu/CSelectSlide.cs +++ b/VocaluxeLib/Menu/CSelectSlide.cs @@ -323,10 +323,18 @@ namespace VocaluxeLib.Menu _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/HA", ref HighlightColor.A); } - _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 + "/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); + if (xmlReader.GetValue(item + "/ArrowColor", out _Theme.ArrowColor.Name, String.Empty)) _ThemeLoaded &= _Theme.ArrowColor.Get(_PartyModeID, out ColorArrow); else @@ -366,6 +374,11 @@ namespace VocaluxeLib.Menu _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextSB", ref SelTextColor.B); _ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/TextSA", ref SelTextColor.A); } + _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.GetValue(item + "/TextFont", out _Theme.TextFont, "Normal"); _ThemeLoaded &= xmlReader.TryGetEnumValue(item + "/TextStyle", ref _Theme.TextStyle); @@ -378,6 +391,8 @@ namespace VocaluxeLib.Menu _Theme.ArrowSColor.Color = SelColorArrow; _Theme.Color.Color = Color; _Theme.HColor.Color = HighlightColor; + _Theme.RectArrowLeft = RectArrowLeft; + _Theme.RectArrowRight = RectArrowRight; _Theme.SColor.Color = SelColor; _Theme.TextColor.Color = TextColor; _Theme.TextSColor.Color = SelTextColor; diff --git a/VocaluxeLib/Structs.cs b/VocaluxeLib/Structs.cs index b0064232..586abd6a 100644 --- a/VocaluxeLib/Structs.cs +++ b/VocaluxeLib/Structs.cs @@ -102,27 +102,71 @@ namespace VocaluxeLib [XmlRoot("Color")] public struct SThemeColor { - public SColorF Color; - public string Name; + [XmlAttribute] public string Name; + public float? R; + public float? G; + public float? B; + public float? A; //Needed for serialization - public bool ColorSpecified - { - get { return String.IsNullOrEmpty(Name); } - } public bool NameSpecified { get { return !String.IsNullOrEmpty(Name); } } + public bool RSpecified + { + get { return R.HasValue; } + } + public bool GSpecified + { + get { return G.HasValue; } + } + public bool BSpecified + { + get { return B.HasValue; } + } + public bool ASpecified + { + get { return A.HasValue; } + } + + /// + /// Use only for old code! Remove when removing old LoadTheme() + /// + [XmlIgnore] + public SColorF Color + { + set + { + if (NameSpecified) + return; + R = value.R; + G = value.G; + B = value.B; + A = value.A; + } + } public bool Get(int partyModeId, out SColorF color) { - if (String.IsNullOrEmpty(Name)) + bool ok; + if (!String.IsNullOrEmpty(Name)) + ok = CBase.Themes.GetColor(Name, partyModeId, out color); + else { - color = Color; - return true; + Debug.Assert(R.HasValue && G.HasValue && B.HasValue && A.HasValue); + ok = true; + color = new SColorF(1, 1, 1, 1); } - return CBase.Themes.GetColor(Name, partyModeId, out color); + if (R.HasValue) + color.R = R.Value; + if (G.HasValue) + color.G = G.Value; + if (B.HasValue) + color.B = B.Value; + if (A.HasValue) + color.A = A.Value; + return ok; } }