From 89a5c957fdf8b6b84dc1cb512143e55bf1242293 Mon Sep 17 00:00:00 2001 From: Anuken Date: Thu, 5 Mar 2020 15:58:10 -0500 Subject: [PATCH 1/7] add mod name to js print() (#1677) * add mod name to js print() * add mod name to errors --- core/assets/scripts/base.js | 2 +- core/src/mindustry/mod/Scripts.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/core/assets/scripts/base.js b/core/assets/scripts/base.js index 3721b5b165..d078e27b89 100755 --- a/core/assets/scripts/base.js +++ b/core/assets/scripts/base.js @@ -5,7 +5,7 @@ const log = function(context, obj){ var scriptName = "base.js" var modName = "none" -const print = text => log(scriptName, text); +const print = text => log(modName + "/" + scriptName, text); const extendContent = function(classType, name, params){ return new JavaAdapter(classType, params, name) diff --git a/core/src/mindustry/mod/Scripts.java b/core/src/mindustry/mod/Scripts.java index 69f272595c..7c2bde72e2 100644 --- a/core/src/mindustry/mod/Scripts.java +++ b/core/src/mindustry/mod/Scripts.java @@ -91,6 +91,9 @@ public class Scripts implements Disposable{ context.evaluateString(scope, script, file, 1, null); return true; }catch(Throwable t){ + if(currentMod != null){ + file = currentMod.name + "/" + file; + } log(LogLevel.err, file, "" + getError(t)); return false; } From 8b3d64a29afd5192e73952a6cc446e0e44ec1ba2 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sat, 7 Mar 2020 14:36:47 -0500 Subject: [PATCH 2/7] Better error detection --- desktop/src/mindustry/desktop/DesktopLauncher.java | 5 +++-- gradle.properties | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/desktop/src/mindustry/desktop/DesktopLauncher.java b/desktop/src/mindustry/desktop/DesktopLauncher.java index 925a77aefb..6c54691e0f 100644 --- a/desktop/src/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/mindustry/desktop/DesktopLauncher.java @@ -180,9 +180,10 @@ public class DesktopLauncher extends ClientLauncher{ static void handleCrash(Throwable e){ Cons dialog = Runnable::run; boolean badGPU = false; + String total = Strings.getCauses(e).toString(); - if(e.getMessage() != null && (e.getMessage().contains("Couldn't create window") || - e.getMessage().contains("OpenGL 2.0 or higher") || e.getMessage().toLowerCase().contains("pixel format") || e.getMessage().contains("GLEW"))){ + if(total.contains("Couldn't create window") || + total.contains("OpenGL 2.0 or higher") || total.toLowerCase().contains("pixel format") || total.contains("GLEW")){ dialog.get(() -> message( e.getMessage().contains("Couldn't create window") ? "A graphics initialization error has occured! Try to update your graphics drivers:\n" + e.getMessage() : diff --git a/gradle.properties b/gradle.properties index 9a6d877821..79495ee591 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=69ef047313449905aff6d1390d7136f9c7cdc986 +archash=c1eab295b1a55397957fd54bec2f37daee0e8b4b From 9ef394a99ea06b5e39e9208839e946a8602afd63 Mon Sep 17 00:00:00 2001 From: DeltaNedas <39013340+DeltaNedas@users.noreply.github.com> Date: Sun, 8 Mar 2020 03:47:12 +0000 Subject: [PATCH 3/7] set current mod to required mod (#1684) or you will need to prefix mod name in requires of the required mod instead you now need to prefix current mods name after youve required from another mod --- core/src/mindustry/mod/Scripts.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/src/mindustry/mod/Scripts.java b/core/src/mindustry/mod/Scripts.java index 7c2bde72e2..1e1e5cb325 100644 --- a/core/src/mindustry/mod/Scripts.java +++ b/core/src/mindustry/mod/Scripts.java @@ -127,6 +127,8 @@ public class Scripts implements Disposable{ if(!dir.exists()) return null; // Mod and folder not found return loadSource(script, dir, validator); } + + currentMod = required; return loadSource(script, required.root.child("scripts"), validator); } From d7f9090c0bb009ffbb1da6058164913b94404703 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 9 Mar 2020 09:41:39 -0400 Subject: [PATCH 4/7] Fixed #1672 --- core/assets/bundles/bundle.properties | 2 ++ core/src/mindustry/input/InputHandler.java | 17 +++++++++++++---- .../mindustry/ui/dialogs/SchematicsDialog.java | 7 +++++++ gradle.properties | 2 +- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 1d84a3c859..6a478b6c54 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -39,6 +39,8 @@ be.check = Check for updates schematic = Schematic schematic.add = Save Schematic... schematics = Schematics +schematic.replace = A schematic by that name already exists. Replace it? +schematic.exists = A schematic by that name already exists. schematic.import = Import Schematic... schematic.exportfile = Export File schematic.importfile = Import File diff --git a/core/src/mindustry/input/InputHandler.java b/core/src/mindustry/input/InputHandler.java index 611cec44b6..cd2f3d6d6b 100644 --- a/core/src/mindustry/input/InputHandler.java +++ b/core/src/mindustry/input/InputHandler.java @@ -255,10 +255,19 @@ public abstract class InputHandler implements InputProcessor, GestureListener{ if(lastSchematic == null) return; ui.showTextInput("$schematic.add", "$name", "", text -> { - lastSchematic.tags.put("name", text); - schematics.add(lastSchematic); - ui.showInfoFade("$schematic.saved"); - ui.schematics.showInfo(lastSchematic); + Schematic replacement = schematics.all().find(s -> s.name().equals(text)); + if(replacement != null){ + ui.showConfirm("$confirm", "$schematic.replace", () -> { + schematics.overwrite(replacement, lastSchematic); + ui.showInfoFade("$schematic.saved"); + ui.schematics.showInfo(replacement); + }); + }else{ + lastSchematic.tags.put("name", text); + schematics.add(lastSchematic); + ui.showInfoFade("$schematic.saved"); + ui.schematics.showInfo(lastSchematic); + } }); } diff --git a/core/src/mindustry/ui/dialogs/SchematicsDialog.java b/core/src/mindustry/ui/dialogs/SchematicsDialog.java index fb29f9fa8e..5a67dacd58 100644 --- a/core/src/mindustry/ui/dialogs/SchematicsDialog.java +++ b/core/src/mindustry/ui/dialogs/SchematicsDialog.java @@ -90,6 +90,13 @@ public class SchematicsDialog extends FloatingDialog{ buttons.addImageButton(Icon.pencil, style, () -> { ui.showTextInput("$schematic.rename", "$name", s.name(), res -> { + Schematic replacement = schematics.all().find(other -> other.name().equals(res) && other != s); + if(replacement != null){ + //renaming to an existing schematic is not allowed, as it is not clear how the tags would be merged, and which one should be removed + ui.showErrorMessage("$schematic.exists"); + return; + } + s.tags.put("name", res); s.save(); rebuildPane[0].run(); diff --git a/gradle.properties b/gradle.properties index 79495ee591..1aeb38a829 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=c1eab295b1a55397957fd54bec2f37daee0e8b4b +archash=b8f094ba9916ba5a0ce5b4c9dc0fc3d2d0cf89fd From 8550995c4e9f886e702aad35c0689cf268b20fd1 Mon Sep 17 00:00:00 2001 From: Anuken Date: Tue, 10 Mar 2020 19:51:31 -0400 Subject: [PATCH 5/7] Fixed compilation --- .../{alpha_bloom.fragment.glsl => alpha_bloom.frag} | 0 .../{alpha_gaussian.fragment.glsl => alpha_gaussian.frag} | 0 .../{alpha_threshold.fragment.glsl => alpha_threshold.frag} | 0 core/assets/bloomshaders/{bloom.fragment.glsl => bloom.frag} | 0 .../bloomshaders/{blurspace.vertex.glsl => blurspace.vert} | 0 .../bloomshaders/{gaussian.fragment.glsl => gaussian.frag} | 0 .../{maskedtreshold.fragment.glsl => maskedtreshold.frag} | 0 .../{screenspace.vertex.glsl => screenspace.vert} | 0 .../bloomshaders/{threshold.fragment.glsl => threshold.frag} | 0 core/src/mindustry/graphics/IndexedRenderer.java | 5 +---- gradle.properties | 2 +- 11 files changed, 2 insertions(+), 5 deletions(-) rename core/assets/bloomshaders/{alpha_bloom.fragment.glsl => alpha_bloom.frag} (100%) rename core/assets/bloomshaders/{alpha_gaussian.fragment.glsl => alpha_gaussian.frag} (100%) rename core/assets/bloomshaders/{alpha_threshold.fragment.glsl => alpha_threshold.frag} (100%) rename core/assets/bloomshaders/{bloom.fragment.glsl => bloom.frag} (100%) rename core/assets/bloomshaders/{blurspace.vertex.glsl => blurspace.vert} (100%) rename core/assets/bloomshaders/{gaussian.fragment.glsl => gaussian.frag} (100%) rename core/assets/bloomshaders/{maskedtreshold.fragment.glsl => maskedtreshold.frag} (100%) rename core/assets/bloomshaders/{screenspace.vertex.glsl => screenspace.vert} (100%) rename core/assets/bloomshaders/{threshold.fragment.glsl => threshold.frag} (100%) diff --git a/core/assets/bloomshaders/alpha_bloom.fragment.glsl b/core/assets/bloomshaders/alpha_bloom.frag similarity index 100% rename from core/assets/bloomshaders/alpha_bloom.fragment.glsl rename to core/assets/bloomshaders/alpha_bloom.frag diff --git a/core/assets/bloomshaders/alpha_gaussian.fragment.glsl b/core/assets/bloomshaders/alpha_gaussian.frag similarity index 100% rename from core/assets/bloomshaders/alpha_gaussian.fragment.glsl rename to core/assets/bloomshaders/alpha_gaussian.frag diff --git a/core/assets/bloomshaders/alpha_threshold.fragment.glsl b/core/assets/bloomshaders/alpha_threshold.frag similarity index 100% rename from core/assets/bloomshaders/alpha_threshold.fragment.glsl rename to core/assets/bloomshaders/alpha_threshold.frag diff --git a/core/assets/bloomshaders/bloom.fragment.glsl b/core/assets/bloomshaders/bloom.frag similarity index 100% rename from core/assets/bloomshaders/bloom.fragment.glsl rename to core/assets/bloomshaders/bloom.frag diff --git a/core/assets/bloomshaders/blurspace.vertex.glsl b/core/assets/bloomshaders/blurspace.vert similarity index 100% rename from core/assets/bloomshaders/blurspace.vertex.glsl rename to core/assets/bloomshaders/blurspace.vert diff --git a/core/assets/bloomshaders/gaussian.fragment.glsl b/core/assets/bloomshaders/gaussian.frag similarity index 100% rename from core/assets/bloomshaders/gaussian.fragment.glsl rename to core/assets/bloomshaders/gaussian.frag diff --git a/core/assets/bloomshaders/maskedtreshold.fragment.glsl b/core/assets/bloomshaders/maskedtreshold.frag similarity index 100% rename from core/assets/bloomshaders/maskedtreshold.fragment.glsl rename to core/assets/bloomshaders/maskedtreshold.frag diff --git a/core/assets/bloomshaders/screenspace.vertex.glsl b/core/assets/bloomshaders/screenspace.vert similarity index 100% rename from core/assets/bloomshaders/screenspace.vertex.glsl rename to core/assets/bloomshaders/screenspace.vert diff --git a/core/assets/bloomshaders/threshold.fragment.glsl b/core/assets/bloomshaders/threshold.frag similarity index 100% rename from core/assets/bloomshaders/threshold.fragment.glsl rename to core/assets/bloomshaders/threshold.frag diff --git a/core/src/mindustry/graphics/IndexedRenderer.java b/core/src/mindustry/graphics/IndexedRenderer.java index cb42b6fe0b..96194c0883 100644 --- a/core/src/mindustry/graphics/IndexedRenderer.java +++ b/core/src/mindustry/graphics/IndexedRenderer.java @@ -60,16 +60,13 @@ public class IndexedRenderer implements Disposable{ updateMatrix(); - program.begin(); - + program.bind(); texture.bind(); program.setUniformMatrix4("u_projTrans", BatchShader.copyTransform(combined)); program.setUniformi("u_texture", 0); mesh.render(program, Gl.triangles, 0, vertices.length / vsize); - - program.end(); } public void setColor(Color color){ diff --git a/gradle.properties b/gradle.properties index 1aeb38a829..1bbf7facaa 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=b8f094ba9916ba5a0ce5b4c9dc0fc3d2d0cf89fd +archash=3c2fae9b66b6affc1ba6701cce19ca9625c5e1b1 From 6079980a507da5cafb2f5c2cdd2c43aa78915d14 Mon Sep 17 00:00:00 2001 From: Anuken Date: Sun, 15 Mar 2020 09:08:27 -0400 Subject: [PATCH 6/7] Fixed content loading crash --- core/src/mindustry/core/ContentLoader.java | 4 ++++ gradle.properties | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/core/src/mindustry/core/ContentLoader.java b/core/src/mindustry/core/ContentLoader.java index dc1e21e917..fe81b7ce59 100644 --- a/core/src/mindustry/core/ContentLoader.java +++ b/core/src/mindustry/core/ContentLoader.java @@ -1,5 +1,6 @@ package mindustry.core; +import arc.files.*; import arc.struct.*; import arc.func.*; import arc.graphics.*; @@ -182,6 +183,9 @@ public class ContentLoader{ } if(currentMod != null){ content.minfo.mod = currentMod; + if(content.minfo.sourceFile == null){ + content.minfo.sourceFile = new Fi(content.name); + } } contentNameMap[content.getContentType().ordinal()].put(content.name, content); } diff --git a/gradle.properties b/gradle.properties index 1bbf7facaa..3b4da6f663 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ org.gradle.daemon=true org.gradle.jvmargs=-Xms256m -Xmx1024m -archash=3c2fae9b66b6affc1ba6701cce19ca9625c5e1b1 +archash=31a5158c6395b7e905ba546348c98fd99ea736bb From ec34e2710248850bf008155f724c9d63d8c8ead4 Mon Sep 17 00:00:00 2001 From: ma44 Date: Sun, 15 Mar 2020 13:02:47 -0500 Subject: [PATCH 7/7] map setting refund (#1709) --- core/assets/bundles/bundle.properties | 1 + core/src/mindustry/game/Rules.java | 2 ++ core/src/mindustry/ui/dialogs/CustomRulesDialog.java | 1 + core/src/mindustry/world/blocks/BuildBlock.java | 2 +- 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 6a478b6c54..18f29046d4 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -777,6 +777,7 @@ rules.respawntime = Respawn Time:[lightgray] (sec) rules.wavespacing = Wave Spacing:[lightgray] (sec) rules.buildcostmultiplier = Build Cost Multiplier rules.buildspeedmultiplier = Build Speed Multiplier +rules.deconstructrefundmultiplier = Deconstruct Refund Multiplier rules.waitForWaveToEnd = Waves Wait for Enemies rules.dropzoneradius = Drop Zone Radius:[lightgray] (tiles) rules.respawns = Max respawns per wave diff --git a/core/src/mindustry/game/Rules.java b/core/src/mindustry/game/Rules.java index ff946e359c..b1cca11316 100644 --- a/core/src/mindustry/game/Rules.java +++ b/core/src/mindustry/game/Rules.java @@ -44,6 +44,8 @@ public class Rules{ public float buildCostMultiplier = 1f; /** Multiplier for building speed. */ public float buildSpeedMultiplier = 1f; + /** Multiplier for percentage of materials refunded when deconstructing */ + public float deconstructRefundMultiplier = 0.5f; /** No-build zone around enemy core radius. */ public float enemyCoreBuildRadius = 400f; /** Radius around enemy wave drop zones.*/ diff --git a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java index 42ae294123..341368a51c 100644 --- a/core/src/mindustry/ui/dialogs/CustomRulesDialog.java +++ b/core/src/mindustry/ui/dialogs/CustomRulesDialog.java @@ -142,6 +142,7 @@ public class CustomRulesDialog extends FloatingDialog{ check("$rules.reactorexplosions", b -> rules.reactorExplosions = b, () -> rules.reactorExplosions); number("$rules.buildcostmultiplier", false, f -> rules.buildCostMultiplier = f, () -> rules.buildCostMultiplier, () -> !rules.infiniteResources); number("$rules.buildspeedmultiplier", f -> rules.buildSpeedMultiplier = f, () -> rules.buildSpeedMultiplier); + number("$rules.deconstructrefundmultiplier", false, f -> rules.deconstructRefundMultiplier = f, () -> rules.deconstructRefundMultiplier, () -> !rules.infiniteResources); number("$rules.blockhealthmultiplier", f -> rules.blockHealthMultiplier = f, () -> rules.blockHealthMultiplier); main.addButton("$configure", diff --git a/core/src/mindustry/world/blocks/BuildBlock.java b/core/src/mindustry/world/blocks/BuildBlock.java index 19969df254..359d37d567 100644 --- a/core/src/mindustry/world/blocks/BuildBlock.java +++ b/core/src/mindustry/world/blocks/BuildBlock.java @@ -252,7 +252,7 @@ public class BuildBlock extends Block{ } public void deconstruct(Unit builder, @Nullable TileEntity core, float amount){ - float deconstructMultiplier = 0.5f; + float deconstructMultiplier = state.rules.deconstructRefundMultiplier; if(cblock != null){ ItemStack[] requirements = cblock.requirements;