Cleaner feedback dialog
This commit is contained in:
@@ -185,8 +185,9 @@ mod.scripts.disable = Your device does not support mods with scripts. You must d
|
|||||||
|
|
||||||
mod.dependencies.error = [scarlet]Mods are missing dependencies
|
mod.dependencies.error = [scarlet]Mods are missing dependencies
|
||||||
mod.dependencies.download = Download
|
mod.dependencies.download = Download
|
||||||
mod.dependencies.success = Successfully downloaded all dependencies
|
mod.dependencies.status = Import Results
|
||||||
mod.dependencies.failure = Failed to download some dependencies:
|
mod.dependencies.success = Successfully downloaded:
|
||||||
|
mod.dependencies.failure = Failed to download:
|
||||||
|
|
||||||
about.button = About
|
about.button = About
|
||||||
name = Name:
|
name = Name:
|
||||||
|
|||||||
@@ -429,13 +429,9 @@ public class UI implements ApplicationListener, Loadable{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void showInfoOnHidden(String info, Runnable listener){
|
public void showInfoOnHidden(String info, Runnable listener){
|
||||||
showInfoOnHidden(info, Align.center, listener);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void showInfoOnHidden(String info, int align, Runnable listener){
|
|
||||||
new Dialog(""){{
|
new Dialog(""){{
|
||||||
getCell(cont).growX();
|
getCell(cont).growX();
|
||||||
cont.margin(15).add(info).width(400f).wrap().get().setAlignment(align, align);
|
cont.margin(15).add(info).width(400f).wrap().get().setAlignment(Align.center, Align.center);
|
||||||
buttons.button("@ok", this::hide).size(110, 50).pad(4);
|
buttons.button("@ok", this::hide).size(110, 50).pad(4);
|
||||||
hidden(listener);
|
hidden(listener);
|
||||||
closeOnBack();
|
closeOnBack();
|
||||||
|
|||||||
@@ -615,7 +615,7 @@ public class Mods implements Loadable{
|
|||||||
cont.row();
|
cont.row();
|
||||||
cont.image().width(300f).pad(2).colspan(2).height(4f).color(Color.scarlet);
|
cont.image().width(300f).pad(2).colspan(2).height(4f).color(Color.scarlet);
|
||||||
cont.row();
|
cont.row();
|
||||||
cont.add("@mod.errors").wrap().growX().center().get().setAlignment(Align.center);
|
cont.add("@mod.errors").wrap().growX().center().labelAlign(Align.center);
|
||||||
cont.row();
|
cont.row();
|
||||||
cont.pane(p -> {
|
cont.pane(p -> {
|
||||||
mods.each(m -> m.enabled() && m.hasContentErrors(), m -> {
|
mods.each(m -> m.enabled() && m.hasContentErrors(), m -> {
|
||||||
@@ -655,18 +655,18 @@ public class Mods implements Loadable{
|
|||||||
cont.margin(15);
|
cont.margin(15);
|
||||||
cont.add("@mod.dependencies.error");
|
cont.add("@mod.dependencies.error");
|
||||||
cont.row();
|
cont.row();
|
||||||
cont.image().width(300f).pad(2).colspan(2).height(4f).color(Color.scarlet);
|
cont.image().width(300f).pad(2).height(4f).color(Color.scarlet);
|
||||||
cont.row();
|
cont.row();
|
||||||
cont.pane(p -> {
|
cont.pane(p -> {
|
||||||
mods.each(LoadedMod::hasUnmetDependencies, mod -> {
|
mods.each(LoadedMod::hasUnmetDependencies, mod -> {
|
||||||
p.add(mod.name).wrap().growX().left().get().setAlignment(Align.left);
|
p.add(mod.name).wrap().growX().left().labelAlign(Align.left);
|
||||||
p.row();
|
p.row();
|
||||||
p.table(d -> {
|
p.table(d -> {
|
||||||
mod.missingDependencies.each(dep -> {
|
mod.missingDependencies.each(dep -> {
|
||||||
d.add(" " + dep).wrap().growX().left().get().setAlignment(Align.left);
|
d.add(dep).wrap().growX().left().labelAlign(Align.left);
|
||||||
d.row();
|
d.row();
|
||||||
});
|
});
|
||||||
}).growX().padBottom(8f);
|
}).growX().padBottom(8f).padLeft(12f);
|
||||||
p.row();
|
p.row();
|
||||||
});
|
});
|
||||||
}).fillX();
|
}).fillX();
|
||||||
@@ -677,40 +677,67 @@ public class Mods implements Loadable{
|
|||||||
b.button("@ok", this::hide).size(150, 50);
|
b.button("@ok", this::hide).size(150, 50);
|
||||||
b.button("@mod.dependencies.download", () -> {
|
b.button("@mod.dependencies.download", () -> {
|
||||||
hide();
|
hide();
|
||||||
Seq<String> missingDeps = new Seq<>();
|
Seq<String> toImport = new Seq<>();
|
||||||
mods.each(LoadedMod::hasUnmetDependencies, mod -> {
|
mods.each(LoadedMod::hasUnmetDependencies, mod -> {
|
||||||
mod.missingDependencies.each(missingDeps::addUnique);
|
mod.missingDependencies.each(toImport::addUnique);
|
||||||
});
|
});
|
||||||
int toImport = missingDeps.size;
|
Seq<String> remaining = toImport.copy();
|
||||||
ui.mods.importDependencies(missingDeps);
|
ui.mods.importDependencies(remaining);
|
||||||
|
toImport.removeAll(remaining);
|
||||||
if(missingDeps.isEmpty()){
|
displayDependencyImportStatus(remaining, toImport);
|
||||||
ui.showInfoOnHidden(Core.bundle.get("mod.dependencies.success") + "\n\n" + Core.bundle.get("mods.reloadexit"), () -> {
|
|
||||||
Log.info("Exiting to reload mods.");
|
|
||||||
Core.app.exit();
|
|
||||||
});
|
|
||||||
}else{
|
|
||||||
String[] fail = {Core.bundle.get("mod.dependencies.failure")};
|
|
||||||
missingDeps.each(d -> fail[0] += "\n " + d);
|
|
||||||
|
|
||||||
boolean imported = missingDeps.size < toImport; //Mods were loaded
|
|
||||||
if(imported){
|
|
||||||
fail[0] += "\n\n" + Core.bundle.get("mods.reloadexit");
|
|
||||||
}
|
|
||||||
|
|
||||||
ui.showInfoOnHidden(fail[0], Align.left, () -> {
|
|
||||||
if(imported){
|
|
||||||
Log.info("Exiting to reload mods.");
|
|
||||||
Core.app.exit();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}).size(150, 50);
|
}).size(150, 50);
|
||||||
});
|
});
|
||||||
}}.show();
|
}}.show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void displayDependencyImportStatus(Seq<String> failed, Seq<String> success){
|
||||||
|
new Dialog(""){{
|
||||||
|
setFillParent(true);
|
||||||
|
cont.margin(15);
|
||||||
|
|
||||||
|
cont.add("@mod.dependencies.status").center();
|
||||||
|
cont.row();
|
||||||
|
cont.image().width(300f).pad(2).height(4f).color(Color.lightGray);
|
||||||
|
cont.row();
|
||||||
|
|
||||||
|
cont.pane(p -> {
|
||||||
|
if(success.any()){
|
||||||
|
p.add("@mod.dependencies.success").wrap().fillX().left().labelAlign(Align.left);
|
||||||
|
p.row();
|
||||||
|
p.table(t -> {
|
||||||
|
success.each(d -> {
|
||||||
|
t.add(d).wrap().growX().left().labelAlign(Align.left);
|
||||||
|
t.row();
|
||||||
|
});
|
||||||
|
}).growX().padBottom(8f).padLeft(12f);
|
||||||
|
p.row();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(failed.any()){
|
||||||
|
p.add("@mod.dependencies.failure").wrap().fillX().left().labelAlign(Align.left);
|
||||||
|
p.row();
|
||||||
|
p.table(t -> {
|
||||||
|
failed.each(d -> {
|
||||||
|
t.add(d).wrap().growX().left().labelAlign(Align.left);
|
||||||
|
t.row();
|
||||||
|
});
|
||||||
|
}).growX().padBottom(8f).padLeft(12f);
|
||||||
|
}
|
||||||
|
}).fillX();
|
||||||
|
|
||||||
|
if(success.any()){
|
||||||
|
cont.image().width(300f).pad(2).height(4f).color(Color.lightGray);
|
||||||
|
cont.row();
|
||||||
|
cont.add("@mods.reloadexit").center();
|
||||||
|
hidden(() -> {
|
||||||
|
Log.info("Exiting to reload mods after dependency auto-import.");
|
||||||
|
Core.app.exit();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}}.show();
|
||||||
|
}
|
||||||
|
|
||||||
private void reload(){
|
private void reload(){
|
||||||
ui.showInfoOnHidden("@mods.reloadexit", () -> {
|
ui.showInfoOnHidden("@mods.reloadexit", () -> {
|
||||||
Log.info("Exiting to reload mods.");
|
Log.info("Exiting to reload mods.");
|
||||||
|
|||||||
Reference in New Issue
Block a user