From 0776951018088e645adb3c3d29ffd51215e059ec Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 13 Sep 2018 16:53:05 -0400 Subject: [PATCH] Improved turret accuracy --- build.gradle | 2 +- .../mindustry/content/blocks/TurretBlocks.java | 3 ++- .../src/io/anuke/mindustry/entities/Player.java | 7 +++++++ .../io/anuke/mindustry/entities/Predict.java | 4 +++- core/src/io/anuke/mindustry/entities/Unit.java | 4 +++- .../mindustry/entities/traits/TargetTrait.java | 17 +++++++++++++++++ .../mindustry/entities/units/BaseUnit.java | 5 +++++ 7 files changed, 38 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 6fd627a388..dfcc9007b1 100644 --- a/build.gradle +++ b/build.gradle @@ -27,7 +27,7 @@ allprojects { appName = 'Mindustry' gdxVersion = '1.9.8' roboVMVersion = '2.3.0' - uCoreVersion = '74dc653bbd66d1e8b10e22efb4f1206195674dd5' + uCoreVersion = 'cf9553e76e6226650b86921a73208e360049ba44' getVersionString = { String buildVersion = getBuildVersion() diff --git a/core/src/io/anuke/mindustry/content/blocks/TurretBlocks.java b/core/src/io/anuke/mindustry/content/blocks/TurretBlocks.java index e759fdb96e..294aacc049 100644 --- a/core/src/io/anuke/mindustry/content/blocks/TurretBlocks.java +++ b/core/src/io/anuke/mindustry/content/blocks/TurretBlocks.java @@ -217,9 +217,10 @@ public class TurretBlocks extends BlockList implements ContentList{ spectre = new DoubleTurret("spectre"){{ ammoTypes = new AmmoType[]{AmmoTypes.bulletDenseBig, AmmoTypes.bulletPyratiteBig, AmmoTypes.bulletThoriumBig}; reload = 4f; - restitution = 0.03f; + restitution = 0.1f; ammoUseEffect = ShootFx.shellEjectMedium; range = 200f; + inaccuracy = 4f; recoil = 3f; xRand = 3f; shotWidth = 4f; diff --git a/core/src/io/anuke/mindustry/entities/Player.java b/core/src/io/anuke/mindustry/entities/Player.java index 7daea8e4d8..97d92672e3 100644 --- a/core/src/io/anuke/mindustry/entities/Player.java +++ b/core/src/io/anuke/mindustry/entities/Player.java @@ -102,6 +102,11 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra player.onDeath(); } + @Override + public float getDrag(){ + return mech.drag; + } + @Override public Timer getTimer(){ return timer; @@ -431,6 +436,8 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra //region update methods + float lastx, lasty; + @Override public void update(){ hitTime -= Timers.delta(); diff --git a/core/src/io/anuke/mindustry/entities/Predict.java b/core/src/io/anuke/mindustry/entities/Predict.java index 06f86b540c..09d589bffd 100644 --- a/core/src/io/anuke/mindustry/entities/Predict.java +++ b/core/src/io/anuke/mindustry/entities/Predict.java @@ -53,7 +53,9 @@ public class Predict{ * See {@link #intercept(float, float, float, float, float, float, float)}. */ public static Vector2 intercept(TargetTrait src, TargetTrait dst, float v){ - return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), dst.getVelocity().x - src.getVelocity().x, dst.getVelocity().x - src.getVelocity().y, v); + return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), + dst.getTargetVelocityX() - src.getTargetVelocityX(), + dst.getTargetVelocityY() - src.getTargetVelocityY(), v); } private static Vector2 quad(float a, float b, float c){ diff --git a/core/src/io/anuke/mindustry/entities/Unit.java b/core/src/io/anuke/mindustry/entities/Unit.java index c8e33d4327..345bb34f75 100644 --- a/core/src/io/anuke/mindustry/entities/Unit.java +++ b/core/src/io/anuke/mindustry/entities/Unit.java @@ -207,13 +207,15 @@ public abstract class Unit extends DestructibleEntity implements SaveTrait, Targ /**Updates velocity and status effects.*/ public void updateVelocityStatus(float drag, float maxVelocity){ + Floor floor = getFloorOn(); + + if(isCarried()){ //carried units do not take into account velocity normally set(carrier.getX(), carrier.getY()); velocity.set(carrier.getVelocity()); return; } - Floor floor = getFloorOn(); Tile tile = world.tileWorld(x, y); status.update(this); diff --git a/core/src/io/anuke/mindustry/entities/traits/TargetTrait.java b/core/src/io/anuke/mindustry/entities/traits/TargetTrait.java index f63cca760f..df50f23a1c 100644 --- a/core/src/io/anuke/mindustry/entities/traits/TargetTrait.java +++ b/core/src/io/anuke/mindustry/entities/traits/TargetTrait.java @@ -2,6 +2,7 @@ package io.anuke.mindustry.entities.traits; import io.anuke.mindustry.game.Team; import io.anuke.ucore.entities.trait.PosTrait; +import io.anuke.ucore.entities.trait.SolidTrait; import io.anuke.ucore.entities.trait.VelocityTrait; /** @@ -13,6 +14,22 @@ public interface TargetTrait extends PosTrait, VelocityTrait{ Team getTeam(); + default float getTargetVelocityX(){ + if(this instanceof SolidTrait){ + return getX() - ((SolidTrait) this).lastPosition().x; + }else{ + return getVelocity().x; + } + } + + default float getTargetVelocityY(){ + if(this instanceof SolidTrait){ + return getY() - ((SolidTrait) this).lastPosition().y; + }else{ + return getVelocity().y; + } + } + /** * Whether this entity is a valid target. */ diff --git a/core/src/io/anuke/mindustry/entities/units/BaseUnit.java b/core/src/io/anuke/mindustry/entities/units/BaseUnit.java index 88001cdcaa..cbe63c5118 100644 --- a/core/src/io/anuke/mindustry/entities/units/BaseUnit.java +++ b/core/src/io/anuke/mindustry/entities/units/BaseUnit.java @@ -82,6 +82,11 @@ public abstract class BaseUnit extends Unit implements ShooterTrait{ threads.runDelay(unit::remove); } + @Override + public float getDrag(){ + return type.drag; + } + /**Called when a command is recieved from the command center.*/ public abstract void onCommand(UnitCommand command);