Package com.jcloisterzone.ui.grid.layer

Source Code of com.jcloisterzone.ui.grid.layer.CastleLayer$DeployedCastle

package com.jcloisterzone.ui.grid.layer;

import java.awt.Graphics2D;
import java.awt.Image;
import java.util.ArrayList;
import java.util.List;

import com.jcloisterzone.board.Position;
import com.jcloisterzone.board.Rotation;
import com.jcloisterzone.feature.Castle;
import com.jcloisterzone.ui.grid.GridPanel;

public class CastleLayer extends AbstractGridLayer {

    private static class DeployedCastle {
        Position position;
        Rotation rotation;

        public DeployedCastle(Position position, Rotation rotation) {
            this.position = position;
            this.rotation = rotation;
        }
    }

    private List<DeployedCastle> castles = new ArrayList<>();
    private Image castleImage;

    public CastleLayer(GridPanel gridPanel) {
        super(gridPanel);
        castleImage = getClient().getFigureTheme().getNeutralImage("castle");
    }

    public void castleDeployed(Castle castle1, Castle castle2) {
        Position p1 = castle1.getTile().getPosition();
        Position p2 = castle2.getTile().getPosition();
        Position pos;
        Rotation rot;

        if (p1.x == p2.x) {
            pos = p1.y < p2.y ? p1 : p2;
            rot = Rotation.R0;
        } else {
            pos = p1.x < p2.x ? p1 : p2;
            rot = Rotation.R90;
        }
        castles.add(new DeployedCastle(pos, rot));
    }

    @Override
    public void paint(Graphics2D g2) {
        int size = getSquareSize();
        for (DeployedCastle dc : castles) {
            if (dc.rotation == Rotation.R0) {
                g2.drawImage(castleImage, getOffsetX(dc.position), getOffsetY(dc.position) + size/2, size, size, null);
            } else {
//        AffineTransform at = Rotation.R90.getAffineTransform(size);
//        at.concatenate(AffineTransform.getTranslateInstance(getOffsetX(dc.position) + size/2, getOffsetY(dc.position)));
//        g2.drawImage(castleImage, at, null);

                //TODO rotated
                g2.drawImage(castleImage, getOffsetX(dc.position) + size/2, getOffsetY(dc.position), size, size, null);
            }
        }
    }
}
TOP

Related Classes of com.jcloisterzone.ui.grid.layer.CastleLayer$DeployedCastle

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.