|
|
|
@ -117,7 +117,7 @@ namespace Models.Game
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="playerChoice">The cell chosen by the player to place the result.</param>
|
|
|
|
|
/// <param name="result">The result of the dice operation to be placed in the cell.</param>
|
|
|
|
|
private void PlaceResult(Cell playerChoice, int result)
|
|
|
|
|
private bool PlaceResult(Cell playerChoice, int result)
|
|
|
|
|
{
|
|
|
|
|
if (Turn == 1 || GameRules.NearCellIsValid(playerChoice, UsedMap.Boards))
|
|
|
|
|
{
|
|
|
|
@ -125,13 +125,17 @@ namespace Models.Game
|
|
|
|
|
{
|
|
|
|
|
if (UsedMap.Boards[i].X == playerChoice.X && UsedMap.Boards[i].Y == playerChoice.Y)
|
|
|
|
|
{
|
|
|
|
|
if (UsedMap.Boards[i].Value != null)
|
|
|
|
|
return false;
|
|
|
|
|
UsedMap.Boards[i].Value = result;
|
|
|
|
|
break;
|
|
|
|
|
BoardUpdated?.Invoke(this, new BoardsUpdateEventArgs(UsedMap.Boards));
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
playerChoice.Value = result;
|
|
|
|
|
BoardUpdated?.Invoke(this, new BoardsUpdateEventArgs(UsedMap.Boards));
|
|
|
|
|
//playerChoice.Value = result;
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
@ -227,22 +231,30 @@ namespace Models.Game
|
|
|
|
|
/// <param name="result"></param>
|
|
|
|
|
/// <exception cref="InvalidCellCoordinatesException"></exception>
|
|
|
|
|
/// <exception cref="InvalidCellException"></exception>
|
|
|
|
|
public void HandlePlayerChoice(Cell cell, int result)
|
|
|
|
|
public bool HandlePlayerChoice(Cell cell, int result)
|
|
|
|
|
{
|
|
|
|
|
if (cell.X < 0 || cell.X >= UsedMap.Boards.Count / 6 || cell.Y < 0 || cell.Y >= 6)
|
|
|
|
|
{
|
|
|
|
|
throw new InvalidCellCoordinatesException("Invalid cell coordinates. Please choose again.");
|
|
|
|
|
return false;
|
|
|
|
|
//throw new InvalidCellCoordinatesException("Invalid cell coordinates. Please choose again.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!GameRules.IsCellValid(cell, UsedMap.Boards))
|
|
|
|
|
{
|
|
|
|
|
throw new InvalidCellException("Cell is not valid. Please choose again.");
|
|
|
|
|
return false;
|
|
|
|
|
//throw new InvalidCellException("Cell is not valid. Please choose again.");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
PlaceResult(cell, result);
|
|
|
|
|
bool res = PlaceResult(cell, result);
|
|
|
|
|
if (!res)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
//throw new InvalidPlaceResultException("Cell is not valid for place result. Please choose again.");
|
|
|
|
|
}
|
|
|
|
|
GameRules.IsZoneValidAndAddToZones(cell, UsedMap);
|
|
|
|
|
AddToRopePath(cell, GameRules.EveryAdjacentCells(cell, UsedMap.Boards));
|
|
|
|
|
CellChosen?.Invoke(this, new CellChosenEventArgs(cell, result));
|
|
|
|
|
return true;
|
|
|
|
|
//BoardUpdated?.Invoke(this, EventArgs.Empty);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|