package org.pixelgaffer.turnierserver.codr; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.Properties; import org.pixelgaffer.turnierserver.codr.utilities.Dialog; import org.pixelgaffer.turnierserver.codr.utilities.ErrorLog; import org.pixelgaffer.turnierserver.codr.utilities.Paths; /** * Speichert eine KI lokal ab. * * @author Philip */ public class AiSaved extends AiSimple { protected AiSaved(String ttitle, AiMode mmode) { super(ttitle, mmode); } public AiSaved(String ttitle) { super(ttitle, AiMode.saved); loadProps(); loadVersions(); } /** * Speichert eine neue Ai mit dem übergebenen Titel und der Sprache ab. * * @param tit der übergebene Titel * @param lang die übergebene Sprache */ public AiSaved(String ttitle, String lang) { super(ttitle, AiMode.saved); language = lang; File dir = new File(Paths.ai(this)); if (!dir.mkdirs()) { Dialog.error("Der Spieler existiert bereits."); description = "invalid"; } else { storeProps(); } } /** * Fügt eine neue Version der Versionsliste hinzu. * * @param type die Art, in der die Version hinzugefügt werden soll * @return die Version, die hinzugefügt wurde */ public Version newVersion(NewVersionType type) { if (type == NewVersionType.fromFile) { return null; } return newVersion(type, ""); } /** * Fügt eine neue Version der Versionsliste hinzu. * * @param type die Art, in der die Version hinzugefügt werden soll * @param path der Pfad, von dem die Version kopiert werden soll, falls type==fromFile * @return die Version, die hinzugefügt wurde */ public Version newVersion(NewVersionType type, String path) { Version version = null; switch (type) { case fromFile: version = new Version(this, versions.size(), mode, path); break; case lastVersion: if (versions.size() == 0) { return null; } version = new Version(this, versions.size(), mode, Paths.version(this, versions.size() - 1)); break; case simplePlayer: version = new Version(this, versions.size(), mode); break; } versions.add(version); storeProps(); return version; } /** * Speichert die Eigenschaften des Players in das Dateiverzeichnis. */ public void storeProps() { Properties prop = new Properties(); prop.setProperty("description", description); prop.setProperty("versionAmount", "" + versions.size()); prop.setProperty("language", language.toString()); prop.setProperty("gametype", gametype + ""); try { Writer writer = new FileWriter(Paths.aiProperties(this)); prop.store(writer, title); writer.close(); } catch (IOException e) { ErrorLog.write("Es kann keine Properties-Datei angelegt werden. (Ai)"); } } /** * Setzt die Ai-Beschreibung. * * @param des die Beschreibung des Players */ public void setDescription(String des) { description = des; storeProps(); } }