diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 93f73fb49d..fe5361cceb 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -652,7 +652,11 @@ public class UnitType extends UnlockableContent{ } public void drawSoftShadow(Unit unit){ - Draw.color(0, 0, 0, 0.4f); + drawSoftShadow(unit, 1f); + } + + public void drawSoftShadow(Unit unit, float alpha){ + Draw.color(0, 0, 0, 0.4f * alpha); float rad = 1.6f; float size = Math.max(region.width, region.height) * Draw.scl; Draw.rect(softShadowRegion, unit, size * rad * Draw.xscl, size * rad * Draw.yscl); diff --git a/core/src/mindustry/world/blocks/payloads/BuildPayload.java b/core/src/mindustry/world/blocks/payloads/BuildPayload.java index 78cd768711..ad6a6a0fc9 100644 --- a/core/src/mindustry/world/blocks/payloads/BuildPayload.java +++ b/core/src/mindustry/world/blocks/payloads/BuildPayload.java @@ -72,9 +72,14 @@ public class BuildPayload implements Payload{ build.set(x, y); } + @Override + public void drawShadow(float alpha){ + Drawf.shadow(build.x, build.y, build.block.size * tilesize * 2f, alpha); + } + @Override public void draw(){ - Drawf.shadow(build.x, build.y, build.block.size * tilesize * 2f); + drawShadow(1f); Draw.rect(build.block.fullIcon, build.x, build.y); } diff --git a/core/src/mindustry/world/blocks/payloads/Payload.java b/core/src/mindustry/world/blocks/payloads/Payload.java index f68253b866..97d7e723f9 100644 --- a/core/src/mindustry/world/blocks/payloads/Payload.java +++ b/core/src/mindustry/world/blocks/payloads/Payload.java @@ -20,6 +20,8 @@ public interface Payload extends Position{ /** draws this payload at a position. */ void draw(); + void drawShadow(float alpha); + /** @return hitbox size of the payload. */ float size(); diff --git a/core/src/mindustry/world/blocks/payloads/PayloadDeconstructor.java b/core/src/mindustry/world/blocks/payloads/PayloadDeconstructor.java index f3dc893fd6..d9120c639b 100644 --- a/core/src/mindustry/world/blocks/payloads/PayloadDeconstructor.java +++ b/core/src/mindustry/world/blocks/payloads/PayloadDeconstructor.java @@ -65,16 +65,15 @@ public class PayloadDeconstructor extends PayloadBlock{ deconstructing.set(x + payVector.x, y + payVector.y, payRotation); Draw.z(Layer.blockOver); - //deconstructing.draw(); + deconstructing.drawShadow(1f - progress); - //TODO shadow //TODO looks really bad Draw.draw(Layer.blockOver, () -> { - Drawf.construct(x, y, deconstructing.icon(), Pal.remove, 0f, 1f - progress, 1f - progress, time); + Drawf.construct(x, y, deconstructing.icon(), Pal.remove, payRotation - 90f, 1f - progress, 1f - progress, time); Draw.color(Pal.remove); Draw.alpha(1f); - Lines.lineAngleCenter(x + Mathf.sin(time, 20f, Vars.tilesize / 2f * block.size - 3f), y, 90, block.size * Vars.tilesize - 6f); + Lines.lineAngleCenter(x + Mathf.sin(time, 20f, Vars.tilesize / 2f * block.size - 3f), y, 90f, block.size * Vars.tilesize - 6f); Draw.reset(); }); @@ -106,6 +105,8 @@ public class PayloadDeconstructor extends PayloadBlock{ progress = 0f; } + payRotation = Angles.moveToward(payRotation, 90f, payloadRotateSpeed * edelta()); + if(deconstructing != null){ var reqs = deconstructing.requirements(); if(accum == null || reqs.length != accum.length){ diff --git a/core/src/mindustry/world/blocks/payloads/UnitPayload.java b/core/src/mindustry/world/blocks/payloads/UnitPayload.java index f951cb3651..409f71eabb 100644 --- a/core/src/mindustry/world/blocks/payloads/UnitPayload.java +++ b/core/src/mindustry/world/blocks/payloads/UnitPayload.java @@ -104,6 +104,14 @@ public class UnitPayload implements Payload{ return true; } + @Override + public void drawShadow(float alpha){ + //TODO should not happen + if(unit.type == null) return; + + unit.type.drawSoftShadow(unit, alpha); + } + @Override public void draw(){ //TODO should not happen