package linea;

import java.awt.Color;
import java.awt.Graphics;

public class Bonus extends ObjetGraphique {

    protected double taille = 10;
    protected boolean actif = false;
    protected int compteurFrames = 0;

    protected Ligne maLigne;
    protected Cercle monCercle;
    protected Jeu monJeu;

    public Bonus(Ligne l, Cercle c, Jeu j) {
        this.maLigne = l;
        this.monCercle = c;
        this.monJeu = j;
        this.couleur = Color.RED;
    }

    @Override
    void Afficher(Graphics g) {
        if (actif) {
            g.setColor(this.couleur);
            g.fillRect((int)Math.round(x), (int)Math.round(y), (int)taille, (int)taille);
        }
    }

    @Override
    void Animer() {
        // On compte le temps uniquement si le bonus n'est pas déjà sur l'écran
        if (!actif) {
            compteurFrames++;
        }

        // TEMPS RÉDUIT POUR TESTER : 50 frames = 2 secondes (au lieu de 375)
        if (compteurFrames >= 100 && !actif) {
            actif = true;
            x = 800;

            double hauteurLigne = 300;
            if (maLigne.dernierSegment != null) {
                hauteurLigne = maLigne.dernierSegment.y;
            }

            double decalage = (Math.random() * 80) - 40;
            y = hauteurLigne + decalage;

            // Ce message s'affichera dans ta console Eclipse/IntelliJ/VSCode
            System.out.println("DEBUG : Le bonus apparait à Y = " + y);

            compteurFrames = 0;
        }

        if (actif) {
            x -= 10;

            // --- VÉRIFICATION DE LA COLLISION ---
            double centreX = x + (taille / 2.0);
            double centreY = y + (taille / 2.0);
            double dx = centreX - monCercle.x;
            double dy = centreY - monCercle.y;
            double distance = Math.sqrt((dx * dx) + (dy * dy));

            if (distance < monCercle.getRayon()) {
                System.out.println("DEBUG : Bonus attrapé ! +1 Vie");
                monJeu.vies += 1;
                actif = false;
            }

            if (x + taille < 0) {
                System.out.println("DEBUG : Bonus raté, il est sorti de l'écran");
                actif = false;
            }
        }
    }
}