diff --git a/.gitignore b/.gitignore
index 8117b8f..1395c2d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,2 @@
.idea/
out/
-*.iml
diff --git a/satisfactory.iml b/satisfactory.iml
new file mode 100644
index 0000000..fe704ad
--- /dev/null
+++ b/satisfactory.iml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Database.java b/src/Database.java
index 7b8e72d..b1c92ba 100644
--- a/src/Database.java
+++ b/src/Database.java
@@ -64,7 +64,7 @@ public class Database {
public static final Item VersatileFrameWork = new Part("Versatile Framework");
public static final Item Nobelisk = new Part("Nobelisk");
public static final Item Water = new RawFluid("Water");
- public static final Item CrudeOil = new RawFluid("Water");
+ public static final Item CrudeOil = new RawFluid("Crude Oil");
public static final Item HeavyOilResidue = new ProcessedFluid("Heavy Oil Residue");
public static final Item Fuel = new ProcessedFluid("Fuel");
public static final Item LiquidBiofuel = new ProcessedFluid("Liquid Biofuel");
diff --git a/src/Test.java b/src/Test.java
index e314dcc..c52fe2c 100644
--- a/src/Test.java
+++ b/src/Test.java
@@ -1,8 +1,28 @@
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import items.Item;
+import items.Recipe;
+
import java.util.Map;
public class Test {
- public static void main(String[] args) {
+ public static void main(String[] args) throws JsonProcessingException {
//System.out.println(Database.AdaptiveControlUnit);
- System.out.println(Database.HeavyModularFrame.getRecipes().stream().findFirst().get().getTotalRequirements());
+ Map- totalRequirements = Database.HeavyModularFrame.getRecipes().stream().findFirst().get().getTotalRequirements();
+ System.out.println(totalRequirements);
+
+ ObjectMapper om = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
+
+ String json = om.writeValueAsString(totalRequirements);
+ System.out.println(json);
+
+ Map
- rawOnly = Database.HeavyModularFrame.getRecipes().iterator().next().getRawOnly();
+ String json2 = om.writeValueAsString(rawOnly);
+
+ String json3 = om.writeValueAsString(Recipe.getInputs(rawOnly));
+ System.out.println(json2);
+ System.out.println(json3);
+ System.out.println(om.writeValueAsString(Database.AdaptiveControlUnit.getRecipes().iterator().next().getRawOnly()));
}
}
diff --git a/src/items/Item.java b/src/items/Item.java
index 2788510..517bd8a 100644
--- a/src/items/Item.java
+++ b/src/items/Item.java
@@ -5,6 +5,7 @@ import java.util.HashSet;
import java.util.Set;
public class Item {
+ protected boolean isRaw = false;
private String name;
private Set recipes;
@@ -24,9 +25,10 @@ public class Item {
}
public void add(Recipe recipe) {
- add(recipe,1);
+ add(recipe, 1);
}
- public void add(Recipe recipe, int amount){
+
+ public void add(Recipe recipe, int amount) {
recipes.add(recipe);
recipe.checkOutput(this, amount);
}
@@ -35,10 +37,14 @@ public class Item {
return name;
}
- public Set getRecipes(){
+ public Set getRecipes() {
return recipes;
}
+ public boolean isRaw() {
+ return isRaw;
+ }
+
@Override
public String toString() {
return "Item{" +
diff --git a/src/items/Recipe.java b/src/items/Recipe.java
index ebbdf8b..6641478 100644
--- a/src/items/Recipe.java
+++ b/src/items/Recipe.java
@@ -2,6 +2,7 @@ package items;
import java.util.HashMap;
import java.util.Map;
+import java.util.stream.Collectors;
public class Recipe {
private Map
- inputs;
@@ -37,6 +38,14 @@ public class Recipe {
this.isHandCraftable = isHandCraftable;
}
+ public static Map getInputs(Map
- values) {
+ Map names = new HashMap<>();
+ for (Item item : values.keySet()) {
+ names.put(item.getName(), values.get(item));
+ }
+ return names;
+ }
+
public void addInput(Item item, int amount) {
inputs.put(item, amount);
}
@@ -78,20 +87,29 @@ public class Recipe {
for (Item i : inputs.keySet()) {
queue.put(i, inputs.get(i));
}
- while (!queue.isEmpty()){
+ while (!queue.isEmpty()) {
Item i = queue.keySet().iterator().next();
int amount = queue.remove(i);
- total.put(i, total.getOrDefault(i,0)+ amount);
- if (i.getRecipes().isEmpty()){
+ total.put(i, total.getOrDefault(i, 0) + amount);
+ if (i.getRecipes().isEmpty()) {
continue;
}
Recipe r = i.getRecipes().iterator().next();
Map
- subRequirements = r.getTotalRequirements();
for (Item subItem : subRequirements.keySet()) {
int subAmount = subRequirements.get(subItem);
- total.put(subItem, total.getOrDefault(subItem, 0) + subAmount*amount);
+ total.put(subItem, total.getOrDefault(subItem, 0) + subAmount * amount);
}
}
return total;
}
+
+ public Map
- getRawOnly() {
+ Map
- totals = getTotalRequirements();
+ Map
- raws = new HashMap<>();
+ for (Item item : totals.keySet().stream().filter(Item::isRaw).collect(Collectors.toList())) {
+ raws.put(item, totals.get(item));
+ }
+ return raws;
+ }
}
diff --git a/src/items/type/Ore.java b/src/items/type/Ore.java
index 2cc22ff..af6e5c5 100644
--- a/src/items/type/Ore.java
+++ b/src/items/type/Ore.java
@@ -8,13 +8,20 @@ import java.util.Set;
public class Ore extends Item {
public Ore(String name, Set recipes) {
super(name, recipes);
+ setIsRaw();
}
public Ore(String name, Recipe... recipes) {
super(name, recipes);
+ setIsRaw();
}
public Ore(String name) {
super(name);
+ setIsRaw();
+ }
+
+ private void setIsRaw() {
+ isRaw = true;
}
}
diff --git a/src/items/type/ProcessedFluid.java b/src/items/type/ProcessedFluid.java
index 0ae19d3..8cec3d8 100644
--- a/src/items/type/ProcessedFluid.java
+++ b/src/items/type/ProcessedFluid.java
@@ -4,7 +4,7 @@ import items.Recipe;
import java.util.Set;
-public class ProcessedFluid extends Fluid{
+public class ProcessedFluid extends Fluid {
public ProcessedFluid(String name, Set recipes) {
super(name, recipes);
}
diff --git a/src/items/type/RawFluid.java b/src/items/type/RawFluid.java
index 8ed7460..25d2a39 100644
--- a/src/items/type/RawFluid.java
+++ b/src/items/type/RawFluid.java
@@ -4,16 +4,23 @@ import items.Recipe;
import java.util.Set;
-public class RawFluid extends Fluid{
+public class RawFluid extends Fluid {
public RawFluid(String name, Set recipes) {
super(name, recipes);
+ setIsRaw();
}
public RawFluid(String name, Recipe... recipes) {
super(name, recipes);
+ setIsRaw();
}
public RawFluid(String name) {
super(name);
+ setIsRaw();
+ }
+
+ private void setIsRaw() {
+ isRaw = true;
}
}