@Override
  public void paintBoard() {

    int[] arrSelPositions;

    int lastMove = _jni.getMyMove();
    if (lastMove != 0) {
      arrSelPositions = new int[3];
      arrSelPositions[0] = m_iFrom;
      arrSelPositions[1] = Move.getTo(lastMove);
      arrSelPositions[2] = Move.getFrom(lastMove);
    } else {
      arrSelPositions = new int[1];
      arrSelPositions[0] = m_iFrom;
    }

    _view.paintBoard(_jni, arrSelPositions, null);
  }
  @Override
  protected boolean requestMove(int from, int to) {
    if (_arrPGN.size() <= _jni.getNumBoard() - 1) {
      setMessage("(position allready solved)");
      return super.requestMove(from, to);
    }
    int move = _arrPGN.get(_jni.getNumBoard() - 1)._move;
    int theMove = Move.makeMove(from, to);

    if (Move.equalPositions(move, theMove)) {
      jumptoMove(_jni.getNumBoard());

      updateState();

      setMessage("Correct!");
      _imgStatus.setImageResource(R.drawable.indicator_ok);
      /*
      if(_arrPGN.size() == m_game.getBoard().getNumBoard()-1)
      	play();
      else {
      	jumptoMove(m_game.getBoard().getNumBoard());
      	updateState();
      }*/

      return true;
    } else {
      // check for illegal move
      setMessage(
          "Move "
              + Move.toDbgString(theMove)
              + (checkIsLegalMove(from, to) ? " is not the expected move" : " is an invalid move"));
      _imgStatus.setImageResource(R.drawable.indicator_error);
      m_iFrom = -1;
    }

    updateState();

    return true;
  }