diff --git a/core/src/mindustry/entities/units/Hivemind.java b/core/src/mindustry/entities/units/Hivemind.java index 3fdca472da..dd98b8865a 100644 --- a/core/src/mindustry/entities/units/Hivemind.java +++ b/core/src/mindustry/entities/units/Hivemind.java @@ -4,6 +4,7 @@ import arc.*; import arc.util.*; import arc.struct.*; import mindustry.entities.type.base.*; +import mindustry.world.*; import static mindustry.Vars.*; @@ -11,16 +12,27 @@ public class Hivemind{ private static long lastFrameUpdated = -1; private static Interval timer = new Interval(1); + private static ObjectMap on = new ObjectMap<>(); + public static void update(){ if(Core.graphics.getFrameId() == lastFrameUpdated) return; lastFrameUpdated = Core.graphics.getFrameId(); if(!timer.get(30)) return; + on.clear(); + ObjectSet craters = new ObjectSet<>(); unitGroup.all().each(e -> e instanceof CraterUnit, crater -> craters.add((CraterUnit)crater)); craters.each(crater -> { - crater.purpose = crater.aspires(); + on.put(crater.on(), crater); + }); + + craters.each(crater -> { + if(!on.containsKey(crater.aspires())){ + crater.purpose = crater.aspires(); + on.put(crater.aspires(), crater); + }; }); } }