mirror of
https://github.com/tobspr/shapez.io.git
synced 2024-10-27 20:34:29 +00:00
135 lines
4.8 KiB
JavaScript
135 lines
4.8 KiB
JavaScript
const path = require("path");
|
|
const audiosprite = require("gulp-audiosprite");
|
|
|
|
function gulptasksSounds($, gulp, buildFolder) {
|
|
// Gather some basic infos
|
|
const soundsDir = path.join(__dirname, "..", "res_raw", "sounds");
|
|
const builtSoundsDir = path.join(__dirname, "..", "res_built", "sounds");
|
|
|
|
gulp.task("sounds.clear", () => {
|
|
return gulp.src(builtSoundsDir, { read: false, allowEmpty: true }).pipe($.clean({ force: true }));
|
|
});
|
|
|
|
const filters = ["volume=0.2"];
|
|
|
|
const fileCache = new $.cache.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
|
|
gulp.task("sounds.music", () => {
|
|
return gulp
|
|
.src([path.join(soundsDir, "music", "**", "*.wav"), path.join(soundsDir, "music", "**", "*.mp3")])
|
|
.pipe($.plumber())
|
|
.pipe(
|
|
$.cache(
|
|
$.fluentFfmpeg("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
|
|
gulp.task("sounds.musicHQ", () => {
|
|
return gulp
|
|
.src([path.join(soundsDir, "music", "**", "*.wav"), path.join(soundsDir, "music", "**", "*.mp3")])
|
|
.pipe($.plumber())
|
|
.pipe(
|
|
$.cache(
|
|
$.fluentFfmpeg("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
|
|
gulp.task("sounds.sfxGenerateSprites", () => {
|
|
return gulp
|
|
.src([path.join(soundsDir, "sfx", "**", "*.wav"), path.join(soundsDir, "sfx", "**", "*.mp3")])
|
|
.pipe($.plumber())
|
|
.pipe(
|
|
audiosprite({
|
|
format: "howler",
|
|
output: "sfx",
|
|
gap: 0.1,
|
|
export: "mp3",
|
|
})
|
|
)
|
|
.pipe(gulp.dest(path.join(builtSoundsDir)));
|
|
});
|
|
gulp.task("sounds.sfxOptimize", () => {
|
|
return gulp
|
|
.src([path.join(builtSoundsDir, "sfx.mp3")])
|
|
.pipe($.plumber())
|
|
.pipe(
|
|
$.fluentFfmpeg("mp3", function (cmd) {
|
|
return cmd
|
|
.audioBitrate(128)
|
|
.audioChannels(1)
|
|
.audioFrequency(22050)
|
|
.audioCodec("libmp3lame")
|
|
.audioFilters(filters);
|
|
})
|
|
)
|
|
.pipe(gulp.dest(path.join(builtSoundsDir)));
|
|
});
|
|
gulp.task("sounds.sfxCopyAtlas", () => {
|
|
return gulp
|
|
.src([path.join(builtSoundsDir, "sfx.json")])
|
|
.pipe(gulp.dest(path.join(__dirname, "..", "src", "js", "built-temp")));
|
|
});
|
|
|
|
gulp.task(
|
|
"sounds.sfx",
|
|
gulp.series("sounds.sfxGenerateSprites", "sounds.sfxOptimize", "sounds.sfxCopyAtlas")
|
|
);
|
|
|
|
gulp.task("sounds.copy", () => {
|
|
return gulp
|
|
.src(path.join(builtSoundsDir, "**", "*.mp3"))
|
|
.pipe($.plumber())
|
|
.pipe(gulp.dest(path.join(buildFolder, "res", "sounds")));
|
|
});
|
|
|
|
gulp.task("sounds.buildall", gulp.parallel("sounds.music", "sounds.sfx"));
|
|
gulp.task("sounds.buildallHQ", gulp.parallel("sounds.musicHQ", "sounds.sfx"));
|
|
|
|
gulp.task("sounds.fullbuild", gulp.series("sounds.clear", "sounds.buildall", "sounds.copy"));
|
|
gulp.task("sounds.fullbuildHQ", gulp.series("sounds.clear", "sounds.buildallHQ", "sounds.copy"));
|
|
gulp.task("sounds.dev", gulp.series("sounds.buildall", "sounds.copy"));
|
|
}
|
|
|
|
module.exports = {
|
|
gulptasksSounds,
|
|
};
|