public void AddSubmarine(Coordinate initialCoordinate, Coordinate finalCoordinate, int length) { Submarines.Add(new Submarine(length, Submarines.Count)); SelfBoard.LocateSubmarine(initialCoordinate, finalCoordinate, length, Submarines[Submarines.Count - 1].Id); Submarines[Submarines.Count - 1].DestructionEvent += DestroyFrameOfSubmarine; //register the event }
public void MakeMove(Coordinate chosenSquare) { SelfBoard.SelectSquare(chosenSquare); Square chosen = SelfBoard.GetSquareByIndex(chosenSquare); if (chosen.Status == SquareStatus.HITTED_BOAT) { Submarines[chosen.Id].HitBoat(); } if (Submarines.All(s => s.IsDestroyed)) { HasLostEvent?.Invoke(); } }
private void DestroyFrameOfSubmarine(int submarineId) { SelfBoard.GetCoordinateOfSquaresById(submarineId) .ForEach(c => SelfBoard.GetValidFrameOfSquareByIndex(c).ForEach(s => s.HitSquare())); }
public bool IsMoveValid(Coordinate chosenSquare) { return(SelfBoard.CanSquareBeSelected(chosenSquare)); }