(e42047dc1) Tester's build, January 30th 2020
This commit is contained in:
@@ -5,28 +5,66 @@ using System.Xml.Linq;
|
||||
|
||||
namespace Barotrauma
|
||||
{
|
||||
public enum TransitionMode
|
||||
{
|
||||
Linear,
|
||||
Smooth,
|
||||
Smoother,
|
||||
EaseIn,
|
||||
EaseOut,
|
||||
Exponential
|
||||
}
|
||||
|
||||
public enum SpriteFallBackState
|
||||
{
|
||||
None,
|
||||
Hover,
|
||||
Pressed,
|
||||
Selected,
|
||||
HoverSelected,
|
||||
Toggle
|
||||
}
|
||||
|
||||
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 DisabledColor;
|
||||
|
||||
public readonly Color TextColor;
|
||||
public readonly Color HoverTextColor;
|
||||
public readonly Color SelectedTextColor;
|
||||
public readonly Color DisabledTextColor;
|
||||
|
||||
public readonly float SpriteCrossFadeTime;
|
||||
public readonly float ColorCrossFadeTime;
|
||||
public readonly TransitionMode TransitionMode;
|
||||
|
||||
public readonly string Font;
|
||||
public readonly bool ForceUpperCase;
|
||||
|
||||
public readonly Color OutlineColor;
|
||||
|
||||
|
||||
public readonly XElement Element;
|
||||
|
||||
public readonly Dictionary<GUIComponent.ComponentState, List<UISprite>> Sprites;
|
||||
|
||||
public SpriteFallBackState FallBackState;
|
||||
|
||||
public Dictionary<string, GUIComponentStyle> ChildStyles;
|
||||
|
||||
public GUIComponentStyle(XElement element)
|
||||
public readonly GUIStyle Style;
|
||||
|
||||
public int? Width { get; private set; }
|
||||
public int? Height { get; private set; }
|
||||
|
||||
public GUIComponentStyle(XElement element, GUIStyle style)
|
||||
{
|
||||
Style = style;
|
||||
Element = element;
|
||||
|
||||
Sprites = new Dictionary<GUIComponent.ComponentState, List<UISprite>>();
|
||||
@@ -38,14 +76,33 @@ namespace Barotrauma
|
||||
ChildStyles = new Dictionary<string, GUIComponentStyle>();
|
||||
|
||||
Padding = element.GetAttributeVector4("padding", Vector4.Zero);
|
||||
|
||||
|
||||
Color = element.GetAttributeColor("color", Color.Transparent);
|
||||
textColor = element.GetAttributeColor("textcolor", Color.Black);
|
||||
HoverColor = element.GetAttributeColor("hovercolor", Color);
|
||||
SelectedColor = element.GetAttributeColor("selectedcolor", Color);
|
||||
DisabledColor = element.GetAttributeColor("disabledcolor", Color);
|
||||
PressedColor = element.GetAttributeColor("pressedcolor", Color);
|
||||
OutlineColor = element.GetAttributeColor("outlinecolor", Color.Transparent);
|
||||
|
||||
TextColor = element.GetAttributeColor("textcolor", Color.Black);
|
||||
HoverTextColor = element.GetAttributeColor("hovertextcolor", TextColor);
|
||||
DisabledTextColor = element.GetAttributeColor("disabledtextcolor", TextColor);
|
||||
SelectedTextColor = element.GetAttributeColor("selectedtextcolor", TextColor);
|
||||
SpriteCrossFadeTime = element.GetAttributeFloat("spritefadetime", SpriteCrossFadeTime);
|
||||
ColorCrossFadeTime = element.GetAttributeFloat("colorfadetime", ColorCrossFadeTime);
|
||||
|
||||
if (Enum.TryParse(element.GetAttributeString("colortransition", string.Empty), ignoreCase: true, out TransitionMode transition))
|
||||
{
|
||||
TransitionMode = transition;
|
||||
}
|
||||
if (Enum.TryParse(element.GetAttributeString("fallbackstate", GUIComponent.ComponentState.None.ToString()), ignoreCase: true, out SpriteFallBackState s))
|
||||
{
|
||||
FallBackState = s;
|
||||
}
|
||||
|
||||
Font = element.GetAttributeString("font", "");
|
||||
ForceUpperCase = element.GetAttributeBool("forceuppercase", false);
|
||||
|
||||
foreach (XElement subElement in element.Elements())
|
||||
{
|
||||
switch (subElement.Name.ToString().ToLowerInvariant())
|
||||
@@ -59,6 +116,11 @@ namespace Barotrauma
|
||||
string stateStr = subElement.GetAttributeString("state", "None");
|
||||
Enum.TryParse(stateStr, out spriteState);
|
||||
Sprites[spriteState].Add(newSprite);
|
||||
//use the same sprite for Hover and HoverSelected if latter is not specified
|
||||
if (spriteState == GUIComponent.ComponentState.HoverSelected && !Sprites.ContainsKey(GUIComponent.ComponentState.HoverSelected))
|
||||
{
|
||||
Sprites[GUIComponent.ComponentState.HoverSelected].Add(newSprite);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -68,11 +130,34 @@ namespace Barotrauma
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "size":
|
||||
break;
|
||||
default:
|
||||
ChildStyles.Add(subElement.Name.ToString().ToLowerInvariant(), new GUIComponentStyle(subElement));
|
||||
ChildStyles.Add(subElement.Name.ToString().ToLowerInvariant(), new GUIComponentStyle(subElement, style));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
GetSize(element);
|
||||
}
|
||||
|
||||
public void GetSize(XElement element)
|
||||
{
|
||||
Point size = new Point(0, 0);
|
||||
foreach (XElement subElement in element.Elements())
|
||||
{
|
||||
if (subElement.Name.ToString().ToLowerInvariant() != "size") { continue; }
|
||||
Point maxResolution = subElement.GetAttributePoint("maxresolution", new Point(int.MaxValue, int.MaxValue));
|
||||
if (GameMain.GraphicsWidth <= maxResolution.X && GameMain.GraphicsHeight <= maxResolution.Y)
|
||||
{
|
||||
size = new Point(
|
||||
subElement.GetAttributeInt("width", 0),
|
||||
subElement.GetAttributeInt("height", 0));
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (size.X > 0) { Width = size.X; }
|
||||
if (size.Y > 0) { Height = size.Y; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user