From 3db04da20a257a317e8d7f9516df5aced0b06690 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 16 Dec 2020 13:35:55 -0500 Subject: [PATCH] Payload tweaks --- .../mindustry/entities/comp/BuildingComp.java | 5 ++++- .../src/mindustry/entities/comp/PayloadComp.java | 1 + core/src/mindustry/input/InputHandler.java | 16 ++++++++-------- .../world/blocks/production/PayloadAcceptor.java | 13 ++++++++++++- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index 3774f98779..964f1f7078 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -1154,7 +1154,6 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, return false; } - public float handleDamage(float amount){ return amount; } @@ -1175,6 +1174,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, return true; } + public void pickedUp(){ + + } + public void removeFromProximity(){ onProximityRemoved(); tmpTiles.clear(); diff --git a/core/src/mindustry/entities/comp/PayloadComp.java b/core/src/mindustry/entities/comp/PayloadComp.java index 9e8675fcce..00813e9f78 100644 --- a/core/src/mindustry/entities/comp/PayloadComp.java +++ b/core/src/mindustry/entities/comp/PayloadComp.java @@ -58,6 +58,7 @@ abstract class PayloadComp implements Posc, Rotc, Hitboxc, Unitc{ } void pickup(Building tile){ + tile.pickedUp(); tile.tile.remove(); payloads.add(new BuildPayload(tile)); Fx.unitPickup.at(tile); diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index b6512c2430..3004cb20de 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -195,14 +195,14 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ if(tile != null && tile.team == unit.team && unit.within(tile, tilesize * tile.block.size * 1.2f + tilesize * 5f)){ - //pick up block directly - if(tile.block.buildVisibility != BuildVisibility.hidden && tile.canPickup() && pay.canPickup(tile)){ + + //pick up block's payload + Payload current = tile.getPayload(); + if(current != null && pay.canPickupPayload(current)){ + Call.pickedBuildPayload(unit, tile, false); + //pick up whole building directly + }else if(tile.block.buildVisibility != BuildVisibility.hidden && tile.canPickup() && pay.canPickup(tile)){ Call.pickedBuildPayload(unit, tile, true); - }else{ //pick up block payload - Payload current = tile.getPayload(); - if(current != null && pay.canPickupPayload(current)){ - Call.pickedBuildPayload(unit, tile, false); - } } } } @@ -450,7 +450,7 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ Unit unit = player.unit(); if(!(unit instanceof Payloadc pay)) return; - Unit target = Units.closest(player.team(), pay.x(), pay.y(), unit.type.hitSize * 2.5f, u -> u.isAI() && u.isGrounded() && pay.canPickup(u) && u.within(unit, u.hitSize + unit.hitSize * 1.2f)); + Unit target = Units.closest(player.team(), pay.x(), pay.y(), unit.type.hitSize * 2f, u -> u.isAI() && u.isGrounded() && pay.canPickup(u) && u.within(unit, u.hitSize + unit.hitSize)); if(target != null){ Call.requestUnitPayload(player, target); }else{ diff --git a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java index 2852d00a13..2851d4c27f 100644 --- a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java +++ b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java @@ -55,6 +55,7 @@ public class PayloadAcceptor extends Block{ public @Nullable T payload; public Vec2 payVector = new Vec2(); public float payRotation; + public boolean carried; @Override public boolean acceptPayload(Building source, Payload payload){ @@ -75,6 +76,16 @@ public class PayloadAcceptor extends Block{ return payload; } + @Override + public void pickedUp(){ + carried = true; + } + + @Override + public void drawTeamTop(){ + carried = false; + } + @Override public Payload takePayload(){ T t = payload; @@ -85,7 +96,7 @@ public class PayloadAcceptor extends Block{ @Override public void onRemoved(){ super.onRemoved(); - if(payload != null) payload.dump(); + if(payload != null && !carried) payload.dump(); } public boolean blends(int direction){