From 5cc314672f736af48b461160de4c274ab43ca019 Mon Sep 17 00:00:00 2001 From: MEEPofFaith <54301439+MEEPofFaith@users.noreply.github.com> Date: Wed, 8 Jun 2022 06:17:30 -0700 Subject: [PATCH] `canWithdraw()` + changes to `displayable()` (#6902) * `shouldDiplay()` + `canWithdraw()` * Better implementation of `displayable()` --- core/src/mindustry/entities/comp/BuildingComp.java | 9 ++++----- core/src/mindustry/ui/Displayable.java | 4 ++++ .../mindustry/ui/fragments/BlockInventoryFragment.java | 2 ++ core/src/mindustry/ui/fragments/PlacementFragment.java | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/core/src/mindustry/entities/comp/BuildingComp.java b/core/src/mindustry/entities/comp/BuildingComp.java index 77b5da267b..450564d214 100644 --- a/core/src/mindustry/entities/comp/BuildingComp.java +++ b/core/src/mindustry/entities/comp/BuildingComp.java @@ -613,6 +613,10 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, Fx.unitDrop.at(unit); } + public boolean canWithdraw(){ + return true; + } + public boolean canUnload(){ return block.unloadable; } @@ -1342,11 +1346,6 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc, public ItemModule flowItems(){ return items; } - - public boolean displayable(){ - return true; - } - @Override public void display(Table table){ //display the block stuff diff --git a/core/src/mindustry/ui/Displayable.java b/core/src/mindustry/ui/Displayable.java index 770e490cab..d856b2beab 100644 --- a/core/src/mindustry/ui/Displayable.java +++ b/core/src/mindustry/ui/Displayable.java @@ -4,5 +4,9 @@ import arc.scene.ui.layout.*; /** An interface for things that can be displayed when hovered over. */ public interface Displayable{ + default boolean displayable(){ + return true; + } + void display(Table table); } diff --git a/core/src/mindustry/ui/fragments/BlockInventoryFragment.java b/core/src/mindustry/ui/fragments/BlockInventoryFragment.java index 2e92791074..84f5bc221c 100644 --- a/core/src/mindustry/ui/fragments/BlockInventoryFragment.java +++ b/core/src/mindustry/ui/fragments/BlockInventoryFragment.java @@ -70,6 +70,8 @@ public class BlockInventoryFragment{ } private void takeItem(int requested){ + if(!build.canWithdraw()) return; + //take everything int amount = Math.min(requested, player.unit().maxAccepted(lastItem)); diff --git a/core/src/mindustry/ui/fragments/PlacementFragment.java b/core/src/mindustry/ui/fragments/PlacementFragment.java index 121137b274..904fbc0d61 100644 --- a/core/src/mindustry/ui/fragments/PlacementFragment.java +++ b/core/src/mindustry/ui/fragments/PlacementFragment.java @@ -577,7 +577,7 @@ public class PlacementFragment{ if(Core.scene.hasMouse() || topTable.hit(v.x, v.y, false) != null) return null; //check for a unit - Unit unit = Units.closestOverlap(player.team(), Core.input.mouseWorldX(), Core.input.mouseWorldY(), 5f, u -> !u.isLocal()); + Unit unit = Units.closestOverlap(player.team(), Core.input.mouseWorldX(), Core.input.mouseWorldY(), 5f, u -> !u.isLocal() && u.displayable()); //if cursor has a unit, display it if(unit != null) return unit;