1package com.fs.starfarer.api.impl.campaign.population;
3import java.util.ArrayList;
4import java.util.Collections;
5import java.util.Comparator;
6import java.util.LinkedHashMap;
9import com.fs.starfarer.api.combat.MutableStat;
10import com.fs.starfarer.api.combat.MutableStat.StatMod;
11import com.fs.starfarer.api.util.Misc;
15 private LinkedHashMap<String, Float> comp =
new LinkedHashMap<String, Float>();
17 private MutableStat weight =
new MutableStat(0f);
20 Object readResolve() {
22 weight =
new MutableStat(0f);
27 public LinkedHashMap<String, Float>
getComp() {
31 public float get(String id) {
32 Float val = comp.get(
id);
33 if (val ==
null)
return 0f;
37 public void set(String id,
float value) {
41 public void add(String
id,
float value) {
42 set(id,
get(id) + value);
50 for (StatMod mod : weight.getFlatMods().values()) {
52 str +=
"<b>+" + (int)mod.getValue() +
"</b> " + mod.getDesc() +
"\n";
54 str +=
"<b>" + (int) mod.getValue() +
"</b> " + mod.getDesc() +
"\n";
59 List<String> keys =
new ArrayList<String>(comp.keySet());
60 Collections.sort(keys,
new Comparator<String>() {
61 public int compare(String o1, String o2) {
62 return (
int) Math.signum(
get(o2) -
get(o1));
67 for (String key : keys) {
69 float val = Misc.getRoundedValueFloat(
get(key));
70 str += key +
": " + val +
"\n";
77 return weight.getModifiedValue();
82 for (StatMod mod : weight.getFlatMods().values()) {
92 for (StatMod mod : weight.getFlatMods().values()) {
112 for (Float f : comp.values()) {
124 float w = weight.getModifiedValue();
134 for (Float f : comp.values()) {
138 if (w <= 0 || total <= 0) {
139 for (String
id : comp.keySet()) {
145 for (String
id : comp.keySet()) {
147 set(id, f * w / total);
float getPositiveWeight()
float getNegativeWeight()
void normalizeToPositive()
void setWeight(float weight)
void add(String id, float value)
static final String SET_WEIGHT_ID
void normalizeToWeight(float w)
LinkedHashMap< String, Float > getComp()