Added groundwater pump, 3x3 solar panels
This commit is contained in:
@@ -5,7 +5,7 @@ import com.badlogic.gdx.utils.Array;
|
||||
import io.anuke.ucore.graphics.Draw;
|
||||
import io.anuke.ucore.util.Bundles;
|
||||
|
||||
public class Item{
|
||||
public class Item implements Comparable<Item>{
|
||||
private static final Array<Item> items = new Array<>();
|
||||
|
||||
public static final Item
|
||||
@@ -15,6 +15,7 @@ public class Item{
|
||||
{
|
||||
explosiveness = 0.2f;
|
||||
flammability = 0.5f;
|
||||
fluxiness = 0.5f;
|
||||
material = false;
|
||||
}
|
||||
},
|
||||
@@ -30,6 +31,7 @@ public class Item{
|
||||
quartz = new Item("quartz") {
|
||||
{
|
||||
material = false;
|
||||
fluxiness = 0.65f;
|
||||
}
|
||||
},
|
||||
glass = new Item("glass"),
|
||||
@@ -47,6 +49,8 @@ public class Item{
|
||||
|
||||
public float explosiveness = 0f;
|
||||
public float flammability = 0f;
|
||||
/**how effective this item is as flux for smelting. 0 = not a flux, 0.5 = normal flux, 1 = very good*/
|
||||
public float fluxiness = 0f;
|
||||
public boolean material = true;
|
||||
|
||||
public Item(String name) {
|
||||
@@ -69,6 +73,11 @@ public class Item{
|
||||
return localizedName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(Item item) {
|
||||
return Integer.compare(id, item.id);
|
||||
}
|
||||
|
||||
public static Array<Item> getAllItems() {
|
||||
return Item.items;
|
||||
}
|
||||
|
||||
@@ -11,7 +11,11 @@ public class Liquid {
|
||||
public static final Liquid
|
||||
|
||||
none = new Liquid("none", Color.CLEAR),
|
||||
water = new Liquid("water", Color.ROYAL),
|
||||
water = new Liquid("water", Color.ROYAL){
|
||||
{
|
||||
heatCapacity = 0.7f;
|
||||
}
|
||||
},
|
||||
plasma = new Liquid("plasma", Color.CORAL){
|
||||
{
|
||||
flammability = 0.4f;
|
||||
@@ -28,7 +32,7 @@ public class Liquid {
|
||||
oil = new Liquid("oil", Color.valueOf("292929")){
|
||||
{
|
||||
viscosity = 0.7f;
|
||||
flammability = 0.5f;
|
||||
flammability = 0.6f;
|
||||
explosiveness = 0.6f;
|
||||
}
|
||||
},
|
||||
@@ -50,10 +54,15 @@ public class Liquid {
|
||||
public final String name;
|
||||
public final int id;
|
||||
|
||||
/**0-1, 0 is completely inflammable, anything above that may catch fire when exposed to heat, 0.5+ is very flammable.*/
|
||||
public float flammability;
|
||||
/**temperature: 0.5 is 'room' temperature, 0 is very cold, 1 is molten hot*/
|
||||
public float temperature = 0.5f;
|
||||
/**how much heat this liquid can store. 0.75=water (high), anything lower is probably less dense and bad at cooling.*/
|
||||
public float heatCapacity = 0.5f;
|
||||
/**how thick this liquid is. 0.5=water (relatively viscous), 1 would be something like tar (very slow)*/
|
||||
public float viscosity = 0.5f;
|
||||
/**how prone to exploding this liquid is, when heated. 0 = nothing, 1 = nuke*/
|
||||
public float explosiveness;
|
||||
|
||||
public Liquid(String name, Color color) {
|
||||
|
||||
@@ -10,96 +10,97 @@ import static io.anuke.mindustry.resource.Section.*;
|
||||
|
||||
public class Recipes {
|
||||
private static final Array<Recipe> list = Array.with(
|
||||
new Recipe(defense, DefenseBlocks.stonewall, stack(Item.stone, 12)),
|
||||
new Recipe(defense, DefenseBlocks.ironwall, stack(Item.iron, 12)),
|
||||
new Recipe(defense, DefenseBlocks.steelwall, stack(Item.steel, 12)),
|
||||
new Recipe(defense, DefenseBlocks.titaniumwall, stack(Item.titanium, 12)),
|
||||
new Recipe(defense, DefenseBlocks.diriumwall, stack(Item.dirium, 12)),
|
||||
new Recipe(defense, DefenseBlocks.steelwalllarge, stack(Item.steel, 12*4)),
|
||||
new Recipe(defense, DefenseBlocks.titaniumwalllarge, stack(Item.titanium, 12*4)),
|
||||
new Recipe(defense, DefenseBlocks.diriumwalllarge, stack(Item.dirium, 12*4)),
|
||||
new Recipe(defense, DefenseBlocks.door, stack(Item.steel, 3), stack(Item.iron, 3*4)).setDesktop(),
|
||||
new Recipe(defense, DefenseBlocks.largedoor, stack(Item.steel, 3*4), stack(Item.iron, 3*4*4)).setDesktop(),
|
||||
new Recipe(defense, DefenseBlocks.titaniumshieldwall, stack(Item.titanium, 16)),
|
||||
new Recipe(defense, DefenseBlocks.stonewall, stack(Item.stone, 12)),
|
||||
new Recipe(defense, DefenseBlocks.ironwall, stack(Item.iron, 12)),
|
||||
new Recipe(defense, DefenseBlocks.steelwall, stack(Item.steel, 12)),
|
||||
new Recipe(defense, DefenseBlocks.titaniumwall, stack(Item.titanium, 12)),
|
||||
new Recipe(defense, DefenseBlocks.diriumwall, stack(Item.dirium, 12)),
|
||||
new Recipe(defense, DefenseBlocks.steelwalllarge, stack(Item.steel, 12*4)),
|
||||
new Recipe(defense, DefenseBlocks.titaniumwalllarge, stack(Item.titanium, 12*4)),
|
||||
new Recipe(defense, DefenseBlocks.diriumwalllarge, stack(Item.dirium, 12*4)),
|
||||
new Recipe(defense, DefenseBlocks.door, stack(Item.steel, 3), stack(Item.iron, 3*4)).setDesktop(),
|
||||
new Recipe(defense, DefenseBlocks.largedoor, stack(Item.steel, 3*4), stack(Item.iron, 3*4*4)).setDesktop(),
|
||||
new Recipe(defense, DefenseBlocks.titaniumshieldwall, stack(Item.titanium, 16)),
|
||||
|
||||
new Recipe(distribution, DistributionBlocks.conveyor, stack(Item.stone, 1)),
|
||||
new Recipe(distribution, DistributionBlocks.steelconveyor, stack(Item.steel, 1)),
|
||||
new Recipe(distribution, DistributionBlocks.pulseconveyor, stack(Item.dirium, 1)),
|
||||
new Recipe(distribution, DistributionBlocks.router, stack(Item.stone, 2)),
|
||||
new Recipe(distribution, DistributionBlocks.multiplexer, stack(Item.iron, 8)),
|
||||
new Recipe(distribution, DistributionBlocks.junction, stack(Item.iron, 2)),
|
||||
new Recipe(distribution, DistributionBlocks.tunnel, stack(Item.iron, 2)),
|
||||
new Recipe(distribution, DistributionBlocks.sorter, stack(Item.steel, 2)),
|
||||
new Recipe(distribution, DistributionBlocks.splitter, stack(Item.steel, 1)),
|
||||
new Recipe(distribution, DistributionBlocks.vault, stack(Item.steel, 50)),
|
||||
new Recipe(distribution, DistributionBlocks.unloader, stack(Item.steel, 5)),
|
||||
new Recipe(distribution, DistributionBlocks.sortedunloader, stack(Item.steel, 5)),
|
||||
new Recipe(distribution, DistributionBlocks.conveyor, stack(Item.stone, 1)),
|
||||
new Recipe(distribution, DistributionBlocks.steelconveyor, stack(Item.steel, 1)),
|
||||
new Recipe(distribution, DistributionBlocks.pulseconveyor, stack(Item.dirium, 1)),
|
||||
new Recipe(distribution, DistributionBlocks.router, stack(Item.stone, 2)),
|
||||
new Recipe(distribution, DistributionBlocks.multiplexer, stack(Item.iron, 8)),
|
||||
new Recipe(distribution, DistributionBlocks.junction, stack(Item.iron, 2)),
|
||||
new Recipe(distribution, DistributionBlocks.tunnel, stack(Item.iron, 2)),
|
||||
new Recipe(distribution, DistributionBlocks.sorter, stack(Item.steel, 2)),
|
||||
new Recipe(distribution, DistributionBlocks.splitter, stack(Item.steel, 1)),
|
||||
new Recipe(distribution, DistributionBlocks.vault, stack(Item.steel, 50)),
|
||||
new Recipe(distribution, DistributionBlocks.unloader, stack(Item.steel, 5)),
|
||||
new Recipe(distribution, DistributionBlocks.sortedunloader, stack(Item.steel, 5)),
|
||||
|
||||
new Recipe(weapon, WeaponBlocks.doubleturret, stack(Item.stone, 7)),
|
||||
new Recipe(weapon, WeaponBlocks.gatlingturret, stack(Item.iron, 8), stack(Item.stone, 10)),
|
||||
new Recipe(weapon, WeaponBlocks.flameturret, stack(Item.iron, 12), stack(Item.steel, 9)),
|
||||
new Recipe(weapon, WeaponBlocks.railgunturret, stack(Item.iron, 15), stack(Item.steel, 10)),
|
||||
new Recipe(weapon, WeaponBlocks.laserturret, stack(Item.steel, 12), stack(Item.titanium, 12)),
|
||||
new Recipe(weapon, WeaponBlocks.flakturret, stack(Item.steel, 25), stack(Item.titanium, 15)),
|
||||
new Recipe(weapon, WeaponBlocks.teslaturret, stack(Item.steel, 20), stack(Item.titanium, 25), stack(Item.dirium, 15)),
|
||||
new Recipe(weapon, WeaponBlocks.magmaturret, stack(Item.steel, 80), stack(Item.titanium, 70), stack(Item.dirium, 60)),
|
||||
new Recipe(weapon, WeaponBlocks.chainturret, stack(Item.steel, 50), stack(Item.titanium, 25), stack(Item.dirium, 40)),
|
||||
new Recipe(weapon, WeaponBlocks.titanturret, stack(Item.steel, 70), stack(Item.titanium, 50), stack(Item.dirium, 55)),
|
||||
new Recipe(weapon, WeaponBlocks.missileturret, stack(Item.steel, 70), stack(Item.titanium, 50), stack(Item.dirium, 55)),
|
||||
new Recipe(weapon, WeaponBlocks.fornaxcannon, stack(Item.steel, 70), stack(Item.titanium, 50), stack(Item.dirium, 55)),
|
||||
new Recipe(weapon, WeaponBlocks.doubleturret, stack(Item.stone, 7)),
|
||||
new Recipe(weapon, WeaponBlocks.gatlingturret, stack(Item.iron, 8), stack(Item.stone, 10)),
|
||||
new Recipe(weapon, WeaponBlocks.flameturret, stack(Item.iron, 12), stack(Item.steel, 9)),
|
||||
new Recipe(weapon, WeaponBlocks.railgunturret, stack(Item.iron, 15), stack(Item.steel, 10)),
|
||||
new Recipe(weapon, WeaponBlocks.laserturret, stack(Item.steel, 12), stack(Item.titanium, 12)),
|
||||
new Recipe(weapon, WeaponBlocks.flakturret, stack(Item.steel, 25), stack(Item.titanium, 15)),
|
||||
new Recipe(weapon, WeaponBlocks.teslaturret, stack(Item.steel, 20), stack(Item.titanium, 25), stack(Item.dirium, 15)),
|
||||
new Recipe(weapon, WeaponBlocks.magmaturret, stack(Item.steel, 80), stack(Item.titanium, 70), stack(Item.dirium, 60)),
|
||||
new Recipe(weapon, WeaponBlocks.chainturret, stack(Item.steel, 50), stack(Item.titanium, 25), stack(Item.dirium, 40)),
|
||||
new Recipe(weapon, WeaponBlocks.titanturret, stack(Item.steel, 70), stack(Item.titanium, 50), stack(Item.dirium, 55)),
|
||||
new Recipe(weapon, WeaponBlocks.missileturret, stack(Item.steel, 70), stack(Item.titanium, 50), stack(Item.dirium, 55)),
|
||||
new Recipe(weapon, WeaponBlocks.fornaxcannon, stack(Item.steel, 70), stack(Item.titanium, 50), stack(Item.dirium, 55)),
|
||||
|
||||
new Recipe(crafting, ProductionBlocks.smelter, stack(Item.stone, 40), stack(Item.iron, 40)),
|
||||
new Recipe(crafting, ProductionBlocks.alloysmelter, stack(Item.titanium, 50), stack(Item.steel, 50)),
|
||||
new Recipe(crafting, ProductionBlocks.coalextractor, stack(Item.steel, 10), stack(Item.iron, 10)),
|
||||
new Recipe(crafting, ProductionBlocks.titaniumextractor, stack(Item.steel, 30), stack(Item.iron, 30)),
|
||||
new Recipe(crafting, ProductionBlocks.uraniumextractor, stack(Item.steel, 30), stack(Item.iron, 30)),
|
||||
new Recipe(crafting, ProductionBlocks.oilrefinery, stack(Item.steel, 15), stack(Item.iron, 15)),
|
||||
new Recipe(crafting, ProductionBlocks.stoneformer, stack(Item.steel, 10), stack(Item.iron, 10)),
|
||||
new Recipe(crafting, ProductionBlocks.lavasmelter, stack(Item.steel, 30), stack(Item.titanium, 15)),
|
||||
new Recipe(crafting, ProductionBlocks.pulverizer, stack(Item.steel, 30), stack(Item.titanium, 15)),
|
||||
new Recipe(crafting, ProductionBlocks.siliconextractor, stack(Item.steel, 30), stack(Item.titanium, 15)),
|
||||
new Recipe(crafting, ProductionBlocks.weaponFactory, stack(Item.steel, 60), stack(Item.iron, 60)).setDesktop(),
|
||||
new Recipe(crafting, ProductionBlocks.smelter, stack(Item.stone, 40), stack(Item.iron, 40)),
|
||||
new Recipe(crafting, ProductionBlocks.alloysmelter, stack(Item.titanium, 50), stack(Item.steel, 50)),
|
||||
new Recipe(crafting, ProductionBlocks.coalextractor, stack(Item.steel, 10), stack(Item.iron, 10)),
|
||||
new Recipe(crafting, ProductionBlocks.titaniumextractor, stack(Item.steel, 30), stack(Item.iron, 30)),
|
||||
new Recipe(crafting, ProductionBlocks.oilrefinery, stack(Item.steel, 15), stack(Item.iron, 15)),
|
||||
new Recipe(crafting, ProductionBlocks.stoneformer, stack(Item.steel, 10), stack(Item.iron, 10)),
|
||||
new Recipe(crafting, ProductionBlocks.lavasmelter, stack(Item.steel, 30), stack(Item.titanium, 15)),
|
||||
new Recipe(crafting, ProductionBlocks.siliconextractor, stack(Item.steel, 30), stack(Item.titanium, 15)),
|
||||
new Recipe(crafting, ProductionBlocks.weaponFactory, stack(Item.steel, 60), stack(Item.iron, 60)).setDesktop(),
|
||||
//new Recipe(crafting, ProductionBlocks.centrifuge, stack(Item.steel, 30), stack(Item.iron, 30)),
|
||||
|
||||
new Recipe(production, ProductionBlocks.stonedrill, stack(Item.stone, 12)),
|
||||
new Recipe(production, ProductionBlocks.irondrill, stack(Item.stone, 25)),
|
||||
new Recipe(production, ProductionBlocks.coaldrill, stack(Item.stone, 25), stack(Item.iron, 40)),
|
||||
new Recipe(production, ProductionBlocks.titaniumdrill, stack(Item.iron, 50), stack(Item.steel, 50)),
|
||||
new Recipe(production, ProductionBlocks.uraniumdrill, stack(Item.iron, 40), stack(Item.steel, 40)),
|
||||
new Recipe(production, ProductionBlocks.quartzextractor, stack(Item.titanium, 40), stack(Item.dirium, 40)),
|
||||
new Recipe(production, ProductionBlocks.cultivator, stack(Item.titanium, 40), stack(Item.dirium, 40)),
|
||||
new Recipe(production, ProductionBlocks.laserdrill, stack(Item.titanium, 40), stack(Item.dirium, 40)),
|
||||
new Recipe(production, ProductionBlocks.stonedrill, stack(Item.stone, 12)),
|
||||
new Recipe(production, ProductionBlocks.irondrill, stack(Item.stone, 25)),
|
||||
new Recipe(production, ProductionBlocks.coaldrill, stack(Item.stone, 25), stack(Item.iron, 40)),
|
||||
new Recipe(production, ProductionBlocks.titaniumdrill, stack(Item.iron, 50), stack(Item.steel, 50)),
|
||||
new Recipe(production, ProductionBlocks.uraniumdrill, stack(Item.iron, 40), stack(Item.steel, 40)),
|
||||
new Recipe(production, ProductionBlocks.quartzextractor, stack(Item.titanium, 40), stack(Item.dirium, 40)),
|
||||
new Recipe(production, ProductionBlocks.cultivator, stack(Item.titanium, 40), stack(Item.dirium, 40)),
|
||||
new Recipe(production, ProductionBlocks.laserdrill, stack(Item.titanium, 40), stack(Item.dirium, 40)),
|
||||
new Recipe(production, ProductionBlocks.waterextractor, stack(Item.titanium, 40), stack(Item.dirium, 40)),
|
||||
|
||||
new Recipe(power, ProductionBlocks.coalgenerator, stack(Item.iron, 30), stack(Item.stone, 20)),
|
||||
new Recipe(power, ProductionBlocks.thermalgenerator, stack(Item.steel, 30), stack(Item.iron, 30)),
|
||||
new Recipe(power, ProductionBlocks.combustiongenerator, stack(Item.iron, 30), stack(Item.stone, 20)),
|
||||
new Recipe(power, ProductionBlocks.solarpanel, stack(Item.iron, 30), stack(Item.silicon, 20)),
|
||||
new Recipe(power, ProductionBlocks.rtgenerator, stack(Item.titanium, 20), stack(Item.steel, 20)),
|
||||
new Recipe(power, ProductionBlocks.nuclearReactor, stack(Item.titanium, 40), stack(Item.dirium, 40), stack(Item.steel, 50)),
|
||||
new Recipe(power, DistributionBlocks.powerlaser, stack(Item.steel, 3), stack(Item.iron, 3)),
|
||||
new Recipe(power, DistributionBlocks.powerlasercorner, stack(Item.steel, 4), stack(Item.iron, 4)),
|
||||
new Recipe(power, DistributionBlocks.powerlaserrouter, stack(Item.steel, 5), stack(Item.iron, 5)),
|
||||
new Recipe(power, DistributionBlocks.battery, stack(Item.steel, 5), stack(Item.iron, 5)),
|
||||
new Recipe(power, DistributionBlocks.batteryLarge, stack(Item.steel, 5), stack(Item.iron, 5)),
|
||||
new Recipe(power, ProductionBlocks.coalgenerator, stack(Item.iron, 30), stack(Item.stone, 20)),
|
||||
new Recipe(power, ProductionBlocks.thermalgenerator, stack(Item.steel, 30), stack(Item.iron, 30)),
|
||||
new Recipe(power, ProductionBlocks.combustiongenerator, stack(Item.iron, 30), stack(Item.stone, 20)),
|
||||
new Recipe(power, ProductionBlocks.solarpanel, stack(Item.iron, 30), stack(Item.silicon, 20)),
|
||||
new Recipe(power, ProductionBlocks.largesolarpanel, stack(Item.iron, 30), stack(Item.silicon, 20)),
|
||||
new Recipe(power, ProductionBlocks.rtgenerator, stack(Item.titanium, 20), stack(Item.steel, 20)),
|
||||
new Recipe(power, ProductionBlocks.nuclearReactor, stack(Item.titanium, 40), stack(Item.dirium, 40), stack(Item.steel, 50)),
|
||||
new Recipe(power, DistributionBlocks.powerlaser, stack(Item.steel, 3), stack(Item.iron, 3)),
|
||||
new Recipe(power, DistributionBlocks.powerlasercorner, stack(Item.steel, 4), stack(Item.iron, 4)),
|
||||
new Recipe(power, DistributionBlocks.powerlaserrouter, stack(Item.steel, 5), stack(Item.iron, 5)),
|
||||
new Recipe(power, DistributionBlocks.battery, stack(Item.steel, 5), stack(Item.iron, 5)),
|
||||
new Recipe(power, DistributionBlocks.batteryLarge, stack(Item.steel, 5), stack(Item.iron, 5)),
|
||||
|
||||
new Recipe(power, DefenseBlocks.shieldgenerator, stack(Item.titanium, 30), stack(Item.dirium, 30)),
|
||||
new Recipe(power, DefenseBlocks.shieldgenerator, stack(Item.titanium, 30), stack(Item.dirium, 30)),
|
||||
|
||||
new Recipe(distribution, DistributionBlocks.teleporter, stack(Item.steel, 30), stack(Item.dirium, 40)),
|
||||
new Recipe(distribution, DistributionBlocks.teleporter, stack(Item.steel, 30), stack(Item.dirium, 40)),
|
||||
|
||||
new Recipe(power, DefenseBlocks.repairturret, stack(Item.iron, 30)),
|
||||
new Recipe(power, DefenseBlocks.megarepairturret, stack(Item.iron, 20), stack(Item.steel, 30)),
|
||||
new Recipe(power, DefenseBlocks.repairturret, stack(Item.iron, 30)),
|
||||
new Recipe(power, DefenseBlocks.megarepairturret, stack(Item.iron, 20), stack(Item.steel, 30)),
|
||||
|
||||
new Recipe(liquid, DistributionBlocks.conduit, stack(Item.steel, 1)),
|
||||
new Recipe(liquid, DistributionBlocks.pulseconduit, stack(Item.titanium, 1), stack(Item.steel, 1)),
|
||||
new Recipe(liquid, DistributionBlocks.liquidrouter, stack(Item.steel, 2)),
|
||||
new Recipe(liquid, DistributionBlocks.liquidsilo, stack(Item.steel, 2)),
|
||||
new Recipe(liquid, DistributionBlocks.liquidjunction, stack(Item.steel, 2)),
|
||||
new Recipe(liquid, DistributionBlocks.conduittunnel, stack(Item.titanium, 2), stack(Item.steel, 2)),
|
||||
new Recipe(liquid, DistributionBlocks.conduit, stack(Item.steel, 1)),
|
||||
new Recipe(liquid, DistributionBlocks.pulseconduit, stack(Item.titanium, 1), stack(Item.steel, 1)),
|
||||
new Recipe(liquid, DistributionBlocks.liquidrouter, stack(Item.steel, 2)),
|
||||
new Recipe(liquid, DistributionBlocks.liquidtank, stack(Item.steel, 2)),
|
||||
new Recipe(liquid, DistributionBlocks.liquidjunction, stack(Item.steel, 2)),
|
||||
new Recipe(liquid, DistributionBlocks.conduittunnel, stack(Item.titanium, 2), stack(Item.steel, 2)),
|
||||
|
||||
new Recipe(liquid, ProductionBlocks.pump, stack(Item.steel, 10)),
|
||||
new Recipe(liquid, ProductionBlocks.fluxpump, stack(Item.steel, 10), stack(Item.dirium, 5)),
|
||||
new Recipe(liquid, ProductionBlocks.pump, stack(Item.steel, 10)),
|
||||
new Recipe(liquid, ProductionBlocks.fluxpump, stack(Item.steel, 10), stack(Item.dirium, 5)),
|
||||
|
||||
new Recipe(units, DebugBlocks.powerVoid, stack(Item.steel, 10)).setDebug(),
|
||||
new Recipe(units, DebugBlocks.powerInfinite, stack(Item.steel, 10), stack(Item.dirium, 5)).setDebug()
|
||||
new Recipe(units, DebugBlocks.powerVoid, stack(Item.steel, 10)).setDebug(),
|
||||
new Recipe(units, DebugBlocks.powerInfinite, stack(Item.steel, 10), stack(Item.dirium, 5)).setDebug()
|
||||
);
|
||||
|
||||
private static ItemStack stack(Item item, int amount){
|
||||
|
||||
@@ -26,9 +26,9 @@ public class DistributionBlocks{
|
||||
liquidRegion = "liquidrouter-liquid";
|
||||
}},
|
||||
|
||||
liquidsilo = new LiquidRouter("liquidsilo"){{
|
||||
liquidtank = new LiquidRouter("liquidtank"){{
|
||||
size = 3;
|
||||
liquidRegion = "liquidsilo-liquid";
|
||||
liquidRegion = "liquidtank-liquid";
|
||||
liquidCapacity = 1300f;
|
||||
}},
|
||||
|
||||
|
||||
@@ -2,13 +2,14 @@ package io.anuke.mindustry.world.blocks;
|
||||
|
||||
import io.anuke.mindustry.graphics.Fx;
|
||||
import io.anuke.mindustry.resource.Item;
|
||||
import io.anuke.mindustry.resource.ItemStack;
|
||||
import io.anuke.mindustry.resource.Liquid;
|
||||
import io.anuke.mindustry.world.Block;
|
||||
import io.anuke.mindustry.world.blocks.types.generation.*;
|
||||
import io.anuke.mindustry.world.blocks.types.generation.ItemPowerGenerator;
|
||||
import io.anuke.mindustry.world.blocks.types.generation.LiquidPowerGenerator;
|
||||
import io.anuke.mindustry.world.blocks.types.generation.NuclearReactor;
|
||||
import io.anuke.mindustry.world.blocks.types.generation.SolarGenerator;
|
||||
import io.anuke.mindustry.world.blocks.types.storage.CoreBlock;
|
||||
import io.anuke.mindustry.world.blocks.types.production.*;
|
||||
import io.anuke.mindustry.world.blocks.types.storage.CoreBlock;
|
||||
|
||||
public class ProductionBlocks{
|
||||
public static final Block
|
||||
@@ -29,6 +30,7 @@ public class ProductionBlocks{
|
||||
inputs = new Item[]{Item.iron};
|
||||
fuel = Item.coal;
|
||||
result = Item.steel;
|
||||
craftTime = 25f;
|
||||
}
|
||||
},
|
||||
|
||||
@@ -38,27 +40,41 @@ public class ProductionBlocks{
|
||||
inputs = new Item[]{Item.titanium, Item.steel};
|
||||
fuel = Item.coal;
|
||||
result = Item.dirium;
|
||||
burnDuration = 40f;
|
||||
craftTime = 20f;
|
||||
burnDuration = 45f;
|
||||
craftTime = 25f;
|
||||
}
|
||||
},
|
||||
|
||||
powersmelter = new PowerSmelter("powersmelter"){
|
||||
{
|
||||
/*
|
||||
health = 90;
|
||||
inputs = new Item[]{Item.titanium, Item.steel};
|
||||
fuel = Item.coal;
|
||||
results = Item.dirium;
|
||||
burnDuration = 45f;
|
||||
craftTime = 25f;
|
||||
size = 2;*/
|
||||
}
|
||||
},
|
||||
|
||||
coalextractor = new LiquidCrafter("coalextractor"){
|
||||
{
|
||||
input = Item.stone;
|
||||
inputAmount = 5;
|
||||
inputAmount = 6;
|
||||
inputLiquid = Liquid.water;
|
||||
liquidAmount = 18.99f;
|
||||
liquidAmount = 19f;
|
||||
output = Item.coal;
|
||||
health = 50;
|
||||
purifyTime = 50;
|
||||
health = 60;
|
||||
}
|
||||
},
|
||||
|
||||
titaniumextractor = new LiquidCrafter("titaniumextractor"){
|
||||
{
|
||||
input = Item.iron;
|
||||
inputAmount = 6;
|
||||
inputAmount = 8;
|
||||
inputLiquid = Liquid.water;
|
||||
liquidAmount = 40f;
|
||||
liquidCapacity = 41f;
|
||||
@@ -67,19 +83,6 @@ public class ProductionBlocks{
|
||||
health = 70;
|
||||
}
|
||||
},
|
||||
|
||||
uraniumextractor = new LiquidCrafter("uraniumextractor"){
|
||||
{
|
||||
input = Item.iron;
|
||||
inputAmount = 6;
|
||||
inputLiquid = Liquid.water;
|
||||
liquidAmount = 40f;
|
||||
liquidCapacity = 41f;
|
||||
purifyTime = 60;
|
||||
output = Item.uranium;
|
||||
health = 70;
|
||||
}
|
||||
},
|
||||
|
||||
oilrefinery = new LiquidCrafter("oilrefinery"){
|
||||
{
|
||||
@@ -120,17 +123,6 @@ public class ProductionBlocks{
|
||||
}
|
||||
},
|
||||
|
||||
pulverizer = new PowerSmelter("pulverizer"){
|
||||
{
|
||||
inputs = new ItemStack[]{new ItemStack(Item.stone, 5)};
|
||||
result = Item.quartz;
|
||||
health = 50;
|
||||
craftTime = 60f;
|
||||
powerDrain = 0.02f;
|
||||
craftEffect = Fx.pulverize;
|
||||
}
|
||||
},
|
||||
|
||||
siliconextractor = new LiquidCrafter("siliconextractor"){
|
||||
{
|
||||
input = Item.quartz;
|
||||
@@ -221,6 +213,15 @@ public class ProductionBlocks{
|
||||
}
|
||||
},
|
||||
|
||||
//TODO test it
|
||||
waterextractor = new SolidPump("waterextractor"){
|
||||
{
|
||||
result = Liquid.water;
|
||||
powerUse = 0.1f;
|
||||
size = 2;
|
||||
}
|
||||
},
|
||||
|
||||
cultivator = new GenericDrill("cultivator"){
|
||||
{
|
||||
resource = Blocks.grass;
|
||||
@@ -267,7 +268,15 @@ public class ProductionBlocks{
|
||||
}
|
||||
},
|
||||
solarpanel = new SolarGenerator("solarpanel"){
|
||||
|
||||
{
|
||||
generation = 0.003f;
|
||||
}
|
||||
},
|
||||
largesolarpanel = new SolarGenerator("largesolarpanel"){
|
||||
{
|
||||
size = 3;
|
||||
generation = 0.012f;
|
||||
}
|
||||
},
|
||||
nuclearReactor = new NuclearReactor("nuclearreactor"){
|
||||
{
|
||||
|
||||
@@ -198,7 +198,7 @@ public class Generator extends PowerBlock{
|
||||
|
||||
t1.trns(rotation * 90, 1 * tilesize / 2 + 2f +
|
||||
(interfering ? Vector2.dst(tile.worldx(), tile.worldy(), target.worldx(),
|
||||
target.worldy()) / 2f - tilesize / 2f * 1 + 1 : 0));
|
||||
target.worldy()) / 2f - tilesize / 2f * 1 : 0));
|
||||
|
||||
t2.trns(rotation * 90, size * tilesize / 2 + 2f);
|
||||
|
||||
|
||||
@@ -12,7 +12,6 @@ import io.anuke.ucore.util.Mathf;
|
||||
import io.anuke.ucore.util.Strings;
|
||||
|
||||
public class LiquidPowerGenerator extends Generator{
|
||||
public int generateTime = 15;
|
||||
public Liquid generateLiquid;
|
||||
public float powerPerLiquid = 0.13f;
|
||||
/**Maximum liquid used per frame.*/
|
||||
|
||||
@@ -85,9 +85,12 @@ public class NuclearReactor extends LiquidPowerGenerator{
|
||||
}
|
||||
|
||||
if(entity.liquid.amount > 0){
|
||||
float maxCool = Math.min(entity.liquid.amount * coolantPower, entity.heat);
|
||||
entity.heat -= maxCool; //TODO steam when cooling large amounts?
|
||||
entity.liquid.amount -= maxCool / coolantPower;
|
||||
//TODO proper coolant usage
|
||||
float coolDirection = Mathf.clamp(10f * (0.6f - entity.liquid.liquid.temperature), -2f, 2f);
|
||||
float maxCool = entity.liquid.amount * coolantPower * entity.liquid.liquid.heatCapacity;
|
||||
entity.heat -= maxCool * coolDirection; //TODO steam when cooling large amounts?
|
||||
entity.heat = Mathf.clamp(entity.heat);
|
||||
entity.liquid.amount -= Math.min(entity.liquid.amount, entity.heat / coolantPower);
|
||||
}
|
||||
|
||||
if(entity.heat > smokeThreshold){
|
||||
@@ -162,7 +165,13 @@ public class NuclearReactor extends LiquidPowerGenerator{
|
||||
public boolean acceptItem(Item item, Tile tile, Tile source){
|
||||
return item == generateItem && tile.entity.inventory.getItem(generateItem) < itemCapacity;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean acceptLiquid(Tile tile, Tile source, Liquid liquid, float amount){
|
||||
return tile.entity.liquid.amount + amount < liquidCapacity
|
||||
&& (tile.entity.liquid.liquid == liquid || tile.entity.liquid.amount <= 0.001f);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(Tile tile){
|
||||
super.draw(tile);
|
||||
|
||||
@@ -9,6 +9,7 @@ public class SolarGenerator extends Generator {
|
||||
|
||||
public SolarGenerator(String name){
|
||||
super(name);
|
||||
hasInventory = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -35,7 +35,7 @@ public class LiquidCrafter extends LiquidBlock{
|
||||
health = 60;
|
||||
hasInventory = true;
|
||||
itemCapacity = 90;
|
||||
liquidCapacity = 21f;
|
||||
liquidCapacity = 20f;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
package io.anuke.mindustry.world.blocks.types.production;
|
||||
|
||||
import com.badlogic.gdx.utils.Array;
|
||||
import com.badlogic.gdx.utils.ObjectSet;
|
||||
import io.anuke.mindustry.entities.TileEntity;
|
||||
import io.anuke.mindustry.graphics.Fx;
|
||||
import io.anuke.mindustry.resource.Item;
|
||||
import io.anuke.mindustry.resource.ItemStack;
|
||||
import io.anuke.mindustry.world.BarType;
|
||||
import io.anuke.mindustry.world.BlockBar;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.mindustry.world.blocks.types.PowerBlock;
|
||||
import io.anuke.ucore.core.Effects;
|
||||
import io.anuke.ucore.core.Effects.Effect;
|
||||
import io.anuke.ucore.core.Timers;
|
||||
import io.anuke.ucore.graphics.Draw;
|
||||
import io.anuke.ucore.util.Mathf;
|
||||
import io.anuke.ucore.util.Strings;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class PowerSmelter extends PowerBlock {
|
||||
protected final int timerDump = timers++;
|
||||
protected final int timerCraft = timers++;
|
||||
|
||||
protected ItemStack[] inputs;
|
||||
protected Item result;
|
||||
/**Recipe format:
|
||||
* First item in each array: result
|
||||
* Everything else in each array: requirements. Can have duplicates.*/
|
||||
protected Item[][] recipes;
|
||||
protected float powerDrain = 0.01f;
|
||||
|
||||
protected float heatUpTime = 80f;
|
||||
@@ -46,17 +46,35 @@ public class PowerSmelter extends PowerBlock {
|
||||
super.setBars();
|
||||
bars.remove(BarType.inventory);
|
||||
|
||||
for(ItemStack item : inputs){
|
||||
bars.add(new BlockBar(BarType.inventory, true, tile -> (float)tile.entity.inventory.getItem(item.item)/capacity));
|
||||
if(true) return;
|
||||
|
||||
//TODO
|
||||
|
||||
ObjectSet<Item> set = new ObjectSet<>();
|
||||
|
||||
for(Item[] items : recipes){
|
||||
for(int i = 1; i < items.length; i ++) {
|
||||
set.add(items[i]);
|
||||
}
|
||||
}
|
||||
|
||||
Array<Item> items = new Array<>();
|
||||
set.forEach(items::add);
|
||||
|
||||
items.sort();
|
||||
|
||||
for(Item item : items){
|
||||
bars.add(new BlockBar(BarType.inventory, true, tile -> (float) tile.entity.inventory.getItem(item) / capacity));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStats(){
|
||||
super.setStats();
|
||||
stats.add("input", Arrays.toString(inputs));
|
||||
//TODO input/outputs
|
||||
// stats.add("input", Arrays.toString(inputs));
|
||||
stats.add("powersecond", Strings.toFixed(powerDrain*60f, 2));
|
||||
stats.add("output", result);
|
||||
//stats.add("output", result);
|
||||
stats.add("fuelduration", Strings.toFixed(burnDuration/60f, 1));
|
||||
stats.add("maxoutputsecond", Strings.toFixed(60f/craftTime, 1));
|
||||
stats.add("inputcapacity", capacity);
|
||||
@@ -65,6 +83,7 @@ public class PowerSmelter extends PowerBlock {
|
||||
|
||||
@Override
|
||||
public void update(Tile tile){
|
||||
/*
|
||||
PowerSmelterEntity entity = tile.entity();
|
||||
|
||||
if(entity.timer.get(timerDump, 5) && entity.inventory.hasItem(result)){
|
||||
@@ -102,17 +121,20 @@ public class PowerSmelter extends PowerBlock {
|
||||
}
|
||||
|
||||
offloadNear(tile, result);
|
||||
Effects.effect(craftEffect, entity);
|
||||
Effects.effect(craftEffect, entity);*/
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean acceptItem(Item item, Tile tile, Tile source){
|
||||
boolean isInput = false;
|
||||
|
||||
for(ItemStack req : inputs){
|
||||
if(req.item == item){
|
||||
isInput = true;
|
||||
break;
|
||||
out:
|
||||
for(Item[] items : recipes){
|
||||
for(int i = 1; i < items.length; i ++){
|
||||
if(items[i] == item){
|
||||
isInput = true;
|
||||
break out;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ public class Pump extends LiquidBlock{
|
||||
layer = Layer.overlay;
|
||||
liquidFlowFactor = 3f;
|
||||
group = BlockGroup.liquids;
|
||||
liquidRegion = "pump-liquid";
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -36,11 +37,11 @@ public class Pump extends LiquidBlock{
|
||||
|
||||
@Override
|
||||
public void draw(Tile tile){
|
||||
Draw.rect(name(), tile.worldx(), tile.worldy());
|
||||
Draw.rect(name(), tile.drawx(), tile.drawy());
|
||||
|
||||
Draw.color(tile.entity.liquid.liquid.color);
|
||||
Draw.alpha(tile.entity.liquid.amount / liquidCapacity);
|
||||
Draw.rect("blank", tile.worldx(), tile.worldy(), 2, 2);
|
||||
Draw.rect(liquidRegion, tile.drawx(), tile.drawy());
|
||||
Draw.color();
|
||||
}
|
||||
|
||||
@@ -57,7 +58,7 @@ public class Pump extends LiquidBlock{
|
||||
@Override
|
||||
public void drawLayer(Tile tile){
|
||||
Draw.colorl(0.85f + Mathf.absin(Timers.time(), 6f, 0.15f));
|
||||
Draw.rect("cross-"+size, tile.worldx(), tile.worldy());
|
||||
Draw.rect("cross-"+size, tile.drawx(), tile.drawy());
|
||||
Draw.color();
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
package io.anuke.mindustry.world.blocks.types.production;
|
||||
|
||||
import com.badlogic.gdx.utils.Array;
|
||||
import io.anuke.mindustry.resource.Liquid;
|
||||
import io.anuke.mindustry.world.Tile;
|
||||
import io.anuke.ucore.core.Timers;
|
||||
|
||||
/**Pump that makes liquid from solids and takes in power. Only works on solid floor blocks.*/
|
||||
public class SolidPump extends Pump {
|
||||
protected Liquid result = Liquid.water;
|
||||
protected float powerUse = 0.1f;
|
||||
|
||||
protected final Array<Tile> drawTiles = new Array<>();
|
||||
|
||||
public SolidPump(String name){
|
||||
super(name);
|
||||
hasPower = true;
|
||||
liquidRegion = name + "-liquid";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Tile tile){
|
||||
float used = Math.min(powerUse * Timers.delta(), powerCapacity);
|
||||
|
||||
float fraction = 0f;
|
||||
|
||||
if(isMultiblock()){
|
||||
for(Tile other : tile.getLinkedTiles(tempTiles)){
|
||||
if(isValid(other)){
|
||||
fraction += 1f/ size;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if(isValid(tile)) fraction = 1f;
|
||||
}
|
||||
|
||||
if(tile.entity.power.amount >= used){
|
||||
float maxPump = Math.min(liquidCapacity - tile.entity.liquid.amount, pumpAmount * Timers.delta() * fraction);
|
||||
tile.entity.liquid.liquid = result;
|
||||
tile.entity.liquid.amount += maxPump;
|
||||
tile.entity.power.amount -= used;
|
||||
}
|
||||
|
||||
tryDumpLiquid(tile);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLayer(Tile tile) {
|
||||
if(isMultiblock()){
|
||||
for(Tile other : tile.getLinkedTiles(drawTiles)){
|
||||
if(isValid(other)){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}else{
|
||||
return !isValid(tile);
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean isValid(Tile tile){
|
||||
return !tile.floor().liquid;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user