net.sf.freecol.common.model
Class SimpleCombatModel

java.lang.Object
  extended by net.sf.freecol.common.model.CombatModel
      extended by net.sf.freecol.common.model.SimpleCombatModel

public class SimpleCombatModel
extends CombatModel

This class implements the original Colonization combat model. Note that the damage part of any CombatResult is ignored throughout.


Nested Class Summary
 
Nested classes/interfaces inherited from class net.sf.freecol.common.model.CombatModel
CombatModel.CombatOdds, CombatModel.CombatResult
 
Field Summary
static java.lang.String AMPHIBIOUS_ATTACK
           
static java.lang.String ARTILLERY_AGAINST_RAID
           
static java.lang.String ARTILLERY_IN_THE_OPEN
           
static java.lang.String ATTACK_BONUS
           
static java.lang.String BIG_MOVEMENT_PENALTY
           
static java.lang.String BOMBARD_BONUS
           
static java.lang.String FORTIFIED
           
private static java.util.logging.Logger logger
           
static int MAXIMUM_BOMBARD_POWER
           
static java.lang.String SMALL_MOVEMENT_PENALTY
           
static Modifier UNKNOWN_DEFENCE_MODIFIER
           
 
Constructor Summary
SimpleCombatModel()
           
 
Method Summary
private  void addLandDefensiveModifiers(FreeColGameObject attacker, FreeColGameObject defender, java.util.Set<Modifier> result)
          Add all the defensive modifiers that apply to a land attack.
private  void addLandOffensiveModifiers(FreeColGameObject attacker, FreeColGameObject defender, java.util.Set<Modifier> result)
          Add all the offensive modifiers that apply to a land attack.
private  void addNavalDefensiveModifiers(FreeColGameObject defender, java.util.Set<Modifier> result)
          Add all the defensive modifiers that apply to a naval attack.
private  void addNavalOffensiveModifiers(Unit attacker, java.util.Set<Modifier> result)
          Add all the offensive modifiers that apply to a naval attack.
 CombatModel.CombatOdds calculateCombatOdds(FreeColGameObject attacker, FreeColGameObject defender)
          Calculates the odds of success in combat.
 java.util.List<CombatModel.CombatResult> generateAttackResult(java.util.Random random, FreeColGameObject attacker, FreeColGameObject defender)
          Generates a result of a unit attacking.
 float getDefencePower(FreeColGameObject attacker, FreeColGameObject defender)
          Get the defensive power wrt an attacker.
 java.util.Set<Modifier> getDefensiveModifiers(FreeColGameObject attacker, FreeColGameObject defender)
          Collect all defensive modifiers when defending against an attack.
 float getOffencePower(FreeColGameObject attacker, FreeColGameObject defender)
          Get the offensive power of a unit attacking another.
 java.util.Set<Modifier> getOffensiveModifiers(FreeColGameObject attacker, FreeColGameObject defender)
          Collect all the offensive modifiers that apply to an attack.
private  boolean isAmbush(FreeColGameObject attacker, FreeColGameObject defender)
          Could this attack be an ambush?
private  boolean isBeached(Unit unit)
          Is a unit a beached ship?
private  void resolveAttack(Unit winner, Unit loser, boolean great, float r, java.util.List<CombatModel.CombatResult> crs)
          Resolve all the consequences of a normal attack.
 
Methods inherited from class net.sf.freecol.common.model.CombatModel
combatIsAmphibious, combatIsAttack, combatIsAttackMeasurement, combatIsBombard, combatIsDefenceMeasurement, combatIsSettlementAttack
 
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

MAXIMUM_BOMBARD_POWER

public static final int MAXIMUM_BOMBARD_POWER
See Also:
Constant Field Values

SMALL_MOVEMENT_PENALTY

public static final java.lang.String SMALL_MOVEMENT_PENALTY
See Also:
Constant Field Values

BIG_MOVEMENT_PENALTY

public static final java.lang.String BIG_MOVEMENT_PENALTY
See Also:
Constant Field Values

ARTILLERY_IN_THE_OPEN

public static final java.lang.String ARTILLERY_IN_THE_OPEN
See Also:
Constant Field Values

ATTACK_BONUS

public static final java.lang.String ATTACK_BONUS
See Also:
Constant Field Values

FORTIFIED

public static final java.lang.String FORTIFIED
See Also:
Constant Field Values

ARTILLERY_AGAINST_RAID

public static final java.lang.String ARTILLERY_AGAINST_RAID
See Also:
Constant Field Values

AMPHIBIOUS_ATTACK

public static final java.lang.String AMPHIBIOUS_ATTACK
See Also:
Constant Field Values

BOMBARD_BONUS

public static final java.lang.String BOMBARD_BONUS
See Also:
Constant Field Values

UNKNOWN_DEFENCE_MODIFIER

public static final Modifier UNKNOWN_DEFENCE_MODIFIER
Constructor Detail

SimpleCombatModel

public SimpleCombatModel()
Method Detail

calculateCombatOdds

public CombatModel.CombatOdds calculateCombatOdds(FreeColGameObject attacker,
                                                  FreeColGameObject defender)
Calculates the odds of success in combat.

Specified by:
calculateCombatOdds in class CombatModel
Parameters:
attacker - The attacker.
defender - The defender.
Returns:
The combat odds.

getOffencePower

public float getOffencePower(FreeColGameObject attacker,
                             FreeColGameObject defender)
Get the offensive power of a unit attacking another.

Specified by:
getOffencePower in class CombatModel
Parameters:
attacker - The attacker.
defender - The defender.
Returns:
The offensive power.

getDefencePower

public float getDefencePower(FreeColGameObject attacker,
                             FreeColGameObject defender)
Get the defensive power wrt an attacker.

Specified by:
getDefencePower in class CombatModel
Parameters:
attacker - The attacker.
defender - The defender.
Returns:
The defensive power.

getOffensiveModifiers

public java.util.Set<Modifier> getOffensiveModifiers(FreeColGameObject attacker,
                                                     FreeColGameObject defender)
Collect all the offensive modifiers that apply to an attack.

Specified by:
getOffensiveModifiers in class CombatModel
Parameters:
attacker - The attacker.
defender - The defender.
Returns:
All the applicable offensive modifiers.

addNavalOffensiveModifiers

private void addNavalOffensiveModifiers(Unit attacker,
                                        java.util.Set<Modifier> result)
Add all the offensive modifiers that apply to a naval attack.

Parameters:
attacker - The attacker.
result - The set of modifiers to add to.

addLandOffensiveModifiers

private void addLandOffensiveModifiers(FreeColGameObject attacker,
                                       FreeColGameObject defender,
                                       java.util.Set<Modifier> result)
Add all the offensive modifiers that apply to a land attack.

Parameters:
attacker - The attacker.
defender - The defender.
result - The set of modifiers to add to.

getDefensiveModifiers

public java.util.Set<Modifier> getDefensiveModifiers(FreeColGameObject attacker,
                                                     FreeColGameObject defender)
Collect all defensive modifiers when defending against an attack.

Specified by:
getDefensiveModifiers in class CombatModel
Parameters:
attacker - The attacker.
defender - The defender.
Returns:
All the applicable defensive modifiers.

addNavalDefensiveModifiers

private void addNavalDefensiveModifiers(FreeColGameObject defender,
                                        java.util.Set<Modifier> result)
Add all the defensive modifiers that apply to a naval attack.

Parameters:
defender - The defender.
result - The set of modifiers to add to.

addLandDefensiveModifiers

private void addLandDefensiveModifiers(FreeColGameObject attacker,
                                       FreeColGameObject defender,
                                       java.util.Set<Modifier> result)
Add all the defensive modifiers that apply to a land attack.

Parameters:
attacker - The attacker.
defender - The defender.
result - The set of modifiers to add to.

generateAttackResult

public java.util.List<CombatModel.CombatResult> generateAttackResult(java.util.Random random,
                                                                     FreeColGameObject attacker,
                                                                     FreeColGameObject defender)
Generates a result of a unit attacking. Takes care to only call the pseudo-random source *once*.

Specified by:
generateAttackResult in class CombatModel
Parameters:
random - A pseudo-random number source.
attacker - The attacker.
defender - The defender.
Returns:
The results of the combat.

resolveAttack

private void resolveAttack(Unit winner,
                           Unit loser,
                           boolean great,
                           float r,
                           java.util.List<CombatModel.CombatResult> crs)
Resolve all the consequences of a normal attack.

Parameters:
winner - The winning Unit.
loser - The losing Unit.
great - True if this is a great win/loss.
r - A "residual" random value (for convert/burn mission).
crs - A list of CombatResults to add to.

isAmbush

private boolean isAmbush(FreeColGameObject attacker,
                         FreeColGameObject defender)
Could this attack be an ambush?

Parameters:
attacker - The attacker.
defender - The defender.
Returns:
True if the attack can be an ambush.

isBeached

private boolean isBeached(Unit unit)
Is a unit a beached ship?

Parameters:
unit - The Unit to test.
Returns:
True if the unit is a beached ship.