Package com.barrybecker4.game.multiplayer.galactic.ui.renderers

Source Code of com.barrybecker4.game.multiplayer.galactic.ui.renderers.GalaxyRenderer

/** Copyright by Barry G. Becker, 2000-2011. Licensed under MIT License: http://www.opensource.org/licenses/MIT  */
package com.barrybecker4.game.multiplayer.galactic.ui.renderers;

import com.barrybecker4.common.geometry.Location;
import com.barrybecker4.game.common.board.Board;
import com.barrybecker4.game.common.player.Player;
import com.barrybecker4.game.common.player.PlayerList;
import com.barrybecker4.game.common.ui.viewer.GameBoardRenderer;
import com.barrybecker4.game.multiplayer.common.ui.MultiGameBoardRenderer;
import com.barrybecker4.game.multiplayer.galactic.Order;
import com.barrybecker4.game.multiplayer.galactic.player.GalacticPlayer;

import java.awt.*;
import java.awt.geom.Point2D;


/**
* Singleton class that takes a game board and renders it for the GameBoardViewer.
* Having the board renderer separate from the viewer helps to separate out the rendering logic
* from other features of the GameBoardViewer.
*
* @author Barry Becker
*/
public class GalaxyRenderer extends MultiGameBoardRenderer {

    private  static GameBoardRenderer renderer_;

    /**
     * private constructor because this class is a singleton.
     * Use getRenderer instead
     */
    private GalaxyRenderer() {
        pieceRenderer_ = PlanetRenderer.getRenderer();
    }

    public static GameBoardRenderer getRenderer() {
        if (renderer_ == null)
            renderer_ = new GalaxyRenderer();
        return renderer_;
    }


    @Override
    protected int getPreferredCellSize() {
        return 16;
    }

    /**
     * Draw the pieces and possibly other game markers for both players.
     */
    @Override
    protected void drawMarkers(Board board, PlayerList players, Graphics2D g2 ) {

        // before we draw the planets, draw the fleets and their paths
        for (final Player player : players) {
            for (Order order : ((GalacticPlayer) player).getOrders()) {

                int margin = getMargin();

                Location begin = order.getOrigin().getLocation();
                Point2D end = order.getCurrentLocation();

                g2.setColor(order.getOwner().getColor());
                int beginX = (int) (margin + cellSize * (begin.getCol() - 0.5));
                int beginY = (int) (margin + cellSize * begin.getRow() - 0.5);
                int endX = (int) (margin + cellSize * (end.getX() - 0.5));
                int endY = (int) (margin + cellSize * (end.getY() - 0.5));

                g2.drawLine(beginX, beginY, endX, endY);

                // the glyph at the end of the line representing the fleet
                int rad = (int) Math.round(Math.sqrt(order.getFleetSize()));
                g2.drawOval((int) (endX - rad / 2.0), (int) (endY - rad / 2.0), rad, rad);
            }
        }

        // now draw the planets on top
        super.drawMarkers(board, players, g2);
    }

}

TOP

Related Classes of com.barrybecker4.game.multiplayer.galactic.ui.renderers.GalaxyRenderer

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.