#include "Rook.h"
#include "Position.h"
#include <utility>
#include <stdexcept>
#include <iostream>


Rook::Rook(Position pos, char c) {
    if (c != 'B' and c != 'W')
        throw std::invalid_argument("Impossible color of figure!");
    position = pos;
    color = c;
}

vector<Position> Rook::get_moves()
{
    vector<Position> moves;
    int moveNum = 0;
    for (int i = 1; i < 9; i++) {
        Position p;
        Position p2;
        try {
            if ('0'+i != position.posNum) p2 = Position(position.posSym, (char)('0'+i));
            if ('0'+i+16 != position.posSym) p = Position((char)('0'+i+16), position.posNum);
        }
        catch (const std::invalid_argument) {
            continue;
        }
        if ('0'+i+16 != position.posSym) {
            moves.push_back(p);
        }
        if ('0'+i != position.posNum) {
            moves.push_back(p2);
        }
    }
    return moves;
}

const char* Rook::print()
{
    const char* me;
    if (color == 'B')
        me = "♜";
    else
        me = "♖";
    return me;
}