diff --git a/core/assets/maps/conveyorhell.mmap b/core/assets/maps/conveyorhell.mmap new file mode 100644 index 0000000000..cd3ec14882 Binary files /dev/null and b/core/assets/maps/conveyorhell.mmap differ diff --git a/core/assets/maps/routerhell.mmap b/core/assets/maps/routerhell.mmap new file mode 100644 index 0000000000..02e962d912 Binary files /dev/null and b/core/assets/maps/routerhell.mmap differ diff --git a/core/assets/version.properties b/core/assets/version.properties index 6464636998..b2c2bb69f0 100644 --- a/core/assets/version.properties +++ b/core/assets/version.properties @@ -1,5 +1,5 @@ #Autogenerated file. Do not modify. -#Mon Apr 09 18:28:57 EDT 2018 +#Mon Apr 09 20:22:59 EDT 2018 version=release androidBuildCode=896 name=Mindustry diff --git a/core/src/io/anuke/mindustry/entities/Unit.java b/core/src/io/anuke/mindustry/entities/Unit.java index 0c6ab1cf54..99c64878ea 100644 --- a/core/src/io/anuke/mindustry/entities/Unit.java +++ b/core/src/io/anuke/mindustry/entities/Unit.java @@ -18,6 +18,7 @@ public abstract class Unit extends SyncEntity { public static final float hitDuration = 9f; public StatusController status = new StatusController(); + public UnitInventory inventory = new UnitInventory(); public Team team = Team.blue; public Vector2 velocity = new Vector2(); public float hitTime; diff --git a/core/src/io/anuke/mindustry/entities/UnitInventory.java b/core/src/io/anuke/mindustry/entities/UnitInventory.java new file mode 100644 index 0000000000..d1690cba9a --- /dev/null +++ b/core/src/io/anuke/mindustry/entities/UnitInventory.java @@ -0,0 +1,10 @@ +package io.anuke.mindustry.entities; + +import io.anuke.mindustry.resource.*; + +public class UnitInventory { + public final AmmoEntry ammo = new AmmoEntry(AmmoType.getByID(0), 0); + public final ItemStack item = new ItemStack(Item.getByID(0), 0); + public final LiquidStack liquid = new LiquidStack(Liquid.getByID(0), 0); + public float power = 0f; +} diff --git a/core/src/io/anuke/mindustry/entities/units/GroundUnitType.java b/core/src/io/anuke/mindustry/entities/units/GroundUnitType.java index d04160851f..4e3fe0e970 100644 --- a/core/src/io/anuke/mindustry/entities/units/GroundUnitType.java +++ b/core/src/io/anuke/mindustry/entities/units/GroundUnitType.java @@ -26,8 +26,9 @@ public abstract class GroundUnitType extends UnitType{ public GroundUnitType(String name) { super(name); - maxVelocity = 2f; + maxVelocity = 1.1f; speed = 0.05f; + drag = 0.4f; } @Override diff --git a/core/src/io/anuke/mindustry/input/InputHandler.java b/core/src/io/anuke/mindustry/input/InputHandler.java index 18e4e8a85c..70f02ff9df 100644 --- a/core/src/io/anuke/mindustry/input/InputHandler.java +++ b/core/src/io/anuke/mindustry/input/InputHandler.java @@ -43,7 +43,7 @@ public abstract class InputHandler extends InputAdapter{ } public boolean cursorNear(){ - return Vector2.dst(player.x, player.y, getBlockX() * tilesize, getBlockY() * tilesize) <= placerange; + return Vector2.dst(player.x, player.y, getBlockX() * tilesize, getBlockY() * tilesize) <= placerange || debug; } public boolean tryPlaceBlock(int x, int y, boolean sound){ diff --git a/core/src/io/anuke/mindustry/input/PlaceMode.java b/core/src/io/anuke/mindustry/input/PlaceMode.java index 02a6cc03b2..c15fc6a642 100644 --- a/core/src/io/anuke/mindustry/input/PlaceMode.java +++ b/core/src/io/anuke/mindustry/input/PlaceMode.java @@ -109,7 +109,7 @@ public enum PlaceMode{ } }, areaDelete{ - int maxlen = 20; + int maxlen = debug ? 999999: 20; int tilex; int tiley; int endx; diff --git a/core/src/io/anuke/mindustry/io/Maps.java b/core/src/io/anuke/mindustry/io/Maps.java index c58e795aa5..2213304385 100644 --- a/core/src/io/anuke/mindustry/io/Maps.java +++ b/core/src/io/anuke/mindustry/io/Maps.java @@ -17,7 +17,7 @@ import static io.anuke.mindustry.Vars.mapExtension; public class Maps implements Disposable{ /**List of all built-in maps.*/ - private static final String[] defaultMapNames = {"test", "trinity"}; + private static final String[] defaultMapNames = {"test", "trinity", "routerhell", "conveyorhell"}; /**Tile format version.*/ private static final int version = 0; diff --git a/core/src/io/anuke/mindustry/resource/AmmoEntry.java b/core/src/io/anuke/mindustry/resource/AmmoEntry.java new file mode 100644 index 0000000000..749bededa6 --- /dev/null +++ b/core/src/io/anuke/mindustry/resource/AmmoEntry.java @@ -0,0 +1,11 @@ +package io.anuke.mindustry.resource; + +public class AmmoEntry{ + public AmmoType type; + public int amount; + + public AmmoEntry(AmmoType type, int amount) { + this.type = type; + this.amount = amount; + } +} diff --git a/core/src/io/anuke/mindustry/resource/AmmoType.java b/core/src/io/anuke/mindustry/resource/AmmoType.java index d2528391d8..f4c8955eba 100644 --- a/core/src/io/anuke/mindustry/resource/AmmoType.java +++ b/core/src/io/anuke/mindustry/resource/AmmoType.java @@ -53,7 +53,7 @@ public class AmmoType { return allTypes; } - public static AmmoType getByID(byte id){ + public static AmmoType getByID(int id){ return allTypes.get(id); } } diff --git a/core/src/io/anuke/mindustry/resource/ItemStack.java b/core/src/io/anuke/mindustry/resource/ItemStack.java index 8fea6b7fe0..c11bce57b1 100644 --- a/core/src/io/anuke/mindustry/resource/ItemStack.java +++ b/core/src/io/anuke/mindustry/resource/ItemStack.java @@ -3,7 +3,6 @@ package io.anuke.mindustry.resource; public class ItemStack{ public Item item; public int amount; - public float pos; public ItemStack(Item item, int amount){ this.item = item; diff --git a/core/src/io/anuke/mindustry/resource/LiquidStack.java b/core/src/io/anuke/mindustry/resource/LiquidStack.java new file mode 100644 index 0000000000..7e5b128e1c --- /dev/null +++ b/core/src/io/anuke/mindustry/resource/LiquidStack.java @@ -0,0 +1,15 @@ +package io.anuke.mindustry.resource; + +public class LiquidStack { + public Liquid liquid; + public float amount; + + public LiquidStack(Liquid liquid, float amount){ + this.liquid = liquid; + this.amount = amount; + } + + public boolean equals(LiquidStack other){ + return other != null && other.liquid == liquid && other.amount == amount; + } +} diff --git a/core/src/io/anuke/mindustry/world/BaseBlock.java b/core/src/io/anuke/mindustry/world/BaseBlock.java index d96524936b..b7e60cfd59 100644 --- a/core/src/io/anuke/mindustry/world/BaseBlock.java +++ b/core/src/io/anuke/mindustry/world/BaseBlock.java @@ -162,7 +162,6 @@ public abstract class BaseBlock { } } - i = (byte)((i + 1) % nearby.length); tile.setDump(i); } diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java index 4f7df2430d..3fb6e4afe4 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/Turret.java @@ -6,6 +6,7 @@ import io.anuke.mindustry.content.fx.Fx; import io.anuke.mindustry.entities.*; import io.anuke.mindustry.graphics.Layer; import io.anuke.mindustry.graphics.Palette; +import io.anuke.mindustry.resource.AmmoEntry; import io.anuke.mindustry.resource.AmmoType; import io.anuke.mindustry.world.Block; import io.anuke.mindustry.world.BlockGroup; @@ -252,16 +253,6 @@ public abstract class Turret extends Block{ public TileEntity getEntity(){ return new TurretEntity(); } - - public static class AmmoEntry{ - public final AmmoType type; - public int amount; - - public AmmoEntry(AmmoType type, int amount) { - this.type = type; - this.amount = amount; - } - } public static class TurretEntity extends TileEntity{ public TileEntity blockTarget; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/ItemTurret.java b/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/ItemTurret.java index 2860137838..2668763c6c 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/ItemTurret.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/defense/turrets/ItemTurret.java @@ -1,6 +1,7 @@ package io.anuke.mindustry.world.blocks.types.defense.turrets; import com.badlogic.gdx.utils.ObjectMap; +import io.anuke.mindustry.resource.AmmoEntry; import io.anuke.mindustry.resource.AmmoType; import io.anuke.mindustry.resource.Item; import io.anuke.mindustry.world.BarType; diff --git a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Conveyor.java b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Conveyor.java index ec998f60c0..6f585e291b 100644 --- a/core/src/io/anuke/mindustry/world/blocks/types/distribution/Conveyor.java +++ b/core/src/io/anuke/mindustry/world/blocks/types/distribution/Conveyor.java @@ -96,20 +96,25 @@ public class Conveyor extends Block{ public void unitOn(Tile tile, Unit unit) { ConveyorEntity entity = tile.entity(); - float angle = tile.getRotation() * 90f; - float speed = this.speed * tilesize / 1.5f; - float tx = Angles.trnsx(angle, 1f), ty = Angles.trnsy(angle, 1f); - unit.velocity.add(tx * speed * Timers.delta(), ty * speed * Timers.delta()); + float speed = this.speed * tilesize / 2.3f; + float tx = Geometry.d4[tile.getRotation()].x, ty = Geometry.d4[tile.getRotation()].y; + + float min; if(Math.abs(tx) > Math.abs(ty)){ - float rx = tile.worldx() + tx/2f*tilesize; - entity.minCarry = Math.min(entity.minCarry, Mathf.clamp((entity.x - rx) * tx / tilesize)); + float rx = tile.worldx() - tx/2f*tilesize; + min = Mathf.clamp((unit.x - rx) * tx / tilesize); }else{ - float ry = tile.worldy() + ty/2f*tilesize; - entity.minCarry = Math.min(entity.minCarry, Mathf.clamp((entity.y - ry) * ty / tilesize)); + float ry = tile.worldy() - ty/2f*tilesize; + min = Mathf.clamp((unit.y - ry) * ty / tilesize); } + entity.minCarry = Math.min(entity.minCarry, min); entity.carrying += unit.getMass(); + + if(entity.convey.size * itemSpace < 0.9f){ + unit.velocity.add(tx * speed * Timers.delta(), ty * speed * Timers.delta()); + } } @Override