Package com.jcloisterzone.game.capability

Source Code of com.jcloisterzone.game.capability.GermanMonasteriesCapability

package com.jcloisterzone.game.capability;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import org.w3c.dom.Element;

import com.jcloisterzone.action.MeepleAction;
import com.jcloisterzone.action.PlayerAction;
import com.jcloisterzone.board.Location;
import com.jcloisterzone.board.RemoveTileException;
import com.jcloisterzone.board.Tile;
import com.jcloisterzone.board.pointer.FeaturePointer;
import com.jcloisterzone.feature.Cloister;
import com.jcloisterzone.feature.Feature;
import com.jcloisterzone.game.Capability;
import com.jcloisterzone.game.CustomRule;
import com.jcloisterzone.game.Game;

import static com.jcloisterzone.XmlUtils.attributeBoolValue;

public class GermanMonasteriesCapability extends Capability {

     public GermanMonasteriesCapability(Game game) {
        super(game);
    }

    @Override
    public void initFeature(Tile tile, Feature feature, Element xml) {
        if (feature instanceof Cloister) {
            ((Cloister)feature).setMonastery(attributeBoolValue(xml, "monastery"));
        }
    }

    @Override
    public void initTile(Tile tile, Element xml) {
        if (!game.hasRule(CustomRule.KEEP_CLOISTERS)) {
            if (tile.getId().equals("BA.L") || tile.getId().equals("BA.LR")) {
                throw new RemoveTileException();
            }
        }
    }

    @Override
    public void postPrepareActions(List<PlayerAction<?>> actions, Set<FeaturePointer> followerOptions) {
        for (MeepleAction ma : findFollowerActions(actions)) {
            List<FeaturePointer> abbots = new ArrayList<>();
            for (FeaturePointer fp : ma.getOptions()) {
                if (fp.getLocation() == Location.CLOISTER && ((Cloister) getBoard().get(fp)).isMonastery()) {
                    abbots.add(new FeaturePointer(fp.getPosition(), Location.ABBOT));
                }
            }
            ma.addAll(abbots);
        }
    }
}
TOP

Related Classes of com.jcloisterzone.game.capability.GermanMonasteriesCapability

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.