Adds Support for Guidebook Buttons in UIs (#27891)
* Adds Support for Guidebook Buttons in UIs * read it from the component * the code is perfect * moony review --------- Co-authored-by: ike709 <ike709@github.com>
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
using Content.Client.Guidebook.Components;
|
||||||
using Content.Shared.Chemistry;
|
using Content.Shared.Chemistry;
|
||||||
using Content.Shared.Containers.ItemSlots;
|
using Content.Shared.Containers.ItemSlots;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
@@ -34,6 +35,7 @@ namespace Content.Client.Chemistry.UI
|
|||||||
_window = new()
|
_window = new()
|
||||||
{
|
{
|
||||||
Title = EntMan.GetComponent<MetaDataComponent>(Owner).EntityName,
|
Title = EntMan.GetComponent<MetaDataComponent>(Owner).EntityName,
|
||||||
|
HelpGuidebookIds = EntMan.GetComponent<GuideHelpComponent>(Owner).Guides
|
||||||
};
|
};
|
||||||
|
|
||||||
_window.OpenCentered();
|
_window.OpenCentered();
|
||||||
|
|||||||
@@ -80,6 +80,11 @@ public sealed class GuidebookSystem : EntitySystem
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void OpenHelp(List<string> guides)
|
||||||
|
{
|
||||||
|
OnGuidebookOpen?.Invoke(guides, null, null, true, guides[0]);
|
||||||
|
}
|
||||||
|
|
||||||
private void OnInteract(EntityUid uid, GuideHelpComponent component, ActivateInWorldEvent args)
|
private void OnInteract(EntityUid uid, GuideHelpComponent component, ActivateInWorldEvent args)
|
||||||
{
|
{
|
||||||
if (!_timing.IsFirstTimePredicted)
|
if (!_timing.IsFirstTimePredicted)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System.Numerics;
|
using System.Numerics;
|
||||||
using Content.Client.Resources;
|
using Content.Client.Resources;
|
||||||
|
using Content.Client.UserInterface.Controls;
|
||||||
using Robust.Client.Graphics;
|
using Robust.Client.Graphics;
|
||||||
using Robust.Client.ResourceManagement;
|
using Robust.Client.ResourceManagement;
|
||||||
using Robust.Client.UserInterface;
|
using Robust.Client.UserInterface;
|
||||||
|
|||||||
@@ -1389,6 +1389,17 @@ namespace Content.Client.Stylesheets
|
|||||||
Element<PanelContainer>().Class("WindowHeadingBackgroundLight")
|
Element<PanelContainer>().Class("WindowHeadingBackgroundLight")
|
||||||
.Prop("panel", new StyleBoxTexture(BaseButtonOpenLeft) { Padding = default }),
|
.Prop("panel", new StyleBoxTexture(BaseButtonOpenLeft) { Padding = default }),
|
||||||
|
|
||||||
|
// Window Header Help Button
|
||||||
|
Element<TextureButton>().Class(FancyWindow.StyleClassWindowHelpButton)
|
||||||
|
.Prop(TextureButton.StylePropertyTexture, resCache.GetTexture("/Textures/Interface/Nano/help.png"))
|
||||||
|
.Prop(Control.StylePropertyModulateSelf, Color.FromHex("#4B596A")),
|
||||||
|
|
||||||
|
Element<TextureButton>().Class(FancyWindow.StyleClassWindowHelpButton).Pseudo(ContainerButton.StylePseudoClassHover)
|
||||||
|
.Prop(Control.StylePropertyModulateSelf, Color.FromHex("#7F3636")),
|
||||||
|
|
||||||
|
Element<TextureButton>().Class(FancyWindow.StyleClassWindowHelpButton).Pseudo(ContainerButton.StylePseudoClassPressed)
|
||||||
|
.Prop(Control.StylePropertyModulateSelf, Color.FromHex("#753131")),
|
||||||
|
|
||||||
//The lengths you have to go through to change a background color smh
|
//The lengths you have to go through to change a background color smh
|
||||||
Element<PanelContainer>().Class("PanelBackgroundBaseDark")
|
Element<PanelContainer>().Class("PanelBackgroundBaseDark")
|
||||||
.Prop("panel", new StyleBoxTexture(BaseButtonOpenBoth) { Padding = default })
|
.Prop("panel", new StyleBoxTexture(BaseButtonOpenBoth) { Padding = default })
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
<BoxContainer Margin="4 2 8 0" Orientation="Horizontal">
|
<BoxContainer Margin="4 2 8 0" Orientation="Horizontal">
|
||||||
<Label Name="WindowTitle"
|
<Label Name="WindowTitle"
|
||||||
HorizontalExpand="True" VAlign="Center" StyleClasses="FancyWindowTitle" />
|
HorizontalExpand="True" VAlign="Center" StyleClasses="FancyWindowTitle" />
|
||||||
|
<TextureButton Name="HelpButton" StyleClasses="windowHelpButton" VerticalAlignment="Center" Disabled="True" Visible="False" Access="Public" />
|
||||||
<TextureButton Name="CloseButton" StyleClasses="windowCloseButton"
|
<TextureButton Name="CloseButton" StyleClasses="windowCloseButton"
|
||||||
VerticalAlignment="Center" />
|
VerticalAlignment="Center" />
|
||||||
</BoxContainer>
|
</BoxContainer>
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
using System.Numerics;
|
using System.Numerics;
|
||||||
|
using Content.Client.Guidebook;
|
||||||
|
using Content.Client.Guidebook.Components;
|
||||||
using Robust.Client.AutoGenerated;
|
using Robust.Client.AutoGenerated;
|
||||||
using Robust.Client.UserInterface.CustomControls;
|
using Robust.Client.UserInterface.CustomControls;
|
||||||
using Robust.Client.UserInterface.XAML;
|
using Robust.Client.UserInterface.XAML;
|
||||||
|
using Robust.Shared.Prototypes;
|
||||||
|
|
||||||
namespace Content.Client.UserInterface.Controls
|
namespace Content.Client.UserInterface.Controls
|
||||||
{
|
{
|
||||||
@@ -9,13 +12,17 @@ namespace Content.Client.UserInterface.Controls
|
|||||||
[Virtual]
|
[Virtual]
|
||||||
public partial class FancyWindow : BaseWindow
|
public partial class FancyWindow : BaseWindow
|
||||||
{
|
{
|
||||||
|
[Dependency] private readonly IEntitySystemManager _sysMan = default!;
|
||||||
|
private GuidebookSystem? _guidebookSystem;
|
||||||
private const int DRAG_MARGIN_SIZE = 7;
|
private const int DRAG_MARGIN_SIZE = 7;
|
||||||
|
public const string StyleClassWindowHelpButton = "windowHelpButton";
|
||||||
|
|
||||||
public FancyWindow()
|
public FancyWindow()
|
||||||
{
|
{
|
||||||
RobustXamlLoader.Load(this);
|
RobustXamlLoader.Load(this);
|
||||||
|
|
||||||
CloseButton.OnPressed += _ => Close();
|
CloseButton.OnPressed += _ => Close();
|
||||||
|
HelpButton.OnPressed += _ => Help();
|
||||||
XamlChildren = ContentsContainer.Children;
|
XamlChildren = ContentsContainer.Children;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -25,6 +32,26 @@ namespace Content.Client.UserInterface.Controls
|
|||||||
set => WindowTitle.Text = value;
|
set => WindowTitle.Text = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<string>? _helpGuidebookIds;
|
||||||
|
public List<string>? HelpGuidebookIds
|
||||||
|
{
|
||||||
|
get => _helpGuidebookIds;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_helpGuidebookIds = value;
|
||||||
|
HelpButton.Disabled = _helpGuidebookIds == null;
|
||||||
|
HelpButton.Visible = !HelpButton.Disabled;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Help()
|
||||||
|
{
|
||||||
|
if (HelpGuidebookIds is null)
|
||||||
|
return;
|
||||||
|
_guidebookSystem ??= _sysMan.GetEntitySystem<GuidebookSystem>();
|
||||||
|
_guidebookSystem.OpenHelp(HelpGuidebookIds);
|
||||||
|
}
|
||||||
|
|
||||||
protected override DragMode GetDragModeFor(Vector2 relativeMousePos)
|
protected override DragMode GetDragModeFor(Vector2 relativeMousePos)
|
||||||
{
|
{
|
||||||
var mode = DragMode.Move;
|
var mode = DragMode.Move;
|
||||||
|
|||||||
BIN
Resources/Textures/Interface/Nano/help.png
Normal file
BIN
Resources/Textures/Interface/Nano/help.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 636 B |
Reference in New Issue
Block a user