//
// Created by Louis Gallet on 15/01/2025.
//

#include "G990.h"

#include <algorithm>

void G990::initialiser(bool const nord, bool const est, long const energiePhysique, long const energieMaximale, long const vision) {
    this->nord = nord;
    this->est = est;
    setEnergiePhysique(energiePhysique);
    setEnergieMaximale(energieMaximale);
    setVision(vision);
}

void G990::deplacementNordSud(int valeur, int &x, int &y) const {
    long const deplacement = (static_cast<long>(valeur) > energieMaximale) ? energieMaximale : valeur;
    if (nord) {
        y += static_cast<int>(deplacement);
    } else {
        y -= static_cast<int>(deplacement);
    }
    y = std::max(std::min(y, 9), 0);
}

void G990::deplacementEstOuest(int valeur, int &x, int &y) const {
    long const deplacement = (static_cast<long>(valeur) > energieMaximale) ? energieMaximale : valeur;
    if (est) {
        x += static_cast<int>(deplacement);
    } else {
        x -= static_cast<int>(deplacement);
    }
    x = std::max(std::min(x, 9), 0);
}

void G990::regarderNord() {
    nord = true;
}

void G990::regarderSud() {
    nord = false;
}

void G990::regarderEst() {
    est = true;
}

void G990::regarderOuest() {
    est = false;
}

void G990::bloquer(int xAmi, int yAmi, int &x, int &y, int xEnnemi, int yEnnemi) {

}