From 33959e80d0823fe50fe028305bd141160a101d02 Mon Sep 17 00:00:00 2001 From: agp8x Date: Sat, 9 Dec 2023 18:41:59 +0100 Subject: [PATCH] updates --- src/main/java/satisfactory/Database.java | 150 +++++++++++++----- src/main/java/satisfactory/Test.java | 4 + src/main/java/satisfactory/items/Item.java | 1 - .../java/satisfactory/items/ItemTest.java | 8 +- .../java/satisfactory/items/Phase4Test.java | 17 ++ .../satisfactory/items/ValidatedValues.java | 13 ++ 6 files changed, 155 insertions(+), 38 deletions(-) create mode 100644 src/test/java/satisfactory/items/Phase4Test.java diff --git a/src/main/java/satisfactory/Database.java b/src/main/java/satisfactory/Database.java index c68c26f..f5f846f 100644 --- a/src/main/java/satisfactory/Database.java +++ b/src/main/java/satisfactory/Database.java @@ -16,7 +16,7 @@ public class Database { // BUILDINGS public static final class Buildings { public static final Building ASSEMBLER = new ProductionBuilding("Assembler", 15, assembler()); - public static final Building BLENDER = new ProductionBuilding("Blender", -9999, blender()); // FIXME values + public static final Building BLENDER = new ProductionBuilding("Blender", 75, blender()); public static final Building CONSTRUCTOR = new ProductionBuilding("Constructor", 4, constructor()); public static final Building CRAFT_BENCH = new ProductionBuilding("Craft Bench", 0, craftBench()); public static final Building EQUIPMENT_WORKSHOP = new ProductionBuilding("Equipment Workshop", 0, equipmentWorkshop()); @@ -43,7 +43,10 @@ public class Database { private static Map blender() { Map cost = new HashMap<>(); - cost.put(TODO_ITEM, 1); //FIXME values + cost.put(Motor, 20); + cost.put(HeavyModularFrame, 10); + cost.put(AluminumCasing, 50); + cost.put(RadioControlUnit, 5); return cost; } @@ -343,7 +346,6 @@ public class Database { public static final Item ClusterNobelisk = new Part("Cluster Nobelisk"); public static final Item ObjectScanner = new Tool("Object Scanner"); public static final Item NobeliskDetonator = new Tool("Nobelisk Detonator"); - private static final Collection items = new HashSet<>(); static { { @@ -376,6 +378,7 @@ public class Database { // Iron Ingot IronIngot.add(new RecipeBuilder().setDuration(2).addInput(IronOre, 1).addOutput(IronIngot, 1).setBuilding(Buildings.SMELTER).createRecipe()); Recipe alt = new RecipeBuilder().setDuration(12).setBuilding(Buildings.REFINERY) + .setName("Pure Iron Ingot") .addInput(IronOre, 7) .addInput(Water, 4) .addOutput(IronIngot, 13).createRecipe(); @@ -384,6 +387,11 @@ public class Database { { // Copper Ingot CopperIngot.add(new RecipeBuilder().setDuration(2).addInput(CopperOre, 1).addOutput(CopperIngot, 1).setBuilding(Buildings.SMELTER).createRecipe()); + Recipe alloyIngot = new RecipeBuilder().setName("Coper Alloy Ingot").setDuration(12).setBuilding(Buildings.FOUNDRY) + .addInput(CopperOre,10) + .addInput(IronOre,5) + .addOutput(CopperIngot,20) + .createRecipe(); } { // Caterium Ingot @@ -437,6 +445,12 @@ public class Database { .addInput(IronPlate, 18) .addInput(Screw, 50).createRecipe(); ReinforcedIronPlate.add(bolted); + Recipe stiched = new RecipeBuilder().setDuration(32).setBuilding(Buildings.ASSEMBLER) + .setName("Stitched Iron Plate") + .addInput(IronPlate,10) + .addInput(Wire,20) + .addOutput(ReinforcedIronPlate,3) + .createRecipe(); ReinforcedIronPlate.setPreference(recipe); } @@ -561,6 +575,7 @@ public class Database { .addInput(Biomass, 5).addOutput(Fabric,1).createRecipe(); Fabric.add(recipe); Recipe alt = new RecipeBuilder().setDuration(2).setBuilding(Buildings.REFINERY) + .setName("Polyester Fabric") .addInput(PolymerResin, 1) .addInput(Water, 1) .addOutput(Fabric, 1).createRecipe(); @@ -609,6 +624,11 @@ public class Database { .addInput(Coal,1) .addInput(Sulfur, 2).addOutput(BlackPowder,1).createRecipe(); BlackPowder.add(recipe); + Recipe alt = new RecipeBuilder().setName("Fine Black Powder").setDuration(16).setBuilding(Buildings.ASSEMBLER) + .addInput(Sulfur,2) + .addInput(CompactedCoal,1) + .addOutput(BlackPowder,4) + .createRecipe(); } { // Color Catridge @@ -635,6 +655,11 @@ public class Database { .addInput(Quickwire, 28) .addInput(Rubber, 12).addOutput(Computer,1).createRecipe(); Computer.add(alternative); + Recipe crystal = new RecipeBuilder().setName("Crystal Computer").setDuration(64).setBuilding(Buildings.ASSEMBLER) + .addInput(CircuitBoard,8) + .addInput(CrystalOscillator, 3) + .addOutput(Computer,3) + .createRecipe(); Computer.setPreference(recipe); } @@ -740,6 +765,11 @@ public class Database { .addInput(CrudeOil, 6) .addOutput(PolymerResin, 3, true).createRecipe(); Fuel.add(recipe); + Recipe diluted = new RecipeBuilder().setName("Diluted Fuel").setDuration(6).setBuilding(Buildings.BLENDER) + .addInput(HeavyOilResidue,5) + .addInput(Water,10) + .addOutput(Fuel,10) + .createRecipe(); Fuel.setPreference(recipe); } @@ -787,6 +817,15 @@ public class Database { .addInput(Water, 4).createRecipe(); Rubber.add(residualRubber); } + { + // Heavy Oil Residue + Recipe recipe = new RecipeBuilder().setDuration(6).setBuilding(Buildings.REFINERY) + .addInput(CrudeOil, 3) + .addOutput(HeavyOilResidue,4) + .addOutput(PolymerResin,2,true) + .createRecipe(); + HeavyOilResidue.add(recipe); + } { // Petroleum Coke Recipe recipe = new RecipeBuilder().setDuration(6).setIsHandCraftable(false).setBuilding(Buildings.REFINERY).addOutput(PetroleumCoke,12) @@ -921,108 +960,147 @@ public class Database { } { //Turbofuel - Recipe recipe = new RecipeBuilder().setDuration(3).setBuilding(Buildings.REFINERY) + Recipe recipe = new RecipeBuilder() + .setDuration(16) + .setBuilding(Buildings.REFINERY) .addInput(Fuel, 6) .addInput(CompactedCoal, 4) - .addOutput(Turbofuel, 5).createRecipe(); + .addOutput(Turbofuel, 5) + .createRecipe(); //TODO: 60/18,75 Turbofuel.add(recipe); - Recipe packaged = new RecipeBuilder().setDuration(3).setBuilding(Buildings.PACKAGER) + Recipe packaged = new RecipeBuilder() + .setDuration(3) + .setBuilding(Buildings.PACKAGER) .addInput(PackagedTurboFuel, 2) .addOutput(Turbofuel, 2) - .addOutput(EmptyCanister, 2, true).createRecipe(); + .addOutput(EmptyCanister, 2, true) + .createRecipe(); Turbofuel.add(packaged); } { // Packaged Turbofuel - Recipe recipe = new RecipeBuilder().setDuration(3).setBuilding(Buildings.PACKAGER) + Recipe recipe = new RecipeBuilder() + .setDuration(3) + .setBuilding(Buildings.PACKAGER) .addInput(Turbofuel, 2) .addInput(EmptyCanister, 2) - .addOutput(PackagedTurboFuel, 2).createRecipe(); + .addOutput(PackagedTurboFuel, 2) + .createRecipe(); PackagedTurboFuel.add(recipe); } { // Compacted Coal - Recipe recipe = new RecipeBuilder().setDuration(12).setBuilding(Buildings.ASSEMBLER) + Recipe recipe = new RecipeBuilder() + .setDuration(12) + .setBuilding(Buildings.ASSEMBLER) .addInput(Coal, 5) .addInput(Sulfur, 5) - .addOutput(CompactedCoal, 5).createRecipe(); - //TODO: 60/25 + .addOutput(CompactedCoal, 5) + .createRecipe(); CompactedCoal.add(recipe); } { // Iron Rebar - IronRebar.add(new RecipeBuilder().setDuration(4).addInput(IronRod,1).addOutput(IronRebar,1).setBuilding(Buildings.CONSTRUCTOR).createRecipe()); + IronRebar.add(new RecipeBuilder() + .setDuration(4) + .addInput(IronRod,1) + .addOutput(IronRebar,1) + .setBuilding(Buildings.CONSTRUCTOR) + .createRecipe()); } { // Stun Rebar - Recipe recipe = new RecipeBuilder().setDuration(6).setBuilding(Buildings.ASSEMBLER) + Recipe recipe = new RecipeBuilder() + .setDuration(6) + .setBuilding(Buildings.ASSEMBLER) .addInput(IronRebar, 1) .addInput(Quickwire, 5) - .addOutput(StunRebar, 1).createRecipe();//TODO , EQUIPMENT_WORKSHOP) + .addOutput(StunRebar, 1) + .createRecipe();//TODO , EQUIPMENT_WORKSHOP) StunRebar.add(recipe); } { // Explosive Rebar - Recipe recipe = new RecipeBuilder().setDuration(12).setBuilding(Buildings.MANUFACTURER) + Recipe recipe = new RecipeBuilder() + .setDuration(12) + .setBuilding(Buildings.MANUFACTURER) .addInput(IronRebar, 1) .addInput(SmokelessPowder, 2) .addInput(SteelPipe, 2) - .addOutput(ExplosiveRebar, 1).createRecipe();//TODO , EQUIPMENT_WORKSHOP) + .addOutput(ExplosiveRebar, 1) + .createRecipe();//TODO , EQUIPMENT_WORKSHOP) ExplosiveRebar.add(recipe); } { // Rebar Gun - Recipe recipe = new RecipeBuilder().setDuration(60).setBuilding(Buildings.EQUIPMENT_WORKSHOP) + Recipe recipe = new RecipeBuilder() + .setDuration(60) + .setBuilding(Buildings.EQUIPMENT_WORKSHOP) .addInput(ReinforcedIronPlate, 6) .addInput(IronRod, 16) .addInput(Screw, 100) - .addOutput(RebarGun, 1).createRecipe(); + .addOutput(RebarGun, 1) + .createRecipe(); RebarGun.add(recipe); } { // Rifle Ammo - Recipe recipe = new RecipeBuilder().setDuration(12).setBuilding(Buildings.ASSEMBLER) + Recipe recipe = new RecipeBuilder() + .setDuration(12) + .setBuilding(Buildings.ASSEMBLER) .addInput(CopperSheet, 3) .addInput(SmokelessPowder, 2) - .addOutput(RifleAmmo, 15).createRecipe();//TODO , EQUIPMENT_WORKSHOP) + .addOutput(RifleAmmo, 15) + .createRecipe();//TODO , EQUIPMENT_WORKSHOP) RifleAmmo.add(recipe); } { // Homing Rifle Ammo - Recipe recipe = new RecipeBuilder().setDuration(12).setBuilding(Buildings.ASSEMBLER) + Recipe recipe = new RecipeBuilder() + .setDuration(12) + .setBuilding(Buildings.ASSEMBLER) .addInput(RifleAmmo, 20) .addInput(HighSpeedConnector, 1) - .addOutput(HomingRifleAmmo, 10).createRecipe();//TODO , EQUIPMENT_WORKSHOP) + .addOutput(HomingRifleAmmo, 10) + .createRecipe();//TODO , EQUIPMENT_WORKSHOP) HomingRifleAmmo.add(recipe); } { // Rifle - Recipe recipe = new RecipeBuilder().setDuration(120).setBuilding(Buildings.EQUIPMENT_WORKSHOP) + Recipe recipe = new RecipeBuilder() + .setDuration(120) + .setBuilding(Buildings.EQUIPMENT_WORKSHOP) .addInput(Motor, 2) .addInput(Rubber, 10) .addInput(SteelPipe, 25) .addInput(Screw, 250) - .addOutput(Rifle, 1).createRecipe(); + .addOutput(Rifle, 1) + .createRecipe(); Rifle.add(recipe); } { // Smokeless Powder - Recipe recipe = new RecipeBuilder().setDuration(6).setBuilding(Buildings.REFINERY) + Recipe recipe = new RecipeBuilder() + .setDuration(6) + .setBuilding(Buildings.REFINERY) .addInput(BlackPowder, 2) .addInput(HeavyOilResidue, 1) - .addOutput(SmokelessPowder, 2).createRecipe(); + .addOutput(SmokelessPowder, 2) + .createRecipe(); SmokelessPowder.add(recipe); } - } - - public static Item add(Item i) { - //items.add(i); - return i; - } - - public static Collection getItems() { - return new HashSet<>(items); + { + // Coal + Recipe biocoal = new RecipeBuilder().setName("Biocoal").setBuilding(Buildings.CONSTRUCTOR).setDuration(8) + .addInput(Biomass, 5) + .addOutput(Coal,6) + .createRecipe(); + Recipe charcoal = new RecipeBuilder().setName("Charcoal").setBuilding(Buildings.CONSTRUCTOR).setDuration(4) + .addInput(Wood,1) + .addOutput(Coal, 10) + .createRecipe(); + } } diff --git a/src/main/java/satisfactory/Test.java b/src/main/java/satisfactory/Test.java index 3f7bbc9..ddd3856 100644 --- a/src/main/java/satisfactory/Test.java +++ b/src/main/java/satisfactory/Test.java @@ -86,6 +86,7 @@ public class Test { System.out.println("\ntest"); SumResult.sum(Database.Plastic, 4); */ + /* Item a = Database.HeavyOilResidue; Item b = Database.Water; Map preferences = Database.preferences; @@ -133,6 +134,9 @@ public class Test { planFor("screw", new Production(Database.ReinforcedIronPlate, 1)); planFor("rotor", new Production(Database.Rotor, 1)); planFor("mf", new Production(Database.ModularFrame, 10)); + */ + //planFor("aluminumIngot", new Production(Database.AluminumIngot, 240)); + planFor("fusedFrame", new Production(Database.FusedModularFrame, 1.5)); } private static void planFor(Item item, int amount, String name) { diff --git a/src/main/java/satisfactory/items/Item.java b/src/main/java/satisfactory/items/Item.java index f71f811..1bc8db9 100644 --- a/src/main/java/satisfactory/items/Item.java +++ b/src/main/java/satisfactory/items/Item.java @@ -20,7 +20,6 @@ public abstract class Item { protected Item(String name, Set recipes) { this.name = name; this.recipes = recipes; - Database.add(this); for (Recipe recipe : recipes) { add(recipe); } diff --git a/src/test/java/satisfactory/items/ItemTest.java b/src/test/java/satisfactory/items/ItemTest.java index 3c0a145..f3ae79b 100644 --- a/src/test/java/satisfactory/items/ItemTest.java +++ b/src/test/java/satisfactory/items/ItemTest.java @@ -62,8 +62,14 @@ class ItemTest { } @Test - void productionRubberAndPlastic() { + void productionRubberAndPlastic( + ) { test("rubberAndPlastic", Database.Rubber, Database.Plastic); } + @Test + void productionAluminumIngot() { + test("aluminumIngot", Database.AluminumIngot); + } + } \ No newline at end of file diff --git a/src/test/java/satisfactory/items/Phase4Test.java b/src/test/java/satisfactory/items/Phase4Test.java new file mode 100644 index 0000000..ac7185b --- /dev/null +++ b/src/test/java/satisfactory/items/Phase4Test.java @@ -0,0 +1,17 @@ +package satisfactory.items; + +import org.junit.jupiter.api.Test; +import satisfactory.Database; + +import static org.junit.jupiter.api.Assertions.fail; +import static satisfactory.items.TestHelper.test; + +class Phase4Test { + + @Test + void testPhase4() { + test("phase4", Database.AssemblyDirectorSystem, Database.MagneticFieldGenerator); + fail("Missing items!"); + //test("phase4", Database.AssemblyDirectorSystem, Database.MagneticFieldGenerator, Database.ThermalPropulsionRocket, Database.NuclearPasta); + } +} \ No newline at end of file diff --git a/src/test/java/satisfactory/items/ValidatedValues.java b/src/test/java/satisfactory/items/ValidatedValues.java index 85d59f8..498aa88 100644 --- a/src/test/java/satisfactory/items/ValidatedValues.java +++ b/src/test/java/satisfactory/items/ValidatedValues.java @@ -94,6 +94,19 @@ public class ValidatedValues { ref.put(item, 1.); values.put(item, ref); } + { + Item item = Database.AluminumIngot; + Map ref = new HashMap<>(); + ref.put(Database.AluminumScrap, 1.5); + ref.put(Database.Water, 1.5); + ref.put(Database.RawQuartz, 0.5); + ref.put(Database.Silica, 1.25); + ref.put(Database.AluminaSolution, 1.0); + ref.put(Database.Bauxite, 0.5); + ref.put(Database.Coal, 0.5); + ref.put(item, 1.0); + values.put(item, ref); + } } public static Map get(Item item) {