Adds character menu, crafting menu and tutorial to the top left.

This commit is contained in:
Pieter-Jan Briers
2019-07-17 21:37:58 +02:00
parent 69f9da944d
commit 4b9c4022b8
21 changed files with 508 additions and 213 deletions

View File

@@ -1,70 +0,0 @@
using Content.Client.GameObjects.Components.Construction;
using Robust.Client.Interfaces.Graphics;
using Robust.Client.UserInterface.Controls;
using Robust.Shared.Maths;
using Robust.Shared.Utility;
namespace Content.Client.Construction
{
public class ConstructionButton : Button
{
public ConstructorComponent Owner
{
get => Menu.Owner;
set => Menu.Owner = value;
}
ConstructionMenu Menu;
public ConstructionButton()
{
PerformLayout();
}
protected override void Initialize()
{
base.Initialize();
SetAnchorPreset(LayoutPreset.BottomRight);
MarginLeft = -110.0f;
MarginTop = -70.0f;
MarginRight = -50.0f;
MarginBottom = -50.0f;
Text = "Crafting";
OnPressed += IWasPressed;
}
private void PerformLayout()
{
Menu = new ConstructionMenu();
Menu.AddToScreen();
}
void IWasPressed(ButtonEventArgs args)
{
Menu.Open();
}
public void AddToScreen()
{
UserInterfaceManager.StateRoot.AddChild(this);
}
public void RemoveFromScreen()
{
if (Parent != null)
{
Parent.RemoveChild(this);
}
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
Menu.Dispose();
}
base.Dispose(disposing);
}
}
}

View File

@@ -95,7 +95,7 @@ namespace Content.Client
else
{
_gameHud.EscapeButtonDown = false;
_escapeMenu.Visible = false;
_escapeMenu.Close();
}
}
}

View File

@@ -1,15 +1,16 @@
using Content.Client.GameObjects.Components.Mobs;
using System.Collections.Generic;
using System.Linq;
using Content.Client.GameObjects.Components.Mobs;
using Content.Client.UserInterface;
using Content.Shared.Input;
using Robust.Client.GameObjects;
using Robust.Client.Interfaces.Input;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls;
using Robust.Shared.GameObjects;
using Robust.Shared.Input;
using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Interfaces.Network;
using Robust.Shared.IoC;
using Robust.Shared.Utility;
using System.Collections.Generic;
using System.Linq;
using Robust.Client.Interfaces.Graphics;
using Robust.Client.UserInterface.Controls;
namespace Content.Client.GameObjects.Components.Actor
{
@@ -21,15 +22,15 @@ namespace Content.Client.GameObjects.Components.Actor
{
public override string Name => "Character Interface Component";
/// <summary>
/// Stored keybind to open the menu on keypress
/// </summary>
private InputCmdHandler _openMenuCmdHandler;
[Dependency]
#pragma warning disable 649
private readonly IGameHud _gameHud;
#pragma warning restore 649
/// <summary>
/// Window to hold each of the character interfaces
/// </summary>
private SS14Window _window;
public SS14Window Window { get; private set; }
/// <summary>
/// Create the window with all character UIs and bind it to a keypress
@@ -39,26 +40,11 @@ namespace Content.Client.GameObjects.Components.Actor
base.Initialize();
//Use all the character ui interfaced components to create the character window
var UIcomponents = Owner.GetAllComponents<ICharacterUI>();
_window = new CharacterWindow(UIcomponents);
var uiComponents = Owner.GetAllComponents<ICharacterUI>();
Window = new CharacterWindow(uiComponents);
Window.OnClose += () => _gameHud.CharacterButtonDown = false;
_window.AddToScreen();
//Toggle window visible/invisible on keypress
_openMenuCmdHandler = InputCmdHandler.FromDelegate(session => {
if (_window.Visible)
{
_window.Close();
}
else
{
_window.Open();
}
});
//Set keybind to open character menu
var inputMgr = IoCManager.Resolve<IInputManager>();
inputMgr.SetInputCommand(ContentKeyFunctions.OpenCharacterMenu, _openMenuCmdHandler);
Window.AddToScreen();
}
/// <summary>
@@ -68,13 +54,40 @@ namespace Content.Client.GameObjects.Components.Actor
{
base.OnRemove();
_window.Dispose();
_window = null;
Window.Dispose();
Window = null;
var inputMgr = IoCManager.Resolve<IInputManager>();
inputMgr.SetInputCommand(ContentKeyFunctions.OpenCharacterMenu, null);
}
public override void HandleMessage(ComponentMessage message, INetChannel netChannel = null, IComponent component = null)
{
base.HandleMessage(message, netChannel, component);
switch (message)
{
case PlayerAttachedMsg playerAttachedMsg:
_gameHud.CharacterButtonVisible = true;
_gameHud.CharacterButtonToggled = b =>
{
if (b)
{
Window.Open();
}
else
{
Window.Close();
}
};
break;
case PlayerDetachedMsg playerDetachedMsg:
_gameHud.CharacterButtonVisible = false;
break;
}
}
/// <summary>
/// A window that collects and shows all the individual character user interfaces
/// </summary>

View File

@@ -1,16 +1,15 @@
using System.Collections.Generic;
using Content.Client.Construction;
using Content.Client.UserInterface;
using Content.Shared.Construction;
using Content.Shared.GameObjects.Components.Construction;
using Robust.Client.GameObjects;
using Robust.Client.Interfaces.GameObjects;
using Robust.Client.Interfaces.Graphics;
using Robust.Shared.GameObjects;
using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Interfaces.GameObjects.Components;
using Robust.Shared.Interfaces.Network;
using Robust.Shared.IoC;
using Robust.Shared.Log;
using Robust.Shared.Map;
using Robust.Shared.Maths;
@@ -18,17 +17,19 @@ namespace Content.Client.GameObjects.Components.Construction
{
public class ConstructorComponent : SharedConstructorComponent
{
int nextId;
readonly Dictionary<int, ConstructionGhostComponent> Ghosts = new Dictionary<int, ConstructionGhostComponent>();
ConstructionButton Button;
#pragma warning disable 649
[Dependency] private readonly IGameHud _gameHud;
#pragma warning restore 649
ITransformComponent Transform;
private int nextId;
private readonly Dictionary<int, ConstructionGhostComponent> Ghosts = new Dictionary<int, ConstructionGhostComponent>();
public ConstructionMenu ConstructionMenu { get; private set; }
public override void Initialize()
{
base.Initialize();
Transform = Owner.GetComponent<ITransformComponent>();
Owner.GetComponent<ITransformComponent>();
}
public override void HandleMessage(ComponentMessage message, INetChannel netChannel = null, IComponent component = null)
@@ -38,15 +39,30 @@ namespace Content.Client.GameObjects.Components.Construction
switch (message)
{
case PlayerAttachedMsg _:
if (Button == null)
if (ConstructionMenu == null)
{
Button = new ConstructionButton {Owner = this};
ConstructionMenu = new ConstructionMenu {Owner = this};
ConstructionMenu.OnClose += () => _gameHud.CraftingButtonDown = false;
}
Button.AddToScreen();
ConstructionMenu.AddToScreen();
_gameHud.CraftingButtonVisible = true;
_gameHud.CraftingButtonToggled = b =>
{
if (b)
{
ConstructionMenu.Open();
}
else
{
ConstructionMenu.Close();
}
};
break;
case PlayerDetachedMsg _:
Button.RemoveFromScreen();
ConstructionMenu.Parent.RemoveChild(ConstructionMenu);
_gameHud.CraftingButtonVisible = false;
break;
case AckStructureConstructionMessage ackMsg:
@@ -57,7 +73,7 @@ namespace Content.Client.GameObjects.Components.Construction
public override void OnRemove()
{
Button?.Dispose();
ConstructionMenu?.Dispose();
}
public void SpawnGhost(ConstructionPrototype prototype, GridCoordinates loc, Direction dir)

View File

@@ -0,0 +1,70 @@
using Content.Client.GameObjects.Components.Actor;
using Content.Client.UserInterface;
using Content.Shared.Input;
using Robust.Client.GameObjects.EntitySystems;
using Robust.Client.Player;
using Robust.Client.UserInterface.CustomControls;
using Robust.Shared.GameObjects.Systems;
using Robust.Shared.Input;
using Robust.Shared.IoC;
namespace Content.Client.GameObjects.EntitySystems
{
public sealed class CharacterInterfaceSystem : EntitySystem
{
#pragma warning disable 649
[Dependency] private readonly IGameHud _gameHud;
[Dependency] private readonly IPlayerManager _playerManager;
#pragma warning restore 649
public override void Initialize()
{
base.Initialize();
var inputSys = EntitySystemManager.GetEntitySystem<InputSystem>();
inputSys.BindMap.BindFunction(ContentKeyFunctions.OpenCharacterMenu,
new PointerInputCmdHandler(HandleOpenCharacterMenu));
}
private void HandleOpenCharacterMenu(in PointerInputCmdHandler.PointerInputCmdArgs args)
{
if (_playerManager.LocalPlayer.ControlledEntity == null
|| !_playerManager.LocalPlayer.ControlledEntity.TryGetComponent(out CharacterInterface characterInterface))
{
return;
}
var menu = characterInterface.Window;
if (menu.Visible)
{
if (menu.IsAtFront())
{
_setOpenValue(menu, false);
}
else
{
menu.MoveToFront();
}
}
else
{
_setOpenValue(menu, true);
}
}
private void _setOpenValue(SS14Window menu, bool value)
{
if (value)
{
_gameHud.CharacterButtonDown = true;
menu.OpenCentered();
}
else
{
_gameHud.CharacterButtonDown = false;
menu.Close();
}
}
}
}

View File

@@ -0,0 +1,70 @@
using Content.Client.Construction;
using Content.Client.GameObjects.Components.Construction;
using Content.Client.UserInterface;
using Content.Shared.Input;
using Robust.Client.GameObjects.EntitySystems;
using Robust.Client.Player;
using Robust.Shared.GameObjects.Systems;
using Robust.Shared.Input;
using Robust.Shared.IoC;
namespace Content.Client.GameObjects.EntitySystems
{
public sealed class ConstructorSystem : EntitySystem
{
#pragma warning disable 649
[Dependency] private readonly IGameHud _gameHud;
[Dependency] private readonly IPlayerManager _playerManager;
#pragma warning restore 649
public override void Initialize()
{
base.Initialize();
var inputSys = EntitySystemManager.GetEntitySystem<InputSystem>();
inputSys.BindMap.BindFunction(ContentKeyFunctions.OpenCraftingMenu,
new PointerInputCmdHandler(HandleOpenCraftingMenu));
}
private void HandleOpenCraftingMenu(in PointerInputCmdHandler.PointerInputCmdArgs args)
{
if (_playerManager.LocalPlayer.ControlledEntity == null
|| !_playerManager.LocalPlayer.ControlledEntity.TryGetComponent(out ConstructorComponent constructor))
{
return;
}
var menu = constructor.ConstructionMenu;
if (menu.Visible)
{
if (menu.IsAtFront())
{
_setOpenValue(menu, false);
}
else
{
menu.MoveToFront();
}
}
else
{
_setOpenValue(menu, true);
}
}
private void _setOpenValue(ConstructionMenu menu, bool value)
{
if (value)
{
_gameHud.CraftingButtonDown = true;
menu.OpenCentered();
}
else
{
_gameHud.CraftingButtonDown = false;
menu.Close();
}
}
}
}

View File

@@ -45,7 +45,6 @@ namespace Content.Client.GameTicking
[ViewVariables] private LobbyGui _lobby;
[ViewVariables] private bool _gameStarted;
[ViewVariables] private DateTime _startTime;
[ViewVariables] private TutorialButton _tutorialButton;
public void Initialize()
{
@@ -172,12 +171,6 @@ namespace Content.Client.GameTicking
_gameChat = null;
}
if (_tutorialButton != null)
{
_tutorialButton.Dispose();
_tutorialButton = null;
}
_gameHud.RootControl.Parent?.RemoveChild(_gameHud.RootControl);
_tickerState = TickerState.InLobby;
@@ -253,9 +246,6 @@ namespace Content.Client.GameTicking
_userInterfaceManager.StateRoot.AddChild(_gameChat);
_userInterfaceManager.StateRoot.AddChild(_gameHud.RootControl);
_chatManager.SetChatBox(_gameChat);
_tutorialButton = new TutorialButton();
_userInterfaceManager.StateRoot.AddChild(_tutorialButton);
_tutorialButton.SetAnchorAndMarginPreset(Control.LayoutPreset.BottomLeft, Control.LayoutPresetMode.MinSize, 50);
_gameChat.DefaultChatFormat = "say \"{0}\"";
}

View File

@@ -24,6 +24,7 @@ namespace Content.Client.Input
human.AddFunction(ContentKeyFunctions.ActivateItemInWorld);
human.AddFunction(ContentKeyFunctions.ThrowItemInHand);
human.AddFunction(ContentKeyFunctions.OpenContextMenu);
human.AddFunction(ContentKeyFunctions.OpenCraftingMenu);
// Disabled until there is feedback, so hitting tab doesn't suddenly break interaction.
// human.AddFunction(ContentKeyFunctions.ToggleCombatMode);

View File

@@ -18,8 +18,21 @@ namespace Content.Client.UserInterface
{
Control RootControl { get; }
// Escape top button.
bool EscapeButtonDown { get; set; }
Action<bool> EscapeButtonToggled { get; set; }
// Character top button.
bool CharacterButtonDown { get; set; }
bool CharacterButtonVisible { get; set; }
Action<bool> CharacterButtonToggled { get; set; }
// Crafting top button.
bool CraftingButtonDown { get; set; }
bool CraftingButtonVisible { get; set; }
Action<bool> CraftingButtonToggled { get; set; }
// Init logic.
void Initialize();
}
@@ -27,8 +40,10 @@ namespace Content.Client.UserInterface
{
private HBoxContainer _topButtonsContainer;
private TopButton _buttonEscapeMenu;
private TopButton _buttonInventoryMenu;
private TopButton _buttonTutorial;
private TopButton _buttonCharacterMenu;
private TopButton _buttonCraftingMenu;
private TutorialWindow _tutorialWindow;
#pragma warning disable 649
[Dependency] private readonly IResourceCache _resourceCache;
@@ -42,6 +57,9 @@ namespace Content.Client.UserInterface
RootControl.SetAnchorPreset(Control.LayoutPreset.Wide);
var escapeTexture = _resourceCache.GetTexture("/Textures/UserInterface/hamburger.svg.96dpi.png");
var characterTexture = _resourceCache.GetTexture("/Textures/UserInterface/character.svg.96dpi.png");
var craftingTexture = _resourceCache.GetTexture("/Textures/UserInterface/hammer.svg.96dpi.png");
var tutorialTexture = _resourceCache.GetTexture("/Textures/UserInterface/tutorial.svg.96dpi.png");
_topButtonsContainer = new HBoxContainer
{
@@ -53,30 +71,71 @@ namespace Content.Client.UserInterface
// TODO: Pull key names here from the actual key binding config.
// Escape
_buttonEscapeMenu = new TopButton(escapeTexture, "esc")
_buttonEscapeMenu = new TopButton(escapeTexture, "ESC")
{
ToolTip = _localizationManager.GetString("Open escape menu.")
};
_topButtonsContainer.AddChild(_buttonEscapeMenu);
// Inventory
_buttonInventoryMenu = new TopButton(escapeTexture, "i")
_buttonEscapeMenu.OnToggled += args => EscapeButtonToggled?.Invoke(args.Pressed);
// Tutorial
_buttonTutorial = new TopButton(tutorialTexture, " ")
{
ToolTip = _localizationManager.GetString("Open inventory menu.")
ToolTip = _localizationManager.GetString("Open tutorial.")
};
_topButtonsContainer.AddChild(_buttonInventoryMenu);
_topButtonsContainer.AddChild(_buttonTutorial);
_buttonTutorial.OnToggled += ButtonTutorialOnOnToggled;
// Inventory
_buttonCharacterMenu = new TopButton(characterTexture, "C")
{
ToolTip = _localizationManager.GetString("Open character menu."),
Visible = false
};
_topButtonsContainer.AddChild(_buttonCharacterMenu);
_buttonCharacterMenu.OnToggled += args => CharacterButtonToggled?.Invoke(args.Pressed);
// Crafting
_buttonCraftingMenu = new TopButton(escapeTexture, "g")
_buttonCraftingMenu = new TopButton(craftingTexture, "G")
{
ToolTip = _localizationManager.GetString("Open crafting menu.")
ToolTip = _localizationManager.GetString("Open crafting menu."),
Visible = false
};
_topButtonsContainer.AddChild(_buttonCraftingMenu);
_buttonEscapeMenu.OnToggled += args => EscapeButtonToggled?.Invoke(args.Pressed);
_buttonCraftingMenu.OnToggled += args => CraftingButtonToggled?.Invoke(args.Pressed);
_tutorialWindow = new TutorialWindow();
_tutorialWindow.AddToScreen();
_tutorialWindow.OnClose += () => _buttonTutorial.Pressed = false;
}
private void ButtonTutorialOnOnToggled(BaseButton.ButtonToggledEventArgs obj)
{
if (_tutorialWindow.Visible)
{
if (!_tutorialWindow.IsAtFront())
{
_tutorialWindow.MoveToFront();
}
else
{
_tutorialWindow.Close();
}
}
else
{
_tutorialWindow.OpenCentered();
_buttonTutorial.Pressed = true;
}
}
public Control RootControl { get; private set; }
@@ -89,6 +148,33 @@ namespace Content.Client.UserInterface
public Action<bool> EscapeButtonToggled { get; set; }
public bool CharacterButtonDown
{
get => _buttonCharacterMenu.Pressed;
set => _buttonCharacterMenu.Pressed = value;
}
public bool CharacterButtonVisible
{
get => _buttonCharacterMenu.Visible;
set => _buttonCharacterMenu.Visible = value;
}
public Action<bool> CharacterButtonToggled { get; set; }
public bool CraftingButtonDown
{
get => _buttonCraftingMenu.Pressed;
set => _buttonCraftingMenu.Pressed = value;
}
public bool CraftingButtonVisible
{
get => _buttonCraftingMenu.Visible;
set => _buttonCraftingMenu.Visible = value;
}
public Action<bool> CraftingButtonToggled { get; set; }
public sealed class TopButton : BaseButton
{
@@ -110,8 +196,10 @@ namespace Content.Client.UserInterface
{
Texture = texture,
SizeFlagsHorizontal = SizeFlags.ShrinkCenter,
SizeFlagsVertical = SizeFlags.Expand | SizeFlags.ShrinkCenter,
MouseFilter = MouseFilterMode.Ignore,
ModulateSelfOverride = ColorNormal
ModulateSelfOverride = ColorNormal,
CustomMinimumSize = (0, 32)
});
_container.AddChild(_label = new Label

View File

@@ -4,7 +4,7 @@ using Robust.Shared.Utility;
namespace Content.Client.UserInterface
{
internal sealed class TutorialButton : Button
public sealed class TutorialWindow : SS14Window
{
private const string TutorialContents = @"Hi and welcome to Space Station 14!
@@ -21,32 +21,19 @@ New to SS14: You can press ""E"" to activate objects. This functions similarly t
You can talk in OOC by prefixing the message with [ or /ooc.
If you are not on a QWERTY keyboard, the keys mentioned above are bound to the physical location on your keyboard,
not what letter they correspond to. For example on AZERTY movement is ZQSD, drop is A, W is activate in hand.
If you are not on a QWERTY keyboard, the keys mentioned above are bound to the physical location on your keyboard, not what letter they correspond to.
For example on AZERTY movement is ZQSD, drop is A, W is activate in hand.
If you have any feedback, questions, bug reports, etc..., do not be afraid to tell us!
You can ask on Discord or heck, just write it in OOC, we'll catch it.
";
You can ask on Discord or heck, just write it in OOC! We'll catch it.";
public TutorialButton()
public TutorialWindow()
{
OnPressed += OnOnPressed;
Text = "Tutorial";
}
private void OnOnPressed(ButtonEventArgs obj)
{
_openTutorialWindow();
}
private void _openTutorialWindow()
{
var window = new SS14Window {Title = "Tutorial"};
HideOnClose = true;
Visible = false;
var scrollContainer = new ScrollContainer();
window.Contents.AddChild(scrollContainer);
Contents.AddChild(scrollContainer);
var label = new RichTextLabel();
scrollContainer.AddChild(label);
@@ -54,8 +41,6 @@ You can ask on Discord or heck, just write it in OOC, we'll catch it.
var message = new FormattedMessage();
message.AddText(TutorialContents);
label.SetMessage(message);
window.AddToScreen();
}
}
}

View File

@@ -9,6 +9,7 @@ namespace Content.Shared.Input
public static readonly BoundKeyFunction Drop = "Drop";
public static readonly BoundKeyFunction ActivateItemInHand = "ActivateItemInHand";
public static readonly BoundKeyFunction OpenCharacterMenu = "OpenCharacterMenu";
public static readonly BoundKeyFunction OpenCraftingMenu = "OpenCraftingMenu";
public static readonly BoundKeyFunction ExamineEntity = "ExamineEntity";
public static readonly BoundKeyFunction UseItemInHand = "UseItemInHand"; // use hand item on world entity
public static readonly BoundKeyFunction ActivateItemInWorld = "ActivateItemInWorld"; // default action on world entity

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
id="svg897"
version="1.1"
viewBox="0 0 6.3499999 8.3998403"
height="8.3998404mm"
width="6.3499999mm">
<defs
id="defs891" />
<metadata
id="metadata894">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(34.169032,-124.25611)"
id="layer1">
<path
id="path825"
d="m -30.978686,128.48944 c 0.949854,0 1.719792,-0.94766 1.719792,-2.11667 0,-1.16901 -0.252677,-2.11666 -1.719792,-2.11666 -1.466929,0 -1.719792,0.94765 -1.719792,2.11666 0,1.16901 0.770017,2.11667 1.719792,2.11667 z"
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd;stroke-width:0.26458332;fill-opacity:1" />
<path
id="path831"
d="m -27.822487,131.3878 c -0.03122,-2.02358 -0.287867,-2.60019 -2.251075,-2.96518 0,0 -0.276225,0.36274 -0.920486,0.36274 -0.644048,0 -0.920459,-0.36274 -0.920459,-0.36274 -1.941777,0.361 -2.213927,0.92906 -2.249725,2.89944 -0.0029,0.16089 -0.0043,0.16936 -0.0048,0.15068 1.33e-4,0.035 2.65e-4,0.0997 2.65e-4,0.21259 0,0 0.467386,0.97062 3.174735,0.97062 2.707482,0 3.175,-0.97062 3.175,-0.97062 0,-0.0725 0,-0.12295 0,-0.15727 -5.29e-4,0.0116 -0.0016,-0.0108 -0.0034,-0.14026 z"
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd;stroke-width:0.26458332;fill-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 569 B

View File

@@ -1,45 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="7.9563375mm"
height="7.1438789mm"
viewBox="0 0 7.9563375 7.1438789"
version="1.1"
id="svg4593"
sodipodi:docname="hamburger.svg"
inkscape:export-filename="/home/pj/Projects/space-station-14-content/Resources/Textures/UserInterface/hamburger.svg.96dpi.png"
inkscape:export-xdpi="95.998207"
inkscape:export-ydpi="95.998207"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
version="1.1"
viewBox="0 0 7.9563375 7.1438789"
height="7.1438789mm"
width="7.9563375mm">
<defs
id="defs4587" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="5.6"
inkscape:cx="35.456574"
inkscape:cy="-4.4711292"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1043"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
units="px" />
<metadata
id="metadata4590">
<rdf:RDF>
@@ -53,33 +25,19 @@
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-97.319452,-120.31497)">
transform="translate(-97.319452,-120.31497)"
id="layer1">
<path
inkscape:connector-curvature="0"
style="stroke:#ffffff;stroke-width:1.32291663;stroke-linecap:round;stroke-opacity:1"
d="m 97.990331,120.97649 h 6.614579"
id="path4"
inkscape:export-filename="/home/pj/Projects/space-station-14-content/Resources/Textures/UserInterface/hamburger.png"
inkscape:export-xdpi="95.998207"
inkscape:export-ydpi="95.998207" />
d="m 97.990331,120.97649 h 6.614579"
style="stroke:#ffffff;stroke-width:1.32291663;stroke-linecap:round;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
style="stroke:#ffffff;stroke-width:1.32291663;stroke-linecap:round;stroke-opacity:1"
d="m 97.990331,123.8869 h 6.614579"
id="path6"
inkscape:export-filename="/home/pj/Projects/space-station-14-content/Resources/Textures/UserInterface/hamburger.png"
inkscape:export-xdpi="95.998207"
inkscape:export-ydpi="95.998207" />
d="m 97.990331,123.8869 h 6.614579"
style="stroke:#ffffff;stroke-width:1.32291663;stroke-linecap:round;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
style="stroke:#ffffff;stroke-width:1.32291663;stroke-linecap:round;stroke-opacity:1"
d="m 97.990331,126.79732 h 6.614579"
id="path8"
inkscape:export-filename="/home/pj/Projects/space-station-14-content/Resources/Textures/UserInterface/hamburger.png"
inkscape:export-xdpi="95.998207"
inkscape:export-ydpi="95.998207" />
d="m 97.990331,126.79732 h 6.614579"
style="stroke:#ffffff;stroke-width:1.32291663;stroke-linecap:round;stroke-opacity:1" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
id="svg1486"
version="1.1"
viewBox="0 0 5.3584948 8.1514988"
height="8.1514988mm"
width="5.3584948mm">
<defs
id="defs1480" />
<metadata
id="metadata1483">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(75.250695,117.55798)"
id="layer1">
<path
id="path34"
d="m -70.236934,-117.55773 -0.861483,0.0297 c -0.04048,0.001 -0.07832,0.0195 -0.105569,0.0503 l -0.102658,0.11563 -0.112713,-0.10822 c -0.03016,-0.0288 -0.06958,-0.044 -0.109802,-0.0429 l -1.723231,0.0593 c -0.345546,0.0119 -0.924454,0.0318 -1.479814,0.65811 -0.555096,0.62585 -0.529432,1.18144 -0.51144,1.58708 0.0029,0.064 0.0426,0.12052 0.100806,0.14295 0.05821,0.0227 0.123296,0.007 0.164571,-0.04 0.827352,-0.93271 1.309423,-0.67016 1.599935,-0.39139 0.241565,0.23159 0.245269,0.55176 0.259557,0.73109 h 1.480872 c 0.0463,-0.33388 0.127,-0.82923 0.259028,-0.9535 l 0.154516,0.14827 c 0.03016,0.0288 0.06959,0.044 0.109802,0.0428 l 1.077119,-0.0371 c 0.04022,-0.002 0.07832,-0.0195 0.105569,-0.0503 l 0.0034,-0.004 c 0.02752,-0.033 0.04022,-0.0765 0.03519,-0.11983 l -0.184679,-1.67522 c -0.0093,-0.0833 -0.07858,-0.14548 -0.159015,-0.14294 z"
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd;stroke-width:0.26458332;fill-opacity:0.94117647" />
<path
id="path36"
d="m -73.125919,-110.25648 c -0.004,0.22704 0.07726,0.43934 0.242094,0.61087 0.313531,0.32631 0.832379,0.31758 1.157287,-0.0195 0.165365,-0.17174 0.256381,-0.40722 0.249767,-0.64571 l -0.163777,-4.08366 h -1.485371 z"
style="clip-rule:evenodd;fill:#ffffff;fill-rule:evenodd;stroke-width:0.26458332;fill-opacity:0.94117647" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 B

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
id="svg892"
version="1.1"
viewBox="0 0 7.1437076 8.3980603"
height="31.7407"
width="26.99984">
<defs
id="defs886" />
<metadata
id="metadata889">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-107.55313,-136.31883)"
id="layer1">
<path
id="path22"
d="m 113.55573,140.835 c 0,0.37476 -0.25718,0.68731 -0.57362,0.68731 h -0.0262 c -0.31618,0 -0.57415,-0.31255 -0.57415,-0.68731 v -0.54742 h -2.51354 v 0.54742 c 0,0.37476 -0.25797,0.68731 -0.57441,0.68731 h -0.0262 c -0.31645,0 -0.57362,-0.31255 -0.57362,-0.68731 v -0.54742 h -0.74401 v 3.75983 c 0,0.36743 0.24633,0.66948 0.55642,0.66948 h 5.2369 c 0.31009,0 0.55668,-0.30205 0.55668,-0.66948 v -3.75983 h -0.74427 z"
style="clip-rule:evenodd;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke-width:0.26458332" />
<path
id="path24"
d="m 112.77863,136.59632 c 0,-0.1513 -0.11139,-0.27749 -0.23892,-0.27749 h -2.82945 c -0.12779,0 -0.23892,0.12619 -0.23892,0.27749 v 0.54565 h 3.30729 z"
style="clip-rule:evenodd;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke-width:0.26458332" />
<path
id="path26"
d="m 114.13887,137.37719 h -6.02747 c -0.14791,-0.002 -0.29025,0.0669 -0.39503,0.19034 -0.10504,0.12348 -0.16377,0.2916 -0.16324,0.4668 v 2.08669 h 1.14114 v -0.56004 c 0,-0.0649 0.0444,-0.12592 0.0992,-0.12592 h 0.97473 c 0.0548,0 0.10001,0.061 0.10001,0.12592 v 0.56004 h 2.51354 v -0.56004 c 0,-0.0649 0.0452,-0.12592 0.10001,-0.12592 h 0.97499 c 0.0548,0 0.0992,0.061 0.0992,0.12592 v 0.56004 h 1.14088 v -2.08669 c 5.3e-4,-0.1752 -0.0582,-0.34332 -0.16324,-0.4668 -0.10478,-0.12348 -0.24712,-0.19204 -0.39476,-0.19034 z"
style="clip-rule:evenodd;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke-width:0.26458332" />
<path
id="path28"
d="m 112.98957,141.30192 c 0.20664,0 0.37517,-0.20703 0.37517,-0.45212 v -1.23338 h -0.77734 v 1.23338 c 0,0.24501 0.16907,0.45212 0.37597,0.45212 z"
style="clip-rule:evenodd;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke-width:0.26458332" />
<path
id="path30"
d="m 109.65798,139.61667 h -0.77734 v 1.23338 c 0,0.24501 0.16854,0.45212 0.37518,0.45212 h 0.0264 c 0.20664,0 0.37571,-0.20703 0.37571,-0.45212 v -0.62098 c 0,-0.011 -0.005,-0.0226 -0.005,-0.0347 0,-0.0121 0.005,-0.0237 0.005,-0.0347 z"
style="clip-rule:evenodd;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke-width:0.26458332" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 B

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
id="svg1475"
version="1.1"
viewBox="0 0 5.3731326 8.4666643"
height="8.4666643mm"
width="5.3731327mm">
<defs
id="defs1469" />
<metadata
id="metadata1472">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-86.25635,-119.61469)"
id="layer1">
<path
id="path2050"
d="m 88.782112,125.68043 c 0,-0.22408 0.08061,-0.54167 0.147556,-0.68488 0.443259,-0.9484 2.067069,-0.31899 2.067069,-2.72423 0,-1.19082 -0.789124,-2.02388 -1.976921,-2.02388 -1.187795,0 -2.13072,0.83017 -2.13072,2.02388"
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:1.26549149;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
r="0.94911855"
cy="127.13224"
cx="88.782127"
id="path5787"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2.95794892;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 579 B

View File

@@ -76,3 +76,6 @@ binds:
- function: ToggleCombatMode
type: Toggle
key: Tab
- function: OpenCraftingMenu
type: state
key: G