From e6499f7e5a4cf86bbb004c29d05210092be86530 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 8 Jun 2019 10:41:22 -0400 Subject: [PATCH] Bugfixes --- .../io/anuke/mindustry/content/Bullets.java | 2 +- .../io/anuke/mindustry/core/NetClient.java | 1 + .../io/anuke/mindustry/entities/Damage.java | 20 +++++++++++++++---- .../io/anuke/mindustry/entities/Predict.java | 4 ++-- .../src/io/anuke/mindustry/net/NetworkIO.java | 3 +-- .../mindustry/world/blocks/units/MechPad.java | 2 +- 6 files changed, 22 insertions(+), 10 deletions(-) diff --git a/core/src/io/anuke/mindustry/content/Bullets.java b/core/src/io/anuke/mindustry/content/Bullets.java index feefe33d8f..c3e69f9dc1 100644 --- a/core/src/io/anuke/mindustry/content/Bullets.java +++ b/core/src/io/anuke/mindustry/content/Bullets.java @@ -547,7 +547,7 @@ public class Bullets implements ContentList{ @Override public void update(Bullet b){ if(b.timer.get(1, 5f)){ - Damage.collideLine(b, b.getTeam(), hitEffect, b.x, b.y, b.rot(), length); + Damage.collideLine(b, b.getTeam(), hitEffect, b.x, b.y, b.rot(), length, true); } Effects.shake(1f, 1f, b.x, b.y); } diff --git a/core/src/io/anuke/mindustry/core/NetClient.java b/core/src/io/anuke/mindustry/core/NetClient.java index bf196e37e1..e5395628cc 100644 --- a/core/src/io/anuke/mindustry/core/NetClient.java +++ b/core/src/io/anuke/mindustry/core/NetClient.java @@ -190,6 +190,7 @@ public class NetClient implements ApplicationListener{ public static void onWorldDataBegin(){ Entities.clear(); netClient.removed.clear(); + logic.reset(); ui.chatfrag.clearMessages(); Net.setClientLoaded(false); diff --git a/core/src/io/anuke/mindustry/entities/Damage.java b/core/src/io/anuke/mindustry/entities/Damage.java index 7acfae0783..474a9747e4 100644 --- a/core/src/io/anuke/mindustry/entities/Damage.java +++ b/core/src/io/anuke/mindustry/entities/Damage.java @@ -3,8 +3,7 @@ package io.anuke.mindustry.entities; import io.anuke.annotations.Annotations.Struct; import io.anuke.arc.collection.GridBits; import io.anuke.arc.collection.IntQueue; -import io.anuke.arc.function.Consumer; -import io.anuke.arc.function.Predicate; +import io.anuke.arc.function.*; import io.anuke.arc.graphics.Color; import io.anuke.arc.math.Mathf; import io.anuke.arc.math.geom.*; @@ -78,18 +77,31 @@ public class Damage{ } } + public static void collideLine(Bullet hitter, Team team, Effect effect, float x, float y, float angle, float length){ + collideLine(hitter, team, effect, x, y, angle, length, false); + } + /** * Damages entities in a line. * Only enemies of the specified team are damaged. */ - public static void collideLine(Bullet hitter, Team team, Effect effect, float x, float y, float angle, float length){ + public static void collideLine(Bullet hitter, Team team, Effect effect, float x, float y, float angle, float length, boolean large){ tr.trns(angle, length); - world.raycastEachWorld(x, y, x + tr.x, y + tr.y, (cx, cy) -> { + IntPositionConsumer collider = (cx, cy) -> { Tile tile = world.ltile(cx, cy); if(tile != null && tile.entity != null && tile.getTeamID() != team.ordinal() && tile.entity.collide(hitter)){ tile.entity.collision(hitter); hitter.getBulletType().hit(hitter, tile.worldx(), tile.worldy()); } + }; + + world.raycastEachWorld(x, y, x + tr.x, y + tr.y, (cx, cy) -> { + collider.accept(cx, cy); + if(large){ + for(Point2 p : Geometry.d4){ + collider.accept(cx + p.x, cy + p.y); + } + } return false; }); diff --git a/core/src/io/anuke/mindustry/entities/Predict.java b/core/src/io/anuke/mindustry/entities/Predict.java index e4e103a64e..25bb2aea84 100644 --- a/core/src/io/anuke/mindustry/entities/Predict.java +++ b/core/src/io/anuke/mindustry/entities/Predict.java @@ -56,8 +56,8 @@ public class Predict{ */ public static Vector2 intercept(TargetTrait src, TargetTrait dst, float v){ return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), - dst.getTargetVelocityX() - src.getTargetVelocityX(), - dst.getTargetVelocityY() - src.getTargetVelocityY(), v); + dst.getTargetVelocityX() - src.getTargetVelocityX()/2f, + dst.getTargetVelocityY() - src.getTargetVelocityY()/2f, v); } private static Vector2 quad(float a, float b, float c){ diff --git a/core/src/io/anuke/mindustry/net/NetworkIO.java b/core/src/io/anuke/mindustry/net/NetworkIO.java index bda5a91628..1729f3d4e4 100644 --- a/core/src/io/anuke/mindustry/net/NetworkIO.java +++ b/core/src/io/anuke/mindustry/net/NetworkIO.java @@ -4,8 +4,7 @@ import io.anuke.arc.Core; import io.anuke.arc.util.Time; import io.anuke.mindustry.entities.Entities; import io.anuke.mindustry.entities.type.Player; -import io.anuke.mindustry.game.Rules; -import io.anuke.mindustry.game.Version; +import io.anuke.mindustry.game.*; import io.anuke.mindustry.io.JsonIO; import io.anuke.mindustry.io.SaveIO; import io.anuke.mindustry.maps.Map; diff --git a/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java b/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java index b3effe50ed..dbb67e8d7f 100644 --- a/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java +++ b/core/src/io/anuke/mindustry/world/blocks/units/MechPad.java @@ -83,7 +83,7 @@ public class MechPad extends Block{ protected static boolean checkValidTap(Tile tile, Player player){ MechFactoryEntity entity = tile.entity(); - return Math.abs(player.x - tile.drawx()) <= tile.block().size * tilesize && + return !player.isDead() && Math.abs(player.x - tile.drawx()) <= tile.block().size * tilesize && Math.abs(player.y - tile.drawy()) <= tile.block().size * tilesize && entity.cons.valid() && entity.player == null; }