diff --git a/core/src/mindustry/ai/types/MimicAI.java b/core/src/mindustry/ai/types/MimicAI.java index 6e4ea74ca3..fbb8eef8db 100644 --- a/core/src/mindustry/ai/types/MimicAI.java +++ b/core/src/mindustry/ai/types/MimicAI.java @@ -28,4 +28,9 @@ public class MimicAI extends AIController{ } } } + + @Override + public boolean isFollowing(Playerc player){ + return control == player.unit(); + } } diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 6b9f84b33a..f4c949fbfb 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -27,7 +27,6 @@ public class UnitTypes implements ContentList{ public void load(){ dagger = new UnitType("dagger"){{ - speed = 0.5f; drag = 0.3f; hitsize = 8f; @@ -168,6 +167,7 @@ public class UnitTypes implements ContentList{ health = 400; buildSpeed = 0.4f; engineOffset = 6.5f; + hitsize = 7f; }}; /* diff --git a/core/src/mindustry/entities/units/UnitController.java b/core/src/mindustry/entities/units/UnitController.java index 749dd2634c..5109ee74b0 100644 --- a/core/src/mindustry/entities/units/UnitController.java +++ b/core/src/mindustry/entities/units/UnitController.java @@ -14,4 +14,8 @@ public interface UnitController{ default void update(){ } + + default boolean isFollowing(Playerc player){ + return false; + } } diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 2ce9ac9b84..e148f303a5 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -115,6 +115,10 @@ public class UnitType extends UnlockableContent{ //region drawing public void draw(Unitc unit){ + if(unit.controller().isFollowing(player)){ + drawControl(unit); + } + if(unit.isFlying()){ Draw.z(Layer.darkness); drawShadow(unit); @@ -139,6 +143,15 @@ public class UnitType extends UnlockableContent{ drawLight(unit); } + public void drawControl(Unitc unit){ + Draw.z(Layer.groundUnit - 2); + + Draw.color(Pal.accent, Color.white, Mathf.absin(4f, 0.3f)); + Lines.poly(unit.x(), unit.y(), 4, unit.hitSize() + 1.5f); + + Draw.reset(); + } + public void drawShadow(Unitc unit){ Draw.color(shadowColor); Draw.rect(region, unit.x() + shadowTX * unit.elevation(), unit.y() + shadowTY * unit.elevation(), unit.rotation() - 90); diff --git a/core/src/mindustry/world/blocks/distribution/StackConveyor.java b/core/src/mindustry/world/blocks/distribution/StackConveyor.java index d489e64530..cc7a32b84f 100644 --- a/core/src/mindustry/world/blocks/distribution/StackConveyor.java +++ b/core/src/mindustry/world/blocks/distribution/StackConveyor.java @@ -147,6 +147,8 @@ public class StackConveyor extends Block implements Autotiler{ public void onProximityUpdate(){ super.onProximityUpdate(); + int lastState = state; + state = stateMove; int[] bits = buildBlending(tile, tile.rotation(), null, true); @@ -160,6 +162,15 @@ public class StackConveyor extends Block implements Autotiler{ blendprox |= (1 << i); } } + + //update other conveyor state when this conveyor's state changes + if(state != lastState){ + for(Tilec near : proximity){ + if(near instanceof StackConveyorEntity){ + near.onProximityUpdate(); + } + } + } } @Override diff --git a/core/src/mindustry/world/blocks/units/UnitFactory.java b/core/src/mindustry/world/blocks/units/UnitFactory.java index f15824af18..2f1bf5b2b2 100644 --- a/core/src/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/mindustry/world/blocks/units/UnitFactory.java @@ -43,7 +43,11 @@ public class UnitFactory extends Block{ flags = EnumSet.of(BlockFlag.producer); configurable = true; - config(Integer.class, (tile, i) -> ((UnitFactoryEntity)tile).currentPlan = i < 0 || i >= plans.length ? -1 : i); + config(Integer.class, (tile, i) -> { + ((UnitFactoryEntity)tile).currentPlan = i < 0 || i >= plans.length ? -1 : i; + ((UnitFactoryEntity)tile).progress = 0; + }); + consumes.add(new ConsumeItemDynamic(e -> { UnitFactoryEntity entity = (UnitFactoryEntity)e;