Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extract AtB Event Types to enum #5824

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 11 additions & 24 deletions MekHQ/src/mekhq/campaign/mission/AtBContract.java
Original file line number Diff line number Diff line change
Expand Up @@ -116,19 +116,6 @@
public class AtBContract extends Contract {
private static final MMLogger logger = MMLogger.create(AtBContract.class);

public static final int EVT_NOEVENT = -1;
public static final int EVT_BONUSROLL = 0;
public static final int EVT_SPECIAL_SCENARIO = 1;
public static final int EVT_CIVILDISTURBANCE = 2;
public static final int EVT_SPORADICUPRISINGS = 3;
public static final int EVT_REBELLION = 4;
public static final int EVT_BETRAYAL = 5;
public static final int EVT_TREACHERY = 6;
public static final int EVT_LOGISTICSFAILURE = 7;
public static final int EVT_REINFORCEMENTS = 8;
public static final int EVT_SPECIALEVENTS = 9;
public static final int EVT_BIGBATTLE = 10;

/** The minimum intensity below which no scenarios will be generated */
public static final double MINIMUM_INTENSITY = 0.01;

Expand Down Expand Up @@ -934,29 +921,29 @@ public void checkEvents(Campaign campaign) {
}

switch (getContractType().generateEventType(campaign)) {
case EVT_BONUSROLL:
case BONUSROLL:
campaign.addReport("<b>Special Event:</b> ");
doBonusRoll(campaign, false);
break;
case EVT_SPECIAL_SCENARIO:
case SPECIAL_SCENARIO:
campaign.addReport("<b>Special Event:</b> Special scenario this month");
specialEventScenarioDate = getRandomDayOfMonth(campaign.getLocalDate());
specialEventScenarioType = getContractType().generateSpecialScenarioType(campaign);
break;
case EVT_CIVILDISTURBANCE:
case CIVILDISTURBANCE:
campaign.addReport("<b>Special Event:</b> Civil disturbance<br />Next enemy morale roll gets +1 modifier");
moraleMod++;
break;
case EVT_SPORADICUPRISINGS:
case SPORADICUPRISINGS:
campaign.addReport("<b>Special Event:</b> Sporadic uprisings<br />+2 to next enemy morale roll");
moraleMod += 2;
break;
case EVT_REBELLION:
case REBELLION:
campaign.addReport("<b>Special Event:</b> Rebellion<br />+2 to next enemy morale roll");
specialEventScenarioDate = getRandomDayOfMonth(campaign.getLocalDate());
specialEventScenarioType = AtBScenario.CIVILIANRIOT;
break;
case EVT_BETRAYAL:
case BETRAYAL:
String text = "<b>Special Event:</b> Betrayal (employer minor breach)<br />";
switch (d6()) {
case 1:
Expand Down Expand Up @@ -984,23 +971,23 @@ public void checkEvents(Campaign campaign) {
employerMinorBreaches++;
campaign.addReport(text);
break;
case EVT_TREACHERY:
case TREACHERY:
campaign.addReport(
"<b>Special Event:</b> Treachery<br />Bad information from employer. Next Enemy Morale roll gets +1. Employer minor breach.");
moraleMod++;
employerMinorBreaches++;
break;
case EVT_LOGISTICSFAILURE:
case LOGISTICSFAILURE:
campaign.addReport(
"<b>Special Event:</b> Logistics Failure<br />Parts availability for the next month are one level lower.");
partsAvailabilityLevel--;
priorLogisticsFailure = true;
break;
case EVT_REINFORCEMENTS:
case REINFORCEMENTS:
campaign.addReport("<b>Special Event:</b> Reinforcements<br />The next Enemy Morale roll gets a -1.");
moraleMod--;
break;
case EVT_SPECIALEVENTS:
case SPECIALEVENTS:
text = "<b>Special Event:</b> ";
switch (d6()) {
case 1:
Expand Down Expand Up @@ -1037,7 +1024,7 @@ UnitMarketType.EMPLOYER, MEK, getEmployerFaction(),
}
campaign.addReport(text);
break;
case EVT_BIGBATTLE:
case BIGBATTLE:
campaign.addReport("<b>Special Event:</b> Big battle this month");
specialEventScenarioDate = getRandomDayOfMonth(campaign.getLocalDate());
specialEventScenarioType = getContractType().generateBigBattleType();
Expand Down
174 changes: 87 additions & 87 deletions MekHQ/src/mekhq/campaign/mission/enums/AtBContractType.java
Original file line number Diff line number Diff line change
Expand Up @@ -222,9 +222,9 @@ public CombatRole getRequiredCombatRole() {
* {@link #generateStratConEvent()} method.</p>
*
* @param campaign the {@link Campaign} instance for which the event is being generated.
* @return an integer representing the event type.
* @return an AtBEvent enum representing the event type.
*/
public int generateEventType(Campaign campaign) {
public AtBEventType generateEventType(Campaign campaign) {
if (campaign.getCampaignOptions().isUseStratCon()) {
return generateStratConEvent();
}
Expand All @@ -237,107 +237,107 @@ public int generateEventType(Campaign campaign) {
case RECON_RAID:
case EXTRACTION_RAID:
if (roll < 10) {
return AtBContract.EVT_BONUSROLL;
return AtBEventType.BONUSROLL;
} else if (roll < 14) {
return AtBContract.EVT_SPECIAL_SCENARIO;
return AtBEventType.SPECIAL_SCENARIO;
} else if (roll < 16) {
return AtBContract.EVT_BETRAYAL;
return AtBEventType.BETRAYAL;
} else if (roll < 17) {
return AtBContract.EVT_TREACHERY;
return AtBEventType.TREACHERY;
} else if (roll < 18) {
return AtBContract.EVT_LOGISTICSFAILURE;
return AtBEventType.LOGISTICSFAILURE;
} else if (roll < 19) {
return AtBContract.EVT_REINFORCEMENTS;
return AtBEventType.REINFORCEMENTS;
} else if (roll < 20) {
return AtBContract.EVT_SPECIALEVENTS;
return AtBEventType.SPECIALEVENTS;
} else {
return AtBContract.EVT_BIGBATTLE;
return AtBEventType.BIGBATTLE;
}
Comment on lines -240 to 255
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These, and all following if/else chains, can be simplified using switch/case with fall through.

Start at 20 and work down.

It'll increase readability for most.

case GARRISON_DUTY:
if (roll < 8) {
return AtBContract.EVT_BONUSROLL;
return AtBEventType.BONUSROLL;
} else if (roll < 12) {
return AtBContract.EVT_SPECIAL_SCENARIO;
return AtBEventType.SPECIAL_SCENARIO;
} else if (roll < 13) {
return AtBContract.EVT_CIVILDISTURBANCE;
return AtBEventType.CIVILDISTURBANCE;
} else if (roll < 14) {
return AtBContract.EVT_SPORADICUPRISINGS;
return AtBEventType.SPORADICUPRISINGS;
} else if (roll < 15) {
return AtBContract.EVT_REBELLION;
return AtBEventType.REBELLION;
} else if (roll < 16) {
return AtBContract.EVT_BETRAYAL;
return AtBEventType.BETRAYAL;
} else if (roll < 17) {
return AtBContract.EVT_TREACHERY;
return AtBEventType.TREACHERY;
} else if (roll < 18) {
return AtBContract.EVT_LOGISTICSFAILURE;
return AtBEventType.LOGISTICSFAILURE;
} else if (roll < 19) {
return AtBContract.EVT_REINFORCEMENTS;
return AtBEventType.REINFORCEMENTS;
} else if (roll < 20) {
return AtBContract.EVT_SPECIALEVENTS;
return AtBEventType.SPECIALEVENTS;
} else {
return AtBContract.EVT_BIGBATTLE;
return AtBEventType.BIGBATTLE;
}
case RIOT_DUTY:
if (roll < 8) {
return AtBContract.EVT_BONUSROLL;
return AtBEventType.BONUSROLL;
} else if (roll < 11) {
return AtBContract.EVT_SPECIAL_SCENARIO;
return AtBEventType.SPECIAL_SCENARIO;
} else if (roll < 12) {
return AtBContract.EVT_CIVILDISTURBANCE;
return AtBEventType.CIVILDISTURBANCE;
} else if (roll < 13) {
return AtBContract.EVT_SPORADICUPRISINGS;
return AtBEventType.SPORADICUPRISINGS;
} else if (roll < 15) {
return AtBContract.EVT_REBELLION;
return AtBEventType.REBELLION;
} else if (roll < 16) {
return AtBContract.EVT_BETRAYAL;
return AtBEventType.BETRAYAL;
} else if (roll < 17) {
return AtBContract.EVT_TREACHERY;
return AtBEventType.TREACHERY;
} else if (roll < 18) {
return AtBContract.EVT_LOGISTICSFAILURE;
return AtBEventType.LOGISTICSFAILURE;
} else if (roll < 19) {
return AtBContract.EVT_REINFORCEMENTS;
return AtBEventType.REINFORCEMENTS;
} else if (roll < 20) {
return AtBContract.EVT_SPECIALEVENTS;
return AtBEventType.SPECIALEVENTS;
} else {
return AtBContract.EVT_BIGBATTLE;
return AtBEventType.BIGBATTLE;
}
case PIRATE_HUNTING:
if (roll < 10) {
return AtBContract.EVT_BONUSROLL;
return AtBEventType.BONUSROLL;
} else if (roll < 14) {
return AtBContract.EVT_SPECIAL_SCENARIO;
return AtBEventType.SPECIAL_SCENARIO;
} else if (roll < 15) {
return AtBContract.EVT_CIVILDISTURBANCE;
return AtBEventType.CIVILDISTURBANCE;
} else if (roll < 16) {
return AtBContract.EVT_BETRAYAL;
return AtBEventType.BETRAYAL;
} else if (roll < 17) {
return AtBContract.EVT_TREACHERY;
return AtBEventType.TREACHERY;
} else if (roll < 18) {
return AtBContract.EVT_LOGISTICSFAILURE;
return AtBEventType.LOGISTICSFAILURE;
} else if (roll < 19) {
return AtBContract.EVT_REINFORCEMENTS;
return AtBEventType.REINFORCEMENTS;
} else if (roll < 20) {
return AtBContract.EVT_SPECIALEVENTS;
return AtBEventType.SPECIALEVENTS;
} else {
return AtBContract.EVT_BIGBATTLE;
return AtBEventType.BIGBATTLE;
}
default:
if (roll < 10) {
return AtBContract.EVT_BONUSROLL;
return AtBEventType.BONUSROLL;
} else if (roll < 15) {
return AtBContract.EVT_SPECIAL_SCENARIO;
return AtBEventType.SPECIAL_SCENARIO;
} else if (roll < 16) {
return AtBContract.EVT_BETRAYAL;
return AtBEventType.BETRAYAL;
} else if (roll < 17) {
return AtBContract.EVT_TREACHERY;
return AtBEventType.TREACHERY;
} else if (roll < 18) {
return AtBContract.EVT_LOGISTICSFAILURE;
return AtBEventType.LOGISTICSFAILURE;
} else if (roll < 19) {
return AtBContract.EVT_REINFORCEMENTS;
return AtBEventType.REINFORCEMENTS;
} else if (roll < 20) {
return AtBContract.EVT_SPECIALEVENTS;
return AtBEventType.SPECIALEVENTS;
} else {
return AtBContract.EVT_BIGBATTLE;
return AtBEventType.BIGBATTLE;
}
}
}
Expand All @@ -351,97 +351,97 @@ public int generateEventType(Campaign campaign) {
*
* @return an integer representing the event type.
*/
public int generateStratConEvent() {
public AtBEventType generateStratConEvent() {
final int roll = Compute.randomInt(20) + 1;
Comment on lines +354 to 355
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this really should be a static map or something like it.

Copy link
Collaborator Author

@Algebro7 Algebro7 Jan 25, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, that probably does make sense. I'm guessing we'd need to simplify the rolls to avoid a bunch of duplicate values (e.g., for keys 10-13 and 14-15), right?

By the way, with the current direction I'm heading with the Contract classes, this PR isn't as useful as it was, so I'm also OK closing it unless we want to take an opportunity to clean up those roll tables like @Scoppio suggested.


return switch (this) {
case DIVERSIONARY_RAID, OBJECTIVE_RAID, RECON_RAID, EXTRACTION_RAID -> {
if (roll < 14) {
yield AtBContract.EVT_BONUSROLL;
yield AtBEventType.BONUSROLL;
} else if (roll < 16) {
yield AtBContract.EVT_BETRAYAL;
yield AtBEventType.BETRAYAL;
} else if (roll < 17) {
yield AtBContract.EVT_TREACHERY;
yield AtBEventType.TREACHERY;
} else if (roll < 18) {
yield AtBContract.EVT_LOGISTICSFAILURE;
yield AtBEventType.LOGISTICSFAILURE;
} else if (roll < 19) {
yield AtBContract.EVT_REINFORCEMENTS;
yield AtBEventType.REINFORCEMENTS;
} else {
yield AtBContract.EVT_SPECIALEVENTS;
yield AtBEventType.SPECIALEVENTS;
}
}
case GARRISON_DUTY -> {
if (roll < 12) {
yield AtBContract.EVT_BONUSROLL;
yield AtBEventType.BONUSROLL;
} else if (roll < 13) {
yield AtBContract.EVT_CIVILDISTURBANCE;
yield AtBEventType.CIVILDISTURBANCE;
} else if (roll < 14) {
yield AtBContract.EVT_SPORADICUPRISINGS;
yield AtBEventType.SPORADICUPRISINGS;
} else if (roll < 15) {
yield AtBContract.EVT_REBELLION;
yield AtBEventType.REBELLION;
} else if (roll < 16) {
yield AtBContract.EVT_BETRAYAL;
yield AtBEventType.BETRAYAL;
} else if (roll < 17) {
yield AtBContract.EVT_TREACHERY;
yield AtBEventType.TREACHERY;
} else if (roll < 18) {
yield AtBContract.EVT_LOGISTICSFAILURE;
yield AtBEventType.LOGISTICSFAILURE;
} else if (roll < 19) {
yield AtBContract.EVT_REINFORCEMENTS;
yield AtBEventType.REINFORCEMENTS;
} else {
yield AtBContract.EVT_SPECIALEVENTS;
yield AtBEventType.SPECIALEVENTS;
}
}
case RIOT_DUTY -> {
if (roll < 11) {
yield AtBContract.EVT_BONUSROLL;
yield AtBEventType.BONUSROLL;
} else if (roll < 12) {
yield AtBContract.EVT_CIVILDISTURBANCE;
yield AtBEventType.CIVILDISTURBANCE;
} else if (roll < 13) {
yield AtBContract.EVT_SPORADICUPRISINGS;
yield AtBEventType.SPORADICUPRISINGS;
} else if (roll < 15) {
yield AtBContract.EVT_REBELLION;
yield AtBEventType.REBELLION;
} else if (roll < 16) {
yield AtBContract.EVT_BETRAYAL;
yield AtBEventType.BETRAYAL;
} else if (roll < 17) {
yield AtBContract.EVT_TREACHERY;
yield AtBEventType.TREACHERY;
} else if (roll < 18) {
yield AtBContract.EVT_LOGISTICSFAILURE;
yield AtBEventType.LOGISTICSFAILURE;
} else if (roll < 19) {
yield AtBContract.EVT_REINFORCEMENTS;
yield AtBEventType.REINFORCEMENTS;
} else {
yield AtBContract.EVT_SPECIALEVENTS;
yield AtBEventType.SPECIALEVENTS;
}
}
case PIRATE_HUNTING -> {
if (roll < 14) {
yield AtBContract.EVT_BONUSROLL;
yield AtBEventType.BONUSROLL;
} else if (roll < 15) {
yield AtBContract.EVT_CIVILDISTURBANCE;
yield AtBEventType.CIVILDISTURBANCE;
} else if (roll < 16) {
yield AtBContract.EVT_BETRAYAL;
yield AtBEventType.BETRAYAL;
} else if (roll < 17) {
yield AtBContract.EVT_TREACHERY;
yield AtBEventType.TREACHERY;
} else if (roll < 18) {
yield AtBContract.EVT_LOGISTICSFAILURE;
yield AtBEventType.LOGISTICSFAILURE;
} else if (roll < 19) {
yield AtBContract.EVT_REINFORCEMENTS;
yield AtBEventType.REINFORCEMENTS;
} else {
yield AtBContract.EVT_SPECIALEVENTS;
yield AtBEventType.SPECIALEVENTS;
}
}
default -> {
if (roll < 15) {
yield AtBContract.EVT_BONUSROLL;
yield AtBEventType.BONUSROLL;
} else if (roll < 16) {
yield AtBContract.EVT_BETRAYAL;
yield AtBEventType.BETRAYAL;
} else if (roll < 17) {
yield AtBContract.EVT_TREACHERY;
yield AtBEventType.TREACHERY;
} else if (roll < 18) {
yield AtBContract.EVT_LOGISTICSFAILURE;
yield AtBEventType.LOGISTICSFAILURE;
} else if (roll < 19) {
yield AtBContract.EVT_REINFORCEMENTS;
yield AtBEventType.REINFORCEMENTS;
} else {
yield AtBContract.EVT_SPECIALEVENTS;
yield AtBEventType.SPECIALEVENTS;
}
}
};
Expand Down
Loading
Loading