From 870f06218b898e850e0d113bcb6fcfc83153ee57 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 18 Jul 2020 09:36:43 -0400 Subject: [PATCH] Bugfixes --- core/src/mindustry/content/UnitTypes.java | 6 +----- core/src/mindustry/entities/comp/BuildingComp.java | 4 ++++ core/src/mindustry/entities/comp/PayloadComp.java | 2 +- core/src/mindustry/input/InputHandler.java | 11 +++++++---- .../world/blocks/distribution/PayloadConveyor.java | 5 +++++ .../mindustry/world/blocks/payloads/BlockPayload.java | 5 +++++ core/src/mindustry/world/blocks/payloads/Payload.java | 5 +++++ .../mindustry/world/blocks/payloads/UnitPayload.java | 5 +++++ .../world/blocks/production/PayloadAcceptor.java | 5 +++++ gradle.properties | 2 +- 10 files changed, 39 insertions(+), 11 deletions(-) diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index fce3292833..93ca060b76 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -45,10 +45,7 @@ public class UnitTypes implements ContentList{ public static @EntityDef({Unitc.class, Builderc.class, Minerc.class, Trailc.class}) UnitType alpha, beta, gamma; //water - public static @EntityDef({Unitc.class, WaterMovec.class, Commanderc.class}) UnitType risse, minke; - - //water + payload - public static @EntityDef({Unitc.class, WaterMovec.class, Commanderc.class, Payloadc.class}) UnitType bryde; + public static @EntityDef({Unitc.class, WaterMovec.class, Commanderc.class}) UnitType risse, minke, bryde; //special block unit type public static @EntityDef({Unitc.class, BlockUnitc.class}) UnitType block; @@ -776,7 +773,6 @@ public class UnitTypes implements ContentList{ trailX = 7f; trailY = -9f; trailScl = 1.5f; - payloadCapacity = 4; abilities.add(new HealFieldAbility(22f, 60f * 4, 70f), new ShieldFieldAbility(20f, 40f, 60f * 4, 60f)); diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index df71b5b800..58e81fe2bd 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -539,6 +539,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, return base(); } + public @Nullable Payload getPayload(){ + return null; + } + /** Tries to take the payload. Returns null if no payload is present. */ public @Nullable Payload takePayload(){ return null; diff --git a/core/src/mindustry/entities/comp/PayloadComp.java b/core/src/mindustry/entities/comp/PayloadComp.java index 09e978cedd..52cecc0181 100644 --- a/core/src/mindustry/entities/comp/PayloadComp.java +++ b/core/src/mindustry/entities/comp/PayloadComp.java @@ -12,7 +12,7 @@ import mindustry.world.blocks.payloads.*; /** An entity that holds a payload. */ @Component -abstract class PayloadComp implements Posc, Rotc{ +abstract class PayloadComp implements Posc, Rotc, Hitboxc{ @Import float x, y, rotation; Seq payloads = new Seq<>(); diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index b4dc06bb5e..8cf7b0466f 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -129,10 +129,13 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ if(tile.block().buildVisibility != BuildVisibility.hidden && tile.block().size <= 2){ pay.pickup(tile); }else{ //pick up block payload - Payload taken = tile.takePayload(); - if(taken != null){ - pay.addPayload(taken); - Fx.unitPickup.at(tile); + Payload current = tile.getPayload(); + if(current != null && current.canBeTaken(pay)){ + Payload taken = tile.takePayload(); + if(taken != null){ + pay.addPayload(taken); + Fx.unitPickup.at(tile); + } } } } diff --git a/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java b/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java index bff33e8ba6..cc790e7042 100644 --- a/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java +++ b/core/src/mindustry/world/blocks/distribution/PayloadConveyor.java @@ -88,6 +88,11 @@ public class PayloadConveyor extends Block{ blocked = (next != null && next.solid()) || (this.next != null && (this.next.rotation() + 2)%4 == rotation()); } + @Override + public Payload getPayload(){ + return item; + } + @Override public void updateTile(){ progress = Time.time() % moveTime; diff --git a/core/src/mindustry/world/blocks/payloads/BlockPayload.java b/core/src/mindustry/world/blocks/payloads/BlockPayload.java index b73836e9e5..ddc013b4c2 100644 --- a/core/src/mindustry/world/blocks/payloads/BlockPayload.java +++ b/core/src/mindustry/world/blocks/payloads/BlockPayload.java @@ -33,6 +33,11 @@ public class BlockPayload implements Payload{ tile.setBlock(entity.block(), entity.team(), rotation, () -> entity); } + @Override + public boolean canBeTaken(Payloadc picker){ + return entity.block.size <= 2; + } + @Override public boolean fits(){ return entity.block().size < 3; diff --git a/core/src/mindustry/world/blocks/payloads/Payload.java b/core/src/mindustry/world/blocks/payloads/Payload.java index a63698d09b..3a136474b3 100644 --- a/core/src/mindustry/world/blocks/payloads/Payload.java +++ b/core/src/mindustry/world/blocks/payloads/Payload.java @@ -27,6 +27,11 @@ public interface Payload{ return true; } + /** @return whether the unit can pick up this payload. */ + default boolean canBeTaken(Payloadc picker){ + return true; + } + /** writes the payload for saving. */ void write(Writes write); diff --git a/core/src/mindustry/world/blocks/payloads/UnitPayload.java b/core/src/mindustry/world/blocks/payloads/UnitPayload.java index ff4e1d80ef..ee912480de 100644 --- a/core/src/mindustry/world/blocks/payloads/UnitPayload.java +++ b/core/src/mindustry/world/blocks/payloads/UnitPayload.java @@ -20,6 +20,11 @@ public class UnitPayload implements Payload{ return unit.hitSize <= 16f; } + @Override + public boolean canBeTaken(Payloadc picker){ + return unit.hitSize < picker.hitSize(); + } + @Override public void write(Writes write){ write.b(payloadUnit); diff --git a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java index 9ecbeba6ff..e48985ebe8 100644 --- a/core/src/mindustry/world/blocks/production/PayloadAcceptor.java +++ b/core/src/mindustry/world/blocks/production/PayloadAcceptor.java @@ -65,6 +65,11 @@ public class PayloadAcceptor extends Block{ updatePayload(); } + @Override + public Payload getPayload(){ + return payload; + } + @Override public Payload takePayload(){ T t = payload; diff --git a/gradle.properties b/gradle.properties index 296e21044f..8010d241ae 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=bb0d60276c0471b920a636d3d32ea838e73be8c2 +archash=a49c1c1da93e43d0afe43e565fc3a0800a5137a5