update
This commit is contained in:
@@ -40,7 +40,7 @@ public class FontGenerator{
|
||||
Log.info("Icon font...");
|
||||
|
||||
ZipFi zip = new ZipFi(folder.child("font.zip"));
|
||||
Fi dest = folder.child("font.ttf");
|
||||
Fi dest = folder.child("font.woff");
|
||||
zip.list()[0].child("font").child("fontello.ttf").copyTo(dest);
|
||||
dest.copyTo(Fi.get("core/assets/fonts/icon.ttf"));
|
||||
|
||||
|
||||
@@ -1,22 +1,19 @@
|
||||
package mindustry.tools;
|
||||
|
||||
import arc.*;
|
||||
import arc.struct.Seq;
|
||||
import arc.struct.*;
|
||||
import arc.files.*;
|
||||
import arc.graphics.*;
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.graphics.g2d.TextureAtlas.*;
|
||||
import arc.math.*;
|
||||
import arc.struct.*;
|
||||
import arc.util.*;
|
||||
import mindustry.game.*;
|
||||
import mindustry.gen.*;
|
||||
import org.reflections.*;
|
||||
import org.reflections.scanners.*;
|
||||
import org.reflections.util.*;
|
||||
|
||||
import java.io.*;
|
||||
import java.lang.reflect.*;
|
||||
import java.net.*;
|
||||
import java.util.*;
|
||||
|
||||
public class ScriptStubGenerator{
|
||||
@@ -26,34 +23,25 @@ public class ScriptStubGenerator{
|
||||
Seq<String> blacklist = Seq.with("plugin", "mod", "net", "io", "tools");
|
||||
Seq<String> nameBlacklist = Seq.with("ClassAccess");
|
||||
Seq<Class<?>> whitelist = Seq.with(Draw.class, Fill.class, Lines.class, Core.class, TextureAtlas.class, TextureRegion.class, Time.class, System.class, PrintStream.class,
|
||||
AtlasRegion.class, String.class, Mathf.class, Angles.class, Color.class, Runnable.class, Object.class, Icon.class, Tex.class,
|
||||
Sounds.class, Musics.class, Call.class, Texture.class, TextureData.class, Pixmap.class, I18NBundle.class, Interval.class, DataInput.class, DataOutput.class,
|
||||
DataInputStream.class, DataOutputStream.class, Integer.class, Float.class, Double.class, Long.class, Boolean.class, Short.class, Byte.class, Character.class);
|
||||
AtlasRegion.class, String.class, Mathf.class, Angles.class, Color.class, Runnable.class, Object.class, Icon.class, Tex.class,
|
||||
Sounds.class, Musics.class, Call.class, Texture.class, TextureData.class, Pixmap.class, I18NBundle.class, Interval.class, DataInput.class, DataOutput.class,
|
||||
DataInputStream.class, DataOutputStream.class, Integer.class, Float.class, Double.class, Long.class, Boolean.class, Short.class, Byte.class, Character.class);
|
||||
Seq<String> nopackage = Seq.with("java.lang", "java");
|
||||
|
||||
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("mindustry"))
|
||||
.include(FilterBuilder.prefix("arc.func"))
|
||||
.include(FilterBuilder.prefix("arc.struct"))
|
||||
.include(FilterBuilder.prefix("arc.scene"))
|
||||
.include(FilterBuilder.prefix("arc.math"))
|
||||
));
|
||||
|
||||
Seq<Class<?>> classes = Seq.with(reflections.getSubTypesOf(Object.class));
|
||||
classes.addAll(reflections.getSubTypesOf(Enum.class));
|
||||
Seq<Class<?>> classes = Seq.withArrays(
|
||||
getClasses("mindustry"),
|
||||
getClasses("arc.func"),
|
||||
getClasses("arc.struct"),
|
||||
getClasses("arc.scene"),
|
||||
getClasses("arc.math")
|
||||
);
|
||||
classes.addAll(whitelist);
|
||||
classes.sort(Structs.comparing(Class::getName));
|
||||
|
||||
classes.removeAll(type -> type.isSynthetic() || type.isAnonymousClass() || type.getCanonicalName() == null || Modifier.isPrivate(type.getModifiers())
|
||||
|| blacklist.contains(s -> type.getName().startsWith(base + "." + s + ".")) || nameBlacklist.contains(type.getSimpleName()));
|
||||
classes.distinct();
|
||||
classes.sortComparing(Class::getName);
|
||||
ObjectSet<String> used = ObjectSet.with();
|
||||
|
||||
StringBuilder result = new StringBuilder("//Generated class. Do not modify.\n");
|
||||
@@ -72,4 +60,35 @@ public class ScriptStubGenerator{
|
||||
|
||||
new Fi("core/assets/scripts/global.js").writeString(result.toString());
|
||||
}
|
||||
|
||||
|
||||
private static Seq<Class> getClasses(String packageName) throws Exception{
|
||||
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
|
||||
Seq<File> dirs = new Seq<>();
|
||||
|
||||
for(URL resource : Collections.list(classLoader.getResources(packageName.replace('.', '/')))){
|
||||
dirs.add(new File(resource.getFile()));
|
||||
}
|
||||
|
||||
Seq<Class> classes = new Seq<>();
|
||||
for(File directory : dirs){
|
||||
classes.addAll(findClasses(directory, packageName));
|
||||
}
|
||||
return classes;
|
||||
}
|
||||
|
||||
private static Seq<Class> findClasses(File directory, String packageName) throws Exception{
|
||||
Seq<Class> classes = new Seq<>();
|
||||
if(!directory.exists()) return classes;
|
||||
|
||||
File[] files = directory.listFiles();
|
||||
for(File file : files){
|
||||
if(file.isDirectory()){
|
||||
classes.addAll(findClasses(file, packageName + "." + file.getName()));
|
||||
}else if(file.getName().endsWith(".class")){
|
||||
classes.add(Class.forName(packageName + '.' + file.getName().substring(0, file.getName().length() - 6), false, Thread.currentThread().getContextClassLoader()));
|
||||
}
|
||||
}
|
||||
return classes;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,6 +124,7 @@ public class SectorDataGenerator{
|
||||
boolean hasSnow = data.floors[0].name.contains("ice") || data.floors[0].name.contains("snow");
|
||||
boolean hasRain = !hasSnow && data.floors[0].name.contains("water");
|
||||
boolean hasDesert = !hasSnow && !hasRain && data.floors[0].name.contains("sand");
|
||||
boolean hasSpores = data.floors[0].name.contains("spore") || data.floors[0].name.contains("moss") || data.floors[0].name.contains("tainted");
|
||||
|
||||
if(hasSnow){
|
||||
data.attributes |= (1 << SectorAttribute.snowy.ordinal());
|
||||
@@ -137,6 +138,10 @@ public class SectorDataGenerator{
|
||||
data.attributes |= (1 << SectorAttribute.desert.ordinal());
|
||||
}
|
||||
|
||||
if(hasSpores){
|
||||
data.attributes |= (1 << SectorAttribute.spores.ordinal());
|
||||
}
|
||||
|
||||
data.resources = content.asArray().sort(Structs.comps(Structs.comparing(Content::getContentType), Structs.comparingInt(c -> c.id))).toArray(UnlockableContent.class);
|
||||
|
||||
//50% water -> naval attribute
|
||||
|
||||
Reference in New Issue
Block a user