Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
0305b95
Moved Warper and Shipyard Localization
LukeZurg22 Dec 2, 2025
3f4c7ee
Updated ShipyardDirectionSystem.cs
LukeZurg22 Dec 3, 2025
43607e2
Cleaned Frontier Shipyard Code w. Respect to Post-Cleaning Monolith S…
LukeZurg22 Dec 3, 2025
4069cec
Corrected Floof Reference Source Folder to "_Floof" (For IceCream)
LukeZurg22 Dec 3, 2025
4c32112
Added Niekroniak Names List
LukeZurg22 Dec 3, 2025
8d8a020
Corrected PricingSystem.cs Commentation
LukeZurg22 Dec 3, 2025
00764bf
Added Purchasable POIs to PointOfInterestSystem.cs
LukeZurg22 Dec 3, 2025
d8182be
Moved Null's Form of shipyard.ftl
LukeZurg22 Dec 3, 2025
471d23b
Added Base Buyable POI Prototype
LukeZurg22 Dec 3, 2025
31e750c
Added Zombie Lab (Mors Research Centre) Buyable POI
LukeZurg22 Dec 3, 2025
94f46a3
Added nullith.ftl
LukeZurg22 Dec 3, 2025
c423f85
Shipyard Information Locale and Output Cleanup
LukeZurg22 Dec 3, 2025
3f8e63f
Reworked nullith.yml Monolith Base Type
LukeZurg22 Dec 3, 2025
7841154
Added NonExistentCompanyName variable to CompanyComponent.cs
LukeZurg22 Dec 3, 2025
f3bcc0c
Updated Mors Research Centre
LukeZurg22 Dec 3, 2025
b7cd6cf
Fixed Floof Reference in bowl.yml
LukeZurg22 Dec 3, 2025
532e81b
Added Generic Company Stamp
LukeZurg22 Dec 3, 2025
41b4864
Added Buyable POI Locale
LukeZurg22 Dec 3, 2025
ffb849a
Added Deed and generic company stamp
LukeZurg22 Dec 3, 2025
6b395e0
Fixed Nullith Sprite Clipping with Spawned Items
LukeZurg22 Dec 3, 2025
adad424
Added Titles for other Points of Interest preemptively
LukeZurg22 Dec 3, 2025
1c72896
Added Deed to Localization
LukeZurg22 Dec 3, 2025
73c8802
Updated nullith.yml
LukeZurg22 Dec 3, 2025
92bdfb9
Added Buyable Points of Interest via Nullith Rework
LukeZurg22 Dec 3, 2025
6a5aa51
Added Guidebook Entry for Buyable POIs
LukeZurg22 Dec 4, 2025
a3a3469
Converted bottle_clunk(&2).ogg to Mono Track
LukeZurg22 Dec 4, 2025
ea2fba1
Removed Grid Deletion Messages and Added Quick Patch to Repo
LukeZurg22 Dec 5, 2025
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
@@ -1,15 +1,16 @@
using Content.Client._NF.Shipyard.UI;
using Content.Shared.Containers.ItemSlots;
using Content.Shared._NF.Shipyard.BUI;
using Content.Shared._NF.Shipyard.Events;
using Content.Shared.Containers.ItemSlots;
using static Robust.Client.UserInterface.Controls.BaseButton;
#pragma warning disable CS0618 // Type or member is obsolete

namespace Content.Client._NF.Shipyard.BUI;

public sealed class ShipyardConsoleBoundUserInterface : BoundUserInterface
{
private ShipyardConsoleMenu? _menu;
private ShipyardRulesPopup? _rulesWindow;
//private ShipyardRulesPopup? _rulesWindow;
public int Balance { get; private set; }

public int? ShipSellValue { get; private set; }
Expand Down Expand Up @@ -40,7 +41,10 @@ protected override void Open()
_menu.TargetIdButton.OnPressed += _ => SendMessage(new ItemSlotButtonPressedEvent("ShipyardConsole-targetId"));
}

private void Populate(List<string> availablePrototypes, List<string> unavailablePrototypes, bool freeListings, bool validId)
private void Populate(List<string> availablePrototypes,
List<string> unavailablePrototypes,
bool freeListings,
bool validId)
{
if (_menu == null)
return;
Expand All @@ -60,16 +64,20 @@ protected override void UpdateState(BoundUserInterfaceState state)

Balance = cState.Balance;
ShipSellValue = cState.ShipSellValue;
var castState = (ShipyardConsoleInterfaceState) state;
Populate(castState.ShipyardPrototypes.available, castState.ShipyardPrototypes.unavailable, castState.FreeListings, castState.IsTargetIdPresent);
var castState = (ShipyardConsoleInterfaceState)state;
Populate(castState.ShipyardPrototypes.available,
castState.ShipyardPrototypes.unavailable,
castState.FreeListings,
castState.IsTargetIdPresent);
_menu?.UpdateState(castState);
}

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

if (!disposing) return;
if (!disposing)
return;

_menu?.Dispose();
}
Expand All @@ -84,6 +92,7 @@ private void ApproveOrder(ButtonEventArgs args)
var vesselId = row.Vessel.ID;
SendMessage(new ShipyardConsolePurchaseMessage(vesselId));
}

private void SellShip(ButtonEventArgs args)
{
//reserved for a sanity check, but im not sure what since we check all the important stuffs on server already
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
using Content.Client._Null.Nullith.UI;
using Content.Shared._Null.Nullith;
using Content.Shared._Null.Nullith.Events;
using Content.Shared.Containers.ItemSlots;
using Robust.Client.UserInterface.Controls;

#pragma warning disable CS0618 // Type or member is obsolete

namespace Content.Client._Null.Nullith.BUI;

/// <inheritdoc />
public sealed class NullithConsoleBoundUserInterface : BoundUserInterface
{
private NullithConsoleMenu? _menu;

public int Balance { get; private set; }

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

protected override void Open()
{
base.Open();
_menu = new NullithConsoleMenu(this);
_menu.OpenCentered();
// The Shipyard Console may be used as reference for rules menu popup, if it needs implementation.
// Else-wise, it shall NOT here as it isn't needed as of 20251201.
_menu.OnClose += Close;
_menu.OnOrderApproved += ApproveOrder;
_menu.TargetIdButton.OnPressed += _ => SendMessage(new ItemSlotButtonPressedEvent("ShipyardConsole-targetId"));
}

private void Populate(List<string> availablePrototypes,
List<string> unavailablePrototypes,
bool freeListings,
bool validId)
{
if (_menu == null)
return;

_menu.PopulateLocations(availablePrototypes, unavailablePrototypes, freeListings, validId);
_menu.PopulateCategories(availablePrototypes, unavailablePrototypes);
}

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

if (state is not NullithConsoleInterfaceState consoleState)
return;

Balance = consoleState.Balance;
Populate(
consoleState.ShipyardPrototypes.available,
consoleState.ShipyardPrototypes.unavailable,
consoleState.FreeListings,
consoleState.IsTargetIdPresent);
_menu?.UpdateState(consoleState);
}

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

if (!disposing)
return;
_menu?.Dispose();
}

private void ApproveOrder(BaseButton.ButtonEventArgs args)
{
if (args.Button.Parent?.Parent is not PoIRow row || row.PoI == null)
{
return;
}

var pointOfInterestId = row.PoI.ID;
SendMessage(new NullithConsolePurchaseMessage(pointOfInterestId));
}
}
127 changes: 127 additions & 0 deletions Content.Client/_Null/Nullith/UI/NullithConsoleMenu.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
<controls:FancyWindow xmlns="https://spacestation14.io"
xmlns:gfx="clr-namespace:Robust.Client.Graphics;assembly=Robust.Client"
xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"
SetSize="640 600"
MinSize="640 450">
<PanelContainer VerticalExpand="True" HorizontalExpand="True" Margin="0 8 0 2">
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat BorderThickness="7" BorderColor="#252525" BackgroundColor="#3D384D"/>
</PanelContainer.PanelOverride>
<PanelContainer VerticalExpand="True" HorizontalExpand="True" Margin="4 4 4 4">
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat BorderThickness="2" BorderColor="#333333" BackgroundColor="#181818"/>
</PanelContainer.PanelOverride>
<BoxContainer Orientation="Vertical" Margin="5 0 5 0">
<PanelContainer VerticalExpand="False" HorizontalExpand="True" Margin="0 8 0 2">
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat BorderThickness="2" BorderColor="#333333" BackgroundColor="#141414"/>
</PanelContainer.PanelOverride>
<BoxContainer Orientation="Vertical" Margin="5 0 5 0">
<BoxContainer Orientation="Vertical">
<BoxContainer Orientation="Horizontal">
<Label Text="{Loc 'bank-atm-menu-balance-label'}"
StyleClasses="LabelKeyText" />
<Label Name="BalanceLabel"
Text="{Loc 'shipyard-console-no-bank'}" />
</BoxContainer>
</BoxContainer>
<BoxContainer Orientation="Vertical">
<BoxContainer Orientation="Horizontal">
<Label Text="{Loc 'nullith-console-resale-warning-label'}"
StyleClasses="LabelKeyText" />
</BoxContainer>
</BoxContainer>
</BoxContainer>
</PanelContainer>
<BoxContainer Orientation="Horizontal">
<PanelContainer VerticalExpand="True" HorizontalExpand="True" Margin="0 8 0 2">
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat BorderThickness="2" BorderColor="#333333" BackgroundColor="#141414"/>
</PanelContainer.PanelOverride>
<controls:StripeBack MinSize="48 48">
<LineEdit Name="SearchBar"
PlaceHolder="{Loc 'cargo-console-menu-search-bar-placeholder'}"
Margin="2 2 2 2"
HorizontalExpand="True" />
</controls:StripeBack>
</PanelContainer>
</BoxContainer>
<BoxContainer Orientation="Horizontal">
<PanelContainer VerticalExpand="True" HorizontalExpand="True" Margin="0 8 0 2">
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat BorderThickness="3" BorderColor="#333333" BackgroundColor="#333333"/>
</PanelContainer.PanelOverride>
<PanelContainer Margin="1 1 1 1">
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat BorderThickness="3" BorderColor="#636363" BackgroundColor="#141414"/>
</PanelContainer.PanelOverride>
<BoxContainer Orientation="Horizontal">
<OptionButton Name="Categories"
Prefix="{Loc 'shipyard-console-menu-class-label'}"
StyleClasses="ButtonSquare"
Margin="2 2 2 2"
HorizontalExpand="True" />
</BoxContainer>
</PanelContainer>
</PanelContainer>
</BoxContainer>
<ScrollContainer HorizontalExpand="True"
VerticalExpand="True"
SizeFlagsStretchRatio="6">
<BoxContainer Name="PoIList"
Orientation="Vertical"
HorizontalExpand="True"
VerticalExpand="True">
<!-- Vessels get added here by code -->
</BoxContainer>
</ScrollContainer>
<PanelContainer VerticalExpand="True" HorizontalExpand="False" Margin="0 8 0 2">
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat BorderThickness="3" BorderColor="#333333" BackgroundColor="#333333"/>
</PanelContainer.PanelOverride>
<PanelContainer Margin="1 1 1 1">
<PanelContainer.PanelOverride>
<gfx:StyleBoxFlat BorderThickness="3" BorderColor="#636363" BackgroundColor="#141414"/>
</PanelContainer.PanelOverride>
<GridContainer Columns="4" HorizontalExpand="True" Margin="2 2 2 2">
<Button Name="TargetIdButton" Access="Public"
StyleClasses="ButtonSquare"/>
<!-- NULL SECTOR: NOT NEEDED -->
<!--<controls:ConfirmButton Name="UnassignDeedButton"
Text="{Loc 'shipyard-console-unassign-deed'}"
ConfirmationText="{Loc 'shipyard-console-confirm-unassign'}"
StyleClasses="ButtonSquare"
Disabled="True" />
<BoxContainer Orientation="Vertical">
<Label Text="{Loc 'shipyard-console-deed-label'}" />
<Label Name="DeedTitle"
Text=""/>
</BoxContainer>-->
</GridContainer>
</PanelContainer>
</PanelContainer>
<BoxContainer Orientation="Horizontal" Margin="0 2 0 2" Name="RenameContainer" Visible="False">
<LineEdit Name="RenameLineEdit"
PlaceHolder="Name"
MinWidth="140"
Editable="False" />
<Button Name="RenameButton"
Text="Rename"
Disabled="True" />
</BoxContainer>

<!-- Footer -->
<BoxContainer Orientation="Vertical" Margin="0 5 0 0" >
<PanelContainer StyleClasses="LowDivider" Margin="0 5 0 0" />
<BoxContainer Orientation="Horizontal" Margin="10 5 5 0" VerticalAlignment="Bottom">
<Label Text="{Loc 'shipyard-menu-flavor-left'}" StyleClasses="WindowFooterText" />
<Label Text="{Loc 'apc-menu-flavor-right'}" StyleClasses="WindowFooterText"
HorizontalAlignment="Right" HorizontalExpand="True" Margin="0 0 5 0" />
<TextureRect StyleClasses="NTLogoDark" Stretch="KeepAspectCentered"
VerticalAlignment="Center" HorizontalAlignment="Right" SetSize="19 19"/>
</BoxContainer>
</BoxContainer>
</BoxContainer>
</PanelContainer>
</PanelContainer>
</controls:FancyWindow>
Loading
Loading