public static Enums.TurnOutcome ProcessMove(Maze currentMaze, Maze previousMaze, Point currentPosition, Point previousPosition, Point opponentPosition, Player currentPlayer)
{
currentPlayer.SetCurrentPosition(currentPosition);
if (IsMoveMadeAndScoredPoint(previousMaze, currentPosition))
{
currentPlayer.AddToScore(Properties.Settings.Default.SettingPointsPerPill);
return Enums.TurnOutcome.MoveMadeAndPointScored;
}
if (IsMoveMadeAndScoredBonusPoint(previousMaze, currentPosition))
{
currentPlayer.AddToScore(Properties.Settings.Default.SettingPointsPerBonusPill);
return Enums.TurnOutcome.MoveMadeAndBonusPointScored;
}
if (IsMoveMadeAndDiedFromPoisonPill(previousMaze, currentPosition))
{
currentMaze.SetSymbol(currentPosition.X, currentPosition.Y, Symbols.SYMBOL_EMPTY);
currentMaze.SetSymbol(Properties.Settings.Default.MazeCenterX, Properties.Settings.Default.MazeCenterY, Symbols.SYMBOL_PLAYER_A);
return Enums.TurnOutcome.MoveMadeAndDiedFromPoisonPill;
}
if (IsMoveMadeAndKilledOpponent(currentPosition, opponentPosition))
{
currentMaze.SetSymbol(Properties.Settings.Default.MazeCenterX, Properties.Settings.Default.MazeCenterY, Symbols.SYMBOL_PLAYER_B);
return Enums.TurnOutcome.MoveMadeAndKilledOpponent;
}
if (IsMoveMadeAndDroppedPoisonPill(currentMaze, previousPosition))
{
if (!currentPlayer.IsAllowedPoisonPillDrop())
return Enums.TurnOutcome.MoveMadeAndDroppedPoisonPillIllegally;
currentPlayer.UsePoisonPill();
return Enums.TurnOutcome.MoveMadeAndDroppedPoisonPill;
}
return (int)Enums.TurnOutcome.MoveMade;
}