ECS handheld lights (#5864)

This commit is contained in:
metalgearsloth
2021-12-27 18:15:16 +11:00
committed by GitHub
parent b3b171da7f
commit 0705f16898
6 changed files with 325 additions and 321 deletions

View File

@@ -3,6 +3,7 @@ using Content.Shared.Light.Component;
using Robust.Client.Graphics;
using Robust.Client.UserInterface;
using Robust.Client.UserInterface.Controls;
using Robust.Shared.Analyzers;
using Robust.Shared.GameObjects;
using Robust.Shared.Maths;
using Robust.Shared.Timing;
@@ -12,27 +13,18 @@ using static Robust.Client.UserInterface.Controls.BoxContainer;
namespace Content.Client.Light.Components
{
[RegisterComponent]
[Friend(typeof(HandheldLightSystem))]
public sealed class HandheldLightComponent : SharedHandheldLightComponent, IItemStatus
{
[ViewVariables] protected override bool HasCell => _level != null;
[ViewVariables] protected override bool HasCell => Level != null;
private byte? _level;
public byte? Level;
public Control MakeControl()
{
return new StatusControl(this);
}
public override void HandleComponentState(ComponentState? curState, ComponentState? nextState)
{
base.HandleComponentState(curState, nextState);
if (curState is not HandheldLightComponentState cast)
return;
_level = cast.Charge;
}
private sealed class StatusControl : Control
{
private const float TimerCycle = 1;
@@ -83,7 +75,7 @@ namespace Content.Client.Light.Components
_timer += args.DeltaSeconds;
_timer %= TimerCycle;
var level = _parent._level;
var level = _parent.Level;
for (var i = 0; i < _sections.Length; i++)
{