| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314 |
- using System.Diagnostics.CodeAnalysis;
- using Content.Shared.DoAfter;
- using JetBrains.Annotations;
- using Robust.Shared.Serialization;
- namespace Content.Shared.Wires
- {
- [Serializable, NetSerializable]
- public sealed partial class WirePanelDoAfterEvent : SimpleDoAfterEvent
- {
- }
- [Serializable, NetSerializable]
- public enum WiresVisuals : byte
- {
- MaintenancePanelState
- }
- [Serializable, NetSerializable]
- public enum WiresUiKey : byte
- {
- Key,
- }
- [Serializable, NetSerializable]
- public enum WiresAction : byte
- {
- Mend,
- Cut,
- Pulse,
- }
- [Serializable, NetSerializable]
- public enum StatusLightState : byte
- {
- Off,
- On,
- BlinkingFast,
- BlinkingSlow
- }
- [Serializable, NetSerializable]
- public sealed class WiresActionMessage : BoundUserInterfaceMessage
- {
- public readonly int Id;
- public readonly WiresAction Action;
- public WiresActionMessage(int id, WiresAction action)
- {
- Id = id;
- Action = action;
- }
- }
- [SuppressMessage("ReSharper", "InconsistentNaming")]
- [PublicAPI]
- [Serializable, NetSerializable]
- public enum WireLetter : byte
- {
- α,
- β,
- γ,
- δ,
- ε,
- ζ,
- η,
- θ,
- ι,
- κ,
- λ,
- μ,
- ν,
- ξ,
- ο,
- π,
- ρ,
- σ,
- τ,
- υ,
- φ,
- χ,
- ψ,
- ω
- }
- [PublicAPI]
- [Serializable, NetSerializable]
- public enum WireColor : byte
- {
- Red,
- Blue,
- Green,
- Orange,
- Brown,
- Gold,
- Gray,
- Cyan,
- Navy,
- Purple,
- Pink,
- Fuchsia
- }
- [Serializable, NetSerializable]
- public struct StatusLightData
- {
- public StatusLightData(Color color, StatusLightState state, string text)
- {
- Color = color;
- State = state;
- Text = text;
- }
- public Color Color { get; }
- public StatusLightState State { get; }
- public string Text { get; }
- public override string ToString()
- {
- return $"Color: {Color}, State: {State}, Text: {Text}";
- }
- }
- [Serializable, NetSerializable]
- public sealed class WiresBoundUserInterfaceState : BoundUserInterfaceState
- {
- public string BoardName { get; }
- public string? SerialNumber { get; }
- public ClientWire[] WiresList { get; }
- public StatusEntry[] Statuses { get; }
- public int WireSeed { get; }
- public WiresBoundUserInterfaceState(ClientWire[] wiresList, StatusEntry[] statuses, string boardName, string? serialNumber, int wireSeed)
- {
- BoardName = boardName;
- SerialNumber = serialNumber;
- WireSeed = wireSeed;
- WiresList = wiresList;
- Statuses = statuses;
- }
- }
- [Serializable, NetSerializable]
- public struct StatusEntry
- {
- /// <summary>
- /// The key of this status, according to the status dictionary
- /// server side.
- /// </summary>
- public readonly object Key;
- /// <summary>
- /// The value of this status, according to the status dictionary
- /// server side..
- /// </summary>
- public readonly object Value;
- public StatusEntry(object key, object value)
- {
- Key = key;
- Value = value;
- }
- public override string ToString()
- {
- return $"{Key}, {Value}";
- }
- }
- /// <summary>
- /// ClientWire, sent by the server so that the client knows
- /// what wires there are on an entity.
- /// </summary>
- [Serializable, NetSerializable]
- public sealed class ClientWire
- {
- /// <summary>
- /// ID of this wire, which corresponds to
- /// the ID server side.
- /// </summary>
- public int Id;
- /// <summary>
- /// Whether this wire is cut or not.
- /// </summary>
- public bool IsCut;
- /// <summary>
- /// Current color of the wire.
- /// </summary>
- public WireColor Color;
- /// <summary>
- /// Current letter of the wire.
- /// </summary>
- public WireLetter Letter;
- public ClientWire(int id, bool isCut, WireColor color, WireLetter letter)
- {
- Id = id;
- IsCut = isCut;
- Letter = letter;
- Color = color;
- }
- }
- public static class HackingWiresExt
- {
- public static string Name(this WireColor color)
- {
- return Loc.GetString(color switch
- {
- WireColor.Red => "Red",
- WireColor.Blue => "Blue",
- WireColor.Green => "Green",
- WireColor.Orange => "Orange",
- WireColor.Brown => "Brown",
- WireColor.Gold => "Gold",
- WireColor.Gray => "Gray",
- WireColor.Cyan => "Cyan",
- WireColor.Navy => "Navy",
- WireColor.Purple => "Purple",
- WireColor.Pink => "Pink",
- WireColor.Fuchsia => "Fuchsia",
- _ => throw new InvalidOperationException()
- });
- }
- public static Color ColorValue(this WireColor color)
- {
- return color switch
- {
- WireColor.Red => Color.Red,
- WireColor.Blue => Color.Blue,
- WireColor.Green => Color.LimeGreen,
- WireColor.Orange => Color.Orange,
- WireColor.Brown => Color.Brown,
- WireColor.Gold => Color.Gold,
- WireColor.Gray => Color.Gray,
- WireColor.Cyan => Color.Cyan,
- WireColor.Navy => Color.Navy,
- WireColor.Purple => Color.Purple,
- WireColor.Pink => Color.Pink,
- WireColor.Fuchsia => Color.Fuchsia,
- _ => throw new InvalidOperationException()
- };
- }
- public static string Name(this WireLetter letter)
- {
- return Loc.GetString(letter switch
- {
- WireLetter.α => "Alpha",
- WireLetter.β => "Beta",
- WireLetter.γ => "Gamma",
- WireLetter.δ => "Delta",
- WireLetter.ε => "Epsilon",
- WireLetter.ζ => "Zeta",
- WireLetter.η => "Eta",
- WireLetter.θ => "Theta",
- WireLetter.ι => "Iota",
- WireLetter.κ => "Kappa",
- WireLetter.λ => "Lambda",
- WireLetter.μ => "Mu",
- WireLetter.ν => "Nu",
- WireLetter.ξ => "Xi",
- WireLetter.ο => "Omicron",
- WireLetter.π => "Pi",
- WireLetter.ρ => "Rho",
- WireLetter.σ => "Sigma",
- WireLetter.τ => "Tau",
- WireLetter.υ => "Upsilon",
- WireLetter.φ => "Phi",
- WireLetter.χ => "Chi",
- WireLetter.ψ => "Psi",
- WireLetter.ω => "Omega",
- _ => throw new InvalidOperationException()
- });
- }
- public static char Letter(this WireLetter letter)
- {
- return letter switch
- {
- WireLetter.α => 'α',
- WireLetter.β => 'β',
- WireLetter.γ => 'γ',
- WireLetter.δ => 'δ',
- WireLetter.ε => 'ε',
- WireLetter.ζ => 'ζ',
- WireLetter.η => 'η',
- WireLetter.θ => 'θ',
- WireLetter.ι => 'ι',
- WireLetter.κ => 'κ',
- WireLetter.λ => 'λ',
- WireLetter.μ => 'μ',
- WireLetter.ν => 'ν',
- WireLetter.ξ => 'ξ',
- WireLetter.ο => 'ο',
- WireLetter.π => 'π',
- WireLetter.ρ => 'ρ',
- WireLetter.σ => 'σ',
- WireLetter.τ => 'τ',
- WireLetter.υ => 'υ',
- WireLetter.φ => 'φ',
- WireLetter.χ => 'χ',
- WireLetter.ψ => 'ψ',
- WireLetter.ω => 'ω',
- _ => throw new InvalidOperationException()
- };
- }
- }
- }
|