Adds server rules (#3475)
* Initial * Removes all unneeded stuff * Rules * Applied review
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
using Content.Shared.Input;
|
||||
using Content.Shared.Input;
|
||||
using Robust.Shared.Input;
|
||||
|
||||
namespace Content.Client.Input
|
||||
@@ -16,7 +16,7 @@ namespace Content.Client.Input
|
||||
common.AddFunction(ContentKeyFunctions.FocusOOC);
|
||||
common.AddFunction(ContentKeyFunctions.FocusAdminChat);
|
||||
common.AddFunction(ContentKeyFunctions.ExamineEntity);
|
||||
common.AddFunction(ContentKeyFunctions.OpenTutorial);
|
||||
common.AddFunction(ContentKeyFunctions.OpenInfo);
|
||||
common.AddFunction(ContentKeyFunctions.TakeScreenshot);
|
||||
common.AddFunction(ContentKeyFunctions.TakeScreenshotNoUI);
|
||||
common.AddFunction(ContentKeyFunctions.Point);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using Robust.Client.AutoGenerated;
|
||||
using Robust.Client.AutoGenerated;
|
||||
using Robust.Client.Console;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
using Robust.Client.UserInterface.CustomControls;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using Content.Client.UserInterface.Stylesheets;
|
||||
using Content.Client.Utility;
|
||||
using Content.Shared.GameObjects.Components.Mobs;
|
||||
@@ -83,14 +83,14 @@ namespace Content.Client.UserInterface
|
||||
{
|
||||
private HBoxContainer _topButtonsContainer;
|
||||
private TopButton _buttonEscapeMenu;
|
||||
private TopButton _buttonTutorial;
|
||||
private TopButton _buttonInfo;
|
||||
private TopButton _buttonCharacterMenu;
|
||||
private TopButton _buttonInventoryMenu;
|
||||
private TopButton _buttonCraftingMenu;
|
||||
private TopButton _buttonActionsMenu;
|
||||
private TopButton _buttonAdminMenu;
|
||||
private TopButton _buttonSandboxMenu;
|
||||
private TutorialWindow _tutorialWindow;
|
||||
private InfoWindow _infoWindow;
|
||||
private TargetingDoll _targetingDoll;
|
||||
private Button _combatModeButton;
|
||||
private VBoxContainer _combatPanelContainer;
|
||||
@@ -141,7 +141,7 @@ namespace Content.Client.UserInterface
|
||||
var craftingTexture = _resourceCache.GetTexture("/Textures/Interface/hammer.svg.192dpi.png");
|
||||
var actionsTexture = _resourceCache.GetTexture("/Textures/Interface/fist.svg.192dpi.png");
|
||||
var adminTexture = _resourceCache.GetTexture("/Textures/Interface/gavel.svg.192dpi.png");
|
||||
var tutorialTexture = _resourceCache.GetTexture("/Textures/Interface/tutorial.svg.192dpi.png");
|
||||
var infoTexture = _resourceCache.GetTexture("/Textures/Interface/info.svg.192dpi.png");
|
||||
var sandboxTexture = _resourceCache.GetTexture("/Textures/Interface/sandbox.svg.192dpi.png");
|
||||
|
||||
_topButtonsContainer = new HBoxContainer
|
||||
@@ -248,24 +248,24 @@ namespace Content.Client.UserInterface
|
||||
|
||||
_buttonSandboxMenu.OnToggled += args => SandboxButtonToggled?.Invoke(args.Pressed);
|
||||
|
||||
// Tutorial
|
||||
_buttonTutorial = new TopButton(tutorialTexture, ContentKeyFunctions.OpenTutorial, _inputManager)
|
||||
// Info Window
|
||||
_buttonInfo = new TopButton(infoTexture, ContentKeyFunctions.OpenInfo, _inputManager)
|
||||
{
|
||||
ToolTip = Loc.GetString("Open tutorial."),
|
||||
ToolTip = Loc.GetString("ui-options-function-open-info"),
|
||||
MinSize = topMinSize,
|
||||
StyleClasses = {StyleBase.ButtonOpenLeft, TopButton.StyleClassRedTopButton},
|
||||
};
|
||||
|
||||
_topButtonsContainer.AddChild(_buttonTutorial);
|
||||
_topButtonsContainer.AddChild(_buttonInfo);
|
||||
|
||||
_buttonTutorial.OnToggled += a => ButtonTutorialOnOnToggled();
|
||||
_buttonInfo.OnToggled += a => ButtonInfoOnOnToggled();
|
||||
|
||||
_tutorialWindow = new TutorialWindow();
|
||||
_infoWindow = new InfoWindow();
|
||||
|
||||
_tutorialWindow.OnClose += () => _buttonTutorial.Pressed = false;
|
||||
_infoWindow.OnClose += () => _buttonInfo.Pressed = false;
|
||||
|
||||
_inputManager.SetInputCommand(ContentKeyFunctions.OpenTutorial,
|
||||
InputCmdHandler.FromDelegate(s => ButtonTutorialOnOnToggled()));
|
||||
_inputManager.SetInputCommand(ContentKeyFunctions.OpenInfo,
|
||||
InputCmdHandler.FromDelegate(s => ButtonInfoOnOnToggled()));
|
||||
|
||||
|
||||
_combatPanelContainer = new VBoxContainer
|
||||
@@ -346,26 +346,26 @@ namespace Content.Client.UserInterface
|
||||
LC.SetGrowVertical(VoteContainer, LC.GrowDirection.End);
|
||||
}
|
||||
|
||||
private void ButtonTutorialOnOnToggled()
|
||||
private void ButtonInfoOnOnToggled()
|
||||
{
|
||||
_buttonTutorial.StyleClasses.Remove(TopButton.StyleClassRedTopButton);
|
||||
if (_tutorialWindow.IsOpen)
|
||||
_buttonInfo.StyleClasses.Remove(TopButton.StyleClassRedTopButton);
|
||||
if (_infoWindow.IsOpen)
|
||||
{
|
||||
if (!_tutorialWindow.IsAtFront())
|
||||
if (!_infoWindow.IsAtFront())
|
||||
{
|
||||
_tutorialWindow.MoveToFront();
|
||||
_buttonTutorial.Pressed = true;
|
||||
_infoWindow.MoveToFront();
|
||||
_buttonInfo.Pressed = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
_tutorialWindow.Close();
|
||||
_buttonTutorial.Pressed = false;
|
||||
_infoWindow.Close();
|
||||
_buttonInfo.Pressed = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_tutorialWindow.OpenCentered();
|
||||
_buttonTutorial.Pressed = true;
|
||||
_infoWindow.OpenCentered();
|
||||
_buttonInfo.Pressed = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
180
Content.Client/UserInterface/InfoWindow.cs
Normal file
180
Content.Client/UserInterface/InfoWindow.cs
Normal file
@@ -0,0 +1,180 @@
|
||||
#nullable enable
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using Content.Client.UserInterface.Stylesheets;
|
||||
using Content.Shared;
|
||||
using Robust.Client.Credits;
|
||||
using Robust.Client.ResourceManagement;
|
||||
using Robust.Client.UserInterface;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
using Robust.Client.UserInterface.CustomControls;
|
||||
using Robust.Shared.Configuration;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Localization;
|
||||
using Robust.Shared.Maths;
|
||||
using Robust.Shared.Utility;
|
||||
using YamlDotNet.RepresentationModel;
|
||||
|
||||
namespace Content.Client.UserInterface
|
||||
{
|
||||
public sealed class InfoWindow : SS14Window
|
||||
{
|
||||
[Dependency] private readonly IResourceCache _resourceManager = default!;
|
||||
|
||||
private OptionsMenu optionsMenu;
|
||||
|
||||
public InfoWindow()
|
||||
{
|
||||
IoCManager.InjectDependencies(this);
|
||||
|
||||
optionsMenu = new OptionsMenu();
|
||||
|
||||
Title = Loc.GetString("ui-info-title");
|
||||
|
||||
var rootContainer = new TabContainer();
|
||||
|
||||
var rulesList = new ScrollContainer
|
||||
{
|
||||
HScrollEnabled = false
|
||||
};
|
||||
var tutorialList = new ScrollContainer
|
||||
{
|
||||
HScrollEnabled = false
|
||||
};
|
||||
|
||||
|
||||
rootContainer.AddChild(rulesList);
|
||||
rootContainer.AddChild(tutorialList);
|
||||
|
||||
TabContainer.SetTabTitle(rulesList, Loc.GetString("ui-info-tab-rules"));
|
||||
TabContainer.SetTabTitle(tutorialList, Loc.GetString("ui-info-tab-tutorial"));
|
||||
|
||||
PopulateRules(rulesList);
|
||||
PopulateTutorial(tutorialList);
|
||||
|
||||
Contents.AddChild(rootContainer);
|
||||
|
||||
SetSize = (650, 650);
|
||||
}
|
||||
|
||||
private void PopulateRules(Control rulesList)
|
||||
{
|
||||
var vBox = new VBoxContainer
|
||||
{
|
||||
Margin = new Thickness(2, 2, 0, 0)
|
||||
};
|
||||
|
||||
var first = true;
|
||||
|
||||
void AddSection(string title, string path, bool markup = false)
|
||||
{
|
||||
if (!first)
|
||||
{
|
||||
vBox.AddChild(new Control { MinSize = (0, 10) });
|
||||
}
|
||||
|
||||
first = false;
|
||||
vBox.AddChild(new Label { StyleClasses = { StyleBase.StyleClassLabelHeading }, Text = title });
|
||||
|
||||
var label = new RichTextLabel();
|
||||
var text = _resourceManager.ContentFileReadAllText($"/Server Info/{path}");
|
||||
if (markup)
|
||||
{
|
||||
label.SetMessage(FormattedMessage.FromMarkup(text.Trim()));
|
||||
}
|
||||
else
|
||||
{
|
||||
label.SetMessage(text);
|
||||
}
|
||||
|
||||
vBox.AddChild(label);
|
||||
}
|
||||
|
||||
AddSection(Loc.GetString("ui-info-header-rules"), "Rules.txt", true);
|
||||
|
||||
rulesList.AddChild(vBox);
|
||||
|
||||
}
|
||||
|
||||
private void PopulateTutorial(Control tutorialList)
|
||||
{
|
||||
Button controlsButton;
|
||||
|
||||
var vBox = new VBoxContainer
|
||||
{
|
||||
Margin = new Thickness(2, 2, 0, 0)
|
||||
};
|
||||
|
||||
var first = true;
|
||||
|
||||
void AddSection(string title, string path, bool markup = false)
|
||||
{
|
||||
if (!first)
|
||||
{
|
||||
vBox.AddChild(new Control { MinSize = (0, 10) });
|
||||
}
|
||||
|
||||
first = false;
|
||||
vBox.AddChild(new Label { StyleClasses = { StyleBase.StyleClassLabelHeading }, Text = title });
|
||||
|
||||
var label = new RichTextLabel();
|
||||
var text = _resourceManager.ContentFileReadAllText($"/Server Info/{path}");
|
||||
if (markup)
|
||||
{
|
||||
label.SetMessage(FormattedMessage.FromMarkup(text.Trim()));
|
||||
}
|
||||
else
|
||||
{
|
||||
label.SetMessage(text);
|
||||
}
|
||||
|
||||
vBox.AddChild(label);
|
||||
}
|
||||
|
||||
AddSection(Loc.GetString("ui-info-header-intro"), "Intro.txt");
|
||||
|
||||
vBox.AddChild(new HBoxContainer
|
||||
{
|
||||
MinSize = (0, 10),
|
||||
Children =
|
||||
{
|
||||
new Label {StyleClasses = { StyleBase.StyleClassLabelHeading }, Text = Loc.GetString("ui-info-header-controls")},
|
||||
}
|
||||
});
|
||||
|
||||
vBox.AddChild(new HBoxContainer
|
||||
{
|
||||
SeparationOverride = 5,
|
||||
Children =
|
||||
{
|
||||
new Label {Text = Loc.GetString("ui-info-text-controls")},
|
||||
(controlsButton = new Button {Text = Loc.GetString("ui-info-button-controls")})
|
||||
}
|
||||
});
|
||||
|
||||
AddSection(Loc.GetString("ui-info-header-gameplay"), "Gameplay.txt", true);
|
||||
AddSection(Loc.GetString("ui-info-header-sandbox"), "Sandbox.txt", true);
|
||||
|
||||
tutorialList.AddChild(vBox);
|
||||
|
||||
controlsButton.OnPressed += _ =>
|
||||
optionsMenu.OpenCentered();
|
||||
}
|
||||
|
||||
private static IEnumerable<string> Lines(TextReader reader)
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
var line = reader.ReadLine();
|
||||
if (line == null)
|
||||
{
|
||||
yield break;
|
||||
}
|
||||
|
||||
yield return line;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
#nullable enable
|
||||
#nullable enable
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Content.Client.UserInterface.Stylesheets;
|
||||
@@ -148,7 +148,7 @@ namespace Content.Client.UserInterface
|
||||
AddButton(ContentKeyFunctions.OpenContextMenu);
|
||||
AddButton(ContentKeyFunctions.OpenCraftingMenu);
|
||||
AddButton(ContentKeyFunctions.OpenInventoryMenu);
|
||||
AddButton(ContentKeyFunctions.OpenTutorial);
|
||||
AddButton(ContentKeyFunctions.OpenInfo);
|
||||
AddButton(ContentKeyFunctions.OpenActionsMenu);
|
||||
AddButton(ContentKeyFunctions.OpenEntitySpawnWindow);
|
||||
AddButton(ContentKeyFunctions.OpenSandboxWindow);
|
||||
|
||||
@@ -1,193 +0,0 @@
|
||||
using Robust.Client.Graphics;
|
||||
using Robust.Client.Input;
|
||||
using Robust.Client.ResourceManagement;
|
||||
using Robust.Client.UserInterface.Controls;
|
||||
using Robust.Client.UserInterface.CustomControls;
|
||||
using Robust.Shared.Input;
|
||||
using Robust.Shared.IoC;
|
||||
using Robust.Shared.Localization;
|
||||
using Robust.Shared.Maths;
|
||||
using Robust.Shared.Utility;
|
||||
using static Content.Shared.Input.ContentKeyFunctions;
|
||||
using static Robust.Shared.Input.EngineKeyFunctions;
|
||||
|
||||
namespace Content.Client.UserInterface
|
||||
{
|
||||
public sealed class TutorialWindow : SS14Window
|
||||
{
|
||||
private readonly int _headerFontSize = 14;
|
||||
private VBoxContainer VBox { get; }
|
||||
|
||||
private const string IntroContents = @"Hi and welcome to Space Station 14! This tutorial will assume that you know a bit about how SS13 plays. It's mostly intended to lay out the controls and their differences from SS13.";
|
||||
private const string GameplayContents = @"Some notes on gameplay. To talk in OOC, prefix your chat message with \[ or /ooc. Death is currently show as a black circle around the player. You can respawn via the respawn button in the sandbox menu. Instead of intents, we have ""combat mode"". Check controls above for its keybind. You can't attack anybody with it off, so no more hitting yourself with your own crowbar.";
|
||||
private const string FeedbackContents = @"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.";
|
||||
private const string SandboxSpawnerContents = @"[color=#ffffff]Entitiy spawn panel options:[/color]
|
||||
[color=#a4885c]Default[/color] spawns small entities like mugs without aligning them to anything, while aligning block entities like walls to the grid.
|
||||
[color=#a4885c]PlaceFree[/color] spawns all entities without aligning them.
|
||||
[color=#a4885c]PlaceNearby[/color] limits the spawn radius to around 2 tiles.
|
||||
[color=#a4885c]SnapgridCenter[/color] aligns the entity to the middle of the tile.
|
||||
[color=#a4885c]SnapgridBorder[/color] aligns the entity to the border of the tile.
|
||||
[color=#ffffff]Grid aligned options:[/color]
|
||||
[color=#a4885c]AlignSimilar[/color] snaps the entity to similar entities. Currently broken.
|
||||
[color=#a4885c]AlignTileAny[/color] aligns the entity to the grid.
|
||||
[color=#a4885c]AlignTileEmpty[/color] target tile must be empty
|
||||
[color=#a4885c]AlignTileNonDense[/color] no colliders allowed in the target tile.
|
||||
[color=#a4885c]AlignTileDense[/color] colliders must be in the target tile.
|
||||
[color=#a4885c]AlignWall[/color] snaps to vertical halftiles.
|
||||
[color=#a4885c]AlignWallProper[/color] snaps the entity to the middle of the tile edges";
|
||||
|
||||
public TutorialWindow()
|
||||
{
|
||||
MinSize = SetSize = (520, 580);
|
||||
Title = "The Tutorial!";
|
||||
|
||||
//Get section header font
|
||||
var cache = IoCManager.Resolve<IResourceCache>();
|
||||
var inputManager = IoCManager.Resolve<IInputManager>();
|
||||
Font headerFont = new VectorFont(cache.GetResource<FontResource>("/Fonts/NotoSans/NotoSans-Regular.ttf"), _headerFontSize);
|
||||
|
||||
var scrollContainer = new ScrollContainer();
|
||||
scrollContainer.AddChild(VBox = new VBoxContainer());
|
||||
Contents.AddChild(scrollContainer);
|
||||
|
||||
//Intro
|
||||
VBox.AddChild(new Label{FontOverride = headerFont, Text = "Intro"});
|
||||
AddFormattedText(IntroContents);
|
||||
|
||||
string Key(BoundKeyFunction func)
|
||||
{
|
||||
return FormattedMessage.EscapeText(inputManager.GetKeyFunctionButtonString(func));
|
||||
}
|
||||
|
||||
//Controls
|
||||
VBox.AddChild(new Label{FontOverride = headerFont, Text = "\nControls"});
|
||||
|
||||
// Moved this down here so that Rider shows which args correspond to which format spot.
|
||||
AddFormattedText(Loc.GetString(@"Movement: [color=#a4885c]{0} {1} {2} {3}[/color]
|
||||
Switch hands: [color=#a4885c]{4}[/color]
|
||||
Use held item: [color=#a4885c]{5}[/color]
|
||||
Drop held item: [color=#a4885c]{6}[/color]
|
||||
Smart equip from backpack: [color=#a4885c]{24}[/color]
|
||||
Smart equip from belt: [color=#a4885c]{25}[/color]
|
||||
Open inventory: [color=#a4885c]{7}[/color]
|
||||
Open character window: [color=#a4885c]{8}[/color]
|
||||
Open crafting window: [color=#a4885c]{9}[/color]
|
||||
Open action menu: [color=#a4885c]{33}[/color]
|
||||
Focus chat: [color=#a4885c]{10}[/color]
|
||||
Focus OOC: [color=#a4885c]{26}[/color]
|
||||
Focus Admin Chat: [color=#a4885c]{27}[/color]
|
||||
Use hand/object in hand: [color=#a4885c]{22}[/color]
|
||||
Do wide attack: [color=#a4885c]{23}[/color]
|
||||
Use targeted entity: [color=#a4885c]{11}[/color]
|
||||
Throw held item: [color=#a4885c]{12}[/color]
|
||||
Pull entity: [color=#a4885c]{30}[/color]
|
||||
Move pulled entity: [color=#a4885c]{29}[/color]
|
||||
Stop pulling: [color=#a4885c]{32}[/color]
|
||||
Examine entity: [color=#a4885c]{13}[/color]
|
||||
Point somewhere: [color=#a4885c]{28}[/color]
|
||||
Open entity context menu: [color=#a4885c]{14}[/color]
|
||||
Toggle combat mode: [color=#a4885c]{15}[/color]
|
||||
Toggle console: [color=#a4885c]{16}[/color]
|
||||
Toggle UI: [color=#a4885c]{17}[/color]
|
||||
Toggle debug overlay: [color=#a4885c]{18}[/color]
|
||||
Toggle entity spawner: [color=#a4885c]{19}[/color]
|
||||
Toggle tile spawner: [color=#a4885c]{20}[/color]
|
||||
Toggle sandbox window: [color=#a4885c]{21}[/color]
|
||||
Toggle admin menu [color=#a4885c]{31}[/color]
|
||||
Hotbar slot 1: [color=#a4885c]{34}[/color]
|
||||
Hotbar slot 2: [color=#a4885c]{35}[/color]
|
||||
Hotbar slot 3: [color=#a4885c]{36}[/color]
|
||||
Hotbar slot 4: [color=#a4885c]{37}[/color]
|
||||
Hotbar slot 5: [color=#a4885c]{38}[/color]
|
||||
Hotbar slot 6: [color=#a4885c]{39}[/color]
|
||||
Hotbar slot 7: [color=#a4885c]{40}[/color]
|
||||
Hotbar slot 8: [color=#a4885c]{41}[/color]
|
||||
Hotbar slot 9: [color=#a4885c]{42}[/color]
|
||||
Hotbar slot 0: [color=#a4885c]{43}[/color]
|
||||
Hotbar Loadout 1: [color=#a4885c]{44}[/color]
|
||||
Hotbar Loadout 2: [color=#a4885c]{45}[/color]
|
||||
Hotbar Loadout 3: [color=#a4885c]{46}[/color]
|
||||
Hotbar Loadout 4: [color=#a4885c]{47}[/color]
|
||||
Hotbar Loadout 5: [color=#a4885c]{48}[/color]
|
||||
Hotbar Loadout 6: [color=#a4885c]{49}[/color]
|
||||
Hotbar Loadout 7: [color=#a4885c]{50}[/color]
|
||||
Hotbar Loadout 8: [color=#a4885c]{51}[/color]
|
||||
Hotbar Loadout 9: [color=#a4885c]{52}[/color]
|
||||
",
|
||||
Key(MoveUp), Key(MoveLeft), Key(MoveDown), Key(MoveRight),
|
||||
Key(SwapHands),
|
||||
Key(ActivateItemInHand),
|
||||
Key(Drop),
|
||||
Key(OpenInventoryMenu),
|
||||
Key(OpenCharacterMenu),
|
||||
Key(OpenCraftingMenu),
|
||||
Key(FocusChat),
|
||||
Key(ActivateItemInWorld),
|
||||
Key(ThrowItemInHand),
|
||||
Key(ExamineEntity),
|
||||
Key(OpenContextMenu),
|
||||
Key(ToggleCombatMode),
|
||||
Key(ShowDebugConsole),
|
||||
Key(HideUI),
|
||||
Key(ShowDebugMonitors),
|
||||
Key(OpenEntitySpawnWindow),
|
||||
Key(OpenTileSpawnWindow),
|
||||
Key(OpenSandboxWindow),
|
||||
Key(Use),
|
||||
Key(WideAttack),
|
||||
Key(SmartEquipBackpack),
|
||||
Key(SmartEquipBelt),
|
||||
Key(FocusOOC),
|
||||
Key(FocusAdminChat),
|
||||
Key(Point),
|
||||
Key(TryPullObject),
|
||||
Key(MovePulledObject),
|
||||
Key(OpenAdminMenu),
|
||||
Key(ReleasePulledObject),
|
||||
Key(OpenActionsMenu),
|
||||
Key(Hotbar1),
|
||||
Key(Hotbar2),
|
||||
Key(Hotbar3),
|
||||
Key(Hotbar4),
|
||||
Key(Hotbar5),
|
||||
Key(Hotbar6),
|
||||
Key(Hotbar7),
|
||||
Key(Hotbar8),
|
||||
Key(Hotbar9),
|
||||
Key(Hotbar0),
|
||||
Key(Loadout1),
|
||||
Key(Loadout2),
|
||||
Key(Loadout3),
|
||||
Key(Loadout4),
|
||||
Key(Loadout5),
|
||||
Key(Loadout6),
|
||||
Key(Loadout7),
|
||||
Key(Loadout8),
|
||||
Key(Loadout9)));
|
||||
|
||||
//Gameplay
|
||||
VBox.AddChild(new Label { FontOverride = headerFont, Text = "\nGameplay" });
|
||||
AddFormattedText(GameplayContents);
|
||||
|
||||
//Gameplay
|
||||
VBox.AddChild(new Label { FontOverride = headerFont, Text = Loc.GetString("\nSandbox spawner", Key(OpenSandboxWindow)) });
|
||||
AddFormattedText(SandboxSpawnerContents);
|
||||
|
||||
//Feedback
|
||||
VBox.AddChild(new Label { FontOverride = headerFont, Text = "\nFeedback" });
|
||||
AddFormattedText(FeedbackContents);
|
||||
}
|
||||
|
||||
private void AddFormattedText(string text)
|
||||
{
|
||||
if(VBox == null)
|
||||
return;
|
||||
|
||||
var introLabel = new RichTextLabel();
|
||||
var introMessage = new FormattedMessage();
|
||||
introMessage.AddMarkup(text);
|
||||
introLabel.SetMessage(introMessage);
|
||||
VBox.AddChild(introLabel);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
#nullable enable
|
||||
#nullable enable
|
||||
using Robust.Shared.Input;
|
||||
|
||||
namespace Content.Shared.Input
|
||||
@@ -20,7 +20,7 @@ namespace Content.Shared.Input
|
||||
public static readonly BoundKeyFunction OpenInventoryMenu = "OpenInventoryMenu";
|
||||
public static readonly BoundKeyFunction SmartEquipBackpack = "SmartEquipBackpack";
|
||||
public static readonly BoundKeyFunction SmartEquipBelt = "SmartEquipBelt";
|
||||
public static readonly BoundKeyFunction OpenTutorial = "OpenTutorial";
|
||||
public static readonly BoundKeyFunction OpenInfo = "OpenInfo";
|
||||
public static readonly BoundKeyFunction SwapHands = "SwapHands";
|
||||
public static readonly BoundKeyFunction ThrowItemInHand = "ThrowItemInHand";
|
||||
public static readonly BoundKeyFunction TryPullObject = "TryPullObject";
|
||||
|
||||
23
Resources/Locale/en-US/ui/info.ftl
Normal file
23
Resources/Locale/en-US/ui/info.ftl
Normal file
@@ -0,0 +1,23 @@
|
||||
### Info Window
|
||||
|
||||
## General stuff
|
||||
ui-info-title = Information
|
||||
ui-info-tab-rules = Server Rules
|
||||
ui-info-tab-tutorial = Tutorial
|
||||
|
||||
## Rules tab
|
||||
|
||||
ui-info-header-rules = SS14 Official Server Rules
|
||||
|
||||
## Tutorial tab
|
||||
ui-info-text-controls = You can review and rebind SS14s controls in the
|
||||
|
||||
ui-info-header-intro = Introduction
|
||||
ui-info-header-controls = Controls
|
||||
ui-info-header-gameplay = Gameplay
|
||||
ui-info-header-sandbox = Sandbox Spawner
|
||||
ui-info-subheader-entityoptions = Entity spawn panel options:
|
||||
ui-info-subheader-gridoptions = Grid aligned options:
|
||||
ui-info-header-feedback = Feedback
|
||||
|
||||
ui-info-button-controls = Options Menu
|
||||
@@ -79,7 +79,7 @@ ui-options-function-open-character-menu = Open character menu
|
||||
ui-options-function-open-context-menu = Open context menu
|
||||
ui-options-function-open-crafting-menu = Open crafting menu
|
||||
ui-options-function-open-inventory-menu = Open inventory
|
||||
ui-options-function-open-tutorial = Open tutorial
|
||||
ui-options-function-open-info = Open server info
|
||||
ui-options-function-open-abilities-menu = Open action menu
|
||||
ui-options-function-open-entity-spawn-window = Open entity spawn menu
|
||||
ui-options-function-open-sandbox-window = Open sandbox menu
|
||||
|
||||
1
Resources/Server Info/Gameplay.txt
Normal file
1
Resources/Server Info/Gameplay.txt
Normal file
@@ -0,0 +1 @@
|
||||
Some notes on gameplay. To talk in OOC, prefix your chat message with an [color=#a4885c]open bracket[/color] or [color=#a4885c]"/ooc"[/color]. Death is currently show as a black circle around the player. You can respawn via the respawn button in the sandbox menu. Instead of intents, we have [color=#ff0000]combat mode[/color]. Check controls above for its keybind. You can't attack anybody with it off, so no more hitting yourself with your own crowbar.
|
||||
1
Resources/Server Info/Intro.txt
Normal file
1
Resources/Server Info/Intro.txt
Normal file
@@ -0,0 +1 @@
|
||||
Hi and welcome to Space Station 14! This tutorial will assume that you know a bit about how SS13 plays. It's mostly intended to lay out the differences from SS13.
|
||||
17
Resources/Server Info/Rules.txt
Normal file
17
Resources/Server Info/Rules.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
[color=#a4885c]The[/color] [color=#ffd700]Golden[/color] [color=#a4885c]Rule.[/color] Admins can disregard any and all of these rules if they deem it in the best interest of the current round, server, and/or community at large. They will of course be held fully accountable for their actions if they exercise this privilege.
|
||||
|
||||
[color=#a4885c]1.[/color] Don’t be a dick. We’re all here to have fun. Antagonists have leeway here since ruining the round is kind of their job, but try to keep it interesting if you’re antag.
|
||||
|
||||
[color=#a4885c]2.[/color] Erotic Roleplay (ERP) is [color=#ff0000]not allowed under any circumstance[/color].
|
||||
|
||||
[color=#a4885c]3.[/color] Harassment of other players for OOC/meta reasons is [color=#ff0000]not allowed[/color].
|
||||
- Annoying somebody in a round for IC/RP reasons is fine. Doing it consistently across multiple rounds for OOC reasons (“I don’t like this player” AKA metagrudging) to the point where it becomes seriously problematic for the other player(s) is [color=#ff0000]not[/color].
|
||||
|
||||
[color=#a4885c]4.[/color] Real life hate speech/slurs are not allowed.
|
||||
- You are [color=#ff0000]NOT allowed[/color] to be racist against skin colors or start shouting the n-word, or similar IRL problems.
|
||||
- You [color=#00ff00]ARE allowed[/color] to be e.g. speciesist against in-game species (if we ever get any). Keep it interesting RP wise.
|
||||
- Slurs like lig*** that are closely tied to real life slurs are [color=#ff0000]not allowed[/color].
|
||||
|
||||
[color=#a4885c]5.[/color] Offensive/bad character names put you at the mercy of administrators, from receiving brain damage to becoming valid to straight up getting banned on the spot depending on how bad they are.
|
||||
|
||||
[color=#a4885c]6.[/color] Knowingly performing activities that can slowdown or crash the server is [color=#ff0000]not allowed[/color].
|
||||
16
Resources/Server Info/Sandbox.txt
Normal file
16
Resources/Server Info/Sandbox.txt
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
[color=#ffffff]Entity spawn panel options[/color]
|
||||
[color=#a4885c]Default[/color] spawns small entities like mugs without aligning them to anything, while aligning block entities like walls to the grid.
|
||||
[color=#a4885c]PlaceFree[/color] spawns all entities without aligning them.
|
||||
[color=#a4885c]PlaceNearby[/color] limits the spawn radius to around 2 tiles.
|
||||
[color=#a4885c]SnapgridCenter[/color] aligns the entity to the middle of the tile.
|
||||
[color=#a4885c]SnapgridBorder[/color] aligns the entity to the border of the tile.
|
||||
|
||||
[color=#ffffff]Grid aligned options[/color]
|
||||
[color=#a4885c]AlignSimilar[/color] snaps the entity to similar entities. Currently broken.
|
||||
[color=#a4885c]AlignTileAny[/color] aligns the entity to the grid.
|
||||
[color=#a4885c]AlignTileEmpty[/color] target tile must be empty
|
||||
[color=#a4885c]AlignTileNonDense[/color] no colliders allowed in the target tile.
|
||||
[color=#a4885c]AlignTileDense[/color] colliders must be in the target tile.
|
||||
[color=#a4885c]AlignWall[/color] snaps to vertical halftiles.
|
||||
[color=#a4885c]AlignWallProper[/color] snaps the entity to the middle of the tile edges
|
||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
@@ -136,7 +136,7 @@ binds:
|
||||
- function: OpenCraftingMenu
|
||||
type: State
|
||||
key: G
|
||||
- function: OpenTutorial
|
||||
- function: OpenInfo
|
||||
type: State
|
||||
key: F1
|
||||
- function: OpenInventoryMenu
|
||||
|
||||
Reference in New Issue
Block a user