overdraw refactoring

This commit is contained in:
sharlottes
2022-11-21 07:36:33 +09:00
parent 40cae93092
commit 4fd6d59753
32 changed files with 818 additions and 577 deletions

View File

@@ -1,6 +1,9 @@
package informatis.ui.windows;
import arc.Events;
import arc.scene.Element;
import arc.struct.ObjectMap;
import arc.struct.Seq;
import informatis.ui.*;
import informatis.draws.*;
import arc.math.geom.*;
@@ -12,9 +15,12 @@ import mindustry.gen.*;
import mindustry.graphics.*;
import mindustry.ui.*;
import static arc.Core.bundle;
import static arc.Core.settings;
public class ToolWindow extends Window {
Vec2 scrollPos = new Vec2(0, 0);
OverDraw selected;
OverDrawCategory selected;
float heat;
public ToolWindow() {
@@ -34,38 +40,69 @@ public class ToolWindow extends Window {
public void build(Table table) {
scrollPos = new Vec2(0, 0);
table.background(Styles.black8).top().left();
table.table(pane->{
table.background(Styles.black8)
.top()
.left();
table.table(pane -> {
pane.add(new OverScrollPane(rebuild(), Styles.noBarPane, scrollPos).disableScroll(true, false)).name("tool-pane");
}).top().marginLeft(4f).marginRight(12f);
table.table(stats->{
})
.top()
.marginLeft(4f)
.marginRight(12f);
table.table(stats -> {
stats.top();
stats.add(rebuildStats()).name("tool-stats");
}).growY();
}
Table rebuild() {
return new Table(icons->{
for(OverDraw draw : OverDraws.all) {
icons.button(draw.icon, ()->{
selected=draw;
return new Table(icons -> {
for(OverDrawCategory category : OverDrawCategory.values()) {
icons.button(category.icon, () -> {
selected = category;
Table table = find("tool-stats");
table.clearChildren();
table.add(rebuildStats());
}).grow().tooltip(t->t.background(Styles.black8).add(draw.name).color(Pal.accent)).row();
})
.grow()
.tooltip(t -> t
.background(Styles.black8)
.add(category.name)
.color(Pal.accent)
)
.row();
}
});
}
Table rebuildStats() {
return new Table(tool->{
if(selected==null) return;
return new Table(tool -> {
if(selected == null) return;
tool.top();
tool.table(Tex.underline2, label->label.add(selected.name).color(Pal.accent)).row();
tool.table(des-> selected.displayStats(des)).name("unit-stats").left().row();
tool.check("@mod.enable", selected.enabled, c->{
selected.enabled=c;
selected.onEnabled(find("unit-stats"));
tool.table(Tex.underline2, label ->
label.add(selected.name).color(Pal.accent)
).row();
tool.table(desc -> {
desc.background(Styles.squarei.up).left();
for(OverDraw draw : OverDraws.getDraws().get(selected, new Seq<>())) {
desc.check(bundle.get("setting."+draw.name+".name"), settings.getBool(draw.name), b->settings.put(draw.name, b))
.tooltip(t -> {
t.background(Styles.black8).add(bundle.get("setting."+draw.name+".description"));
})
.disabled(!selected.enabled)
.left()
.row();
}
})
.name("unit-stats")
.left()
.row();
tool.check("@mod.enable", selected.enabled, c -> {
selected.enabled = c;
Table table = find("unit-stats");
for (Element elem : table.getChildren()) {
if (elem instanceof CheckBox cb) cb.setDisabled(!c);
}
});
});
}