From b475ad8bea8f94b92c2b29fd240ec85225da7478 Mon Sep 17 00:00:00 2001 From: ntr Date: Mon, 21 Aug 2023 21:42:08 +1000 Subject: [PATCH] interface icons --- Assets/Images/accelerate.svg | 213 +++++++++++++ Assets/Images/decelerate.svg | 213 +++++++++++++ Assets/Images/shield.svg | 549 +++++++++++++++++++++++++++++++++ Assets/Images/strafe.svg | 390 +++++++++++++++++++++++ Assets/Src/UI/InterfaceIcon.cs | 55 ++++ 5 files changed, 1420 insertions(+) create mode 100644 Assets/Images/accelerate.svg create mode 100644 Assets/Images/decelerate.svg create mode 100644 Assets/Images/shield.svg create mode 100644 Assets/Images/strafe.svg create mode 100644 Assets/Src/UI/InterfaceIcon.cs diff --git a/Assets/Images/accelerate.svg b/Assets/Images/accelerate.svg new file mode 100644 index 0000000..b260706 --- /dev/null +++ b/Assets/Images/accelerate.svg @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Assets/Images/decelerate.svg b/Assets/Images/decelerate.svg new file mode 100644 index 0000000..9e28e2b --- /dev/null +++ b/Assets/Images/decelerate.svg @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Assets/Images/shield.svg b/Assets/Images/shield.svg new file mode 100644 index 0000000..4a231bd --- /dev/null +++ b/Assets/Images/shield.svg @@ -0,0 +1,549 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Assets/Images/strafe.svg b/Assets/Images/strafe.svg new file mode 100644 index 0000000..447371b --- /dev/null +++ b/Assets/Images/strafe.svg @@ -0,0 +1,390 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Assets/Src/UI/InterfaceIcon.cs b/Assets/Src/UI/InterfaceIcon.cs new file mode 100644 index 0000000..c73e4e9 --- /dev/null +++ b/Assets/Src/UI/InterfaceIcon.cs @@ -0,0 +1,55 @@ +class InterfaceIcon : VisualElement { + public enum Icon { + // Outputs + Acceleration, + Deceleration, + Strafing, + Shield, + + Crosshair, + + Logo, + } + + public new class UxmlFactory : UxmlFactory {} + public new class UxmlTraits : VisualElement.UxmlTraits { + readonly UxmlEnumAttributeDescription _iconAttribute = new() { name = "icon" }; + + public override void Init(VisualElement ve, IUxmlAttributes bag, CreationContext cc) { + base.Init(ve, bag, cc); + var InterfaceIcon = (InterfaceIcon)ve; + InterfaceIcon.icon = _iconAttribute.GetValueFromBag(bag, cc); + } + } + + static readonly Dictionary _iconGlyphMap = new() { + { Icon.CandyCane, '\uf786' }, + { Icon.Sleigh, '\uf7cc' }, + { Icon.Snowflake, '\uf2dc' }, + }; + + public Icon icon { + get => _icon; + set { + _icon = value; + _iconLabel.text = _iconGlyphMap[value].ToString(); + } + } + + Icon _icon; + Label _iconLabel; + + public InterfaceIcon() : this(Icon.CandyCane) {} + + public InterfaceIcon(Icon icon) { + _iconLabel = new Label { + style = { + unityFont = Resources.Load("fontawesome-solid"), + unityFontDefinition = StyleKeyword.None, + }, + }; + + Add(_iconLabel); + this.icon = icon; + } +} \ No newline at end of file