From 9b18357a882d6a9e3dfb3b4fccaa42f65238c9f0 Mon Sep 17 00:00:00 2001 From: Nemanja <98561806+EmoGarbage404@users.noreply.github.com> Date: Sat, 23 Dec 2023 01:32:23 -0500 Subject: [PATCH] Corner Clothing UI (#22883) * Corner clothing (save point) * IT WORKS. YIPPEE * the last of it * template rejigs --- .../Screens/DefaultGameScreen.xaml | 2 + .../Screens/DefaultGameScreen.xaml.cs | 1 + .../Screens/SeparatedChatGameScreen.xaml | 4 +- .../Screens/SeparatedChatGameScreen.xaml.cs | 1 + .../Systems/Hotbar/HotbarUIController.cs | 28 ++-- .../Systems/Hotbar/Widgets/HotbarGui.xaml | 44 +++---- .../Systems/Hotbar/Widgets/HotbarGui.xaml.cs | 2 +- .../Inventory/Controls/ItemSlotUIContainer.cs | 10 +- .../Inventory/InventoryUIController.cs | 124 +++++++++++++----- .../Inventory/Widgets/InventoryGui.xaml | 30 +++++ .../Inventory/Widgets/InventoryGui.xaml.cs | 19 +++ .../MenuBar/GameTopMenuBarUIController.cs | 4 - .../MenuBar/Widgets/GameTopMenuBar.xaml | 10 -- .../arachnid_inventory_template.yml | 18 +-- .../Prototypes/InventoryTemplates/borg.yml | 9 +- .../corpse_inventory_template.yml | 16 +-- .../diona_inventory_template.yml | 16 +-- .../drone_inventory_template.yml | 3 +- .../hamster_inventory_template.yml | 8 +- .../head_inventory_template.yml | 3 +- .../human_inventory_template.yml | 18 +-- .../kangaroo_inventory_template.yml | 4 +- .../monkey_inventory_template.yml | 10 +- .../pet_inventory_template.yml | 2 +- .../Interface/Clockwork/Slots/toggle.png | Bin 0 -> 1041 bytes .../Interface/Default/Slots/toggle.png | Bin 0 -> 1140 bytes .../Eris/Slots/{inventory.png => toggle.png} | Bin .../Interface/Minimalist/Slots/inventory.png | Bin 685 -> 0 bytes .../Slots/toggle.png} | Bin .../Interface/Plasmafire/Slots/toggle.png | Bin 0 -> 1305 bytes .../Textures/Interface/Retro/Slots/toggle.png | Bin 0 -> 645 bytes .../Interface/Slimecore/Slots/toggle.png | Bin 0 -> 1154 bytes 32 files changed, 240 insertions(+), 146 deletions(-) create mode 100644 Content.Client/UserInterface/Systems/Inventory/Widgets/InventoryGui.xaml create mode 100644 Content.Client/UserInterface/Systems/Inventory/Widgets/InventoryGui.xaml.cs create mode 100644 Resources/Textures/Interface/Clockwork/Slots/toggle.png create mode 100644 Resources/Textures/Interface/Default/Slots/toggle.png rename Resources/Textures/Interface/Eris/Slots/{inventory.png => toggle.png} (100%) delete mode 100644 Resources/Textures/Interface/Minimalist/Slots/inventory.png rename Resources/Textures/Interface/{Default/Slots/inventory.png => Minimalist/Slots/toggle.png} (100%) create mode 100644 Resources/Textures/Interface/Plasmafire/Slots/toggle.png create mode 100644 Resources/Textures/Interface/Retro/Slots/toggle.png create mode 100644 Resources/Textures/Interface/Slimecore/Slots/toggle.png diff --git a/Content.Client/UserInterface/Screens/DefaultGameScreen.xaml b/Content.Client/UserInterface/Screens/DefaultGameScreen.xaml index 5c09574005..54aeffe72c 100644 --- a/Content.Client/UserInterface/Screens/DefaultGameScreen.xaml +++ b/Content.Client/UserInterface/Screens/DefaultGameScreen.xaml @@ -8,6 +8,7 @@ xmlns:widgets="clr-namespace:Content.Client.UserInterface.Systems.Ghost.Widgets" xmlns:hotbar="clr-namespace:Content.Client.UserInterface.Systems.Hotbar.Widgets" xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls" + xmlns:inventory="clr-namespace:Content.Client.UserInterface.Systems.Inventory.Widgets" Name="DefaultHud" VerticalExpand="False" VerticalAlignment="Bottom" @@ -25,6 +26,7 @@ + diff --git a/Content.Client/UserInterface/Screens/DefaultGameScreen.xaml.cs b/Content.Client/UserInterface/Screens/DefaultGameScreen.xaml.cs index a8a53e83c7..0fb1b7d507 100644 --- a/Content.Client/UserInterface/Screens/DefaultGameScreen.xaml.cs +++ b/Content.Client/UserInterface/Screens/DefaultGameScreen.xaml.cs @@ -18,6 +18,7 @@ public sealed partial class DefaultGameScreen : InGameScreen SetAnchorPreset(ViewportContainer, LayoutPreset.Wide); SetAnchorAndMarginPreset(TopLeft, LayoutPreset.TopLeft, margin: 10); SetAnchorAndMarginPreset(Ghost, LayoutPreset.BottomWide, margin: 80); + SetAnchorAndMarginPreset(Inventory, LayoutPreset.BottomLeft, margin: 5); SetAnchorAndMarginPreset(Hotbar, LayoutPreset.BottomWide, margin: 5); SetAnchorAndMarginPreset(Chat, LayoutPreset.TopRight, margin: 10); SetAnchorAndMarginPreset(Alerts, LayoutPreset.TopRight, margin: 10); diff --git a/Content.Client/UserInterface/Screens/SeparatedChatGameScreen.xaml b/Content.Client/UserInterface/Screens/SeparatedChatGameScreen.xaml index d62ad33dfc..7f1d1bcd5b 100644 --- a/Content.Client/UserInterface/Screens/SeparatedChatGameScreen.xaml +++ b/Content.Client/UserInterface/Screens/SeparatedChatGameScreen.xaml @@ -9,6 +9,7 @@ xmlns:widgets="clr-namespace:Content.Client.UserInterface.Systems.Ghost.Widgets" xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls" xmlns:graphics="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client" + xmlns:inventory="clr-namespace:Content.Client.UserInterface.Systems.Inventory.Widgets" Name="SeparatedChatHud" VerticalExpand="False" VerticalAlignment="Bottom" @@ -17,7 +18,8 @@ - + + diff --git a/Content.Client/UserInterface/Screens/SeparatedChatGameScreen.xaml.cs b/Content.Client/UserInterface/Screens/SeparatedChatGameScreen.xaml.cs index 7816cf1be1..45a29e03f1 100644 --- a/Content.Client/UserInterface/Screens/SeparatedChatGameScreen.xaml.cs +++ b/Content.Client/UserInterface/Screens/SeparatedChatGameScreen.xaml.cs @@ -18,6 +18,7 @@ public sealed partial class SeparatedChatGameScreen : InGameScreen SetAnchorPreset(ScreenContainer, LayoutPreset.Wide); SetAnchorPreset(ViewportContainer, LayoutPreset.Wide); SetAnchorPreset(MainViewport, LayoutPreset.Wide); + SetAnchorAndMarginPreset(Inventory, LayoutPreset.BottomLeft, margin: 5); SetAnchorAndMarginPreset(TopLeftContainer, LayoutPreset.TopLeft, margin: 10); SetAnchorAndMarginPreset(Ghost, LayoutPreset.BottomWide, margin: 80); SetAnchorAndMarginPreset(Hotbar, LayoutPreset.BottomWide, margin: 5); diff --git a/Content.Client/UserInterface/Systems/Hotbar/HotbarUIController.cs b/Content.Client/UserInterface/Systems/Hotbar/HotbarUIController.cs index 397da978d8..daececcd35 100644 --- a/Content.Client/UserInterface/Systems/Hotbar/HotbarUIController.cs +++ b/Content.Client/UserInterface/Systems/Hotbar/HotbarUIController.cs @@ -4,6 +4,7 @@ using Content.Client.UserInterface.Systems.Hands.Controls; using Content.Client.UserInterface.Systems.Hotbar.Widgets; using Content.Client.UserInterface.Systems.Inventory; using Content.Client.UserInterface.Systems.Inventory.Controls; +using Content.Client.UserInterface.Systems.Inventory.Widgets; using Content.Client.UserInterface.Systems.Storage; using Content.Client.UserInterface.Systems.Storage.Controls; using Robust.Client.UserInterface; @@ -30,13 +31,12 @@ public sealed class HotbarUIController : UIController ReloadHotbar(); } - public void Setup(HandsContainer handsContainer, ItemSlotButtonContainer inventoryBar, ItemStatusPanel handStatus, StorageContainer storageContainer) + public void Setup(HandsContainer handsContainer, ItemStatusPanel handStatus, StorageContainer storageContainer) { _inventory = UIManager.GetUIController(); _hands = UIManager.GetUIController(); _storage = UIManager.GetUIController(); _hands.RegisterHandContainer(handsContainer); - _inventory.RegisterInventoryBarContainer(inventoryBar); _storage.RegisterStorageContainer(storageContainer); } @@ -47,25 +47,35 @@ public sealed class HotbarUIController : UIController return; } - var hotbar = UIManager.ActiveScreen.GetWidget(); + if (UIManager.ActiveScreen.GetWidget() is { } hotbar) + { + foreach (var container in GetAllItemSlotContainers(hotbar)) + { + // Yes, this is dirty. + container.SlotGroup = container.SlotGroup; + } + } - if (hotbar == null) + _hands?.ReloadHands(); + _inventory?.ReloadSlots(); + + //todo move this over to its own hellhole + var inventory = UIManager.ActiveScreen.GetWidget(); + if (inventory == null) { return; } - foreach (var container in GetAllItemSlotContainers(hotbar)) + foreach (var container in GetAllItemSlotContainers(inventory)) { // Yes, this is dirty. container.SlotGroup = container.SlotGroup; } - _hands?.ReloadHands(); - _inventory?.ReloadSlots(); - _inventory?.RegisterInventoryBarContainer(hotbar.InventoryHotbar); + _inventory?.RegisterInventoryBarContainer(inventory.InventoryHotbar); } - private IEnumerable GetAllItemSlotContainers(Control gui) + private static IEnumerable GetAllItemSlotContainers(Control gui) { var result = new List(); diff --git a/Content.Client/UserInterface/Systems/Hotbar/Widgets/HotbarGui.xaml b/Content.Client/UserInterface/Systems/Hotbar/Widgets/HotbarGui.xaml index 04b606de08..0e9f0c77f9 100644 --- a/Content.Client/UserInterface/Systems/Hotbar/Widgets/HotbarGui.xaml +++ b/Content.Client/UserInterface/Systems/Hotbar/Widgets/HotbarGui.xaml @@ -5,38 +5,26 @@ xmlns:hands="clr-namespace:Content.Client.UserInterface.Systems.Hands.Controls" xmlns:widgets="clr-namespace:Content.Client.UserInterface.Systems.Hotbar.Widgets" Name="HotbarInterface" - VerticalExpand="False" + VerticalExpand="True" VerticalAlignment="Bottom" Orientation="Vertical" HorizontalAlignment="Center"> - - - - - - - + + + + + + (); - hotbarController.Setup(HandContainer, InventoryHotbar, StatusPanel, StoragePanel); + hotbarController.Setup(HandContainer, StatusPanel, StoragePanel); LayoutContainer.SetGrowVertical(this, LayoutContainer.GrowDirection.Begin); } diff --git a/Content.Client/UserInterface/Systems/Inventory/Controls/ItemSlotUIContainer.cs b/Content.Client/UserInterface/Systems/Inventory/Controls/ItemSlotUIContainer.cs index d44a4a2d76..df45ceabf6 100644 --- a/Content.Client/UserInterface/Systems/Inventory/Controls/ItemSlotUIContainer.cs +++ b/Content.Client/UserInterface/Systems/Inventory/Controls/ItemSlotUIContainer.cs @@ -16,6 +16,14 @@ public abstract class ItemSlotUIContainer : GridContainer, IItemslotUIContain { protected readonly Dictionary Buttons = new(); + private int? _maxColumns; + + public int? MaxColumns + { + get => _maxColumns; + set => _maxColumns = value; + } + public virtual bool TryAddButton(T newButton, out T button) { var tempButton = AddButton(newButton); @@ -68,7 +76,7 @@ public abstract class ItemSlotUIContainer : GridContainer, IItemslotUIContain { if (!Children.Contains(newButton) && newButton.Parent == null && newButton.SlotName != "") AddChild(newButton); - Columns = ChildCount; + Columns = _maxColumns ?? ChildCount; return AddButtonToDict(newButton); } diff --git a/Content.Client/UserInterface/Systems/Inventory/InventoryUIController.cs b/Content.Client/UserInterface/Systems/Inventory/InventoryUIController.cs index 59beaa5a02..8af68282f3 100644 --- a/Content.Client/UserInterface/Systems/Inventory/InventoryUIController.cs +++ b/Content.Client/UserInterface/Systems/Inventory/InventoryUIController.cs @@ -1,8 +1,12 @@ +using System.Linq; +using System.Numerics; using Content.Client.Gameplay; using Content.Client.Hands.Systems; using Content.Client.Inventory; using Content.Client.UserInterface.Controls; +using Content.Client.UserInterface.Systems.Gameplay; using Content.Client.UserInterface.Systems.Inventory.Controls; +using Content.Client.UserInterface.Systems.Inventory.Widgets; using Content.Client.UserInterface.Systems.Inventory.Windows; using Content.Shared.Hands.Components; using Content.Shared.Input; @@ -16,7 +20,6 @@ using Robust.Shared.Input.Binding; using Robust.Shared.Map; using Robust.Shared.Utility; using static Content.Client.Inventory.ClientInventorySystem; -using static Robust.Client.UserInterface.Controls.BaseButton; namespace Content.Client.UserInterface.Systems.Inventory; @@ -35,9 +38,26 @@ public sealed class InventoryUIController : UIController, IOnStateEntered UIManager.ActiveScreen?.GetWidget()?.InventoryButton; + private SlotButton? _inventoryButton; - private SlotControl? _lastHovered = null; + private SlotControl? _lastHovered; + + public override void Initialize() + { + base.Initialize(); + + var gameplayStateLoad = UIManager.GetUIController(); + gameplayStateLoad.OnScreenLoad += OnScreenLoad; + } + + private void OnScreenLoad() + { + if (UIManager.ActiveScreen == null) + return; + + var inventoryGui = UIManager.GetActiveUIWidget(); + RegisterInventoryButton(inventoryGui.InventoryButton); + } public void OnStateEntered(GameplayState state) { @@ -67,26 +87,6 @@ public sealed class InventoryUIController : UIController, IOnStateEntered(); } - public void UnloadButton() - { - if (InventoryButton == null) - { - return; - } - - InventoryButton.OnPressed -= InventoryButtonPressed; - } - - public void LoadButton() - { - if (InventoryButton == null) - { - return; - } - - InventoryButton.OnPressed += InventoryButtonPressed; - } - private SlotButton CreateSlotButton(SlotData data) { var button = new SlotButton(data); @@ -102,8 +102,25 @@ public sealed class InventoryUIController : UIController, IOnStateEntered !p.Value.HasSlotGroup).ToList(); + + if (_inventoryButton != null) + _inventoryButton.Visible = clothing.Count != 0; + if (clothing.Count == 0) + return; + + foreach (var child in new List(_inventoryHotbar.Children)) + { + if (child is not SlotControl) + _inventoryHotbar.RemoveChild(child); + } + + var maxWidth = clothing.Max(p => p.Value.ButtonOffset.X) + 1; + var maxIndex = clothing.Select(p => GetIndex(p.Value.ButtonOffset)).Max(); + + _inventoryHotbar.MaxColumns = maxWidth; + _inventoryHotbar.Columns = maxWidth; + + for (var i = 0; i <= maxIndex; i++) + { + var index = i; + if (clothing.FirstOrNull(p => GetIndex(p.Value.ButtonOffset) == index) is { } pair) + { + if (_inventoryHotbar.TryGetButton(pair.Key, out var slot)) + slot.SetPositionLast(); + } + else + { + _inventoryHotbar.AddChild(new Control + { + MinSize = new Vector2(64, 64) + }); + } + } + + return; + + int GetIndex(Vector2i position) + { + return position.Y * maxWidth + position.X; + } } private void UpdateStrippingWindow(InventorySlotsComponent? clientInv) @@ -178,18 +241,7 @@ public sealed class InventoryUIController : UIController, IOnStateEntered + + + + + diff --git a/Content.Client/UserInterface/Systems/Inventory/Widgets/InventoryGui.xaml.cs b/Content.Client/UserInterface/Systems/Inventory/Widgets/InventoryGui.xaml.cs new file mode 100644 index 0000000000..90154c5a9f --- /dev/null +++ b/Content.Client/UserInterface/Systems/Inventory/Widgets/InventoryGui.xaml.cs @@ -0,0 +1,19 @@ +using Robust.Client.AutoGenerated; +using Robust.Client.UserInterface.Controls; +using Robust.Client.UserInterface.XAML; + +namespace Content.Client.UserInterface.Systems.Inventory.Widgets; + +[GenerateTypedNameReferences] +public sealed partial class InventoryGui : UIWidget +{ + public InventoryGui() + { + RobustXamlLoader.Load(this); + + var inventoryUIController = UserInterfaceManager.GetUIController(); + inventoryUIController.RegisterInventoryBarContainer(InventoryHotbar); + + LayoutContainer.SetGrowVertical(this, LayoutContainer.GrowDirection.Begin); + } +} diff --git a/Content.Client/UserInterface/Systems/MenuBar/GameTopMenuBarUIController.cs b/Content.Client/UserInterface/Systems/MenuBar/GameTopMenuBarUIController.cs index b399e83fc6..1505db48a7 100644 --- a/Content.Client/UserInterface/Systems/MenuBar/GameTopMenuBarUIController.cs +++ b/Content.Client/UserInterface/Systems/MenuBar/GameTopMenuBarUIController.cs @@ -6,7 +6,6 @@ using Content.Client.UserInterface.Systems.Crafting; using Content.Client.UserInterface.Systems.EscapeMenu; using Content.Client.UserInterface.Systems.Gameplay; using Content.Client.UserInterface.Systems.Guidebook; -using Content.Client.UserInterface.Systems.Inventory; using Content.Client.UserInterface.Systems.MenuBar.Widgets; using Content.Client.UserInterface.Systems.Sandbox; using Robust.Client.UserInterface.Controllers; @@ -16,7 +15,6 @@ namespace Content.Client.UserInterface.Systems.MenuBar; public sealed class GameTopMenuBarUIController : UIController { [Dependency] private readonly EscapeUIController _escape = default!; - [Dependency] private readonly InventoryUIController _inventory = default!; [Dependency] private readonly AdminUIController _admin = default!; [Dependency] private readonly CharacterUIController _character = default!; [Dependency] private readonly CraftingUIController _crafting = default!; @@ -40,7 +38,6 @@ public sealed class GameTopMenuBarUIController : UIController { _escape.UnloadButton(); _guidebook.UnloadButton(); - _inventory.UnloadButton(); _admin.UnloadButton(); _character.UnloadButton(); _crafting.UnloadButton(); @@ -53,7 +50,6 @@ public sealed class GameTopMenuBarUIController : UIController { _escape.LoadButton(); _guidebook.LoadButton(); - _inventory.LoadButton(); _admin.LoadButton(); _character.LoadButton(); _crafting.LoadButton(); diff --git a/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml b/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml index 6765699531..3c8cd1d164 100644 --- a/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml +++ b/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml @@ -43,16 +43,6 @@ HorizontalExpand="True" AppendStyleClass="{x:Static style:StyleBase.ButtonSquare}" /> - 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 T#*Ir100000NkvXXu0mjf(qS}G diff --git a/Resources/Textures/Interface/Default/Slots/inventory.png b/Resources/Textures/Interface/Minimalist/Slots/toggle.png similarity index 100% rename from Resources/Textures/Interface/Default/Slots/inventory.png rename to Resources/Textures/Interface/Minimalist/Slots/toggle.png diff --git a/Resources/Textures/Interface/Plasmafire/Slots/toggle.png b/Resources/Textures/Interface/Plasmafire/Slots/toggle.png new file mode 100644 index 0000000000000000000000000000000000000000..0af8cb9fd19924ab75665e865e58047de85f7949 GIT binary patch literal 1305 zcmV+!1?KvRP)Px((@8`@R9J=Om(On#M-<0DGrQ}=4)Ko|L^g$nCPax)L_yFCb6a;bjl{irdtR2Tc;@#OEX4kQkP0~uG z7oIfQ^?PsT``(-HoAJV%E+TvxN)Fulzrp9qizh?~ZpZt&t}f4xHeWNS6+FK4Q49DmGx+p1$ADp&{nwXgM?Xpq%$V(l_cMd^^z1*JPG|G~6Yi5h2DP4^%G>R(Q`aVoOKo@^ z6)+5Q1E5rLFa^X+h*|LUvAk`VAmz@PDg~YkKi``umYeXxg?-61XD?3_0si<#2eMM@ zoM(0}qJk=<>5`C)!B>ZJ_S<97-3Lh8`ld~MKtcT_d{5rKa7%+aC5MszG}GsD_SCh> z;`F(keIO3Swy7OC$sol_$)R3xINzVMoeCHRxHWJa;BG{WhPE39I2E{ZB5$W+kg#C- zT+Tjwd7`+ms<{w8cdbAwlO}0_A$8mQbsLVI2CH{#$l*kAU%|cG+TW1Smr3*c=Q{JZ zvf6Fx+GMfX+$Dgp0&9+g(FO7l?2AF83HNWp&{)Ja1m!Q>2kAjPrpdcrcKGD#WP7y% z$o8dqzOcG`1+tkmnQpz%S_9UqkV!z{ZUDYDfFOuhRp?DXDi)Bf)|qXTL{^}>=J4I& zyln`LrahozaxWso;09daadn-@M{iH;IM_$N-2_NbNs^FdAqR@ z96W{|GxIFmDfJ(};MwRo!;*NDh3OxnT_t!}4=YLL?j? z*U!|@CP>JG)G&N-1WJWqOFSJwy#d2R@R^shuRNV78ao`L9Rc`CA%#MU09K;t@c*$rgJe4(s*66mUR9tg(#)LP~w(wqLtG(bq7$`1tyYR{p=J zfKm$AQ@Bb`^a4`34&d%RnvVAOg88n}?_mY}h$Oag;Md2enm>%(py5K(gTg$#1BexN z-v%Fi59a5=^`PNGss}DTm?(mS5dWYHlu|Uz-q|1LCmBeNo!4bTNcnbP@ zq1l9A7AA`|4@5j%dyg&m|JEdh#A3fUP^xM+*OJyfXrXU%izx8OPg%KG5!1Wh%u`~OJxm}n$ z*{*N3_+G6DEuyva&GX#YjaN^I`sQc_a3*#5=JnFE_x@a+i@Bn0AwK{PZn|yyAh57? zqnK`?{{{b)9iieiHlmV?{4_ItUv@hC_z|tJlin3VZPf*zV|$${Z;<>AQOWzozZOX| P00000NkvXXu0mjfPx%KS@MER9J=Wm%(b=Fc`=GvJ-mHhKoyBArJ@za@Yy2pk+I>hd>}O2nkB84@P9`$|Xk-JzJe}CP_;?61nKcT7!u-?c{hD8#XSWSy@`=p{Bfs!j zZ!Uwv3abFX8)bz0)Y_2+tYpXl+?GM=02K3gJqL~#8$;ubgRcvpmLUcse|U2l%yba- z0Mw`5l>_vWqvuzI7|(etqLvyky9#;;jKXTaMkDpn1eIlPc}j1RZcJJyTX208QoZ))VT1f2$vLMsa{0$kvs17>4~wlX53P2~FaaBwi#3bz}kl+4KbhiK^uO40jh`b1$EjK=BlE`C{ zU4!4FtN?6(M7D9V)FNa7TekBq$mSdr1o&ZBTx^~%`?4J?`vWsT3Xvp8K)Q4LH_JMp z!MGlv0>ny|#?=59=eNqfkOhy)`6v|u(yg+*Yke|RoH=p;GMRyohkHGokTb}KG2m|; f&7>dEe*wS)T$|z}^65~n00000NkvXXu0mjfMI$A4 literal 0 HcmV?d00001 diff --git a/Resources/Textures/Interface/Slimecore/Slots/toggle.png b/Resources/Textures/Interface/Slimecore/Slots/toggle.png new file mode 100644 index 0000000000000000000000000000000000000000..995926db1384344c483cc5884676698ab55ddb4b GIT binary patch literal 1154 zcmV-|1bzF7P)Px(JV``BR9J=Wmpg16MHt6_-|W-AyFL4yI8hX1M1zDxlPV^H(gg(~G*na+sZ*pz z)D*5MQqh2fK%zhbi7Hr5Lqi%M0pY}0(ZxRJ9$w$=V?K)Yo$q{)IE@?lq?Kl8X6OH( z|9p>G_^+Gv8_QR(=y`+JcXq|?gGW)sn;$Qp8~B5}2XGa2`yGAo&5iAIA#mgNDw`WE z+~Lm6jcuYR;=-lnk;&HDq9M-o6*V7uHOA0$suQRF^V=_jwtITe3j>vVQ0K$ebTPyFcklQW-n{7b>8pgB!Tm)Y96GnO{Ddsz6*XfoE&O^X*LJDPdi5gz;3&Xh_JLW zhgC&I5LJu_dyiwf?e1WWq|?O<1G)<4T4TDcSf@s}RsR>7i z1}he;mW7o$0Q_k2Bn(wRlptE*;u}iRDiVxUMZ{oJOQi;^TlCiz*qiLZV+3#uC&Dq1 zT2y2lxNrTofM2bFo)A%^U<|l+Ec*@H*b#^bamPE|ISxK-10tj2M{O4`37Oa$D( zC+j76;iV z6-2zXB06Rj7O_RmNPj*izf|0c&@#rDK`MSBfj|Fv$c0PG$G4&;0PSN%&SJj%1b}$x z{@8f7H?fF~5h$+8+Y{K%sKaM45gDm~BV%xWKPC_E9?)vFMry&i|C$Yh|8D^Q0;{h7 Uq$Fs8{Qv*}07*qoM6N<$f={p