From 319587216cd15db60976458d3a472fce5243de7f Mon Sep 17 00:00:00 2001 From: Sharlotte Date: Tue, 27 Jul 2021 17:26:09 +0900 Subject: [PATCH] marge done --- src/UnitInfo/core/BarInfo.java | 27 ++++++++++++++---- src/UnitInfo/core/HudUi.java | 47 ++++++++++++++++++------------ src/UnitInfo/core/Main.java | 8 ++---- src/UnitInfo/ui/SBar.java | 52 +++++++++++++++++++--------------- 4 files changed, 81 insertions(+), 53 deletions(-) diff --git a/src/UnitInfo/core/BarInfo.java b/src/UnitInfo/core/BarInfo.java index eaba949..d5d9373 100644 --- a/src/UnitInfo/core/BarInfo.java +++ b/src/UnitInfo/core/BarInfo.java @@ -4,7 +4,9 @@ import UnitInfo.SVars; import arc.Core; import arc.graphics.Color; import arc.math.Mathf; +import arc.struct.FloatSeq; import arc.struct.Seq; +import arc.util.Log; import arc.util.Strings; import arc.util.Time; import mindustry.ai.types.FormationAI; @@ -15,9 +17,13 @@ import mindustry.entities.abilities.ForceFieldAbility; import mindustry.entities.abilities.ShieldRegenFieldAbility; import mindustry.gen.*; import mindustry.graphics.Pal; +import mindustry.logic.LAccess; +import mindustry.type.Item; import mindustry.ui.Fonts; import mindustry.world.blocks.ConstructBlock; 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.storage.*; import mindustry.world.blocks.units.Reconstructor; @@ -31,7 +37,7 @@ import static mindustry.Vars.state; public class BarInfo { static Seq strings = Seq.with("","","","","",""); - static Seq numbers = Seq.with(0f,0f,0f,0f,0f,0f); + static FloatSeq numbers = FloatSeq.with(0f,0f,0f,0f,0f,0f); static Seq colors = Seq.with(Color.clear,Color.clear,Color.clear,Color.clear,Color.clear,Color.clear); public static String format(float number){ @@ -70,10 +76,9 @@ public class BarInfo { numbers.set(1, unit.shield() / Math.max(max1, max2)); } else if(target instanceof ConstructBlock.ConstructBuild build){ - ConstructBlock.ConstructBuild construct = build; - strings.set(1, Core.bundle.format("shar-stat.progress", Strings.fixed(construct.progress * 100, 1))); + strings.set(1, Core.bundle.format("shar-stat.progress", Strings.fixed(build.progress * 100, 1))); colors.set(1, Pal.darkerMetal); - numbers.set(1, construct.progress); + numbers.set(1, build.progress); } else if(target instanceof UnitFactory.UnitFactoryBuild build){ strings.set(1, Core.bundle.format("shar-stat.progress", Strings.fixed(build.fraction() * 100f, 1))); @@ -88,10 +93,19 @@ public class BarInfo { else if(target instanceof ForceProjector.ForceBuild force){ ForceProjector forceBlock = (ForceProjector) force.block; float max = forceBlock.shieldHealth + forceBlock.phaseShieldBoost * force.phaseHeat; - strings.set(1, Core.bundle.format("shar-stat.shield", format(max-force.buildup), max)); + strings.set(1, Core.bundle.format("shar-stat.shield", format(max-force.buildup), format(max))); colors.set(1, Pal.shield); numbers.set(1, (max-force.buildup)/max); - + } + else if(target instanceof MendProjector.MendBuild mend){ + strings.set(1, Core.bundle.format("shar-stat.progress", Strings.fixed((float) mend.sense(LAccess.progress), 1))); + colors.set(1, Pal.heal); + numbers.set(1, (float) mend.sense(LAccess.progress)); + } + else if(target instanceof OverdriveProjector.OverdriveBuild over){ + strings.set(1, Core.bundle.format("shar-stat.progress", Strings.fixed((float) over.sense(LAccess.progress), 1))); + colors.set(1, Pal.heal); + numbers.set(1, (float) over.sense(LAccess.progress)); } if(target instanceof ItemTurret.ItemTurretBuild turretBuild) { @@ -118,6 +132,7 @@ public class BarInfo { } else if(target instanceof StorageBlock.StorageBuild sb && !sb.canPickup()){ for(int i = 0; i < 4; i++) { + // Building build = i == 0 ? ((Building) target).front() : i == 1 ? ((Building) target).back() : i == 2 ? ((Building) target).left() : ((Building) target).right(); Building build = sb.nearby(i); if(build instanceof CoreBlock.CoreBuild cb){ strings.set(2, bundle.format("shar-stat.itemCapacity", format(sb.items.total()), format(cb.storageCapacity * content.items().count(UnlockableContent::unlockedNow)))); diff --git a/src/UnitInfo/core/HudUi.java b/src/UnitInfo/core/HudUi.java index 2f15a8c..8e7ea2b 100644 --- a/src/UnitInfo/core/HudUi.java +++ b/src/UnitInfo/core/HudUi.java @@ -2,6 +2,8 @@ package UnitInfo.core; import UnitInfo.ui.*; import arc.*; +import arc.func.Floatp; +import arc.func.Prov; import arc.graphics.*; import arc.graphics.g2d.*; import arc.input.KeyCode; @@ -62,9 +64,14 @@ public class HudUi { int waveamount; int coreamount; - Seq lastColors = new Seq<>(new Color[]{Color.clear,Color.clear,Color.clear,Color.clear,Color.clear,Color.clear}); + //is this rly good idea? + Seq strings = Seq.with("","","","","",""); + FloatSeq numbers = FloatSeq.with(0f,0f,0f,0f,0f,0f); + Seq colors = Seq.with(Color.clear,Color.clear,Color.clear,Color.clear,Color.clear,Color.clear); + Seq lastColors = Seq.with(Color.clear,Color.clear,Color.clear,Color.clear,Color.clear,Color.clear); CoresItemsDisplay coreItems = new CoresItemsDisplay(Team.baseTeams); + @Nullable Teamc target; @SuppressWarnings("unchecked") @@ -232,27 +239,27 @@ public class HudUi { public void addBars(){ bars.clear(); - + lastColors.set(2, colors.get(2)); { int i = 0; bars.add(new SBar( - () -> BarInfo.strings.get(i), + () -> strings.get(i), () -> { - if (BarInfo.colors.get(i) != Color.clear) lastColors.set(i, BarInfo.colors.get(i)); + if (colors.get(i) != Color.clear) lastColors.set(i, colors.get(i)); return lastColors.get(i); }, - () -> BarInfo.numbers.get(i) + () -> numbers.get(i) )); } { int i = 1; bars.add(new SBar( - () -> BarInfo.strings.get(i), + () -> strings.get(i), () -> { - if (BarInfo.colors.get(i) != Color.clear) lastColors.set(i, BarInfo.colors.get(i)); + if (colors.get(i) != Color.clear) lastColors.set(i, colors.get(i)); return lastColors.get(i); }, - () -> BarInfo.numbers.get(i) + () -> numbers.get(i) )); } bars.add(new Stack(){{ @@ -340,12 +347,12 @@ public class HudUi { { int i = 3; bars.add(new SBar( - () -> BarInfo.strings.get(i), + () -> strings.get(i), () -> { - if (BarInfo.colors.get(i) != Color.clear) lastColors.set(i, BarInfo.colors.get(i)); + if (colors.get(i) != Color.clear) lastColors.set(i, colors.get(i)); return lastColors.get(i); }, - () -> BarInfo.numbers.get(i) + () -> numbers.get(i) )); } @@ -353,12 +360,12 @@ public class HudUi { { int i = 4; bars.add(new SBar( - () -> BarInfo.strings.get(i), + () -> strings.get(i), () -> { - if (BarInfo.colors.get(i) != Color.clear) lastColors.set(i, BarInfo.colors.get(i)); + if (colors.get(i) != Color.clear) lastColors.set(i, colors.get(i)); return lastColors.get(i); }, - () -> BarInfo.numbers.get(i) + () -> numbers.get(i) )); } @@ -368,12 +375,12 @@ public class HudUi { int i = 5; t.add(new SBar( - () -> BarInfo.strings.get(i), + () -> strings.get(i), () -> { - if (BarInfo.colors.get(i) != Color.clear) lastColors.set(i, BarInfo.colors.get(i)); + if (colors.get(i) != Color.clear) lastColors.set(i, colors.get(i)); return lastColors.get(i); }, - () -> BarInfo.numbers.get(i) + () -> numbers.get(i) )).growX().left(); })); add(new Table(t -> { @@ -576,7 +583,11 @@ public class HudUi { }).padRight(Scl.scl(24 * 8f)); table.row(); table.update(() -> { - BarInfo.getInfo(target); + BarInfo.getInfo(getTarget()); + strings = BarInfo.strings; + numbers = BarInfo.numbers; + colors = BarInfo.colors; + if(getTarget() instanceof Turret.TurretBuild){ if(((Turret.TurretBuild) getTarget()).charging) charge += Time.delta; else charge = 0f; diff --git a/src/UnitInfo/core/Main.java b/src/UnitInfo/core/Main.java index 3921baa..d2bcd25 100644 --- a/src/UnitInfo/core/Main.java +++ b/src/UnitInfo/core/Main.java @@ -73,15 +73,11 @@ public class Main extends Mod { if(Core.settings.getBool("scan")){ float range = settings.getInt("rangemax") * 8f; - for(Team team : Team.all) indexer.eachBlock(team, Core.input.mouseWorldX(), Core.input.mouseWorldY(), range, b -> true, b -> new FreeBar().draw(b)); - Draw.color(Tmp.c1.set(Pal.accent).a(0.75f + Mathf.absin(3, 0.25f))); - Lines.swirl(Core.input.mouseWorldX(), Core.input.mouseWorldY(), range, 0.15f, Time.time % 360); - Lines.swirl(Core.input.mouseWorldX(), Core.input.mouseWorldY(), range, 0.15f, 90 + Time.time % 360); - Lines.swirl(Core.input.mouseWorldX(), Core.input.mouseWorldY(), range, 0.15f, 180 + Time.time % 360); - Lines.swirl(Core.input.mouseWorldX(), Core.input.mouseWorldY(), range, 0.15f, 270 + Time.time % 360); + for(int i = 0; i < 4; i++) + Lines.swirl(Core.input.mouseWorldX(), Core.input.mouseWorldY(), range, 0.15f, 90 * i + Time.time % 360); Draw.reset(); } diff --git a/src/UnitInfo/ui/SBar.java b/src/UnitInfo/ui/SBar.java index 7c01344..acd7b31 100644 --- a/src/UnitInfo/ui/SBar.java +++ b/src/UnitInfo/ui/SBar.java @@ -9,19 +9,21 @@ import arc.math.geom.*; import arc.scene.*; import arc.scene.style.*; import arc.scene.ui.layout.*; +import arc.struct.FloatSeq; +import arc.struct.Seq; +import arc.util.Log; import arc.util.pooling.*; import mindustry.graphics.*; import mindustry.ui.*; public class SBar extends Element{ - private static final Rect scissor = new Rect(); + static final Rect scissor = new Rect(); - private final Floatp fraction; - private String name = ""; - private float value, lastValue, blink; - private final Color blinkColor = new Color(); - NinePatchDrawable bar; - NinePatchDrawable top; + Floatp fraction; + String name = ""; + float value, lastValue, blink; + final Color blinkColor = new Color(); + NinePatchDrawable bar, top; float spriteWidth; public SBar(Prov name, Prov color, Floatp fraction){ @@ -40,6 +42,25 @@ public class SBar extends Element{ this.name = ""; } }); + init(); + } + + + public Drawable drawable(String name, int left, int right, int top, int bottom){ + Drawable out; + + TextureAtlas.AtlasRegion region = Core.atlas.find(name); + + int[] splits = {left, right, top, bottom}; + NinePatch patch = new NinePatch(region, splits[0], splits[1], splits[2], splits[3]); + int[] pads = region.pads; + if(pads != null) patch.setPadding(pads[0], pads[1], pads[2], pads[3]); + out = new ScaledNinePatchDrawable(patch, 1f); + + return out; + } + + public void init(){ boolean ssim = Core.settings.getBool("ssim"); boolean shar = Core.settings.getBool("shar"); boolean shar1 = Core.settings.getBool("shar1"); @@ -74,21 +95,6 @@ public class SBar extends Element{ top = (NinePatchDrawable) drawable("unitinfo-barSSSSSS-top", 32, 32, 16, 16); spriteWidth = Core.atlas.find("unitinfo-barSSSSSS").width; } - - } - - public Drawable drawable(String name, int left, int right, int top, int bottom){ - Drawable out; - - TextureAtlas.AtlasRegion region = Core.atlas.find(name); - - int[] splits = {left, right, top, bottom}; - NinePatch patch = new NinePatch(region, splits[0], splits[1], splits[2], splits[3]); - int[] pads = region.pads; - if(pads != null) patch.setPadding(pads[0], pads[1], pads[2], pads[3]); - out = new ScaledNinePatchDrawable(patch, 1f); - - return out; } @Override @@ -141,8 +147,8 @@ public class SBar extends Element{ ScissorStack.pop(); } } - Draw.color(); + Font font = Fonts.outline; GlyphLayout lay = Pools.obtain(GlyphLayout.class, GlyphLayout::new); font.getData().setScale(Scl.scl());