From 84686a260d002d5134a62cf211a3936d5aa9f5d4 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 10 Apr 2022 12:14:22 -0400 Subject: [PATCH] Fetch instruction --- ...planetary-accelerator-team_TODO_UNUSED.png | Bin 3767 -> 0 bytes .../campaign/interplanetary-accelerator.png | Bin 11273 -> 5407 bytes core/src/mindustry/content/UnitTypes.java | 3 +- core/src/mindustry/game/Teams.java | 7 +++ core/src/mindustry/logic/FetchType.java | 12 ++++ core/src/mindustry/logic/LExecutor.java | 39 ++++++++++++- core/src/mindustry/logic/LStatements.java | 54 ++++++++++++++++++ tools/build.gradle | 2 +- 8 files changed, 112 insertions(+), 5 deletions(-) delete mode 100644 core/assets-raw/sprites/blocks/campaign/interplanetary-accelerator-team_TODO_UNUSED.png create mode 100644 core/src/mindustry/logic/FetchType.java diff --git a/core/assets-raw/sprites/blocks/campaign/interplanetary-accelerator-team_TODO_UNUSED.png b/core/assets-raw/sprites/blocks/campaign/interplanetary-accelerator-team_TODO_UNUSED.png deleted file mode 100644 index e141d97940c02871eca8eeb946edc0aeded96d8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3767 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 J{=X-_|37Yy70v(v diff --git a/core/assets-raw/sprites/blocks/campaign/interplanetary-accelerator.png b/core/assets-raw/sprites/blocks/campaign/interplanetary-accelerator.png index 41019a2c7d38f555e233534f051d1b65a3344027..9993af8ff7e00276b63fccabcc18a214d210f791 100644 GIT binary patch literal 5407 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 literal 11273 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 diff --git a/core/src/mindustry/content/UnitTypes.java b/core/src/mindustry/content/UnitTypes.java index 79ea0b9daa..faec72cada 100644 --- a/core/src/mindustry/content/UnitTypes.java +++ b/core/src/mindustry/content/UnitTypes.java @@ -976,7 +976,8 @@ public class UnitTypes{ flying = true; health = 70; engineOffset = 5.75f; - targetAir = false; + //TODO balance + //targetAir = false; targetFlags = new BlockFlag[]{BlockFlag.generator, null}; hitSize = 7; itemCapacity = 10; diff --git a/core/src/mindustry/game/Teams.java b/core/src/mindustry/game/Teams.java index 1b3cfa61c9..50015e612b 100644 --- a/core/src/mindustry/game/Teams.java +++ b/core/src/mindustry/game/Teams.java @@ -150,6 +150,7 @@ public class Teams{ data.presentFlag = false; data.unitCount = 0; data.units.clear(); + data.players.clear(); if(data.tree != null){ data.tree.clear(); } @@ -195,6 +196,10 @@ public class Teams{ count(unit); } + for(var player : Groups.player){ + player.team().data().players.add(player); + } + //update presence of each team. for(Team team : Team.all){ TeamData data = team.data(); @@ -251,6 +256,8 @@ public class Teams{ public @Nullable QuadTree tree; /** Units of this team. Updated each frame. */ public Seq units = new Seq<>(); + /** Same as units, but players. */ + public Seq players = new Seq<>(); /** Units of this team by type. Updated each frame. */ public @Nullable Seq[] unitsByType; diff --git a/core/src/mindustry/logic/FetchType.java b/core/src/mindustry/logic/FetchType.java new file mode 100644 index 0000000000..6936fe3960 --- /dev/null +++ b/core/src/mindustry/logic/FetchType.java @@ -0,0 +1,12 @@ +package mindustry.logic; + +public enum FetchType{ + unit, + unitCount, + player, + playerCount, + core, + coreCount; + + public static final FetchType[] all = values(); +} diff --git a/core/src/mindustry/logic/LExecutor.java b/core/src/mindustry/logic/LExecutor.java index d52cfc5e65..a934971aa7 100644 --- a/core/src/mindustry/logic/LExecutor.java +++ b/core/src/mindustry/logic/LExecutor.java @@ -1164,6 +1164,37 @@ public class LExecutor{ } } + public static class FetchI implements LInstruction{ + public FetchType type = FetchType.unit; + public int result, team, index; + + public FetchI(FetchType type, int result, int team, int index){ + this.type = type; + this.result = result; + this.team = team; + this.index = index; + } + + public FetchI(){ + } + + @Override + public void run(LExecutor exec){ + int i = exec.numi(index); + if(!(exec.obj(team) instanceof Team t)) return; + TeamData data = t.data(); + + switch(type){ + case unit -> exec.setobj(result, i < 0 || i >= data.units.size ? null : data.units.get(i)); + case player -> exec.setobj(result, i < 0 || i >= data.players.size || data.players.get(i).unit().isNull() ? null : data.players.get(i).unit()); + case core -> exec.setobj(result, i < 0 || i >= data.cores.size ? null : data.cores.get(i)); + case unitCount -> exec.setnum(result, data.units.size); + case coreCount -> exec.setnum(result, data.cores.size); + case playerCount -> exec.setnum(result, data.players.size); + } + } + } + //endregion //region privileged / world instructions @@ -1225,14 +1256,16 @@ public class LExecutor{ //TODO this can be quite laggy... switch(layer){ case ore -> { - if(b instanceof OverlayFloor o) tile.setOverlayNet(o); + if(b instanceof OverlayFloor o && tile.overlay() != o) tile.setOverlayNet(o); } case floor -> { - if(b instanceof Floor f) tile.setFloorNet(f); + if(b instanceof Floor f && tile.floor() != f) tile.setFloorNet(f); } case block -> { Team t = exec.obj(team) instanceof Team steam ? steam : Team.derelict; - tile.setNet(b, t, Mathf.clamp(exec.numi(rotation), 0, 3)); + if(tile.block() != b || tile.team() != t){ + tile.setNet(b, t, Mathf.clamp(exec.numi(rotation), 0, 3)); + } } //building case not allowed } diff --git a/core/src/mindustry/logic/LStatements.java b/core/src/mindustry/logic/LStatements.java index 40809d7cdb..7fff92da7d 100644 --- a/core/src/mindustry/logic/LStatements.java +++ b/core/src/mindustry/logic/LStatements.java @@ -1460,4 +1460,58 @@ public class LStatements{ return new SetRateI(builder.var(amount)); } } + + @RegisterStatement("fetch") + public static class FetchStatement extends LStatement{ + public FetchType type = FetchType.unit; + public String result = "result", team = "@sharded", index = "0"; + + @Override + public void build(Table table){ + rebuild(table); + } + + void rebuild(Table table){ + table.clearChildren(); + + fields(table, result, r -> result = r); + + table.add(" = "); + + table.button(b -> { + b.label(() -> type.name()).growX().wrap().labelAlign(Align.center); + b.clicked(() -> showSelect(b, FetchType.all, type, o -> { + type = o; + rebuild(table); + }, 2, c -> c.width(150f))); + }, Styles.logict, () -> {}).size(160f, 40f).margin(5f).pad(4f).color(table.color); + + row(table); + + fields(table, "team", team, s -> team = s); + + if(type != FetchType.coreCount && type != FetchType.playerCount && type != FetchType.unitCount){ + table.add(" # "); + + row(table); + + fields(table, index, i -> index = i); + } + } + + @Override + public boolean privileged(){ + return true; + } + + @Override + public Color color(){ + return Pal.logicWorld; + } + + @Override + public LInstruction build(LAssembler builder){ + return new FetchI(type, builder.var(result), builder.var(team), builder.var(index)); + } + } } diff --git a/tools/build.gradle b/tools/build.gradle index f861ad27b6..244edc4133 100644 --- a/tools/build.gradle +++ b/tools/build.gradle @@ -164,7 +164,7 @@ task pack(dependsOn: [classes, configurations.runtimeClasspath]){ //antialias everything except UI elements fileTree(dir: new File(rootDir, 'core/assets-raw/sprites_out/').absolutePath, include: "**/*.png").visit{ file -> - if(file.isDirectory() || (file.toString().replace("\\", "/").contains("/ui/") && file.toString().startsWith("icon-")) || file.toString().contains(".9.png") || file.toString().contains("alphaaaa")) return + if(file.isDirectory() || (file.toString().replace("\\", "/").contains("/ui/") && file.toString().startsWith("icon-")) || file.toString().contains(".9.png") || file.toString().contains("aaaa")) return executor.submit{ antialias(file.file, doAntialias, useFastAA)