diff --git a/Content.Client/GameObjects/Components/HUD/Inventory/HumanInventoryInterfaceController.cs b/Content.Client/GameObjects/Components/HUD/Inventory/HumanInventoryInterfaceController.cs index e7336d73f3..a64bdbfffd 100644 --- a/Content.Client/GameObjects/Components/HUD/Inventory/HumanInventoryInterfaceController.cs +++ b/Content.Client/GameObjects/Components/HUD/Inventory/HumanInventoryInterfaceController.cs @@ -1,16 +1,22 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; using Content.Client.UserInterface; using Content.Client.Utility; +using Content.Shared; +using Content.Shared.Prototypes.HUD; using JetBrains.Annotations; using Robust.Client.ResourceManagement; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.CustomControls; +using Robust.Shared.Configuration; using Robust.Shared.GameObjects; using Robust.Shared.IoC; using Robust.Shared.Localization; +using Robust.Shared.Log; using Robust.Shared.Maths; +using Robust.Shared.Prototypes; using static Content.Shared.GameObjects.Components.Inventory.EquipmentSlotDefines; namespace Content.Client.GameObjects.Components.HUD.Inventory @@ -20,7 +26,10 @@ namespace Content.Client.GameObjects.Components.HUD.Inventory public class HumanInventoryInterfaceController : InventoryInterfaceController { [Dependency] private readonly IResourceCache _resourceCache = default!; + [Dependency] private readonly IGameHud _gameHud = default!; [Dependency] private readonly IItemSlotManager _itemSlotManager = default!; + [Dependency] private readonly INetConfigurationManager _configManager = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; private readonly Dictionary> _inventoryButtons = new(); @@ -51,8 +60,9 @@ namespace Content.Client.GameObjects.Components.HUD.Inventory public override void Initialize() { base.Initialize(); + _configManager.OnValueChanged(CCVars.HudTheme, UpdateHudTheme, invokeImmediately: true); - _window = new HumanInventoryWindow(_resourceCache); + _window = new HumanInventoryWindow(_gameHud); _window.OnClose += () => GameHud.InventoryButtonDown = false; foreach (var (slot, button) in _window.Buttons) { @@ -64,9 +74,9 @@ namespace Content.Client.GameObjects.Components.HUD.Inventory void AddButton(out ItemSlotButton variable, Slots slot, string textureName) { - var texture = _resourceCache.GetTexture($"/Textures/Interface/Inventory/{textureName}.png"); - var storageTexture = _resourceCache.GetTexture("/Textures/Interface/Inventory/back.png"); - variable = new ItemSlotButton(texture, storageTexture) + var texture = _gameHud.GetHudTexture($"{textureName}.png"); + var storageTexture = _gameHud.GetHudTexture("back.png"); + variable = new ItemSlotButton(texture, storageTexture, textureName) { OnPressed = (e) => AddToInventory(e, slot), OnStoragePressed = (e) => OpenStorage(e, slot), @@ -247,6 +257,23 @@ namespace Content.Client.GameObjects.Components.HUD.Inventory } } + public void UpdateHudTheme(int idx) + { + if (!_gameHud.ValidateHudTheme(idx)) + { + return; + } + + foreach (var (_, list) in _inventoryButtons) + { + foreach (var button in list) + { + button.Button.Texture = _gameHud.GetHudTexture($"{button.TextureName}.png"); + button.StorageButton.TextureNormal = _gameHud.GetHudTexture("back.png"); + } + } + } + private class HumanInventoryWindow : SS14Window { private const int ButtonSize = 64; @@ -254,8 +281,9 @@ namespace Content.Client.GameObjects.Components.HUD.Inventory private const int RightSeparation = 2; public IReadOnlyDictionary Buttons { get; } + [Dependency] private readonly IGameHud _gameHud = default!; - public HumanInventoryWindow(IResourceCache resourceCache) + public HumanInventoryWindow(IGameHud gameHud) { Title = Loc.GetString("Your Inventory"); Resizable = false; @@ -271,9 +299,9 @@ namespace Content.Client.GameObjects.Components.HUD.Inventory void AddButton(Slots slot, string textureName, Vector2 position) { - var texture = resourceCache.GetTexture($"/Textures/Interface/Inventory/{textureName}.png"); - var storageTexture = resourceCache.GetTexture("/Textures/Interface/Inventory/back.png"); - var button = new ItemSlotButton(texture, storageTexture); + var texture = gameHud.GetHudTexture($"{textureName}.png"); + var storageTexture = gameHud.GetHudTexture("back.png"); + var button = new ItemSlotButton(texture, storageTexture, textureName); LayoutContainer.SetPosition(button, position); diff --git a/Content.Client/UserInterface/GameHud.cs b/Content.Client/UserInterface/GameHud.cs index bba6f20f47..f377747cfb 100644 --- a/Content.Client/UserInterface/GameHud.cs +++ b/Content.Client/UserInterface/GameHud.cs @@ -1,18 +1,24 @@ -using System; +using System; using System.Diagnostics.CodeAnalysis; +using System.Linq; using Content.Client.UserInterface.Stylesheets; using Content.Client.Utility; +using Content.Shared; using Content.Shared.GameObjects.Components.Mobs; using Content.Shared.Input; +using Content.Shared.Prototypes.HUD; using Robust.Client.Graphics; using Robust.Client.Input; using Robust.Client.ResourceManagement; using Robust.Client.UserInterface.Controls; +using Robust.Shared.Configuration; using Robust.Shared.Input; using Robust.Shared.Input.Binding; using Robust.Shared.IoC; using Robust.Shared.Localization; +using Robust.Shared.Log; using Robust.Shared.Maths; +using Robust.Shared.Prototypes; using Robust.Shared.Utility; using static Robust.Client.Input.Keyboard.Key; using Control = Robust.Client.UserInterface.Control; @@ -74,6 +80,10 @@ namespace Content.Client.UserInterface void AddTopNotification(TopNotification notification); + Texture GetHudTexture(string path); + + bool ValidateHudTheme(int idx); + // Init logic. void Initialize(); } @@ -95,7 +105,9 @@ namespace Content.Client.UserInterface private VBoxContainer _topNotificationContainer = default!; [Dependency] private readonly IResourceCache _resourceCache = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IInputManager _inputManager = default!; + [Dependency] private readonly INetConfigurationManager _configManager = default!; public Control HandsContainer { get; private set; } = default!; public Control SuspicionContainer { get; private set; } = default!; @@ -121,6 +133,38 @@ namespace Content.Client.UserInterface _topNotificationContainer.AddChild(notification); } + public bool ValidateHudTheme(int idx) + { + if (!_prototypeManager.TryIndex(idx.ToString(), out HudThemePrototype? _)) + { + Logger.ErrorS("hud", "invalid HUD theme id {0}, using different theme", + idx); + var proto = _prototypeManager.EnumeratePrototypes().FirstOrDefault(); + if (proto == null) + { + throw new NullReferenceException("No valid HUD prototypes!"); + } + var id = int.Parse(proto.ID); + _configManager.SetCVar(CCVars.HudTheme, id); + return false; + } + return true; + } + + public Texture GetHudTexture(string path) + { + var id = _configManager.GetCVar("hud.theme"); + var dir = string.Empty; + if (!_prototypeManager.TryIndex(id.ToString(), out HudThemePrototype? proto)) + { + throw new ArgumentOutOfRangeException(); + } + dir = proto.Path; + + var resourcePath = (new ResourcePath("/Textures/Interface/Inventory") / dir) / path; + return _resourceCache.GetTexture(resourcePath); + } + public void Initialize() { RootControl = new LC { Name = "AAAAAAAAAAAAAAAAAAAAAA"}; diff --git a/Content.Client/UserInterface/HandButton.cs b/Content.Client/UserInterface/HandButton.cs index 224ff049d1..1664741b1b 100644 --- a/Content.Client/UserInterface/HandButton.cs +++ b/Content.Client/UserInterface/HandButton.cs @@ -9,7 +9,7 @@ namespace Content.Client.UserInterface private bool _activeHand; private bool _highlighted; - public HandButton(Texture texture, Texture storageTexture, Texture blockedTexture, HandLocation location) : base(texture, storageTexture) + public HandButton(Texture texture, Texture storageTexture, string textureName, Texture blockedTexture, HandLocation location) : base(texture, storageTexture, textureName) { Location = location; diff --git a/Content.Client/UserInterface/HandsGui.cs b/Content.Client/UserInterface/HandsGui.cs index 50a18c558a..7c3e991a59 100644 --- a/Content.Client/UserInterface/HandsGui.cs +++ b/Content.Client/UserInterface/HandsGui.cs @@ -3,6 +3,7 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Client.GameObjects.Components.Items; using Content.Client.Utility; +using Content.Shared; using Content.Shared.GameObjects.Components.Items; using Content.Shared.Input; using Robust.Client.Graphics; @@ -10,6 +11,7 @@ using Robust.Client.Player; using Robust.Client.ResourceManagement; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; +using Robust.Shared.Configuration; using Robust.Shared.Input; using Robust.Shared.IoC; using Robust.Shared.Timing; @@ -21,10 +23,12 @@ namespace Content.Client.UserInterface [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IResourceCache _resourceCache = default!; [Dependency] private readonly IItemSlotManager _itemSlotManager = default!; + [Dependency] private readonly IGameHud _gameHud = default!; + [Dependency] private readonly INetConfigurationManager _configManager = default!; - private readonly Texture _leftHandTexture; - private readonly Texture _middleHandTexture; - private readonly Texture _rightHandTexture; + private Texture _leftHandTexture; + private Texture _middleHandTexture; + private Texture _rightHandTexture; private readonly ItemStatusPanel _topPanel; @@ -36,6 +40,8 @@ namespace Content.Client.UserInterface { IoCManager.InjectDependencies(this); + _configManager.OnValueChanged(CCVars.HudTheme, UpdateHudTheme, invokeImmediately: true); + AddChild(_guiContainer = new HBoxContainer { SeparationOverride = 0, @@ -52,9 +58,21 @@ namespace Content.Client.UserInterface }), } }); - _leftHandTexture = _resourceCache.GetTexture("/Textures/Interface/Inventory/hand_l.png"); - _middleHandTexture = _resourceCache.GetTexture("/Textures/Interface/Inventory/hand_l.png"); - _rightHandTexture = _resourceCache.GetTexture("/Textures/Interface/Inventory/hand_r.png"); + _leftHandTexture = _gameHud.GetHudTexture("hand_l.png"); + _middleHandTexture = _gameHud.GetHudTexture("hand_l.png"); + _rightHandTexture = _gameHud.GetHudTexture("hand_r.png"); + } + + private void UpdateHudTheme(int idx) + { + if (!_gameHud.ValidateHudTheme(idx)) + { + return; + } + _leftHandTexture = _gameHud.GetHudTexture("hand_l.png"); + _middleHandTexture = _gameHud.GetHudTexture("hand_l.png"); + _rightHandTexture = _gameHud.GetHudTexture("hand_r.png"); + UpdateHandIcons(); } private Texture HandTexture(HandLocation location) @@ -82,10 +100,15 @@ namespace Content.Client.UserInterface /// private void AddHand(Hand hand, HandLocation buttonLocation) { + var textureName = "hand_l.png"; + if(buttonLocation == HandLocation.Right) + { + textureName = "hand_r.png"; + } var buttonTexture = HandTexture(buttonLocation); - var storageTexture = _resourceCache.GetTexture("/Textures/Interface/Inventory/back.png"); + var storageTexture = _gameHud.GetHudTexture("back.png"); var blockedTexture = _resourceCache.GetTexture("/Textures/Interface/Inventory/blocked.png"); - var button = new HandButton(buttonTexture, storageTexture, blockedTexture, buttonLocation); + var button = new HandButton(buttonTexture, storageTexture, textureName, blockedTexture, buttonLocation); var slot = hand.Name; button.OnPressed += args => HandKeyBindDown(args, slot); diff --git a/Content.Client/UserInterface/ItemSlotButton.cs b/Content.Client/UserInterface/ItemSlotButton.cs index 4985e8f8f3..44ba70b89d 100644 --- a/Content.Client/UserInterface/ItemSlotButton.cs +++ b/Content.Client/UserInterface/ItemSlotButton.cs @@ -15,7 +15,7 @@ namespace Content.Client.UserInterface public TextureRect Button { get; } public SpriteView SpriteView { get; } public SpriteView HoverSpriteView { get; } - public BaseButton StorageButton { get; } + public TextureButton StorageButton { get; } public CooldownGraphic CooldownDisplay { get; } public Action? OnPressed { get; set; } @@ -27,10 +27,14 @@ namespace Content.Client.UserInterface private readonly PanelContainer _highlightRect; - public ItemSlotButton(Texture texture, Texture storageTexture) + public string TextureName { get; set; } + + public ItemSlotButton(Texture texture, Texture storageTexture, string textureName) { MinSize = (64, 64); + TextureName = textureName; + AddChild(Button = new TextureRect { Texture = texture, diff --git a/Content.Client/UserInterface/OptionsMenu.Graphics.cs b/Content.Client/UserInterface/OptionsMenu.Graphics.cs index 124debbd78..6c4b690f0a 100644 --- a/Content.Client/UserInterface/OptionsMenu.Graphics.cs +++ b/Content.Client/UserInterface/OptionsMenu.Graphics.cs @@ -1,4 +1,8 @@ -using Robust.Client.Graphics; +using System; +using Content.Client.GameObjects.Components.HUD.Inventory; +using Content.Shared; +using Content.Shared.Prototypes.HUD; +using Robust.Client.Graphics; using Robust.Client.ResourceManagement; using Robust.Client.UserInterface; using Robust.Client.UserInterface.Controls; @@ -7,6 +11,7 @@ using Robust.Shared.Configuration; using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Maths; +using Robust.Shared.Prototypes; namespace Content.Client.UserInterface { @@ -26,16 +31,19 @@ namespace Content.Client.UserInterface }; private readonly IConfigurationManager _cfg; + private readonly IPrototypeManager _prototypeManager; private readonly Button ApplyButton; private readonly CheckBox VSyncCheckBox; private readonly CheckBox FullscreenCheckBox; private readonly OptionButton LightingPresetOption; private readonly OptionButton _uiScaleOption; + private readonly OptionButton _hudThemeOption; - public GraphicsControl(IConfigurationManager cfg) + public GraphicsControl(IConfigurationManager cfg, IPrototypeManager proMan) { _cfg = cfg; + _prototypeManager = proMan; var vBox = new VBoxContainer(); var contents = new VBoxContainer @@ -75,10 +83,9 @@ namespace Content.Client.UserInterface HorizontalAlignment = HAlignment.Right }; - var resourceCache = IoCManager.Resolve(); - _uiScaleOption = new OptionButton(); - _uiScaleOption.AddItem(Loc.GetString("ui-options-scale-auto", ("scale", UserInterfaceManager.DefaultUIScale))); + _uiScaleOption.AddItem(Loc.GetString("ui-options-scale-auto", + ("scale", UserInterfaceManager.DefaultUIScale))); _uiScaleOption.AddItem(Loc.GetString("ui-options-scale-75")); _uiScaleOption.AddItem(Loc.GetString("ui-options-scale-100")); _uiScaleOption.AddItem(Loc.GetString("ui-options-scale-125")); @@ -97,6 +104,23 @@ namespace Content.Client.UserInterface } }); + _hudThemeOption = new OptionButton(); + foreach (var gear in _prototypeManager.EnumeratePrototypes()) + { + _hudThemeOption.AddItem(Loc.GetString(gear.Name)); + } + _hudThemeOption.OnItemSelected += OnHudThemeChanged; + + contents.AddChild(new HBoxContainer + { + Children = + { + new Label {Text = Loc.GetString("ui-options-hud-theme")}, + new Control {MinSize = (4, 0)}, + _hudThemeOption + } + }); + contents.AddChild(new Placeholder() { VerticalExpand = true, @@ -120,6 +144,7 @@ namespace Content.Client.UserInterface FullscreenCheckBox.Pressed = ConfigIsFullscreen; LightingPresetOption.SelectId(GetConfigLightingQuality()); _uiScaleOption.SelectId(GetConfigUIScalePreset(ConfigUIScale)); + _hudThemeOption.SelectId(_cfg.GetCVar(CCVars.HudTheme)); AddChild(vBox); } @@ -130,10 +155,21 @@ namespace Content.Client.UserInterface UpdateApplyButton(); } + private void OnHudThemeChanged(OptionButton.ItemSelectedEventArgs args) + { + _hudThemeOption.SelectId(args.Id); + UpdateApplyButton(); + } + private void OnApplyButtonPressed(BaseButton.ButtonEventArgs args) { _cfg.SetCVar(CVars.DisplayVSync, VSyncCheckBox.Pressed); SetConfigLightingQuality(LightingPresetOption.SelectedId); + if (_hudThemeOption.SelectedId != _cfg.GetCVar(CCVars.HudTheme)) // Don't unnecessarily redraw the HUD + { + _cfg.SetCVar(CCVars.HudTheme, _hudThemeOption.SelectedId); + } + _cfg.SetCVar(CVars.DisplayWindowMode, (int) (FullscreenCheckBox.Pressed ? WindowMode.Fullscreen : WindowMode.Windowed)); _cfg.SetCVar(CVars.DisplayUIScale, UIScaleOptions[_uiScaleOption.SelectedId]); @@ -157,8 +193,10 @@ namespace Content.Client.UserInterface var isVSyncSame = VSyncCheckBox.Pressed == _cfg.GetCVar(CVars.DisplayVSync); var isFullscreenSame = FullscreenCheckBox.Pressed == ConfigIsFullscreen; var isLightingQualitySame = LightingPresetOption.SelectedId == GetConfigLightingQuality(); + var isHudThemeSame = _hudThemeOption.SelectedId == _cfg.GetCVar(CCVars.HudTheme); var isUIScaleSame = MathHelper.CloseTo(UIScaleOptions[_uiScaleOption.SelectedId], ConfigUIScale); - ApplyButton.Disabled = isVSyncSame && isFullscreenSame && isLightingQualitySame && isUIScaleSame; + ApplyButton.Disabled = isVSyncSame && isFullscreenSame && isLightingQualitySame && isHudThemeSame && + isUIScaleSame; } private bool ConfigIsFullscreen => diff --git a/Content.Client/UserInterface/OptionsMenu.cs b/Content.Client/UserInterface/OptionsMenu.cs index 8bf5eee596..161faadbb0 100644 --- a/Content.Client/UserInterface/OptionsMenu.cs +++ b/Content.Client/UserInterface/OptionsMenu.cs @@ -5,12 +5,14 @@ using Robust.Shared.Configuration; using Robust.Shared.IoC; using Robust.Shared.Localization; using Robust.Shared.Maths; +using Robust.Shared.Prototypes; namespace Content.Client.UserInterface { public sealed partial class OptionsMenu : SS14Window { [Dependency] private readonly IConfigurationManager _configManager = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IClydeAudio _clydeAudio = default!; public OptionsMenu() @@ -28,7 +30,7 @@ namespace Content.Client.UserInterface { Children = { - (graphicsControl = new GraphicsControl(_configManager)), + (graphicsControl = new GraphicsControl(_configManager, _prototypeManager)), (rebindControl = new KeyRebindControl()), (audioControl = new AudioControl(_configManager, _clydeAudio)), } diff --git a/Content.Shared/CCVars.cs b/Content.Shared/CCVars.cs index ee83abb214..53d5395067 100644 --- a/Content.Shared/CCVars.cs +++ b/Content.Shared/CCVars.cs @@ -190,6 +190,13 @@ namespace Content.Shared public static readonly CVarDef LobbyMusicEnabled = CVarDef.Create("ambience.lobbymusicenabled", true, CVar.ARCHIVE | CVar.CLIENTONLY); + /* + * HUD + */ + + public static readonly CVarDef HudTheme = + CVarDef.Create("hud.theme", 0, CVar.ARCHIVE | CVar.CLIENTONLY); + /* * AI */ diff --git a/Content.Shared/Prototypes/HUD/HudThemePrototype.cs b/Content.Shared/Prototypes/HUD/HudThemePrototype.cs new file mode 100644 index 0000000000..4d55d4bd58 --- /dev/null +++ b/Content.Shared/Prototypes/HUD/HudThemePrototype.cs @@ -0,0 +1,18 @@ +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.Manager.Attributes; + +namespace Content.Shared.Prototypes.HUD +{ + [Prototype("hudTheme")] + public class HudThemePrototype : IPrototype + { + [field: DataField("name", required: true)] + public string Name { get; } = string.Empty; + + [field: DataField("id", required: true)] + public string ID { get; } = string.Empty; + + [field: DataField("path", required: true)] + public string Path { get; } = string.Empty; + } +} diff --git a/Resources/Locale/en-US/ui/options.ftl b/Resources/Locale/en-US/ui/options.ftl index f997e9e431..0a7b6c433e 100644 --- a/Resources/Locale/en-US/ui/options.ftl +++ b/Resources/Locale/en-US/ui/options.ftl @@ -32,6 +32,10 @@ ui-options-scale-125 = 125% ui-options-scale-150 = 150% ui-options-scale-175 = 175% ui-options-scale-200 = 200% +ui-options-hud-theme = HUD Theme: +ui-options-hud-theme-default = Default +ui-options-hud-theme-modernized = Modernized +ui-options-hud-theme-classic = Classic ui-options-placeholder-viewport = Viewport settings ## Controls menu diff --git a/Resources/Prototypes/hud.yml b/Resources/Prototypes/hud.yml new file mode 100644 index 0000000000..0443f9f54a --- /dev/null +++ b/Resources/Prototypes/hud.yml @@ -0,0 +1,14 @@ +- type: hudTheme + id: 0 + name: ui-options-hud-theme-default + path: Default + +- type: hudTheme + id: 1 + name: ui-options-hud-theme-modernized + path: Modernized + +- type: hudTheme + id: 2 + name: ui-options-hud-theme-classic + path: Classic diff --git a/Resources/Textures/Interface/Inventory/nostalgia-ui/back.png b/Resources/Textures/Interface/Inventory/Classic/back.png similarity index 100% rename from Resources/Textures/Interface/Inventory/nostalgia-ui/back.png rename to Resources/Textures/Interface/Inventory/Classic/back.png diff --git a/Resources/Textures/Interface/Inventory/nostalgia-ui/belt.png b/Resources/Textures/Interface/Inventory/Classic/belt.png similarity index 100% rename from Resources/Textures/Interface/Inventory/nostalgia-ui/belt.png rename to Resources/Textures/Interface/Inventory/Classic/belt.png diff --git a/Resources/Textures/Interface/Inventory/nostalgia-ui/ears.png b/Resources/Textures/Interface/Inventory/Classic/ears.png similarity index 100% rename from Resources/Textures/Interface/Inventory/nostalgia-ui/ears.png rename to Resources/Textures/Interface/Inventory/Classic/ears.png diff --git a/Resources/Textures/Interface/Inventory/nostalgia-ui/glasses.png b/Resources/Textures/Interface/Inventory/Classic/glasses.png similarity index 100% rename from Resources/Textures/Interface/Inventory/nostalgia-ui/glasses.png rename to Resources/Textures/Interface/Inventory/Classic/glasses.png diff --git a/Resources/Textures/Interface/Inventory/nostalgia-ui/gloves.png b/Resources/Textures/Interface/Inventory/Classic/gloves.png similarity index 100% rename from Resources/Textures/Interface/Inventory/nostalgia-ui/gloves.png rename to Resources/Textures/Interface/Inventory/Classic/gloves.png diff --git a/Resources/Textures/Interface/Inventory/nostalgia-ui/hand_l.png b/Resources/Textures/Interface/Inventory/Classic/hand_l.png similarity index 100% rename from Resources/Textures/Interface/Inventory/nostalgia-ui/hand_l.png rename to Resources/Textures/Interface/Inventory/Classic/hand_l.png diff --git a/Resources/Textures/Interface/Inventory/nostalgia-ui/hand_l_no_letter.png b/Resources/Textures/Interface/Inventory/Classic/hand_l_no_letter.png similarity index 100% rename from Resources/Textures/Interface/Inventory/nostalgia-ui/hand_l_no_letter.png rename to Resources/Textures/Interface/Inventory/Classic/hand_l_no_letter.png diff --git a/Resources/Textures/Interface/Inventory/nostalgia-ui/hand_r.png b/Resources/Textures/Interface/Inventory/Classic/hand_r.png similarity index 100% rename from Resources/Textures/Interface/Inventory/nostalgia-ui/hand_r.png rename to Resources/Textures/Interface/Inventory/Classic/hand_r.png diff --git a/Resources/Textures/Interface/Inventory/nostalgia-ui/hand_r_no_letter.png b/Resources/Textures/Interface/Inventory/Classic/hand_r_no_letter.png similarity index 100% rename from Resources/Textures/Interface/Inventory/nostalgia-ui/hand_r_no_letter.png rename to Resources/Textures/Interface/Inventory/Classic/hand_r_no_letter.png diff --git a/Resources/Textures/Interface/Inventory/nostalgia-ui/head.png b/Resources/Textures/Interface/Inventory/Classic/head.png similarity index 100% rename from Resources/Textures/Interface/Inventory/nostalgia-ui/head.png rename to Resources/Textures/Interface/Inventory/Classic/head.png diff --git a/Resources/Textures/Interface/Inventory/nostalgia-ui/id.png b/Resources/Textures/Interface/Inventory/Classic/id.png similarity index 100% rename from Resources/Textures/Interface/Inventory/nostalgia-ui/id.png rename to Resources/Textures/Interface/Inventory/Classic/id.png diff --git a/Resources/Textures/Interface/Inventory/nostalgia-ui/mask.png b/Resources/Textures/Interface/Inventory/Classic/mask.png similarity index 100% rename from Resources/Textures/Interface/Inventory/nostalgia-ui/mask.png rename to Resources/Textures/Interface/Inventory/Classic/mask.png diff --git a/Resources/Textures/Interface/Inventory/Classic/neck.png b/Resources/Textures/Interface/Inventory/Classic/neck.png new file mode 100644 index 0000000000..d744499516 Binary files /dev/null and b/Resources/Textures/Interface/Inventory/Classic/neck.png differ diff --git a/Resources/Textures/Interface/Inventory/nostalgia-ui/pocket.png b/Resources/Textures/Interface/Inventory/Classic/pocket.png similarity index 100% rename from Resources/Textures/Interface/Inventory/nostalgia-ui/pocket.png rename to Resources/Textures/Interface/Inventory/Classic/pocket.png diff --git a/Resources/Textures/Interface/Inventory/nostalgia-ui/shoes.png b/Resources/Textures/Interface/Inventory/Classic/shoes.png similarity index 100% rename from Resources/Textures/Interface/Inventory/nostalgia-ui/shoes.png rename to Resources/Textures/Interface/Inventory/Classic/shoes.png diff --git a/Resources/Textures/Interface/Inventory/nostalgia-ui/suit.png b/Resources/Textures/Interface/Inventory/Classic/suit.png similarity index 100% rename from Resources/Textures/Interface/Inventory/nostalgia-ui/suit.png rename to Resources/Textures/Interface/Inventory/Classic/suit.png diff --git a/Resources/Textures/Interface/Inventory/nostalgia-ui/suit_storage.png b/Resources/Textures/Interface/Inventory/Classic/suit_storage.png similarity index 100% rename from Resources/Textures/Interface/Inventory/nostalgia-ui/suit_storage.png rename to Resources/Textures/Interface/Inventory/Classic/suit_storage.png diff --git a/Resources/Textures/Interface/Inventory/nostalgia-ui/uniform.png b/Resources/Textures/Interface/Inventory/Classic/uniform.png similarity index 100% rename from Resources/Textures/Interface/Inventory/nostalgia-ui/uniform.png rename to Resources/Textures/Interface/Inventory/Classic/uniform.png diff --git a/Resources/Textures/Interface/Inventory/back.png b/Resources/Textures/Interface/Inventory/Default/back.png similarity index 100% rename from Resources/Textures/Interface/Inventory/back.png rename to Resources/Textures/Interface/Inventory/Default/back.png diff --git a/Resources/Textures/Interface/Inventory/belt.png b/Resources/Textures/Interface/Inventory/Default/belt.png similarity index 100% rename from Resources/Textures/Interface/Inventory/belt.png rename to Resources/Textures/Interface/Inventory/Default/belt.png diff --git a/Resources/Textures/Interface/Inventory/ears.png b/Resources/Textures/Interface/Inventory/Default/ears.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ears.png rename to Resources/Textures/Interface/Inventory/Default/ears.png diff --git a/Resources/Textures/Interface/Inventory/ears_headset.png b/Resources/Textures/Interface/Inventory/Default/ears_headset.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ears_headset.png rename to Resources/Textures/Interface/Inventory/Default/ears_headset.png diff --git a/Resources/Textures/Interface/Inventory/glasses.png b/Resources/Textures/Interface/Inventory/Default/glasses.png similarity index 100% rename from Resources/Textures/Interface/Inventory/glasses.png rename to Resources/Textures/Interface/Inventory/Default/glasses.png diff --git a/Resources/Textures/Interface/Inventory/gloves.png b/Resources/Textures/Interface/Inventory/Default/gloves.png similarity index 100% rename from Resources/Textures/Interface/Inventory/gloves.png rename to Resources/Textures/Interface/Inventory/Default/gloves.png diff --git a/Resources/Textures/Interface/Inventory/hand_l.png b/Resources/Textures/Interface/Inventory/Default/hand_l.png similarity index 100% rename from Resources/Textures/Interface/Inventory/hand_l.png rename to Resources/Textures/Interface/Inventory/Default/hand_l.png diff --git a/Resources/Textures/Interface/Inventory/hand_l_no_letter.png b/Resources/Textures/Interface/Inventory/Default/hand_l_no_letter.png similarity index 100% rename from Resources/Textures/Interface/Inventory/hand_l_no_letter.png rename to Resources/Textures/Interface/Inventory/Default/hand_l_no_letter.png diff --git a/Resources/Textures/Interface/Inventory/hand_r.png b/Resources/Textures/Interface/Inventory/Default/hand_r.png similarity index 100% rename from Resources/Textures/Interface/Inventory/hand_r.png rename to Resources/Textures/Interface/Inventory/Default/hand_r.png diff --git a/Resources/Textures/Interface/Inventory/hand_r_no_letter.png b/Resources/Textures/Interface/Inventory/Default/hand_r_no_letter.png similarity index 100% rename from Resources/Textures/Interface/Inventory/hand_r_no_letter.png rename to Resources/Textures/Interface/Inventory/Default/hand_r_no_letter.png diff --git a/Resources/Textures/Interface/Inventory/head.png b/Resources/Textures/Interface/Inventory/Default/head.png similarity index 100% rename from Resources/Textures/Interface/Inventory/head.png rename to Resources/Textures/Interface/Inventory/Default/head.png diff --git a/Resources/Textures/Interface/Inventory/id.png b/Resources/Textures/Interface/Inventory/Default/id.png similarity index 100% rename from Resources/Textures/Interface/Inventory/id.png rename to Resources/Textures/Interface/Inventory/Default/id.png diff --git a/Resources/Textures/Interface/Inventory/inventory.png b/Resources/Textures/Interface/Inventory/Default/inventory.png similarity index 100% rename from Resources/Textures/Interface/Inventory/inventory.png rename to Resources/Textures/Interface/Inventory/Default/inventory.png diff --git a/Resources/Textures/Interface/Inventory/mask.png b/Resources/Textures/Interface/Inventory/Default/mask.png similarity index 100% rename from Resources/Textures/Interface/Inventory/mask.png rename to Resources/Textures/Interface/Inventory/Default/mask.png diff --git a/Resources/Textures/Interface/Inventory/meta.json b/Resources/Textures/Interface/Inventory/Default/meta.json similarity index 100% rename from Resources/Textures/Interface/Inventory/meta.json rename to Resources/Textures/Interface/Inventory/Default/meta.json diff --git a/Resources/Textures/Interface/Inventory/neck.png b/Resources/Textures/Interface/Inventory/Default/neck.png similarity index 100% rename from Resources/Textures/Interface/Inventory/neck.png rename to Resources/Textures/Interface/Inventory/Default/neck.png diff --git a/Resources/Textures/Interface/Inventory/pda.png b/Resources/Textures/Interface/Inventory/Default/pda.png similarity index 100% rename from Resources/Textures/Interface/Inventory/pda.png rename to Resources/Textures/Interface/Inventory/Default/pda.png diff --git a/Resources/Textures/Interface/Inventory/pocket.png b/Resources/Textures/Interface/Inventory/Default/pocket.png similarity index 100% rename from Resources/Textures/Interface/Inventory/pocket.png rename to Resources/Textures/Interface/Inventory/Default/pocket.png diff --git a/Resources/Textures/Interface/Inventory/shoes.png b/Resources/Textures/Interface/Inventory/Default/shoes.png similarity index 100% rename from Resources/Textures/Interface/Inventory/shoes.png rename to Resources/Textures/Interface/Inventory/Default/shoes.png diff --git a/Resources/Textures/Interface/Inventory/suit.png b/Resources/Textures/Interface/Inventory/Default/suit.png similarity index 100% rename from Resources/Textures/Interface/Inventory/suit.png rename to Resources/Textures/Interface/Inventory/Default/suit.png diff --git a/Resources/Textures/Interface/Inventory/suit_storage.png b/Resources/Textures/Interface/Inventory/Default/suit_storage.png similarity index 100% rename from Resources/Textures/Interface/Inventory/suit_storage.png rename to Resources/Textures/Interface/Inventory/Default/suit_storage.png diff --git a/Resources/Textures/Interface/Inventory/uniform.png b/Resources/Textures/Interface/Inventory/Default/uniform.png similarity index 100% rename from Resources/Textures/Interface/Inventory/uniform.png rename to Resources/Textures/Interface/Inventory/Default/uniform.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/back.png b/Resources/Textures/Interface/Inventory/Modernized/back.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/back.png rename to Resources/Textures/Interface/Inventory/Modernized/back.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/belt.png b/Resources/Textures/Interface/Inventory/Modernized/belt.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/belt.png rename to Resources/Textures/Interface/Inventory/Modernized/belt.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/block.png b/Resources/Textures/Interface/Inventory/Modernized/block.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/block.png rename to Resources/Textures/Interface/Inventory/Modernized/block.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/ears.png b/Resources/Textures/Interface/Inventory/Modernized/ears.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/ears.png rename to Resources/Textures/Interface/Inventory/Modernized/ears.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/glasses.png b/Resources/Textures/Interface/Inventory/Modernized/glasses.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/glasses.png rename to Resources/Textures/Interface/Inventory/Modernized/glasses.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/gloves.png b/Resources/Textures/Interface/Inventory/Modernized/gloves.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/gloves.png rename to Resources/Textures/Interface/Inventory/Modernized/gloves.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/hand_l.png b/Resources/Textures/Interface/Inventory/Modernized/hand_l.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/hand_l.png rename to Resources/Textures/Interface/Inventory/Modernized/hand_l.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/hand_l_active.png b/Resources/Textures/Interface/Inventory/Modernized/hand_l_active.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/hand_l_active.png rename to Resources/Textures/Interface/Inventory/Modernized/hand_l_active.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/hand_r.png b/Resources/Textures/Interface/Inventory/Modernized/hand_r.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/hand_r.png rename to Resources/Textures/Interface/Inventory/Modernized/hand_r.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/hand_r_active.png b/Resources/Textures/Interface/Inventory/Modernized/hand_r_active.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/hand_r_active.png rename to Resources/Textures/Interface/Inventory/Modernized/hand_r_active.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/head.png b/Resources/Textures/Interface/Inventory/Modernized/head.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/head.png rename to Resources/Textures/Interface/Inventory/Modernized/head.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/id.png b/Resources/Textures/Interface/Inventory/Modernized/id.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/id.png rename to Resources/Textures/Interface/Inventory/Modernized/id.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/inventory.png b/Resources/Textures/Interface/Inventory/Modernized/inventory.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/inventory.png rename to Resources/Textures/Interface/Inventory/Modernized/inventory.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/mask.png b/Resources/Textures/Interface/Inventory/Modernized/mask.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/mask.png rename to Resources/Textures/Interface/Inventory/Modernized/mask.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/meta b/Resources/Textures/Interface/Inventory/Modernized/meta similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/meta rename to Resources/Textures/Interface/Inventory/Modernized/meta diff --git a/Resources/Textures/Interface/Inventory/ike-ui/neck.png b/Resources/Textures/Interface/Inventory/Modernized/neck.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/neck.png rename to Resources/Textures/Interface/Inventory/Modernized/neck.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/pocket.png b/Resources/Textures/Interface/Inventory/Modernized/pocket.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/pocket.png rename to Resources/Textures/Interface/Inventory/Modernized/pocket.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/sheet.png b/Resources/Textures/Interface/Inventory/Modernized/sheet.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/sheet.png rename to Resources/Textures/Interface/Inventory/Modernized/sheet.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/shoes.png b/Resources/Textures/Interface/Inventory/Modernized/shoes.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/shoes.png rename to Resources/Textures/Interface/Inventory/Modernized/shoes.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/suit.png b/Resources/Textures/Interface/Inventory/Modernized/suit.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/suit.png rename to Resources/Textures/Interface/Inventory/Modernized/suit.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/suit_storage.png b/Resources/Textures/Interface/Inventory/Modernized/suit_storage.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/suit_storage.png rename to Resources/Textures/Interface/Inventory/Modernized/suit_storage.png diff --git a/Resources/Textures/Interface/Inventory/ike-ui/uniform.png b/Resources/Textures/Interface/Inventory/Modernized/uniform.png similarity index 100% rename from Resources/Textures/Interface/Inventory/ike-ui/uniform.png rename to Resources/Textures/Interface/Inventory/Modernized/uniform.png diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/back.png b/Resources/Textures/Interface/Inventory/current-ui-layer/back.png deleted file mode 100644 index f48b3c1811..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/back.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/belt.png b/Resources/Textures/Interface/Inventory/current-ui-layer/belt.png deleted file mode 100644 index 67c2580aab..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/belt.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/ears.png b/Resources/Textures/Interface/Inventory/current-ui-layer/ears.png deleted file mode 100644 index 364876d42e..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/ears.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/ears_headset.png b/Resources/Textures/Interface/Inventory/current-ui-layer/ears_headset.png deleted file mode 100644 index c3cfd7990f..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/ears_headset.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/glasses.png b/Resources/Textures/Interface/Inventory/current-ui-layer/glasses.png deleted file mode 100644 index 2f78c380fe..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/glasses.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/gloves.png b/Resources/Textures/Interface/Inventory/current-ui-layer/gloves.png deleted file mode 100644 index d150b43ed4..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/gloves.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/hand_l.png b/Resources/Textures/Interface/Inventory/current-ui-layer/hand_l.png deleted file mode 100644 index 363767a8df..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/hand_l.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/hand_l_no_letter.png b/Resources/Textures/Interface/Inventory/current-ui-layer/hand_l_no_letter.png deleted file mode 100644 index 81a4fbe34d..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/hand_l_no_letter.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/hand_r.png b/Resources/Textures/Interface/Inventory/current-ui-layer/hand_r.png deleted file mode 100644 index 59ccf46f97..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/hand_r.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/hand_r_no_letter.png b/Resources/Textures/Interface/Inventory/current-ui-layer/hand_r_no_letter.png deleted file mode 100644 index 540576ee80..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/hand_r_no_letter.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/head.png b/Resources/Textures/Interface/Inventory/current-ui-layer/head.png deleted file mode 100644 index 0ff0c1c5be..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/head.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/id.png b/Resources/Textures/Interface/Inventory/current-ui-layer/id.png deleted file mode 100644 index 760452f9ff..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/id.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/mask.png b/Resources/Textures/Interface/Inventory/current-ui-layer/mask.png deleted file mode 100644 index b10d1adc73..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/mask.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/neck.png b/Resources/Textures/Interface/Inventory/current-ui-layer/neck.png deleted file mode 100644 index cfdbf10d29..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/neck.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/pda.png b/Resources/Textures/Interface/Inventory/current-ui-layer/pda.png deleted file mode 100644 index d63e98ec9e..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/pda.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/pocket.png b/Resources/Textures/Interface/Inventory/current-ui-layer/pocket.png deleted file mode 100644 index d1edeaf9c9..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/pocket.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/shoes.png b/Resources/Textures/Interface/Inventory/current-ui-layer/shoes.png deleted file mode 100644 index 16f9a4de38..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/shoes.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/suit.png b/Resources/Textures/Interface/Inventory/current-ui-layer/suit.png deleted file mode 100644 index 10857fe792..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/suit.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/suit_storage.png b/Resources/Textures/Interface/Inventory/current-ui-layer/suit_storage.png deleted file mode 100644 index 24e724f2f1..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/suit_storage.png and /dev/null differ diff --git a/Resources/Textures/Interface/Inventory/current-ui-layer/uniform.png b/Resources/Textures/Interface/Inventory/current-ui-layer/uniform.png deleted file mode 100644 index 90de19de07..0000000000 Binary files a/Resources/Textures/Interface/Inventory/current-ui-layer/uniform.png and /dev/null differ