using Content.Client.Items.UI; using Content.Client.Message; using Content.Client.Stylesheets; using Content.Shared.Weapons.Ranged.Components; using Robust.Client.UserInterface.Controls; namespace Content.Client.Weapons.Ranged.UI; /// /// Displays magazine ammunition information for . /// /// public sealed partial class MagazineStatusControl : PollingItemStatusControl { private readonly Entity _parent; private readonly RichTextLabel _label; public MagazineStatusControl(Entity parent) { _parent = parent; _label = new RichTextLabel { StyleClasses = { StyleClass.ItemStatus } }; AddChild(_label); } protected override Data PollData() { var ammoProvider = _parent.Comp; var currentRounds = ammoProvider.Count; var maxRounds = ammoProvider.Capacity; return new Data(currentRounds, maxRounds); } protected override void Update(in Data data) { var markup = Loc.GetString("magazine-status-rounds", ("current", data.CurrentRounds), ("max", data.MaxRounds)); _label.SetMarkup(markup); } public readonly record struct Data(int CurrentRounds, int MaxRounds); }