Fixed #11532
This commit is contained in:
@@ -239,10 +239,10 @@ public class Effect{
|
||||
|
||||
Decal decal = Decal.create();
|
||||
decal.set(x, y);
|
||||
decal.rotation(rotation);
|
||||
decal.lifetime(lifetime);
|
||||
decal.color().set(color);
|
||||
decal.region(region);
|
||||
decal.rotation = rotation;
|
||||
decal.lifetime = lifetime;
|
||||
decal.color.set(color);
|
||||
decal.region = region;
|
||||
decal.add();
|
||||
}
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ public class ModsDialog extends BaseDialog{
|
||||
private ObjectMap<String, TextureRegion> textureCache = new ObjectMap<>();
|
||||
|
||||
private float modImportProgress;
|
||||
private boolean cancelledImport;
|
||||
private String searchtxt = "";
|
||||
private @Nullable Seq<ModListing> modList;
|
||||
private boolean orderDate = true;
|
||||
@@ -643,9 +644,14 @@ public class ModsDialog extends BaseDialog{
|
||||
Floatc cons = len <= 0 ? f -> {} : p -> modImportProgress = p;
|
||||
|
||||
try(var stream = file.write(false)){
|
||||
Streams.copyProgress(result.getResultAsStream(), stream, len, 4096, cons);
|
||||
Streams.copyProgress(result.getResultAsStream(), stream, len, 4096, p -> {
|
||||
if(cancelledImport) throw new RuntimeException("cancelled");
|
||||
cons.get(p);
|
||||
});
|
||||
}
|
||||
|
||||
if(cancelledImport) return;
|
||||
|
||||
var mod = mods.importMod(file);
|
||||
mod.setRepo(repo);
|
||||
file.delete();
|
||||
@@ -659,6 +665,7 @@ public class ModsDialog extends BaseDialog{
|
||||
}
|
||||
});
|
||||
}catch(Throwable e){
|
||||
if(cancelledImport) return;
|
||||
modError(e);
|
||||
}
|
||||
}
|
||||
@@ -673,13 +680,19 @@ public class ModsDialog extends BaseDialog{
|
||||
|
||||
public void githubImportMod(String repo, boolean isJava, @Nullable String release){
|
||||
modImportProgress = 0f;
|
||||
cancelledImport = false;
|
||||
ui.loadfrag.show("@downloading");
|
||||
ui.loadfrag.setProgress(() -> modImportProgress);
|
||||
ui.loadfrag.setButton(() -> {
|
||||
ui.loadfrag.hide();
|
||||
cancelledImport = true;
|
||||
});
|
||||
|
||||
if(isJava){
|
||||
githubImportJavaMod(repo, release);
|
||||
}else{
|
||||
Http.get(ghApi + "/repos/" + repo, res -> {
|
||||
if(cancelledImport) return;
|
||||
var json = Jval.read(res.getResultAsString());
|
||||
String mainBranch = json.getString("default_branch");
|
||||
String language = json.getString("language", "<none>");
|
||||
@@ -708,6 +721,7 @@ public class ModsDialog extends BaseDialog{
|
||||
private void githubImportJavaMod(String repo, @Nullable String release){
|
||||
//grab latest release
|
||||
Http.get(ghApi + "/repos/" + repo + "/releases/" + (release == null ? "latest" : release), res -> {
|
||||
if(cancelledImport) return;
|
||||
var json = Jval.read(res.getResultAsString());
|
||||
var assets = json.get("assets").asArray();
|
||||
|
||||
@@ -719,7 +733,10 @@ public class ModsDialog extends BaseDialog{
|
||||
//grab actual file
|
||||
var url = asset.getString("browser_download_url");
|
||||
|
||||
Http.get(url, result -> handleMod(repo, result), this::importFail);
|
||||
Http.get(url, result -> {
|
||||
if(cancelledImport) return;
|
||||
handleMod(repo, result);
|
||||
}, this::importFail);
|
||||
}else{
|
||||
throw new ArcRuntimeException("No JAR file found in releases. Make sure you have a valid jar file in the mod's latest Github Release.");
|
||||
}
|
||||
@@ -729,10 +746,13 @@ public class ModsDialog extends BaseDialog{
|
||||
private void githubImportBranch(String branch, String repo, @Nullable String release){
|
||||
if(release != null) {
|
||||
Http.get(ghApi + "/repos/" + repo + "/releases/" + release, res -> {
|
||||
if(cancelledImport) return;
|
||||
String zipUrl = Jval.read(res.getResultAsString()).getString("zipball_url");
|
||||
Http.get(zipUrl, loc -> {
|
||||
if(cancelledImport) return;
|
||||
if(loc.getHeader("Location") != null){
|
||||
Http.get(loc.getHeader("Location"), result -> {
|
||||
if(cancelledImport) return;
|
||||
handleMod(repo, result);
|
||||
}, this::importFail);
|
||||
}else{
|
||||
@@ -742,8 +762,10 @@ public class ModsDialog extends BaseDialog{
|
||||
});
|
||||
}else{
|
||||
Http.get(ghApi + "/repos/" + repo + "/zipball/" + branch, loc -> {
|
||||
if(cancelledImport) return;
|
||||
if(loc.getHeader("Location") != null){
|
||||
Http.get(loc.getHeader("Location"), result -> {
|
||||
if(cancelledImport) return;
|
||||
handleMod(repo, result);
|
||||
}, this::importFail);
|
||||
}else{
|
||||
|
||||
@@ -4,11 +4,13 @@ import arc.*;
|
||||
import arc.func.*;
|
||||
import arc.graphics.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.input.*;
|
||||
import arc.scene.*;
|
||||
import arc.scene.actions.*;
|
||||
import arc.scene.event.*;
|
||||
import arc.scene.ui.*;
|
||||
import arc.scene.ui.layout.*;
|
||||
import arc.util.*;
|
||||
import mindustry.graphics.*;
|
||||
import mindustry.ui.*;
|
||||
|
||||
@@ -17,6 +19,7 @@ public class LoadingFragment{
|
||||
private TextButton button;
|
||||
private Bar bar;
|
||||
private Label nameLabel;
|
||||
private @Nullable Runnable cancelListener;
|
||||
private float progValue;
|
||||
|
||||
public void build(Group parent){
|
||||
@@ -40,7 +43,16 @@ public class LoadingFragment{
|
||||
|
||||
bar = t.add(new Bar()).pad(3).padTop(6).size(500f, 40f).visible(false).get();
|
||||
t.row();
|
||||
button = t.button("@cancel", () -> {}).pad(20).size(250f, 70f).visible(false).get();
|
||||
button = t.button("@cancel", () -> {
|
||||
if(cancelListener != null){
|
||||
cancelListener.run();
|
||||
}
|
||||
}).pad(20).size(250f, 70f).visible(false).get();
|
||||
button.keyDown(key -> {
|
||||
if(cancelListener != null && (key == KeyCode.back || key == KeyCode.escape)){
|
||||
cancelListener.run();
|
||||
}
|
||||
});
|
||||
table = t;
|
||||
});
|
||||
}
|
||||
@@ -68,8 +80,8 @@ public class LoadingFragment{
|
||||
|
||||
public void setButton(Runnable listener){
|
||||
button.visible = true;
|
||||
button.getListeners().remove(button.getListeners().size - 1);
|
||||
button.clicked(listener);
|
||||
button.requestKeyboard();
|
||||
cancelListener = listener;
|
||||
}
|
||||
|
||||
public void setText(String text){
|
||||
@@ -83,6 +95,7 @@ public class LoadingFragment{
|
||||
|
||||
public void show(String text){
|
||||
button.visible = false;
|
||||
cancelListener = null;
|
||||
nameLabel.setColor(Color.white);
|
||||
bar.visible = false;
|
||||
table.clearActions();
|
||||
|
||||
Reference in New Issue
Block a user