fish-station/Content.Server/Atmos/AtmosDirectionExtensions.cs
2025-06-03 19:13:36 +03:00

54 lines
1.4 KiB
C#

using Content.Shared.Atmos;
namespace Content.Server.Atmos;
public static class AtmosDirectionExtensions
{
public static Vector2i ToVec(this AtmosDirection direction)
{
return direction switch
{
AtmosDirection.North => new Vector2i(0, 1),
AtmosDirection.South => new Vector2i(0, -1),
AtmosDirection.East => new Vector2i(1, 0),
AtmosDirection.West => new Vector2i(-1, 0),
_ => Vector2i.Zero
};
}
public static AtmosDirection GetOpposite(this AtmosDirection direction)
{
return direction switch
{
AtmosDirection.North => AtmosDirection.South,
AtmosDirection.South => AtmosDirection.North,
AtmosDirection.East => AtmosDirection.West,
AtmosDirection.West => AtmosDirection.East,
_ => AtmosDirection.Invalid
};
}
public static int ToIndex(this AtmosDirection direction)
{
return direction switch
{
AtmosDirection.North => 0,
AtmosDirection.South => 1,
AtmosDirection.East => 2,
AtmosDirection.West => 3,
_ => -1
};
}
public static int ToOppositeIndex(this int index)
{
return index switch
{
0 => 1,
1 => 0,
2 => 3,
3 => 2,
_ => -1
};
}
}