From 0d5869aad980c19515eafc4f04a571c3d6377090 Mon Sep 17 00:00:00 2001 From: Anuken Date: Wed, 9 Oct 2024 00:25:58 -0400 Subject: [PATCH] Retain build plans when switching units --- core/src/mindustry/input/InputHandler.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index d3a2fc8140..b5bacbe51e 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -98,7 +98,8 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ public BuildPlan bplan = new BuildPlan(); public Seq linePlans = new Seq<>(); public Seq selectPlans = new Seq<>(BuildPlan.class); - public @Nullable Queue lastPlans; + public Queue lastPlans = new Queue<>(); + public @Nullable Unit lastUnit; //for RTS controls public Seq selectedUnits = new Seq<>(); @@ -812,14 +813,19 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ } if(player.isBuilder()){ - if(lastPlans != null && player.unit().plans != lastPlans && player.unit().plans.size == 0){ + if(player.unit() != lastUnit && player.unit().plans.size <= 1){ for(var plan : lastPlans){ player.unit().plans.addLast(plan); } } - lastPlans = player.unit().plans; + lastPlans.clear(); + for(var plan : player.unit().plans){ + lastPlans.addLast(plan); + } } + lastUnit = player.unit(); + playerPlanTree.clear(); if(!player.dead()){ player.unit().plans.each(playerPlanTree::insert);