Add order types
This commit is contained in:
parent
c4f5145320
commit
3ad0dbc086
|
@ -0,0 +1,26 @@
|
|||
using MultiversalDiplomacy.Model;
|
||||
|
||||
namespace MultiversalDiplomacy.Orders;
|
||||
|
||||
/// <summary>
|
||||
/// An order to build a unit.
|
||||
/// </summary>
|
||||
public class BuildOrder : Order
|
||||
{
|
||||
/// <summary>
|
||||
/// The location in which to build the unit.
|
||||
/// </summary>
|
||||
public Location Location { get; }
|
||||
|
||||
/// <summary>
|
||||
/// The type of unit to build.
|
||||
/// </summary>
|
||||
public UnitType Type { get; }
|
||||
|
||||
public BuildOrder(Power power, Location location, UnitType type)
|
||||
: base (power)
|
||||
{
|
||||
this.Location = location;
|
||||
this.Type = type;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
using MultiversalDiplomacy.Model;
|
||||
|
||||
namespace MultiversalDiplomacy.Orders;
|
||||
|
||||
/// <summary>
|
||||
/// An order to move another unit via convoy.
|
||||
/// </summary>
|
||||
public class ConvoyOrder : UnitOrder
|
||||
{
|
||||
/// <summary>
|
||||
/// The unit to convoy.
|
||||
/// </summary>
|
||||
public Unit Target { get; }
|
||||
|
||||
/// <summary>
|
||||
/// The destination season to which the target is moving.
|
||||
/// </summary>
|
||||
public Season Season { get; }
|
||||
|
||||
/// <summary>
|
||||
/// The destination location to which the target is moving.
|
||||
/// </summary>
|
||||
public Location Location { get; }
|
||||
|
||||
public ConvoyOrder(Power power, Unit unit, Unit target, Season season, Location location)
|
||||
: base (power, unit)
|
||||
{
|
||||
this.Target = target;
|
||||
this.Season = season;
|
||||
this.Location = location;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
using MultiversalDiplomacy.Model;
|
||||
|
||||
namespace MultiversalDiplomacy.Orders;
|
||||
|
||||
/// <summary>
|
||||
/// An order to disband a unit.
|
||||
/// </summary>
|
||||
public class DisbandOrder : UnitOrder
|
||||
{
|
||||
public DisbandOrder(Power power, Unit unit)
|
||||
: base (power, unit) {}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
using MultiversalDiplomacy.Model;
|
||||
|
||||
namespace MultiversalDiplomacy.Orders;
|
||||
|
||||
/// <summary>
|
||||
/// An order for a unit to hold its current province.
|
||||
/// </summary>
|
||||
public class HoldOrder : UnitOrder
|
||||
{
|
||||
public HoldOrder(Power power, Unit unit)
|
||||
: base (power, unit) {}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
using MultiversalDiplomacy.Model;
|
||||
|
||||
namespace MultiversalDiplomacy.Orders;
|
||||
|
||||
/// <summary>
|
||||
/// An order for a unit to move to another province.
|
||||
/// </summary>
|
||||
public class MoveOrder : UnitOrder
|
||||
{
|
||||
/// <summary>
|
||||
/// The destination season to which the unit should move.
|
||||
/// </summary>
|
||||
public Season Season { get; }
|
||||
|
||||
/// <summary>
|
||||
/// The destination location to which the unit should move.
|
||||
/// </summary>
|
||||
public Location Location { get; }
|
||||
|
||||
public MoveOrder(Power power, Unit unit, Season season, Location location)
|
||||
: base (power, unit)
|
||||
{
|
||||
this.Season = season;
|
||||
this.Location = location;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
using MultiversalDiplomacy.Model;
|
||||
|
||||
namespace MultiversalDiplomacy.Orders;
|
||||
|
||||
/// <summary>
|
||||
/// An order for a dislodged unit to retreat to an adjacent province.
|
||||
/// </summary>
|
||||
public class RetreatOrder : UnitOrder
|
||||
{
|
||||
/// <summary>
|
||||
/// The destination location to which the unit should retreat.
|
||||
/// </summary>
|
||||
public Location Location { get; }
|
||||
|
||||
public RetreatOrder(Power power, Unit unit, Location location)
|
||||
: base (power, unit)
|
||||
{
|
||||
this.Location = location;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
using MultiversalDiplomacy.Model;
|
||||
|
||||
namespace MultiversalDiplomacy.Orders;
|
||||
|
||||
/// <summary>
|
||||
/// An order for a unit to support another unit's hold order.
|
||||
/// </summary>
|
||||
public class SupportHoldOrder : UnitOrder
|
||||
{
|
||||
/// <summary>
|
||||
/// The unit to support.
|
||||
/// </summary>
|
||||
public Unit Target { get; }
|
||||
|
||||
public SupportHoldOrder(Power power, Unit unit, Unit target)
|
||||
: base (power, unit)
|
||||
{
|
||||
this.Target = target;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
using MultiversalDiplomacy.Model;
|
||||
|
||||
namespace MultiversalDiplomacy.Orders;
|
||||
|
||||
/// <summary>
|
||||
/// An order for a unit to support another unit's move order.
|
||||
/// </summary>
|
||||
public class SupportMoveOrder : UnitOrder
|
||||
{
|
||||
/// <summary>
|
||||
/// The unit to support.
|
||||
/// </summary>
|
||||
public Unit Target { get; }
|
||||
|
||||
/// <summary>
|
||||
/// The destination season to which the target is moving.
|
||||
/// </summary>
|
||||
public Season Season { get; }
|
||||
|
||||
/// <summary>
|
||||
/// The destination location to which the target is moving.
|
||||
/// </summary>
|
||||
public Location Location { get; }
|
||||
|
||||
public SupportMoveOrder(Power power, Unit unit, Unit target, Season season, Location location)
|
||||
: base (power, unit)
|
||||
{
|
||||
this.Target = target;
|
||||
this.Season = season;
|
||||
this.Location = location;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
using MultiversalDiplomacy.Model;
|
||||
|
||||
namespace MultiversalDiplomacy.Orders;
|
||||
|
||||
/// <summary>
|
||||
/// An order to sustain a timeline in existence.
|
||||
/// </summary>
|
||||
public class SustainOrder : Order
|
||||
{
|
||||
/// <summary>
|
||||
/// The ordered time center.
|
||||
/// </summary>
|
||||
public Location TimeCenter { get; }
|
||||
|
||||
/// <summary>
|
||||
/// The timeline to sustain.
|
||||
/// </summary>
|
||||
public int Timeline { get; }
|
||||
|
||||
public SustainOrder(Power power, Location timeCenter, int timeline)
|
||||
: base (power)
|
||||
{
|
||||
this.TimeCenter = timeCenter;
|
||||
this.Timeline = timeline;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
using MultiversalDiplomacy.Model;
|
||||
|
||||
namespace MultiversalDiplomacy.Orders;
|
||||
|
||||
/// <summary>
|
||||
/// An order given to a specific unit.
|
||||
/// </summary>
|
||||
public abstract class UnitOrder : Order
|
||||
{
|
||||
/// <summary>
|
||||
/// The ordered unit.
|
||||
/// </summary>
|
||||
public Unit Unit { get; }
|
||||
|
||||
public UnitOrder(Power power, Unit unit) : base(power)
|
||||
{
|
||||
this.Unit = unit;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue