package com.clearlyspam23.GLE;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import com.clearlyspam23.GLE.level.Level;
import com.thoughtworks.xstream.XStream;
public class LastRunInfo {
private static final File DEFAULT_LAST_RUN = new File(".jangle");
private XStream xstream = new XStream();
private File output;
private SaveData lastData;
public LastRunInfo(){
this(DEFAULT_LAST_RUN);
}
public LastRunInfo(File file){
output = file;
}
public void save(JAnGLEData data){
ArrayList<String> list = new ArrayList<String>();
for(Level l : data.getOpenLevels()){
if(l.getSaveFile()!=null)
list.add(l.getSaveFile().getPath());
}
String openTemplate = null;
if(data.getOpenTemplate()!=null)
openTemplate = data.getOpenTemplate().getTemplateFile().getPath();
String currentLevel = null;
if(data.getCurrentLevel()!=null&&data.getCurrentLevel().getSaveFile()!=null){
currentLevel = data.getCurrentLevel().getSaveFile().getPath();
}
lastData = new SaveData(openTemplate, list, currentLevel);
try {
FileWriter writer = new FileWriter(output);
xstream.toXML(lastData, writer);
writer.close();
} catch (IOException e) {
}
}
public boolean load(){
try {
FileReader reader = new FileReader(output);
lastData = (SaveData) xstream.fromXML(reader);
return true;
} catch (Exception e) {
//subtly fail, this means that this is our first time running, probably shouldnt error
}
return false;
}
public File getTemplateFile(){
return new File(lastData.getOpenTemplate());
}
public boolean hasData(){
return lastData!=null;
}
public boolean hasOpenTemplate(){
return hasData()&&lastData.getOpenTemplate()!=null;
}
public boolean isCurrentLevel(File level){
return level.getPath().equals(lastData.getCurrentLevel());
}
public File[] getOpenLevels(){
File[] files = new File[lastData.getOpenLevels().size()];
for(int i = 0; i < files.length; i++)
files[i] = new File(lastData.getOpenLevels().get(i));
return files;
}
}