namespace SpaceGame.Api.Ships.Contracts;

public sealed record ShipOrderCommandRequest(
  string Kind,
  int Priority,
  bool InterruptCurrentPlan,
  string? Label,
  string? TargetEntityId,
  string? TargetSystemId,
  Vector3Dto? TargetPosition,
  string? SourceStationId,
  string? DestinationStationId,
  string? ItemId,
  string? NodeId,
  string? ConstructionSiteId,
  string? ModuleId,
  float? WaitSeconds,
  float? Radius,
  int? MaxSystemRange,
  bool? KnownStationsOnly);

public sealed record ShipOrderTemplateCommandRequest(
  string Kind,
  string? Label,
  string? TargetEntityId,
  string? TargetSystemId,
  Vector3Dto? TargetPosition,
  string? SourceStationId,
  string? DestinationStationId,
  string? ItemId,
  string? NodeId,
  string? ConstructionSiteId,
  string? ModuleId,
  float? WaitSeconds,
  float? Radius,
  int? MaxSystemRange,
  bool? KnownStationsOnly);

public sealed record ShipDefaultBehaviorCommandRequest(
  string Kind,
  string? HomeSystemId,
  string? HomeStationId,
  string? AreaSystemId,
  string? TargetEntityId,
  string? ItemId,
  string? PreferredNodeId,
  string? PreferredConstructionSiteId,
  string? PreferredModuleId,
  Vector3Dto? TargetPosition,
  float? WaitSeconds,
  float? Radius,
  int? MaxSystemRange,
  bool? KnownStationsOnly,
  IReadOnlyList<Vector3Dto>? PatrolPoints,
  IReadOnlyList<ShipOrderTemplateCommandRequest>? RepeatOrders);
