Files
tbd-station-14/Content.Shared/GameObjects/Components/Atmos/SharedGasCanisterComponent.cs
Acruid ca4fd649fe Massive Namespace Cleanup (#3120)
* Engine namespace changes.

* Automated remove redundant using statements.

* Simplified Graphics namespace.

* Apparently the container system stores full type names in the map file.😞 This updates those names.

* API Changes to LocalizationManager.LoadCulture.

* Update submodule to v0.3.2
2021-02-11 01:13:03 -08:00

122 lines
3.4 KiB
C#

#nullable enable annotations
using System;
using Robust.Shared.GameObjects;
using Robust.Shared.Serialization;
namespace Content.Shared.GameObjects.Components.Atmos
{
public class SharedGasCanisterComponent : Component
{
public override string Name => "GasCanister";
/// <summary>
/// Key representing which <see cref="BoundUserInterface"/> is currently open.
/// Useful when there are multiple UI for an object. Here it's future-proofing only.
/// </summary>
[Serializable, NetSerializable]
public enum GasCanisterUiKey
{
Key,
}
}
#region Enums
/// <summary>
/// Enum representing a UI button.
/// </summary>
[Serializable, NetSerializable]
public enum UiButton
{
ValveToggle
}
/// <summary>
/// Used in <see cref="GasCanisterVisualizer"/> to determine which visuals to update.
/// </summary>
[Serializable, NetSerializable]
public enum GasCanisterVisuals
{
ConnectedState,
PressureState
}
#endregion
/// <summary>
/// Represents a <see cref="GasCanisterComponent"/> state that can be sent to the client
/// </summary>
[Serializable, NetSerializable]
public class GasCanisterBoundUserInterfaceState : BoundUserInterfaceState
{
public readonly string Label;
public readonly float Volume;
public readonly float ReleasePressure;
public readonly bool ValveOpened;
public GasCanisterBoundUserInterfaceState(string newLabel, float volume, float releasePressure, bool valveOpened)
{
Label = newLabel;
Volume = volume;
ReleasePressure = releasePressure;
ValveOpened = valveOpened;
}
public bool Equals(GasCanisterBoundUserInterfaceState? other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return Label == other.Label &&
Volume.Equals(other.Volume) &&
ReleasePressure.Equals(other.ReleasePressure) &&
ValveOpened == other.ValveOpened;
}
}
#region NetMessages
/// <summary>
/// Message sent from the client to the server when a gas canister button is pressed
/// </summary>
[Serializable, NetSerializable]
public class UiButtonPressedMessage : BoundUserInterfaceMessage
{
public readonly UiButton Button;
public UiButtonPressedMessage(UiButton button)
{
Button = button;
}
}
/// <summary>
/// Message sent when the release pressure is changed client side
/// </summary>
[Serializable, NetSerializable]
public class ReleasePressureButtonPressedMessage : BoundUserInterfaceMessage
{
public readonly float ReleasePressure;
public ReleasePressureButtonPressedMessage(float val) : base()
{
ReleasePressure = val;
}
}
/// <summary>
/// Message sent when the canister label has been changed
/// </summary>
[Serializable, NetSerializable]
public class CanisterLabelChangedMessage : BoundUserInterfaceMessage
{
public readonly string NewLabel;
public CanisterLabelChangedMessage(string newLabel) : base()
{
NewLabel = newLabel;
}
}
#endregion
}