net.sf.colossus.server
Class CreatureServerSide

java.lang.Object
  extended by net.sf.colossus.game.Creature
      extended by net.sf.colossus.server.CreatureServerSide
All Implemented Interfaces:
BattleCritter

public class CreatureServerSide
extends Creature
implements BattleCritter

Class Critter represents an individual Titan Character. TODO this duplicates functionality from the CreatureType class, mostly due to the fact that the latter doesn't handle the Titans properly TODO a lot of the code in here is about the battle rules, often implemented in combination with the Battle class. It would be much easier if this class was just a dumb critter and the rules of battles are all in the Battle class.

Author:
David Ripton, Romain Dolbeau

Field Summary
private  BattleServerSide battle
           
private  boolean carryPossible
           
private  GameServerSide game
          The game this creature belongs to.
private static java.util.logging.Logger LOGGER
           
private  java.util.SortedSet<PenaltyOption> penaltyOptions
           
private  int tag
          Unique identifier for each critter.
private static int tagCounter
          Counter used to assign unique tags.
 
Fields inherited from class net.sf.colossus.game.Creature
IMPORTANCE_ORDER, legion
 
Constructor Summary
CreatureServerSide(CreatureType creature, Legion legion, GameServerSide game)
           
 
Method Summary
(package private)  void assignStrikePenalty(java.lang.String prompt)
          Side effects.
(package private)  boolean canStrike(Creature target)
           
(package private)  void findCarries(CreatureServerSide target)
          Side effects on penaltyOptions, Battle.carryTargets
private  void findCarry(CreatureServerSide target, BattleHex neighbor)
          For a strike on target, find any carries (including those only allowed via strike penalty) to the creature in neighbor Side effects on penaltyOptions, Battle.carryTargets
 Game getGame()
           
(package private)  java.util.Set<PenaltyOption> getPenaltyOptions()
           
 int getTag()
           
 int hashCode()
           
 boolean isDefender()
           
private  PenaltyOption matchingPenaltyOption(java.lang.String prompt)
          Return true if the passed prompt matches one of the stored penalty options.
private  boolean possibleCarryToDir(BattleHex targetHex, int dir)
          Return true if carries are possible to the hex in direction dir, considering only terrain.
(package private)  void setBattleInfo(BattleHex currentHex, BattleHex startingHex, BattleServerSide battle)
           
(package private)  void setLegion(LegionServerSide legion)
           
(package private)  void strike(CreatureServerSide target)
          Calculate number of dice and strike number needed to hit target, and whether any carries and strike penalties are possible.
private  void strike2(CreatureServerSide target, int dice, int strikeNumber)
          Called after strike penalties are chosen.
 java.lang.String toString()
           
(package private)  void undoMove()
           
 
Methods inherited from class net.sf.colossus.game.Creature
commitMove, getCurrentHex, getDescription, getHits, getImageNames, getLegion, getMarkerId, getMaxCount, getName, getPlayer, getPluralName, getPointValue, getPower, getSkill, getStartingHex, getStrikingPower, getStrikingSkill, getTitanPower, getType, hasMoved, hasStruck, heal, isDead, isDemiLord, isFlier, isImmortal, isLord, isLordOrDemiLord, isNativeAt, isNativeIn, isRangestriker, isSummonable, isTitan, moveToHex, setCurrentHex, setDead, setHits, setMoved, setStartingHex, setStruck, useMagicMissile, wouldDieFrom, wound
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface net.sf.colossus.game.BattleCritter
getCurrentHex, getDescription, getHits, getPointValue, getPower, getSkill, getStartingHex, getTitanPower, getType, hasMoved, hasStruck, isDead, isDemiLord, isLord, isRangestriker, isTitan, moveToHex, setCurrentHex, setDead, setHits, setMoved, setStruck, useMagicMissile, wouldDieFrom
 

Field Detail

LOGGER

private static final java.util.logging.Logger LOGGER

battle

private BattleServerSide battle

game

private final GameServerSide game
The game this creature belongs to. Never null.


tag

private final int tag
Unique identifier for each critter.


tagCounter

private static int tagCounter
Counter used to assign unique tags.


penaltyOptions

private final java.util.SortedSet<PenaltyOption> penaltyOptions

carryPossible

private boolean carryPossible
Constructor Detail

CreatureServerSide

public CreatureServerSide(CreatureType creature,
                          Legion legion,
                          GameServerSide game)
Method Detail

setBattleInfo

void setBattleInfo(BattleHex currentHex,
                   BattleHex startingHex,
                   BattleServerSide battle)

setLegion

void setLegion(LegionServerSide legion)

getGame

public Game getGame()

getTag

public int getTag()
Specified by:
getTag in interface BattleCritter

isDefender

public boolean isDefender()
Specified by:
isDefender in interface BattleCritter

undoMove

void undoMove()

canStrike

boolean canStrike(Creature target)

strike

void strike(CreatureServerSide target)
Calculate number of dice and strike number needed to hit target, and whether any carries and strike penalties are possible. The actual striking is now deferred to strike2().


assignStrikePenalty

void assignStrikePenalty(java.lang.String prompt)
Side effects.


matchingPenaltyOption

private PenaltyOption matchingPenaltyOption(java.lang.String prompt)
Return true if the passed prompt matches one of the stored penalty options.


findCarries

void findCarries(CreatureServerSide target)
Side effects on penaltyOptions, Battle.carryTargets


possibleCarryToDir

private boolean possibleCarryToDir(BattleHex targetHex,
                                   int dir)
Return true if carries are possible to the hex in direction dir, considering only terrain.


findCarry

private void findCarry(CreatureServerSide target,
                       BattleHex neighbor)
For a strike on target, find any carries (including those only allowed via strike penalty) to the creature in neighbor Side effects on penaltyOptions, Battle.carryTargets


strike2

private void strike2(CreatureServerSide target,
                     int dice,
                     int strikeNumber)
Called after strike penalties are chosen. Roll the dice and apply damage. Highlight legal carry targets.


getPenaltyOptions

java.util.Set<PenaltyOption> getPenaltyOptions()

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

hashCode

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