import java.awt.*;
import java.util.ArrayList;

/**
 * Beschreiben Sie hier die Klasse Ampel.
 * 
 * @author Rainer Helfrich
 * @version 1.0
 */
public class Ampel
{
    private ArrayList<Figur> figuren;
    /**
     * Konstruktor für Objekte der Klasse Ampel
     * @param x         Die x-Koordinate des neuen Mittelpunkts der Ampel
     * @param y         Die y-Koordinate des neuen Mittelpunkts der Ampel
     * @param a   Der Durchmesser einer Lampe bzw. die Breite der Ampel
     */
    public Ampel(int x, int y, int a)
    {
     figuren = new ArrayList<>();
     figuren.add(new Quadrat(x, y-a, a, Color.DARK_GRAY));
     figuren.add(new Quadrat(x, y, a, Color.DARK_GRAY));
     figuren.add(new Quadrat(x, y+a, a, Color.DARK_GRAY));
     figuren.add(new Mickey(x, y-a, a, Color.GRAY));
     figuren.add(new Mickey(x, y, a, Color.GRAY));
     figuren.add(new Mickey(x, y+a, a, Color.GRAY));
    }

    /**
     * Zeichnet die Ampel auf den Graphics-Bereich g
     */
    public void zeichneDich(Graphics g)
    {
        for (Figur f : figuren){
            f.draw(g);
        }
    }

    private void setGray(){
        figuren.get(3).changeColor(Color.GRAY);
        figuren.get(4).changeColor(Color.GRAY);
        figuren.get(5).changeColor(Color.GRAY);
    }
    /**
     * Schaltet die rote Lampe an, die anderen aus
     */
    public void schalteRot()
    {
        setGray();
        figuren.get(3).changeColor(Color.RED);

    }

    /**
     * Schaltet die rote und gelbe Lampe an, die grüne aus
     */
    public void schalteRotGelb() 
    {
        setGray();
        figuren.get(3).changeColor(Color.RED);
        figuren.get(4).changeColor(Color.YELLOW);
    }

    /**
     * Schaltet die gelbe Lampe an, die anderen aus
     */
    public void schalteGelb() 
    {
        setGray();
        figuren.get(4).changeColor(Color.YELLOW);
    }

    /**
     * Schaltet die grüne Lampe an, die anderen aus
     */
    public void schalteGruen() 
    {
        setGray();
        figuren.get(5).changeColor(Color.GREEN);
    }

    /**
     * Gibt der Ampel einen neuen Mittelpunkt und eine neue Größe
     * @param x         Die x-Koordinate des neuen Mittelpunkts der Ampel
     * @param y         Die y-Koordinate des neuen Mittelpunkts der Ampel
     * @param a   Der Durchmesser einer Lampe bzw. die Breite der Ampel
     */
    public void setzeMitteUndGroesse(int x, int y, int a)
    {
        figuren = new ArrayList<>();
        figuren.add(new Quadrat(x, y-a, a, Color.DARK_GRAY));
        figuren.add(new Quadrat(x, y, a, Color.DARK_GRAY));
        figuren.add(new Quadrat(x, y+a, a, Color.DARK_GRAY));
        figuren.add(new Mickey(x, y-a, a, Color.GRAY));
        figuren.add(new Mickey(x, y, a, Color.GRAY));
        figuren.add(new Mickey(x, y+a, a, Color.GRAY));
    }
}
