Search in sources :

Example 1 with DOMEngine

use of pl.themolka.arcade.dom.engine.DOMEngine in project Arcade2 by ShootGame.

the class MapLoaderModule method readMapDirectory.

private OfflineMap readMapDirectory(File worldDirectory) throws DOMException, IOException {
    File file = new File(worldDirectory, MapManifest.FILENAME);
    if (!file.exists()) {
        throw new FileNotFoundException("Missing " + file.getName());
    }
    DOMEngine engine = this.getPlugin().getDomEngines().forFile(file);
    Parser<OfflineMap> parser;
    try {
        parser = this.getPlugin().getParsers().forType(OfflineMap.class);
    } catch (ParserNotSupportedException ex) {
        throw new RuntimeException("No " + OfflineMap.class.getSimpleName() + " parser installed");
    }
    Document document = engine.read(file);
    this.getPlugin().getDomPreprocessor().preprocess(document);
    OfflineMap map = parser.parse(document).orFail();
    map.setDirectory(worldDirectory);
    map.setSettings(file);
    return map;
}
Also used : DOMEngine(pl.themolka.arcade.dom.engine.DOMEngine) FileNotFoundException(java.io.FileNotFoundException) Document(pl.themolka.arcade.dom.Document) File(java.io.File) ParserNotSupportedException(pl.themolka.arcade.parser.ParserNotSupportedException)

Example 2 with DOMEngine

use of pl.themolka.arcade.dom.engine.DOMEngine in project Arcade2 by ShootGame.

the class SimpleGameManager method createGame.

@Override
public Game createGame(OfflineMap map) throws DOMException, IOException {
    File file = map.getSettings();
    DOMEngine engine = this.plugin.getDomEngines().forFile(file);
    Parser<MapManifest> parser;
    try {
        parser = this.plugin.getParsers().forType(MapManifest.class);
    } catch (ParserNotSupportedException ex) {
        throw new RuntimeException("No " + MapManifest.class.getSimpleName() + " parser installed");
    }
    Document document = engine.read(file);
    this.plugin.getDomPreprocessor().preprocess(document);
    ArcadeMap realMap = new ArcadeMap(map, parser.parse(document).orFail());
    WorldNameGenerator worldNameGenerator = new WorldNameGenerator(map);
    realMap.setWorldName(worldNameGenerator.nextWorldName());
    return this.createGame(realMap);
}
Also used : DOMEngine(pl.themolka.arcade.dom.engine.DOMEngine) WorldNameGenerator(pl.themolka.arcade.map.WorldNameGenerator) ArcadeMap(pl.themolka.arcade.map.ArcadeMap) MapManifest(pl.themolka.arcade.map.MapManifest) Document(pl.themolka.arcade.dom.Document) File(java.io.File) ParserNotSupportedException(pl.themolka.arcade.parser.ParserNotSupportedException)

Aggregations

File (java.io.File)2 Document (pl.themolka.arcade.dom.Document)2 DOMEngine (pl.themolka.arcade.dom.engine.DOMEngine)2 ParserNotSupportedException (pl.themolka.arcade.parser.ParserNotSupportedException)2 FileNotFoundException (java.io.FileNotFoundException)1 ArcadeMap (pl.themolka.arcade.map.ArcadeMap)1 MapManifest (pl.themolka.arcade.map.MapManifest)1 WorldNameGenerator (pl.themolka.arcade.map.WorldNameGenerator)1