Class StratConScenarioTempo
Ordinary scenarios are scheduled the way Essential scenarios are: up front, by rolling the Track Intensity Tables
for the contract's track count (see TrackIntensityTable.rollSchedule(int, int)). The table is rolled once per point of
scale when "Multiply Track Intensity by Scale" is on and once otherwise, and three times as often when battlefield
support points are factored into scale, since that makes for smaller scales. The "Scenario Tempo Multiplier" option
then multiplies the rolls. As for Essential scenarios, the
table's columns are read as months; unlike them, the table is rolled afresh for however many months it falls short of
the contract, so no month of a long contract is left without scenarios.
Single Drop play keeps its own pace of one scenario a week, and schedules nothing here.
- Since:
- 0.51.01
-
Method Summary
Modifier and TypeMethodDescriptionstatic voidregenerateSchedules(Campaign campaign, AbstractContract contract, StratConCampaignState campaignState) Rolls a contract's pre-rolled schedule again from today, after an edit to something it was rolled from - the contract's scale, track count, or dates.static voidscheduleNormalScenarios(Campaign campaign, AbstractContract contract, StratConCampaignState campaignState, LocalDate fromDate) Schedules a contract's ordinary scenarios from the given day to the contract's end, replacing any scheduled from that day on.
-
Method Details
-
scheduleNormalScenarios
public static void scheduleNormalScenarios(Campaign campaign, AbstractContract contract, StratConCampaignState campaignState, @Nullable LocalDate fromDate) Schedules a contract's ordinary scenarios from the given day to the contract's end, replacing any scheduled from that day on. The days are stored on the campaign state, where the daily StratCon lifecycle generates the scenarios due each day. Does nothing without a settled start date.- Parameters:
campaign- the current campaigncontract- the contractcampaignState- the contract's StratCon campaign statefromDate- the first day to schedule on; the contract's start date when it is accepted- Since:
- 0.51.01
-
regenerateSchedules
public static void regenerateSchedules(Campaign campaign, AbstractContract contract, StratConCampaignState campaignState) Rolls a contract's pre-rolled schedule again from today, after an edit to something it was rolled from - the contract's scale, track count, or dates. Everything scheduled from today on is replaced; what has already happened, and anything already overdue, is left alone. The Track Intensity Table options are taken as they stand now, so an edit also brings a running contract in line with them.- Ordinary scenarios are scheduled again (see
scheduleNormalScenarios(mekhq.campaign.Campaign, mekhq.campaign.mission.contract.AbstractContract, mekhq.campaign.digitalGM.stratCon.StratConCampaignState, java.time.LocalDate)), except in Single Drop play, which keeps its own weekly pace. - The contract's Essential scenario schedule is rolled again, as when the contract was generated (see
AbstractContractGeneration.rollScenarioSchedule(mekhq.campaign.Campaign, mekhq.campaign.mission.contract.AbstractContract, int)), unless the contract's special points of interest replace its Essential scenarios. - Points of interest are scheduled again (see
StratConContractInitializer.schedulePointsOfInterest(AbstractContract, StratConContractDefinition, StratConCampaignState, boolean, boolean, LocalDate, int, Map)). Those already placed, or due and waiting for room, count against the contract's share, as do the marks they carry (seeStratConCampaignState.recordPlacedPointOfInterest(mekhq.campaign.digitalGM.stratCon.pointOfInterest.StratConScheduledPointOfInterest)).
Mapless play has no Essential scenarios or points of interest, so only its ordinary scenarios are rolled again.
- Parameters:
campaign- the current campaigncontract- the edited contractcampaignState- the contract's StratCon campaign state- Since:
- 0.51.01
- Ordinary scenarios are scheduled again (see
-