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:
@@ -2,7 +2,7 @@
|
|||||||
xmlns:cc="clr-namespace:Content.Client.Administration.UI.CustomControls"
|
xmlns:cc="clr-namespace:Content.Client.Administration.UI.CustomControls"
|
||||||
xmlns:fancyTree="clr-namespace:Content.Client.UserInterface.Controls.FancyTree"
|
xmlns:fancyTree="clr-namespace:Content.Client.UserInterface.Controls.FancyTree"
|
||||||
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
|
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
|
||||||
SetSize="850 700"
|
SetSize="900 700"
|
||||||
MinSize="100 200"
|
MinSize="100 200"
|
||||||
Resizable="True"
|
Resizable="True"
|
||||||
Title="{Loc 'guidebook-window-title'}">
|
Title="{Loc 'guidebook-window-title'}">
|
||||||
|
|||||||
@@ -18,8 +18,6 @@ namespace Content.Client.Guidebook.Controls;
|
|||||||
[GenerateTypedNameReferences]
|
[GenerateTypedNameReferences]
|
||||||
public sealed partial class GuidebookWindow : FancyWindow, ILinkClickHandler
|
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 IResourceManager _resourceManager = default!;
|
||||||
[Dependency] private readonly DocumentParsingManager _parsingMan = 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)
|
private void OnSelectionChanged(TreeItem? item)
|
||||||
{
|
{
|
||||||
if (item != null && item.Metadata is GuideEntry entry)
|
if (item != null && item.Metadata is GuideEntry entry)
|
||||||
|
|||||||
@@ -3,11 +3,15 @@ using Content.Client.Gameplay;
|
|||||||
using Content.Client.Guidebook;
|
using Content.Client.Guidebook;
|
||||||
using Content.Client.Guidebook.Controls;
|
using Content.Client.Guidebook.Controls;
|
||||||
using Content.Client.Lobby;
|
using Content.Client.Lobby;
|
||||||
|
using Content.Client.Players.PlayTimeTracking;
|
||||||
using Content.Client.UserInterface.Controls;
|
using Content.Client.UserInterface.Controls;
|
||||||
|
using Content.Shared.CCVar;
|
||||||
using Content.Shared.Guidebook;
|
using Content.Shared.Guidebook;
|
||||||
using Content.Shared.Input;
|
using Content.Shared.Input;
|
||||||
|
using Robust.Client.State;
|
||||||
using Robust.Client.UserInterface;
|
using Robust.Client.UserInterface;
|
||||||
using Robust.Client.UserInterface.Controllers;
|
using Robust.Client.UserInterface.Controllers;
|
||||||
|
using Robust.Shared.Configuration;
|
||||||
using static Robust.Client.UserInterface.Controls.BaseButton;
|
using static Robust.Client.UserInterface.Controls.BaseButton;
|
||||||
using Robust.Shared.Input.Binding;
|
using Robust.Shared.Input.Binding;
|
||||||
using Robust.Shared.Prototypes;
|
using Robust.Shared.Prototypes;
|
||||||
@@ -19,21 +23,25 @@ public sealed class GuidebookUIController : UIController, IOnStateEntered<LobbyS
|
|||||||
{
|
{
|
||||||
[UISystemDependency] private readonly GuidebookSystem _guidebookSystem = default!;
|
[UISystemDependency] private readonly GuidebookSystem _guidebookSystem = default!;
|
||||||
[Dependency] private readonly IPrototypeManager _prototypeManager = 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 GuidebookWindow? _guideWindow;
|
||||||
private MenuButton? GuidebookButton => UIManager.GetActiveUIWidgetOrNull<MenuBar.Widgets.GameTopMenuBar>()?.GuidebookButton;
|
private MenuButton? GuidebookButton => UIManager.GetActiveUIWidgetOrNull<MenuBar.Widgets.GameTopMenuBar>()?.GuidebookButton;
|
||||||
|
|
||||||
public void OnStateEntered(LobbyState state)
|
public void OnStateEntered(LobbyState state)
|
||||||
{
|
{
|
||||||
HandleStateEntered();
|
HandleStateEntered(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnStateEntered(GameplayState state)
|
public void OnStateEntered(GameplayState state)
|
||||||
{
|
{
|
||||||
HandleStateEntered();
|
HandleStateEntered(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleStateEntered()
|
private void HandleStateEntered(State state)
|
||||||
{
|
{
|
||||||
DebugTools.Assert(_guideWindow == null);
|
DebugTools.Assert(_guideWindow == null);
|
||||||
|
|
||||||
@@ -42,6 +50,14 @@ public sealed class GuidebookUIController : UIController, IOnStateEntered<LobbyS
|
|||||||
_guideWindow.OnClose += OnWindowClosed;
|
_guideWindow.OnClose += OnWindowClosed;
|
||||||
_guideWindow.OnOpen += OnWindowOpen;
|
_guideWindow.OnOpen += OnWindowOpen;
|
||||||
|
|
||||||
|
if (state is LobbyState &&
|
||||||
|
_jobRequirements.FetchOverallPlaytime() < TimeSpan.FromMinutes(PlaytimeOpenGuidebook))
|
||||||
|
{
|
||||||
|
OpenGuidebook();
|
||||||
|
_guideWindow.RecenterWindow(new(0.5f, 0.5f));
|
||||||
|
_guideWindow.SetPositionFirst();
|
||||||
|
}
|
||||||
|
|
||||||
// setup keybinding
|
// setup keybinding
|
||||||
CommandBinds.Builder
|
CommandBinds.Builder
|
||||||
.Bind(ContentKeyFunctions.OpenGuidebook,
|
.Bind(ContentKeyFunctions.OpenGuidebook,
|
||||||
@@ -160,6 +176,8 @@ public sealed class GuidebookUIController : UIController, IOnStateEntered<LobbyS
|
|||||||
if (GuidebookButton != null)
|
if (GuidebookButton != null)
|
||||||
GuidebookButton.SetClickPressed(!_guideWindow.IsOpen);
|
GuidebookButton.SetClickPressed(!_guideWindow.IsOpen);
|
||||||
|
|
||||||
|
selected ??= _configuration.GetCVar(CCVars.DefaultGuide);
|
||||||
|
|
||||||
if (guides == null)
|
if (guides == null)
|
||||||
{
|
{
|
||||||
guides = _prototypeManager.EnumeratePrototypes<GuideEntryPrototype>()
|
guides = _prototypeManager.EnumeratePrototypes<GuideEntryPrototype>()
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ guide-entry-yourfirstcharacter = Your First Character
|
|||||||
guide-entry-controls = Controls
|
guide-entry-controls = Controls
|
||||||
guide-entry-radio = Radio and Speech
|
guide-entry-radio = Radio and Speech
|
||||||
|
|
||||||
guide-entry-references = Tables and References
|
guide-entry-references = Tables & References
|
||||||
guide-entry-drinks = Drinks
|
guide-entry-drinks = Drinks
|
||||||
guide-entry-foodrecipes = Food Recipes
|
guide-entry-foodrecipes = Food Recipes
|
||||||
guide-entry-chemicals = Chemicals
|
guide-entry-chemicals = Chemicals
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
name: guide-entry-ss14
|
name: guide-entry-ss14
|
||||||
text: "/ServerInfo/Guidebook/SpaceStation14.xml"
|
text: "/ServerInfo/Guidebook/SpaceStation14.xml"
|
||||||
children:
|
children:
|
||||||
- Controls
|
|
||||||
- Jobs
|
- Jobs
|
||||||
- Survival
|
- Survival
|
||||||
- Antagonists
|
- Antagonists
|
||||||
|
|||||||
Reference in New Issue
Block a user