using Content.Server._Goobstation.Blob.Components; using Content.Shared._Goobstation.Blob; using Content.Shared._Goobstation.Blob.Components; using Content.Shared.FixedPoint; using Content.Shared.Popups; namespace Content.Server._Goobstation.Blob.Systems; public sealed class BlobResourceSystem : EntitySystem { [Dependency] private readonly BlobCoreSystem _blobCoreSystem = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; private EntityQuery _blobTile; private EntityQuery _blobCore; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnPulsed); SubscribeLocalEvent(OnPulsed); _blobTile = GetEntityQuery(); _blobCore = GetEntityQuery(); } private void OnPulsed(EntityUid uid, BlobResourceComponent component, T args) { if (!_blobTile.TryComp(uid, out var blobTileComponent) || blobTileComponent.Core == null) return; if (!_blobCore.TryComp(blobTileComponent.Core, out var blobCoreComponent) || blobCoreComponent.Observer == null) return; var points = component.PointsPerPulsed; if (blobCoreComponent.CurrentChem == BlobChemType.RegenerativeMateria) { points += 1; } _popup.PopupEntity(Loc.GetString("blob-get-resource", ("point", points)), uid, blobCoreComponent.Observer.Value, PopupType.Large); _blobCoreSystem.ChangeBlobPoint(blobTileComponent.Core.Value, points); } }