From 98e2af269f0864e3611ec5f7746e84000d317833 Mon Sep 17 00:00:00 2001 From: sharlottes Date: Sat, 23 Apr 2022 15:05:45 +0900 Subject: [PATCH] better ui --- src/unitinfo/core/SettingS.java | 3 -- src/unitinfo/ui/windows/MapEditorDisplay.java | 20 +++---- src/unitinfo/ui/windows/UnitDisplay.java | 2 +- src/unitinfo/ui/windows/WaveDisplay.java | 53 ++++++++++++++++++- 4 files changed, 59 insertions(+), 19 deletions(-) diff --git a/src/unitinfo/core/SettingS.java b/src/unitinfo/core/SettingS.java index 24bc994..785b3cf 100644 --- a/src/unitinfo/core/SettingS.java +++ b/src/unitinfo/core/SettingS.java @@ -106,9 +106,6 @@ public class SettingS { Seq> settingSeq = new Seq<>(); Seq tapSeq = new Seq<>(); addGraphicSlideSetting("barstyle", 0, 0, 5, 1, s -> s == 0 ? bundle.get("default-bar") : s + bundle.get("th-bar"), tapSeq); - addGraphicTypeSetting("wavemax", 0, 200,100, true, () -> true, s -> s + "waves", tapSeq); - addGraphicCheckSetting("pastwave", false, tapSeq); - addGraphicCheckSetting("emptywave", true, tapSeq); addGraphicCheckSetting("schem", !mobile, tapSeq); //TODO: remove all drawing settings diff --git a/src/unitinfo/ui/windows/MapEditorDisplay.java b/src/unitinfo/ui/windows/MapEditorDisplay.java index bccd286..7628122 100644 --- a/src/unitinfo/ui/windows/MapEditorDisplay.java +++ b/src/unitinfo/ui/windows/MapEditorDisplay.java @@ -1,14 +1,8 @@ package unitinfo.ui.windows; import arc.Events; -import arc.graphics.g2d.Draw; -import arc.graphics.g2d.Lines; -import arc.math.geom.Bresenham2; +import arc.graphics.g2d.*; import arc.math.geom.Geometry; -import arc.math.geom.Point2; -import arc.scene.Element; -import arc.scene.event.InputEvent; -import arc.scene.event.InputListener; import mindustry.editor.MapEditor; import mindustry.game.EventType; import mindustry.graphics.Layer; @@ -176,7 +170,7 @@ public class MapEditorDisplay extends Window implements Updatable { tools.top().left(); tools.table(title -> title.left().background(Tex.underline2).add("Tools [accent]"+(tool==null?"":tool.name())+"[]")).growX().row(); tools.table(bt->{ - Cons addTool = tool -> { + Cons addTool = tool -> { ImageButton button = new ImageButton(ui.getIcon(tool.name()), Styles.clearTogglei); button.clicked(() -> { button.toggle(); @@ -195,11 +189,11 @@ public class MapEditorDisplay extends Window implements Updatable { bt.stack(button, mode); }; - addTool.get(unitinfo.ui.EditorTool.line); - addTool.get(unitinfo.ui.EditorTool.pencil); - addTool.get(unitinfo.ui.EditorTool.eraser); - addTool.get(unitinfo.ui.EditorTool.fill); - addTool.get(unitinfo.ui.EditorTool.spray); + addTool.get(EditorTool.line); + addTool.get(EditorTool.pencil); + addTool.get(EditorTool.eraser); + addTool.get(EditorTool.fill); + addTool.get(EditorTool.spray); ImageButton grid = new ImageButton(Icon.grid, Styles.clearTogglei); grid.clicked(() -> { diff --git a/src/unitinfo/ui/windows/UnitDisplay.java b/src/unitinfo/ui/windows/UnitDisplay.java index f119c81..d34519f 100644 --- a/src/unitinfo/ui/windows/UnitDisplay.java +++ b/src/unitinfo/ui/windows/UnitDisplay.java @@ -86,7 +86,7 @@ class UnitDisplay extends Window { to.label(() -> target == null ? "(" + 0 + ", " + 0 + ")" : "(" + Strings.fixed(target.x() / tilesize, 2) + ", " + Strings.fixed(target.y() / tilesize, 2) + ")").row(); to.label(() -> target instanceof Unit u ? "[accent]"+ Strings.fixed(u.armor, 0) + "[] Armor" : ""); })).margin(12f).row(); - table.image().height(4f).color(player.team().color).growX().row(); + table.image().height(4f).color((target==null?player.unit():target).team().color).growX().row(); table.add(new OverScrollPane(new Table(bars -> { bars.top(); for (int i = 0; i < 6; i++) { diff --git a/src/unitinfo/ui/windows/WaveDisplay.java b/src/unitinfo/ui/windows/WaveDisplay.java index 303fcda..bf5e847 100644 --- a/src/unitinfo/ui/windows/WaveDisplay.java +++ b/src/unitinfo/ui/windows/WaveDisplay.java @@ -1,6 +1,8 @@ package unitinfo.ui.windows; +import mindustry.Vars; import mindustry.game.Team; +import mindustry.type.UnitType; import unitinfo.ui.OverScrollPane; import arc.Events; import arc.graphics.Color; @@ -38,9 +40,54 @@ public class WaveDisplay extends Window implements Updatable { window = table; table.top().background(Styles.black8); - ScrollPane pane = new OverScrollPane(rebuild(), Styles.nonePane, scrollPos).disableScroll(true, false); - table.add(pane).grow().name("wave-pane"); + table.add(pane).grow().name("wave-pane").row(); + table.table(total -> { + total.left(); + + total.field("~"+state.wave+" + "+settings.getInt("wavemax"), f->{ + String str = f.replaceAll("\\D", ""); + if(str.isEmpty()) settings.put("wavemax", 0); + else settings.put("wavemax", Integer.parseInt(str)); + }); + total.table().update(units->{ + units.clear(); + units.center(); + + if(Groups.unit.count(u->u.team==state.rules.waveTeam) <= 0) { + units.add("[lightgray][]"); + return; + } + + int row = 0; + int max = Math.max(1, Math.round(window.getWidth()/2/8/2)); + for (UnitType unit : Vars.content.units()) { + int amount = Groups.unit.count(u->u.type==unit&&u.team==state.rules.waveTeam); + if(amount<=0) continue; + units.stack( + new Table(ttt -> { + ttt.center(); + ttt.image(unit.uiIcon).size(iconMed); + ttt.pack(); + }), + + new Table(ttt -> { + ttt.bottom().left(); + ttt.add(amount + "").padTop(2f).fontScale(0.9f); + ttt.pack(); + }) + ).pad(2f); + if(row++ % max == max-1){ + units.row(); + } + } + }).growX(); + }).growX().row(); + table.image().height(4f).color(Pal.gray).growX().row(); + table.table(option->{ + option.check("Show empty wave", settings.getBool("emptywave"), b->settings.put("emptywave", b)).margin(4f); + option.check("Show previous wave", settings.getBool("pastwave"), b->settings.put("pastwave", b)).margin(4f); + }); Events.on(EventType.WorldLoadEvent.class, e -> { pane.clearChildren(); pane.setWidget(rebuild()); @@ -90,6 +137,8 @@ public class WaveDisplay extends Window implements Updatable { for (int i = settings.getBool("pastwave") ? 1 : state.wave; i <= Math.min(state.wave + settings.getInt("wavemax"), (state.isCampaign() && state.rules.winWave > 0 ? state.rules.winWave : Integer.MAX_VALUE)); i++) { final int index = i; + if (state.rules.spawns.find(g -> g.getSpawned(index-1) > 0) == null && !settings.getBool("emptywave")) continue; + body.table(waveRow -> { waveRow.left();