Public block fields / Better scripting
This commit is contained in:
@@ -297,7 +297,7 @@ task pack(dependsOn: classes){
|
||||
//run generation task; generate all needed sprites
|
||||
file(genFolder).mkdirs()
|
||||
javaexec{
|
||||
main = "io.anuke.mindustry.ImagePacker"
|
||||
main = "io.anuke.mindustry.tools.ImagePacker"
|
||||
classpath = sourceSets.main.runtimeClasspath
|
||||
standardInput = System.in
|
||||
workingDir = genFolder
|
||||
@@ -310,7 +310,7 @@ task pack(dependsOn: classes){
|
||||
}
|
||||
|
||||
jvmArgs("-Djava.awt.headless=true")
|
||||
main = "io.anuke.mindustry.Upscaler"
|
||||
main = "io.anuke.mindustry.tools.Upscaler"
|
||||
classpath = sourceSets.main.runtimeClasspath
|
||||
standardInput = System.in
|
||||
workingDir = "../core/assets-raw/sprites_out/ui/icons"
|
||||
@@ -351,7 +351,7 @@ task pack(dependsOn: classes){
|
||||
task genSprites(dependsOn: classes, type: JavaExec){
|
||||
finalizedBy 'antialiasGen'
|
||||
|
||||
main = "io.anuke.mindustry.ImagePacker"
|
||||
main = "io.anuke.mindustry.tools.ImagePacker"
|
||||
classpath = sourceSets.main.runtimeClasspath
|
||||
jvmArgs("-Djava.awt.headless=true")
|
||||
standardInput = System.in
|
||||
@@ -361,7 +361,7 @@ task genSprites(dependsOn: classes, type: JavaExec){
|
||||
task updateBundles(dependsOn: classes, type: JavaExec){
|
||||
file(genFolder).mkdirs()
|
||||
|
||||
main = "io.anuke.mindustry.BundleLauncher"
|
||||
main = "io.anuke.mindustry.tools.BundleLauncher"
|
||||
classpath = sourceSets.main.runtimeClasspath
|
||||
standardInput = System.in
|
||||
workingDir = "../core/assets/bundles/"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.anuke.mindustry;
|
||||
package io.anuke.mindustry.tools;
|
||||
|
||||
import io.anuke.arc.collection.Array;
|
||||
import io.anuke.arc.collection.OrderedMap;
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.anuke.mindustry;
|
||||
package io.anuke.mindustry.tools;
|
||||
|
||||
import io.anuke.arc.collection.*;
|
||||
import io.anuke.arc.graphics.*;
|
||||
@@ -6,7 +6,7 @@ import io.anuke.arc.graphics.g2d.*;
|
||||
import io.anuke.arc.math.*;
|
||||
import io.anuke.arc.util.*;
|
||||
import io.anuke.arc.util.noise.*;
|
||||
import io.anuke.mindustry.ImagePacker.*;
|
||||
import io.anuke.mindustry.tools.ImagePacker.*;
|
||||
import io.anuke.mindustry.ctype.*;
|
||||
import io.anuke.mindustry.type.*;
|
||||
import io.anuke.mindustry.ui.*;
|
||||
@@ -1,9 +1,9 @@
|
||||
package io.anuke.mindustry;
|
||||
package io.anuke.mindustry.tools;
|
||||
|
||||
import io.anuke.arc.graphics.Color;
|
||||
import io.anuke.arc.graphics.g2d.TextureRegion;
|
||||
import io.anuke.arc.util.Structs;
|
||||
import io.anuke.mindustry.ImagePacker.GenRegion;
|
||||
import io.anuke.mindustry.tools.ImagePacker.GenRegion;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import java.awt.*;
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.anuke.mindustry;
|
||||
package io.anuke.mindustry.tools;
|
||||
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.collection.ObjectMap;
|
||||
@@ -7,6 +7,7 @@ import io.anuke.arc.graphics.g2d.TextureAtlas.AtlasRegion;
|
||||
import io.anuke.arc.util.*;
|
||||
import io.anuke.arc.util.Log.LogHandler;
|
||||
import io.anuke.arc.util.Log.NoopLogHandler;
|
||||
import io.anuke.mindustry.*;
|
||||
import io.anuke.mindustry.core.ContentLoader;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
60
tools/src/io/anuke/mindustry/tools/ScriptStubGenerator.java
Normal file
60
tools/src/io/anuke/mindustry/tools/ScriptStubGenerator.java
Normal file
@@ -0,0 +1,60 @@
|
||||
package io.anuke.mindustry.tools;
|
||||
|
||||
import io.anuke.arc.*;
|
||||
import io.anuke.arc.collection.*;
|
||||
import io.anuke.arc.files.*;
|
||||
import io.anuke.arc.graphics.g2d.*;
|
||||
import io.anuke.arc.util.*;
|
||||
import org.reflections.*;
|
||||
import org.reflections.scanners.*;
|
||||
import org.reflections.util.*;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class ScriptStubGenerator{
|
||||
|
||||
public static void main(String[] args){
|
||||
String base = "io.anuke.mindustry";
|
||||
Array<String> blacklist = Array.with("plugin", "mod", "net", "io", "tools", "gen");
|
||||
Array<String> nameBlacklist = Array.with("ClientLauncher", "NetClient", "NetServer");
|
||||
Array<Class<?>> whitelist = Array.with(Draw.class, Core.class, TextureAtlas.class, TextureRegion.class);
|
||||
|
||||
String fileTemplate = "package io.anuke.mindustry.mod;\n" +
|
||||
"\n" +
|
||||
"import io.anuke.arc.collection.*;\n" +
|
||||
"//obviously autogenerated, do not touch\n" +
|
||||
"class ClassAccess{\n" +
|
||||
"\tstatic final Array<Class<?>> allowedClasses = Array.with($ALLOWED_CLASSES$);\n" +
|
||||
"\tstatic final ObjectSet<String> allowedClassNames = ObjectSet.with($ALLOWED_CLASS_NAMES$);\n" +
|
||||
"}";
|
||||
|
||||
List<ClassLoader> classLoadersList = new LinkedList<>();
|
||||
classLoadersList.add(ClasspathHelper.contextClassLoader());
|
||||
classLoadersList.add(ClasspathHelper.staticClassLoader());
|
||||
|
||||
Reflections reflections = new Reflections(new ConfigurationBuilder()
|
||||
.setScanners(new SubTypesScanner(false), new ResourcesScanner())
|
||||
.setUrls(ClasspathHelper.forClassLoader(classLoadersList.toArray(new ClassLoader[0])))
|
||||
.filterInputsBy(new FilterBuilder().include(FilterBuilder.prefix("io.anuke.mindustry"))));
|
||||
|
||||
Array<Class<?>> classes = Array.with(reflections.getSubTypesOf(Object.class));
|
||||
classes.addAll(reflections.getSubTypesOf(Enum.class));
|
||||
classes.addAll(whitelist);
|
||||
classes.sort(Structs.comparing(Class::getName));
|
||||
|
||||
classes.removeAll(type -> type.isSynthetic() || type.isAnonymousClass() || type.isMemberClass() || type.getCanonicalName() == null
|
||||
|| blacklist.contains(s -> type.getName().startsWith(base + "." + s + ".")) || nameBlacklist.contains(type.getSimpleName()));
|
||||
|
||||
StringBuilder result = new StringBuilder("//Generated class. Do not modify.\n");
|
||||
for(Class type : classes){
|
||||
result.append("const ").append(type.getSimpleName()).append(" = ").append("Java.type('").append(type.getCanonicalName()).append("')\n");
|
||||
}
|
||||
|
||||
//Log.info(result);
|
||||
|
||||
new FileHandle("core/assets/scripts/global.js").writeString(result.toString());
|
||||
new FileHandle("core/src/io/anuke/mindustry/mod/ClassAccess.java").writeString(fileTemplate
|
||||
.replace("$ALLOWED_CLASSES$", classes.toString(", ", type -> type.getName() + ".class"))
|
||||
.replace("$ALLOWED_CLASS_NAMES$", classes.toString(", ", type -> "\"" + type.getName() + "\"")));
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.anuke.mindustry;
|
||||
package io.anuke.mindustry.tools;
|
||||
|
||||
import io.anuke.arc.Core;
|
||||
import io.anuke.arc.files.FileHandle;
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.anuke.mindustry;
|
||||
package io.anuke.mindustry.tools;
|
||||
|
||||
import io.anuke.arc.*;
|
||||
import io.anuke.arc.backends.sdl.*;
|
||||
Reference in New Issue
Block a user