diff --git a/core/src/mindustry/ai/ControlPathfinder.java b/core/src/mindustry/ai/ControlPathfinder.java index 4e6c8485ba..25d4a55395 100644 --- a/core/src/mindustry/ai/ControlPathfinder.java +++ b/core/src/mindustry/ai/ControlPathfinder.java @@ -18,7 +18,7 @@ import static mindustry.ai.Pathfinder.*; public class ControlPathfinder{ //TODO this FPS-based update system could be flawed. - private static final long maxUpdate = Time.millisToNanos(20); + private static final long maxUpdate = Time.millisToNanos(30); private static final int updateFPS = 60; private static final int updateInterval = 1000 / updateFPS; private static final int wallImpassableCap = 100_000; @@ -272,6 +272,7 @@ public class ControlPathfinder{ threads = new PathfindThread[Mathf.clamp(Runtime.getRuntime().availableProcessors() - 2, 1, 6)]; for(int i = 0; i < threads.length; i ++){ threads[i] = new PathfindThread("ControlPathfindThread-" + i); + threads[i].setPriority(Thread.MIN_PRIORITY); threads[i].setDaemon(true); threads[i].start(); } diff --git a/core/src/mindustry/ai/Pathfinder.java b/core/src/mindustry/ai/Pathfinder.java index f42197fb8a..09bdc4233c 100644 --- a/core/src/mindustry/ai/Pathfinder.java +++ b/core/src/mindustry/ai/Pathfinder.java @@ -19,7 +19,7 @@ import mindustry.world.meta.*; import static mindustry.Vars.*; public class Pathfinder implements Runnable{ - private static final long maxUpdate = Time.millisToNanos(5); + private static final long maxUpdate = Time.millisToNanos(7); private static final int updateFPS = 60; private static final int updateInterval = 1000 / updateFPS; @@ -197,7 +197,10 @@ public class Pathfinder implements Runnable{ stop(); if(net.client()) return; - thread = Threads.daemon("Pathfinder", this); + thread = new Thread(this, "Pathfinder"); + thread.setPriority(Thread.MIN_PRIORITY); + thread.setDaemon(true); + thread.start(); } /** Stops the pathfinding thread. */ diff --git a/core/src/mindustry/game/FogControl.java b/core/src/mindustry/game/FogControl.java index d6f6ae2728..8acfa63702 100644 --- a/core/src/mindustry/game/FogControl.java +++ b/core/src/mindustry/game/FogControl.java @@ -194,12 +194,14 @@ public final class FogControl implements CustomChunk{ //not run clientside, the CPU side isn't needed here. if(staticFogThread == null && !net.client()){ staticFogThread = new StaticFogThread(); + staticFogThread.setPriority(Thread.NORM_PRIORITY - 1); staticFogThread.setDaemon(true); staticFogThread.start(); } if(dynamicFogThread == null){ dynamicFogThread = new DynamicFogThread(); + dynamicFogThread.setPriority(Thread.NORM_PRIORITY - 1); dynamicFogThread.setDaemon(true); dynamicFogThread.start(); } diff --git a/core/src/mindustry/graphics/MultiPacker.java b/core/src/mindustry/graphics/MultiPacker.java index 89bfb772ff..a980389a20 100644 --- a/core/src/mindustry/graphics/MultiPacker.java +++ b/core/src/mindustry/graphics/MultiPacker.java @@ -91,7 +91,6 @@ public class MultiPacker implements Disposable{ } } - //There are several pages for sprites. //main page (sprites.png) - all sprites for units, weapons, placeable blocks, effects, bullets, etc //environment page (sprites2.png) - all sprites for things in the environmental cache layer diff --git a/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java b/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java index 99c036392f..b759bffbfe 100644 --- a/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java +++ b/core/src/mindustry/ui/dialogs/LaunchLoadoutDialog.java @@ -196,6 +196,10 @@ public class LaunchLoadoutDialog extends BaseDialog{ cont.label(() -> Core.bundle.format("launch.capacity", lastCapacity)).row(); cont.row(); + }else if(destination.preset != null && destination.preset.description != null){ + cont.pane(p -> { + p.add(destination.preset.description).grow().wrap().labelAlign(Align.center); + }).pad(10f).grow().row(); } cont.pane(items);