From 317f40eecd967c0dfd66ff4fbe05c7aea0b1e4ce Mon Sep 17 00:00:00 2001 From: Patrick 'Quezler' Mounier Date: Thu, 2 Jan 2020 08:51:49 +0100 Subject: [PATCH] Use tree score instead of looping each crater twice --- .../mindustry/entities/units/Hivemind.java | 32 ++++++++++++------- .../distribution/PlastaniumConveyor.java | 3 +- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/core/src/mindustry/entities/units/Hivemind.java b/core/src/mindustry/entities/units/Hivemind.java index 3f44a4b502..f96186e996 100644 --- a/core/src/mindustry/entities/units/Hivemind.java +++ b/core/src/mindustry/entities/units/Hivemind.java @@ -3,8 +3,10 @@ package mindustry.entities.units; import arc.*; import arc.util.*; import arc.struct.*; -import mindustry.entities.type.base.*; import mindustry.world.*; +import mindustry.entities.type.base.*; +import mindustry.world.blocks.distribution.*; +import mindustry.world.blocks.distribution.PlastaniumConveyor.*; import static mindustry.Vars.*; @@ -21,23 +23,29 @@ public class Hivemind{ on.clear(); - ObjectSet craters = new ObjectSet<>(); + Array craters = new Array<>(); unitGroup.all().each(e -> e instanceof CraterUnit, crater -> craters.add((CraterUnit)crater)); + craters.sort(Structs.comparingInt(crater -> sortPriority(crater.on()))); + craters.each(crater -> { on.put(crater.on(), crater); }); - craters.each(i -> { - craters.each(crater -> { - if(crater == null || crater.aspires() == null) return; - if(!on.containsKey(crater.aspires())){ - crater.purpose = crater.aspires(); - on.put(crater.aspires(), crater); - on.remove(crater.on()); - craters.remove(crater); - }; - }); + craters.each(crater -> { + if(crater == null || crater.aspires() == null) return; + if(!on.containsKey(crater.aspires())){ + crater.purpose = crater.aspires(); + on.put(crater.aspires(), crater); + on.remove(crater.on()); + } }); } + + private static int sortPriority(Tile tile){ + if(tile == null) return 0; + if(!(tile.block() instanceof PlastaniumConveyor)) return 0; + PlastaniumConveyorEntity entity = tile.ent(); + return entity.tree; + } } diff --git a/core/src/mindustry/world/blocks/distribution/PlastaniumConveyor.java b/core/src/mindustry/world/blocks/distribution/PlastaniumConveyor.java index ad6fc0fed6..b2756e6b44 100644 --- a/core/src/mindustry/world/blocks/distribution/PlastaniumConveyor.java +++ b/core/src/mindustry/world/blocks/distribution/PlastaniumConveyor.java @@ -61,6 +61,7 @@ public class PlastaniumConveyor extends ArmoredConveyor{ @Override public void drawLayer(Tile tile){ + if(true) return; // debug mode PlastaniumConveyorEntity entity = tile.ent(); Fonts.outline.draw(entity.tree + "", @@ -91,7 +92,7 @@ public class PlastaniumConveyor extends ArmoredConveyor{ } } - class PlastaniumConveyorEntity extends ConveyorEntity{ + public class PlastaniumConveyorEntity extends ConveyorEntity{ public int reload = 0; public CraterUnit crater = null; public int tree = 0;