2022-02-19 00:58:16 +00:00
|
|
|
using MultiversalDiplomacy.Model;
|
|
|
|
|
|
|
|
namespace MultiversalDiplomacy.Orders;
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// An order for a unit to support another unit's move order.
|
|
|
|
/// </summary>
|
2022-03-22 19:57:01 +00:00
|
|
|
public class SupportMoveOrder : SupportOrder
|
2022-02-19 00:58:16 +00:00
|
|
|
{
|
|
|
|
/// <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; }
|
|
|
|
|
2022-03-30 19:52:57 +00:00
|
|
|
/// <summary>
|
|
|
|
/// The destination province to which the target is moving.
|
|
|
|
/// </summary>
|
|
|
|
public Province Province => this.Location.Province;
|
|
|
|
|
2022-03-29 00:41:38 +00:00
|
|
|
/// <summary>
|
|
|
|
/// The target's destination's spatiotemporal location as a province-season tuple.
|
|
|
|
/// </summary>
|
2022-03-30 19:52:57 +00:00
|
|
|
public (Province province, Season season) Point => (this.Province, this.Season);
|
2022-03-29 00:41:38 +00:00
|
|
|
|
2024-08-15 14:30:43 +00:00
|
|
|
public SupportMoveOrder(string power, Unit unit, Unit target, Season season, Location location)
|
2022-03-22 19:57:01 +00:00
|
|
|
: base(power, unit, target)
|
2022-02-19 00:58:16 +00:00
|
|
|
{
|
|
|
|
this.Season = season;
|
|
|
|
this.Location = location;
|
|
|
|
}
|
2022-03-24 15:12:11 +00:00
|
|
|
|
2022-04-07 22:58:17 +00:00
|
|
|
public override string ToString()
|
|
|
|
{
|
2022-11-04 00:32:39 +00:00
|
|
|
return $"{this.Unit} S {this.Target} -> {(this.Province, this.Season).ToShort()}";
|
2022-04-07 22:58:17 +00:00
|
|
|
}
|
|
|
|
|
2022-03-24 15:12:11 +00:00
|
|
|
public bool IsSupportFor(MoveOrder move)
|
|
|
|
=> this.Target == move.Unit
|
2024-08-15 13:52:08 +00:00
|
|
|
&& this.Season.Key == move.Season
|
2022-03-24 15:12:11 +00:00
|
|
|
&& this.Location == move.Location;
|
2022-02-19 00:58:16 +00:00
|
|
|
}
|