Package com.jcloisterzone.ui.grid.layer

Source Code of com.jcloisterzone.ui.grid.layer.BridgeLayer

package com.jcloisterzone.ui.grid.layer;

import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Composite;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import com.jcloisterzone.board.Location;
import com.jcloisterzone.board.Position;
import com.jcloisterzone.board.Tile;
import com.jcloisterzone.ui.grid.GridPanel;

public class BridgeLayer extends AbstractGridLayer {

    private static final AlphaComposite BRIDGE_FILL_COMPOSITE = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .6f);
    //private static final AlphaComposite BRIDGE_STROKE_COMPOSITE = AlphaComposite.SrcOver;

    //TODO store direct images as in Meeple layer???
    private Map<Tile, Location> bridges = new HashMap<>();

    private MeepleLayer meepleLayer;

    public BridgeLayer(GridPanel gridPanel) {
        super(gridPanel);
    }





    @Override
    public void paint(Graphics2D g2) {
        Composite oldComposite = g2.getComposite();
//    Stroke oldStroke = g2.getStroke();
//    g2.setStroke(new BasicStroke(getSquareSize() * 0.015f));
        for (Entry<Tile, Location> entry : bridges.entrySet()) {
            //devel code only - use image instead
            Tile tile = entry.getKey();
            Location loc = entry.getValue();
            Position pos = tile.getPosition();
            Area a = getClient().getResourceManager().getBridgeArea(tile, getSquareSize(), loc);
            a.transform(AffineTransform.getTranslateInstance(getOffsetX(pos), getOffsetY(pos)));
            g2.setColor(Color.BLACK);
            g2.setComposite(BRIDGE_FILL_COMPOSITE);
            g2.fill(a);
//      g2.setColor(Color.BLACK);
//      g2.setComposite(BRIDGE_STROKE_COMPOSITE);
//      g2.draw(a);

        }
//    g2.setStroke(oldStroke);
        g2.setComposite(oldComposite);

        meepleLayer.paintMeeplesOnBridges(g2);

    }


    public void bridgeDeployed(Position pos, Location loc) {
        Tile tile = getGame().getBoard().get(pos);
        bridges.put(tile, loc);
    }

    public MeepleLayer getMeepleLayer() {
        return meepleLayer;
    }


    public void setMeepleLayer(MeepleLayer meepleLayer) {
        this.meepleLayer = meepleLayer;
    }
}
TOP

Related Classes of com.jcloisterzone.ui.grid.layer.BridgeLayer

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.