From 97d09ac77c2346ff40d02da4760afb32679c0d72 Mon Sep 17 00:00:00 2001 From: Sharlotte Date: Thu, 22 Jul 2021 19:08:53 +0900 Subject: [PATCH] display enemy units --- src/UnitInfo/ui/CoresItemsDisplay.java | 34 +++++++++++++++++--------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/src/UnitInfo/ui/CoresItemsDisplay.java b/src/UnitInfo/ui/CoresItemsDisplay.java index 4b83269..4e23cb3 100644 --- a/src/UnitInfo/ui/CoresItemsDisplay.java +++ b/src/UnitInfo/ui/CoresItemsDisplay.java @@ -3,9 +3,12 @@ package UnitInfo.ui; import arc.scene.ui.layout.Table; import arc.struct.ObjectSet; import arc.struct.Seq; +import mindustry.content.UnitTypes; import mindustry.core.UI; import mindustry.game.Team; +import mindustry.gen.Groups; import mindustry.type.Item; +import mindustry.type.UnitType; import mindustry.ui.Styles; import mindustry.world.blocks.storage.CoreBlock; @@ -14,6 +17,7 @@ import static mindustry.Vars.iconSmall; public class CoresItemsDisplay { private final ObjectSet usedItems = new ObjectSet<>(); + private final ObjectSet usedUnits = new ObjectSet<>(); private CoreBlock.CoreBuild core; public Team[] teams; public Seq tables = new Seq<>(); @@ -25,42 +29,48 @@ public class CoresItemsDisplay { public void resetUsed(){ usedItems.clear(); + usedUnits.clear(); tables.each(t->t.background(null)); } - Seq
rebuild(){ + void rebuild(){ tables.clear(); for(Team team : teams) { tables.add(new Table(t -> { t.clear(); - if(usedItems.size > 0){ + if(usedItems.size > 0 || usedUnits.size > 0){ t.background(Styles.black6); - t.margin(4); + t.margin(2); } t.update(() -> { core = team.core(); - if(content.items().contains(item -> core != null && core.items.get(item) > 0 && usedItems.add(item))){ + if(content.items().contains(item -> core != null && core.items.get(item) > 0 && usedItems.add(item)) || content.units().contains(unit -> core != null && Groups.unit.count(u -> u.team == team) > 0 && usedUnits.add(unit))){ rebuild(); } }); int i = 0; - for(Item item : content.items()){ if(usedItems.contains(item)){ - t.image(item.uiIcon).size(iconSmall).padRight(3).tooltip(tt -> tt.background(Styles.black6).margin(4f).add(item.localizedName).style(Styles.outlineLabel)); - t.label(() -> core == null ? "0" : UI.formatAmount(core.items.get(item))).padRight(3).minWidth(52f).left(); - - if(++i % 4 == 0){ - t.row(); - } + t.image(item.uiIcon).size(iconSmall).padRight(3).tooltip(tt -> tt.background(Styles.black6).margin(2f).add(item.localizedName).style(Styles.outlineLabel)); + t.label(() -> core == null ? "0" : UI.formatAmount(core.items.get(item))).padRight(3).minWidth(5 * 8f).left(); + if(++i % 5 == 0) t.row(); + } + } + t.row(); + i = 0; + for(UnitType unit : content.units()){ + if(unit == UnitTypes.block) continue; + if(usedUnits.contains(unit)){ + t.image(unit.uiIcon).size(iconSmall).padRight(3).tooltip(tt -> tt.background(Styles.black6).margin(2f).add(unit.localizedName).style(Styles.outlineLabel)); + t.label(() -> core == null ? "0" : UI.formatAmount(Groups.unit.count(u -> u.team == team && u.type == unit))).padRight(3).minWidth(5 * 8f).left(); + if(++i % 5 == 0) t.row(); } } })); } - return tables; } }