#pragma once

#include "Player/Player.h"

#include <memory>
#include <string>
#include <random>

class RealPlayer : public Player {
public:
    RealPlayer(const std::string& name, std::unique_ptr<Ship>&& ship);

    int attack(Ship& playerShip) override;
    Ship& getShip() { return *_ship; }
    const Ship& getShip() const { return *_ship; }

protected:
    Ship* chooseEnemyShip(const BattleField& battleField) const override final;
    std::unique_ptr<Action> chooseAction(const BattleField& battleField) const override final;

private:
    std::string _name;
    std::unique_ptr<Ship> _ship;
    static std::random_device _rd;
    std::mt19937 _seed{_rd()};
};
