import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class Weltall extends World
{
    private Sonne unsereSonne;
    private Umlaufbahn mondUmlaufbahn; 
    private Erde unsereErde;
    private Mond unserMond;
    private Anzeige datumAnzeige, phasenAnzeige;
    private Monderscheinung unsereMonderscheinung;
    private Mondphase eineMondphase;

    private String datumString;
    private int mondphase;
    private String mondPhasenName, mondPhasenBild;
    

    public Weltall()
    {    
        super(1000, 600, 1);
        unsereSonne = new Sonne();
        mondUmlaufbahn = new Umlaufbahn();
        unsereErde = new Erde(this);
        unserMond = new Mond();
        datumAnzeige = new Anzeige(250, 50);
        phasenAnzeige = new Anzeige(400, 26);
        unsereMonderscheinung = new Monderscheinung();
        eineMondphase = new Mondphase();        

        addObject(unsereSonne,100,300);
        addObject(mondUmlaufbahn, 700,300);
        addObject(unsereErde, 700,300);
        addObject(datumAnzeige, 270,150);
        addObject(phasenAnzeige, 350,530);
    }

    public void mondphaseErmitteln(String pDatumString)
    {
        datumString = pDatumString;
        mondphase = eineMondphase.berechneMondphase(datumString);
        mondphaseUebersetzen(mondphase);
        unsereMonderscheinung.setImage(mondPhasenBild);
        datumAnzeige.updateImage(datumString );
        phasenAnzeige.updateImage(mondPhasenName);
    }

    public void mondphaseUebersetzen(int pMondphase)
    {
        switch(pMondphase)
        {
            case 0:
            {
                setzeMond(455,300);
                mondPhasenName = "Neumond";
                mondPhasenBild = "neumond.jpg";
                break;
            }
            case 1:
            {
                setzeMond(531,480);
                mondPhasenName = "zunehmender Mond Sichelform";
                mondPhasenBild = "zunehmenderMondsichelfoermig.jpg";
                break;
            }
            case 2:
            {
                setzeMond(700,545);
                mondPhasenName = "zunehmender Halbmond";
                mondPhasenBild = "zunehmenderHalbmond.jpg";
                break;
            }
            case 3:
            {
                setzeMond(879,480);
                mondPhasenName = "zunehmender Mond Buckelform";
                mondPhasenBild = "zunehmenderMondbuckelfoermig.jpg";
                break;
            }
            case 4:
            {
                setzeMond(945,300);
                mondPhasenName = "Vollmond";
                mondPhasenBild = "vollmond.jpg";
                break;
            }
            case 5:
            {
                setzeMond(879,135);
                mondPhasenName = "abnehmender Mond Buckelform";
                mondPhasenBild = "abnehmenderMondbuckelfoermig.jpg";                        
                break;
            }
            case 6:
            {
                setzeMond(700,55);
                mondPhasenName = "abnehmender Halbmond";
                mondPhasenBild = "abnehmenderHalbmond.jpg";
                break;
            }
            case 7:
            {
                setzeMond(531,135);
                mondPhasenName = "abnehmender Mond Sichelform";
                mondPhasenBild = "abnehmenderMondsichelfoermig.jpg";
                break;
            }
        }
    }

    public void setzeMond(int pX, int pY)
    {
        removeObject(unserMond);
        addObject(unserMond,pX, pY);
        addObject(unsereMonderscheinung, 250, 300);
    }
}
