54 lines
1.4 KiB
C#
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
|
|
};
|
|
}
|
|
}
|