diff --git a/core/assets/version.properties b/core/assets/version.properties index 1af122ef60..8382a51436 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,7 +1,7 @@ #Autogenerated file. Do not modify. -#Wed Feb 21 15:00:37 EST 2018 +#Wed Feb 21 19:21:02 EST 2018 version=release -androidBuildCode=257 +androidBuildCode=262 name=Mindustry code=3.3 build=custom build diff --git a/core/src/io/anuke/mindustry/resource/Item.java b/core/src/io/anuke/mindustry/resource/Item.java index 99a809e481..87959c4b61 100644 --- a/core/src/io/anuke/mindustry/resource/Item.java +++ b/core/src/io/anuke/mindustry/resource/Item.java @@ -23,6 +23,8 @@ public class Item{ public final int id; public final String name; public TextureRegion region; + public float explosiveness = 0f; + public float flammability = 0f; public Item(String name) { this.id = items.size; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/LiquidTurret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/LiquidTurret.java new file mode 100644 index 0000000000..4ef92ee95c --- /dev/null +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/LiquidTurret.java @@ -0,0 +1,81 @@ +package io.anuke.mindustry.world.blocks.types.defense; + +import io.anuke.mindustry.entities.TileEntity; +import io.anuke.mindustry.resource.Liquid; +import io.anuke.mindustry.world.Tile; +import io.anuke.mindustry.world.blocks.types.LiquidAcceptor; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.IOException; + +public class LiquidTurret extends Turret implements LiquidAcceptor{ + public Liquid ammoLiquid = Liquid.water; + public float liquidCapacity = 20f; + public float liquidPerShot = 1f; + + public LiquidTurret(String name) { + super(name); + } + + @Override + public boolean hasAmmo(Tile tile){ + LiquidTurretEntity entity = tile.entity(); + return entity.liquidAmount > liquidPerShot; + } + + @Override + public void consumeAmmo(Tile tile){ + LiquidTurretEntity entity = tile.entity(); + entity.liquidAmount -= liquidPerShot; + } + + @Override + public boolean acceptLiquid(Tile tile, Tile source, Liquid liquid, float amount){ + LiquidTurretEntity entity = tile.entity(); + return ammoLiquid == liquid && entity.liquidAmount + amount < liquidCapacity && (entity.liquid == liquid || entity.liquidAmount <= 0.01f); + } + + @Override + public void handleLiquid(Tile tile, Tile source, Liquid liquid, float amount){ + LiquidTurretEntity entity = tile.entity(); + entity.liquid = liquid; + entity.liquidAmount += amount; + } + + @Override + public float getLiquid(Tile tile){ + LiquidTurretEntity entity = tile.entity(); + return entity.liquidAmount; + } + + @Override + public float getLiquidCapacity(Tile tile){ + return liquidCapacity; + } + + @Override + public TileEntity getEntity() { + return new LiquidTurretEntity(); + } + + static class LiquidTurretEntity extends TurretEntity{ + public Liquid liquid; + public float liquidAmount; + + @Override + public void write(DataOutputStream stream) throws IOException { + super.write(stream); + stream.writeByte(liquid == null ? -1 : liquid.id); + stream.writeByte((byte)(liquidAmount)); + } + + @Override + public void read(DataInputStream stream) throws IOException{ + super.read(stream); + byte id = stream.readByte(); + liquid = id == -1 ? null : Liquid.getByID(id); + liquidAmount = stream.readByte(); + } + } +}