From fbe45aba7466068da575d0eb9d80bfe7fb723160 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 2 Jun 2021 17:44:57 -0400 Subject: [PATCH] Misc bugfixes --- core/src/mindustry/input/MobileInput.java | 12 +++--------- .../world/blocks/payloads/PayloadSource.java | 9 +++++++++ .../mindustry/world/blocks/payloads/PayloadVoid.java | 2 ++ .../mindustry/world/blocks/payloads/UnitPayload.java | 12 +++++------- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/core/src/mindustry/input/MobileInput.java b/core/src/mindustry/input/MobileInput.java index d037a0d351..792d242851 100644 --- a/core/src/mindustry/input/MobileInput.java +++ b/core/src/mindustry/input/MobileInput.java @@ -856,8 +856,7 @@ public class MobileInput extends InputHandler implements GestureListener{ boolean omni = unit.type.omniMovement; boolean allowHealing = type.canHeal; - boolean validHealTarget = allowHealing && target instanceof Building && ((Building)target).isValid() && target.team() == unit.team && - ((Building)target).damaged() && target.within(unit, type.range); + boolean validHealTarget = allowHealing && target instanceof Building b && b.isValid() && target.team() == unit.team && b.damaged() && target.within(unit, type.range); boolean boosted = (unit instanceof Mechc && unit.isFlying()); //reset target if: @@ -912,13 +911,8 @@ public class MobileInput extends InputHandler implements GestureListener{ unit.vel.approachDelta(Vec2.ZERO, unit.speed() * type.accel / 2f); } - float expansion = 3f; - unit.hitbox(rect); - rect.x -= expansion; - rect.y -= expansion; - rect.width += expansion * 2f; - rect.height += expansion * 2f; + rect.grow(6f); player.boosting = collisions.overlapsTile(rect) || !unit.within(targetPos, 85f); @@ -927,7 +921,7 @@ public class MobileInput extends InputHandler implements GestureListener{ }else{ unit.moveAt(Tmp.v2.trns(unit.rotation, movement.len())); if(!movement.isZero()){ - unit.vel.rotateTo(movement.angle(), unit.type.rotateSpeed * Math.max(Time.delta, 1)); + unit.rotation = Angles.moveToward(unit.rotation, movement.angle(), unit.type.rotateSpeed * Math.max(Time.delta, 1)); } } diff --git a/core/src/mindustry/world/blocks/payloads/PayloadSource.java b/core/src/mindustry/world/blocks/payloads/PayloadSource.java index aa6a5c9a6c..68bf32e744 100644 --- a/core/src/mindustry/world/blocks/payloads/PayloadSource.java +++ b/core/src/mindustry/world/blocks/payloads/PayloadSource.java @@ -27,6 +27,8 @@ public class PayloadSource extends PayloadBlock{ hasPower = true; rotate = true; configurable = true; + //make sure to display large units. + clipSize = 120; config(Block.class, (PayloadSourceBuild build, Block block) -> { if(canProduce(block) && build.block != block){ @@ -45,6 +47,13 @@ public class PayloadSource extends PayloadBlock{ build.scl = 0f; } }); + + configClear((PayloadSourceBuild build) -> { + build.block = null; + build.unit = null; + build.payload = null; + build.scl = 0f; + }); } @Override diff --git a/core/src/mindustry/world/blocks/payloads/PayloadVoid.java b/core/src/mindustry/world/blocks/payloads/PayloadVoid.java index 434753f0ee..2c8cd68bf2 100644 --- a/core/src/mindustry/world/blocks/payloads/PayloadVoid.java +++ b/core/src/mindustry/world/blocks/payloads/PayloadVoid.java @@ -19,6 +19,8 @@ public class PayloadVoid extends PayloadBlock{ update = true; rotate = false; size = 3; + //make sure to display large units. + clipSize = 120; } @Override diff --git a/core/src/mindustry/world/blocks/payloads/UnitPayload.java b/core/src/mindustry/world/blocks/payloads/UnitPayload.java index 2300dba10b..22d11f4b65 100644 --- a/core/src/mindustry/world/blocks/payloads/UnitPayload.java +++ b/core/src/mindustry/world/blocks/payloads/UnitPayload.java @@ -4,10 +4,10 @@ import arc.*; import arc.graphics.*; import arc.graphics.g2d.*; import arc.math.*; -import arc.math.geom.*; import arc.util.*; import arc.util.io.*; import mindustry.*; +import mindustry.core.*; import mindustry.entities.EntityCollisions.*; import mindustry.entities.*; import mindustry.game.EventType.*; @@ -69,14 +69,12 @@ public class UnitPayload implements Payload{ //check if unit can be dumped here SolidPred solid = unit.solidity(); if(solid != null){ - int tx = unit.tileX(), ty = unit.tileY(); - boolean nearEmpty = !solid.solid(tx, ty); - for(Point2 p : Geometry.d4){ - nearEmpty |= !solid.solid(tx + p.x, ty + p.y); - } + Tmp.v1.trns(unit.rotation, 1f); + + int tx = World.toTile(unit.x + Tmp.v1.x), ty = World.toTile(unit.y + Tmp.v1.y); //cannot dump on solid blocks - if(!nearEmpty) return false; + if(solid.solid(tx, ty)) return false; } //cannnot dump when there's a lot of overlap going on