Starsector API
Loading...
Searching...
No Matches
SpecialItemRaidObjectivePluginImpl.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.SpecialItemData;
10import com.fs.starfarer.api.campaign.SpecialItemSpecAPI;
11import com.fs.starfarer.api.campaign.TextPanelAPI;
12import com.fs.starfarer.api.campaign.CargoAPI.CargoItemType;
13import com.fs.starfarer.api.campaign.econ.Industry;
14import com.fs.starfarer.api.campaign.econ.MarketAPI;
15import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.MarketCMD.RaidDangerLevel;
16import com.fs.starfarer.api.ui.TooltipMakerAPI;
17import com.fs.starfarer.api.util.Misc;
18
20
21 protected String data;
22
23 public SpecialItemRaidObjectivePluginImpl(MarketAPI market, String id, String data, Industry source) {
24 super(market, id);
25 this.data = data;
27 }
28
29 @Override
30 public void setSource(Industry source) {
31 super.setSource(source);
32 RaidDangerLevel level = getDangerLevel();
33 int marines = level.marineTokens;
34 if (source != null) {
35 marines = source.adjustMarineTokensToRaidItem(id, data, marines);
36 }
37 setMarinesRequired(marines);
38 }
39
40 public String getData() {
41 return data;
42 }
43
44 public void setData(String data) {
45 this.data = data;
46 }
47
48 public float getQuantity(int marines) {
49 return 1;
50 }
51
52 public int getValue(int marines) {
53 return (int) (getQuantity(marines) * getItemSpec().getBasePrice());
54 }
55
56 public int getCargoSpaceNeeded() {
57 return (int) getItemSpec().getCargoSpace();
58 }
59
60 public int getFuelSpaceNeeded() {
61 return 0;
62 }
63
65 return (int) getItemSpec().getBasePrice();
66 }
67
68 public int getDeficitCaused() {
69 return 0;
70 }
71
72 public SpecialItemSpecAPI getItemSpec() {
74 }
75
76 public RaidDangerLevel getDangerLevel() {
77 RaidDangerLevel level = getItemSpec().getBaseDanger();
78 if (source != null) {
79 level = source.adjustItemDangerLevel(id, null, level);
80 }
81 return level;
82 }
83
84 public float getQuantitySortValue() {
85 SpecialItemSpecAPI spec = getItemSpec();
86 float add = 0;
87 if (spec != null) {
88 add = spec.getOrder();
89 }
90 return QUANTITY_SORT_TIER_2 + add + 1000;
91 }
92
93 public String getName() {
94 return getItemSpec().getName();
95 }
96
97 public CargoStackAPI getStackForIcon() {
98 CargoStackAPI stack = Global.getFactory().createCargoStack(CargoItemType.SPECIAL,
99 new SpecialItemData(getId(), getData()), null);
100 return stack;
101 }
102
103 public int performRaid(CargoAPI loot, Random random, float lootMult, TextPanelAPI text) {
104 if (marinesAssigned <= 0) return 0;
105
106 if (source != null) {
107 SpecialItemData sid = source.getSpecialItem();
108 if ((getId() == null || getId().equals(sid.getId())) &&
109 (getData() == null || getData().equals(sid.getData()))) {
110 source.setSpecialItem(null);
111 }
112 }
113 loot.addSpecial(new SpecialItemData(getId(), getData()), 1);
114
115 int xpGained = (int) (1 * getItemSpec().getBasePrice() * XP_GAIN_VALUE_MULT);
116 return xpGained;
117 }
118
119 @Override
120 public boolean hasTooltip() {
121 return true;
122 }
123
124 @Override
125 public void createTooltip(TooltipMakerAPI t, boolean expanded) {
126 float opad = 10f;
127 float pad = 3f;
128 Color h = Misc.getHighlightColor();
129 Color bad = Misc.getNegativeHighlightColor();
130 Color good = Misc.getPositiveHighlightColor();
131
132 //Description desc = Global.getSettings().getDescription(id, Type.RESOURCE);
133
134 t.addPara(getItemSpec().getDescFirstPara(), 0f);
135
136 t.addPara("Base value: %s per unit", opad, h, Misc.getDGSCredits(getItemSpec().getBasePrice()));
137 }
138}
139
140
141
142
static SettingsAPI getSettings()
Definition Global.java:51
static FactoryAPI getFactory()
Definition Global.java:35
int performRaid(CargoAPI loot, Random random, float lootMult, TextPanelAPI text)
SpecialItemRaidObjectivePluginImpl(MarketAPI market, String id, String data, Industry source)
CargoStackAPI createCargoStack(CargoItemType type, Object data, CargoAPI cargo)
SpecialItemSpecAPI getSpecialItemSpec(String itemId)