mirror of
https://github.com/tobspr/shapez.io.git
synced 2025-12-11 09:11:50 +00:00
* Fix tsconfig scopes affecting html.js Since it's quite hard to use a DOM library type there, remove the type entirely. * Remove environment variables check Nothing is using them anymore. It can be added back if needed later. * Refactor Texture Packer downloading Refactor local-config.js tasks file into a generic "environment" category consisting of checking if Java is installed, downloading the runnable Texture Packer if it's not yet downloaded and copying the local configuration template; update README accordingly. * Prepare environment only at postinstall Remove environment.prepare task from default build pipelines, add a postinstall script that calls the task, using environment.js as the gulpfile to speed it up. * Remove "docs" tasks and types generation script Remove tasks from docs.js as they are unlikely to do anything meaningful nowadays. Also remove the buildTypes script as it doesn't work anymore. A better solution will be provided in the future. * Simplify some globs Use additional gulp.src options instead of specifying more or complex globs. * Extract built-temp location to a variable Add the src/js/built-temp directory as a new variable in config.js, replace all existing references to built-temp with this variable.
131 lines
4.3 KiB
JavaScript
131 lines
4.3 KiB
JavaScript
import gulp from "gulp";
|
|
import path from "path/posix";
|
|
import { buildFolder, generatedCodeFolder } from "./config.js";
|
|
|
|
import gulpAudiosprite from "gulp-audiosprite";
|
|
import gulpCache from "gulp-cache";
|
|
import gulpClean from "gulp-clean";
|
|
import gulpFluentFfmpeg from "gulp-fluent-ffmpeg";
|
|
import gulpPlumber from "gulp-plumber";
|
|
|
|
// Gather some basic infos
|
|
const soundsDir = path.join("..", "res_raw", "sounds");
|
|
const builtSoundsDir = path.join("..", "res_built", "sounds");
|
|
|
|
export function clear() {
|
|
return gulp.src(builtSoundsDir, { read: false, allowEmpty: true }).pipe(gulpClean({ force: true }));
|
|
}
|
|
|
|
const filters = ["volume=0.2"];
|
|
|
|
const fileCache = new gulpCache.Cache({
|
|
cacheDirName: "shapezio-precompiled-sounds",
|
|
});
|
|
|
|
function getFileCacheValue(file) {
|
|
const { _isVinyl, base, cwd, contents, history, stat, path } = file;
|
|
const encodedContents = Buffer.from(contents).toString("base64");
|
|
return { _isVinyl, base, cwd, contents: encodedContents, history, stat, path };
|
|
}
|
|
|
|
// Encodes the game music
|
|
export function music() {
|
|
return gulp
|
|
.src([path.join(soundsDir, "music", "**", "*.wav"), path.join(soundsDir, "music", "**", "*.mp3")])
|
|
.pipe(gulpPlumber())
|
|
.pipe(
|
|
gulpCache(
|
|
gulpFluentFfmpeg("mp3", function (cmd) {
|
|
return cmd
|
|
.audioBitrate(48)
|
|
.audioChannels(1)
|
|
.audioFrequency(22050)
|
|
.audioCodec("libmp3lame")
|
|
.audioFilters(["volume=0.15"]);
|
|
}),
|
|
{
|
|
name: "music",
|
|
fileCache,
|
|
value: getFileCacheValue,
|
|
}
|
|
)
|
|
)
|
|
.pipe(gulp.dest(path.join(builtSoundsDir, "music")));
|
|
}
|
|
|
|
// Encodes the game music in high quality for the standalone
|
|
export function musicHQ() {
|
|
return gulp
|
|
.src([path.join(soundsDir, "music", "**", "*.wav"), path.join(soundsDir, "music", "**", "*.mp3")])
|
|
.pipe(gulpPlumber())
|
|
.pipe(
|
|
gulpCache(
|
|
gulpFluentFfmpeg("mp3", function (cmd) {
|
|
return cmd
|
|
.audioBitrate(256)
|
|
.audioChannels(2)
|
|
.audioFrequency(44100)
|
|
.audioCodec("libmp3lame")
|
|
.audioFilters(["volume=0.15"]);
|
|
}),
|
|
{
|
|
name: "music-high-quality",
|
|
fileCache,
|
|
value: getFileCacheValue,
|
|
}
|
|
)
|
|
)
|
|
.pipe(gulp.dest(path.join(builtSoundsDir, "music")));
|
|
}
|
|
|
|
// Encodes the ui sounds
|
|
export function sfxGenerateSprites() {
|
|
return gulp
|
|
.src([path.join(soundsDir, "sfx", "**", "*.wav"), path.join(soundsDir, "sfx", "**", "*.mp3")])
|
|
.pipe(gulpPlumber())
|
|
.pipe(
|
|
gulpAudiosprite({
|
|
format: "howler",
|
|
output: "sfx",
|
|
gap: 0.1,
|
|
export: "mp3",
|
|
})
|
|
)
|
|
.pipe(gulp.dest(path.join(builtSoundsDir)));
|
|
}
|
|
export function sfxOptimize() {
|
|
return gulp
|
|
.src([path.join(builtSoundsDir, "sfx.mp3")])
|
|
.pipe(gulpPlumber())
|
|
.pipe(
|
|
gulpFluentFfmpeg("mp3", function (cmd) {
|
|
return cmd
|
|
.audioBitrate(128)
|
|
.audioChannels(1)
|
|
.audioFrequency(22050)
|
|
.audioCodec("libmp3lame")
|
|
.audioFilters(filters);
|
|
})
|
|
)
|
|
.pipe(gulp.dest(path.join(builtSoundsDir)));
|
|
}
|
|
export function sfxCopyAtlas() {
|
|
return gulp.src([path.join(builtSoundsDir, "sfx.json")]).pipe(gulp.dest(generatedCodeFolder));
|
|
}
|
|
|
|
export const sfx = gulp.series(sfxGenerateSprites, sfxOptimize, sfxCopyAtlas);
|
|
|
|
export function copy() {
|
|
return gulp
|
|
.src(path.join(builtSoundsDir, "**", "*.mp3"))
|
|
.pipe(gulpPlumber())
|
|
.pipe(gulp.dest(path.join(buildFolder, "res", "sounds")));
|
|
}
|
|
|
|
export const buildall = gulp.parallel(music, sfx);
|
|
export const buildallHQ = gulp.parallel(musicHQ, sfx);
|
|
|
|
export const fullbuild = gulp.series(clear, buildall, copy);
|
|
export const fullbuildHQ = gulp.series(clear, buildallHQ, copy);
|
|
export const dev = gulp.series(buildall, copy);
|