master
agp8x 2023-12-09 18:41:59 +01:00
parent 4a28775e9c
commit 33959e80d0
6 changed files with 155 additions and 38 deletions

View File

@ -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<Item, Integer> blender() {
Map<Item, Integer> 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<Item> 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<Item> 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();
}
}

View File

@ -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<Item, Recipe> 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) {

View File

@ -20,7 +20,6 @@ public abstract class Item {
protected Item(String name, Set<Recipe> recipes) {
this.name = name;
this.recipes = recipes;
Database.add(this);
for (Recipe recipe : recipes) {
add(recipe);
}

View File

@ -62,8 +62,14 @@ class ItemTest {
}
@Test
void productionRubberAndPlastic() {
void productionRubberAndPlastic(
) {
test("rubberAndPlastic", Database.Rubber, Database.Plastic);
}
@Test
void productionAluminumIngot() {
test("aluminumIngot", Database.AluminumIngot);
}
}

View File

@ -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);
}
}

View File

@ -94,6 +94,19 @@ public class ValidatedValues {
ref.put(item, 1.);
values.put(item, ref);
}
{
Item item = Database.AluminumIngot;
Map<Item, Double> 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<Item, Double> get(Item item) {