Class TeamLoadOutGenerator

java.lang.Object
megamek.client.generator.TeamLoadOutGenerator

public class TeamLoadOutGenerator extends Object
Notes: check out - RATGenerator.java - ForceDescriptor.java for era-based search examples
  • Field Details

    • LOAD_OUT_SETTINGS_PATH

      public static final String LOAD_OUT_SETTINGS_PATH
    • weightProperties

      public static Properties weightProperties
    • UNSET_FILL_RATIO

      public static float UNSET_FILL_RATIO
    • AP_MUNITIONS

      public static final ArrayList<String> AP_MUNITIONS
    • FLAK_MUNITIONS

      public static final ArrayList<String> FLAK_MUNITIONS
    • ACCURATE_MUNITIONS

      public static final ArrayList<String> ACCURATE_MUNITIONS
    • HIGH_POWER_MUNITIONS

      public static final ArrayList<String> HIGH_POWER_MUNITIONS
    • ANTI_INF_MUNITIONS

      public static final ArrayList<String> ANTI_INF_MUNITIONS
    • ANTI_BA_MUNITIONS

      public static final ArrayList<String> ANTI_BA_MUNITIONS
    • HEAT_MUNITIONS

      public static final ArrayList<String> HEAT_MUNITIONS
    • ILLUMINATION_MUNITIONS

      public static final ArrayList<String> ILLUMINATION_MUNITIONS
    • UTILITY_MUNITIONS

      public static final ArrayList<String> UTILITY_MUNITIONS
    • GUIDED_MUNITIONS

      public static final ArrayList<String> GUIDED_MUNITIONS
    • TAG_GUIDED_MUNITIONS

      public static final ArrayList<String> TAG_GUIDED_MUNITIONS
    • NARC_GUIDED_MUNITIONS

      public static final ArrayList<String> NARC_GUIDED_MUNITIONS
    • SEEKING_MUNITIONS

      public static final ArrayList<String> SEEKING_MUNITIONS
    • AMMO_REDUCING_MUNITIONS

      public static final ArrayList<String> AMMO_REDUCING_MUNITIONS
    • TYPE_LIST

      public static final ArrayList<String> TYPE_LIST
    • TYPE_MAP

      public static final Map<String,List<String>> TYPE_MAP
    • gameOptions

      protected GameOptions gameOptions
    • allowedYear

      protected int allowedYear
    • gameTechLevel

      protected int gameTechLevel
    • legalLevel

      protected SimpleTechLevel legalLevel
    • eraBasedTechLevel

      protected boolean eraBasedTechLevel
    • advAeroRules

      protected boolean advAeroRules
    • showExtinct

      protected boolean showExtinct
    • trueRandom

      protected boolean trueRandom
    • defaultBotMunitionsFile

      protected String defaultBotMunitionsFile
  • Constructor Details

    • TeamLoadOutGenerator

      public TeamLoadOutGenerator(Game ownerGame)
    • TeamLoadOutGenerator

      @Deprecated(since="0.50.05", forRemoval=true) public TeamLoadOutGenerator(Game ownerGame, String defaultSettings)
      Deprecated, for removal: This API element is subject to removal in a future version.
      No indicated uses.
      Since:
      0.50.05
  • Method Details

    • updateOptionValues

      public void updateOptionValues()
    • updateOptionValues

      public void updateOptionValues(GameOptions gameOpts)
    • checkLegality

      public boolean checkLegality(AmmoType aType, String faction, String techBase, boolean mixedTech)
      Calculates legality of ammo types given a faction, tech base (IS/CL), mixed tech, and the instance's already-set year, tech level, and option for showing extinct equipment.
      Parameters:
      aType - the AmmoType of the munition under consideration. q.v.
      faction - MM-style faction code, per factions.xml and FactionRecord keys
      techBase - either 'IS' or 'CL', used for clan boolean check.
      mixedTech - makes munitions checks more lenient by allowing faction to access both IS and CL tech bases.
      Returns:
      boolean true if legal for combination of inputs, false otherwise. Determines if an AmmoType is loaded.
    • castPropertyDouble

      public static Double castPropertyDouble(String field, Double defValue)
      Use values from the Properties file defined in TeamLoadOutGenerator class if available; else use provided default
      Parameters:
      field - Field name in property file
      defValue - Default value to use
      Returns:
      Double read value or default
    • castPropertyInt

      public static int castPropertyInt(String field, int defValue)
    • setTrueRandom

      public void setTrueRandom(boolean value)
    • getTrueRandom

      @Deprecated(since="0.50.05", forRemoval=true) public boolean getTrueRandom()
      Deprecated, for removal: This API element is subject to removal in a future version.
      not in use.
    • generateParameters

      public ReconfigurationParameters generateParameters(Team team)
    • generateParameters

      public ReconfigurationParameters generateParameters(ArrayList<Entity> ownEntities, String ownFaction, Team t)
    • generateParameters

      public static ReconfigurationParameters generateParameters(Game g, GameOptions gOpts, ArrayList<Entity> ownEntities, String friendlyFaction, Team team)
      Create the parameters that will determine how to configure ammo loadouts for this team
      Parameters:
      g - Game Object
      gOpts - GameOptions Object
      ownEntities - Entity List of own entities
      friendlyFaction - Friendly Faction Name
      team - Team Object
      Returns:
      ReconfigurationParameters with information about enemy and friendly forces
    • generateParameters

      public static ReconfigurationParameters generateParameters(Game g, GameOptions gOpts, ArrayList<Entity> ownEntities, String friendlyFaction, ArrayList<Entity> enemyEntities, ArrayList<String> enemyFactions, int rating, float fillRatio)
    • generateParameters

      public static ReconfigurationParameters generateParameters(ArrayList<Entity> ownTeamEntities, ArrayList<Entity> etEntities, String friendlyFaction, ArrayList<String> enemyFactions, boolean blind, boolean darkEnvironment, boolean groundMap, boolean spaceEnvironment, int rating, float fillRatio)
    • generateMunitionTree

      @Deprecated(since="0.50.05", forRemoval=true) public MunitionTree generateMunitionTree(ReconfigurationParameters rp, Team team)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Not inidicated uses.
    • generateMunitionTree

      public static MunitionTree generateMunitionTree(ReconfigurationParameters rp, ArrayList<Entity> entities, String defaultSettingsFile)
    • generateMunitionTree

      public static MunitionTree generateMunitionTree(ReconfigurationParameters reconfigurationParameters, ArrayList<Entity> ownTeamEntities, String defaultSettingsFile, megamek.client.generator.MunitionWeightCollection mwc)
      Generate the list of desired ammo load-outs for this team. TODO: implement generateDetailedMunitionTree with more complex breakdowns per unit type NOTE: if sub-classing this generator, should only need to override this method.
      Parameters:
      reconfigurationParameters - ReconfigurationParameters Object
      defaultSettingsFile - File name to settings file.
      Returns:
      generated MunitionTree with imperatives for each weapon type
    • applyWeightsToMunitionTree

      public static void applyWeightsToMunitionTree(megamek.client.generator.MunitionWeightCollection mwc, MunitionTree mt)
      Turn a selection of the computed munition weights into imperatives to load in the MunitionTree
      Parameters:
      mt - MunitionTree Object
      mwc - MunitionWeightCollection Object
    • reconfigureBotTeamWithDefaults

      @Deprecated(since="0.50.05", forRemoval=true) public void reconfigureBotTeamWithDefaults(Team team, String faction)
      Deprecated, for removal: This API element is subject to removal in a future version.
      - no indicated uses.
      Wrapper to streamline bot team configuration using standardized defaults
    • reconfigureTeam

      public void reconfigureTeam(Team team, String faction, String adfFile)
      Wrapper to load a file of preset munition imperatives
      Parameters:
      team - Team Object
      faction - Related Faction
      adfFile - Munitions File.
    • reconfigureEntities

      public void reconfigureEntities(ArrayList<Entity> entities, String faction, MunitionTree mt, ReconfigurationParameters reconfigurationParameters)
      More generic reconfiguration function that acts on sets of units, not teams
      Parameters:
      entities - ArrayList of entities, including ground and air units
      faction - String code for entities' main faction
      mt - MunitionTree defining all applicable load out imperatives
    • randomizeBotTeamConfiguration

      public void randomizeBotTeamConfiguration(Team team, String faction)
      Configure Bot Team with all munitions randomized
      Parameters:
      team - Team Object
      faction - Related Faction to team
    • generateRandomizedMT

      public static MunitionTree generateRandomizedMT()
    • reconfigureEntity

      public void reconfigureEntity(Entity e, MunitionTree mt, String faction)
      Wrapper that assumes full bins, mostly for testing
      Parameters:
      e - Entity with Ammo Bins
      mt - MunitionTree Ammo used
      faction - Related Faction
    • reconfigureEntity

      public void reconfigureEntity(Entity entity, MunitionTree mt, String faction, float binFillRatio)
      Method to apply a MunitionTree to a specific unit. Main application logic
      Parameters:
      entity - Entity with Ammo Bins
      mt - MunitionTree Ammo used
      faction - Related Faction
      binFillRatio - float setting the max fill rate for all bins in this entity (mostly for Pirates)
    • clampAmmoShots

      protected void clampAmmoShots(Entity entity, float binFillRatio)
      Applies specified ammo fill ratio to all bins
      Parameters:
      entity - Entity Unit tow work with.
      binFillRatio - How full to make bins.
    • reconfigureAero

      public void reconfigureAero(Entity e, MunitionTree mt, String faction)
      TODO: implement in 0.50.1 with other new errata changes This method should mirror reconfigureEntity but with more restrictions based on the types of alternate munitions allowed by Aerospace rules.
      Parameters:
      e - Entity Unit to work with.
      mt - MunitionTree Ammo Tree
      faction - Related Faction
    • populateAeroBombs

      public void populateAeroBombs(List<Entity> entityList, int year, boolean hasGroundTargets, int quality, boolean isPirate, String faction)
      Helper function to load bombs onto a random portion of units that can carry them
      Parameters:
      entityList - The list of entities to process
      hasGroundTargets - true to select air-to-ground ordnance, false for air-to-air only
      quality - IUnitRating enum for force quality (A/A* through F)
      isPirate - true to use specific pirate ordnance loadouts
    • generateExternalOrdnance

      public int[] generateExternalOrdnance(int bombUnits, boolean airOnly, boolean isPirate, int quality, int year, String faction, String techBase, boolean mixedTech)
      Randomly generate a set of external ordnance up to the number of indicated bomb units. Lower rated forces are more likely to get simpler types (HE and rockets). Because TAG is only useful as one-per-fighter, it should be handled elsewhere.
      Parameters:
      bombUnits - how many bomb units to generate, some types count as more than one unit so returned counts may be lower than this but never higher
      airOnly - true to only select air-to-air ordnance
      isPirate - true if force is pirate, specific low-tech/high chaos selections
      quality - force rating to work with
      year - current year, for tech filter
      Returns:
      array of integers, with each element being a bomb count using BombUnit enums as the lookup e.g. [BombUnit.HE] will get the number of HE bombs.