From ee01e3656066179fc689d9585e481e06e49caf1e Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 2 Sep 2024 14:16:39 -0400 Subject: [PATCH] Stained mountains remake submission / WIP wave graph improvements --- README.md | 2 +- core/assets/maps/stainedMountains.msav | Bin 18213 -> 18935 bytes core/src/mindustry/Vars.java | 2 +- core/src/mindustry/editor/WaveGraph.java | 27 +++++++++++++++++- core/src/mindustry/editor/WaveInfoDialog.java | 14 +++++++++ core/src/mindustry/mod/Mods.java | 7 +++-- gradle/wrapper/gradle-wrapper.properties | 2 +- server/build.gradle | 2 ++ settings.gradle | 4 +-- 9 files changed, 51 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 9624632b29..095c70ed3a 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ See [CONTRIBUTING](CONTRIBUTING.md). Bleeding-edge builds are generated automatically for every commit. You can see them [here](https://github.com/Anuken/MindustryBuilds/releases). If you'd rather compile on your own, follow these instructions. -First, make sure you have [JDK 16-17](https://adoptium.net/archive.html?variant=openjdk17&jvmVariant=hotspot) installed. **Other JDK versions will not work.** Open a terminal in the Mindustry directory and run the following commands: +First, make sure you have [JDK 17](https://adoptium.net/archive.html?variant=openjdk17&jvmVariant=hotspot) installed. **Other JDK versions will not work.** Open a terminal in the Mindustry directory and run the following commands: ### Windows diff --git a/core/assets/maps/stainedMountains.msav b/core/assets/maps/stainedMountains.msav index ee28f1dc237d8989cbed6edd71bfb60bd389720e..af8a2b8e3b7261592527f588f22792f9abecdb26 100644 GIT binary patch literal 18935 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 WLk6-I_b>ha2Uh>gzyAw>tIXb*RN>bE literal 18213 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

9+4s;+ABh+-At`Qw@BF3 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 hidden = new ObjectSet<>(); + private StringBuilder countStr = new StringBuilder(); public WaveGraph(){ background(Tex.pane); rect((x, y, width, height) -> { Lines.stroke(Scl.scl(3f)); + countStr.setLength(0); + + Vec2 mouse = stageToLocalCoordinates(Core.input.mouse()); GlyphLayout lay = Pools.obtain(GlyphLayout.class, GlyphLayout::new); Font font = Fonts.outline; @@ -50,6 +56,8 @@ public class WaveGraph extends Table{ float graphX = x + offsetX, graphY = y + offsetY, graphW = width - offsetX, graphH = height - offsetY; float spacing = graphW / (values.length - 1); + int selcol = Rect.contains(x, y, width, height, mouse.x, mouse.y) ? Mathf.round((mouse.x - graphX) / spacing) : -1; + if(mode == Mode.counts){ for(UnitType type : used.orderedItems()){ Draw.color(color(type)); @@ -97,6 +105,23 @@ public class WaveGraph extends Table{ Lines.endLine(); } + + if(selcol >= 0 && selcol < values.length){ + Draw.color(1f, 0f, 0f, 0.2f); + Fill.crect(selcol * spacing + graphX - spacing/2f, graphY, spacing, graphH); + Draw.color(); + font.getData().setScale(1.5f); + for(UnitType type : used.orderedItems()){ + int amount = values[Mathf.clamp(selcol, 0, values.length - 1)][type.id]; + if(amount > 0){ + countStr.append(type.emoji()).append(" ").append(amount).append("\n"); + } + } + float pad = Scl.scl(5f); + font.draw(countStr, selcol * spacing + graphX - spacing/2f + pad, graphY + graphH - pad); + font.getData().setScale(1f); + } + //how many numbers can fit here float totalMarks = Mathf.clamp(maxY, 1, 10); @@ -123,7 +148,7 @@ public class WaveGraph extends Table{ float cy = y + fh, cx = graphX + graphW / (values.length - 1) * i; Lines.line(cx, cy, cx, cy + len); - if(i == values.length / 2){ + if(i == selcol){ font.draw("" + (i + from + 1), cx, cy - Scl.scl(2f), Align.center); } } diff --git a/core/src/mindustry/editor/WaveInfoDialog.java b/core/src/mindustry/editor/WaveInfoDialog.java index d3f2e7ca6e..ca4a24404d 100644 --- a/core/src/mindustry/editor/WaveInfoDialog.java +++ b/core/src/mindustry/editor/WaveInfoDialog.java @@ -6,6 +6,7 @@ import arc.graphics.*; import arc.input.*; import arc.math.*; import arc.math.geom.*; +import arc.scene.*; import arc.scene.event.*; import arc.scene.style.*; import arc.scene.ui.*; @@ -201,6 +202,19 @@ public class WaveInfoDialog extends BaseDialog{ cont.add(graph = new WaveGraph()).grow(); + graph.scrolled((scroll) -> { + view(Mathf.sign(scroll)); + }); + + graph.touchable = Touchable.enabled; + graph.addListener(new InputListener(){ + + @Override + public void enter(InputEvent event, float x, float y, int pointer, Element fromActor){ + graph.requestScroll(); + } + }); + buildGroups(); } diff --git a/core/src/mindustry/mod/Mods.java b/core/src/mindustry/mod/Mods.java index 3ece15b1d9..9fa83c39ee 100644 --- a/core/src/mindustry/mod/Mods.java +++ b/core/src/mindustry/mod/Mods.java @@ -62,12 +62,13 @@ public class Mods implements Loadable{ return mainLoader; } - /** @return the folder where configuration files for this mod should go. The folder may not exist yet; call mkdirs() before writing to it. - * Call this in init(). */ + /** @return the folder where configuration files for this mod should go. Call this in init(). */ public Fi getConfigFolder(Mod mod){ ModMeta load = metas.get(mod.getClass()); if(load == null) throw new IllegalArgumentException("Mod is not loaded yet (or missing)!"); - return modDirectory.child(load.name); + Fi result = modDirectory.child(load.name); + result.mkdirs(); + return result; } /** @return a file named 'config.json' in the config folder for the specified mod. diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0d1842103b..e1adfb4938 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/server/build.gradle b/server/build.gradle index 7359fdac3c..f348e41dbf 100644 --- a/server/build.gradle +++ b/server/build.gradle @@ -47,6 +47,8 @@ task dist(type: Jar, dependsOn: configurations.runtimeClasspath){ exclude("icons/icon.ico") exclude("icons/icon_64.png") + duplicatesStrategy = 'exclude' + manifest{ attributes 'Main-Class': project.mainClassName } diff --git a/settings.gradle b/settings.gradle index b74305dad2..dafd6bdf99 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,5 +1,5 @@ -if(JavaVersion.current().ordinal() < JavaVersion.VERSION_16.ordinal()){ - throw new Exception("!!! YOU MUST USE JAVA 16 OR ABOVE TO COMPILE AND RUN MINDUSTRY !!! Read the README. Your version: ${System.properties["java.version"]}") +if(JavaVersion.current().ordinal() < JavaVersion.VERSION_17.ordinal()){ + throw new Exception("!!! YOU MUST USE JAVA 17 OR ABOVE TO COMPILE AND RUN MINDUSTRY !!! Read the README. Your version: ${System.properties["java.version"]}") } include 'desktop', 'core', 'server', 'ios', 'annotations', 'tools', 'tests'