net.sf.colossus.variant
Class MasterBoardTerrain

java.lang.Object
  extended by net.sf.colossus.variant.MasterBoardTerrain
All Implemented Interfaces:
java.lang.Comparable<MasterBoardTerrain>

public class MasterBoardTerrain
extends java.lang.Object
implements java.lang.Comparable<MasterBoardTerrain>

A master board terrain. This class describes a terrain on the master board, including its name, color and the layout of a generic battle land. It can occur multiple times on a master board layout attached to the MasterHex class. Battle land information could probably split out into another class, which could then be immutable.


Field Summary
private  java.util.Set<MasterBoardTerrain> aliases
          The other MasterBoardTerrain using the same recruit tree
private  BattleHex[][] battleHexes
           
private  java.awt.Color color
           
private  java.lang.String displayName
          The name displayed on the Masterboard.
private  BattleHex[] entrances
           
private  java.util.Map<HazardTerrain,java.lang.Integer> hazardNumberMap
           
private  java.util.Map<java.lang.Character,java.lang.Integer> hazardSideNumberMap
           
private  java.util.Map<HazardHexside,java.lang.Integer> hexsideHazardNumberMap
           
private  java.lang.String id
          The (unique) identifier of this terrain.
private  boolean isAlias
          Whether this terrain uses another Terrain recruit tree.
private  boolean isTower
          Whether this is a Tower-like building, with regards to starting the game, not recruiting or defender entering in a non-default location on the Battlemap.
private static java.util.logging.Logger LOGGER
           
(package private)  IRecruiting recruitingSubTree
          The recruiting tree of this terrain
private  java.util.List<java.lang.String> startList
          TODO this should be a List ...
private  java.lang.String subtitle
          Subtitle, for the Battlelands.
 
Constructor Summary
MasterBoardTerrain(java.lang.String id, java.lang.String displayName, java.awt.Color color)
           
MasterBoardTerrain(java.lang.String id, java.lang.String displayName, java.awt.Color color, boolean isAlias)
           
 
Method Summary
 void addAlias(MasterBoardTerrain t)
           
 int compareTo(MasterBoardTerrain m)
           
 boolean equals(java.lang.Object obj)
           
 java.util.Set<MasterBoardTerrain> getAliases()
           
 java.awt.Color getColor()
           
 java.lang.String getDisplayName()
           
 BattleHex getEntrance(EntrySide entrySide)
           
 int getHazardCount(HazardTerrain terrain)
           
 int getHazardHexsideCount(HazardHexside hazard)
           
 int getHazardSideCount(char hazardSide)
           
 BattleHex getHexByLabel(java.lang.String label)
          Look for the Hex matching the Label in this terrain.
 java.lang.String getId()
           
 IRecruiting getRecruitingSubTree()
           
 java.util.List<java.lang.String> getStartList()
           
 java.lang.String getSubtitle()
           
 int hashCode()
           
 boolean hasNativeCombatBonus(CreatureType creature)
           
 boolean hasStartList()
           
 boolean isAlias()
           
 boolean isTower()
           
 void setHazardNumberMap(java.util.Map<HazardTerrain,java.lang.Integer> hazardNumberMap)
           
 void setHazardSideNumberMap(java.util.Map<java.lang.Character,java.lang.Integer> hazardSideNumberMap)
           
 void setHexsideHazardNumberMap(java.util.Map<HazardHexside,java.lang.Integer> hexsideHazardNumberMap)
           
 void setRecruitingSubTree(IRecruiting rst)
           
 void setStartList(java.util.List<java.lang.String> startList)
           
 void setSubtitle(java.lang.String s)
           
 void setTower(boolean isTower)
           
private  void setupEntrances()
           
private  void setupHexArrays()
           
private  void setupHexesGameState()
          Add terrain, hexsides, elevation, and exits to hexes.
private  void setupNeighbors()
          Add references to neighbor hexes.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOGGER

private static final java.util.logging.Logger LOGGER

id

private final java.lang.String id
The (unique) identifier of this terrain. Should also be used for all Battlelands purpose.


displayName

private final java.lang.String displayName
The name displayed on the Masterboard. Should also be used for all recruiting purpose. WARNING: this is not done that way yet. It shoud be, so that a single name on the Masterboard will represent a single recruiting branch, even if it' backed by several different Battlelands. This would also remove a lot of duplicated entries in the Full Recruit Tree. WIP. ADDITIONAL WARNING: What about variant such as Balrog? The recruitment is Hex-specific, not Terrain-specific...


subtitle

private java.lang.String subtitle
Subtitle, for the Battlelands. Cosmetic only, but nice


color

private final java.awt.Color color

startList

private java.util.List<java.lang.String> startList
TODO this should be a List ... or a List ??? If non-null, this is the list of hexes a defending legion will start in, in a similar way to the Tower in the Default variant.


isTower

private boolean isTower
Whether this is a Tower-like building, with regards to starting the game, not recruiting or defender entering in a non-default location on the Battlemap.


hazardNumberMap

private java.util.Map<HazardTerrain,java.lang.Integer> hazardNumberMap

hazardSideNumberMap

private java.util.Map<java.lang.Character,java.lang.Integer> hazardSideNumberMap

hexsideHazardNumberMap

private java.util.Map<HazardHexside,java.lang.Integer> hexsideHazardNumberMap

aliases

private final java.util.Set<MasterBoardTerrain> aliases
The other MasterBoardTerrain using the same recruit tree


isAlias

private final boolean isAlias
Whether this terrain uses another Terrain recruit tree.


battleHexes

private final BattleHex[][] battleHexes

entrances

private final BattleHex[] entrances

recruitingSubTree

IRecruiting recruitingSubTree
The recruiting tree of this terrain

Constructor Detail

MasterBoardTerrain

public MasterBoardTerrain(java.lang.String id,
                          java.lang.String displayName,
                          java.awt.Color color,
                          boolean isAlias)

MasterBoardTerrain

public MasterBoardTerrain(java.lang.String id,
                          java.lang.String displayName,
                          java.awt.Color color)
Method Detail

setupHexArrays

private void setupHexArrays()

setupEntrances

private void setupEntrances()

setupNeighbors

private void setupNeighbors()
Add references to neighbor hexes.


getEntrance

public BattleHex getEntrance(EntrySide entrySide)

setupHexesGameState

private void setupHexesGameState()
Add terrain, hexsides, elevation, and exits to hexes. Cliffs are bidirectional; other hexside obstacles are noted only on the high side, since they only interfere with uphill movement.


getHexByLabel

public BattleHex getHexByLabel(java.lang.String label)
Look for the Hex matching the Label in this terrain.


setRecruitingSubTree

public void setRecruitingSubTree(IRecruiting rst)

getRecruitingSubTree

public IRecruiting getRecruitingSubTree()

compareTo

public int compareTo(MasterBoardTerrain m)
Specified by:
compareTo in interface java.lang.Comparable<MasterBoardTerrain>

addAlias

public void addAlias(MasterBoardTerrain t)

isAlias

public boolean isAlias()

getAliases

public java.util.Set<MasterBoardTerrain> getAliases()

getId

public java.lang.String getId()

getDisplayName

public java.lang.String getDisplayName()

getSubtitle

public java.lang.String getSubtitle()

setSubtitle

public void setSubtitle(java.lang.String s)

getColor

public java.awt.Color getColor()

hasNativeCombatBonus

public boolean hasNativeCombatBonus(CreatureType creature)

setStartList

public void setStartList(java.util.List<java.lang.String> startList)

getStartList

public java.util.List<java.lang.String> getStartList()

setTower

public void setTower(boolean isTower)

isTower

public boolean isTower()

hasStartList

public boolean hasStartList()

setHazardNumberMap

public void setHazardNumberMap(java.util.Map<HazardTerrain,java.lang.Integer> hazardNumberMap)

getHazardCount

public int getHazardCount(HazardTerrain terrain)

setHazardSideNumberMap

public void setHazardSideNumberMap(java.util.Map<java.lang.Character,java.lang.Integer> hazardSideNumberMap)

getHazardSideCount

public int getHazardSideCount(char hazardSide)

setHexsideHazardNumberMap

public void setHexsideHazardNumberMap(java.util.Map<HazardHexside,java.lang.Integer> hexsideHazardNumberMap)

getHazardHexsideCount

public int getHazardHexsideCount(HazardHexside hazard)

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

equals

public boolean equals(java.lang.Object obj)
Overrides:
equals in class java.lang.Object