Open the guidebook when people with less than an hour playing join the round (#28774)

* Open the guidebook when people with less than an hour playing join the round

* Filter for gameplayState

* Fix tests

* tweaks

* saltern update (#28773)

Co-authored-by: deltanedas <@deltanedas:kde.org>

* Fix admin menu objects list (#28787)

* Make `MakeAntag()` log errors instead of throwing exceptions (#28771)

Make `MakeAntag()` log errors instead of throw

* add default page support for the guidebook (#28772)

* Probably a better way to handle this

---------

Co-authored-by: deltanedas <39013340+deltanedas@users.noreply.github.com>
Co-authored-by: Leon Friedrich <60421075+ElectroJr@users.noreply.github.com>
Co-authored-by: Nemanja <98561806+EmoGarbage404@users.noreply.github.com>
This commit is contained in:
AJCM-git
2024-06-09 12:26:48 -04:00
committed by GitHub
parent c549573f7a
commit 346ac44a28
5 changed files with 23 additions and 22 deletions

View File

@@ -2,7 +2,7 @@
xmlns:cc="clr-namespace:Content.Client.Administration.UI.CustomControls"
xmlns:fancyTree="clr-namespace:Content.Client.UserInterface.Controls.FancyTree"
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
SetSize="850 700"
SetSize="900 700"
MinSize="100 200"
Resizable="True"
Title="{Loc 'guidebook-window-title'}">

View File

@@ -18,8 +18,6 @@ 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!;
@@ -38,20 +36,6 @@ 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)

View File

@@ -3,11 +3,15 @@ using Content.Client.Gameplay;
using Content.Client.Guidebook;
using Content.Client.Guidebook.Controls;
using Content.Client.Lobby;
using Content.Client.Players.PlayTimeTracking;
using Content.Client.UserInterface.Controls;
using Content.Shared.CCVar;
using Content.Shared.Guidebook;
using Content.Shared.Input;
using Robust.Client.State;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controllers;
using Robust.Shared.Configuration;
using static Robust.Client.UserInterface.Controls.BaseButton;
using Robust.Shared.Input.Binding;
using Robust.Shared.Prototypes;
@@ -19,21 +23,25 @@ public sealed class GuidebookUIController : UIController, IOnStateEntered<LobbyS
{
[UISystemDependency] private readonly GuidebookSystem _guidebookSystem = default!;
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly IConfigurationManager _configuration = default!;
[Dependency] private readonly JobRequirementsManager _jobRequirements = default!;
private const int PlaytimeOpenGuidebook = 60;
private GuidebookWindow? _guideWindow;
private MenuButton? GuidebookButton => UIManager.GetActiveUIWidgetOrNull<MenuBar.Widgets.GameTopMenuBar>()?.GuidebookButton;
public void OnStateEntered(LobbyState state)
{
HandleStateEntered();
HandleStateEntered(state);
}
public void OnStateEntered(GameplayState state)
{
HandleStateEntered();
HandleStateEntered(state);
}
private void HandleStateEntered()
private void HandleStateEntered(State state)
{
DebugTools.Assert(_guideWindow == null);
@@ -42,6 +50,14 @@ public sealed class GuidebookUIController : UIController, IOnStateEntered<LobbyS
_guideWindow.OnClose += OnWindowClosed;
_guideWindow.OnOpen += OnWindowOpen;
if (state is LobbyState &&
_jobRequirements.FetchOverallPlaytime() < TimeSpan.FromMinutes(PlaytimeOpenGuidebook))
{
OpenGuidebook();
_guideWindow.RecenterWindow(new(0.5f, 0.5f));
_guideWindow.SetPositionFirst();
}
// setup keybinding
CommandBinds.Builder
.Bind(ContentKeyFunctions.OpenGuidebook,
@@ -160,6 +176,8 @@ public sealed class GuidebookUIController : UIController, IOnStateEntered<LobbyS
if (GuidebookButton != null)
GuidebookButton.SetClickPressed(!_guideWindow.IsOpen);
selected ??= _configuration.GetCVar(CCVars.DefaultGuide);
if (guides == null)
{
guides = _prototypeManager.EnumeratePrototypes<GuideEntryPrototype>()

View File

@@ -56,7 +56,7 @@ guide-entry-yourfirstcharacter = Your First Character
guide-entry-controls = Controls
guide-entry-radio = Radio and Speech
guide-entry-references = Tables and References
guide-entry-references = Tables & References
guide-entry-drinks = Drinks
guide-entry-foodrecipes = Food Recipes
guide-entry-chemicals = Chemicals

View File

@@ -3,7 +3,6 @@
name: guide-entry-ss14
text: "/ServerInfo/Guidebook/SpaceStation14.xml"
children:
- Controls
- Jobs
- Survival
- Antagonists