Package net.sf.freecol.common.model
Class CombatModel
- java.lang.Object
-
- net.sf.freecol.common.model.CombatModel
-
- Direct Known Subclasses:
SimpleCombatModel
public abstract class CombatModel extends java.lang.ObjectA abstract requirements for a FreeCol combat model.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classCombatModel.CombatOddsOdds a particular outcome will occur in combat.static classCombatModel.CombatResult
-
Constructor Summary
Constructors Constructor Description CombatModel()Empty constructor is sufficient.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract CombatModel.CombatOddscalculateCombatOdds(FreeColGameObject attacker, FreeColGameObject defender)Calculates the chance of the outcomes of a combat.booleancombatIsAmphibious(FreeColGameObject attacker, FreeColGameObject defender)Could this attack be an amphibious operation?booleancombatIsAttack(FreeColGameObject attacker, FreeColGameObject defender)Is this combat a normal attack?booleancombatIsAttackMeasurement(FreeColGameObject attacker, FreeColGameObject defender)Is this just a measurement of offence power?booleancombatIsBombard(FreeColGameObject attacker, FreeColGameObject defender)Is this combat a bombardment?booleancombatIsDefenceMeasurement(FreeColGameObject attacker, FreeColGameObject defender)Is this just a measurement of defence power?booleancombatIsSettlementAttack(FreeColGameObject attacker, FreeColGameObject defender)Is this combat a attack on a settlement? These happen on the client side only, for the purposes of the pre-combat display.booleancombatIsWarOfIndependence(FreeColGameObject attacker, FreeColGameObject defender)Is this a combat between a rebel player and the REF at a colony?abstract java.util.List<CombatModel.CombatResult>generateAttackResult(java.util.Random random, FreeColGameObject attacker, FreeColGameObject defender)Generates a list of results of an attack.abstract doublegetDefencePower(FreeColGameObject attacker, FreeColGameObject defender)Get the defensive power of a defender wrt an attacker.abstract java.util.Set<Modifier>getDefensiveModifiers(FreeColGameObject attacker, FreeColGameObject defender)Collect all defensive modifiers that apply to a unit defending against another.java.util.Comparator<Unit>getMilitaryStrengthComparator()Get a comparator to order units by relative military strength with respect to this combat model.abstract doublegetOffencePower(FreeColGameObject attacker, FreeColGameObject defender)Get the offensive power of a attacker wrt a defender.abstract java.util.Set<Modifier>getOffensiveModifiers(FreeColGameObject attacker, FreeColGameObject defender)Collect all the offensive modifiers that apply to an attack.
-
-
-
Method Detail
-
combatIsAttackMeasurement
public boolean combatIsAttackMeasurement(FreeColGameObject attacker, FreeColGameObject defender)
Is this just a measurement of offence power?- Parameters:
attacker- The attacker.defender- The defender.- Returns:
- True if no defender is provided.
-
combatIsDefenceMeasurement
public boolean combatIsDefenceMeasurement(FreeColGameObject attacker, FreeColGameObject defender)
Is this just a measurement of defence power?- Parameters:
attacker- The attacker.defender- The defender.- Returns:
- True if no attacker is provided.
-
combatIsAttack
public boolean combatIsAttack(FreeColGameObject attacker, FreeColGameObject defender)
Is this combat a normal attack?- Parameters:
attacker- The attacker.defender- The defender.- Returns:
- True if the combat is a normal attack.
-
combatIsSettlementAttack
public boolean combatIsSettlementAttack(FreeColGameObject attacker, FreeColGameObject defender)
Is this combat a attack on a settlement? These happen on the client side only, for the purposes of the pre-combat display. In these cases the actual defender unit is hidden from the attacker player, so the defender is shown as the settlement itself.- Parameters:
attacker- The attacker.defender- The defender.- Returns:
- True if the combat is a client-side attack on a settlement.
-
combatIsBombard
public boolean combatIsBombard(FreeColGameObject attacker, FreeColGameObject defender)
Is this combat a bombardment?- Parameters:
attacker- The attacker.defender- The defender.- Returns:
- True if the combat is a bombardment.
-
combatIsAmphibious
public boolean combatIsAmphibious(FreeColGameObject attacker, FreeColGameObject defender)
Could this attack be an amphibious operation?- Parameters:
attacker- The attacker.defender- The defender.- Returns:
- True if the attack is amphibious.
-
combatIsWarOfIndependence
public boolean combatIsWarOfIndependence(FreeColGameObject attacker, FreeColGameObject defender)
Is this a combat between a rebel player and the REF at a colony?- Parameters:
attacker- The attacker object.defender- The defender object.- Returns:
- True if the attack is a war of independence battle for a colony.
-
getMilitaryStrengthComparator
public final java.util.Comparator<Unit> getMilitaryStrengthComparator()
Get a comparator to order units by relative military strength with respect to this combat model.- Returns:
- A suitable unit
Comparator.
-
calculateCombatOdds
public abstract CombatModel.CombatOdds calculateCombatOdds(FreeColGameObject attacker, FreeColGameObject defender)
Calculates the chance of the outcomes of a combat.- Parameters:
attacker- The attacker.defender- The defender.- Returns:
- The
CombatOdds.
-
getOffencePower
public abstract double getOffencePower(FreeColGameObject attacker, FreeColGameObject defender)
Get the offensive power of a attacker wrt a defender. Null can be passed for the defender when only the attacker stats are required.- Parameters:
attacker- The attacker.defender- The defender.- Returns:
- The offensive power.
-
getDefencePower
public abstract double getDefencePower(FreeColGameObject attacker, FreeColGameObject defender)
Get the defensive power of a defender wrt an attacker.- Parameters:
attacker- The attacker.defender- The defender.- Returns:
- The defensive power.
-
getOffensiveModifiers
public abstract java.util.Set<Modifier> getOffensiveModifiers(FreeColGameObject attacker, FreeColGameObject defender)
Collect all the offensive modifiers that apply to an attack. Null can be passed as the defender when only the attacker unit stats are required.- Parameters:
attacker- The attacker.defender- The defender.- Returns:
- All the applicable offensive modifiers.
-
getDefensiveModifiers
public abstract java.util.Set<Modifier> getDefensiveModifiers(FreeColGameObject attacker, FreeColGameObject defender)
Collect all defensive modifiers that apply to a unit defending against another.- Parameters:
attacker- The attacker.defender- The defender.- Returns:
- All the applicable defensive modifiers.
-
generateAttackResult
public abstract java.util.List<CombatModel.CombatResult> generateAttackResult(java.util.Random random, FreeColGameObject attacker, FreeColGameObject defender)
Generates a list of results of an attack. The first must be one of NO_RESULT, LOSE or WIN. The rest can be any other CombatResult suitable to the situation. To be called by the server only.- Parameters:
random- A pseudo-random number source.attacker- The attacker.defender- The defender.- Returns:
- The results of the combat.
-
-