diff --git a/core/src/mindustry/ai/BaseAI.java b/core/src/mindustry/ai/BaseAI.java index 6ca2a5a751..26c8b7d1f9 100644 --- a/core/src/mindustry/ai/BaseAI.java +++ b/core/src/mindustry/ai/BaseAI.java @@ -52,6 +52,7 @@ public class BaseAI{ } public void update(){ + if(data.team.rules().aiCoreSpawn && timer.get(timerSpawn, 60 * 2.5f) && data.hasCore()){ CoreBlock block = (CoreBlock)data.core().block; int coreUnits = Groups.unit.count(u -> u.team == data.team && u.type == block.unitType); @@ -90,49 +91,51 @@ public class BaseAI{ }else{ var field = pathfinder.getField(state.rules.waveTeam, Pathfinder.costGround, Pathfinder.fieldCore); - int[][] weights = field.weights; - for(int i = 0; i < pathStep; i++){ - int minCost = Integer.MAX_VALUE; - int cx = calcTile.x, cy = calcTile.y; - boolean foundAny = false; - for(Point2 p : Geometry.d4){ - int nx = cx + p.x, ny = cy + p.y; + if(field.weights != null){ + int[][] weights = field.weights; + for(int i = 0; i < pathStep; i++){ + int minCost = Integer.MAX_VALUE; + int cx = calcTile.x, cy = calcTile.y; + boolean foundAny = false; + for(Point2 p : Geometry.d4){ + int nx = cx + p.x, ny = cy + p.y; - Tile other = world.tile(nx, ny); - if(other != null && weights[nx][ny] < minCost && weights[nx][ny] != -1){ - minCost = weights[nx][ny]; - calcTile = other; - foundAny = true; + Tile other = world.tile(nx, ny); + if(other != null && weights[nx][ny] < minCost && weights[nx][ny] != -1){ + minCost = weights[nx][ny]; + calcTile = other; + foundAny = true; + } } + + //didn't find anything, break out of loop, this will trigger a clear later + if(!foundAny){ + calcCount = Integer.MAX_VALUE; + break; + } + + calcPath.add(calcTile.pos()); + for(Point2 p : Geometry.d8){ + calcPath.add(Point2.pack(p.x + calcTile.x, p.y + calcTile.y)); + } + + //found the end. + if(calcTile.build instanceof CoreBuild b && b.team == state.rules.defaultTeam){ + //clean up calculations and flush results + calculating = false; + calcCount = 0; + path.clear(); + path.addAll(calcPath); + calcPath.clear(); + calcTile = null; + totalCalcs ++; + foundPath = true; + + break; + } + + calcCount ++; } - - //didn't find anything, break out of loop, this will trigger a clear later - if(!foundAny){ - calcCount = Integer.MAX_VALUE; - break; - } - - calcPath.add(calcTile.pos()); - for(Point2 p : Geometry.d8){ - calcPath.add(Point2.pack(p.x + calcTile.x, p.y + calcTile.y)); - } - - //found the end. - if(calcTile.build instanceof CoreBuild b && b.team == state.rules.defaultTeam){ - //clean up calculations and flush results - calculating = false; - calcCount = 0; - path.clear(); - path.addAll(calcPath); - calcPath.clear(); - calcTile = null; - totalCalcs ++; - foundPath = true; - - break; - } - - calcCount ++; } } } diff --git a/core/src/mindustry/ui/dialogs/PlanetDialog.java b/core/src/mindustry/ui/dialogs/PlanetDialog.java index 8aa4862da2..e948e8dcdf 100644 --- a/core/src/mindustry/ui/dialogs/PlanetDialog.java +++ b/core/src/mindustry/ui/dialogs/PlanetDialog.java @@ -26,7 +26,6 @@ import mindustry.gen.*; import mindustry.graphics.*; import mindustry.graphics.g3d.*; import mindustry.input.*; -import mindustry.io.legacy.*; import mindustry.maps.*; import mindustry.type.*; import mindustry.ui.*; @@ -165,16 +164,6 @@ public class PlanetDialog extends BaseDialog implements PlanetInterfaceRenderer{ return this; } - //load legacy research - if(Core.settings.has("unlocks") && !Core.settings.has("junction-unlocked")){ - Core.app.post(() -> { - ui.showCustomConfirm("@research", "@research.legacy", "@research.load", "@research.discard", () -> { - LegacyIO.readResearch(); - Core.settings.remove("unlocks"); - }, () -> Core.settings.remove("unlocks")); - }); - } - rebuildButtons(); mode = look; selected = hovered = launchSector = null; diff --git a/core/src/mindustry/world/blocks/units/UnitFactory.java b/core/src/mindustry/world/blocks/units/UnitFactory.java index c614ad9e4c..ab7fa7024b 100644 --- a/core/src/mindustry/world/blocks/units/UnitFactory.java +++ b/core/src/mindustry/world/blocks/units/UnitFactory.java @@ -143,10 +143,15 @@ public class UnitFactory extends UnitBlock{ @Override public Object senseObject(LAccess sensor){ if(sensor == LAccess.config) return currentPlan == -1 ? null : plans.get(currentPlan).unit; - if(sensor == LAccess.progress) return Mathf.clamp(fraction()); return super.senseObject(sensor); } + @Override + public double sense(LAccess sensor){ + if(sensor == LAccess.progress) return Mathf.clamp(fraction()); + return super.sense(sensor); + } + @Override public void buildConfiguration(Table table){ Seq units = Seq.with(plans).map(u -> u.unit).filter(u -> u.unlockedNow() && !u.isBanned());