mirror of
https://github.com/space-syndicate/space-station-14.git
synced 2026-10-10 02:41:18 +03:00
* more-item-status * update 1 * update 2 * Update pistol.yml * update 3 * yml * oops * BatteryItemStatus * fix ChargeItemStatus * Update item-status.ftl * review update 1 * review fix 1 * Update BatteryInfoSystem.cs * Update TimerTriggerItemStatus * merge fix * merge fix * review update 2 * review update 3 * fix marge * StyleNano * review update 4 * review update 5 * BatteryItemStatus * BatteryItemStatus Client * code cleanup * merge * merge and GasTank fix * Merge * unnecessary components * review * oops * GasTank * wawa
58 lines
1.8 KiB
C#
58 lines
1.8 KiB
C#
using Content.Client.Actions;
|
|
using Content.Client.Charges.UI;
|
|
using Content.Client.Items;
|
|
using Content.Shared.Actions;
|
|
using Content.Shared.Charges.Components;
|
|
using Content.Shared.Charges.Systems;
|
|
|
|
namespace Content.Client.Charges;
|
|
|
|
public sealed partial class ChargesSystem : SharedChargesSystem
|
|
{
|
|
[Dependency] private ActionsSystem _actions = default!;
|
|
|
|
private Dictionary<EntityUid, int> _lastCharges = new();
|
|
private Dictionary<EntityUid, int> _tempLastCharges = new();
|
|
|
|
public override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
Subs.ItemStatus<LimitedChargesComponent>(entity => new ChargeStatusControl(entity));
|
|
}
|
|
|
|
public override void Update(float frameTime)
|
|
{
|
|
// Technically this should probably be in frameupdate but no one will ever notice a tick of delay on this.
|
|
base.Update(frameTime);
|
|
|
|
if (!_timing.IsFirstTimePredicted)
|
|
return;
|
|
|
|
// Update recharging actions. Server doesn't actually care about this and it's a waste of performance, actions are immediate.
|
|
var query = AllEntityQuery<AutoRechargeComponent, LimitedChargesComponent>();
|
|
|
|
while (query.MoveNext(out var uid, out var recharge, out var charges))
|
|
{
|
|
if (_actions.GetAction(uid, false) is not {} action)
|
|
continue;
|
|
|
|
var current = GetCurrentCharges((uid, charges, recharge));
|
|
|
|
if (!_lastCharges.TryGetValue(uid, out var last) || current != last)
|
|
{
|
|
_actions.UpdateAction(action);
|
|
}
|
|
|
|
_tempLastCharges[uid] = current;
|
|
}
|
|
|
|
_lastCharges.Clear();
|
|
|
|
foreach (var (uid, value) in _tempLastCharges)
|
|
{
|
|
_lastCharges[uid] = value;
|
|
}
|
|
|
|
_tempLastCharges.Clear();
|
|
}
|
|
}
|