public bool isAllowMove(Board board, Position movePos) { if (currMoveScenarios == null) { if (Board.isEmpty(board.getPiece(movePos))) { return(false); } List <MoveScenarios> allowScenarios = moveFinder.getAllowMoveScenarios(board, board.PlayerColor); foreach (MoveScenarios currScenario in allowScenarios) { if (currScenario.getFromPosition().Equals(movePos)) { return(true); } } return(false); } MoveScenarios matchScenario; if (currMoveScenarios.isCapture()) { matchScenario = currMoveScenarios.getMatchScenarios(movePos, currMoveIndex); } else { matchScenario = currMoveScenarios.getMatchScenarios(movePos); } return(matchScenario.Count() > 0); }
public void deletePlayerMove(Position toMovePos) { if (currMoveScenarios == null) { return; } if (toMovePos.Equals(currMoveScenarios.getFromPosition())) { currMoveScenarios = null; currMoveIndex = 0; } else { int i = 0; foreach (Position p in currMoveScenarios.getScenario(0)) { if (!p.Equals(toMovePos)) { break; } i++; } currMoveIndex = currMoveIndex - i - 1; if (currMoveIndex == -1) { currMoveScenarios = allMoveScenarios; currMoveIndex = 0; } else { Position currPos = currMoveScenarios.getScenario(0)[currMoveIndex]; currMoveScenarios = allMoveScenarios.getMatchScenarios(currPos, currMoveIndex); } } }