IEnumerator IaMovimentRoutine(float timer) { yield return(new WaitForSeconds(timer)); AIMoviment moviment = AIPlay(); Board.instance.AIMove(moviment); }
public void AIMove(AIMoviment moviment) { if (moviment == null) { Debug.Log("moviment from AI is null...GOING TO NEXT TURN"); NextTurn(); return; } if (moviment.piece == null) { Debug.Log("AI moviment piece is null"); } if (moviment.target == null) { Debug.Log("AI moviment tile is null"); } //if (moviment.eliminatedBy == null) Debug.Log("AI moviment emilimated piece is null"); MovePiece(moviment.piece, moviment.target); if (moviment.eliminatedBy != null) { listBoardPieces.Remove(moviment.eliminatedBy); Destroy(moviment.eliminatedBy.gameObject); if (CheckGameOver() == true) { if (listBoardPieces[0].CheckPieceType(PieceTypes.White)) { GameController.instance.ChangeGameState(GameStates.GameClear); } else { GameController.instance.ChangeGameState(GameStates.GameOver); } } else { NextTurn(); } } else { NextTurn(); } }
bool AIBoardTile(BoardPiece actualPiece, int row, int column, int rowFactor, int columnFactor, PieceTypes targetType, bool isKing = false, BoardPiece lastPiece = null) { if (OnBoardLimits(row, column) == false) { return(false); } if (board[row, column].currentPiece == null) { AIMoviment newMove = new AIMoviment(); newMove.piece = actualPiece; newMove.target = board[row, column]; newMove.eliminatedBy = lastPiece; listAvaliableMoves.Add(newMove); if (isKing == true) { AIBoardTile(actualPiece, row + rowFactor, column + columnFactor, rowFactor, columnFactor, targetType, isKing, lastPiece); } return(true); } //Check effects when piece != null if (board[row, column].currentPiece != null && lastPiece == null) { if (board[row, column].currentPiece.CheckPieceType(targetType)) { return(false); } return(AIBoardTile(actualPiece, row + rowFactor, column + columnFactor, rowFactor, columnFactor, targetType, isKing, board[row, column].currentPiece)); } return(false); }