From 02573f677c91b38a6a1b04d55002ecca55441f13 Mon Sep 17 00:00:00 2001 From: sharlotte Date: Wed, 25 Aug 2021 15:35:00 +0900 Subject: [PATCH] update icon lol --- assets/sprites/ui/{ => bars}/1dotbar-top.png | Bin assets/sprites/ui/{ => bars}/1dotbar.png | Bin assets/sprites/ui/{ => bars}/barS-top.png | Bin assets/sprites/ui/{ => bars}/barS.png | Bin assets/sprites/ui/{ => bars}/barSS-top.png | Bin assets/sprites/ui/{ => bars}/barSS.png | Bin assets/sprites/ui/{ => bars}/barSSS-top.png | Bin assets/sprites/ui/{ => bars}/barSSS.png | Bin assets/sprites/ui/{ => bars}/barSSSS-top.png | Bin assets/sprites/ui/{ => bars}/barSSSS.png | Bin assets/sprites/ui/{ => bars}/barSSSSS-top.png | Bin assets/sprites/ui/{ => bars}/barSSSSS.png | Bin .../sprites/ui/{ => bars}/barSSSSSS-top.png | Bin assets/sprites/ui/{ => bars}/barSSSSSS.png | Bin assets/sprites/ui/icons/ammo.png | Bin 0 -> 304 bytes assets/sprites/ui/icons/health.png | Bin 0 -> 210 bytes assets/sprites/ui/icons/item.png | Bin 0 -> 295 bytes assets/sprites/ui/icons/liquid.png | Bin 0 -> 308 bytes assets/sprites/ui/icons/power.png | Bin 0 -> 265 bytes assets/sprites/ui/icons/reload.png | Bin 0 -> 330 bytes assets/sprites/ui/icons/shield.png | Bin 0 -> 312 bytes src/UnitInfo/SVars.java | 6 +- src/UnitInfo/core/BarInfo.java | 30 +- src/UnitInfo/core/HudUi.java | 278 ++++++++---------- src/UnitInfo/core/Main.java | 6 +- src/UnitInfo/core/SettingS.java | 2 +- src/UnitInfo/ui/CoresItemsDisplay.java | 4 - src/UnitInfo/ui/SIcons.java | 14 + 28 files changed, 164 insertions(+), 176 deletions(-) rename assets/sprites/ui/{ => bars}/1dotbar-top.png (100%) rename assets/sprites/ui/{ => bars}/1dotbar.png (100%) rename assets/sprites/ui/{ => bars}/barS-top.png (100%) rename assets/sprites/ui/{ => bars}/barS.png (100%) rename assets/sprites/ui/{ => bars}/barSS-top.png (100%) rename assets/sprites/ui/{ => bars}/barSS.png (100%) rename assets/sprites/ui/{ => bars}/barSSS-top.png (100%) rename assets/sprites/ui/{ => bars}/barSSS.png (100%) rename assets/sprites/ui/{ => bars}/barSSSS-top.png (100%) rename assets/sprites/ui/{ => bars}/barSSSS.png (100%) rename assets/sprites/ui/{ => bars}/barSSSSS-top.png (100%) rename assets/sprites/ui/{ => bars}/barSSSSS.png (100%) rename assets/sprites/ui/{ => bars}/barSSSSSS-top.png (100%) rename assets/sprites/ui/{ => bars}/barSSSSSS.png (100%) create mode 100644 assets/sprites/ui/icons/ammo.png create mode 100644 assets/sprites/ui/icons/health.png create mode 100644 assets/sprites/ui/icons/item.png create mode 100644 assets/sprites/ui/icons/liquid.png create mode 100644 assets/sprites/ui/icons/power.png create mode 100644 assets/sprites/ui/icons/reload.png create mode 100644 assets/sprites/ui/icons/shield.png create mode 100644 src/UnitInfo/ui/SIcons.java diff --git a/assets/sprites/ui/1dotbar-top.png b/assets/sprites/ui/bars/1dotbar-top.png similarity index 100% rename from assets/sprites/ui/1dotbar-top.png rename to assets/sprites/ui/bars/1dotbar-top.png diff --git a/assets/sprites/ui/1dotbar.png b/assets/sprites/ui/bars/1dotbar.png similarity index 100% rename from assets/sprites/ui/1dotbar.png rename to assets/sprites/ui/bars/1dotbar.png diff --git a/assets/sprites/ui/barS-top.png b/assets/sprites/ui/bars/barS-top.png similarity index 100% rename from assets/sprites/ui/barS-top.png rename to assets/sprites/ui/bars/barS-top.png diff --git a/assets/sprites/ui/barS.png b/assets/sprites/ui/bars/barS.png similarity index 100% rename from assets/sprites/ui/barS.png rename to assets/sprites/ui/bars/barS.png diff --git a/assets/sprites/ui/barSS-top.png b/assets/sprites/ui/bars/barSS-top.png similarity index 100% rename from assets/sprites/ui/barSS-top.png rename to assets/sprites/ui/bars/barSS-top.png diff --git a/assets/sprites/ui/barSS.png b/assets/sprites/ui/bars/barSS.png similarity index 100% rename from assets/sprites/ui/barSS.png rename to assets/sprites/ui/bars/barSS.png diff --git a/assets/sprites/ui/barSSS-top.png b/assets/sprites/ui/bars/barSSS-top.png similarity index 100% rename from assets/sprites/ui/barSSS-top.png rename to assets/sprites/ui/bars/barSSS-top.png diff --git a/assets/sprites/ui/barSSS.png b/assets/sprites/ui/bars/barSSS.png similarity index 100% rename from assets/sprites/ui/barSSS.png rename to assets/sprites/ui/bars/barSSS.png diff --git a/assets/sprites/ui/barSSSS-top.png b/assets/sprites/ui/bars/barSSSS-top.png similarity index 100% rename from assets/sprites/ui/barSSSS-top.png rename to assets/sprites/ui/bars/barSSSS-top.png diff --git a/assets/sprites/ui/barSSSS.png b/assets/sprites/ui/bars/barSSSS.png similarity index 100% rename from assets/sprites/ui/barSSSS.png rename to assets/sprites/ui/bars/barSSSS.png diff --git a/assets/sprites/ui/barSSSSS-top.png b/assets/sprites/ui/bars/barSSSSS-top.png similarity index 100% rename from assets/sprites/ui/barSSSSS-top.png rename to assets/sprites/ui/bars/barSSSSS-top.png diff --git a/assets/sprites/ui/barSSSSS.png b/assets/sprites/ui/bars/barSSSSS.png similarity index 100% rename from assets/sprites/ui/barSSSSS.png rename to assets/sprites/ui/bars/barSSSSS.png diff --git a/assets/sprites/ui/barSSSSSS-top.png b/assets/sprites/ui/bars/barSSSSSS-top.png similarity index 100% rename from assets/sprites/ui/barSSSSSS-top.png rename to assets/sprites/ui/bars/barSSSSSS-top.png diff --git a/assets/sprites/ui/barSSSSSS.png b/assets/sprites/ui/bars/barSSSSSS.png similarity index 100% rename from assets/sprites/ui/barSSSSSS.png rename to assets/sprites/ui/bars/barSSSSSS.png diff --git a/assets/sprites/ui/icons/ammo.png b/assets/sprites/ui/icons/ammo.png new file mode 100644 index 0000000000000000000000000000000000000000..4388b396a5817f38b70251e9ced65ac8ee2e4a6a GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P3?%12mYf5m7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1M1^9%x{{R0U$P7JnxeiD%l?3?(|7Uo*-M|aT<1FxqEM{QfI}E~%$MaXD z00ozNx;Tbd_@C|b6gsTH!}9R|{JwNY9YM499a^;;uU=;NvR!ng=z#Q0`3(>CjrG6Z ze9CVW)-S2d`(v4;>V>T*7kFA)9@wg5r6)Wg`&c5InNj(l sxs7jUzH2eP{UPYviSwJ8v;Hz%*~lDu=Y!Hypo1AaUHx3vIVCg!0JZ*ek^lez literal 0 HcmV?d00001 diff --git a/assets/sprites/ui/icons/health.png b/assets/sprites/ui/icons/health.png new file mode 100644 index 0000000000000000000000000000000000000000..13c30de334acb05bcb275a7c813a6df5477b3ec5 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P3?%12mYf5m7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1M1^9%x{{R0U$P7JnxeiD%l?3?(|7Uo*-M|aT<1FxqEM{QfI}E~%$MaXD z00rGWT^vI!{NMH&@-ZlI9NF=|K1%V3qsbyccIWLyvI;vCCNy{W$j|tousTbB=1Pt= xvuE}&|2r*Z^lkc?5SD9~&j?M?-8s*afr~AcSyuItRshgQ22WQ%mvv4FO#omqK(_z@ literal 0 HcmV?d00001 diff --git a/assets/sprites/ui/icons/item.png b/assets/sprites/ui/icons/item.png new file mode 100644 index 0000000000000000000000000000000000000000..a33ed631c44196782f20a34f6d68de95306ab6df GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P3?%12mYf5m7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1M1^9%x{{R0U$P7JnxeiD%l?3?(|7Uo*-M|aT<1FxqEM{QfI|Ravq8eTe zK*2elE{-7<{#(xl@--;%FbC}TzqEAet7BaWSLzhB^E;R7Exod7g1tn2!UXdid1sTu zllxN=5A-EPYCc<6{Xr)ptcz21M$k;psWZZCr8N#Ztx)UnF!+|+d|f&%>)eH(vL`?F zCAs%E3fnc#-8=Vq%lh>2`{&FaKAQ3R=MABm@An@1nzHcws`Q-QbB{QA=$P?JuqG+r jjGebB(=MHRWhwK?eay^E@=t+|W?=Ai^>bP0l+XkKg^z8n literal 0 HcmV?d00001 diff --git a/assets/sprites/ui/icons/liquid.png b/assets/sprites/ui/icons/liquid.png new file mode 100644 index 0000000000000000000000000000000000000000..d33ea7b173c749b86960a56b993de7a0c1f24aa4 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P3?%12mYf5m7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1M1^9%x{{R0U$P7JnxeiD%l?3?(|7Uo*-M|aT<1FxqEM{QfI}E~%$MaXD z00mcix;Tbd_@6!JD0EnXhsE*7|K*4KSf)MFC@5HEq`u`{bF}@cuVokXXZ&}_TYEo3 zB754luHMx14uzLWlNZP~_xw?rJJWH>{UyeREI%Erl$j&;O*nVphu!ARlGvX0+G^h6 zN1HBhl(?THu(bT_w9Catc29V6Z%#rwx>C#dlj@n>f!jIixE7 y&DopFN?61e@-H#o$ocn!$$@RQ=lEXzW&JRXsa^iltF1ssGkCiCxvX%@ literal 0 HcmV?d00001 diff --git a/assets/sprites/ui/icons/power.png b/assets/sprites/ui/icons/power.png new file mode 100644 index 0000000000000000000000000000000000000000..2ee15dd5a7d463f38247636eaaa49892f155e984 GIT binary patch literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P3?%12mYf5m7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1M1^9%x{{R0U$P7JnxeiD%l?3?(|7Uo*-M|aT<1FxqEM{QfI|Ravq8eTe zK*2gs7sn6_|GRyjdPM>B?NB*M3cW_C*iR$xBT#xhtJt%WD+5AGVyN zJ&UVd<=>2HWl76gr_acGC#h=^V<=O+R)6u-w#&CauHc=VwbRcuXRU4L%f+`k0@pp< xFb}54*mq)C!m3K4|GwHnw@mu8xdm@BJh{iT_@e4GC!k9hJYD@<);T3K0RWBVTABa= literal 0 HcmV?d00001 diff --git a/assets/sprites/ui/icons/reload.png b/assets/sprites/ui/icons/reload.png new file mode 100644 index 0000000000000000000000000000000000000000..a7e34368cd8d2cc9b4d8d1d97fea7c51007c0c50 GIT binary patch literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^Y9P$P3?%12mYf5m7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1M1^9%x{{R0U$P7JnxeiD%l?3?(|7Uo*-M|aT<1FxqEM{QfI}E~%$MaXD z00sAZx;Tbd_;2m=7CUUf!Tk7l{4NiL*(`UeE}m)Xmw5hE%01?>)dODLx&-IdSKX!G zzAT-U`+dRX7Yw;sk%#ZjjOK~_9HYJ6t$RmAXtKEk)BR1$E;#sX*(Rl~z2er=N>+gv znl8GtcpZwbEKiHAxwxiNa?w50)rYptO>;evwKdCh*7`%ueuqO7zI*setz$A5P>x#s zki}$Cc<*u!lhEGjId@GeUpiK8++v~Mt$1LM3D@UjIl&yy+aD)=o4h}pz2_sNf;rRi U6W^at0(ynP)78&qol`;+0Qkp#k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`1M1^9%x{{R0U$P7JnxeiD%l?3?(|7Uo*-M|aT<1FxqEM{QfI}E~%$MaXD z00q~2x;Tbd_;2lt<~yRm!~F2y^t?ASOl(%At~QdF&goyJTiP9TnoZs0ZzFqOwpa@n z^TXCQcG1I=U->=ml7F!BtEcn%{w25D0zWUGD3q76#(k~s=4*33lRLxfO?ji%oQ%(` zI}jy2rvs?ZzgM_9<7^Q3`#iCzsK0$tSMFw>UehU3=ydr2Q1811cX#*kdp=h1?tig4 yO~3ZYhb6nN^JuxWHh%DnF7)_)^7$>ct#OC=nbsiFID@CFpUXO@geCx-#dse8 literal 0 HcmV?d00001 diff --git a/src/UnitInfo/SVars.java b/src/UnitInfo/SVars.java index 83d420b..20aeefe 100644 --- a/src/UnitInfo/SVars.java +++ b/src/UnitInfo/SVars.java @@ -4,6 +4,7 @@ import UnitInfo.core.*; import arc.Core; import arc.files.*; import arc.graphics.g2d.TextureRegion; +import arc.math.geom.Rect; import arc.scene.ui.TextButton; import arc.scene.ui.layout.Scl; import arc.scene.ui.layout.Table; @@ -15,12 +16,11 @@ import static arc.Core.settings; import static mindustry.Vars.*; public class SVars { - public static Fi modRoot = modDirectory.child("UnitInfo"); public static SettingS settingAdder = new SettingS(); public static HudUi hud = new HudUi(); - public static TextureRegion clear = atlas.find("clear"); - public static TextureRegion error = atlas.find("error"); public static float modUiScale = settings.getInt("infoUiScale") / 100f == 0 ? 1 : settings.getInt("infoUiScale") / 100f; public static boolean pathLine = false, unitLine = false, logicLine = false; public static Seq pathTiles = new Seq<>(); + public static TextureRegion clear = atlas.find("clear"); + public static TextureRegion error = atlas.find("error"); } diff --git a/src/UnitInfo/core/BarInfo.java b/src/UnitInfo/core/BarInfo.java index 5fc0c13..a0f3f80 100644 --- a/src/UnitInfo/core/BarInfo.java +++ b/src/UnitInfo/core/BarInfo.java @@ -92,6 +92,19 @@ public class BarInfo { colors.set(1, Pal.shield); numbers.set(1, (max-force.buildup)/max); } + else if(target instanceof MendProjector.MendBuild mend){ + strings.set(1, bundle.format("shar-stat.progress", floatFormat((float) mend.sense(LAccess.progress) * 100f))); + colors.set(1, Pal.heal); + numbers.set(1, (float) mend.sense(LAccess.progress)); + } + else if(target instanceof OverdriveProjector.OverdriveBuild over){ + Field ohno = OverdriveProjector.OverdriveBuild.class.getDeclaredField("charge"); + ohno.setAccessible(true); + float charge = (float) ohno.get(over); + strings.set(1, bundle.format("shar-stat.progress", floatFormat(Mathf.clamp(charge/((OverdriveProjector)over.block).reload) * 100f))); + colors.set(1, Color.valueOf("feb380")); + numbers.set(1, Mathf.clamp(charge/((OverdriveProjector)over.block).reload)); + } else if(target instanceof ConstructBlock.ConstructBuild build){ strings.set(1, bundle.format("shar-stat.progress", floatFormat(build.progress * 100))); colors.set(1, Pal.darkerMetal); @@ -107,19 +120,6 @@ public class BarInfo { colors.set(1, Pal.darkerMetal); numbers.set(1, reconstruct.fraction()); } - else if(target instanceof MendProjector.MendBuild mend){ - strings.set(1, bundle.format("shar-stat.progress", floatFormat((float) mend.sense(LAccess.progress) * 100f))); - colors.set(1, Pal.heal); - numbers.set(1, (float) mend.sense(LAccess.progress)); - } - else if(target instanceof OverdriveProjector.OverdriveBuild over){ - Field ohno = OverdriveProjector.OverdriveBuild.class.getDeclaredField("charge"); - ohno.setAccessible(true); - float charge = (float) ohno.get(over); - strings.set(1, bundle.format("shar-stat.progress", floatFormat(Mathf.clamp(charge/((OverdriveProjector)over.block).reload) * 100f))); - colors.set(1, Color.valueOf("feb380")); - numbers.set(1, Mathf.clamp(charge/((OverdriveProjector)over.block).reload)); - } else if(target instanceof Drill.DrillBuild drill){ strings.set(1, bundle.format("shar-stat.progress", floatFormat((float) drill.sense(LAccess.progress) * 100f))); colors.set(1, drill.dominantItem == null ? Pal.items : drill.dominantItem.color); @@ -135,12 +135,12 @@ public class BarInfo { numbers.set(1, (float) crafter.sense(LAccess.progress)); } else if(target instanceof PowerNode.PowerNodeBuild node){ - strings.set(1, bundle.format("bar.powerstored", floatFormat(node.power.graph.getLastPowerStored()), floatFormat(node.power.graph.getLastCapacity()))); + strings.set(1, bundle.format("bar.power", floatFormat(node.power.graph.getLastPowerStored()), floatFormat(node.power.graph.getLastCapacity()))); colors.set(1, Pal.powerBar); numbers.set(1, node.power.graph.getLastPowerStored() / node.power.graph.getLastCapacity()); } else if(target instanceof PowerGenerator.GeneratorBuild generator){ - strings.set(1, bundle.format("bar.poweroutput", floatFormat(generator.getPowerProduction() * generator.timeScale() * 60f))); + strings.set(1, bundle.format("bar.power", floatFormat(generator.getPowerProduction() * generator.timeScale() * 60f))); colors.set(1, Pal.powerBar); numbers.set(1, generator.productionEfficiency); } diff --git a/src/UnitInfo/core/HudUi.java b/src/UnitInfo/core/HudUi.java index 1627ec3..eeb202c 100644 --- a/src/UnitInfo/core/HudUi.java +++ b/src/UnitInfo/core/HudUi.java @@ -1,5 +1,6 @@ package UnitInfo.core; +import UnitInfo.SVars; import UnitInfo.ui.*; import arc.*; import arc.graphics.*; @@ -30,11 +31,22 @@ import mindustry.type.ammo.*; import mindustry.ui.*; import mindustry.world.*; import mindustry.world.blocks.*; +import mindustry.world.blocks.defense.ForceProjector; +import mindustry.world.blocks.defense.MendProjector; +import mindustry.world.blocks.defense.OverdriveProjector; import mindustry.world.blocks.defense.turrets.*; import mindustry.world.blocks.distribution.MassDriver; import mindustry.world.blocks.payloads.Payload; import mindustry.world.blocks.payloads.PayloadMassDriver; +import mindustry.world.blocks.power.PowerGenerator; import mindustry.world.blocks.power.PowerNode; +import mindustry.world.blocks.power.ThermalGenerator; +import mindustry.world.blocks.production.AttributeCrafter; +import mindustry.world.blocks.production.Drill; +import mindustry.world.blocks.production.GenericCrafter; +import mindustry.world.blocks.production.SolidPump; +import mindustry.world.blocks.units.Reconstructor; +import mindustry.world.blocks.units.UnitFactory; import static UnitInfo.SVars.*; import static arc.Core.*; @@ -76,6 +88,8 @@ public class HudUi { public Seq linkedPayloadMasses = new Seq<>(); public Seq linkedNodes = new Seq<>(); + public final Rect scissor = new Rect(); + @SuppressWarnings("unchecked") public T getTarget(){ if(locked && lockedTarget != null) { @@ -506,163 +520,131 @@ public class HudUi { ui.hudGroup.addChild(mainTable); } - public void addBars(){ - bars.clear(); - lastColors.set(2, colors.get(2)); - { - int i = 0; - bars.add(new SBar( - () -> strings.get(i), - () -> { - if (colors.get(i) != Color.clear) lastColors.set(i, colors.get(i)); - return lastColors.get(i); - }, - () -> numbers.get(i) - )); + public TextureRegion getRegions(int i){ + Teamc target = getTarget(); + + TextureRegion region = clear; + if(i == 0){ + if(target instanceof Healthc) region = SIcons.health; + } else if(i == 1){ + if(target instanceof Turret.TurretBuild || + target instanceof MassDriver.MassDriverBuild){ + region = SIcons.reload; + } else if((target instanceof Unit unit && unit.type != null) || + target instanceof ForceProjector.ForceBuild){ + region = SIcons.shield; + } else if(target instanceof MendProjector.MendBuild || + target instanceof OverdriveProjector.OverdriveBuild || + target instanceof ConstructBlock.ConstructBuild || + target instanceof UnitFactory.UnitFactoryBuild || + target instanceof Reconstructor.ReconstructorBuild || + target instanceof Drill.DrillBuild || + target instanceof GenericCrafter.GenericCrafterBuild){ + //region = SIcons.progress; + } else if(target instanceof PowerNode.PowerNodeBuild || + target instanceof PowerGenerator.GeneratorBuild){ + region = SIcons.power; + } + } else if(i == 2){ + if(target instanceof ItemTurret.ItemTurretBuild){ + region = SIcons.ammo; + } else if(target instanceof LiquidTurret.LiquidTurretBuild){ + region = SIcons.liquid; + } else if(target instanceof PowerTurret.PowerTurretBuild || + target instanceof PowerNode.PowerNodeBuild){ + region = SIcons.power; + } else if((target instanceof Building b && b.block.hasItems) || + (target instanceof Unit unit && unit.type != null)){ + region = SIcons.item; + } + } else if(i == 3){ + if(target instanceof Unit unit && unit.type != null || + target instanceof UnitFactory.UnitFactoryBuild || + target instanceof Reconstructor.ReconstructorBuild){ + region = Icon.units.getRegion(); + } else if(target instanceof AttributeCrafter.AttributeCrafterBuild || + target instanceof SolidPump.SolidPumpBuild || + target instanceof ThermalGenerator.ThermalGeneratorBuild){ + //region = SIcons.attr; + } else if(target instanceof PowerNode.PowerNodeBuild){ + region = SIcons.power; + } else if(target instanceof OverdriveProjector.OverdriveBuild){ + //region = SIcons.boost; + } + } else if(i == 4){ + if(target instanceof Unit unit && target instanceof Payloadc && unit.type != null){ + + } else if(target instanceof PowerNode.PowerNodeBuild){ + region = SIcons.power; + } else if(target instanceof Building b && b.block.hasLiquids){ + region = SIcons.liquid; + } + } else if(i == 5){ + if(target instanceof Unit unit && state.rules.unitAmmo && unit.type != null){ + region = SIcons.ammo; + }else if(target instanceof PowerNode.PowerNodeBuild || + (target instanceof Building b && b.block.consumes.hasPower())){ + region = SIcons.power; + } } - { - int i = 1; - bars.add(new SBar( - () -> strings.get(i), - () -> { - if (colors.get(i) != Color.clear) lastColors.set(i, colors.get(i)); - return lastColors.get(i); - }, - () -> numbers.get(i) - )); - } - bars.add(new Stack(){{ + + return region; + } + public Element addBar(int i){ + return new Stack(){{ add(new Table(t -> { - t.top().defaults().width(Scl.scl(modUiScale) * 23 * 8f).height(Scl.scl(modUiScale) * 4f * 8f); - int i = 2; t.add(new SBar( - () -> BarInfo.strings.get(i), - () -> { - if(BarInfo.colors.get(i) != Color.clear) lastColors.set(i, BarInfo.colors.get(i)); - return lastColors.get(i); - }, - () -> BarInfo.numbers.get(i) - )).growX().left(); - })); - add(new Table(){{ - left(); - update(() -> { - if(!Core.settings.getBool("infoui")) return; - Element image = new Element(); - if(getTarget() instanceof ItemTurret.ItemTurretBuild turret){ - if(turret.hasAmmo()) image = new Image(((ItemTurret)turret.block).ammoTypes.findKey(turret.peekAmmo(), true).uiIcon); - else {MultiReqImage itemReq = new MultiReqImage(); - for(Item item : ((ItemTurret) turret.block).ammoTypes.keys()) - itemReq.add(new ReqImage(item.uiIcon, turret::hasAmmo)); - image = itemReq; - } - } - else if(getTarget() instanceof LiquidTurret.LiquidTurretBuild turret){ - MultiReqImage liquidReq = new MultiReqImage(); - for(Liquid liquid : ((LiquidTurret) turret.block).ammoTypes.keys()) - liquidReq.add(new ReqImage(liquid.uiIcon, turret::hasAmmo)); - image = liquidReq; - - if(((LiquidTurret.LiquidTurretBuild) getTarget()).hasAmmo()) - image = new Image(turret.liquids.current().uiIcon).setScaling(Scaling.fit); - } - else if(getTarget() instanceof PowerTurret.PowerTurretBuild){ - image = new Image(Icon.power.getRegion()){ - @Override - public void draw(){ - Building entity = getTarget(); - float max = entity.block.consumes.getPower().usage; - float v = entity.power.status * entity.power.graph.getLastScaledPowerIn(); - - super.draw(); - Lines.stroke(Scl.scl(modUiScale) * 2f, Pal.removeBack); - Draw.alpha(1 - v/max); - Lines.line(x, y - 2f + height, x + width, y - 2f); - Draw.color(Pal.remove); - Draw.alpha(1 - v/max); - Lines.line(x, y + height, x + width, y); - Draw.reset(); - } - }; - } - clearChildren(); - add(image).size(iconSmall * Scl.scl(modUiScale)).padBottom(2 * 8f).padRight(3 * 8f); - }); - pack(); - }}); - add(new Table(t -> { - t.left(); - t.add(new Image(){{ - update(() -> { - if(!Core.settings.getBool("infoui")) return; - if(getTarget() instanceof Unit u && u.stack.item != null && u.stack.amount > 0) - setDrawable(u.stack.item.uiIcon); - else setDrawable(clear); - }); - visibility = () -> getTarget() instanceof Unit; - }}.setScaling(Scaling.fit)).size(Scl.scl(modUiScale) * 30f).padBottom(Scl.scl(modUiScale) * 4 * 8f).padRight(Scl.scl(modUiScale) * 6 * 8f); - t.pack(); - })); - }}); - - - { - int i = 3; - bars.add(new SBar( - () -> strings.get(i), - () -> { - if(colors.get(i) != Color.clear) lastColors.set(i, colors.get(i)); - return lastColors.get(i); - }, - () -> numbers.get(i) - )); - } - - - { - int i = 4; - bars.add(new SBar( - () -> strings.get(i), - () -> { - if(colors.get(i) != Color.clear) lastColors.set(i, colors.get(i)); - return lastColors.get(i); - }, - () -> numbers.get(i) - )); - } - - bars.add(new Stack(){{ - add(new Table(t -> { - t.top().defaults().width(Scl.scl(modUiScale) * 23 * 8f).height(Scl.scl(modUiScale) * 4 * 8f); - - int i = 5; - t.add(new SBar( - () -> strings.get(i), + () -> BarInfo.strings.get(i), () -> { - if(colors.get(i) != Color.clear) lastColors.set(i, colors.get(i)); + if (BarInfo.colors.get(i) != Color.clear) lastColors.set(i, BarInfo.colors.get(i)); return lastColors.get(i); }, - () -> numbers.get(i) - )).growX().left(); + () -> BarInfo.numbers.get(i) + )).width(Scl.scl(modUiScale) * 24 * 8f).height(Scl.scl(modUiScale) * 4 * 8f).growX().left(); })); add(new Table(t -> { - t.left(); - t.add(new Image(){{ - update(() -> { - if(!Core.settings.getBool("infoui")) return; - TextureRegion region = clear; + t.right(); + t.add(new Image(){ + @Override + public void draw() { + validate(); - if(Vars.state.rules.unitAmmo && getTarget() instanceof Unit u && u.type != null){ - UnitType type = u.type; - if(type.ammoType instanceof ItemAmmoType ammo) region = ammo.item.uiIcon; - else if(type.ammoType instanceof PowerAmmoType) region = Icon.powerSmall.getRegion(); + float x = this.x; + float y = this.y; + float scaleX = this.scaleX; + float scaleY = this.scaleY; + Draw.color(Color.white); + Draw.alpha(parentAlpha * color.a); + + TextureRegionDrawable region = new TextureRegionDrawable(getRegions(i)); + float rotation = getRotation(); + if(scaleX != 1 || scaleY != 1 || rotation != 0){ + region.draw(x + imageX, y + imageY, originX - imageX, originY - imageY, + imageWidth, imageHeight, scaleX, scaleY, rotation); + return; } - setDrawable(region); - }); - }}.setScaling(Scaling.fit)).size(Scl.scl(modUiScale) * 30f).padBottom(Scl.scl(modUiScale) * 4 * 8f).padRight(Scl.scl(modUiScale) * 6 * 8f); - t.pack(); + region.draw(x + imageX, y + imageY, imageWidth * scaleX, imageHeight * scaleY); + + Draw.color(colors.get(i)); + if(ScissorStack.push(scissor.set(x, y, imageWidth * scaleX, imageHeight * scaleY * numbers.get(i)))){ + region.draw(x, y, imageWidth * scaleX, imageHeight * scaleY); + ScissorStack.pop(); + } + Draw.reset(); + } + }).size(iconMed * Scl.scl(modUiScale)).padRight(Scl.scl(modUiScale) * 8f); })); - }}); + }}; + } + public void addBars(){ + bars.clear(); + + bars.add(addBar(0)); + bars.add(addBar(1)); + bars.add(addBar(2)); + bars.add(addBar(3)); + bars.add(addBar(4)); + bars.add(addBar(5)); } public void addWeaponTable(Table table){ @@ -775,7 +757,7 @@ public class HudUi { for(StatusEffect effect : content.statusEffects()){ if(applied.get(effect.id) && !effect.isHidden()){ t.image(effect.uiIcon).size(iconSmall).get().addListener(new Tooltip(l -> l.label(() -> - effect.localizedName + " [lightgray]" + UI.formatTime(st.getDuration(effect))).style(Styles.outlineLabel)){{allowMobile = true;}}); + effect.localizedName + " [lightgray]" + UI.formatTime(st.getDuration(effect))).style(Styles.outlineLabel))); } } statuses.set(applied); @@ -894,7 +876,7 @@ public class HudUi { }); t.row(); t.table(tt -> { - tt.defaults().height(Scl.scl(modUiScale) * 4f * 8f).pad(0,4,0,4).top(); + tt.defaults().width(Scl.scl(modUiScale) * 30f * 8f).height(Scl.scl(modUiScale) * 4f * 8f).pad(0,4,0,4).top(); for(Element bar : bars){ bar.setScale(Scl.scl(modUiScale)); tt.add(bar).growX().left(); diff --git a/src/UnitInfo/core/Main.java b/src/UnitInfo/core/Main.java index ac7129e..c33fccb 100644 --- a/src/UnitInfo/core/Main.java +++ b/src/UnitInfo/core/Main.java @@ -4,7 +4,6 @@ import UnitInfo.ui.*; import arc.*; import arc.graphics.*; import arc.graphics.g2d.*; -import arc.input.KeyCode; import arc.math.*; import arc.scene.ui.layout.*; import arc.util.*; @@ -12,10 +11,7 @@ import mindustry.*; import mindustry.ai.Pathfinder; import mindustry.ai.types.*; import mindustry.content.*; -import mindustry.core.Logic; -import mindustry.entities.units.AIController; -import mindustry.entities.units.UnitCommand; -import mindustry.entities.units.UnitController; +import mindustry.entities.units.*; import mindustry.game.EventType.*; import mindustry.game.*; import mindustry.gen.*; diff --git a/src/UnitInfo/core/SettingS.java b/src/UnitInfo/core/SettingS.java index f6a5c6f..ad3728d 100644 --- a/src/UnitInfo/core/SettingS.java +++ b/src/UnitInfo/core/SettingS.java @@ -75,7 +75,7 @@ public class SettingS { t.add(new Label(title + ": ")).left().padRight(5) .update(a -> a.setColor(condition.get() ? Color.white : Color.gray)); - t.field(value[0] + str[0], s -> { + t.field((integer ? String.valueOf(value[0]).split("[.]")[0] : value[0]) + str[0], s -> { value[0] = Strings.parseFloat(s); str[0] = h.get(s); diff --git a/src/UnitInfo/ui/CoresItemsDisplay.java b/src/UnitInfo/ui/CoresItemsDisplay.java index 9b26161..b9cbf0d 100644 --- a/src/UnitInfo/ui/CoresItemsDisplay.java +++ b/src/UnitInfo/ui/CoresItemsDisplay.java @@ -78,7 +78,6 @@ public class CoresItemsDisplay { t.clear(); t.update(() -> { - if(!Core.settings.getBool("infoui")) return; core = team.core(); heat += Time.delta; @@ -109,7 +108,6 @@ public class CoresItemsDisplay { HandCursorListener listener1 = new HandCursorListener(); image.addListener(listener1); image.update(() -> { - if(!Core.settings.getBool("infoui")) return; image.color.lerp(!listener1.isOver() ? Color.lightGray : Color.white, Mathf.clamp(0.4f * Time.delta)); }); } @@ -136,7 +134,6 @@ public class CoresItemsDisplay { }); t.row(); t.table().update(itemTable -> { - if(!Core.settings.getBool("infoui")) return; itemTable.clear(); final int[] i = {0}; for(Item item : content.items()){ @@ -165,7 +162,6 @@ public class CoresItemsDisplay { }); t.row(); t.table().update(unitTable -> { - if(!Core.settings.getBool("infoui")) return; unitTable.clear(); final int[] i = {0}; for(UnitType unit : content.units()){ diff --git a/src/UnitInfo/ui/SIcons.java b/src/UnitInfo/ui/SIcons.java new file mode 100644 index 0000000..b23da0f --- /dev/null +++ b/src/UnitInfo/ui/SIcons.java @@ -0,0 +1,14 @@ +package UnitInfo.ui; + +import arc.Core; +import arc.graphics.g2d.TextureRegion; + +public class SIcons { + public static TextureRegion health = Core.atlas.find("unitinfo-health"); + public static TextureRegion shield = Core.atlas.find("unitinfo-shield"); + public static TextureRegion item = Core.atlas.find("unitinfo-item"); + public static TextureRegion liquid = Core.atlas.find("unitinfo-liquid"); + public static TextureRegion power = Core.atlas.find("unitinfo-power"); + public static TextureRegion ammo = Core.atlas.find("unitinfo-ammo"); + public static TextureRegion reload = Core.atlas.find("unitinfo-reload"); +}