Xaml Rules and Info (#5741)

* XAMLify rules and info

* Fix errors

* Combine AddSection methods

* Readd AddSection
This commit is contained in:
ShadowCommander
2021-12-15 22:17:01 -08:00
committed by GitHub
parent b679980278
commit 09e0f79b89
7 changed files with 95 additions and 132 deletions

View File

@@ -0,0 +1,11 @@
<ScrollContainer xmlns="https://spacestation14.io"
HScrollEnabled="False"
HorizontalExpand="True"
VerticalExpand="True">
<BoxContainer Name="InfoContainer"
Orientation="Vertical"
Margin="2 2 0 0"
SeparationOverride="10"
Access="Public">
</BoxContainer>
</ScrollContainer>

View File

@@ -0,0 +1,14 @@
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;
namespace Content.Client.Info;
[GenerateTypedNameReferences]
public partial class Info : ScrollContainer
{
public Info()
{
RobustXamlLoader.Load(this);
}
}

View File

@@ -0,0 +1,11 @@
<BoxContainer xmlns="https://spacestation14.io"
Orientation="Vertical">
<Label Text="{Loc 'ui-info-header-controls'}" StyleClasses="LabelHeading"/>
<BoxContainer Orientation="Horizontal"
SeparationOverride="5">
<Label Text="{Loc 'ui-info-text-controls'}"/>
<Button Name="ControlsButton"
Text="{Loc 'ui-info-button-controls'}"
Access="Public"/>
</BoxContainer>
</BoxContainer>

View File

@@ -0,0 +1,15 @@
using System;
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;
namespace Content.Client.Info;
[GenerateTypedNameReferences]
public partial class InfoControlsSection : BoxContainer
{
public InfoControlsSection()
{
RobustXamlLoader.Load(this);
}
}

View File

@@ -0,0 +1,5 @@
<BoxContainer xmlns="https://spacestation14.io"
Orientation="Vertical">
<Label Name="TitleLabel" StyleClasses="LabelHeading"/>
<RichTextLabel Name="Content"/>
</BoxContainer>

View File

@@ -0,0 +1,23 @@
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;
using Robust.Shared.Utility;
using Robust.Shared.Utility.Markup;
namespace Content.Client.Info;
[GenerateTypedNameReferences]
public partial class InfoSection : BoxContainer
{
public InfoSection(string title, string text, bool markup = false)
{
RobustXamlLoader.Load(this);
TitleLabel.Text = title;
if (markup)
Content.SetMessage(Basic.RenderMarkup(text.Trim()));
else
Content.SetMessage(text);
}
}

View File

@@ -1,18 +1,9 @@
using System.Collections.Generic;
using System.IO;
using Content.Client.EscapeMenu.UI; using Content.Client.EscapeMenu.UI;
using Content.Client.Stylesheets;
using Robust.Client.ResourceManagement; using Robust.Client.ResourceManagement;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.CustomControls; using Robust.Client.UserInterface.CustomControls;
using Robust.Shared.IoC; using Robust.Shared.IoC;
using Robust.Shared.Localization; using Robust.Shared.Localization;
using Robust.Shared.Maths;
using Robust.Shared.Utility;
using Robust.Shared.Utility.Markup;
using static Robust.Client.UserInterface.Controls.BoxContainer;
namespace Content.Client.Info namespace Content.Client.Info
{ {
@@ -33,15 +24,8 @@ namespace Content.Client.Info
var rootContainer = new TabContainer(); var rootContainer = new TabContainer();
var rulesList = new ScrollContainer var rulesList = new Info();
{ var tutorialList = new Info();
HScrollEnabled = false
};
var tutorialList = new ScrollContainer
{
HScrollEnabled = false
};
rootContainer.AddChild(rulesList); rootContainer.AddChild(rulesList);
rootContainer.AddChild(tutorialList); rootContainer.AddChild(tutorialList);
@@ -57,112 +41,26 @@ namespace Content.Client.Info
SetSize = (650, 650); SetSize = (650, 650);
} }
private void PopulateRules(Control rulesList) private void PopulateRules(Info rulesList)
{ {
var vBox = new BoxContainer AddSection(rulesList, Loc.GetString("ui-info-header-rules"), "Rules.txt", true);
{
Orientation = LayoutOrientation.Vertical,
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(Basic.RenderMarkup(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) private void PopulateTutorial(Info tutorialList)
{ {
Button controlsButton; AddSection(tutorialList, Loc.GetString("ui-info-header-intro"), "Intro.txt");
var infoControlSection = new InfoControlsSection();
tutorialList.InfoContainer.AddChild(infoControlSection);
AddSection(tutorialList, Loc.GetString("ui-info-header-gameplay"), "Gameplay.txt", true);
AddSection(tutorialList, Loc.GetString("ui-info-header-sandbox"), "Sandbox.txt", true);
var vBox = new BoxContainer infoControlSection.ControlsButton.OnPressed += _ => optionsMenu.OpenCentered();
{ }
Orientation = LayoutOrientation.Vertical,
Margin = new Thickness(2, 2, 0, 0)
};
var first = true; private void AddSection(Info info, string title, string path, bool markup = false)
{
void AddSection(string title, string path, bool markup = false) info.InfoContainer.AddChild(new InfoSection(title,
{ _resourceManager.ContentFileReadAllText($"/Server Info/{path}"), markup));
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(Basic.RenderMarkup(text.Trim()));
}
else
{
label.SetMessage(text);
}
vBox.AddChild(label);
}
AddSection(Loc.GetString("ui-info-header-intro"), "Intro.txt");
vBox.AddChild(new BoxContainer
{
Orientation = LayoutOrientation.Horizontal,
MinSize = (0, 10),
Children =
{
new Label {StyleClasses = { StyleBase.StyleClassLabelHeading }, Text = Loc.GetString("ui-info-header-controls")},
}
});
vBox.AddChild(new BoxContainer
{
Orientation = LayoutOrientation.Horizontal,
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();
} }
protected override void Opened() protected override void Opened()
@@ -171,19 +69,5 @@ namespace Content.Client.Info
_rulesManager.SaveLastReadTime(); _rulesManager.SaveLastReadTime();
} }
private static IEnumerable<string> Lines(TextReader reader)
{
while (true)
{
var line = reader.ReadLine();
if (line == null)
{
yield break;
}
yield return line;
}
}
} }
} }