/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.petah.spring.bai.cache;
import com.springrts.ai.oo.clb.MoveData;
import com.springrts.ai.oo.clb.OOAICallback;
import java.io.File;
import java.io.Serializable;
import java.util.TreeMap;
import java.util.logging.Logger;
import org.petah.common.option.Option;
import org.petah.common.option.OptionsManager;
import org.petah.common.util.profiler.Profiler;
import org.petah.spring.bai.InformationLogger;
import org.petah.spring.bai.util.IOUtil;
/**
*
* @author Petah
*/
public class CachedMoveDataManager implements Serializable {
public static final long serialVersionUID = 1L;
// Options
private static final Option<Boolean> cacheToDisk = OptionsManager.getOption(
new Option<Boolean>("CachedMoveDataManager.cacheToDisk", false));
// Class properties
private TreeMap<String, CachedMoveData> moveData;
public CachedMoveDataManager(OOAICallback callback) {
Profiler.start(CachedMoveDataManager.class, "CachedMoveDataManager()");
File file = new File(InformationLogger.getCacheDirectory().getAbsolutePath() + File.separator +
callback.getMod().getFileName() + "." + serialVersionUID + ".movedata.bin");
CachedMoveDataManager loadedObject = (CachedMoveDataManager) IOUtil.loadCacheFile(cacheToDisk, file);
if (loadedObject != null) {
moveData = loadedObject.moveData;
Logger.getLogger(CachedMetalMap.class.getName()).info("Loaded move data from cache.");
} else {
moveData = new TreeMap<String, CachedMoveData>();
Logger.getLogger(CachedMetalMap.class.getName()).info("Processed move data.");
}
IOUtil.saveCacheFile(cacheToDisk, file, this);
Profiler.stop(CachedMoveDataManager.class, "CachedMoveDataManager()");
}
public CachedMoveData getCachedMoveData(MoveData data) {
if (data == null) {
return null;
}
CachedMoveData cachedMoveData = new CachedMoveData(data);
if (moveData.containsKey(cachedMoveData.getName())) {
return moveData.get(cachedMoveData.getName());
}
moveData.put(cachedMoveData.getName(), cachedMoveData);
return cachedMoveData;
}
public TreeMap<String, CachedMoveData> getCachedMoveData() {
return moveData;
}
}