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

/**
 * Beschreiben Sie hier die Klasse Ampel.
 * 
 * @author Moon
 * @version 1.0
 */
public class Ampel
{

    /**
     * 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 groesse   Der Durchmesser einer Lampe bzw. die Breite der Ampel
     */


    ArrayList<Figur> figuren;
    public Ampel(int x, int y, int a)
    {

        figuren = new ArrayList<Figur>();
        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 Kreis(x, y - a, a, Color.GRAY));
        figuren.add(new Kreis(x, y, a, Color.GRAY));
        figuren.add(new Kreis(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);
        }
    }


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

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

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

    /**
     * Schaltet die grüne Lampe an, die anderen aus
     */
    public void schalteGruen() 
    {
        figuren.get(3).setColor(Color.GRAY);
        figuren.get(4).setColor(Color.GRAY);
        figuren.get(5).setColor(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<Figur>();
        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 Kreis(x, y - a, a, Color.GRAY));
        figuren.add(new Kreis(x, y, a, Color.GRAY));
        figuren.add(new Kreis(x, y + a, a, Color.GRAY));
    }
}
