1package com.fs.starfarer.api.impl.campaign.tutorial;
3import org.lwjgl.util.vector.Vector2f;
5import com.fs.starfarer.api.EveryFrameScript;
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.CampaignFleetAPI;
8import com.fs.starfarer.api.campaign.CampaignTerrainAPI;
9import com.fs.starfarer.api.campaign.CoreUITabId;
10import com.fs.starfarer.api.campaign.PlanetAPI;
11import com.fs.starfarer.api.campaign.SectorEntityToken;
12import com.fs.starfarer.api.campaign.StarSystemAPI;
13import com.fs.starfarer.api.characters.AbilityPlugin;
14import com.fs.starfarer.api.fleet.FleetMemberAPI;
15import com.fs.starfarer.api.fleet.FleetMemberType;
16import com.fs.starfarer.api.impl.campaign.DModManager;
17import com.fs.starfarer.api.impl.campaign.fleets.FleetFactoryV3;
18import com.fs.starfarer.api.impl.campaign.ids.Abilities;
19import com.fs.starfarer.api.impl.campaign.ids.Factions;
20import com.fs.starfarer.api.impl.campaign.ids.FleetTypes;
21import com.fs.starfarer.api.impl.campaign.ids.HullMods;
22import com.fs.starfarer.api.impl.campaign.ids.MemFlags;
23import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.TransmitterTrapSpecial;
24import com.fs.starfarer.api.ui.HintPanelAPI;
25import com.fs.starfarer.api.util.Misc;
31 public static enum CampaignTutorialStage {
44 SHOW_LAY_IN_COURSE_DIALOG,
45 SHOW_LAY_IN_COURSE_HINT,
46 WAITING_TO_LAY_IN_COURSE,
50 SHOW_SUSTAINED_BURN_DIALOG,
51 SHOW_SUSTAINED_BURN_HINT,
52 WAIT_SUSTAINED_BURN_USE,
53 SHOW_TRANSPONDER_DIALOG,
54 SHOW_TRANSPONDER_HINT,
70 protected CampaignTutorialStage
stage = CampaignTutorialStage.SHOW_WELCOME_DIALOG;
104 protected boolean quickSaveNag(CampaignTutorialStage nagStage, CampaignTutorialStage next,
float timeout) {
107 if (
stage == nagStage) {
118 stage = CampaignTutorialStage.WAITING_TO_QUICKSAVE;
126 if (
quickSaveFrom == nagStage &&
stage == CampaignTutorialStage.WAITING_TO_QUICKSAVE &&
172 if (amount == 0)
return;
175 if (playerFleet ==
null)
return;
178 if (hints ==
null)
return;
188 if (
stage == CampaignTutorialStage.SHOW_WELCOME_DIALOG &&
elapsed > 1f) {
191 stage = CampaignTutorialStage.SHOW_DEBRIS_HINT;
196 if (
stage == CampaignTutorialStage.SHOW_DEBRIS_HINT) {
198 hints.
setHint(1,
"- Move up into the debris field");
201 stage = CampaignTutorialStage.HEADING_TO_DEBRIS;
205 if (
stage == CampaignTutorialStage.HEADING_TO_DEBRIS) {
207 stage = CampaignTutorialStage.REACHED_DEBRIS;
216 if (
stage == CampaignTutorialStage.REACHED_DEBRIS) {
219 stage = CampaignTutorialStage.SAVE_NAG_1;
227 if (
quickSaveNag(CampaignTutorialStage.SAVE_NAG_1, CampaignTutorialStage.SHOW_PIRATE_DIALOG, 0)) {
231 if (
stage == CampaignTutorialStage.SHOW_PIRATE_DIALOG &&
elapsed >= 1f) {
233 stage = CampaignTutorialStage.SHOW_PIRATE_HINT;
238 if (
stage == CampaignTutorialStage.SHOW_PIRATE_HINT) {
241 hints.
setHint(0,
"- Wait for the pirates to approach, then engage and defeat them!");
242 stage = CampaignTutorialStage.PIRATE_APPROACHES;
246 if (
stage == CampaignTutorialStage.PIRATE_APPROACHES) {
249 stage = CampaignTutorialStage.SAVE_NAG_2;
262 if (
quickSaveNag(CampaignTutorialStage.SAVE_NAG_2, CampaignTutorialStage.SHOW_LEVELUP_DIALOG, 0)) {
266 if (
stage == CampaignTutorialStage.SHOW_LEVELUP_DIALOG &&
elapsed >= 1f) {
268 stage = CampaignTutorialStage.SHOW_LEVELUP_HINT;
273 if (
stage == CampaignTutorialStage.SHOW_LEVELUP_HINT) {
276 stage = CampaignTutorialStage.WAIT_CHAR_TAB;
280 if (
stage == CampaignTutorialStage.WAIT_CHAR_TAB) {
286 stage = CampaignTutorialStage.SHOW_LAY_IN_COURSE_DIALOG;
292 if (
stage == CampaignTutorialStage.SHOW_LAY_IN_COURSE_DIALOG &&
elapsed >= 1f) {
296 stage = CampaignTutorialStage.SHOW_LAY_IN_COURSE_HINT;
302 if (
stage == CampaignTutorialStage.SHOW_LAY_IN_COURSE_HINT) {
311 stage = CampaignTutorialStage.WAITING_TO_LAY_IN_COURSE;
320 if (
stage == CampaignTutorialStage.WAITING_TO_LAY_IN_COURSE) {
327 stage = CampaignTutorialStage.SHOW_SUSTAINED_BURN_DIALOG;
334 if (
stage == CampaignTutorialStage.SHOW_SUSTAINED_BURN_DIALOG &&
elapsed > 5f) {
336 stage = CampaignTutorialStage.SHOW_SUSTAINED_BURN_HINT;
341 if (
stage == CampaignTutorialStage.SHOW_SUSTAINED_BURN_HINT) {
344 stage = CampaignTutorialStage.WAIT_SUSTAINED_BURN_USE;
349 if (
stage == CampaignTutorialStage.WAIT_SUSTAINED_BURN_USE) {
356 stage = CampaignTutorialStage.SHOW_GO_SLOW_DIALOG;
363 if (
stage == CampaignTutorialStage.SHOW_GO_SLOW_DIALOG &&
366 stage = CampaignTutorialStage.SHOW_GO_SLOW_HINT;
371 if (
stage == CampaignTutorialStage.SHOW_GO_SLOW_HINT) {
375 stage = CampaignTutorialStage.WAITING_TO_GO_SLOW;
381 if (
stage == CampaignTutorialStage.WAITING_TO_GO_SLOW &&
389 stage = CampaignTutorialStage.SHOW_TRANSPONDER_DIALOG;
396 if (
stage == CampaignTutorialStage.SHOW_TRANSPONDER_DIALOG) {
400 stage = CampaignTutorialStage.SHOW_TRANSPONDER_HINT;
406 if (
stage == CampaignTutorialStage.SHOW_TRANSPONDER_HINT) {
409 stage = CampaignTutorialStage.WAIT_TRANSPONDER_USE;
414 if (
stage == CampaignTutorialStage.WAIT_TRANSPONDER_USE) {
416 if ((transponder !=
null && transponder.
isActive())) {
418 stage = CampaignTutorialStage.DONE;
524 return stage == CampaignTutorialStage.DONE;
528 return stage == CampaignTutorialStage.WAIT_CHAR_TAB;
static SettingsAPI getSettings()
static FactoryAPI getFactory()
static SectorAPI getSector()
static boolean setDHull(ShipVariantAPI variant)
static CampaignFleetAPI createEmptyFleet(String factionId, String fleetType, MarketAPI market)
static final String SENSOR_BURST
static final String SUSTAINED_BURN
static final String SCAVENGE
static final String TRANSPONDER
static final String GO_DARK
static final String EMERGENCY_BURN
static final String HEGEMONY
static final String PATROL_MEDIUM
static final String COMP_ARMOR
static final String FAULTY_GRID
static final String MEMORY_KEY_NO_JUMP
static final String MEMORY_KEY_NO_SHIP_RECOVERY
static final String MEMORY_KEY_PATROL_FLEET
static void makeFleetInterceptPlayer(CampaignFleetAPI fleet, boolean makeAggressive, boolean makeLowRepImpact, float interceptDays)
CampaignFleetAPI pirateFleet
boolean askedPlayerToSave
void advance(float amount)
CampaignTutorialStage quickSaveFrom
SectorEntityToken derinkuyu
void leashToStartLocation()
CampaignTutorialScript(StarSystemAPI system)
float lastCheckDistToAncyra
CampaignTutorialStage stage
void startTutorialMissionEvent()
CampaignFleetAPI detachment
static final String USE_TUTORIAL_RESPAWN
void addSecurityDetachment()
boolean quickSaveNag(CampaignTutorialStage nagStage, CampaignTutorialStage next, float timeout)
TutorialMissionIntel intel
CampaignTerrainAPI debrisField
static CampaignFleetAPI createEmptyRogueFleet(String name, boolean withFaction)
static CampaignFleetAPI createGuardFleet(boolean stronger)
PersonAPI getMainContact()
static float getDistance(SectorEntityToken from, SectorEntityToken to)
static Color getHighlightColor()
FleetMemberAPI createFleetMember(FleetMemberType type, String variantOrWingId)
String getControlStringForAbilitySlot(int index)
String getControlStringForEnumName(String name)
LevelupPlugin getLevelupPlugin()
void setName(String name)
SectorEntityToken getInteractionTarget()
FleetDataAPI getFleetData()
void setNoFactionInName(boolean noFactionInName)
void setLocation(float x, float y)
CampaignTerrainPlugin getPlugin()
boolean containsEntity(SectorEntityToken other)
HintPanelAPI getHintPanel()
boolean showInteractionDialog(InteractionDialogPlugin plugin, SectorEntityToken interactionTarget)
CoreUITabId getCurrentCoreTab()
void showMessageDialog(String message)
boolean isShowingDialog()
void addFleetMember(FleetMemberAPI member)
SectorEntityToken getEntityById(String id)
void addEntity(SectorEntityToken entity)
CampaignFleetAPI getPlayerFleet()
boolean isInFastAdvance()
CampaignUIAPI getCampaignUI()
PersonAPI getPlayerPerson()
MemoryAPI getMemoryWithoutUpdate()
void addScript(EveryFrameScript script)
MemoryAPI getMemoryWithoutUpdate()
AbilityPlugin getAbility(String id)
void setCircularOrbitAngle(float angle)
void addAbility(String id)
void set(String key, Object value)
void addXP(long xp, TextPanelAPI textPanel, boolean withMessage, boolean allowBonusXP, boolean withLevelUp)
void addPoints(int points)
MutableCharacterStatsAPI getStats()
void addPermaMod(String modId)
ShipVariantAPI getVariant()
void setVariant(ShipVariantAPI variant, boolean withRefit, boolean withStatsUpdate)
long getXPForLevel(int level)
void fadeOutHint(int index)
LabelAPI setHint(int index, String string)
void clearHints(boolean withFade)