1package com.fs.starfarer.api.impl.campaign.rulecmd;
6import org.lwjgl.util.vector.Vector2f;
8import com.fs.starfarer.api.EveryFrameScript;
9import com.fs.starfarer.api.Global;
10import com.fs.starfarer.api.Script;
11import com.fs.starfarer.api.campaign.BaseCampaignEventListenerAndScript;
12import com.fs.starfarer.api.campaign.BattleAPI;
13import com.fs.starfarer.api.campaign.CampaignClockAPI;
14import com.fs.starfarer.api.campaign.CampaignFleetAPI;
15import com.fs.starfarer.api.campaign.CampaignProgressIndicatorAPI;
16import com.fs.starfarer.api.campaign.InteractionDialogAPI;
17import com.fs.starfarer.api.campaign.SectorEntityToken;
18import com.fs.starfarer.api.campaign.rules.MemoryAPI;
19import com.fs.starfarer.api.impl.campaign.LeashScript;
20import com.fs.starfarer.api.util.RuleException;
21import com.fs.starfarer.api.util.Misc.Token;
22import com.fs.starfarer.api.util.Misc.VarAndMemory;
29 private VarAndMemory handle;
30 private VarAndMemory finished;
31 private VarAndMemory interrupted;
32 private VarAndMemory inProgress;
36 if (params.size() != 6) {
37 throw new RuleException(
"Wait usage: Wait $handle duration $finished $interrupted $inProgress <text>");
40 handle = params.get(0).getVarNameAndMemory(memoryMap);
41 final float durationDays = Float.parseFloat(params.get(1).string);
42 finished = params.get(2).getVarNameAndMemory(memoryMap);
43 interrupted = params.get(3).getVarNameAndMemory(memoryMap);
44 inProgress = params.get(4).getVarNameAndMemory(memoryMap);
46 String text =
"Waiting";
47 if (params.size() >= 5) {
48 text = params.get(5).getString(memoryMap);
60 float len = offset.length();
63 offset.scale(radSum / len);
65 offset.set(radSum, 0);
73 private float elapsedDays = 0f;
74 private boolean done =
false;
75 private boolean battleOccured =
false;
76 private boolean interactedWithSomethingElse =
false;
77 public boolean runWhilePaused() {
80 public boolean isDone() {
83 public void advance(
float amount) {
91 inProgress.memory.
set(inProgress.name,
true);
92 inProgress.memory.
expire(inProgress.name, 0.1f);
96 if (battleOccured || interactedWithSomethingElse) {
98 interrupted.memory.
set(interrupted.name,
true);
99 interrupted.memory.
expire(interrupted.name, 2f);
100 handle.memory.
unset(handle.name);
107 finished.memory.
set(finished.name,
true);
108 finished.memory.
expire(finished.name, 0f);
110 inProgress.memory.
unset(inProgress.name);
111 handle.memory.
unset(handle.name);
123 battleOccured =
true;
131 public void reportFleetDespawned(
CampaignFleetAPI fleet, FleetDespawnReason reason, Object param) {
132 if (fleet == playerFleet || fleet == target) {
133 battleOccured =
true;
141 interrupted.memory.
set(interrupted.name,
true);
142 interrupted.memory.
expire(interrupted.name, 2f);
146 handle.memory.
unset(handle.name);
154 handle.memory.
set(handle.name,
this);
static SoundPlayerAPI getSoundPlayer()
static FactoryAPI getFactory()
static SectorAPI getSector()
VarAndMemory getInterrupted()
LeashScript getLeashScript()
CampaignProgressIndicatorAPI getIndicator()
EveryFrameScript getWaitScript()
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
VarAndMemory getInProgress()
VarAndMemory getFinished()
CampaignProgressIndicatorAPI createProgressIndicator(String text, SectorEntityToken target, float durationDays)
SoundAPI playUISound(String id, float pitch, float volume)
List< CampaignFleetAPI > getSnapshotSideFor(CampaignFleetAPI participantOrCombined)
float convertToDays(float realSeconds)
void setInteractionTarget(SectorEntityToken target)
boolean showInteractionDialog(InteractionDialogPlugin plugin, SectorEntityToken interactionTarget)
boolean isShowingDialog()
void setDisallowPlayerInteractionsForOneFrame()
SectorEntityToken getInteractionTarget()
void addEntity(SectorEntityToken entity)
void removeEntity(SectorEntityToken entity)
CampaignFleetAPI getPlayerFleet()
void addScript(EveryFrameScript script)
CampaignClockAPI getClock()
void removeScript(EveryFrameScript script)
void setPaused(boolean paused)
CampaignUIAPI getCampaignUI()
LocationAPI getContainingLocation()
void expire(String key, float days)
void set(String key, Object value)