using Robust.Client.GameObjects;
using Content.Shared._Goobstation.Bingle;
using Content.Shared.CombatMode;
namespace Content.Client._Goobstation.Bingle;
///
/// Handles the appearance of bingles.
///
public sealed class BingleSystem : EntitySystem
{
[Dependency] private readonly AppearanceSystem _appearance = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent(OnCombatToggle); // WD EDIT
SubscribeLocalEvent(OnAppearanceChange);
}
///
/// Makes the eyes glow red when combat mode is engaged.
///
private void OnCombatToggle(EntityUid uid, BingleComponent component, CombatModeToggledEvent args) // WD EDIT
{
if (!TryComp(uid, out var sprite))
return;
_appearance.OnChangeData(uid, sprite);
}
public void OnAppearanceChange(EntityUid uid, BingleComponent component, ref AppearanceChangeEvent args)
{
var sprite = args.Sprite;
if (sprite == null)
return;
if (!TryComp(uid, out var combat))
return;
if (!sprite.LayerMapTryGet(BingleVisual.Combat, out var layer))
return;
sprite.LayerSetVisible(layer, combat.IsInCombatMode);
}
}