using System; using Robust.Shared.GameObjects; using Robust.Shared.Map; using Robust.Shared.Maths; using Robust.Shared.Serialization; namespace Content.Shared.GameObjects.Components.Construction { /// /// Basically handles the logic of "this mob can do construction". /// public abstract class SharedConstructorComponent : Component { public override string Name => "Constructor"; public override uint? NetID => ContentNetIDs.CONSTRUCTOR; /// /// Sent client -> server to to tell the server that we started building /// a structure-construction. /// [Serializable, NetSerializable] protected class TryStartStructureConstructionMessage : ComponentMessage { /// /// Position to start building. /// public readonly GridCoordinates Location; /// /// The construction prototype to start building. /// public readonly string PrototypeName; public readonly Angle Angle; /// /// Identifier to be sent back in the acknowledgement so that the client can clean up its ghost. /// public readonly int Ack; public TryStartStructureConstructionMessage(GridCoordinates loc, string prototypeName, Angle angle, int ack) { Directed = true; Location = loc; PrototypeName = prototypeName; Angle = angle; Ack = ack; } } [Serializable, NetSerializable] protected class AckStructureConstructionMessage : ComponentMessage { public readonly int Ack; public AckStructureConstructionMessage(int ack) { Directed = true; Ack = ack; } } } }