1package com.fs.starfarer.api.impl.campaign.rulecmd.salvage;
3import java.util.ArrayList;
6import java.util.Random;
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.CampaignFleetAPI;
10import com.fs.starfarer.api.campaign.CargoAPI;
11import com.fs.starfarer.api.campaign.CargoStackAPI;
12import com.fs.starfarer.api.campaign.FactionAPI;
13import com.fs.starfarer.api.campaign.InteractionDialogAPI;
14import com.fs.starfarer.api.campaign.OptionPanelAPI;
15import com.fs.starfarer.api.campaign.SectorEntityToken;
16import com.fs.starfarer.api.campaign.TextPanelAPI;
17import com.fs.starfarer.api.campaign.econ.CommoditySpecAPI;
18import com.fs.starfarer.api.campaign.rules.MemoryAPI;
19import com.fs.starfarer.api.characters.PersonAPI;
20import com.fs.starfarer.api.fleet.FleetMemberAPI;
21import com.fs.starfarer.api.impl.campaign.ids.Commodities;
22import com.fs.starfarer.api.impl.campaign.rulecmd.BaseCommandPlugin;
23import com.fs.starfarer.api.util.Misc;
24import com.fs.starfarer.api.util.Misc.Token;
30 public static class DemandData {
31 public CargoAPI cargo;
32 public List<FleetMemberAPI> ships =
new ArrayList<FleetMemberAPI>();
33 public int credits = 0;
34 public boolean hasAnythingWorthwhile =
true;
44 protected TextPanelAPI
text;
48 protected InteractionDialogAPI
dialog;
57 protected DemandData
data =
new DemandData();
63 public boolean execute(String ruleId, InteractionDialogAPI
dialog, List<Token> params, Map<String, MemoryAPI>
memoryMap) {
80 String command = params.get(0).getString(
memoryMap);
81 if (command ==
null)
return false;
97 person =
dialog.getInteractionTarget().getActivePerson();
104 String key =
"$DemandCargo_temp";
105 MemoryAPI mem =
otherFleet.getMemoryWithoutUpdate();
106 if (mem.contains(key)) {
107 data = (DemandData) mem.get(key);
109 data =
new DemandData();
111 mem.set(key,
data, 0f);
114 if (command.equals(
"selectCargo")) {
116 }
else if (command.equals(
"playerHasValuableCargo")) {
124 String key =
"$DemandCargo_random";
125 MemoryAPI mem =
otherFleet.getMemoryWithoutUpdate();
126 Random random =
null;
127 if (mem.contains(key)) {
128 random = (Random) mem.get(key);
134 random =
new Random(seed);
136 mem.set(key, random, 30f);
144 for (FleetMemberAPI member :
playerFleet.getFleetData().getMembersListCopy()) {
145 fleetValue += member.getHullSpec().getBaseValue();
148 for (CargoStackAPI stack :
playerCargo.getStacksCopy()) {
149 fleetValue += stack.getBaseValuePerUnit() * stack.getSize();
152 float demandFraction = 0.2f;
154 float rel =
otherFleet.getFaction().getRelToPlayer().getRel();
157 demandFraction *= (0.2f + 0.8f * rel);
160 int demandValue = (int) (fleetValue * demandFraction);
173 for (CargoStackAPI stack :
playerCargo.getStacksCopy()) {
174 CommoditySpecAPI spec = stack.getResourceIfResource();
175 if (spec !=
null && spec.getDemandClass().equals(Commodities.AI_CORES)) {
176 copy.addFromStack(stack);
static FactoryAPI getFactory()
static SectorAPI getSector()
static MemoryAPI getEntityMemory(Map< String, MemoryAPI > memoryMap)
Map< String, MemoryAPI > memoryMap
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
CampaignFleetAPI playerFleet
CampaignFleetAPI otherFleet
InteractionDialogAPI dialog
void computeAndPrintDemands()
CargoAPI createCargo(boolean unlimitedStacks)