diff --git a/core/assets/version.properties b/core/assets/version.properties index 2aafffd693..f1ec39dc98 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Thu Feb 22 20:02:56 EST 2018 +#Thu Feb 22 23:52:21 EST 2018 version=release -androidBuildCode=280 +androidBuildCode=282 name=Mindustry code=3.3 build=custom build diff --git a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java index 03a7285cb6..9d72f5c8ca 100644 --- a/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java +++ b/core/src/io/anuke/mindustry/world/blocks/ProductionBlocks.java @@ -5,7 +5,7 @@ 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.defense.CoreBlock; +import io.anuke.mindustry.world.blocks.types.storage.CoreBlock; import io.anuke.mindustry.world.blocks.types.production.*; public class ProductionBlocks{ diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Router.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Router.java index 9a8a52b19d..31fd05f702 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Router.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Router.java @@ -42,7 +42,7 @@ public class Router extends Block{ if (tile.entity.totalItems() > 0) { if (tile.getExtra() != tile.getRotation() - || Mathf.chance(0.35)) { //sometimes dump backwards at a 1/4 chance... this somehow works? + || Mathf.chance(0.35)) { //sometimes dump backwards at a 0.35 chance... this somehow works? tryDump(tile, tile.getRotation(), null); } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/CoreBlock.java b/core/src/io/anuke/mindustry/world/blocks/types/storage/CoreBlock.java similarity index 93% rename from core/src/io/anuke/mindustry/world/blocks/types/defense/CoreBlock.java rename to core/src/io/anuke/mindustry/world/blocks/types/storage/CoreBlock.java index 5a8052d8a3..ba4e6a9e0e 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/CoreBlock.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/storage/CoreBlock.java @@ -1,4 +1,4 @@ -package io.anuke.mindustry.world.blocks.types.defense; +package io.anuke.mindustry.world.blocks.types.storage; import io.anuke.mindustry.net.Net; import io.anuke.mindustry.resource.Item; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/storage/Vault.java b/core/src/io/anuke/mindustry/world/blocks/types/storage/Vault.java new file mode 100644 index 0000000000..ed1055dda9 --- /dev/null +++ b/core/src/io/anuke/mindustry/world/blocks/types/storage/Vault.java @@ -0,0 +1,63 @@ +package io.anuke.mindustry.world.blocks.types.storage; + +import com.badlogic.gdx.graphics.Color; +import com.badlogic.gdx.utils.Array; +import io.anuke.mindustry.resource.Item; +import io.anuke.mindustry.world.Block; +import io.anuke.mindustry.world.BlockBar; +import io.anuke.mindustry.world.Tile; +import io.anuke.ucore.core.Timers; +import io.anuke.ucore.util.Mathf; + +public class Vault extends Block { + public int capacity; + + public Vault(String name){ + super(name); + solid = true; + update = true; + bars.add(new BlockBar(Color.GREEN, true, tile -> (float)tile.entity.totalItems()/capacity)); + } + + @Override + public void getStats(Array list){ + super.getStats(list); + list.add("[iteminfo]Capacity: " + capacity); + } + + @Override + public void update(Tile tile){ + tile.setRotation((byte) Mathf.mod(tile.getRotation(), 4)); + + int iterations = Math.max(1, (int) (Timers.delta() + 0.4f)); + + for(int i = 0; i < iterations; i ++) { + + if(!canOutput(tile, tile.getNearby(tile.getRotation()))){ + tile.setRotation((byte) ((tile.getRotation() + 1) % 4)); + }else if (tile.entity.totalItems() > 0) { + if (tile.getExtra() != tile.getRotation() + || Mathf.chance(0.35)) { //sometimes dump backwards at a 0.35 chance... this somehow works? + tryDump(tile, tile.getRotation(), null); + } + + tile.setRotation((byte) ((tile.getRotation() + 1) % 4)); + } + } + } + + @Override + public void handleItem(Item item, Tile tile, Tile source){ + super.handleItem(item, tile, source); + tile.setExtra(tile.relativeTo(source.x, source.y)); + } + + @Override + public boolean acceptItem(Item item, Tile tile, Tile source) { + return tile.entity.totalItems() < capacity; + } + + boolean canOutput(Tile tile, Tile to){ + return to != null && (to.block() instanceof Vault || to.block() instanceof CoreBlock); + } +}