Starsector API
Loading...
Searching...
No Matches
PrintWreckDescription.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.rulecmd.salvage;
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.CargoAPI;
9import com.fs.starfarer.api.campaign.FactionAPI;
10import com.fs.starfarer.api.campaign.InteractionDialogAPI;
11import com.fs.starfarer.api.campaign.OptionPanelAPI;
12import com.fs.starfarer.api.campaign.SectorEntityToken;
13import com.fs.starfarer.api.campaign.TextPanelAPI;
14import com.fs.starfarer.api.campaign.rules.MemoryAPI;
15import com.fs.starfarer.api.combat.ShipHullSpecAPI;
16import com.fs.starfarer.api.combat.ShipVariantAPI;
17import com.fs.starfarer.api.impl.campaign.DerelictShipEntityPlugin;
18import com.fs.starfarer.api.impl.campaign.rulecmd.BaseCommandPlugin;
19import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.ShipRecoverySpecial;
20import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.ShipRecoverySpecial.PerShipData;
21import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.special.ShipRecoverySpecial.ShipCondition;
22import com.fs.starfarer.api.util.Misc;
23import com.fs.starfarer.api.util.Misc.Token;
24
30
31 public static final String TRAPPED = "$trapped";
32 public static final String LOCKED = "$locked";
33 public static final String CAN_UNLOCK = "$canUnlock";
34
35
36 public static final float BREAK_KEEP_FRACTION = 0.5f;
37
38
39 protected CampaignFleetAPI playerFleet;
40 protected SectorEntityToken entity;
41 protected FactionAPI playerFaction;
42 protected FactionAPI entityFaction;
43 protected TextPanelAPI text;
44 protected OptionPanelAPI options;
45 protected CargoAPI cargo;
46 protected MemoryAPI memory;
47 protected InteractionDialogAPI dialog;
48 private DerelictShipEntityPlugin plugin;
49 private Map<String, MemoryAPI> memoryMap;
50
51
52 public boolean execute(String ruleId, InteractionDialogAPI dialog, List<Token> params, Map<String, MemoryAPI> memoryMap) {
53
54 this.dialog = dialog;
55 this.memoryMap = memoryMap;
56
57 memory = getEntityMemory(memoryMap);
58 entity = dialog.getInteractionTarget();
59 text = dialog.getTextPanel();
60 options = dialog.getOptionPanel();
61 playerFleet = Global.getSector().getPlayerFleet();
62 cargo = playerFleet.getCargo();
63 playerFaction = Global.getSector().getPlayerFaction();
64 entityFaction = entity.getFaction();
65 plugin = (DerelictShipEntityPlugin) entity.getCustomPlugin();
66
67 PerShipData shipData = plugin.getData().ship;
68 boolean nameKnown = ShipRecoverySpecial.isNameKnown(shipData.condition);
69 //String shipName =
70 //String shipVariant
71 //plugin.getData().ship.
72
73 ShipVariantAPI variant = shipData.variant;
74 if (variant == null && shipData.variantId != null) {
75 variant = Global.getSettings().getVariant(shipData.variantId);
76 }
77
78 ShipCondition condition = shipData.condition;
79 String conStr = "";
80 switch (condition) {
81 case PRISTINE:
82 conStr = "nearly undamaged";
83 break;
84 case GOOD:
85 conStr = "in good condition";
86 break;
87 case AVERAGE:
88 conStr = "showing signs of damage";
89 break;
90 case BATTERED:
91 conStr = "battered";
92 break;
93 case WRECKED:
94 conStr = "heavily damaged";
95 break;
96 }
97
98 if (variant == null) {
99 String str = "A derelict ship, drifting through space.";
100 text.addParagraph(str);
101 } else {
102 String hullType = "";
103 ShipHullSpecAPI spec = variant.getHullSpec();
104 if (spec.hasHullName()) hullType += spec.getHullNameWithDashClass();
105 if (spec.hasDesignation()) {
106 if (!hullType.isEmpty()) hullType += " ";
107 hullType += spec.getDesignation().toLowerCase();
108 }
109
110 String str = "A derelict " + hullType + ", drifting through space.";
111
112 text.addParagraph(str);
113 }
114
115 text.addParagraph("It is " + conStr + ", " +
116 "though determining whether it's recoverable or not will require closer examination.");
117
118
119// float daysLeft = plugin.getData().durationDays;
120// if (daysLeft >= 1000) {
121// text.addParagraph("The ship is in a stable orbit.");
122// } else {
123// String atLeastTime = Misc.getAtLeastStringForDays((int) daysLeft);
124// text.addParagraph("The ship is not in a stable orbit, but its location is predictable" + atLeastTime + ".");
125// //text.addParagraph("The ship is not inis unstable, but should not drift apart for " + atLeastTime + ".");
126// }
127
128
129 return true;
130 }
131
132
133 public String getString(String format) {
134 return Misc.getStringWithTokenReplacement(format, entity, memoryMap);
135 }
136
137
138}
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
static SettingsAPI getSettings()
Definition Global.java:51
static SectorAPI getSector()
Definition Global.java:59
static MemoryAPI getEntityMemory(Map< String, MemoryAPI > memoryMap)
boolean execute(String ruleId, InteractionDialogAPI dialog, List< Token > params, Map< String, MemoryAPI > memoryMap)
ShipVariantAPI getVariant(String variantId)