Starsector API
Loading...
Searching...
No Matches
ShrineCMD.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.rulecmd.missions;
2
3import java.util.List;
4import java.util.Map;
5
6import com.fs.starfarer.api.EveryFrameScript;
7import com.fs.starfarer.api.Global;
8import com.fs.starfarer.api.campaign.InteractionDialogAPI;
9import com.fs.starfarer.api.campaign.PlanetAPI;
10import com.fs.starfarer.api.campaign.SectorEntityToken;
11import com.fs.starfarer.api.campaign.rules.MemoryAPI;
12import com.fs.starfarer.api.impl.campaign.intel.misc.LuddicShrineIntel;
13import com.fs.starfarer.api.impl.campaign.rulecmd.BaseCommandPlugin;
14import com.fs.starfarer.api.util.Misc.Token;
15
21public class ShrineCMD extends BaseCommandPlugin {
22
23
24 public static class ShrineMusicStopFailsafe implements EveryFrameScript {
25 public boolean done = false;
26 public String musicId;
27
28 public ShrineMusicStopFailsafe(String musicId) {
29 this.musicId = musicId;
30 }
31 public void advance(float amount) {
32 if (!Global.getSector().isPaused()) {
33 if (musicId.equals(Global.getSoundPlayer().getCurrentMusicId())) {
35 }
36 done = true;
37 }
38 }
39 public boolean isDone() {
40 return done;
41 }
42 public boolean runWhilePaused() {
43 return false;
44 }
45 }
46
47 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
48 if (dialog == null) return false;
49
50 String command = params.get(0).getString(memoryMap);
51 if (command == null) return false;
52
53 SectorEntityToken entity = dialog.getInteractionTarget();
54 if (entity.getMarket() != null && !entity.getMarket().isPlanetConditionMarketOnly()) {
55 PlanetAPI planet = entity.getMarket().getPlanetEntity();
56 if (planet != null) {
57 entity = planet;
58 }
59 }
60 if ("addIntel".equals(command)) {
61 if (params.size() > 1) {
62 String id = params.get(1).getString(memoryMap);
63 entity = LuddicShrineIntel.getEntity(id);
64 }
65 LuddicShrineIntel.addShrineIntelIfNeeded(entity, dialog.getTextPanel());
66 return true;
67 } else if ("setVisited".equals(command)) {
68 if (params.size() > 1) {
69 String id = params.get(1).getString(memoryMap);
70 entity = LuddicShrineIntel.getEntity(id);
71 }
72 LuddicShrineIntel.addShrineIntelIfNeeded(entity, dialog.getTextPanel(), true);
73 LuddicShrineIntel.setVisited(entity, dialog.getTextPanel());
74 return true;
75 } else if ("playMusic".equals(command)) {
76 String shrineMusic = "music_luddite_shrine";
77 Global.getSoundPlayer().playCustomMusic(1, 1, shrineMusic, true);
78 // failsafe is not actually necessary; leaving the entity will give the music player a kick anyway
79// if (!Global.getSector().hasScript(ShrineMusicStopFailsafe.class)) {
80// Global.getSector().addScript(new ShrineMusicStopFailsafe(shrineMusic));
81// }
82 } else if ("endMusic".equals(command)) {
84 }
85
86 return false;
87 }
88}
89
90
91
92
93
94
95
96
97
98
static SoundPlayerAPI getSoundPlayer()
Definition Global.java:43
static SectorAPI getSector()
Definition Global.java:59
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
void playCustomMusic(int fadeOutIfAny, int fadeIn, String musicSetId)