diff --git a/core/src/mindustry/entities/comp/MinerComp.java b/core/src/mindustry/entities/comp/MinerComp.java index 1f74be8cee..3a8fdee884 100644 --- a/core/src/mindustry/entities/comp/MinerComp.java +++ b/core/src/mindustry/entities/comp/MinerComp.java @@ -124,16 +124,6 @@ abstract class MinerComp implements Itemsc, Posc, Teamc, Rotc, Drawc{ } } - public void drawMining(){ - if(type.drawMineBeam){ - float focusLen = type.mineBeamOffset + Mathf.absin(Time.time, 1.1f, 0.5f); - float px = x + Angles.trnsx(rotation, focusLen); - float py = y + Angles.trnsy(rotation, focusLen); - - drawMiningBeam(px, py); - } - } - public void drawMiningBeam(float px, float py){ if(!mining()) return; float swingScl = 12f, swingMag = tilesize / 8f; diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index a2145e9ff2..d8ece89575 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -1232,7 +1232,7 @@ public class UnitType extends UnlockableContent implements Senseable{ if(unit.inFogTo(Vars.player.team())) return; unit.drawBuilding(); - unit.drawMining(); + drawMining(unit); boolean isPayload = !unit.isAdded(); @@ -1344,9 +1344,36 @@ public class UnitType extends UnlockableContent implements Senseable{ return shieldColor == null ? unit.team.color : shieldColor; } - @Deprecated public void drawMining(Unit unit){ - unit.drawMining(); + if(drawMineBeam){ + float focusLen = mineBeamOffset + Mathf.absin(Time.time, 1.1f, 0.5f); + float px = unit.x + Angles.trnsx(unit.rotation, focusLen); + float py = unit.y + Angles.trnsy(unit.rotation, focusLen); + + drawMiningBeam(px, py); + } + } + + public void drawMiningBeam(Unit unit, float px, float py){ + if(!unit.mining()) return; + float swingScl = 12f, swingMag = tilesize / 8f; + float flashScl = 0.3f; + + float ex = unit.mineTile.worldx() + Mathf.sin(Time.time + 48, swingScl, swingMag); + float ey = unit.mineTile.worldy() + Mathf.sin(Time.time + 48, swingScl + 2f, swingMag); + + Draw.z(Layer.flyingUnit + 0.1f); + + Draw.color(Color.lightGray, Color.white, 1f - flashScl + Mathf.absin(Time.time, 0.5f, flashScl)); + + Drawf.laser(Core.atlas.find("minelaser"), Core.atlas.find("minelaser-end"), px, py, ex, ey, 0.75f); + + if(unit.isLocal()){ + Lines.stroke(1f, Pal.accent); + Lines.poly(unit.mineTile.worldx(), unit.mineTile.worldy(), 4, tilesize / 2f * Mathf.sqrt2, Time.time); + } + + Draw.color(); } public void drawPayload(T unit){ diff --git a/core/src/mindustry/type/weapons/MineWeapon.java b/core/src/mindustry/type/weapons/MineWeapon.java index 553c696f2b..ed55659a49 100644 --- a/core/src/mindustry/type/weapons/MineWeapon.java +++ b/core/src/mindustry/type/weapons/MineWeapon.java @@ -60,7 +60,7 @@ public class MineWeapon extends Weapon{ px = wx + Angles.trnsx(weaponRotation, shootX, sY), py = wy + Angles.trnsy(weaponRotation, shootX, sY); - unit.drawMiningBeam(px, py); + unit.type.drawMiningBeam(px, py); Draw.z(z); } }