Skip to content

Commit

Permalink
Merge branch 'master' into LoaderATM
Browse files Browse the repository at this point in the history
  • Loading branch information
whatston3 authored Nov 18, 2024
2 parents 2aa3441 + 04b9dc3 commit 545b185
Show file tree
Hide file tree
Showing 108 changed files with 1,467 additions and 472 deletions.
10 changes: 4 additions & 6 deletions Content.Client/Bank/BUI/StationBankATMMenuBoundUserInterface.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
using Content.Client.Bank.UI;
using Content.Shared.Bank.BUI;
using Content.Shared.Bank.Events;
using Robust.Client.GameObjects;
using Content.Shared.Access.Systems;

namespace Content.Client.Cargo.BUI;

Expand Down Expand Up @@ -35,18 +33,18 @@ protected override void Dispose(bool disposing)

private void OnWithdraw()
{
if (_menu?.Amount is not int amount)
if (_menu?.WithdrawalAmount is not int amount)
return;

SendMessage(new StationBankWithdrawMessage(amount, _menu.Reason, _menu.Description));
SendMessage(new StationBankWithdrawMessage(amount, _menu.WithdrawalReason, _menu.WithdrawalDescription));
}

private void OnDeposit()
{
if (_menu?.Amount is not int amount)
if (_menu?.DepositAmount is not int amount)
return;

SendMessage(new StationBankDepositMessage(amount, _menu.Reason, _menu.Description));
SendMessage(new StationBankDepositMessage(amount, _menu.DepositReason, _menu.DepositDescription));
}

protected override void UpdateState(BoundUserInterfaceState state)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
using Content.Client.Bank.UI;
using Content.Shared.Bank.BUI;
using Content.Shared.Bank.Events;
using Robust.Client.GameObjects;

namespace Content.Client.Cargo.BUI;

Expand Down
75 changes: 42 additions & 33 deletions Content.Client/Bank/UI/StationBankATMMenu.xaml
Original file line number Diff line number Diff line change
@@ -1,45 +1,54 @@
<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="480 230"
MinSize="360 230">
<BoxContainer Margin="10 2 10 2" Orientation="Vertical">
<BoxContainer Orientation="Horizontal">
SetSize="360 315"
MinSize="360 315">
<BoxContainer Margin="10 2 10 2" Orientation="Vertical" VerticalExpand="True">
<GridContainer Columns="2" HorizontalExpand="True">
<Label Text="{Loc 'bank-atm-menu-balance-label'}"
StyleClasses="LabelKeyText" />
StyleClasses="LabelKeyText"
HorizontalAlignment="Right" />
<Label Name="BalanceLabel"
Text="{Loc 'bank-atm-menu-no-bank'}" />
</BoxContainer>
<BoxContainer Orientation="Horizontal">
Text="{Loc 'bank-atm-menu-no-bank'}" />

<Label Text="{Loc 'bank-atm-menu-amount-label'}"
StyleClasses="LabelKeyText"
MinSize="100 0" />
<LineEdit Name="WithdrawEdit" SetSize="120 30" HorizontalAlignment="Right"/>
</BoxContainer>
<BoxContainer Orientation="Horizontal">
StyleClasses="LabelKeyText"
HorizontalAlignment="Right" />
<LineEdit Name="WithdrawEdit" MinSize="120 0" HorizontalExpand="True"/>

<Label Text="{Loc 'bank-atm-reason-label'}"
StyleClasses="LabelKeyText"
MinSize="100 0" />
<OptionButton Name="Reasons"
HorizontalExpand="True"/>
</BoxContainer>
<BoxContainer Orientation="Horizontal">
HorizontalAlignment="Right" />
<OptionButton Name="WithdrawalReasons"
HorizontalExpand="True"/>

<Label Text="{Loc 'bank-atm-description-label'}"
StyleClasses="LabelKeyText"
MinSize="100 0" />
<LineEdit Name="AmountDescription" MinSize="120 0" HorizontalExpand="True"/>
</BoxContainer>
<Button Name="WithdrawButton"
Text="{Loc 'bank-atm-menu-withdraw-button'}"/>
<TextureButton VerticalExpand="True" />
<BoxContainer Orientation="Horizontal">
HorizontalAlignment="Right" />
<LineEdit Name="WithdrawalAmountDescription" MinSize="120 0" HorizontalExpand="True"/>

<BoxContainer/> <!-- Skip an element -->
<Button Name="WithdrawButton"
Text="{Loc 'bank-atm-menu-withdraw-button'}"
HorizontalExpand="True"/>

<Label Text="{Loc 'bank-atm-menu-deposit-label'}"
StyleClasses="LabelKeyText" />
StyleClasses="LabelKeyText"
HorizontalAlignment="Right" />
<Label Name="DepositLabel"
Text="{Loc 'bank-atm-menu-no-deposit'}" />
</BoxContainer>
<Button Name="DepositButton"
Text="{Loc 'bank-atm-menu-deposit-button'}"/>
<TextureButton VerticalExpand="True" />
Text="{Loc 'bank-atm-menu-no-deposit'}" />

<Label Text="{Loc 'bank-atm-reason-label'}"
HorizontalAlignment="Right" />
<OptionButton Name="DepositReasons"
HorizontalExpand="True"/>

<Label Text="{Loc 'bank-atm-description-label'}"
HorizontalAlignment="Right" />
<LineEdit Name="DepositAmountDescription" MinSize="120 0" HorizontalExpand="True"/>

<BoxContainer/> <!-- Skip an element -->
<Button Name="DepositButton"
Text="{Loc 'bank-atm-menu-deposit-button'}"
HorizontalExpand="True"/>
</GridContainer>
</BoxContainer>
</controls:FancyWindow>
143 changes: 103 additions & 40 deletions Content.Client/Bank/UI/StationBankATMMenu.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,31 +14,83 @@ namespace Content.Client.Bank.UI;
[GenerateTypedNameReferences]
public sealed partial class StationBankATMMenu : FancyWindow
{
// TODO: reduce redundancy
public Action? WithdrawRequest;
public string? WithdrawalReason;
public string? WithdrawalDescription;
private readonly List<string> _withdrawalReasonStrings = new();
public int WithdrawalAmount;
public Action? DepositRequest;
public int Amount;
private readonly List<string> _reasonStrings = new();
public string? Reason;
public string? Description;
public string? DepositReason;
public string? DepositDescription;
private readonly List<string> _depositReasonStrings = new();
public int DepositAmount;
public bool Enabled;

public static (string, string)[] WithdrawalReasonArray = {
("default", Loc.GetString("station-bank-required")),
("payroll", Loc.GetString("station-bank-payroll")),
("workorder", Loc.GetString("station-bank-work-order")),
("supplies", Loc.GetString("station-bank-supplies")),
("bounty", Loc.GetString("station-bank-bounty")),
("other", Loc.GetString("station-bank-other"))
};

public static (string, string)[] DepositReasonArray = {
("default", Loc.GetString("station-bank-required")),
("fines", Loc.GetString("station-bank-fines")),
("donation", Loc.GetString("station-bank-donation")),
("assetssold", Loc.GetString("station-bank-assets-sold")),
("other", Loc.GetString("station-bank-other"))
};
public StationBankATMMenu()
{
RobustXamlLoader.Load(this);
WithdrawButton.OnPressed += OnWithdrawPressed;
DepositButton.OnPressed += OnDepositPressed;
DepositReasons.OnItemSelected += OnDepositReasonSelected;
DepositAmountDescription.OnTextChanged += OnDepositDescChanged;

Title = Loc.GetString("station-bank-atm-menu-title");
WithdrawEdit.OnTextChanged += OnAmountChanged;
Reasons.OnItemSelected += OnReasonSelected;
AmountDescription.OnTextChanged += OnDescChanged;

WithdrawButton.OnPressed += OnWithdrawPressed;
WithdrawalReasons.OnItemSelected += OnWithdrawalReasonSelected;
WithdrawalAmountDescription.OnTextChanged += OnWithdrawalDescChanged;
WithdrawEdit.OnTextChanged += OnWithdrawalAmountChanged;

// Update button status to default state.
UpdateWithdrawalButtonStatus();
UpdateDepositButtonStatus();
}

private void SetReasonText(int id)
private void SetWithdrawalReasonText(int id)
{
WithdrawalReason = id == 0 ? null : _withdrawalReasonStrings[id];
WithdrawalReasons.SelectId(id);
}
private void SetDepositReasonText(int id)
{
Reason = id == 0 ? null : _reasonStrings[id];
Reasons.SelectId(id);
DepositReason = id == 0 ? null : _depositReasonStrings[id];
DepositReasons.SelectId(id);
}
private void OnReasonSelected(OptionButton.ItemSelectedEventArgs args)
private void OnWithdrawalReasonSelected(OptionButton.ItemSelectedEventArgs args)
{
SetReasonText(args.Id);
SetWithdrawalReasonText(args.Id);
UpdateWithdrawalButtonStatus();
}
private void OnDepositReasonSelected(OptionButton.ItemSelectedEventArgs args)
{
SetDepositReasonText(args.Id);
UpdateDepositButtonStatus();
}
private void OnWithdrawalDescChanged(LineEdit.LineEditEventArgs args)
{
WithdrawalDescription = args.Text;
UpdateWithdrawalButtonStatus();
}
private void OnDepositDescChanged(LineEdit.LineEditEventArgs args)
{
DepositDescription = args.Text;
UpdateDepositButtonStatus();
}
public void SetBalance(int amount)
{
Expand All @@ -47,17 +99,29 @@ public void SetBalance(int amount)

public void SetDeposit(int amount)
{
DepositButton.Disabled = amount <= 0;
if (amount >= 0) // Valid
DepositLabel.Text = BankSystemExtensions.ToSpesoString(amount);
else
DepositLabel.Text = Loc.GetString("bank-atm-menu-cash-error");
DepositAmount = amount;
UpdateDepositButtonStatus();
}

public void SetEnabled(bool enabled)
{
WithdrawButton.Disabled = !enabled;
DepositButton.Disabled = !enabled;
Enabled = enabled;
UpdateWithdrawalButtonStatus();
UpdateDepositButtonStatus();
}

private void UpdateWithdrawalButtonStatus()
{
WithdrawButton.Disabled = !Enabled || WithdrawalAmount <= 0 || WithdrawalReason == null || string.IsNullOrEmpty(WithdrawalDescription);
}

private void UpdateDepositButtonStatus()
{
DepositButton.Disabled = !Enabled || DepositAmount <= 0 || DepositReason == null || string.IsNullOrEmpty(DepositDescription);
}

private void OnWithdrawPressed(BaseButton.ButtonEventArgs obj)
Expand All @@ -70,35 +134,34 @@ private void OnDepositPressed(BaseButton.ButtonEventArgs obj)
DepositRequest?.Invoke();
}

private void OnAmountChanged(LineEdit.LineEditEventArgs args)
private void OnWithdrawalAmountChanged(LineEdit.LineEditEventArgs args)
{
if (int.TryParse(args.Text, out var amount))
{
Amount = amount;
}
}

private void OnDescChanged(LineEdit.LineEditEventArgs args)
{
Description = args.Text;
WithdrawalAmount = amount;
else
WithdrawalAmount = 0;
UpdateWithdrawalButtonStatus();
}

public void PopulateReasons()
{
_reasonStrings.Clear();
Reasons.Clear();
//todo: think of a better way/place to store the petty cash reason strings. this is mostly for rp, and a little bit of admin qol
_reasonStrings.Add("default");
_reasonStrings.Add("payroll");
_reasonStrings.Add("workorder");
_reasonStrings.Add("supplies");
_reasonStrings.Add("bounty");
_reasonStrings.Add("other");
Reasons.AddItem(Loc.GetString("station-bank-required"), 0);
Reasons.AddItem(Loc.GetString("station-bank-payroll"), 1);
Reasons.AddItem(Loc.GetString("station-bank-workorder"), 2);
Reasons.AddItem(Loc.GetString("station-bank-supplies"), 3);
Reasons.AddItem(Loc.GetString("station-bank-bounty"), 4);
Reasons.AddItem(Loc.GetString("station-bank-other"), 5);
_withdrawalReasonStrings.Clear();
WithdrawalReasons.Clear();

var index = 0;
foreach (var withdrawalReason in WithdrawalReasonArray)
{
_withdrawalReasonStrings.Add(withdrawalReason.Item1);
WithdrawalReasons.AddItem(withdrawalReason.Item2, index);
index++;
}

index = 0;
foreach (var depositReason in DepositReasonArray)
{
_depositReasonStrings.Add(depositReason.Item1);
DepositReasons.AddItem(depositReason.Item2, index);
index++;
}
}
}
15 changes: 15 additions & 0 deletions Content.Client/_NF/CartridgeLoader/Cartridges/LedgerEntry.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<BoxContainer xmlns="https://spacestation14.io"
xmlns:cartridges="clr-namespace:Content.Client._NF.CartridgeLoader.Cartridges"
Orientation="Vertical"
HorizontalExpand="True">
<BoxContainer Orientation="Horizontal"
HorizontalExpand="True"
SetHeight="25">
<Label Name="Description"
Access="Public"/>
<Label Name="Value"
Access="Public"
HorizontalAlignment="Right"
HorizontalExpand="True"/>
</BoxContainer>
</BoxContainer>
14 changes: 14 additions & 0 deletions Content.Client/_NF/CartridgeLoader/Cartridges/LedgerEntry.xaml.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using Robust.Client.AutoGenerated;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;

namespace Content.Client._NF.CartridgeLoader.Cartridges;

[GenerateTypedNameReferences]
public sealed partial class LedgerEntry : BoxContainer
{
public LedgerEntry()
{
RobustXamlLoader.Load(this);
}
}
Loading

0 comments on commit 545b185

Please sign in to comment.