From 67344ffd7deb77191308240d74b9ca73b43b21b4 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 14 May 2022 23:28:15 -0400 Subject: [PATCH] Turret instant reload fix --- .../world/blocks/defense/turrets/ReloadTurret.java | 7 ------- .../src/mindustry/world/blocks/defense/turrets/Turret.java | 3 +++ core/src/mindustry/world/draw/DrawTurret.java | 4 +++- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/core/src/mindustry/world/blocks/defense/turrets/ReloadTurret.java b/core/src/mindustry/world/blocks/defense/turrets/ReloadTurret.java index 4a6c957a0e..c74970a9f1 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/ReloadTurret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/ReloadTurret.java @@ -25,13 +25,6 @@ public class ReloadTurret extends BaseTurret{ public class ReloadTurretBuild extends BaseTurretBuild{ public float reloadCounter; - @Override - public void created(){ - super.created(); - //for visual reasons, the turret does not need reloading when placed; however, it should not be *fully* reloaded, so firing will not occur - reloadCounter = reload - 0.0001f; - } - protected void updateCooling(){ if(reloadCounter < reload && coolant != null && coolant.efficiency(this) > 0 && efficiency > 0){ float capacity = coolant instanceof ConsumeLiquidFilter filter ? filter.getConsumed(this).heatCapacity : 1f; diff --git a/core/src/mindustry/world/blocks/defense/turrets/Turret.java b/core/src/mindustry/world/blocks/defense/turrets/Turret.java index c69fb4cbb3..178cf9254f 100644 --- a/core/src/mindustry/world/blocks/defense/turrets/Turret.java +++ b/core/src/mindustry/world/blocks/defense/turrets/Turret.java @@ -200,6 +200,8 @@ public class Turret extends ReloadTurret{ public float curRecoil, heat, logicControlTime = -1; public float shootWarmup; public int totalShots; + //turrets need to shoot once for 'visual reload' to be valid, otherwise they seem stuck at reload 0 when placed. + public boolean visualReloadValid; public boolean logicShooting = false; public @Nullable Posc target; public Vec2 targetPos = new Vec2(); @@ -491,6 +493,7 @@ public class Turret extends ReloadTurret{ protected void updateShooting(){ if(reloadCounter >= reload && !charging() && shootWarmup >= minWarmup){ + visualReloadValid = true; BulletType type = peekAmmo(); shoot(type); diff --git a/core/src/mindustry/world/draw/DrawTurret.java b/core/src/mindustry/world/draw/DrawTurret.java index 4bc4fb0e0c..22a8e9e485 100644 --- a/core/src/mindustry/world/draw/DrawTurret.java +++ b/core/src/mindustry/world/draw/DrawTurret.java @@ -67,8 +67,10 @@ public class DrawTurret extends DrawBlock{ Draw.z(Layer.turret); } + float progress = tb.visualReloadValid ? tb.progress() : 1f; + //TODO no smooth reload - var params = DrawPart.params.set(build.warmup(), 1f - tb.progress(), 1f - tb.progress(), tb.heat, tb.x + tb.recoilOffset.x, tb.y + tb.recoilOffset.y, tb.rotation); + var params = DrawPart.params.set(build.warmup(), 1f - progress, 1f - progress, tb.heat, tb.x + tb.recoilOffset.x, tb.y + tb.recoilOffset.y, tb.rotation); for(var part : parts){ part.draw(params);