Files
basic-computer-games/84_Super_Star_Trek/csharp/Systems/LongRangeSensors.cs
2022-03-22 17:55:44 +11:00

36 lines
1010 B
C#

using System.Linq;
using Games.Common.IO;
using SuperStarTrek.Commands;
using SuperStarTrek.Space;
namespace SuperStarTrek.Systems;
internal class LongRangeSensors : Subsystem
{
private readonly Galaxy _galaxy;
private readonly IReadWrite _io;
internal LongRangeSensors(Galaxy galaxy, IReadWrite io)
: base("Long Range Sensors", Command.LRS, io)
{
_galaxy = galaxy;
_io = io;
}
protected override bool CanExecuteCommand() => IsOperational("{name} are inoperable");
protected override CommandResult ExecuteCommandCore(Quadrant quadrant)
{
_io.WriteLine($"Long range scan for quadrant {quadrant.Coordinates}");
_io.WriteLine("-------------------");
foreach (var quadrants in _galaxy.GetNeighborhood(quadrant))
{
_io.WriteLine(": " + string.Join(" : ", quadrants.Select(q => q?.Scan() ?? "***")) + " :");
_io.WriteLine("-------------------");
}
return CommandResult.Ok;
}
}