Class ContractUtilities

java.lang.Object
mekhq.campaign.mission.utilities.ContractUtilities

public class ContractUtilities extends Object
  • Constructor Details

    • ContractUtilities

      public ContractUtilities()
  • Method Details

    • calculateBaseNumberOfRequiredLances

      public static int calculateBaseNumberOfRequiredLances(Campaign campaign, boolean isCadreDuty, boolean bypassVariance, double varianceFactor)
      Calculates the number of lances used for this contract, based on [campaign].
      Parameters:
      campaign - The campaign to reference.
      isCadreDuty - true if CombatRole.CADRE should be considered a combat role
      bypassVariance - a flag indicating whether variance adjustments should be bypassed
      varianceFactor - the degree of variance to apply to required combat elements
      Returns:
      The number of lances required.
    • calculateBaseNumberOfUnitsRequiredInCombatTeams

      public static int calculateBaseNumberOfUnitsRequiredInCombatTeams(Campaign campaign)
      Calculates the number of units required for this contract, based on [campaign].
      Parameters:
      campaign - The campaign to reference.
      Returns:
      The number of combat units present.
    • getEffectiveNumUnits

      public static int getEffectiveNumUnits(Campaign campaign)
      Calculates the effective number of units available in the given campaign based on unit types and roles.

      This method iterates through all combat teams in the specified campaign, ignoring combat teams with the auxiliary role. For each valid combat team, it retrieves the associated force and evaluates all units within that force. The unit contribution to the total is determined based on its type. See CombatTeam.getSize(Campaign)

      Units that aren’t associated with a valid combat team or can’t be fetched due to missing data are ignored. The final result is returned as an integer by flooring the calculated total.

      Parameters:
      campaign - the campaign containing the combat teams and units to evaluate
      Returns:
      the effective number of units as an integer
    • hasArrivedAtContractLocation

      public static boolean hasArrivedAtContractLocation(AbstractLocation location, AbstractContract contract)
      Whether a force at location has arrived at where contract is fought.

      Arrival is judged on the system first, since that is what the location model has always tracked, and then on the world - but only when both worlds are known. A location from a save predating planet tracking knows only its system, and AbstractLocation.getPlanet() would report the system's primary world; comparing that against a contract targeting some other world would say "not arrived" forever.

      Parameters:
      location - the force's location
      contract - the contract whose target is being tested against
      Returns:
      true when the force is in the contract's target system, out of transit, and - where known - at its target world
    • getTravelDays

      public static int getTravelDays(Campaign campaign, AbstractContract abstractContract, AbstractLocation currentLocation, boolean isOverridingCommandCircuitRequirements, FactionStandings factionStandings)
    • getJumpPath

      @Nullable public static JumpPath getJumpPath(Campaign campaign, AbstractContract abstractContract, AbstractLocation currentLocation)
    • getEnemyDisplayNameIncludingFaction

      public static String getEnemyDisplayNameIncludingFaction(Faction enemyFaction, String enemyDisplayName, int gameYear)