marge done

This commit is contained in:
Sharlotte
2021-07-27 17:26:09 +09:00
parent 3495d97fdb
commit 319587216c
4 changed files with 81 additions and 53 deletions

View File

@@ -4,7 +4,9 @@ import UnitInfo.SVars;
import arc.Core; import arc.Core;
import arc.graphics.Color; import arc.graphics.Color;
import arc.math.Mathf; import arc.math.Mathf;
import arc.struct.FloatSeq;
import arc.struct.Seq; import arc.struct.Seq;
import arc.util.Log;
import arc.util.Strings; import arc.util.Strings;
import arc.util.Time; import arc.util.Time;
import mindustry.ai.types.FormationAI; import mindustry.ai.types.FormationAI;
@@ -15,9 +17,13 @@ import mindustry.entities.abilities.ForceFieldAbility;
import mindustry.entities.abilities.ShieldRegenFieldAbility; import mindustry.entities.abilities.ShieldRegenFieldAbility;
import mindustry.gen.*; import mindustry.gen.*;
import mindustry.graphics.Pal; import mindustry.graphics.Pal;
import mindustry.logic.LAccess;
import mindustry.type.Item;
import mindustry.ui.Fonts; import mindustry.ui.Fonts;
import mindustry.world.blocks.ConstructBlock; import mindustry.world.blocks.ConstructBlock;
import mindustry.world.blocks.defense.ForceProjector; 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.defense.turrets.*;
import mindustry.world.blocks.storage.*; import mindustry.world.blocks.storage.*;
import mindustry.world.blocks.units.Reconstructor; import mindustry.world.blocks.units.Reconstructor;
@@ -31,7 +37,7 @@ import static mindustry.Vars.state;
public class BarInfo { public class BarInfo {
static Seq<String> strings = Seq.with("","","","","",""); static Seq<String> strings = Seq.with("","","","","","");
static Seq<Float> numbers = Seq.with(0f,0f,0f,0f,0f,0f); static FloatSeq numbers = FloatSeq.with(0f,0f,0f,0f,0f,0f);
static Seq<Color> colors = Seq.with(Color.clear,Color.clear,Color.clear,Color.clear,Color.clear,Color.clear); static Seq<Color> colors = Seq.with(Color.clear,Color.clear,Color.clear,Color.clear,Color.clear,Color.clear);
public static String format(float number){ public static String format(float number){
@@ -70,10 +76,9 @@ public class BarInfo {
numbers.set(1, unit.shield() / Math.max(max1, max2)); numbers.set(1, unit.shield() / Math.max(max1, max2));
} }
else if(target instanceof ConstructBlock.ConstructBuild build){ else if(target instanceof ConstructBlock.ConstructBuild build){
ConstructBlock.ConstructBuild construct = build; strings.set(1, Core.bundle.format("shar-stat.progress", Strings.fixed(build.progress * 100, 1)));
strings.set(1, Core.bundle.format("shar-stat.progress", Strings.fixed(construct.progress * 100, 1)));
colors.set(1, Pal.darkerMetal); colors.set(1, Pal.darkerMetal);
numbers.set(1, construct.progress); numbers.set(1, build.progress);
} }
else if(target instanceof UnitFactory.UnitFactoryBuild build){ else if(target instanceof UnitFactory.UnitFactoryBuild build){
strings.set(1, Core.bundle.format("shar-stat.progress", Strings.fixed(build.fraction() * 100f, 1))); 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){ else if(target instanceof ForceProjector.ForceBuild force){
ForceProjector forceBlock = (ForceProjector) force.block; ForceProjector forceBlock = (ForceProjector) force.block;
float max = forceBlock.shieldHealth + forceBlock.phaseShieldBoost * force.phaseHeat; 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); colors.set(1, Pal.shield);
numbers.set(1, (max-force.buildup)/max); 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) { if(target instanceof ItemTurret.ItemTurretBuild turretBuild) {
@@ -118,6 +132,7 @@ public class BarInfo {
} }
else if(target instanceof StorageBlock.StorageBuild sb && !sb.canPickup()){ else if(target instanceof StorageBlock.StorageBuild sb && !sb.canPickup()){
for(int i = 0; i < 4; i++) { 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); Building build = sb.nearby(i);
if(build instanceof CoreBlock.CoreBuild cb){ 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)))); strings.set(2, bundle.format("shar-stat.itemCapacity", format(sb.items.total()), format(cb.storageCapacity * content.items().count(UnlockableContent::unlockedNow))));

View File

@@ -2,6 +2,8 @@ package UnitInfo.core;
import UnitInfo.ui.*; import UnitInfo.ui.*;
import arc.*; import arc.*;
import arc.func.Floatp;
import arc.func.Prov;
import arc.graphics.*; import arc.graphics.*;
import arc.graphics.g2d.*; import arc.graphics.g2d.*;
import arc.input.KeyCode; import arc.input.KeyCode;
@@ -62,9 +64,14 @@ public class HudUi {
int waveamount; int waveamount;
int coreamount; int coreamount;
Seq<Color> lastColors = new Seq<>(new Color[]{Color.clear,Color.clear,Color.clear,Color.clear,Color.clear,Color.clear}); //is this rly good idea?
Seq<String> strings = Seq.with("","","","","","");
FloatSeq numbers = FloatSeq.with(0f,0f,0f,0f,0f,0f);
Seq<Color> colors = Seq.with(Color.clear,Color.clear,Color.clear,Color.clear,Color.clear,Color.clear);
Seq<Color> lastColors = Seq.with(Color.clear,Color.clear,Color.clear,Color.clear,Color.clear,Color.clear);
CoresItemsDisplay coreItems = new CoresItemsDisplay(Team.baseTeams); CoresItemsDisplay coreItems = new CoresItemsDisplay(Team.baseTeams);
@Nullable Teamc target; @Nullable Teamc target;
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@@ -232,27 +239,27 @@ public class HudUi {
public void addBars(){ public void addBars(){
bars.clear(); bars.clear();
lastColors.set(2, colors.get(2));
{ {
int i = 0; int i = 0;
bars.add(new SBar( 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); return lastColors.get(i);
}, },
() -> BarInfo.numbers.get(i) () -> numbers.get(i)
)); ));
} }
{ {
int i = 1; int i = 1;
bars.add(new SBar( 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); return lastColors.get(i);
}, },
() -> BarInfo.numbers.get(i) () -> numbers.get(i)
)); ));
} }
bars.add(new Stack(){{ bars.add(new Stack(){{
@@ -340,12 +347,12 @@ public class HudUi {
{ {
int i = 3; int i = 3;
bars.add(new SBar( 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); return lastColors.get(i);
}, },
() -> BarInfo.numbers.get(i) () -> numbers.get(i)
)); ));
} }
@@ -353,12 +360,12 @@ public class HudUi {
{ {
int i = 4; int i = 4;
bars.add(new SBar( 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); return lastColors.get(i);
}, },
() -> BarInfo.numbers.get(i) () -> numbers.get(i)
)); ));
} }
@@ -368,12 +375,12 @@ public class HudUi {
int i = 5; int i = 5;
t.add(new SBar( 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); return lastColors.get(i);
}, },
() -> BarInfo.numbers.get(i) () -> numbers.get(i)
)).growX().left(); )).growX().left();
})); }));
add(new Table(t -> { add(new Table(t -> {
@@ -576,7 +583,11 @@ public class HudUi {
}).padRight(Scl.scl(24 * 8f)); }).padRight(Scl.scl(24 * 8f));
table.row(); table.row();
table.update(() -> { table.update(() -> {
BarInfo.getInfo(target); BarInfo.getInfo(getTarget());
strings = BarInfo.strings;
numbers = BarInfo.numbers;
colors = BarInfo.colors;
if(getTarget() instanceof Turret.TurretBuild){ if(getTarget() instanceof Turret.TurretBuild){
if(((Turret.TurretBuild) getTarget()).charging) charge += Time.delta; if(((Turret.TurretBuild) getTarget()).charging) charge += Time.delta;
else charge = 0f; else charge = 0f;

View File

@@ -73,15 +73,11 @@ public class Main extends Mod {
if(Core.settings.getBool("scan")){ if(Core.settings.getBool("scan")){
float range = settings.getInt("rangemax") * 8f; float range = settings.getInt("rangemax") * 8f;
for(Team team : Team.all) for(Team team : Team.all)
indexer.eachBlock(team, Core.input.mouseWorldX(), Core.input.mouseWorldY(), range, b -> true, b -> new FreeBar().draw(b)); 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))); 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); for(int i = 0; i < 4; i++)
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, 90 * i + 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);
Draw.reset(); Draw.reset();
} }

View File

@@ -9,19 +9,21 @@ import arc.math.geom.*;
import arc.scene.*; import arc.scene.*;
import arc.scene.style.*; import arc.scene.style.*;
import arc.scene.ui.layout.*; import arc.scene.ui.layout.*;
import arc.struct.FloatSeq;
import arc.struct.Seq;
import arc.util.Log;
import arc.util.pooling.*; import arc.util.pooling.*;
import mindustry.graphics.*; import mindustry.graphics.*;
import mindustry.ui.*; import mindustry.ui.*;
public class SBar extends Element{ public class SBar extends Element{
private static final Rect scissor = new Rect(); static final Rect scissor = new Rect();
private final Floatp fraction; Floatp fraction;
private String name = ""; String name = "";
private float value, lastValue, blink; float value, lastValue, blink;
private final Color blinkColor = new Color(); final Color blinkColor = new Color();
NinePatchDrawable bar; NinePatchDrawable bar, top;
NinePatchDrawable top;
float spriteWidth; float spriteWidth;
public SBar(Prov<String> name, Prov<Color> color, Floatp fraction){ public SBar(Prov<String> name, Prov<Color> color, Floatp fraction){
@@ -40,6 +42,25 @@ public class SBar extends Element{
this.name = ""; 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 ssim = Core.settings.getBool("ssim");
boolean shar = Core.settings.getBool("shar"); boolean shar = Core.settings.getBool("shar");
boolean shar1 = Core.settings.getBool("shar1"); 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); top = (NinePatchDrawable) drawable("unitinfo-barSSSSSS-top", 32, 32, 16, 16);
spriteWidth = Core.atlas.find("unitinfo-barSSSSSS").width; 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 @Override
@@ -141,8 +147,8 @@ public class SBar extends Element{
ScissorStack.pop(); ScissorStack.pop();
} }
} }
Draw.color(); Draw.color();
Font font = Fonts.outline; Font font = Fonts.outline;
GlyphLayout lay = Pools.obtain(GlyphLayout.class, GlyphLayout::new); GlyphLayout lay = Pools.obtain(GlyphLayout.class, GlyphLayout::new);
font.getData().setScale(Scl.scl()); font.getData().setScale(Scl.scl());