- Powerful - Data-oriented - Approved by PJB - Powered by node graphs and AI pathfinding - Coded by the same nerd who brought you atmos Co-authored-by: Exp <theexp111@gmail.com>
63 lines
2.5 KiB
C#
63 lines
2.5 KiB
C#
using Content.Client.GameObjects.Components.IconSmoothing;
|
|
using Content.Shared.GameObjects.Components;
|
|
using Robust.Shared.GameObjects;
|
|
using Robust.Shared.Serialization;
|
|
using Robust.Shared.ViewVariables;
|
|
using static Robust.Client.GameObjects.SpriteComponent;
|
|
|
|
namespace Content.Client.GameObjects.Components
|
|
{
|
|
[RegisterComponent]
|
|
[ComponentReference(typeof(IconSmoothComponent))]
|
|
public class ReinforcedWallComponent : IconSmoothComponent
|
|
{
|
|
public override string Name => "ReinforcedWall";
|
|
|
|
[ViewVariables(VVAccess.ReadWrite)]
|
|
private string _reinforcedStateBase;
|
|
|
|
public override void ExposeData(ObjectSerializer serializer)
|
|
{
|
|
base.ExposeData(serializer);
|
|
|
|
serializer.DataField(ref _reinforcedStateBase, "reinforcedBase", null);
|
|
}
|
|
|
|
protected override void Startup()
|
|
{
|
|
base.Startup();
|
|
|
|
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()
|
|
{
|
|
base.CalculateNewSprite();
|
|
|
|
var (cornerNE, cornerNW, cornerSW, cornerSE) = CalculateCornerFill();
|
|
|
|
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
|
|
{
|
|
SE,
|
|
NE,
|
|
NW,
|
|
SW,
|
|
}
|
|
}
|
|
}
|