Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
748ee9c
Permit Console: Sprites
TheRealMasterChief117 Jul 27, 2026
1c750cf
Permit Console: Basic Prototype
TheRealMasterChief117 Jul 27, 2026
4d4cec8
UI mockup, FTL files, permit chip prototype and sprite
TheRealMasterChief117 Jul 27, 2026
f4af56e
Fix no item screen text
TheRealMasterChief117 Jul 27, 2026
c23fd1c
Begin contraband entry XML, functionality for permit chips and data s…
TheRealMasterChief117 Jul 28, 2026
a00e17e
yo
TheRealMasterChief117 Jul 29, 2026
44f7a7c
Update ContrabandPermitSystem.PermitChip.cs
TheRealMasterChief117 Jul 29, 2026
9672543
Fix viewer entity code, permit granting with the UI, CE grant whitelist
TheRealMasterChief117 Jul 31, 2026
8828583
remove chat manager
TheRealMasterChief117 Jul 31, 2026
fa1ad08
Permit examine text
TheRealMasterChief117 Jul 31, 2026
6a69cf9
Give TDF roles permit chip blacklists
TheRealMasterChief117 Jul 31, 2026
b6da4a0
Permit console: basic implementation of permit entry list
TheRealMasterChief117 Aug 1, 2026
d9372fc
Finalize revoking and viewing active permits UI, add radio messages f…
TheRealMasterChief117 Aug 2, 2026
1d4a8d4
persistence!
TheRealMasterChief117 Aug 2, 2026
e56920d
YML prototypes, global PVS for permit items
TheRealMasterChief117 Aug 2, 2026
0c74ec2
Merge branch 'main' into permit-console
TheRealMasterChief117 Aug 2, 2026
f27c1f5
Delete base_contraband.yml
TheRealMasterChief117 Aug 2, 2026
bb49bb5
n
TheRealMasterChief117 Aug 2, 2026
ec7e252
Merge branch 'permit-console' of https://github.com/TheRealMasterChie…
TheRealMasterChief117 Aug 2, 2026
7c8640a
Update base_contraband.yml
TheRealMasterChief117 Aug 2, 2026
94d1c9a
Update base_contraband.yml
TheRealMasterChief117 Aug 3, 2026
ae7486e
Update base_contraband.yml
TheRealMasterChief117 Aug 3, 2026
014408a
waaaa
TheRealMasterChief117 Aug 3, 2026
c91b0cb
fix verb
TheRealMasterChief117 Aug 3, 2026
c2c503a
Update SharedContrabandPermitSystem.PermitChip.cs
TheRealMasterChief117 Aug 3, 2026
3cc9b10
Add humanoid viewer system that works with displacement maps
TheRealMasterChief117 Aug 3, 2026
32b6ed5
Merge branch 'Triad-Sector:main' into permit-console
TheRealMasterChief117 Aug 3, 2026
e4f0e74
better
TheRealMasterChief117 Aug 3, 2026
1770f82
auric changes, humanoid fixes
TheRealMasterChief117 Aug 3, 2026
4556751
fix locale
TheRealMasterChief117 Aug 3, 2026
1f16df8
www
TheRealMasterChief117 Aug 3, 2026
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,74 @@
using Content.Shared._Triad.ContrabandPermit;
using Content.Shared.Containers.ItemSlots;
using Robust.Client.Player;

namespace Content.Client._Triad.ContrabandPermit;

public sealed partial class ContrabandPermitConsoleBoundUserInterface(EntityUid owner, Enum uiKey) : BoundUserInterface(owner, uiKey)
{
[Dependency] private IPlayerManager _playerManager = default!;

[ViewVariables]
private ContrabandPermitConsoleWindow? _menu;

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

_menu = new(_playerManager);
_menu.SetOwner(Owner);
_menu.OpenCentered();

_menu.OnClose += Close;

if (!EntMan.TryGetComponent<ContrabandPermitConsoleComponent>(Owner, out var consoleComp))
return;

_menu.EjectButton.OnPressed += _ => SendPredictedMessage(new ItemSlotButtonPressedEvent(consoleComp.ChipSlotContainerId));

_menu.OnReasonChanged += OnReasonChanged;
_menu.OnGrantButtonPressed += OnGrantButtonPressed;
_menu.OnRevokeButtonPressed += OnRevokeButtonPressed;
_menu.OnPrintButtonPressed += OnPrintButtonPressed;
_menu.SendFocusChangeMessage += OnSendFocusChangeMessage;
}

protected override void UpdateState(BoundUserInterfaceState state)
{
base.UpdateState(state);
var castState = (ContrabandPermitConsoleBuiState) state;
_menu?.UpdateState(castState);
}

private void OnReasonChanged(string reason)
{
SendPredictedMessage(new ContrabandPermitConsoleReasonUpdatedMessage(reason));
}

private void OnGrantButtonPressed()
{
SendPredictedMessage(new ContrabandPermitConsoleGrantButtonPressedMessage());
}

private void OnRevokeButtonPressed(string reason)
{
SendPredictedMessage(new ContrabandPermitConsoleRevokeButtonPressedMessage(reason));
}

private void OnPrintButtonPressed()
{
SendPredictedMessage(new ContrabandPermitConsolePrintButtonPressedMessage());
}

private void OnSendFocusChangeMessage(NetEntity? owner, NetEntity? item)
{
SendPredictedMessage(new ContrabandPermitConsoleFocusChangeMessage(owner, item));
}

protected override void Dispose(bool disposing)
{
base.Dispose(disposing);

_menu?.Close();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,289 @@
<controls:FancyWindow
MinSize="900 525"
Resizable="True"
SetSize="900 525"
Title="{Loc 'contraband-permit-console-window-title'}"
xmlns="https://spacestation14.io"
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
xmlns:ui="clr-namespace:Content.Client.Pinpointer.UI"
xmlns:gfx="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client">
<BoxContainer Orientation="Vertical">
<!-- Main display -->
<BoxContainer Name="TabButtons"
Orientation="Horizontal"
HorizontalAlignment="Stretch"
HorizontalExpand="True"
MinSize="10 10"
Margin="2">
<Button Name="PermitListTabButton"
ToggleMode="True"
HorizontalExpand="True"
VerticalExpand="True"
Text="Active Permits"
StyleClasses="ButtonBig"/>
<Button Name="GrantPermitTabButton"
ToggleMode="True"
HorizontalExpand="True"
VerticalExpand="True"
Text="Grant Permit"
StyleClasses="ButtonBig"/>
</BoxContainer>
<BoxContainer
HorizontalExpand="True"
Orientation="Vertical"
VerticalExpand="True"
Name="PermitListContainer">
<!-- Search bar -->
<BoxContainer Margin="1 1 1 2"
HorizontalExpand="True">
<LineEdit Name="ContrabandPermitSearchBar"
PlaceHolder="{Loc 'contraband-permit-console-search-bar-placeholder'}"
HorizontalExpand="True"/>
<Button Name="ContrabandPermitPrintButton"
Text="{Loc 'contraband-permit-console-print-chip'}"/>
</BoxContainer>
<!-- permit list -->
<BoxContainer
HorizontalExpand="True"
Margin="10,0,10,10"
Orientation="Vertical"
VerticalExpand="True">
<!-- Permit table -->
<BoxContainer
HorizontalExpand="True"
Margin="0,10,0,0"
VerticalExpand="True">
<ScrollContainer HorizontalExpand="True">
<BoxContainer
HorizontalExpand="True"
Margin="0,0,0,10"
Name="ActivePermitsTable"
Orientation="Vertical"
VerticalExpand="True"/>
</ScrollContainer>
</BoxContainer>
</BoxContainer>
</BoxContainer>

<!-- second tab - permit granter screen -->
<BoxContainer VerticalExpand="True"
HorizontalExpand="True"
Orientation="Horizontal"
Name="PermitGranterContainer">

<!-- No item inside of slot/no access screen -->
<BoxContainer Name="NoItemInsertedScreen"
VerticalExpand="True"
HorizontalExpand="True"
Orientation="Vertical"
Visible="True"
ReservesSpace="False">

<controls:StripeBack VerticalExpand="True"
HorizontalExpand="True"
Margin="0 0 0 5">
<PanelContainer VerticalExpand="True"
HorizontalExpand="True">
<BoxContainer VerticalExpand="True"
HorizontalExpand="True"
Orientation="Vertical">
<Control VerticalExpand="True"/>
<TextureRect VerticalAlignment="Center"
HorizontalAlignment="Center"
SetSize="64 64"
Stretch="KeepAspectCentered"
TexturePath="/Textures/Interface/VerbIcons/lock.svg.192dpi.png">
</TextureRect>
<Label Text="{Loc 'contraband-permit-console-window-permit-grant-no-item'}"
VerticalAlignment="Center"
HorizontalAlignment="Center"
Margin="0 5 0 0"
Name="NoItemInsertedLabel"/>
<Control VerticalExpand="True"/>
</BoxContainer>
</PanelContainer>
</controls:StripeBack>
</BoxContainer>

<!-- Left side, permit info -->
<BoxContainer VerticalExpand="True"
HorizontalExpand="True"
Orientation="Vertical"
MinWidth="225"
Margin="20 15 20 20"
Name="PermitGranterLeft"
Visible="False">

<!-- labels -->
<PanelContainer>
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat BackgroundColor="#1B1B1E"/>
</PanelContainer.PanelOverride>

<BoxContainer Orientation="Vertical">
<!-- Permit item info -->
<Label HorizontalAlignment="Center"
Margin="0 0 0 0"
Text="Item Information"
StyleClasses="LabelHeading"/>
<PanelContainer StyleClasses="LowDivider"/>
<Label Name="ItemNameLabel"
HorizontalAlignment="Left"
Margin="0 25 0 0"
Text="Item Name:"/>
<Label Name="DateGrantedLabel"
HorizontalAlignment="Left"
Margin="0 25 0 0"
Text="Date Granted:"/>
<BoxContainer Orientation="Horizontal">
<Label HorizontalAlignment="Left"
Margin="0 25 0 26"
Text="{Loc 'contraband-permit-console-window-label-grant-tab-reason'}"/>
<LineEdit Name="PermitReasonTextBox"
HorizontalAlignment="Right"
Margin="5 0 0 0"
PlaceHolder="{Loc 'contraband-permit-console-window-label-grant-tab-reason-placeholder'}"
MinWidth="220"
SetHeight="25"/>
</BoxContainer>
<!-- Permit owner info -->
<Label HorizontalAlignment="Center"
Margin="0 10 0 0"
Text="Owner Information"
StyleClasses="LabelHeading"/>
<PanelContainer StyleClasses="LowDivider"/>
<Label Name="OwnerNameLabel"
HorizontalAlignment="Left"
Margin="0 5 0 0"
Text="Name:"/>
<Label Name="OwnerSpeciesLabel"
HorizontalAlignment="Left"
Margin="0 5 0 0"
Text="Species:"/>
<Label Name="OwnerAgeLabel"
HorizontalAlignment="Left"
Margin="0 5 0 0"
Text="Age:"/>
<Label Name="OwnerGenderLabel"
HorizontalAlignment="Left"
Margin="0 5 0 0"
Text="Gender:"/>
<Label Name="OwnerEyeColorLabel"
HorizontalAlignment="Left"
Margin="0 5 0 0"
Text="Eye Color:"/>
</BoxContainer>
</PanelContainer>
</BoxContainer>

<!-- Central divider -->
<PanelContainer StyleClasses="LowDivider"
VerticalExpand="True"
Margin="0 0 0 0"
SetWidth="2"/>

<!-- Right side - buttons and sprite view of permit owner -->
<BoxContainer VerticalExpand="True"
HorizontalExpand="True"
Orientation="Vertical"
HorizontalAlignment="Center"
MinWidth="225"
Margin="10 10 10 10"
Name="PermitGranterRight"
Visible="False">

<!-- Visible controls -->
<BoxContainer VerticalExpand="True"
HorizontalExpand="True"
Orientation="Vertical"
ReservesSpace="False">

<!-- Permit owner selector and picture -->
<BoxContainer Orientation="Vertical"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<PanelContainer Margin="10"
VerticalExpand="True">
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat BorderThickness="3"
BorderColor="#ffd688"
BackgroundColor="#000000FF"/>
</PanelContainer.PanelOverride>
<BoxContainer HorizontalAlignment="Center"
VerticalAlignment="Center"
Margin="4">
<SpriteView
Name="PermitOwnerView"
Margin="10 10 10 10"
HorizontalAlignment="Center"
VerticalAlignment="Center"
MinSize="192 192"
Scale="4 4"
Stretch="Fill"/>
</BoxContainer>
</PanelContainer>
</BoxContainer>

<!-- Button list -->
<BoxContainer HorizontalExpand="True"
Orientation="Vertical"
HorizontalAlignment="Right"
VerticalAlignment="Center"
Margin="15 15 15 15"
ReservesSpace="False"
MinWidth="300">

<!-- Grant button -->
<Button Name="GrantButton"
HorizontalExpand="True"
Margin="0 10 0 0"
SetHeight="40"
Text="{Loc 'contraband-permit-console-window-permit-grant'}">
<TextureRect HorizontalAlignment="Left"
VerticalAlignment="Center"
SetSize="32 32"
Stretch="KeepAspectCentered"
TexturePath="/Textures/Interface/VerbIcons/plus.svg.192dpi.png">
</TextureRect>
</Button>

<!-- Eject button -->
<Button Name="EjectButton"
HorizontalExpand="True"
Margin="0 10 0 0"
SetHeight="40"
Text="{Loc 'contraband-permit-console-window-permit-eject'}"
Access="Public">
<TextureRect HorizontalAlignment="Left"
VerticalAlignment="Center"
SetSize="32 32"
Stretch="KeepAspectCentered"
TexturePath="/Textures/Interface/VerbIcons/eject.svg.192dpi.png">
</TextureRect>
</Button>

</BoxContainer>
</BoxContainer>

</BoxContainer>
</BoxContainer>

<!-- Footer -->
<BoxContainer Orientation="Vertical">
<PanelContainer StyleClasses="LowDivider"/>
<BoxContainer
Margin="10,2,5,0"
Orientation="Horizontal"
VerticalAlignment="Bottom">
<Label StyleClasses="WindowFooterText"
Text="{Loc 'contraband-permit-console-window-flavor-left'}"/>
<Label
HorizontalAlignment="Right"
HorizontalExpand="True"
Margin="0,0,5,0"
StyleClasses="WindowFooterText"
Text="{Loc 'contraband-permit-console-window-flavor-right'}"/>
</BoxContainer>
</BoxContainer>
</BoxContainer>
</controls:FancyWindow>
Loading
Loading