Skip to content

Commit

Permalink
Fixing merge conflicts
Browse files Browse the repository at this point in the history
  • Loading branch information
Windchild292 committed Mar 12, 2021
2 parents 6bf0fb2 + 8edd806 commit 983fd3b
Show file tree
Hide file tree
Showing 25 changed files with 552 additions and 526 deletions.
10 changes: 10 additions & 0 deletions MekHQ/resources/mekhq/resources/Mission.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# This is used to store any Mission Resources

## General Mission Resources

## Enums
# MissionStatus Enum
MissionStatus.ACTIVE.text=Active
MissionStatus.SUCCESS.text=Success
MissionStatus.FAILED.text=Failed
MissionStatus.BREACH.text=Contract Breach
228 changes: 118 additions & 110 deletions MekHQ/src/mekhq/campaign/Campaign.java

Large diffs are not rendered by default.

46 changes: 25 additions & 21 deletions MekHQ/src/mekhq/campaign/CampaignSummary.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import megamek.common.Infantry;
import megamek.common.UnitType;
import mekhq.campaign.mission.Mission;
import mekhq.campaign.mission.enums.MissionStatus;
import mekhq.campaign.personnel.Person;
import mekhq.campaign.unit.CargoStatistics;
import mekhq.campaign.unit.HangarStatistics;
Expand Down Expand Up @@ -139,13 +140,17 @@ public void updateInformation() {
totalUnitCount = mechCount + veeCount + infantryCount + aeroCount;

//missions
countMissionByStatus = new int[Mission.S_NUM];
countMissionByStatus = new int[MissionStatus.values().length];
for (Mission m : campaign.getMissions()) {
countMissionByStatus[m.getStatus()]++;
countMissionByStatus[m.getStatus().ordinal()]++;
}

completedMissions = 0;
for (MissionStatus status : MissionStatus.values()) {
if (status.isCompleted()) {
completedMissions += countMissionByStatus[status.ordinal()];
}
}
completedMissions = countMissionByStatus[Mission.S_SUCCESS] +
countMissionByStatus[Mission.S_FAILED] +
countMissionByStatus[Mission.S_BREACH];

//cargo capacity
CargoStatistics cargoStats = campaign.getCargoStatistics();
Expand All @@ -159,14 +164,14 @@ public void updateInformation() {
int noMech = Math.max(hangarStats.getNumberOfUnitsByType(Entity.ETYPE_MECH) - hangarStats.getOccupiedBays(Entity.ETYPE_MECH), 0);
int noSC = Math.max(hangarStats.getNumberOfUnitsByType(Entity.ETYPE_SMALL_CRAFT) - hangarStats.getOccupiedBays(Entity.ETYPE_SMALL_CRAFT), 0);
@SuppressWarnings("unused") // FIXME: What type of bays do ConvFighters use?
int noCF = Math.max(hangarStats.getNumberOfUnitsByType(Entity.ETYPE_CONV_FIGHTER) - hangarStats.getOccupiedBays(Entity.ETYPE_CONV_FIGHTER), 0);
int noCF = Math.max(hangarStats.getNumberOfUnitsByType(Entity.ETYPE_CONV_FIGHTER) - hangarStats.getOccupiedBays(Entity.ETYPE_CONV_FIGHTER), 0);
int noASF = Math.max(hangarStats.getNumberOfUnitsByType(Entity.ETYPE_AERO) - hangarStats.getOccupiedBays(Entity.ETYPE_AERO), 0);
int nolv = Math.max(hangarStats.getNumberOfUnitsByType(Entity.ETYPE_TANK, false, true) - hangarStats.getOccupiedBays(Entity.ETYPE_TANK, true), 0);
int nohv = Math.max(hangarStats.getNumberOfUnitsByType(Entity.ETYPE_TANK) - hangarStats.getOccupiedBays(Entity.ETYPE_TANK), 0);
int noinf = Math.max(hangarStats.getNumberOfUnitsByType(Entity.ETYPE_INFANTRY) - hangarStats.getOccupiedBays(Entity.ETYPE_INFANTRY), 0);
int noBA = Math.max(hangarStats.getNumberOfUnitsByType(Entity.ETYPE_BATTLEARMOR) - hangarStats.getOccupiedBays(Entity.ETYPE_BATTLEARMOR), 0);
@SuppressWarnings("unused") // FIXME: This should be used somewhere...
int noProto = Math.max(hangarStats.getNumberOfUnitsByType(Entity.ETYPE_PROTOMECH) - hangarStats.getOccupiedBays(Entity.ETYPE_PROTOMECH), 0);
int noProto = Math.max(hangarStats.getNumberOfUnitsByType(Entity.ETYPE_PROTOMECH) - hangarStats.getOccupiedBays(Entity.ETYPE_PROTOMECH), 0);
int freehv = Math.max(hangarStats.getTotalHeavyVehicleBays() - hangarStats.getOccupiedBays(Entity.ETYPE_TANK), 0);
int freeSC = Math.max(hangarStats.getTotalSmallCraftBays() - hangarStats.getOccupiedBays(Entity.ETYPE_SMALL_CRAFT), 0);

Expand All @@ -192,9 +197,8 @@ public void updateInformation() {
* @return a <code>String</code> of the report
*/
public String getPersonnelReport() {
return Integer.toString(totalCombatPersonnel) + " combat, " +
Integer.toString(totalSupportPersonnel) + " support (" +
Integer.toString(totalInjuries) + " injured)";
return totalCombatPersonnel + " combat, " + totalSupportPersonnel + " support ("
+ totalInjuries + " injured)";
}

/**
Expand All @@ -213,18 +217,18 @@ public String getForceRepairReport() {
* @return a <code>String</code> of the report
*/
public String getForceCompositionReport() {
List<String> composition = new ArrayList<String>();
List<String> composition = new ArrayList<>();
if (mechCount > 0) {
composition.add(Integer.toString((int) Math.round(100 * mechCount / (double) totalUnitCount)) + "% mech");
composition.add((int) Math.round(100 * mechCount / (double) totalUnitCount) + "% mech");
}
if (veeCount > 0) {
composition.add(Integer.toString((int) Math.round(100 * veeCount / (double) totalUnitCount)) + "% armor");
composition.add((int) Math.round(100 * veeCount / (double) totalUnitCount) + "% armor");
}
if (infantryCount > 0) {
composition.add(Integer.toString((int) Math.round(100 * infantryCount / (double) totalUnitCount)) + "% infantry");
composition.add((int) Math.round(100 * infantryCount / (double) totalUnitCount) + "% infantry");
}
if (aeroCount > 0) {
composition.add(Integer.toString((int) Math.round(100 * aeroCount / (double) totalUnitCount)) + "% aero");
composition.add((int) Math.round(100 * aeroCount / (double) totalUnitCount) + "% aero");
}
return String.join(", ", composition);
}
Expand All @@ -234,17 +238,17 @@ public String getForceCompositionReport() {
* @return a <code>String</code> of the report
*/
public String getMissionSuccessReport() {
int successRate = (int) Math.round((100 * countMissionByStatus[Mission.S_SUCCESS]) / (double) completedMissions);
return Integer.toString(successRate) + "%";
int successRate = (int) Math.round((100 * countMissionByStatus[MissionStatus.SUCCESS.ordinal()])
/ (double) completedMissions);
return successRate + "%";
}

/**
* A report that gives capacity and existing tonnage of all cargo
* @return a <code>String</code> of the report
*/
public String getCargoCapacityReport() {
return Integer.toString((int) Math.round(cargoTons)) + " tons (" +
Integer.toString((int) Math.round(cargoCapacity)) + " tons capacity)";
return (int) Math.round(cargoTons) + " tons (" + (int) Math.round(cargoCapacity) + " tons capacity)";
}

/**
Expand All @@ -259,9 +263,9 @@ public String getTransportCapacity() {
String dropshipAppend = "";
int dockingCollars = campaign.getHangarStatistics().getTotalDockingCollars();
if (nDS > 0) {
dropshipAppend = ", " + Integer.toString(nDS) + " dropships/" + Integer.toString(dockingCollars) + " docking collars";
dropshipAppend = ", " + nDS + " dropships/" + dockingCollars + " docking collars";
}

return Integer.toString(percentTransported) + "% bay capacity" + dropshipAppend;
return percentTransported + "% bay capacity" + dropshipAppend;
}
}
15 changes: 3 additions & 12 deletions MekHQ/src/mekhq/campaign/force/Lance.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
import mekhq.campaign.againstTheBot.enums.AtBLanceRole;
import mekhq.campaign.mission.AtBContract;
import mekhq.campaign.mission.AtBScenario;
import mekhq.campaign.mission.Mission;
import mekhq.campaign.mission.atb.AtBScenarioFactory;
import mekhq.campaign.personnel.Person;
import mekhq.campaign.unit.Unit;
Expand Down Expand Up @@ -91,17 +90,9 @@ public Lance(int fid, Campaign c) {
forceId = fid;
role = AtBLanceRole.UNASSIGNED;
missionId = -1;
for (Mission m : c.getSortedMissions()) {
if (!m.isActive()) {
break;
}
if (m instanceof AtBContract) {
if (null == ((AtBContract)m).getParentContract()) {
missionId = m.getId();
} else {
missionId = ((AtBContract)m).getParentContract().getId();
}
}
for (AtBContract contract : c.getActiveAtBContracts()) {
missionId = ((contract.getParentContract() == null)
? contract : contract.getParentContract()).getId();
}
commanderId = findCommander(forceId, c);
}
Expand Down
9 changes: 3 additions & 6 deletions MekHQ/src/mekhq/campaign/io/CampaignXmlParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -1155,18 +1155,15 @@ private static void processMissionNodes(Campaign retVal, Node wn, Version versio
}

// Restore references on AtBContracts
for (Mission m : retVal.getMissions()) {
if (m instanceof AtBContract) {
final AtBContract atbContract = (AtBContract) m;
atbContract.restore(retVal);
}
for (AtBContract contract : retVal.getAtBContracts()) {
contract.restore(retVal);
}

MekHQ.getLogger().info("Load Mission Nodes Complete!");
}

private static String checkUnits(Node wn) {
MekHQ.getLogger().info(CampaignXmlParser.class, "Checking for missing entities...");
MekHQ.getLogger().info("Checking for missing entities...");

List<String> unitList = new ArrayList<>();
NodeList wList = wn.getChildNodes();
Expand Down
64 changes: 30 additions & 34 deletions MekHQ/src/mekhq/campaign/market/ContractMarket.java
Original file line number Diff line number Diff line change
Expand Up @@ -158,36 +158,33 @@ public void generateContractOffers(Campaign campaign) {
public void generateContractOffers(Campaign campaign, boolean newCampaign) {
if (((method == ContractMarketMethod.ATB_MONTHLY) && (campaign.getLocalDate().getDayOfMonth() == 1))
|| newCampaign) {
Contract[] list = contracts.toArray(new Contract[contracts.size()]);
for (Contract c : list) {
removeContract(c);
}

int unitRatingMod = campaign.getUnitRatingMod();

for (Mission m : campaign.getMissions()) {
if (m instanceof AtBContract && m.isActive()) {
checkForSubcontracts(campaign, (AtBContract)m,
unitRatingMod);
}
}

int numContracts = Compute.d6() - 4 + unitRatingMod;

Set<Faction> currentFactions = campaign.getCurrentSystem().getFactionSet(campaign.getLocalDate());
boolean inMinorFaction = true;
for (Faction f : currentFactions) {
if (RandomFactionGenerator.getInstance().getFactionHints().isISMajorPower(f) ||
f.isClan()) {
inMinorFaction = false;
break;
}
}
if (inMinorFaction) {
numContracts--;
}

boolean inBackwater = true;
Contract[] list = contracts.toArray(new Contract[contracts.size()]);
for (Contract c : list) {
removeContract(c);
}

int unitRatingMod = campaign.getUnitRatingMod();

for (AtBContract contract : campaign.getActiveAtBContracts()) {
checkForSubcontracts(campaign, contract, unitRatingMod);
}

int numContracts = Compute.d6() - 4 + unitRatingMod;

Set<Faction> currentFactions = campaign.getCurrentSystem().getFactionSet(campaign.getLocalDate());
boolean inMinorFaction = true;
for (Faction f : currentFactions) {
if (RandomFactionGenerator.getInstance().getFactionHints().isISMajorPower(f)
|| f.isClan()) {
inMinorFaction = false;
break;
}
}
if (inMinorFaction) {
numContracts--;
}

boolean inBackwater = true;
if (currentFactions.size() > 1) {
// More than one faction, if any is *not* periphery, we're not in backwater either
for (Faction f : currentFactions) {
Expand Down Expand Up @@ -277,9 +274,8 @@ public void generateContractOffers(Campaign campaign, boolean newCampaign) {
private void checkForSubcontracts(Campaign campaign, AtBContract contract, int unitRatingMod) {
if (contract.getMissionType() == AtBContract.MT_GARRISONDUTY) {
int numSubcontracts = 0;
for (Mission m : campaign.getMissions()) {
if ((m instanceof AtBContract) &&
contract.equals(((AtBContract) m).getParentContract())) {
for (AtBContract c : campaign.getAtBContracts()) {
if (contract.equals(c.getParentContract())) {
numSubcontracts++;
}
}
Expand Down Expand Up @@ -893,7 +889,7 @@ public static ContractMarket generateInstanceFromXML(Node wn, Campaign c, Versio
retVal.clauseMods.put(key, cm);
}
}

// Restore any parent contract references
for (Contract contract : retVal.contracts) {
if (contract instanceof AtBContract) {
Expand Down
10 changes: 2 additions & 8 deletions MekHQ/src/mekhq/campaign/market/UnitMarket.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@
import mekhq.Version;
import mekhq.campaign.Campaign;
import mekhq.campaign.mission.AtBContract;
import mekhq.campaign.mission.Mission;
import mekhq.campaign.rating.IUnitRating;
import mekhq.campaign.universe.Faction;
import mekhq.campaign.universe.Factions;
Expand Down Expand Up @@ -100,13 +99,8 @@ public void generateUnitOffers(Campaign campaign) {
if ((method == UnitMarketMethod.ATB_MONTHLY) && (campaign.getLocalDate().getDayOfMonth() == 1)) {
offers.clear();

AtBContract contract = null;
for (Mission m : campaign.getMissions()) {
if (m.isActive() && m instanceof AtBContract) {
contract = (AtBContract)m;
break;
}
}
List<AtBContract> contracts = campaign.getActiveAtBContracts();
AtBContract contract = contracts.isEmpty() ? null : contracts.get(0);

addOffers(campaign, Compute.d6() - 2, UnitMarketType.OPEN, UnitType.MEK,
null, IUnitRating.DRAGOON_F, 7);
Expand Down
3 changes: 2 additions & 1 deletion MekHQ/src/mekhq/campaign/mission/AtBContract.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import mekhq.campaign.againstTheBot.enums.AtBLanceRole;
import mekhq.campaign.finances.Money;
import mekhq.campaign.market.enums.UnitMarketType;
import mekhq.campaign.mission.enums.MissionStatus;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

Expand Down Expand Up @@ -1599,7 +1600,7 @@ public static AtBContract getContractExtension(AtBContract c, int length, Campai
retVal.setType(c.getType());
retVal.setSystemId(c.getSystemId());
retVal.setDesc(c.getDescription());
retVal.setStatus(Mission.S_ACTIVE);
retVal.setStatus(MissionStatus.ACTIVE);
retVal.setLength(length);
retVal.setStartDate(campaign.getLocalDate());
/*Set ending date; the other calculated values will be replaced
Expand Down
6 changes: 6 additions & 0 deletions MekHQ/src/mekhq/campaign/mission/Contract.java
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,12 @@ public void setSystemId(String n) {
cachedJumpPath = null;
}

@Override
public boolean isActiveOn(LocalDate date, boolean excludeEndDateCheck) {
return super.isActiveOn(date, excludeEndDateCheck) && !date.isBefore(getStartDate())
&& (excludeEndDateCheck || !date.isAfter(getEndingDate()));
}

/**
* Gets the currently calculated jump path for this contract,
* only recalculating if it's not valid any longer or hasn't been calculated yet.
Expand Down
Loading

0 comments on commit 983fd3b

Please sign in to comment.