package de.jaujau.daten;

import java.awt.Image;
import java.util.ArrayList;

/**
 * Diese Klasse Verwaltet die Texturenpackete des Spiels
 * @author Sebastian Kacza
 */
public class Texturenpakete {

	private ArrayList<Texturenpaket> TexturenpaketListe;
	private Image Texturen[];
	private int AktivesPaket;
	
	
	public Texturenpakete(){
		TexturenpaketListe = new ArrayList<Texturenpaket>();
		
		//Hinzufügen eines Internen Texturenpaketes
		TexturenpaketListe.add(new TexturenpaketIntern("/img/texturen/standart", "JauJau Standart Texturen Französisch", 0)); 
		
		//Internes Texturenpaket als Aktiv festlegen
		AktivesPaket = 0;
	}
	
	
	/**
	 * Gibt die Anzahl der Vorhanden Texturenpakete aus
	 * @return Anzahl Texturenpakte
	 */
	public int getAnzahlPakete() {
		return TexturenpaketListe.size();
	}
	

	/**
	 * Gibt das min Level für ein bestimtes Paket zurück
	 * @param PaketNummer
	 * @return min Level
	 */
	public int getLevel(int PaketNr) {
		if((PaketNr >= 0) && (PaketNr < TexturenpaketListe.size())) {
			return TexturenpaketListe.get(PaketNr).getLevel();
		}
		return 0;
	}
	
	
	/**
	 * Gibt den Namen eines Bestiment Paketes zurück
	 * @param PaketNummer
	 * @return Name des Paketes
	 */
	public String getName(int PaketNr) {
		if((PaketNr >= 0) && (PaketNr < TexturenpaketListe.size())) {
			return TexturenpaketListe.get(PaketNr).getName();
		}
		return "";
	}
	
	
	/**
	 * Gibt die Nummer des AktivenPakes aus
	 * @return Nummer des Aktiven Paketes
	 */
	public int getAktivesPaket() {
		return AktivesPaket;
	}
	
	
	/**
	 * Legt fest welches Texturenpaket das Aktive sein soll
	 * Die Bilder des Aktiven Textuenpaketes werden nur Pufferung in eine Array geladen.
	 * Dies soll Dateizugriffe beim Anzeigen der Bilder reduzieren
	 * @param PaketNr des Paketes
	 * @return Setzen erfolgreich true/false
	 */
	public boolean setAktivesPaket(int PaketNr) {
		if((PaketNr >= 0) && (PaketNr < TexturenpaketListe.size())) {
			AktivesPaket = PaketNr;
			Texturen = TexturenpaketListe.get(PaketNr).getTexturen();
			return true;
			//ToDo: Wenn für ein Bild ein Null Objekt zurückgegebn soll das Bild ausgetauscht werden?
		}
		return false;
	}
	
	
	/**
	 * Es wird ein neues Texturenpaket zu der Liste hinzugefügt
	 * Das Paket wird vor dem einfügen auf Vollständfigkeit geprüft.
	 * Wenn es unfolständig ist wird es nicht hinzugefügt
	 * @param Pfad zu der Texturenpaket Datei (.zip)
	 * @return Ob das Paket erfolgreich hinzu gefügt wurde, true/false
	 */
	public boolean addPaket(String Pfad) {
		Texturenpaket NeuesPaket = new Texturenpaket(Pfad);
		if(NeuesPaket.ladePacket()) {
			TexturenpaketListe.add(NeuesPaket);
			return true;
		}
		
		return false;
	}

	
	/**
	 * Gibt eine Textur des aktuellen Paketes als Image zurück
	 * @param KartenNr der Textur
	 * @return Textur als Image
	 */
	public Image getTextur(int KartenNr) {
		if((KartenNr >= 0) && (KartenNr < 33)) {
			return Texturen[KartenNr];
		}
		return null;
	}

}
