public static void PerformTurn(ModelObject actor, ModelObject[] world, Action<ModelObject, ModelObject> action) { var fleets = world.OfType<Fleet>().ToList(); var targetFleet = fleets.FirstOrDefault(x => !x.Ships.Any(ship => ship == actor)); var targetShip = targetFleet != null ? targetFleet.Ships.FirstOrDefault(ship => ship.IsActive()) : null; if (targetShip == null) { return; } action(actor, targetShip); }
public static bool IsFightComplete(ModelObject[] world) { var fleets = world.OfType<Fleet>().ToList(); return fleets.Any(fleet => fleet.Ships.All(ship => !ship.IsActive())); }