Package com.jcloisterzone.ui.grid.layer

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

package com.jcloisterzone.ui.grid.layer;

import java.awt.Color;
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.Tile;
import com.jcloisterzone.ui.grid.GridPanel;

public class TileLayer extends AbstractGridLayer {

    //keep own copy of tiles in Swing thread to prevent concurent modification ex. of tile list on game
    private List<Tile> placedTiles = new ArrayList<>();


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

    @Override
    public void paint(Graphics2D g2) {
        //TODO nice shadow
        if (!getClient().getGridPanel().isLayerVisible(AbstractTilePlacementLayer.class)) {
            g2.setColor(Color.WHITE);
            int squareSize = getSquareSize(),
                thickness = squareSize / 11;
            for (Tile tile : placedTiles) {
                Position p = tile.getPosition();
                if (tile.getPosition() != null) { //threading, tile can be removed
                    int x = getOffsetX(p), y = getOffsetY(p);
                    g2.fillRect(x-thickness, y-thickness, squareSize+2*thickness, squareSize+2*thickness);
                }
            }
        }

        for (Tile tile : placedTiles) {
            if (tile.getPosition() != null) {
                Image img = getClient().getResourceManager().getTileImage(tile);
                g2.drawImage(img, getAffineTransform(img.getWidth(null), tile.getPosition(), tile.getRotation()), null);
            }
        }
    }

    public void tilePlaced(Tile tile) {
        placedTiles.add(tile);
    }

    public void tileRemoved(Tile tile) {
        placedTiles.remove(tile);
    }



}
TOP

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

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.