package linea;

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

public class Malus extends ObjetGraphique {

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

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

    public Malus(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) {
            if (dejaCapture) {
                g.setColor(Color.black);
            } else {
                g.setColor(this.couleur);
            }
            g.fillRect((int)Math.round(x), (int)Math.round(y), (int)taille, (int)taille);
        }
    }

    @Override
    void Animer() {
        if (!actif) {
            compteurFrames++;
        }

        if (compteurFrames >= 250 && !actif) {

            actif = true;
            dejaCapture = false;

            x = 800;

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

            if (Math.random() > 0.5) {
                y = hauteurLigne - 75 - (Math.random() * 30);
            } else {
                y = hauteurLigne + 75 + (Math.random() * 30);
            }

            if (y < 20) y = 20;
            if (y > 550) y = 550;

            compteurFrames = 0;
        }

        if (actif) {
            double vitesseLigne = monJeu.gestionnaireNiveau.getVitesseScroll();
            x -= vitesseLigne;

            double centreX = x + (taille / 2.0);

            if (centreX <= monCercle.x && centreX > monCercle.x - vitesseLigne) {

                double hautCercle = monCercle.y - monCercle.getRayon();
                double basCercle = monCercle.y + monCercle.getRayon();

                if (y > hautCercle && (y + taille) < basCercle) {

                    if (!dejaCapture) {
                        monJeu.vies -= 1;
                        dejaCapture = true;
                    }
                }
            }

            if (x + taille < 0) {
                actif = false;
            }
        }
    }
}