1package com.fs.starfarer.api.impl.campaign.plog;
3import java.io.UnsupportedEncodingException;
4import java.util.ArrayList;
5import java.util.Arrays;
6import java.util.Iterator;
7import java.util.LinkedHashMap;
8import java.util.LinkedHashSet;
11import java.util.zip.DataFormatException;
12import java.util.zip.Deflater;
13import java.util.zip.Inflater;
15import com.fs.starfarer.api.Global;
16import com.fs.starfarer.api.campaign.CampaignClockAPI;
17import com.fs.starfarer.api.campaign.CargoAPI;
18import com.fs.starfarer.api.campaign.InteractionDialogAPI;
19import com.fs.starfarer.api.campaign.PlanetAPI;
20import com.fs.starfarer.api.campaign.PlayerMarketTransaction;
21import com.fs.starfarer.api.campaign.PlayerMarketTransaction.ShipSaleInfo;
22import com.fs.starfarer.api.campaign.econ.CommoditySpecAPI;
23import com.fs.starfarer.api.campaign.econ.Industry;
24import com.fs.starfarer.api.campaign.econ.MarketAPI;
25import com.fs.starfarer.api.campaign.listeners.ColonyInteractionListener;
26import com.fs.starfarer.api.campaign.listeners.ColonyPlayerHostileActListener;
27import com.fs.starfarer.api.campaign.listeners.EconomyTickListener;
28import com.fs.starfarer.api.campaign.listeners.PlayerColonizationListener;
29import com.fs.starfarer.api.combat.ShipAPI.HullSize;
30import com.fs.starfarer.api.impl.campaign.rulecmd.salvage.MarketCMD.TempData;
31import com.fs.starfarer.api.impl.campaign.terrain.BaseTiledTerrain;
32import com.fs.starfarer.api.plugins.SurveyPlugin;
40 public static final String
KEY =
"$core_playthroughLog";
51 public static class PLIntelUIData {
52 public LinkedHashSet<String> selectedGraphs =
new LinkedHashSet<String>();
55 protected List<PLEntry>
entries =
new ArrayList<PLEntry>();
56 protected Map<String, PLStat>
stats =
new LinkedHashMap<String, PLStat>();
57 protected PLIntelUIData
uiData =
new PLIntelUIData();
59 transient protected List<PLSnapshot>
data =
new ArrayList<PLSnapshot>();
90 for (String key :
stats.keySet()) {
106 HullSize size = info.getMember().getHullSpec().getHullSize();
109 addEntry(
"Bought " + info.getMember().getVariant().getHullSpec().getNameWithDesignationWithDashClass());
142 for (String key :
stats.keySet()) {
147 value += (int)((
float) Math.random() * 500);
148 value -= (int)((
float) Math.random() * 500);
149 if (value < 0) value = 0;
152 snapshot.
getData().put(key, value);
177 while (iter.hasNext()) {
179 if (record.
personId.equals(personId) && record.
skillId.equals(skillId) && record.
elite == elite) {
187 protected Object
readResolve() throws DataFormatException, UnsupportedEncodingException {
189 stats =
new LinkedHashMap<String, PLStat>();
193 data =
new ArrayList<PLSnapshot>();
206 Inflater decompressor =
new Inflater();
207 decompressor.setInput(input);
209 StringBuilder result =
new StringBuilder();
210 byte [] temp =
new byte[100];
211 while (!decompressor.finished()) {
212 int read = decompressor.inflate(temp);
214 result.append(
new String(temp, 0, read,
"UTF-8"));
219 saved = result.toString();
223 String [] parts =
saved.split(
"\n");
224 for (String p : parts) {
225 if (p.isEmpty())
continue;
235 saved += s.getString() +
"\n";
237 if (!
saved.isEmpty()) {
241 Deflater compressor =
new Deflater();
242 compressor.setInput(
saved.getBytes(
"UTF-8"));
245 StringBuilder result =
new StringBuilder();
246 byte [] temp =
new byte[100];
247 while (!compressor.finished()) {
248 int read = compressor.deflate(temp);
253 saved = result.toString();
272 if (index < 0 || index >=
data.size()) {
289 if (
data.isEmpty())
return 0;
290 Long val =
data.get(
data.size() - 1).getData().get(key);
291 if (val ==
null)
return 0;
315 uiData =
new PLIntelUIData();
static SettingsAPI getSettings()
static SectorAPI getSector()
List< ShipSaleInfo > getShipsBought()
Map< String, Long > getData()
long getPrevValue(String key)
void removeOfficerSkillRecord(String personId, String skillId, boolean elite)
CampaignClockAPI getDateForIndex(int index)
List< SModRecord > smodsInstalled
void reportPlayerOpenedMarketAndCargoUpdated(MarketAPI market)
void reportPlayerClosedMarket(MarketAPI market)
List< OfficerSkillGainRecord > officerSkillsLearned
void reportTacticalBombardmentFinished(InteractionDialogAPI dialog, MarketAPI market, TempData actionData)
void reportEconomyTick(int iterIndex)
void reportPlayerColonizedPlanet(PlanetAPI planet)
List< PLSnapshot > getData()
PLIntelUIData getUIData()
void reportPlayerOpenedMarket(MarketAPI market)
void reportSaturationBombardmentFinished(InteractionDialogAPI dialog, MarketAPI market, TempData actionData)
static PlaythroughLog getInstance()
List< PLEntry > getEntries()
void reportRaidToDisruptFinished(InteractionDialogAPI dialog, MarketAPI market, TempData actionData, Industry industry)
Map< String, PLStat > getStats()
void addSModsInstalled(SModRecord record)
void addStat(PLStat stat)
List< OfficerSkillGainRecord > getOfficerSkillsLearned()
void takeSnapshot(boolean debug)
Map< String, PLStat > stats
List< SModRecord > getSModsInstalled()
void reportRaidForValuablesFinishedBeforeCargoShown(InteractionDialogAPI dialog, MarketAPI market, TempData actionData, CargoAPI cargo)
void reportPlayerMarketTransaction(PlayerMarketTransaction transaction)
transient List< PLSnapshot > data
void reportPlayerAbandonedColony(MarketAPI colony)
void addOfficerSkillRecord(OfficerSkillGainRecord record)
void reportEconomyMonthEnd()
void addEntry(PLEntry entry)
void addEntry(String text)
void addEntry(String text, boolean story)
static byte[] toByteArray(String s)
static String toHexString(byte[] array)
Object getNewPluginInstance(String id)
CommoditySpecAPI getCommoditySpec(String commodityId)
CampaignClockAPI createClock(long timestamp)
String getEntityNamePrefix()
String getTypeNameWithLowerCaseWorld()
CampaignFleetAPI getPlayerFleet()
CampaignClockAPI getClock()
boolean isInNewGameAdvance()
MemoryAPI getMemoryWithoutUpdate()
ListenerManagerAPI getListenerManager()
PlanetAPI getPlanetEntity()
void addListener(Object listener)
void set(String key, Object value)
long getValueForAllAccrued()
String getSurveyDataType(PlanetAPI planet)