Random in-game music, untested

This commit is contained in:
Anuken
2019-08-10 18:56:20 -04:00
parent 4ef60af4a8
commit 2341da995e
10 changed files with 199 additions and 82 deletions
@@ -1,12 +1,14 @@
package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.collection.Array;
import io.anuke.arc.function.Predicate;
import io.anuke.arc.function.Supplier;
import io.anuke.arc.scene.ui.TextButton;
import io.anuke.arc.*;
import io.anuke.arc.collection.*;
import io.anuke.arc.function.*;
import io.anuke.arc.input.*;
import io.anuke.arc.scene.ui.*;
import io.anuke.arc.scene.ui.layout.*;
import io.anuke.mindustry.type.*;
import static io.anuke.mindustry.Vars.content;
import static io.anuke.mindustry.Vars.*;
public class LoadoutDialog extends FloatingDialog{
private Runnable hider;
@@ -14,24 +16,58 @@ public class LoadoutDialog extends FloatingDialog{
private Runnable resetter;
private Runnable updater;
private Predicate<Item> filter;
private Table items;
private int capacity;
public LoadoutDialog(){
super("$configure");
setFillParent(false);
addCloseButton();
setFillParent(true);
keyDown(key -> {
if(key == KeyCode.ESCAPE || key == KeyCode.BACK){
Core.app.post(this::hide);
}
});
cont.add(items = new Table()).left();
shown(this::setup);
hidden(() -> {
if(hider != null){
hider.run();
}
});
buttons.row();
buttons.addButton("$settings.reset", () -> {
cont.row();
cont.addButton("$add", () -> {
FloatingDialog dialog = new FloatingDialog("");
dialog.setFillParent(false);
for(Item item : content.items().select(item -> filter.test(item) && item.type == ItemType.material && supplier.get().find(stack -> stack.item == item) == null)){
TextButton button = dialog.cont.addButton("", "clear", () -> {
dialog.hide();
supplier.get().add(new ItemStack(item, 0));
updater.run();
setup();
}).size(300f, 36f).get();
button.clearChildren();
button.left();
button.addImage(item.icon(Item.Icon.medium)).size(8 * 3).pad(4);
button.add(item.localizedName);
dialog.cont.row();
}
dialog.show();
}).size(100f, 40).left().disabled(b -> !content.items().contains(item -> filter.test(item) && !supplier.get().contains(stack -> stack.item == item)));
cont.row();
cont.addButton("$settings.reset", () -> {
resetter.run();
updater.run();
setup();
}).size(210f, 64f);
cont.row();
cont.addImageTextButton("$back", "icon-arrow-left", iconsize, this::hide).size(210f, 64f);
}
public void show(int capacity, Supplier<Array<ItemStack>> supplier, Runnable reseter, Runnable updater, Runnable hider, Predicate<Item> filter){
@@ -45,50 +81,31 @@ public class LoadoutDialog extends FloatingDialog{
}
void setup(){
cont.clear();
items.clearChildren();
items.left();
float bsize = 40f;
int step = 50;
for(ItemStack stack : supplier.get()){
cont.addButton("x", "clear-partial", () -> {
items.addButton("x", "clear-partial", () -> {
supplier.get().remove(stack);
updater.run();
setup();
}).size(bsize);
cont.addButton("-", "clear-partial", () -> {
items.addButton("-", "clear-partial", () -> {
stack.amount = Math.max(stack.amount - step, 0);
updater.run();
}).size(bsize);
cont.addButton("+", "clear-partial", () -> {
items.addButton("+", "clear-partial", () -> {
stack.amount = Math.min(stack.amount + step, capacity);
updater.run();
}).size(bsize);
cont.addImage(stack.item.icon(Item.Icon.medium)).size(8 * 3).padRight(4);
cont.label(() -> stack.amount + "").left();
items.addImage(stack.item.icon(Item.Icon.medium)).size(8 * 3).padRight(4).padLeft(4);
items.label(() -> stack.amount + "").left();
cont.row();
items.row();
}
cont.addButton("$add", () -> {
FloatingDialog dialog = new FloatingDialog("");
dialog.setFillParent(false);
for(Item item : content.items().select(item -> filter.test(item) && item.type == ItemType.material && supplier.get().find(stack -> stack.item == item) == null)){
TextButton button = dialog.cont.addButton("", "clear", () -> {
supplier.get().add(new ItemStack(item, 0));
updater.run();
setup();
dialog.hide();
}).size(300f, 36f).get();
button.clearChildren();
button.left();
button.addImage(item.icon(Item.Icon.medium)).size(8 * 3).pad(4);
button.add(item.localizedName);
dialog.cont.row();
}
dialog.show();
}).colspan(4).size(100f, bsize).left().disabled(b -> !content.items().contains(item -> filter.test(item) && !supplier.get().contains(stack -> stack.item == item)));
pack();
}
}