2021-06-09 22:19:39 +02:00
|
|
|
using Content.Client.IconSmoothing;
|
2020-04-25 12:10:28 +02:00
|
|
|
using Robust.Shared.GameObjects;
|
2021-06-09 22:19:39 +02:00
|
|
|
using Robust.Shared.Map;
|
2021-03-05 01:08:38 +01:00
|
|
|
using Robust.Shared.Serialization.Manager.Attributes;
|
2020-04-25 12:10:28 +02:00
|
|
|
using Robust.Shared.ViewVariables;
|
|
|
|
|
using static Robust.Client.GameObjects.SpriteComponent;
|
|
|
|
|
|
2021-06-09 22:19:39 +02:00
|
|
|
namespace Content.Client.Wall.Components
|
2020-04-25 12:10:28 +02:00
|
|
|
{
|
|
|
|
|
[RegisterComponent]
|
|
|
|
|
[ComponentReference(typeof(IconSmoothComponent))]
|
2022-02-16 00:23:23 -07:00
|
|
|
public sealed class ReinforcedWallComponent : IconSmoothComponent // whyyyyyyyyy
|
2020-04-25 12:10:28 +02:00
|
|
|
{
|
|
|
|
|
[ViewVariables(VVAccess.ReadWrite)]
|
2021-03-05 01:08:38 +01:00
|
|
|
[DataField("reinforcedBase")]
|
2021-03-10 14:48:29 +01:00
|
|
|
private string? _reinforcedStateBase = default;
|
2020-04-25 12:10:28 +02:00
|
|
|
|
|
|
|
|
protected override void Startup()
|
|
|
|
|
{
|
|
|
|
|
base.Startup();
|
|
|
|
|
|
2021-03-10 14:48:29 +01:00
|
|
|
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());
|
|
|
|
|
}
|
2020-04-25 12:10:28 +02:00
|
|
|
}
|
|
|
|
|
|
2022-01-29 07:25:49 +13:00
|
|
|
internal override void CalculateNewSprite(IMapGrid? grid)
|
2020-04-25 12:10:28 +02:00
|
|
|
{
|
2021-05-23 19:18:36 +01:00
|
|
|
base.CalculateNewSprite(grid);
|
2020-04-25 12:10:28 +02:00
|
|
|
|
2021-05-23 19:18:36 +01:00
|
|
|
var (cornerNE, cornerNW, cornerSW, cornerSE) = CalculateCornerFill(grid);
|
2020-04-25 12:10:28 +02:00
|
|
|
|
2021-03-10 14:48:29 +01:00
|
|
|
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}");
|
|
|
|
|
}
|
2020-04-25 12:10:28 +02:00
|
|
|
}
|
|
|
|
|
|
2020-12-04 11:57:33 +01:00
|
|
|
public enum ReinforcedCornerLayers : byte
|
2020-04-25 12:10:28 +02:00
|
|
|
{
|
|
|
|
|
SE,
|
|
|
|
|
NE,
|
|
|
|
|
NW,
|
|
|
|
|
SW,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|