using Content.Client._CP14.UserInterface; using Content.Client._CP14.Workbench; using Content.Shared._CP14.Trading.Prototypes; using Content.Shared._CP14.Trading.Systems; using Robust.Client.AutoGenerated; using Robust.Client.UserInterface; using Robust.Client.UserInterface.XAML; using Robust.Shared.Prototypes; namespace Content.Client._CP14.Trading; [GenerateTypedNameReferences] public sealed partial class CP14SellingRequestControl : Control { [Dependency] private readonly IPrototypeManager _proto = default!; [Dependency] private readonly IEntityManager _entityManager = default!; public event Action? OnSellAttempt; public CP14SellingRequestControl(ProtoId request, float markupProcent, bool active) { RobustXamlLoader.Load(this); IoCManager.InjectDependencies(this); if (!_proto.TryIndex(request, out var indexedRequest)) return; //Requirements ItemRequirements.RemoveAllChildren(); foreach (var requirement in indexedRequest.Requirements) { ItemRequirements.AddChild(new CP14WorkbenchRequirementControl(requirement)); } //Coin reward PriceHolder.RemoveAllChildren(); var economySystem = _entityManager.System(); var originalPrice = economySystem.GetPrice(indexedRequest); var price = (int?)(originalPrice * markupProcent); PriceHolder.AddChild(new CP14PriceControl(price ?? 10000)); //Rep reward Reputation.Text = ((price ?? 0) * indexedRequest.ReputationCashback).ToString("0.00"); RequestButton.OnPressed += _ => OnSellAttempt?.Invoke(); RequestButton.Disabled = !active; } }