ECS icon smoothing (#8196)
This commit is contained in:
@@ -1,60 +0,0 @@
|
||||
using Content.Client.IconSmoothing;
|
||||
using Robust.Shared.GameObjects;
|
||||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Serialization.Manager.Attributes;
|
||||
using Robust.Shared.ViewVariables;
|
||||
using static Robust.Client.GameObjects.SpriteComponent;
|
||||
|
||||
namespace Content.Client.Wall.Components
|
||||
{
|
||||
[RegisterComponent]
|
||||
[ComponentReference(typeof(IconSmoothComponent))]
|
||||
public sealed class ReinforcedWallComponent : IconSmoothComponent // whyyyyyyyyy
|
||||
{
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField("reinforcedBase")]
|
||||
private string? _reinforcedStateBase = default;
|
||||
|
||||
protected override void Startup()
|
||||
{
|
||||
base.Startup();
|
||||
|
||||
if (Sprite != null)
|
||||
{
|
||||
var state0 = $"{_reinforcedStateBase}0";
|
||||
Sprite.LayerMapSet(ReinforcedCornerLayers.SE, Sprite.AddLayerState(state0));
|
||||
Sprite.LayerSetDirOffset(ReinforcedCornerLayers.SE, DirectionOffset.None);
|
||||
Sprite.LayerMapSet(ReinforcedCornerLayers.NE, Sprite.AddLayerState(state0));
|
||||
Sprite.LayerSetDirOffset(ReinforcedCornerLayers.NE, DirectionOffset.CounterClockwise);
|
||||
Sprite.LayerMapSet(ReinforcedCornerLayers.NW, Sprite.AddLayerState(state0));
|
||||
Sprite.LayerSetDirOffset(ReinforcedCornerLayers.NW, DirectionOffset.Flip);
|
||||
Sprite.LayerMapSet(ReinforcedCornerLayers.SW, Sprite.AddLayerState(state0));
|
||||
Sprite.LayerSetDirOffset(ReinforcedCornerLayers.SW, DirectionOffset.Clockwise);
|
||||
Sprite.LayerMapSet(ReinforcedWallVisualLayers.Deconstruction, Sprite.AddBlankLayer());
|
||||
}
|
||||
}
|
||||
|
||||
internal override void CalculateNewSprite(IMapGrid? grid)
|
||||
{
|
||||
base.CalculateNewSprite(grid);
|
||||
|
||||
var (cornerNE, cornerNW, cornerSW, cornerSE) = CalculateCornerFill(grid);
|
||||
|
||||
if (Sprite != null)
|
||||
{
|
||||
Sprite.LayerSetState(ReinforcedCornerLayers.NE, $"{_reinforcedStateBase}{(int) cornerNE}");
|
||||
Sprite.LayerSetState(ReinforcedCornerLayers.SE, $"{_reinforcedStateBase}{(int) cornerSE}");
|
||||
Sprite.LayerSetState(ReinforcedCornerLayers.SW, $"{_reinforcedStateBase}{(int) cornerSW}");
|
||||
Sprite.LayerSetState(ReinforcedCornerLayers.NW, $"{_reinforcedStateBase}{(int) cornerNW}");
|
||||
}
|
||||
}
|
||||
|
||||
public enum ReinforcedCornerLayers : byte
|
||||
{
|
||||
SE,
|
||||
NE,
|
||||
NW,
|
||||
SW,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
using Content.Shared.Wall;
|
||||
using Content.Shared.Wall;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Shared.GameObjects;
|
||||
@@ -26,14 +26,16 @@ namespace Content.Client.Wall
|
||||
var entities = IoCManager.Resolve<IEntityManager>();
|
||||
if (!entities.TryGetComponent(entity, out ISpriteComponent? sprite)) return;
|
||||
|
||||
var index = sprite.LayerMapReserveBlank(ReinforcedWallVisualLayers.Deconstruction);
|
||||
|
||||
if (stage < 0)
|
||||
{
|
||||
sprite.LayerSetVisible(ReinforcedWallVisualLayers.Deconstruction, false);
|
||||
sprite.LayerSetVisible(index, false);
|
||||
return;
|
||||
}
|
||||
|
||||
sprite.LayerSetVisible(ReinforcedWallVisualLayers.Deconstruction, true);
|
||||
sprite.LayerSetState(ReinforcedWallVisualLayers.Deconstruction, $"reinf_construct-{stage}");
|
||||
sprite.LayerSetVisible(index, true);
|
||||
sprite.LayerSetState(index, $"reinf_construct-{stage}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user