mirror of
https://github.com/tobspr-games/shapez.io.git
synced 2025-12-07 02:51:07 -08:00
LibGDX Texture Packing (finally!) (#755)
* Format tsconfig, remove atlas files * Add helpers for texture packing * Rest of the texture packing... * Update gitignores * Update readme
This commit is contained in:
parent
beb09a9e3e
commit
a02438a70a
16 changed files with 214 additions and 5124 deletions
|
|
@ -1,5 +1,15 @@
|
|||
const { existsSync } = require("fs");
|
||||
// @ts-ignore
|
||||
const path = require("path");
|
||||
const atlasToJson = require("./atlas2json");
|
||||
|
||||
const execute = command =>
|
||||
require("child_process").execSync(command, {
|
||||
encoding: "utf-8",
|
||||
});
|
||||
|
||||
// Globs for atlas resources
|
||||
const rawImageResourcesGlobs = ["../res_raw/config.json", "../res_raw/**/*.png"];
|
||||
|
||||
// Globs for non-ui resources
|
||||
const nonImageResourcesGlobs = ["../res/**/*.woff2", "../res/*.ico", "../res/**/*.webm"];
|
||||
|
|
@ -7,6 +17,9 @@ const nonImageResourcesGlobs = ["../res/**/*.woff2", "../res/*.ico", "../res/**/
|
|||
// Globs for ui resources
|
||||
const imageResourcesGlobs = ["../res/**/*.png", "../res/**/*.svg", "../res/**/*.jpg", "../res/**/*.gif"];
|
||||
|
||||
// Link to download LibGDX runnable-texturepacker.jar
|
||||
const runnableTPSource = "https://libgdx.badlogicgames.com/ci/nightlies/runnables/runnable-texturepacker.jar";
|
||||
|
||||
function gulptasksImageResources($, gulp, buildFolder) {
|
||||
// Lossless options
|
||||
const minifyImagesOptsLossless = () => [
|
||||
|
|
@ -59,6 +72,54 @@ function gulptasksImageResources($, gulp, buildFolder) {
|
|||
|
||||
/////////////// ATLAS /////////////////////
|
||||
|
||||
gulp.task("imgres.buildAtlas", cb => {
|
||||
const config = JSON.stringify("../res_raw/atlas.json");
|
||||
const source = JSON.stringify("../res_raw");
|
||||
const dest = JSON.stringify("../res_built/atlas");
|
||||
|
||||
try {
|
||||
// First check whether Java is installed
|
||||
execute("java -version");
|
||||
// Now check and try downloading runnable-texturepacker.jar (22MB)
|
||||
if (!existsSync("./runnable-texturepacker.jar")) {
|
||||
const safeLink = JSON.stringify(runnableTPSource);
|
||||
const commands = [
|
||||
// linux/macos if installed
|
||||
`wget -O runnable-texturepacker.jar ${safeLink}`,
|
||||
// linux/macos, latest windows 10
|
||||
`curl -o runnable-texturepacker.jar ${safeLink}`,
|
||||
// windows 10 / updated windows 7+
|
||||
"powershell.exe -Command (new-object System.Net.WebClient)" +
|
||||
`.DownloadFile(${safeLink.replace(/"/g, "'")}, 'runnable-texturepacker.jar')`,
|
||||
// windows 7+, vulnerability exploit
|
||||
`certutil.exe -urlcache -split -f ${safeLink} runnable-texturepacker.jar`,
|
||||
];
|
||||
|
||||
while (commands.length) {
|
||||
try {
|
||||
execute(commands.shift());
|
||||
break;
|
||||
} catch {
|
||||
if (!commands.length) {
|
||||
throw new Error("Failed to download runnable-texturepacker.jar!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
execute(`java -jar runnable-texturepacker.jar ${source} ${dest} atlas0 ${config}`);
|
||||
} catch {
|
||||
console.warn("Building atlas failed. Java not found / unsupported version?");
|
||||
}
|
||||
cb();
|
||||
});
|
||||
|
||||
// Converts .atlas LibGDX files to JSON
|
||||
gulp.task("imgres.atlasToJson", cb => {
|
||||
atlasToJson.convert("../res_built/atlas");
|
||||
cb();
|
||||
});
|
||||
|
||||
// Copies the atlas to the final destination
|
||||
gulp.task("imgres.atlas", () => {
|
||||
return gulp.src(["../res_built/atlas/*.png"]).pipe(gulp.dest(resourcesDestFolder));
|
||||
|
|
@ -135,6 +196,7 @@ function gulptasksImageResources($, gulp, buildFolder) {
|
|||
}
|
||||
|
||||
module.exports = {
|
||||
rawImageResourcesGlobs,
|
||||
nonImageResourcesGlobs,
|
||||
imageResourcesGlobs,
|
||||
gulptasksImageResources,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue