Adds server rules (#3475)
* Initial * Removes all unneeded stuff * Rules * Applied review
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user