Search in sources :

Example 21 with Node

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

the class FireworkEffectParser method parseTree.

@Override
protected ParserResult<FireworkEffect> parseTree(Node node, String name) throws ParserException {
    FireworkEffect.Builder builder = FireworkEffect.builder().with(this.typeParser.parse(node.property("type", "of")).orDefault(FireworkEffect.Type.BALL)).flicker(this.flickerParser.parse(node.property("flicker")).orDefault(false)).trail(this.trailParser.parse(node.property("trail")).orDefault(false));
    boolean colorsDefined = false;
    for (Node color : node.children("color")) {
        builder.withColor(this.colorParser.parse(color).orFail());
        colorsDefined = true;
    }
    if (!colorsDefined) {
        throw this.fail(node, name, null, "No colors defined");
    }
    for (Node fadeColor : node.children("fade-color", "fadecolor", "fade")) {
        builder.withFade(this.fadeColorParser.parse(fadeColor).orFail());
    }
    return ParserResult.fine(node, name, builder.build());
}
Also used : Node(pl.themolka.arcade.dom.Node) FireworkEffect(org.bukkit.FireworkEffect)

Example 22 with Node

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

the class ModulesInfoParser method parseTree.

@Override
protected ParserResult<ModulesInfo> parseTree(Node node, String name) throws ParserException {
    List<IGameModuleConfig<?>> configs = new ArrayList<>();
    for (GameModuleParser<?, ?> parser : this.moduleParsers) {
        Node definedNode = parser.define(node);
        if (definedNode != null) {
            configs.add(parser.parse(definedNode).orFail());
        }
    }
    ModulesInfo info = new ModulesInfo();
    info.setConfigs(configs);
    return ParserResult.fine(node, name, info);
}
Also used : Node(pl.themolka.arcade.dom.Node) ArrayList(java.util.ArrayList) IGameModuleConfig(pl.themolka.arcade.game.IGameModuleConfig)

Example 23 with Node

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

the class OfflineMapParser method parseTree.

@Override
protected ParserResult<OfflineMap> parseTree(Node node, String name) throws ParserException {
    Property fileVersionProperty = node.property("fileversion", "file-version", "ver", "version", "proto", "manifest");
    MapFileVersion fileVersion = this.fileVersionParser.parse(fileVersionProperty).orDefault(MapFileVersions.NEWEST);
    Node nameNode = node.firstChild("name");
    Node versionNode = node.firstChild("version", "ver");
    if (nameNode == null || versionNode == null) {
        throw new ParserException(node, MISSING_NAME_VERSION);
    }
    String mapName = this.nameParser.parse(nameNode).orFail();
    MapVersion version = this.versionParser.parse(versionNode).orFail();
    String description = this.descriptionParser.parse(node.firstChild("description", "objective", "goal", "about")).orNull();
    int mapNameLength = mapName.length();
    if (mapNameLength < OfflineMap.NAME_MIN_LENGTH) {
        throw this.fail(nameNode, nameNode.getName(), nameNode.getValue(), "Map name is shorter than " + OfflineMap.NAME_MIN_LENGTH + " characters");
    } else if (mapNameLength > OfflineMap.NAME_MAX_LENGTH) {
        throw this.fail(nameNode, nameNode.getName(), nameNode.getValue(), "Map name is longer than " + OfflineMap.NAME_MAX_LENGTH + " characters");
    }
    List<Author> authors = this.parseAuthors(node);
    Node authorsNode = node.firstChild("authors", "contributors", "teams");
    if (authorsNode != null) {
        authors.addAll(this.parseAuthors(authorsNode));
    }
    List<Changelog> changelogs = new ArrayList<>();
    Node changelogsNode = node.firstChild("changelog", "change-log", "changes");
    if (changelogsNode != null) {
        changelogs.addAll(this.parseChangelogs(changelogsNode));
    }
    return ParserResult.fine(node, name, new OfflineMap(fileVersion, mapName, version, description, authors, changelogs));
}
Also used : ParserException(pl.themolka.arcade.parser.ParserException) Node(pl.themolka.arcade.dom.Node) ArrayList(java.util.ArrayList) Property(pl.themolka.arcade.dom.Property)

Example 24 with Node

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

the class Settings method setDocument.

public void setDocument(Document document) throws ParserException, ParserNotSupportedException {
    this.document = document;
    Node root = document.getRoot();
    if (root != null) {
        this.setup(root);
    }
}
Also used : Node(pl.themolka.arcade.dom.Node)

Example 25 with Node

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

the class ScoreGameParser method parseNode.

@Override
protected ParserResult<ScoreGame.Config> parseNode(Node node, String name, String value) throws ParserException {
    Set<Score.Config> scores = new LinkedHashSet<>();
    for (Node scoreNode : node.children("score")) {
        scores.add(this.scoreParser.parse(scoreNode).orFail());
    }
    if (ParserUtils.ensureNotEmpty(scores)) {
        throw this.fail(node, name, value, "No scores defined");
    }
    Set<ScoreBox.Config> scoreBoxes = new LinkedHashSet<>();
    for (Node scoreBoxNode : node.children("score-box", "scorebox")) {
        scoreBoxes.add(this.scoreBoxParser.parse(scoreBoxNode).orFail());
    }
    return ParserResult.fine(node, name, value, new ScoreGame.Config() {

        public Ref<Set<Score.Config>> scores() {
            return Ref.ofProvided(scores);
        }

        public Ref<Set<ScoreBox.Config>> scoreBoxes() {
            return Ref.ofProvided(scoreBoxes);
        }
    });
}
Also used : LinkedHashSet(java.util.LinkedHashSet) Ref(pl.themolka.arcade.config.Ref) Node(pl.themolka.arcade.dom.Node)

Aggregations

Node (pl.themolka.arcade.dom.Node)25 ArrayList (java.util.ArrayList)7 Property (pl.themolka.arcade.dom.Property)7 File (java.io.File)2 InvalidPathException (java.nio.file.InvalidPathException)2 LinkedHashSet (java.util.LinkedHashSet)2 List (java.util.List)2 Ref (pl.themolka.arcade.config.Ref)2 Document (pl.themolka.arcade.dom.Document)2 ParserException (pl.themolka.arcade.parser.ParserException)2 ParserNotSupportedException (pl.themolka.arcade.parser.ParserNotSupportedException)2 FilenameFilter (java.io.FilenameFilter)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 Path (java.nio.file.Path)1 HashSet (java.util.HashSet)1 Set (java.util.Set)1 CopyOnWriteArrayList (java.util.concurrent.CopyOnWriteArrayList)1 FireworkEffect (org.bukkit.FireworkEffect)1 Material (org.bukkit.Material)1