Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
using Content.Client.ADT.UI;
using Content.Shared.ADT.AshWalker;
using Robust.Client.UserInterface;

namespace Content.Client.ADT.AshWalker.UI;

public sealed class ADTNecropolisCompassBoundUserInterface : BoundUserInterface
{
private ADTEntityPickerWindow? _window;

public ADTNecropolisCompassBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
{
}

protected override void Open()
{
base.Open();

_window = this.CreateWindow<ADTEntityPickerWindow>();
_window.SetText(
Loc.GetString("adt-necropolis-compass-window-title"),
Loc.GetString("adt-necropolis-compass-window-hint"));
_window.OnEntrySelected += OnPointSelected;
}

protected override void UpdateState(BoundUserInterfaceState state)
{
base.UpdateState(state);

if (_window == null || state is not ADTNecropolisCompassBuiState compassState)
return;

_window.SetEntries(compassState.Points);
}

private void OnPointSelected(NetEntity point)
{
SendMessage(new ADTNecropolisCompassSelectMessage(point));
Close();
}
}
35 changes: 35 additions & 0 deletions Content.Client/ADT/Rituals/ADTAshRuneMarkSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using Content.Shared.ADT.Rituals;
using Robust.Client.GameObjects;

namespace Content.Client.ADT.Rituals;

public sealed class ADTAshRuneMarkSystem : EntitySystem
{
[Dependency] private readonly SpriteSystem _sprite = default!;

public override void Initialize()
{
base.Initialize();

SubscribeLocalEvent<ADTAshRuneMarkComponent, ComponentStartup>(OnStartup);
SubscribeLocalEvent<ADTAshRuneMarkComponent, AfterAutoHandleStateEvent>(OnState);
}

private void OnStartup(Entity<ADTAshRuneMarkComponent> ent, ref ComponentStartup args)
{
UpdateVisible(ent);
}

private void OnState(Entity<ADTAshRuneMarkComponent> ent, ref AfterAutoHandleStateEvent args)
{
UpdateVisible(ent);
}

private void UpdateVisible(Entity<ADTAshRuneMarkComponent> ent)
{
if (!TryComp<SpriteComponent>(ent.Owner, out var sprite))
return;

_sprite.SetVisible((ent.Owner, sprite), ent.Comp.Lit);
}
}
31 changes: 31 additions & 0 deletions Content.Client/ADT/Rituals/UI/ADTRitualBoundUserInterface.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using Content.Shared.ADT.Rituals;
using Robust.Client.UserInterface;

namespace Content.Client.ADT.Rituals.UI;

public sealed class ADTRitualBoundUserInterface : BoundUserInterface
{
private ADTRitualMenuWindow? _window;

public ADTRitualBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
{
}

protected override void Open()
{
base.Open();

_window = this.CreateWindow<ADTRitualMenuWindow>();
_window.OnStartPressed += ritual => SendMessage(new ADTRitualStartMessage(ritual));
}

protected override void UpdateState(BoundUserInterfaceState state)
{
base.UpdateState(state);

if (_window == null || state is not ADTRitualBuiState ritualState)
return;

_window.SetState(ritualState);
}
}
57 changes: 57 additions & 0 deletions Content.Client/ADT/Rituals/UI/ADTRitualMenuWindow.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<controls:FancyWindow xmlns="https://spacestation14.io"
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
Title="{Loc 'adt-ritual-window-title'}"
MinSize="780 520"
SetSize="840 620">
<BoxContainer Orientation="Horizontal" Margin="8 8 8 8" HorizontalExpand="True" SeparationOverride="8">
<BoxContainer Orientation="Vertical" MinWidth="230" SeparationOverride="4">
<Label Text="{Loc 'adt-ritual-window-list'}" StyleClasses="LabelKeyText" />
<PanelContainer StyleClasses="PanelDark" VerticalExpand="True">
<ScrollContainer VerticalExpand="True" HScrollEnabled="False" Margin="4 4 4 4">
<BoxContainer Name="RitualList" Orientation="Vertical" HorizontalExpand="True" />
</ScrollContainer>
</PanelContainer>
</BoxContainer>
<BoxContainer Orientation="Vertical" HorizontalExpand="True" SeparationOverride="4">
<Label Name="RitualName" StyleClasses="LabelHeadingBigger" />
<PanelContainer StyleClasses="LowDivider" HorizontalExpand="True" SetHeight="2" Margin="0 0 0 4" />

<ScrollContainer VerticalExpand="True" HScrollEnabled="False">
<BoxContainer Orientation="Vertical" HorizontalExpand="True" SeparationOverride="8">

<PanelContainer Name="DescriptionPanel" StyleClasses="BackgroundPanelDark">
<RichTextLabel Name="RitualDescription" Margin="8 8 8 8" />
</PanelContainer>

<BoxContainer Name="RequirementsBlock" Orientation="Vertical" HorizontalExpand="True">
<Label Text="{Loc 'adt-ritual-window-requirements'}" StyleClasses="LabelKeyText" />
<PanelContainer StyleClasses="PanelDark" HorizontalExpand="True">
<BoxContainer Name="RequirementList" Orientation="Vertical" HorizontalExpand="True" Margin="8 6 8 6" />
</PanelContainer>
</BoxContainer>

<BoxContainer Name="PriceBlock" Orientation="Vertical" HorizontalExpand="True">
<Label Text="{Loc 'adt-ritual-window-price'}" StyleClasses="LabelKeyText" />
<PanelContainer StyleClasses="PanelDark" HorizontalExpand="True">
<BoxContainer Name="PriceList" Orientation="Vertical" HorizontalExpand="True" Margin="8 6 8 6" />
</PanelContainer>
</BoxContainer>

<BoxContainer Name="RiskBlock" Orientation="Vertical" HorizontalExpand="True">
<Label Text="{Loc 'adt-ritual-window-risk'}" StyleClasses="LabelKeyText" />
<PanelContainer StyleClasses="PanelDark" HorizontalExpand="True">
<BoxContainer Name="RiskList" Orientation="Vertical" HorizontalExpand="True" Margin="8 6 8 6" />
</PanelContainer>
</BoxContainer>

</BoxContainer>
</ScrollContainer>

<PanelContainer StyleClasses="LowDivider" HorizontalExpand="True" SetHeight="2" Margin="0 6 0 6" />
<Button Name="StartButton"
Text="{Loc 'adt-ritual-window-start'}"
StyleClasses="ButtonBig"
Disabled="True" />
</BoxContainer>
</BoxContainer>
</controls:FancyWindow>
Loading
Loading