81 lines
2.2 KiB
C#
81 lines
2.2 KiB
C#
using Content.Shared.Atmos;
|
|
|
|
namespace Content.Server.Atmos
|
|
{
|
|
public struct MonstermosInfo
|
|
{
|
|
[ViewVariables]
|
|
public int LastCycle;
|
|
|
|
[ViewVariables]
|
|
public long LastQueueCycle;
|
|
|
|
[ViewVariables]
|
|
public long LastSlowQueueCycle;
|
|
|
|
[ViewVariables]
|
|
public float MoleDelta;
|
|
|
|
[ViewVariables]
|
|
public float TransferDirectionEast;
|
|
|
|
[ViewVariables]
|
|
public float TransferDirectionWest;
|
|
|
|
[ViewVariables]
|
|
public float TransferDirectionNorth;
|
|
|
|
[ViewVariables]
|
|
public float TransferDirectionSouth;
|
|
|
|
[ViewVariables]
|
|
public float CurrentTransferAmount;
|
|
|
|
[ViewVariables]
|
|
public AtmosDirection CurrentTransferDirection;
|
|
|
|
[ViewVariables]
|
|
public bool FastDone;
|
|
|
|
public float this[AtmosDirection direction]
|
|
{
|
|
get =>
|
|
direction switch
|
|
{
|
|
AtmosDirection.East => TransferDirectionEast,
|
|
AtmosDirection.West => TransferDirectionWest,
|
|
AtmosDirection.North => TransferDirectionNorth,
|
|
AtmosDirection.South => TransferDirectionSouth,
|
|
_ => throw new ArgumentOutOfRangeException(nameof(direction))
|
|
};
|
|
|
|
set
|
|
{
|
|
switch (direction)
|
|
{
|
|
case AtmosDirection.East:
|
|
TransferDirectionEast = value;
|
|
break;
|
|
case AtmosDirection.West:
|
|
TransferDirectionWest = value;
|
|
break;
|
|
case AtmosDirection.North:
|
|
TransferDirectionNorth = value;
|
|
break;
|
|
case AtmosDirection.South:
|
|
TransferDirectionSouth = value;
|
|
break;
|
|
default:
|
|
throw new ArgumentOutOfRangeException(nameof(direction));
|
|
}
|
|
}
|
|
}
|
|
|
|
public float this[int index]
|
|
{
|
|
get => this[(AtmosDirection) (1 << index)];
|
|
set => this[(AtmosDirection) (1 << index)] = value;
|
|
}
|
|
}
|
|
}
|