Starsector API
Loading...
Searching...
No Matches
ReputationChangeTracker.java
Go to the documentation of this file.
1package com.fs.starfarer.api.impl.campaign.shared;
2
3import java.util.HashMap;
4import java.util.Map;
5
6import com.fs.starfarer.api.Global;
7import com.fs.starfarer.api.campaign.FactionAPI;
8import com.fs.starfarer.api.impl.campaign.ids.Factions;
9
11 public static class ReputationChangeData {
12 private long lastPositiveChange;
13 private long lastNegativeChange;
14 private float lastValue;
15
16 public long getLastPositiveChange() {
17 return lastPositiveChange;
18 }
19 public void setLastPositiveChange(long lastChange) {
20 this.lastPositiveChange = lastChange;
21 }
22 public float getLastValue() {
23 return lastValue;
24 }
25 public void setLastValue(float lastValue) {
26 this.lastValue = lastValue;
27 }
28 public long getLastNegativeChange() {
29 return lastNegativeChange;
30 }
31 public void setLastNegativeChange(long lastNegativeChange) {
32 this.lastNegativeChange = lastNegativeChange;
33 }
34 }
35
36 private Map<String, ReputationChangeData> repData = new HashMap<String, ReputationChangeData>();
37
38 public void advance(float days) {
39
40 for (FactionAPI faction : Global.getSector().getAllFactions()) {
41 if (faction.isPlayerFaction()) continue;
42
43 ReputationChangeData data = getDataFor(faction.getId());
44 float rep = faction.getRelationship(Factions.PLAYER);
45 if (data.getLastValue() != rep) {
46 if (data.getLastValue() > rep) {
47 data.setLastNegativeChange(Global.getSector().getClock().getTimestamp());
48 } else {
49 data.setLastPositiveChange(Global.getSector().getClock().getTimestamp());
50 }
51 data.setLastValue(rep);
52 }
53 }
54 }
55
56 public float getDaysSinceLastPositiveChange(String factionId) {
57 ReputationChangeData data = getDataFor(factionId);
58 return Global.getSector().getClock().getElapsedDaysSince(data.getLastPositiveChange());
59 }
60 public float getDaysSinceLastNegativeChange(String factionId) {
61 ReputationChangeData data = getDataFor(factionId);
62 return Global.getSector().getClock().getElapsedDaysSince(data.getLastPositiveChange());
63 }
64
65 public ReputationChangeData getDataFor(String factionId) {
66 ReputationChangeData data = repData.get(factionId);
67 if (data == null) {
68 data = new ReputationChangeData();
69 FactionAPI faction = Global.getSector().getFaction(factionId);
70 float rep = faction.getRelationship(Factions.PLAYER);
71 data.setLastValue(rep);
72 data.setLastPositiveChange(Global.getSector().getClock().getTimestamp());
73 data.setLastNegativeChange(Global.getSector().getClock().getTimestamp());
74 repData.put(factionId, data);
75 }
76 return data;
77 }
78}
79
80
81
82
83
84
85
86
87
88
89
static SectorAPI getSector()
Definition Global.java:59