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,
37 SectorEntityToken actor, SectorEntityToken target) {
38 broadcast(type, range, responseVariable, actor, target, null);
39 }
40 public static void broadcast(ActionType type, float range, String responseVariable,
41 SectorEntityToken actor, SectorEntityToken target, SectorEntityToken exclude) {
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:59
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)