#pragma once
#include "../Plateau.hpp"
#include "PieceSafari.hpp"
struct PlateauSafari : public Plateau {
PlateauSafari();
virtual ~PlateauSafari();
// Fonction pour afficher le plateau vers une sortie
void afficherPlateau(std::ostream &, const bool debug = false) const override;
// Vérifie que le déplacement est valide
bool deplacementValide(const int destX, const int destY) const;
// Renvoie la position du placeholder
Position getPlaceholderBarriere() const;
// Modifie la position du placeholder
void setPlaceholderBarriere(const int x, const int y);
// Avec les positions du placeholder et les positions données
// Vérifie que les 2 points sont à côtés
bool validWithPlaceholder(const int x, const int y) const;
// Place la barrière, renvoie si on a réussi
bool placementBarriere(const int x, const int y);
private:
// Barrières
std::vector<PieceSafari *> barrieres;
PositionMutable placeholderBarriere;
};