diff --git a/Content.Client/Guidebook/Controls/GuidebookWindow.xaml.cs b/Content.Client/Guidebook/Controls/GuidebookWindow.xaml.cs index f5ee1200cc..9ff189e790 100644 --- a/Content.Client/Guidebook/Controls/GuidebookWindow.xaml.cs +++ b/Content.Client/Guidebook/Controls/GuidebookWindow.xaml.cs @@ -4,10 +4,12 @@ using Content.Client.UserInterface.ControlExtensions; using Content.Client.UserInterface.Controls; using Content.Client.UserInterface.Controls.FancyTree; using Content.Client.UserInterface.Systems.Info; +using Content.Shared.CCVar; using Content.Shared.Guidebook; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface.Controls; using Robust.Client.UserInterface.XAML; +using Robust.Shared.Configuration; using Robust.Shared.ContentPack; using Robust.Shared.Prototypes; @@ -16,6 +18,8 @@ namespace Content.Client.Guidebook.Controls; [GenerateTypedNameReferences] public sealed partial class GuidebookWindow : FancyWindow, ILinkClickHandler { + [Dependency] private readonly IConfigurationManager _configuration = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IResourceManager _resourceManager = default!; [Dependency] private readonly DocumentParsingManager _parsingMan = default!; @@ -34,6 +38,20 @@ public sealed partial class GuidebookWindow : FancyWindow, ILinkClickHandler }; } + protected override void Opened() + { + base.Opened(); + + var guideProto = _configuration.GetCVar(CCVars.DefaultGuide); + if (_prototypeManager.TryIndex(guideProto, out var guideEntry)) + { + if (Tree.Items.FirstOrDefault(x => x.Metadata is GuideEntry entry && entry.Id == guideProto) is { } item) + Tree.SetSelectedIndex(item.Index); + else + ShowGuide(guideEntry); + } + } + private void OnSelectionChanged(TreeItem? item) { if (item != null && item.Metadata is GuideEntry entry) diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 43139dc1ca..a872a3d4e7 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -26,6 +26,12 @@ namespace Content.Shared.CCVar public static readonly CVarDef RulesFile = CVarDef.Create("server.rules_file", "DefaultRuleset", CVar.REPLICATED | CVar.SERVER); + /// + /// Guide entry that is displayed by default when a guide is opened. + /// + public static readonly CVarDef DefaultGuide = + CVarDef.Create("server.default_guide", "NewPlayer", CVar.REPLICATED | CVar.SERVER); + /* * Ambience */