using System.Text.Json.Serialization; using MultiversalDiplomacy.Model; namespace MultiversalDiplomacy.Orders; /// /// An order given to a specific unit. /// [JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] [JsonDerivedType(typeof(ConvoyOrder), typeDiscriminator: "convoy")] [JsonDerivedType(typeof(DisbandOrder), typeDiscriminator: "disband")] [JsonDerivedType(typeof(HoldOrder), typeDiscriminator: "hold")] [JsonDerivedType(typeof(MoveOrder), typeDiscriminator: "move")] [JsonDerivedType(typeof(RetreatOrder), typeDiscriminator: "retreat")] [JsonDerivedType(typeof(SupportHoldOrder), typeDiscriminator: "supportHold")] [JsonDerivedType(typeof(SupportMoveOrder), typeDiscriminator: "supportMove")] public abstract class UnitOrder : Order { /// /// The ordered unit. /// public Unit Unit { get; } public UnitOrder(string power, Unit unit) : base(power) { this.Unit = unit; } }