Starsector API
Loading...
Searching...
No Matches
BroadcastPlayerAction.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.rulecmd;
2
3import java.util.List;
4import java.util.Map;
5
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.CampaignFleetAPI;
8import com.fs.starfarer.api.campaign.InteractionDialogAPI;
9import com.fs.starfarer.api.campaign.SectorEntityToken;
10import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI;
11import com.fs.starfarer.api.campaign.ai.CampaignFleetAIAPI.ActionType;
12import com.fs.starfarer.api.campaign.rules.MemoryAPI;
13import com.fs.starfarer.api.util.Misc;
14import com.fs.starfarer.api.util.Misc.Token;
15
16
18
19 //BroadcastPlayerAction <type> <range> <responseVariable>
20 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
21
22 ActionType type = Enum.valueOf(ActionType.class, params.get(0).string);
23 float range = Float.parseFloat(params.get(1).string);
24 String responseVariable = params.get(2).string;
25
26 final SectorEntityToken target = dialog.getInteractionTarget();
27 if (target.getContainingLocation() == null) return false;
28
29 final CampaignFleetAPI playerFleet = Global.getSector().getPlayerFleet();
30
31 broadcast(type, range, responseVariable, playerFleet, target);
32
33 return true;
34 }
35
36 public static void broadcast(ActionType type, float range, String responseVariable,
38 broadcast(type, range, responseVariable, actor, target, null);
39 }
40 public static void broadcast(ActionType type, float range, String responseVariable,
42 List<CampaignFleetAPI> fleets = target.getContainingLocation().getFleets();
43 for (CampaignFleetAPI fleet : fleets) {
44 if (fleet == exclude) continue;
45 if (fleet.getAI() instanceof CampaignFleetAIAPI) {
46 float dist = Misc.getDistance(target.getLocation(), fleet.getLocation());
47 if (dist <= range) {
48 CampaignFleetAIAPI ai = (CampaignFleetAIAPI) fleet.getAI();
49 ai.reportNearbyAction(type, actor, target, responseVariable);
50 }
51 }
52 }
53 }
54
55}
56
57
58
59
60
61
static SectorAPI getSector()
Definition Global.java:65
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
static void broadcast(ActionType type, float range, String responseVariable, SectorEntityToken actor, SectorEntityToken target)
static void broadcast(ActionType type, float range, String responseVariable, SectorEntityToken actor, SectorEntityToken target, SectorEntityToken exclude)
static float getDistance(SectorEntityToken from, SectorEntityToken to)
Definition Misc.java:599
List< CampaignFleetAPI > getFleets()
void reportNearbyAction(ActionType type, SectorEntityToken actor, SectorEntityToken target, String responseVariable)