Replaces PowerReceiver's C# event with a ComponentMessage (#2888)

Co-authored-by: py01 <pyronetics01@gmail.com>
This commit is contained in:
py01
2021-01-03 09:13:01 -06:00
committed by GitHub
parent 914a214a19
commit 32f04fd7ca
19 changed files with 182 additions and 181 deletions

View File

@@ -1,4 +1,4 @@
#nullable enable
#nullable enable
using System;
using System.Threading.Tasks;
using Content.Server.GameObjects.Components.GUI;
@@ -53,19 +53,21 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece
Owner.EnsureComponent<PowerReceiverComponent>();
_container = ContainerManagerComponent.Ensure<ContainerSlot>($"{Name}-powerCellContainer", Owner);
// Default state in the visualizer is OFF, so when this gets powered on during initialization it will generally show empty
if (Owner.TryGetComponent(out PowerReceiverComponent? receiver))
}
public override void HandleMessage(ComponentMessage message, IComponent? component)
{
base.HandleMessage(message, component);
switch (message)
{
receiver.OnPowerStateChanged += PowerUpdate;
case PowerChangedMessage powerChanged:
PowerUpdate(powerChanged);
break;
}
}
public override void OnRemove()
{
if (Owner.TryGetComponent(out PowerReceiverComponent? receiver))
{
receiver.OnPowerStateChanged -= PowerUpdate;
}
_heldBattery = null;
base.OnRemove();
@@ -114,7 +116,7 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece
UpdateStatus();
}
private void PowerUpdate(object? sender, PowerStateEventArgs eventArgs)
private void PowerUpdate(PowerChangedMessage eventArgs)
{
UpdateStatus();
}

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using Content.Shared.GameObjects.EntitySystems;
using Robust.Server.GameObjects;
using Robust.Shared.GameObjects;
using Robust.Shared.Interfaces.GameObjects;
using Robust.Shared.Localization;
using Robust.Shared.Serialization;
using Robust.Shared.Utility;
@@ -52,7 +53,7 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece
/// <summary>
/// For attaching UpdateState() to events.
/// </summary>
public void UpdateState(object sender, EventArgs e)
public void UpdateState(PowerChangedMessage e)
{
UpdateState();
}
@@ -136,30 +137,17 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece
}
}
public override void Initialize()
public override void HandleMessage(ComponentMessage message, IComponent component)
{
base.Initialize();
}
public override void OnAdd()
{
base.OnAdd();
if (Owner.TryGetComponent(out PowerReceiverComponent receiver))
base.HandleMessage(message, component);
switch (message)
{
receiver.OnPowerStateChanged += UpdateState;
case PowerChangedMessage powerChanged:
UpdateState(powerChanged);
break;
}
}
public override void OnRemove()
{
if (Owner.TryGetComponent(out PowerReceiverComponent receiver))
{
receiver.OnPowerStateChanged -= UpdateState;
}
base.OnRemove();
}
void IExamine.Examine(FormattedMessage message, bool inDetailsRange)
{
message.AddMarkup(Loc.GetString($"The battery indicator displays: {BatteryStateText[State]}."));

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Threading.Tasks;
using Content.Server.GameObjects.Components.GUI;
using Content.Server.GameObjects.Components.Items.Storage;
@@ -209,19 +209,18 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece
{
base.Initialize();
Owner.EnsureComponent<PowerReceiverComponent>().OnPowerStateChanged += UpdateLight;
_lightBulbContainer = ContainerManagerComponent.Ensure<ContainerSlot>("light_bulb", Owner);
}
public override void OnRemove()
public override void HandleMessage(ComponentMessage message, IComponent component)
{
if (Owner.TryGetComponent(out PowerReceiverComponent receiver))
base.HandleMessage(message, component);
switch (message)
{
receiver.OnPowerStateChanged -= UpdateLight;
case PowerChangedMessage:
UpdateLight();
break;
}
base.OnRemove();
}
void IMapInit.MapInit()