From ab0a47a837628f8bb70802fd7ef6b581005e5113 Mon Sep 17 00:00:00 2001 From: 1ue999 <106450442+1ue999@users.noreply.github.com> Date: Mon, 21 Apr 2025 15:36:24 +0200 Subject: [PATCH] Conveyor progress (#10620) * sensor progressssssssssssssssssssssssss * for duct aswell * better setprop for conveyors * slight performance improvement i assume * * import * check if len is 0 --- .../world/blocks/distribution/Conveyor.java | 24 +++++++++++++++++++ .../world/blocks/distribution/Duct.java | 7 ++++++ 2 files changed, 31 insertions(+) diff --git a/core/src/mindustry/world/blocks/distribution/Conveyor.java b/core/src/mindustry/world/blocks/distribution/Conveyor.java index 49f8c307a9..22c77ed2c7 100644 --- a/core/src/mindustry/world/blocks/distribution/Conveyor.java +++ b/core/src/mindustry/world/blocks/distribution/Conveyor.java @@ -9,6 +9,7 @@ import arc.util.*; import arc.util.io.*; import mindustry.annotations.Annotations.*; import mindustry.content.*; +import mindustry.ctype.*; import mindustry.entities.*; import mindustry.entities.units.*; import mindustry.gen.*; @@ -431,12 +432,35 @@ public class Conveyor extends Block implements Autotiler{ updateTile(); } + @Override + public double sense(LAccess sensor){ + if(sensor == LAccess.progress){ + if(len == 0) return 0; + return ys[len - 1]; + } + return super.sense(sensor); + } + @Override public Object senseObject(LAccess sensor){ if(sensor == LAccess.firstItem && len > 0) return ids[len - 1]; return super.senseObject(sensor); } + @Override + public void setProp(UnlockableContent content, double value){ + if(content instanceof Item item && items != null){ + int amount = Math.min((int)value, capacity); + if(items.get(item) != amount){ + if(items.get(item) < amount){ + handleStack(item, amount - items.get(item), null); + }else if(amount >= 0){ + removeStack(item, items.get(item) - amount); + } + } + }else super.setProp(content, value); + } + public final void add(int o){ for(int i = Math.max(o + 1, len); i > o; i--){ ids[i] = ids[i - 1]; diff --git a/core/src/mindustry/world/blocks/distribution/Duct.java b/core/src/mindustry/world/blocks/distribution/Duct.java index e6c0998972..6fcade7552 100644 --- a/core/src/mindustry/world/blocks/distribution/Duct.java +++ b/core/src/mindustry/world/blocks/distribution/Duct.java @@ -16,6 +16,7 @@ import mindustry.entities.units.*; import mindustry.gen.*; import mindustry.graphics.*; import mindustry.input.*; +import mindustry.logic.*; import mindustry.type.*; import mindustry.world.*; import mindustry.world.blocks.*; @@ -263,5 +264,11 @@ public class Duct extends Block implements Autotiler{ } current = items.first(); } + + @Override + public double sense(LAccess sensor){ + if(sensor == LAccess.progress) return progress; + return super.sense(sensor); + } } }