mirror of
https://github.com/wega-team/ss14-wega.git
synced 2026-06-09 10:06:49 +02:00
48 lines
1.3 KiB
C#
48 lines
1.3 KiB
C#
using Content.Client.Power.EntitySystems;
|
|
using Content.Shared.Alert;
|
|
using Content.Shared.Android;
|
|
using Content.Shared.PowerCell;
|
|
|
|
namespace Content.Client.Android;
|
|
|
|
public sealed class AndroidSystem : SharedAndroidSystem
|
|
{
|
|
[Dependency] private PowerCellSystem _powerCell = default!;
|
|
[Dependency] private BatterySystem _battery = default!;
|
|
[Dependency] private AlertsSystem _alerts = default!;
|
|
|
|
public override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
}
|
|
|
|
public override void Update(float frameTime)
|
|
{
|
|
base.Update(frameTime);
|
|
|
|
var androidsQuery = EntityQueryEnumerator<AndroidComponent>();
|
|
while (androidsQuery.MoveNext(out var ent, out var component))
|
|
{
|
|
UpdateBatteryAlert((ent, component));
|
|
}
|
|
}
|
|
|
|
private void UpdateBatteryAlert(Entity<AndroidComponent> ent)
|
|
{
|
|
if (!_powerCell.TryGetBatteryFromSlot(ent.Owner, out var battery))
|
|
{
|
|
_alerts.ShowAlert(ent.Owner, ent.Comp.NoBatteryAlert);
|
|
return;
|
|
}
|
|
|
|
var chargeLevel = (short)MathF.Round(_battery.GetChargeLevel(battery.Value.AsNullable()) * 10f);
|
|
|
|
if (chargeLevel == 0 && _powerCell.HasDrawCharge(ent.Owner))
|
|
{
|
|
chargeLevel = 1;
|
|
}
|
|
|
|
_alerts.ShowAlert(ent.Owner, ent.Comp.BatteryAlert, chargeLevel);
|
|
}
|
|
}
|