перенос файлов сервера из папки White в _White
This commit is contained in:
117
Content.Server/_White/Economy/BankCartridgeSystem.cs
Normal file
117
Content.Server/_White/Economy/BankCartridgeSystem.cs
Normal file
@@ -0,0 +1,117 @@
|
||||
using Content.Server.CartridgeLoader;
|
||||
using Content.Shared.CartridgeLoader;
|
||||
using Content.Shared.PDA;
|
||||
using Content.Shared.White.Economy;
|
||||
|
||||
namespace Content.Server._White.Economy;
|
||||
|
||||
public sealed class BankCartridgeSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly CartridgeLoaderSystem? _cartridgeLoaderSystem = default!;
|
||||
[Dependency] private readonly BankCardSystem _bankCardSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
SubscribeLocalEvent<BankCartridgeComponent, CartridgeMessageEvent>(OnUiMessage);
|
||||
SubscribeLocalEvent<BankCartridgeComponent, CartridgeUiReadyEvent>(OnUiReady);
|
||||
SubscribeLocalEvent<BankCartridgeComponent, CartridgeAddedEvent>(OnInstall);
|
||||
SubscribeLocalEvent<BankCartridgeComponent, CartridgeRemovedEvent>(OnRemove);
|
||||
}
|
||||
|
||||
private void OnRemove(EntityUid uid, BankCartridgeComponent component, CartridgeRemovedEvent args)
|
||||
{
|
||||
component.Loader = null;
|
||||
}
|
||||
|
||||
private void OnInstall(EntityUid uid, BankCartridgeComponent component, CartridgeAddedEvent args)
|
||||
{
|
||||
component.Loader = args.Loader;
|
||||
}
|
||||
|
||||
private void OnAccountLink(EntityUid uid, BankCartridgeComponent component, BankAccountLinkMessage args)
|
||||
{
|
||||
if (!_bankCardSystem.TryGetAccount(args.AccountId, out var account) || args.Pin != account.AccountPin ||
|
||||
account.CommandBudgetAccount)
|
||||
{
|
||||
component.AccountLinkResult = Loc.GetString("bank-program-ui-link-error");
|
||||
return;
|
||||
}
|
||||
|
||||
component.AccountLinkResult = Loc.GetString("bank-program-ui-link-success");
|
||||
|
||||
if (args.AccountId != component.AccountId)
|
||||
{
|
||||
if (component.AccountId != null &&
|
||||
_bankCardSystem.TryGetAccount(component.AccountId.Value, out var oldAccount) &&
|
||||
oldAccount.CartridgeUid == uid)
|
||||
oldAccount.CartridgeUid = null;
|
||||
|
||||
if (account.CartridgeUid != null)
|
||||
Comp<BankCartridgeComponent>(account.CartridgeUid.Value).AccountId = null;
|
||||
|
||||
account.CartridgeUid = uid;
|
||||
component.AccountId = args.AccountId;
|
||||
}
|
||||
|
||||
if (!TryComp(GetEntity(args.LoaderUid), out PdaComponent? pda) || !pda.ContainedId.HasValue ||
|
||||
HasComp<BankCardComponent>(pda.ContainedId.Value))
|
||||
return;
|
||||
|
||||
var bankCard = AddComp<BankCardComponent>(pda.ContainedId.Value);
|
||||
bankCard.AccountId = account.AccountId;
|
||||
}
|
||||
|
||||
private void OnUiReady(EntityUid uid, BankCartridgeComponent component, CartridgeUiReadyEvent args)
|
||||
{
|
||||
UpdateUiState(uid, args.Loader, component);
|
||||
}
|
||||
|
||||
private void OnUiMessage(EntityUid uid, BankCartridgeComponent component, CartridgeMessageEvent args)
|
||||
{
|
||||
if (args is BankAccountLinkMessage message)
|
||||
OnAccountLink(uid, component, message);
|
||||
|
||||
UpdateUiState(uid, GetEntity(args.LoaderUid), component);
|
||||
}
|
||||
|
||||
private void UpdateUiState(EntityUid cartridgeUid, EntityUid loaderUid, BankCartridgeComponent? component = null)
|
||||
{
|
||||
if (!Resolve(cartridgeUid, ref component))
|
||||
return;
|
||||
|
||||
var accountLinkMessage = Loc.GetString("bank-program-ui-link-program") + '\n';
|
||||
if (TryComp(loaderUid, out PdaComponent? pda) && pda.ContainedId.HasValue)
|
||||
{
|
||||
accountLinkMessage += TryComp(pda.ContainedId.Value, out BankCardComponent? bankCard)
|
||||
? Loc.GetString("bank-program-ui-link-id-card-linked", ("account", bankCard.AccountId!.Value))
|
||||
: Loc.GetString("bank-program-ui-link-id-card");
|
||||
}
|
||||
else
|
||||
{
|
||||
accountLinkMessage += Loc.GetString("bank-program-ui-link-no-id-card");
|
||||
}
|
||||
|
||||
var state = new BankCartridgeUiState
|
||||
{
|
||||
AccountLinkResult = component.AccountLinkResult,
|
||||
AccountLinkMessage = accountLinkMessage
|
||||
};
|
||||
|
||||
if (component.AccountId != null && _bankCardSystem.TryGetAccount(component.AccountId.Value, out var account))
|
||||
{
|
||||
state.Balance = account.Balance;
|
||||
state.AccountId = account.AccountId;
|
||||
state.OwnerName = account.Name;
|
||||
}
|
||||
_cartridgeLoaderSystem?.UpdateCartridgeUiState(loaderUid, state);
|
||||
}
|
||||
|
||||
public void UpdateUiState(EntityUid cartridgeUid)
|
||||
{
|
||||
if (!TryComp(cartridgeUid, out BankCartridgeComponent? component) || component.Loader == null)
|
||||
return;
|
||||
|
||||
UpdateUiState(cartridgeUid, component.Loader.Value, component);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user