protected function isCastleKingSide(Piece $king, Square $to) { if ($to->getPiece()) { return $to->getX() > $king->getX(); } else { return 7 === $to->getX(); } }
/** * Handle castling **/ protected function castling(King $king, Square $to) { if (7 === $to->getX()) { $rookSquare = $to->getSquareByRelativePos(1, 0); $newRookSquare = $to->getSquareByRelativePos(-1, 0); } else { $rookSquare = $to->getSquareByRelativePos(-2, 0); $newRookSquare = $to->getSquareByRelativePos(1, 0); } $rook = $rookSquare->getPiece(); $this->board->move($rook, $newRookSquare->getX(), $newRookSquare->getY()); $rook->setFirstMove($this->game->getTurns()); if ($this->stack) { $this->stack->add(array('type' => 'castling', 'from' => $rookSquare->getKey(), 'to' => $newRookSquare->getKey())); } }