Starsector API
Loading...
Searching...
No Matches
AICoreGroundRaidObjectivePluginImpl.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.graid;
2
3import java.awt.Color;
4import java.util.Random;
5
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.CargoAPI;
8import com.fs.starfarer.api.campaign.CargoStackAPI;
9import com.fs.starfarer.api.campaign.TextPanelAPI;
10import com.fs.starfarer.api.campaign.CargoAPI.CargoItemType;
11import com.fs.starfarer.api.campaign.econ.CommoditySpecAPI;
12import com.fs.starfarer.api.campaign.econ.Industry;
13import com.fs.starfarer.api.campaign.econ.MarketAPI;
14import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.MarketCMD.RaidDangerLevel;
15import com.fs.starfarer.api.loading.Description;
16import com.fs.starfarer.api.loading.Description.Type;
17import com.fs.starfarer.api.ui.TooltipMakerAPI;
18import com.fs.starfarer.api.util.Misc;
19
21
22 public AICoreGroundRaidObjectivePluginImpl(MarketAPI market, String id, Industry source) {
23 super(market, id);
25 }
26
27 @Override
28 public void setSource(Industry source) {
29 super.setSource(source);
30 RaidDangerLevel level = getDangerLevel();
31 int marines = level.marineTokens;
32 if (source != null) {
33 marines = source.adjustMarineTokensToRaidItem(id, null, marines);
34 }
35 setMarinesRequired(marines);
36 }
37
38 public float getQuantity(int marines) {
39 return 1;
40 }
41
42 public int getValue(int marines) {
43 return (int) (getQuantity(marines) * getCommoditySpec().getBasePrice());
44 }
45
46 public int getCargoSpaceNeeded() {
47 return (int) getCommoditySpec().getCargoSpace();
48 }
49
50 public int getFuelSpaceNeeded() {
51 return 0;
52 }
53
55 return (int) getCommoditySpec().getBasePrice();
56 }
57
58 public CommoditySpecAPI getCommoditySpec() {
60 }
61
62 public RaidDangerLevel getDangerLevel() {
63 RaidDangerLevel level = getCommoditySpec().getBaseDanger();
64 if (source != null) {
65 level = source.adjustItemDangerLevel(id, null, level);
66 }
67 return level;
68 }
69
70 public float getQuantitySortValue() {
71 CommoditySpecAPI spec = getCommoditySpec();
72 float add = 0;
73 if (spec != null) {
74 add = spec.getOrder();
75 }
76 return QUANTITY_SORT_TIER_2 + add;
77 }
78
79 public String getName() {
80 return getCommoditySpec().getName();
81 }
82
83 public CargoStackAPI getStackForIcon() {
84 CargoStackAPI stack = Global.getFactory().createCargoStack(CargoItemType.RESOURCES, getId(), null);
85 return stack;
86 }
87
88 public int performRaid(CargoAPI loot, Random random, float lootMult, TextPanelAPI text) {
89 if (marinesAssigned <= 0) return 0;
90
91 if (source != null) {
92 if (getId() == null || getId().equals(source.getAICoreId())) {
93 source.setAICoreId(null);
94 }
95 }
96 loot.addCommodity(getId(), 1f);
97
98 int xpGained = (int) (1 * getCommoditySpec().getBasePrice() * XP_GAIN_VALUE_MULT);
99 return xpGained;
100 }
101
102 @Override
103 public boolean hasTooltip() {
104 return true;
105 }
106
107 @Override
108 public void createTooltip(TooltipMakerAPI t, boolean expanded) {
109 float opad = 10f;
110 float pad = 3f;
111 Color h = Misc.getHighlightColor();
112 Color bad = Misc.getNegativeHighlightColor();
113 Color good = Misc.getPositiveHighlightColor();
114
115 Description desc = Global.getSettings().getDescription(id, Type.RESOURCE);
116
117 t.addPara(desc.getText1FirstPara(), 0f);
118
119 t.addPara("Base value: %s per unit", opad, h, Misc.getDGSCredits(getCommoditySpec().getBasePrice()));
120 }
121
122}
123
124
static SettingsAPI getSettings()
Definition Global.java:51
static FactoryAPI getFactory()
Definition Global.java:35
int performRaid(CargoAPI loot, Random random, float lootMult, TextPanelAPI text)
CargoStackAPI createCargoStack(CargoItemType type, Object data, CargoAPI cargo)
Description getDescription(String id, Type type)
CommoditySpecAPI getCommoditySpec(String commodityId)