Adds character menu, crafting menu and tutorial to the top left.
@@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -95,7 +95,7 @@ namespace Content.Client
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
_gameHud.EscapeButtonDown = false;
|
_gameHud.EscapeButtonDown = false;
|
||||||
_escapeMenu.Visible = false;
|
_escapeMenu.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 Content.Shared.Input;
|
||||||
|
using Robust.Client.GameObjects;
|
||||||
using Robust.Client.Interfaces.Input;
|
using Robust.Client.Interfaces.Input;
|
||||||
|
using Robust.Client.UserInterface.Controls;
|
||||||
using Robust.Client.UserInterface.CustomControls;
|
using Robust.Client.UserInterface.CustomControls;
|
||||||
using Robust.Shared.GameObjects;
|
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.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
|
namespace Content.Client.GameObjects.Components.Actor
|
||||||
{
|
{
|
||||||
@@ -21,15 +22,15 @@ namespace Content.Client.GameObjects.Components.Actor
|
|||||||
{
|
{
|
||||||
public override string Name => "Character Interface Component";
|
public override string Name => "Character Interface Component";
|
||||||
|
|
||||||
/// <summary>
|
[Dependency]
|
||||||
/// Stored keybind to open the menu on keypress
|
#pragma warning disable 649
|
||||||
/// </summary>
|
private readonly IGameHud _gameHud;
|
||||||
private InputCmdHandler _openMenuCmdHandler;
|
#pragma warning restore 649
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Window to hold each of the character interfaces
|
/// Window to hold each of the character interfaces
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private SS14Window _window;
|
public SS14Window Window { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Create the window with all character UIs and bind it to a keypress
|
/// 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();
|
base.Initialize();
|
||||||
|
|
||||||
//Use all the character ui interfaced components to create the character window
|
//Use all the character ui interfaced components to create the character window
|
||||||
var UIcomponents = Owner.GetAllComponents<ICharacterUI>();
|
var uiComponents = Owner.GetAllComponents<ICharacterUI>();
|
||||||
_window = new CharacterWindow(UIcomponents);
|
Window = new CharacterWindow(uiComponents);
|
||||||
|
Window.OnClose += () => _gameHud.CharacterButtonDown = false;
|
||||||
|
|
||||||
_window.AddToScreen();
|
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -68,13 +54,40 @@ namespace Content.Client.GameObjects.Components.Actor
|
|||||||
{
|
{
|
||||||
base.OnRemove();
|
base.OnRemove();
|
||||||
|
|
||||||
_window.Dispose();
|
Window.Dispose();
|
||||||
_window = null;
|
Window = null;
|
||||||
|
|
||||||
var inputMgr = IoCManager.Resolve<IInputManager>();
|
var inputMgr = IoCManager.Resolve<IInputManager>();
|
||||||
inputMgr.SetInputCommand(ContentKeyFunctions.OpenCharacterMenu, null);
|
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>
|
/// <summary>
|
||||||
/// A window that collects and shows all the individual character user interfaces
|
/// A window that collects and shows all the individual character user interfaces
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,16 +1,15 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Content.Client.Construction;
|
using Content.Client.Construction;
|
||||||
|
using Content.Client.UserInterface;
|
||||||
using Content.Shared.Construction;
|
using Content.Shared.Construction;
|
||||||
using Content.Shared.GameObjects.Components.Construction;
|
using Content.Shared.GameObjects.Components.Construction;
|
||||||
using Robust.Client.GameObjects;
|
using Robust.Client.GameObjects;
|
||||||
using Robust.Client.Interfaces.GameObjects;
|
using Robust.Client.Interfaces.GameObjects;
|
||||||
using Robust.Client.Interfaces.Graphics;
|
|
||||||
using Robust.Shared.GameObjects;
|
using Robust.Shared.GameObjects;
|
||||||
using Robust.Shared.Interfaces.GameObjects;
|
using Robust.Shared.Interfaces.GameObjects;
|
||||||
using Robust.Shared.Interfaces.GameObjects.Components;
|
using Robust.Shared.Interfaces.GameObjects.Components;
|
||||||
using Robust.Shared.Interfaces.Network;
|
using Robust.Shared.Interfaces.Network;
|
||||||
using Robust.Shared.IoC;
|
using Robust.Shared.IoC;
|
||||||
using Robust.Shared.Log;
|
|
||||||
using Robust.Shared.Map;
|
using Robust.Shared.Map;
|
||||||
using Robust.Shared.Maths;
|
using Robust.Shared.Maths;
|
||||||
|
|
||||||
@@ -18,17 +17,19 @@ namespace Content.Client.GameObjects.Components.Construction
|
|||||||
{
|
{
|
||||||
public class ConstructorComponent : SharedConstructorComponent
|
public class ConstructorComponent : SharedConstructorComponent
|
||||||
{
|
{
|
||||||
int nextId;
|
#pragma warning disable 649
|
||||||
readonly Dictionary<int, ConstructionGhostComponent> Ghosts = new Dictionary<int, ConstructionGhostComponent>();
|
[Dependency] private readonly IGameHud _gameHud;
|
||||||
ConstructionButton Button;
|
#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()
|
public override void Initialize()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
base.Initialize();
|
||||||
|
|
||||||
Transform = Owner.GetComponent<ITransformComponent>();
|
Owner.GetComponent<ITransformComponent>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void HandleMessage(ComponentMessage message, INetChannel netChannel = null, IComponent component = null)
|
public override void HandleMessage(ComponentMessage message, INetChannel netChannel = null, IComponent component = null)
|
||||||
@@ -38,15 +39,30 @@ namespace Content.Client.GameObjects.Components.Construction
|
|||||||
switch (message)
|
switch (message)
|
||||||
{
|
{
|
||||||
case PlayerAttachedMsg _:
|
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;
|
break;
|
||||||
|
|
||||||
case PlayerDetachedMsg _:
|
case PlayerDetachedMsg _:
|
||||||
Button.RemoveFromScreen();
|
ConstructionMenu.Parent.RemoveChild(ConstructionMenu);
|
||||||
|
_gameHud.CraftingButtonVisible = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case AckStructureConstructionMessage ackMsg:
|
case AckStructureConstructionMessage ackMsg:
|
||||||
@@ -57,7 +73,7 @@ namespace Content.Client.GameObjects.Components.Construction
|
|||||||
|
|
||||||
public override void OnRemove()
|
public override void OnRemove()
|
||||||
{
|
{
|
||||||
Button?.Dispose();
|
ConstructionMenu?.Dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SpawnGhost(ConstructionPrototype prototype, GridCoordinates loc, Direction dir)
|
public void SpawnGhost(ConstructionPrototype prototype, GridCoordinates loc, Direction dir)
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -45,7 +45,6 @@ namespace Content.Client.GameTicking
|
|||||||
[ViewVariables] private LobbyGui _lobby;
|
[ViewVariables] private LobbyGui _lobby;
|
||||||
[ViewVariables] private bool _gameStarted;
|
[ViewVariables] private bool _gameStarted;
|
||||||
[ViewVariables] private DateTime _startTime;
|
[ViewVariables] private DateTime _startTime;
|
||||||
[ViewVariables] private TutorialButton _tutorialButton;
|
|
||||||
|
|
||||||
public void Initialize()
|
public void Initialize()
|
||||||
{
|
{
|
||||||
@@ -172,12 +171,6 @@ namespace Content.Client.GameTicking
|
|||||||
_gameChat = null;
|
_gameChat = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_tutorialButton != null)
|
|
||||||
{
|
|
||||||
_tutorialButton.Dispose();
|
|
||||||
_tutorialButton = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
_gameHud.RootControl.Parent?.RemoveChild(_gameHud.RootControl);
|
_gameHud.RootControl.Parent?.RemoveChild(_gameHud.RootControl);
|
||||||
|
|
||||||
_tickerState = TickerState.InLobby;
|
_tickerState = TickerState.InLobby;
|
||||||
@@ -253,9 +246,6 @@ namespace Content.Client.GameTicking
|
|||||||
_userInterfaceManager.StateRoot.AddChild(_gameChat);
|
_userInterfaceManager.StateRoot.AddChild(_gameChat);
|
||||||
_userInterfaceManager.StateRoot.AddChild(_gameHud.RootControl);
|
_userInterfaceManager.StateRoot.AddChild(_gameHud.RootControl);
|
||||||
_chatManager.SetChatBox(_gameChat);
|
_chatManager.SetChatBox(_gameChat);
|
||||||
_tutorialButton = new TutorialButton();
|
|
||||||
_userInterfaceManager.StateRoot.AddChild(_tutorialButton);
|
|
||||||
_tutorialButton.SetAnchorAndMarginPreset(Control.LayoutPreset.BottomLeft, Control.LayoutPresetMode.MinSize, 50);
|
|
||||||
_gameChat.DefaultChatFormat = "say \"{0}\"";
|
_gameChat.DefaultChatFormat = "say \"{0}\"";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ namespace Content.Client.Input
|
|||||||
human.AddFunction(ContentKeyFunctions.ActivateItemInWorld);
|
human.AddFunction(ContentKeyFunctions.ActivateItemInWorld);
|
||||||
human.AddFunction(ContentKeyFunctions.ThrowItemInHand);
|
human.AddFunction(ContentKeyFunctions.ThrowItemInHand);
|
||||||
human.AddFunction(ContentKeyFunctions.OpenContextMenu);
|
human.AddFunction(ContentKeyFunctions.OpenContextMenu);
|
||||||
|
human.AddFunction(ContentKeyFunctions.OpenCraftingMenu);
|
||||||
// Disabled until there is feedback, so hitting tab doesn't suddenly break interaction.
|
// Disabled until there is feedback, so hitting tab doesn't suddenly break interaction.
|
||||||
// human.AddFunction(ContentKeyFunctions.ToggleCombatMode);
|
// human.AddFunction(ContentKeyFunctions.ToggleCombatMode);
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,21 @@ namespace Content.Client.UserInterface
|
|||||||
{
|
{
|
||||||
Control RootControl { get; }
|
Control RootControl { get; }
|
||||||
|
|
||||||
|
// Escape top button.
|
||||||
bool EscapeButtonDown { get; set; }
|
bool EscapeButtonDown { get; set; }
|
||||||
Action<bool> EscapeButtonToggled { 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();
|
void Initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -27,8 +40,10 @@ namespace Content.Client.UserInterface
|
|||||||
{
|
{
|
||||||
private HBoxContainer _topButtonsContainer;
|
private HBoxContainer _topButtonsContainer;
|
||||||
private TopButton _buttonEscapeMenu;
|
private TopButton _buttonEscapeMenu;
|
||||||
private TopButton _buttonInventoryMenu;
|
private TopButton _buttonTutorial;
|
||||||
|
private TopButton _buttonCharacterMenu;
|
||||||
private TopButton _buttonCraftingMenu;
|
private TopButton _buttonCraftingMenu;
|
||||||
|
private TutorialWindow _tutorialWindow;
|
||||||
|
|
||||||
#pragma warning disable 649
|
#pragma warning disable 649
|
||||||
[Dependency] private readonly IResourceCache _resourceCache;
|
[Dependency] private readonly IResourceCache _resourceCache;
|
||||||
@@ -42,6 +57,9 @@ namespace Content.Client.UserInterface
|
|||||||
RootControl.SetAnchorPreset(Control.LayoutPreset.Wide);
|
RootControl.SetAnchorPreset(Control.LayoutPreset.Wide);
|
||||||
|
|
||||||
var escapeTexture = _resourceCache.GetTexture("/Textures/UserInterface/hamburger.svg.96dpi.png");
|
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
|
_topButtonsContainer = new HBoxContainer
|
||||||
{
|
{
|
||||||
@@ -53,30 +71,71 @@ namespace Content.Client.UserInterface
|
|||||||
|
|
||||||
// TODO: Pull key names here from the actual key binding config.
|
// TODO: Pull key names here from the actual key binding config.
|
||||||
// Escape
|
// Escape
|
||||||
_buttonEscapeMenu = new TopButton(escapeTexture, "esc")
|
_buttonEscapeMenu = new TopButton(escapeTexture, "ESC")
|
||||||
{
|
{
|
||||||
ToolTip = _localizationManager.GetString("Open escape menu.")
|
ToolTip = _localizationManager.GetString("Open escape menu.")
|
||||||
};
|
};
|
||||||
|
|
||||||
_topButtonsContainer.AddChild(_buttonEscapeMenu);
|
_topButtonsContainer.AddChild(_buttonEscapeMenu);
|
||||||
|
|
||||||
// Inventory
|
_buttonEscapeMenu.OnToggled += args => EscapeButtonToggled?.Invoke(args.Pressed);
|
||||||
_buttonInventoryMenu = new TopButton(escapeTexture, "i")
|
|
||||||
|
// 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
|
// 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);
|
_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; }
|
public Control RootControl { get; private set; }
|
||||||
@@ -89,6 +148,33 @@ namespace Content.Client.UserInterface
|
|||||||
|
|
||||||
public Action<bool> EscapeButtonToggled { get; set; }
|
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
|
public sealed class TopButton : BaseButton
|
||||||
{
|
{
|
||||||
@@ -110,8 +196,10 @@ namespace Content.Client.UserInterface
|
|||||||
{
|
{
|
||||||
Texture = texture,
|
Texture = texture,
|
||||||
SizeFlagsHorizontal = SizeFlags.ShrinkCenter,
|
SizeFlagsHorizontal = SizeFlags.ShrinkCenter,
|
||||||
|
SizeFlagsVertical = SizeFlags.Expand | SizeFlags.ShrinkCenter,
|
||||||
MouseFilter = MouseFilterMode.Ignore,
|
MouseFilter = MouseFilterMode.Ignore,
|
||||||
ModulateSelfOverride = ColorNormal
|
ModulateSelfOverride = ColorNormal,
|
||||||
|
CustomMinimumSize = (0, 32)
|
||||||
});
|
});
|
||||||
|
|
||||||
_container.AddChild(_label = new Label
|
_container.AddChild(_label = new Label
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ using Robust.Shared.Utility;
|
|||||||
|
|
||||||
namespace Content.Client.UserInterface
|
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!
|
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.
|
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,
|
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.
|
||||||
not what letter they correspond to. For example on AZERTY movement is ZQSD, drop is A, W is activate in hand.
|
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!
|
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 TutorialWindow()
|
||||||
public TutorialButton()
|
|
||||||
{
|
{
|
||||||
OnPressed += OnOnPressed;
|
HideOnClose = true;
|
||||||
|
Visible = false;
|
||||||
Text = "Tutorial";
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnOnPressed(ButtonEventArgs obj)
|
|
||||||
{
|
|
||||||
_openTutorialWindow();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void _openTutorialWindow()
|
|
||||||
{
|
|
||||||
var window = new SS14Window {Title = "Tutorial"};
|
|
||||||
|
|
||||||
var scrollContainer = new ScrollContainer();
|
var scrollContainer = new ScrollContainer();
|
||||||
window.Contents.AddChild(scrollContainer);
|
Contents.AddChild(scrollContainer);
|
||||||
|
|
||||||
var label = new RichTextLabel();
|
var label = new RichTextLabel();
|
||||||
scrollContainer.AddChild(label);
|
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();
|
var message = new FormattedMessage();
|
||||||
message.AddText(TutorialContents);
|
message.AddText(TutorialContents);
|
||||||
label.SetMessage(message);
|
label.SetMessage(message);
|
||||||
|
|
||||||
window.AddToScreen();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9,6 +9,7 @@ namespace Content.Shared.Input
|
|||||||
public static readonly BoundKeyFunction Drop = "Drop";
|
public static readonly BoundKeyFunction Drop = "Drop";
|
||||||
public static readonly BoundKeyFunction ActivateItemInHand = "ActivateItemInHand";
|
public static readonly BoundKeyFunction ActivateItemInHand = "ActivateItemInHand";
|
||||||
public static readonly BoundKeyFunction OpenCharacterMenu = "OpenCharacterMenu";
|
public static readonly BoundKeyFunction OpenCharacterMenu = "OpenCharacterMenu";
|
||||||
|
public static readonly BoundKeyFunction OpenCraftingMenu = "OpenCraftingMenu";
|
||||||
public static readonly BoundKeyFunction ExamineEntity = "ExamineEntity";
|
public static readonly BoundKeyFunction ExamineEntity = "ExamineEntity";
|
||||||
public static readonly BoundKeyFunction UseItemInHand = "UseItemInHand"; // use hand item on world entity
|
public static readonly BoundKeyFunction UseItemInHand = "UseItemInHand"; // use hand item on world entity
|
||||||
public static readonly BoundKeyFunction ActivateItemInWorld = "ActivateItemInWorld"; // default action on world entity
|
public static readonly BoundKeyFunction ActivateItemInWorld = "ActivateItemInWorld"; // default action on world entity
|
||||||
|
|||||||
39
Resources/Textures/UserInterface/character.svg
Normal 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 |
BIN
Resources/Textures/UserInterface/character.svg.96dpi.png
Normal file
|
After Width: | Height: | Size: 569 B |
@@ -1,45 +1,17 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
|
||||||
|
|
||||||
<svg
|
<svg
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
xmlns="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"
|
id="svg4593"
|
||||||
sodipodi:docname="hamburger.svg"
|
version="1.1"
|
||||||
inkscape:export-filename="/home/pj/Projects/space-station-14-content/Resources/Textures/UserInterface/hamburger.svg.96dpi.png"
|
viewBox="0 0 7.9563375 7.1438789"
|
||||||
inkscape:export-xdpi="95.998207"
|
height="7.1438789mm"
|
||||||
inkscape:export-ydpi="95.998207"
|
width="7.9563375mm">
|
||||||
inkscape:version="0.92.4 5da689c313, 2019-01-14">
|
|
||||||
<defs
|
<defs
|
||||||
id="defs4587" />
|
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
|
<metadata
|
||||||
id="metadata4590">
|
id="metadata4590">
|
||||||
<rdf:RDF>
|
<rdf:RDF>
|
||||||
@@ -53,33 +25,19 @@
|
|||||||
</rdf:RDF>
|
</rdf:RDF>
|
||||||
</metadata>
|
</metadata>
|
||||||
<g
|
<g
|
||||||
inkscape:label="Layer 1"
|
transform="translate(-97.319452,-120.31497)"
|
||||||
inkscape:groupmode="layer"
|
id="layer1">
|
||||||
id="layer1"
|
|
||||||
transform="translate(-97.319452,-120.31497)">
|
|
||||||
<path
|
<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"
|
id="path4"
|
||||||
inkscape:export-filename="/home/pj/Projects/space-station-14-content/Resources/Textures/UserInterface/hamburger.png"
|
d="m 97.990331,120.97649 h 6.614579"
|
||||||
inkscape:export-xdpi="95.998207"
|
style="stroke:#ffffff;stroke-width:1.32291663;stroke-linecap:round;stroke-opacity:1" />
|
||||||
inkscape:export-ydpi="95.998207" />
|
|
||||||
<path
|
<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"
|
id="path6"
|
||||||
inkscape:export-filename="/home/pj/Projects/space-station-14-content/Resources/Textures/UserInterface/hamburger.png"
|
d="m 97.990331,123.8869 h 6.614579"
|
||||||
inkscape:export-xdpi="95.998207"
|
style="stroke:#ffffff;stroke-width:1.32291663;stroke-linecap:round;stroke-opacity:1" />
|
||||||
inkscape:export-ydpi="95.998207" />
|
|
||||||
<path
|
<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"
|
id="path8"
|
||||||
inkscape:export-filename="/home/pj/Projects/space-station-14-content/Resources/Textures/UserInterface/hamburger.png"
|
d="m 97.990331,126.79732 h 6.614579"
|
||||||
inkscape:export-xdpi="95.998207"
|
style="stroke:#ffffff;stroke-width:1.32291663;stroke-linecap:round;stroke-opacity:1" />
|
||||||
inkscape:export-ydpi="95.998207" />
|
|
||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 1.3 KiB |
39
Resources/Textures/UserInterface/hammer.svg
Normal 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 |
BIN
Resources/Textures/UserInterface/hammer.svg.96dpi.png
Normal file
|
After Width: | Height: | Size: 459 B |
51
Resources/Textures/UserInterface/inventory.svg
Normal 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 |
BIN
Resources/Textures/UserInterface/inventory.svg.96dpi.png
Normal file
|
After Width: | Height: | Size: 512 B |
41
Resources/Textures/UserInterface/tutorial.svg
Normal 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 |
BIN
Resources/Textures/UserInterface/tutorial.svg.96dpi.png
Normal file
|
After Width: | Height: | Size: 579 B |
@@ -76,3 +76,6 @@ binds:
|
|||||||
- function: ToggleCombatMode
|
- function: ToggleCombatMode
|
||||||
type: Toggle
|
type: Toggle
|
||||||
key: Tab
|
key: Tab
|
||||||
|
- function: OpenCraftingMenu
|
||||||
|
type: state
|
||||||
|
key: G
|
||||||
|
|||||||