Files
tbd-station-14/Content.Client/Info/RulesAndInfoWindow.cs
Jezithyr 571dd4e6d5 Hud refactor (#7202)
Co-authored-by: DrSmugleaf <DrSmugleaf@users.noreply.github.com>
Co-authored-by: Jezithyr <jmaster9999@gmail.com>
Co-authored-by: Jezithyr <Jezithyr@gmail.com>
Co-authored-by: Visne <39844191+Visne@users.noreply.github.com>
Co-authored-by: wrexbe <wrexbe@protonmail.com>
Co-authored-by: wrexbe <81056464+wrexbe@users.noreply.github.com>
2022-10-12 10:16:23 +02:00

71 lines
2.6 KiB
C#

using Content.Client.UserInterface.Systems.EscapeMenu;
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.ContentPack;
namespace Content.Client.Info
{
public sealed class RulesAndInfoWindow : DefaultWindow
{
[Dependency] private readonly IResourceCache _resourceManager = default!;
[Dependency] private readonly IConfigurationManager _cfgManager = default!;
[Dependency] private readonly IEntitySystemManager _sysMan = default!;
[Dependency] private readonly RulesManager _rules = default!;
public RulesAndInfoWindow()
{
IoCManager.InjectDependencies(this);
Title = Loc.GetString("ui-info-title");
var rootContainer = new TabContainer();
var rulesList = new Info();
var tutorialList = new Info();
rootContainer.AddChild(rulesList);
rootContainer.AddChild(tutorialList);
TabContainer.SetTabTitle(rulesList, Loc.GetString("ui-info-tab-rules"));
TabContainer.SetTabTitle(tutorialList, Loc.GetString("ui-info-tab-tutorial"));
AddSection(rulesList, _rules.RulesSection());
PopulateTutorial(tutorialList);
Contents.AddChild(rootContainer);
SetSize = (650, 650);
}
private void PopulateTutorial(Info tutorialList)
{
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);
infoControlSection.ControlsButton.OnPressed += _ => UserInterfaceManager.GetUIController<OptionsUIController>().OpenWindow();
}
private static void AddSection(Info info, Control control)
{
info.InfoContainer.AddChild(control);
}
private void AddSection(Info info, string title, string path, bool markup = false)
{
AddSection(info, MakeSection(title, path, markup, _resourceManager));
}
private static Control MakeSection(string title, string path, bool markup, IResourceManager res)
{
return new InfoSection(title, res.ContentFileReadAllText($"/Server Info/{path}"), markup);
}
}
}