using Microsoft.Xna.Framework; using System; using System.Collections.Generic; using System.Xml.Linq; namespace Barotrauma { public class GUIComponentStyle { public readonly Vector4 Padding; public readonly Color Color; public readonly Color textColor; public readonly Color HoverColor; public readonly Color SelectedColor; public readonly Color PressedColor; public readonly Color OutlineColor; public readonly Dictionary> Sprites; public Dictionary ChildStyles; public GUIComponentStyle(XElement element) { Sprites = new Dictionary>(); foreach (GUIComponent.ComponentState state in Enum.GetValues(typeof(GUIComponent.ComponentState))) { Sprites[state] = new List(); } ChildStyles = new Dictionary(); Padding = element.GetAttributeVector4("padding", Vector4.Zero); Color = element.GetAttributeColor("color", Color.Transparent); textColor = element.GetAttributeColor("textcolor", Color.Black); HoverColor = element.GetAttributeColor("hovercolor", Color.Transparent); SelectedColor = element.GetAttributeColor("selectedcolor", Color.Transparent); PressedColor = element.GetAttributeColor("pressedcolor", Color.Transparent); OutlineColor = element.GetAttributeColor("outlinecolor", Color.Transparent); foreach (XElement subElement in element.Elements()) { switch (subElement.Name.ToString().ToLowerInvariant()) { case "sprite": UISprite newSprite = new UISprite(subElement); GUIComponent.ComponentState spriteState = GUIComponent.ComponentState.None; if (subElement.Attribute("state") != null) { string stateStr = subElement.GetAttributeString("state", "None"); Enum.TryParse(stateStr, out spriteState); Sprites[spriteState].Add(newSprite); } else { foreach (GUIComponent.ComponentState state in Enum.GetValues(typeof(GUIComponent.ComponentState))) { Sprites[state].Add(newSprite); } } break; default: ChildStyles.Add(subElement.Name.ToString().ToLowerInvariant(), new GUIComponentStyle(subElement)); break; } } } } }