package org.pixelgaffer.turnierserver.codr;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
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;
/**
* Diese KIs werden nicht im Codr-Verzeichnis gespeichert.
* Es wird lediglich der Pfad zum Verzeichnis gespeichert.
*
* @author Philip
*/
public class AiExtern extends AiSaved {
public String path;
/**
* Wenn die Ki aus dem Verzeichnis geladen wird, wird dieser Konstruktor verwendet.
*/
public AiExtern(String ttitle) {
super(ttitle, AiMode.extern);
loadProps();
loadVersions();
}
/**
* Wenn die Ki neu erstellt wird, wird dieser Konstruktor verwendet.
*/
public AiExtern(String ttitle, String lang, String ppath) {
super(ttitle, AiMode.extern);
path = ppath;
language = lang;
File dir = new File(Paths.ai(this));
if (!dir.mkdirs()) {
Dialog.error("Der Spieler existiert bereits.");
description = "invalid";
} else {
storeProps();
}
versions.add(new Version(this, 0, mode, path));
}
/**
* Lädt aus dem Dateiverzeichnis die Eigenschaften des Players.
*/
@Override
public void loadProps() {
try {
Reader reader = new FileReader(Paths.aiProperties(this));
Properties prop = new Properties();
prop.load(reader);
reader.close();
gametype = prop.getProperty("gametype");
description = prop.getProperty("description");
language = prop.getProperty("language");
path = prop.getProperty("path");
} catch (IOException e) {
ErrorLog.write("Fehler bei Laden aus der properties.txt");
}
}
/**
* Speichert die Eigenschaften des Players in das Dateiverzeichnis.
*/
@Override
public void storeProps() {
Properties prop = new Properties();
prop.setProperty("description", description);
prop.setProperty("language", language.toString());
prop.setProperty("gametype", gametype + "");
prop.setProperty("path", path);
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)");
}
}
/**
* Lädt die Versionen aus dem Dateisystem, mit Hilfe der versionAmount-Property
*/
@Override
public void loadVersions() {
versions.clear();
versions.add(new Version(this, 0, AiMode.extern));
}
@Override
public Version newVersion(NewVersionType type) {
return null;
}
@Override
public Version newVersion(NewVersionType type, String path) {
return null;
}
}