private void PlayerAttached(AlertsComponent clientAlertsComponent)
 {
     if (!CurControlled(clientAlertsComponent.Owner, _playerManager))
     {
         return;
     }
     SyncAlerts?.Invoke(this, clientAlertsComponent.Alerts);
 }
    protected override void AfterClearAlert(AlertsComponent alertsComponent)
    {
        if (!CurControlled(alertsComponent.Owner, _playerManager))
        {
            return;
        }

        SyncAlerts?.Invoke(this, alertsComponent.Alerts);
    }
Beispiel #3
0
    private void OnPlayerAttached(EntityUid uid, AlertsComponent component, PlayerAttachedEvent args)
    {
        if (_playerManager.LocalPlayer?.ControlledEntity != uid)
        {
            return;
        }

        SyncAlerts?.Invoke(this, component.Alerts);
    }
Beispiel #4
0
    protected override void AfterClearAlert(AlertsComponent alertsComponent)
    {
        if (_playerManager.LocalPlayer?.ControlledEntity != alertsComponent.Owner)
        {
            return;
        }

        SyncAlerts?.Invoke(this, alertsComponent.Alerts);
    }
Beispiel #5
0
    private void OnPlayerDetached(EntityUid uid, AlertsComponent component, PlayerDetachedEvent args)
    {
        if (_playerManager.LocalPlayer?.ControlledEntity != uid)
        {
            return;
        }

        ClearAlerts?.Invoke(this, EventArgs.Empty);
    }
Beispiel #6
0
    protected override void HandleComponentShutdown(EntityUid uid, AlertsComponent component, ComponentShutdown args)
    {
        base.HandleComponentShutdown(uid, component, args);

        if (_playerManager.LocalPlayer?.ControlledEntity != uid)
        {
            return;
        }

        ClearAlerts?.Invoke(this, EventArgs.Empty);
    }
 private void OnAlertsParentChange(EntityUid uid, AlertsComponent component, ref EntParentChangedMessage args)
 {
     if (IsWeightless(component.Owner))
     {
         _alerts.ShowAlert(uid, AlertType.Weightless);
     }
     else
     {
         _alerts.ClearAlert(uid, AlertType.Weightless);
     }
 }
    private void ClientAlertsHandleState(EntityUid uid, AlertsComponent component, ref ComponentHandleState args)
    {
        var componentAlerts = (args.Current as AlertsComponentState)?.Alerts;

        if (componentAlerts == null)
        {
            return;
        }

        //TODO: Do we really want to send alerts for non-attached entity?
        component.Alerts = componentAlerts;
        if (!CurControlled(component.Owner, _playerManager))
        {
            return;
        }

        SyncAlerts?.Invoke(this, componentAlerts);
    }
Beispiel #9
0
    private void ClientAlertsHandleState(EntityUid uid, AlertsComponent component, ref ComponentHandleState args)
    {
        if (_playerManager.LocalPlayer?.ControlledEntity != uid)
        {
            return;
        }

        var componentAlerts = (args.Current as AlertsComponentState)?.Alerts;

        if (componentAlerts == null)
        {
            return;
        }

        component.Alerts = new(componentAlerts);

        SyncAlerts?.Invoke(this, componentAlerts);
    }
        public void ShowAlerts()
        {
            // this is kind of unnecessary because there's integration test coverage of Alert components
            // but wanted to keep it anyway to see what's possible w.r.t. testing components
            // in a unit test

            IoCManager.Resolve <ISerializationManager>().Initialize();
            var prototypeManager = IoCManager.Resolve <IPrototypeManager>();

            prototypeManager.Initialize();
            var factory = IoCManager.Resolve <IComponentFactory>();

            factory.RegisterClass <AlertsComponent>();
            prototypeManager.LoadFromStream(new StringReader(PROTOTYPES));
            prototypeManager.ResolveResults();

            var entSys = IoCManager.Resolve <IEntitySystemManager>();

            entSys.LoadExtraSystemType <ServerAlertsSystem>();

            var alertsComponent = new AlertsComponent();

            alertsComponent = IoCManager.InjectDependencies(alertsComponent);

            Assert.That(EntitySystem.Get <AlertsSystem>().TryGet(AlertType.LowPressure, out var lowpressure));
            Assert.That(EntitySystem.Get <AlertsSystem>().TryGet(AlertType.HighPressure, out var highpressure));

            EntitySystem.Get <AlertsSystem>().ShowAlert(alertsComponent.Owner, AlertType.LowPressure, null, null);
            var alertState = alertsComponent.GetComponentState() as AlertsComponentState;

            Assert.NotNull(alertState);
            Assert.That(alertState.Alerts.Count, Is.EqualTo(1));
            Assert.That(alertState.Alerts.ContainsKey(lowpressure.AlertKey));

            EntitySystem.Get <AlertsSystem>().ShowAlert(alertsComponent.Owner, AlertType.HighPressure, null, null);
            alertState = alertsComponent.GetComponentState() as AlertsComponentState;
            Assert.That(alertState.Alerts.Count, Is.EqualTo(1));
            Assert.That(alertState.Alerts.ContainsKey(highpressure.AlertKey));

            EntitySystem.Get <AlertsSystem>().ClearAlertCategory(alertsComponent.Owner, AlertCategory.Pressure);
            alertState = alertsComponent.GetComponentState() as AlertsComponentState;
            Assert.That(alertState.Alerts.Count, Is.EqualTo(0));
        }
Beispiel #11
0
 private void OnPlayerAttached(EntityUid uid, AlertsComponent component, PlayerAttachedEvent args)
 {
     Dirty(component);
 }