Package net.sf.colossus.game
Class Movement
- java.lang.Object
-
- net.sf.colossus.game.Movement
-
- Direct Known Subclasses:
MovementClientSide
,MovementServerSide
public abstract class Movement extends java.lang.Object
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected static int
findBlock(MasterHex hex)
protected static EntrySide
findEntrySide(MasterHex hex, int cameFrom)
Set the entry side relative to the hex label.protected java.util.Set<MasterHex>
findNearbyUnoccupiedHexes(MasterHex hex, Legion legion, int roll, int cameFrom)
Recursively find all unoccupied hexes within roll hexes, for tower teleport.java.util.Set<java.lang.String>
findNormalMoves(MasterHex hex, Legion legion, int roll, int block, int cameFrom, MasterHex fromHex, boolean ignoreFriends)
Recursively find conventional moves from this hex.java.lang.String
isValidEntrySide(Legion legion, MasterHex hex, boolean teleport, EntrySide entrySide)
Verify whether this is a valid entry side.java.lang.String
isValidNormalMove(Legion legion, MasterHex hex, Player player, int roll)
Verify whether this is a valid normal move.java.lang.String
isValidTeleportMove(Legion legion, MasterHex hex, int roll)
Verify whether this is a valid teleport move.java.util.Set<MasterHex>
listAllMoves(Legion legion, MasterHex hex, int movementRoll)
Return set of hexLabels describing where this legion can move.java.util.Set<MasterHex>
listAllMoves(Legion legion, MasterHex hex, int movementRoll, boolean inAdvance)
Return set of hexLabels describing where this legion can move.java.util.Set<MasterHex>
listNormalMoves(Legion legion, MasterHex hex, int movementRoll)
java.util.Set<MasterHex>
listNormalMoves(Legion legion, MasterHex hex, int movementRoll, boolean ignoreFriends, MasterHex fromHex, boolean inAdvance)
Return set of hexLabels describing where this legion can move without teleporting.java.util.Set<EntrySide>
listPossibleEntrySides(Legion legion, MasterHex targetHex, boolean teleport)
Return a Set of Strings "Left" "Right" or "Bottom" describing possible entry sides.java.util.Set<MasterHex>
listTeleportMoves(Legion legion, MasterHex hex, int movementRoll)
Return set of hexLabels describing where this legion can teleport.protected java.util.Set<MasterHex>
listTeleportMoves(Legion legion, MasterHex hex, int movementRoll, boolean inAdvance)
Return set of hexLabels describing where this legion can teleport.boolean
titanTeleportAllowed()
protected boolean
towerTeleportAllowed()
protected boolean
towerToNonTowerTeleportAllowed()
protected boolean
towerToTowerTeleportAllowed()
-
-
-
Method Detail
-
findEntrySide
protected static EntrySide findEntrySide(MasterHex hex, int cameFrom)
Set the entry side relative to the hex label.
-
findBlock
protected static int findBlock(MasterHex hex)
-
findNearbyUnoccupiedHexes
protected java.util.Set<MasterHex> findNearbyUnoccupiedHexes(MasterHex hex, Legion legion, int roll, int cameFrom)
Recursively find all unoccupied hexes within roll hexes, for tower teleport.
-
titanTeleportAllowed
public boolean titanTeleportAllowed()
-
towerTeleportAllowed
protected boolean towerTeleportAllowed()
-
towerToTowerTeleportAllowed
protected boolean towerToTowerTeleportAllowed()
-
towerToNonTowerTeleportAllowed
protected boolean towerToNonTowerTeleportAllowed()
-
listTeleportMoves
protected java.util.Set<MasterHex> listTeleportMoves(Legion legion, MasterHex hex, int movementRoll, boolean inAdvance)
Return set of hexLabels describing where this legion can teleport.- Returns:
- set of hexlabels
-
listTeleportMoves
public java.util.Set<MasterHex> listTeleportMoves(Legion legion, MasterHex hex, int movementRoll)
Return set of hexLabels describing where this legion can teleport.
-
listPossibleEntrySides
public java.util.Set<EntrySide> listPossibleEntrySides(Legion legion, MasterHex targetHex, boolean teleport)
Return a Set of Strings "Left" "Right" or "Bottom" describing possible entry sides. If the hex is unoccupied, just return one entry side since it doesn't matter.
-
listAllMoves
public java.util.Set<MasterHex> listAllMoves(Legion legion, MasterHex hex, int movementRoll)
Return set of hexLabels describing where this legion can move.
-
listAllMoves
public java.util.Set<MasterHex> listAllMoves(Legion legion, MasterHex hex, int movementRoll, boolean inAdvance)
Return set of hexLabels describing where this legion can move.
-
listNormalMoves
public java.util.Set<MasterHex> listNormalMoves(Legion legion, MasterHex hex, int movementRoll)
-
listNormalMoves
public java.util.Set<MasterHex> listNormalMoves(Legion legion, MasterHex hex, int movementRoll, boolean ignoreFriends, MasterHex fromHex, boolean inAdvance)
Return set of hexLabels describing where this legion can move without teleporting. Include moves currently blocked by friendly legions if ignoreFriends is true.- Returns:
- set of hexlabels
-
findNormalMoves
public java.util.Set<java.lang.String> findNormalMoves(MasterHex hex, Legion legion, int roll, int block, int cameFrom, MasterHex fromHex, boolean ignoreFriends)
Recursively find conventional moves from this hex. If block >= 0, go only that way. If block == -1, use arches and arrows. If block == -2, use only arrows. Do not double back in the direction you just came from. TODO get rid of this String serialization and return a proper data structure- Returns:
- a set of hexLabel:entrySide tuples.
-
isValidTeleportMove
public java.lang.String isValidTeleportMove(Legion legion, MasterHex hex, int roll)
Verify whether this is a valid teleport move.- Parameters:
legion
-hex
-roll
-- Returns:
- Reason why it is not a valid teleport move, null if valid move
-
isValidNormalMove
public java.lang.String isValidNormalMove(Legion legion, MasterHex hex, Player player, int roll)
Verify whether this is a valid normal move.- Parameters:
legion
-hex
-player
-- Returns:
- Reason why it is not a normal move, null if valid move
-
isValidEntrySide
public java.lang.String isValidEntrySide(Legion legion, MasterHex hex, boolean teleport, EntrySide entrySide)
Verify whether this is a valid entry side.- Parameters:
legion
- The moving legionhex
- The aimed target hexteleport
- Whether this is a teleported move- Returns:
- Reason why it is not a valid entry side, null if valid
-
-