using Content.Shared._Sunrise.ScaleSprite; using System.Numerics; namespace Content.Server._Sunrise.ScaleSprite; public sealed class ScaleSpriteSystem : EntitySystem { [Dependency] private readonly SharedAppearanceSystem _appearance = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnComponentInit); SubscribeLocalEvent(OnComponentInit); } private void OnComponentInit(EntityUid uid, ScaleSpriteComponent component, ComponentInit args) { var appearance = EnsureComp(uid); _appearance.SetData(uid, ScaleSpriteVisuals.OldScale, component.Scale, appearance); _appearance.SetData(uid, ScaleSpriteVisuals.Scale, component.Scale, appearance); Dirty(uid, component); } private void OnComponentInit(EntityUid uid, RescaleSpriteComponent component, ComponentAdd args) { var appearance = EnsureComp(uid); var scaleSpriteComponent = EnsureComp(uid); if (!_appearance.TryGetData(uid, ScaleSpriteVisuals.OldScale, out var oldScale, appearance)) oldScale = Vector2.One; _appearance.SetData(uid, ScaleSpriteVisuals.Scale, oldScale * component.Scale, appearance); Dirty(uid, scaleSpriteComponent); RemComp(uid); } public void Scale(EntityUid uid, Vector2 scale) { var appearance = EnsureComp(uid); var component = EnsureComp(uid); _appearance.SetData(uid, ScaleSpriteVisuals.Scale, scale, appearance); Dirty(uid, component); } }