using Content.Shared.PowerCell; using Content.Shared.PowerCell.Components; using JetBrains.Annotations; using Robust.Client.GameObjects; namespace Content.Client.PowerCell; [UsedImplicitly] public sealed class PowerCellSystem : SharedPowerCellSystem { [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SpriteSystem _sprite = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnPowerCellVisualsChange); } /// public override bool HasActivatableCharge(EntityUid uid, PowerCellDrawComponent? battery = null, PowerCellSlotComponent? cell = null, EntityUid? user = null) { if (!Resolve(uid, ref battery, ref cell, false)) return true; return battery.CanUse; } /// public override bool HasDrawCharge( EntityUid uid, PowerCellDrawComponent? battery = null, PowerCellSlotComponent? cell = null, EntityUid? user = null) { if (!Resolve(uid, ref battery, ref cell, false)) return true; return battery.CanDraw; } private void OnPowerCellVisualsChange(EntityUid uid, PowerCellVisualsComponent component, ref AppearanceChangeEvent args) { if (args.Sprite == null) return; if (!_sprite.LayerExists((uid, args.Sprite), PowerCellVisualLayers.Unshaded)) return; if (_appearance.TryGetData(uid, PowerCellVisuals.ChargeLevel, out var level, args.Component)) { if (level == 0) { _sprite.LayerSetVisible((uid, args.Sprite), PowerCellVisualLayers.Unshaded, false); return; } _sprite.LayerSetVisible((uid, args.Sprite), PowerCellVisualLayers.Unshaded, false); _sprite.LayerSetRsiState((uid, args.Sprite), PowerCellVisualLayers.Unshaded, $"o{level}"); } } private enum PowerCellVisualLayers : byte { Base, Unshaded, } }