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); }
private void OnPlayerAttached(EntityUid uid, AlertsComponent component, PlayerAttachedEvent args) { if (_playerManager.LocalPlayer?.ControlledEntity != uid) { return; } SyncAlerts?.Invoke(this, component.Alerts); }
protected override void AfterClearAlert(AlertsComponent alertsComponent) { if (_playerManager.LocalPlayer?.ControlledEntity != alertsComponent.Owner) { return; } SyncAlerts?.Invoke(this, alertsComponent.Alerts); }
private void OnPlayerDetached(EntityUid uid, AlertsComponent component, PlayerDetachedEvent args) { if (_playerManager.LocalPlayer?.ControlledEntity != uid) { return; } ClearAlerts?.Invoke(this, EventArgs.Empty); }
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); }
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)); }
private void OnPlayerAttached(EntityUid uid, AlertsComponent component, PlayerAttachedEvent args) { Dirty(component); }