]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
add default page support for the guidebook (#28772)
authorNemanja <98561806+EmoGarbage404@users.noreply.github.com>
Sun, 9 Jun 2024 15:55:21 +0000 (11:55 -0400)
committerGitHub <noreply@github.com>
Sun, 9 Jun 2024 15:55:21 +0000 (11:55 -0400)
Content.Client/Guidebook/Controls/GuidebookWindow.xaml.cs
Content.Shared/CCVar/CCVars.cs

index f5ee1200cc6843cc62b4293196d40e41b6105841..9ff189e79069c05fc0fc2d59a410ed0f35d67ee2 100644 (file)
@@ -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<GuideEntryPrototype>(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)
index 43139dc1ca91749bee7468347e419674feb25667..a872a3d4e7b2193c3b978d18414f62640d33efb0 100644 (file)
@@ -26,6 +26,12 @@ namespace Content.Shared.CCVar
         public static readonly CVarDef<string> RulesFile =
             CVarDef.Create("server.rules_file", "DefaultRuleset", CVar.REPLICATED | CVar.SERVER);
 
+        /// <summary>
+        ///     Guide entry that is displayed by default when a guide is opened.
+        /// </summary>
+        public static readonly CVarDef<string> DefaultGuide =
+            CVarDef.Create("server.default_guide", "NewPlayer", CVar.REPLICATED | CVar.SERVER);
+
         /*
          * Ambience
          */