import EnvironmentPluginAPI.Contract.IEnvironment;
import EnvironmentPluginAPI.Contract.IEnvironmentPluginDescriptor;
import EnvironmentPluginAPI.Contract.TEnvironmentDescription;
import EnvironmentPluginAPI.Exceptions.CorruptConfigurationFileException;
import EnvironmentPluginAPI.Exceptions.TechnicalException;
import EnvironmentPluginAPI.Service.ICycleStatisticsSaver;
import EnvironmentPluginAPI.Service.IEnvironmentConfiguration;
import Logic.GridWorldConfiguration;
import Logic.GridWorldStyle;
import java.util.LinkedList;
import java.util.List;
/**
* This is an example of how an environment plugin descriptor may look like.
*/
public class CliffEnvironmentPluginDescriptor implements IEnvironmentPluginDescriptor<GridWorldConfiguration> {
@Override
public TEnvironmentDescription getDescription() {
return new TEnvironmentDescription("The Cliff", "v0.01", "A simple environment, illustrating the cliff environment" +
" from the book by Sutton. See http://webdocs.cs.ualberta.ca/~sutton/book/ebook/node1.html");
}
@Override
public List<GridWorldConfiguration> getAvailableConfigurations() throws CorruptConfigurationFileException, TechnicalException {
LinkedList<GridWorldConfiguration> configurations = new LinkedList<GridWorldConfiguration>();
configurations.add(new GridWorldConfiguration(20, 8, GridWorldStyle.Cliff));
configurations.add(new GridWorldConfiguration(20, 8, GridWorldStyle.Random));
return configurations;
}
@Override
public void saveConfiguration(GridWorldConfiguration configuration) throws TechnicalException {
// not yet..
}
@Override
public IEnvironment getInstance(ICycleStatisticsSaver cycleStatisticsSaver) throws TechnicalException {
return new CliffEnvironmentPlugin(cycleStatisticsSaver);
}
}