Class 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 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.
      • 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()
      • isAlias

        public boolean isAlias()
      • 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