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

public class Raumschiff extends UFO
{
    // Attribute
   public String sauerstoffnachfuelltaste = "a";
   public int sauerstoffvorrat = 2500; // 2500 ml Sauerstoff
   public int anzahlNachfuellVorgaenge = 5;
    
   public String meldungSauerstoff = "";
   public String[] sauerstofftastenliste = {"a", "s", "d", "f"};
    private int zeitBisZurEvakuierung = 2000; // 2000 Schwurbsekunden verbleibend
    private String meldungEvakuierung = "";
    private String entschaerfungstaste = "";
    private int nachfuellmengeSauerstoff;

    private boolean nachfuellenMoeglich = true;
    
    // Konstruktor
    public Raumschiff()
    {
        
    }

    // Methoden
    
    // HIER DIE GET-METHODEN EINFUEGEN
    
    
    
    
    public void act() 
    {
        
        sauerstoffvorrat = sauerstoffvorrat - 4; // Sauerstoffvorrat verringert sich um 4
        zeitBisZurEvakuierung--;                // Zeit bis zur Evakuierung verringert sich um 1
        meldungSauerstoff = "Sauerstoffvorrat: " + sauerstoffvorrat;
        
        
        meldungEvakuierung = "+++ Evakuierung in " + zeitBisZurEvakuierung/80 + " Schwurbsekunden.";
        if(zeitBisZurEvakuierung < 1)
        {
            sprechblaseErzeugen("ERFOLGREICH EVAKUIERT!!");
            meldungEvakuierung = "ERFOLGREICH EVAKUIERT!!!!!";
            getWorld().setBackground("paradies.jpg");
            Greenfoot.stop();
        }
        
        else if(zeitBisZurEvakuierung < 100)
        {
            meldungEvakuierung = meldungEvakuierung.concat("\n +++ DURCHHALTEN - GLEICH IST ES GESCHAFFT!!! +++ ");
            
        }
        else if(zeitBisZurEvakuierung < 500)
        {
            meldungEvakuierung = meldungEvakuierung.concat("\n +++ Weniger als 500 Schwurbsekunden verbleibend +++ ");
            
        }
        else if(zeitBisZurEvakuierung < 1500)
        {
            meldungEvakuierung = meldungEvakuierung.concat("\n +++ Sie müssen noch eine Weile durchhalten, Astronaut. +++ ");
        }

        sprechblaseErzeugen(meldungEvakuierung);
        
        
        
        if(sauerstoffvorrat <= 0)
        {
            meldungSauerstoff = "Astronaut ohne Sauerstoff.\nMission beendet";
            getWorld().setBackground("hoelle.jpg");
            sprechblaseErzeugen(meldungSauerstoff);
                Greenfoot.stop();     
        }
        else if(sauerstoffvorrat < 100)
        {
            meldungSauerstoff = meldungSauerstoff.concat("+++ Sauerstoffvorrat < 100. Vorbereitung auf Exitus +++");
           sprechblaseErzeugen(meldungSauerstoff);
        }
        
        
        // Möglichkeit zum Sauerstoffnachfüllen erzeugen
        
        if(zeitBisZurEvakuierung % 150 == 0)
        {
           nachfuellenMoeglich = true;
           sauerstoffnachfuelltaste = zufaelligeTasteAuswaehlen();
           nachfuellmengeSauerstoff = zufaelligeMengeSauerstoffErzeugen();
           meldungSauerstoff = meldungSauerstoff.concat("+++ Sauerstoffvorrat: " + sauerstoffvorrat + ". Sie können noch " + anzahlNachfuellVorgaenge + " mal nachfüllen.\nTaste " + sauerstoffnachfuelltaste + " drücken, um " + nachfuellmengeSauerstoff + " Sauerstoff nachzufüllen.");
            
        }
        else
        {
           meldungSauerstoff = meldungSauerstoff.concat("+++ Sauerstoffvorrat: " + sauerstoffvorrat + ". Sie können noch " + anzahlNachfuellVorgaenge + " mal nachfüllen.\nNACHFÜLLSYSTEM LÄDT AUF, BITTE WARTEN");
        }
        
        
        
    }    
    
    
    public String zufaelligeTasteAuswaehlen()
    {
        int zufallszahlTastenarray = new Random().nextInt(sauerstofftastenliste.length);

        
        return sauerstofftastenliste[zufallszahlTastenarray];
        
    }
    public int zufaelligeMengeSauerstoffErzeugen()
    {
        return new Random().nextInt(1300);
        
    }
    public void setAnzahlNachfuellvorgaenge(int anzahl)
    {
        this.anzahlNachfuellVorgaenge = anzahl;
    }
    public void reduziereAnzahlNachfuellvorgaenge()
    {
        this.anzahlNachfuellVorgaenge--;
    }
    
 
    public void setNachfuellenMoeglich(boolean moeglich)
    {
        this.nachfuellenMoeglich = moeglich;
    }
    public boolean getNachfuellenMoeglich()
    {
        return this.nachfuellenMoeglich;
    }
    public int getNachfuellmengSauerstoff()
    {
        return nachfuellmengeSauerstoff;
    }
    

  
    public void setSauerstoffnachfuelltaste(String sauerstoffnachfuelltaste)
    {
        this.sauerstoffnachfuelltaste = sauerstoffnachfuelltaste;
    }
    public void erhoeheSauerstoffvorrat(int nachfuellmenge)
    {
        this.sauerstoffvorrat += this.nachfuellmengeSauerstoff;
    }
    
    public int getVerbleibendeZeit()
    {
        return sauerstoffvorrat;
    }
     public void sprechblaseErzeugen(String spruch)
    {
        getWorld().removeObjects(getWorld().getObjects(SprechblaseRaumschiff.class));
        SprechblaseRaumschiff sk = new SprechblaseRaumschiff();
        getWorld().addObject(sk, getX(), getY()+30);
        sk.textAusgeben(spruch);
    }
    
    
}
