net.sf.colossus.variant
Class MasterBoard

java.lang.Object
  extended by net.sf.colossus.variant.MasterBoard

public class MasterBoard
extends java.lang.Object

The master board as part of a variant. Instances of this class are immutable.


Field Summary
private  int boardParity
          "parity" of the board, so that hexes are displayed the proper way
private  java.util.Map<java.lang.String,MasterHex> hexByLabelCache
          A cache for faster lookup of hexes using their labels.
private  int horizSize
          The number of hexes in the widest section.
private static java.util.logging.Logger LOGGER
           
private  MasterHex[][] plainHexArray
          TODO do something more OO, don't use arrays, fold show into it somehow (even using null seems better than the split).
private  boolean[][] show
          The hexes in the horizSize*vertSize array that actually exist are represented by true.
private  java.util.Set<MasterHex> towerSet
          A Set of all Tower hexes.
private  int vertSize
          The number of hexes in the tallest section.
 
Constructor Summary
MasterBoard(int horizSize, int vertSize, boolean[][] show, MasterHex[][] plainHexArray)
           
 
Method Summary
private  int computeBoardParity()
           
 java.util.Collection<MasterHex> getAllHexes()
          Return a set of all hex labels.
 java.util.Set<java.lang.String> getAllHexLabels()
          Return a set of all hex labels.
 int getBoardParity()
           
 MasterHex getHexByLabel(java.lang.String label)
          Retrieve a hex by its label.
 int getHorizSize()
           
 MasterHex[][] getPlainHexArray()
           
 boolean[][] getShow()
           
 java.util.Set<MasterHex> getTowerSet()
           
 int getVertSize()
           
private  void initHexByLabelCache()
           
 boolean isHexInverted(int i, int j)
           
private  void setupEntrances(MasterHex[][] h)
           
private  void setupExits(MasterHex[][] h)
           
private  void setupHexLabelSides(MasterHex[][] h)
          If the shortest hexside closest to the center of the board is a short hexside, set the label side to it.
private  void setupNeighbors(MasterHex[][] h)
           
private  void setupOneExit(MasterHex[][] h, int i, int j, int k)
           
private  void setupTowerSet()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOGGER

private static final java.util.logging.Logger LOGGER

horizSize

private final int horizSize
The number of hexes in the widest section.


vertSize

private final int vertSize
The number of hexes in the tallest section.


boardParity

private final int boardParity
"parity" of the board, so that hexes are displayed the proper way


plainHexArray

private final MasterHex[][] plainHexArray
TODO do something more OO, don't use arrays, fold show into it somehow (even using null seems better than the split).


show

private final boolean[][] show
The hexes in the horizSize*vertSize array that actually exist are represented by true.


towerSet

private final java.util.Set<MasterHex> towerSet
A Set of all Tower hexes.


hexByLabelCache

private final java.util.Map<java.lang.String,MasterHex> hexByLabelCache
A cache for faster lookup of hexes using their labels.

Constructor Detail

MasterBoard

public MasterBoard(int horizSize,
                   int vertSize,
                   boolean[][] show,
                   MasterHex[][] plainHexArray)
Method Detail

getBoardParity

public int getBoardParity()

getPlainHexArray

public MasterHex[][] getPlainHexArray()

getShow

public boolean[][] getShow()

getHorizSize

public int getHorizSize()

getVertSize

public int getVertSize()

computeBoardParity

private int computeBoardParity()

setupExits

private void setupExits(MasterHex[][] h)

setupOneExit

private void setupOneExit(MasterHex[][] h,
                          int i,
                          int j,
                          int k)

setupEntrances

private void setupEntrances(MasterHex[][] h)

setupHexLabelSides

private void setupHexLabelSides(MasterHex[][] h)
If the shortest hexside closest to the center of the board is a short hexside, set the label side to it. Else set the label side to the opposite hexside.


isHexInverted

public boolean isHexInverted(int i,
                             int j)

setupNeighbors

private void setupNeighbors(MasterHex[][] h)

initHexByLabelCache

private void initHexByLabelCache()

getHexByLabel

public MasterHex getHexByLabel(java.lang.String label)
Retrieve a hex by its label.

Parameters:
label - The label to find the hex for. Valid label, not null.
Returns:
The label found.

getTowerSet

public java.util.Set<MasterHex> getTowerSet()

setupTowerSet

private void setupTowerSet()

getAllHexLabels

public java.util.Set<java.lang.String> getAllHexLabels()
Return a set of all hex labels.


getAllHexes

public java.util.Collection<MasterHex> getAllHexes()
Return a set of all hex labels.