diff --git a/gulp/ftp.js b/gulp/ftp.js index 2ab905e2..693a908d 100644 --- a/gulp/ftp.js +++ b/gulp/ftp.js @@ -6,6 +6,27 @@ const buildUtils = require("./buildutils"); function gulptasksFTP($, gulp, buildFolder) { const commitHash = buildUtils.getRevision(); + const additionalFolder = path.join(__dirname, "additional_build_files"); + + const additionalFiles = [ + path.join(additionalFolder, "*"), + path.join(additionalFolder, "*.*"), + path.join(additionalFolder, ".*"), + ]; + + const credentials = { + staging: { + host: process.env.SHAPEZ_CLI_SERVER_HOST, + user: process.env.SHAPEZ_CLI_STAGING_FTP_USER, + pass: process.env.SHAPEZ_CLI_STAGING_FTP_PW, + }, + prod: { + host: process.env.SHAPEZ_CLI_SERVER_HOST, + user: process.env.SHAPEZ_CLI_LIVE_FTP_USER, + pass: process.env.SHAPEZ_CLI_LIVE_FTP_PW, + }, + }; + // Write the "commit.txt" file gulp.task("ftp.writeVersion", () => { fs.writeFileSync( @@ -22,13 +43,6 @@ function gulptasksFTP($, gulp, buildFolder) { ); }); - // Copies additional files (like .htaccess) which should be deployed when running - // on the ftp server - // gulp.task("ftp.copyServerFiles", () => { - // return gulp.src(["../ftp_upload/*.*", "../ftp_upload/.*", "../ftp_upload/*"]) - // .pipe(gulp.dest(buildFolder)); - // }); - const gameSrcGlobs = [ path.join(buildFolder, "**/*.*"), path.join(buildFolder, "**/.*"), @@ -36,67 +50,47 @@ function gulptasksFTP($, gulp, buildFolder) { path.join(buildFolder, "!**/index.html"), ]; - gulp.task("ftp.upload.staging.game", () => { - return gulp - .src(gameSrcGlobs, { base: buildFolder }) - .pipe( - $.rename(pth => { - pth.dirname = path.join("v", commitHash, pth.dirname); + for (const deployEnv of ["prod", "staging"]) { + const deployCredentials = credentials[deployEnv]; + + gulp.task(`ftp.upload.${deployEnv}.game`, () => { + return gulp + .src(gameSrcGlobs, { base: buildFolder }) + .pipe( + $.rename(pth => { + pth.dirname = path.join("v", commitHash, pth.dirname); + }) + ) + .pipe($.sftp(deployCredentials)); + }); + + gulp.task(`ftp.upload.${deployEnv}.indexHtml`, () => { + return gulp + .src([path.join(buildFolder, "index.html"), path.join(buildFolder, "version.json")], { + base: buildFolder, }) - ) - .pipe( + .pipe($.sftp(deployCredentials)); + }); + + gulp.task(`ftp.upload.${deployEnv}.additionalFiles`, () => { + return gulp.src(additionalFiles, { base: additionalFolder }).pipe( $.sftp({ host: process.env.SHAPEZ_CLI_SERVER_HOST, user: process.env.SHAPEZ_CLI_STAGING_FTP_USER, pass: process.env.SHAPEZ_CLI_STAGING_FTP_PW, }) ); - }); + }); - gulp.task("ftp.upload.staging.indexHtml", () => { - return gulp.src(path.join(buildFolder, "index.html"), { base: buildFolder }).pipe( - $.sftp({ - host: process.env.SHAPEZ_CLI_SERVER_HOST, - user: process.env.SHAPEZ_CLI_STAGING_FTP_USER, - pass: process.env.SHAPEZ_CLI_STAGING_FTP_PW, - }) - ); - }); - - gulp.task("ftp.upload.staging", cb => { - $.sequence("ftp.writeVersion", "ftp.upload.staging.game", "ftp.upload.staging.indexHtml")(cb); - }); - - gulp.task("ftp.upload.prod.game", () => { - return gulp - .src(gameSrcGlobs, { base: buildFolder }) - .pipe( - $.rename(pth => { - pth.dirname = path.join("v", commitHash, pth.dirname); - }) - ) - .pipe( - $.sftp({ - host: process.env.SHAPEZ_CLI_SERVER_HOST, - user: process.env.SHAPEZ_CLI_LIVE_FTP_USER, - pass: process.env.SHAPEZ_CLI_LIVE_FTP_PW, - }) - ); - }); - - gulp.task("ftp.upload.prod.indexHtml", () => { - return gulp.src(path.join(buildFolder, "index.html"), { base: buildFolder }).pipe( - $.sftp({ - host: process.env.SHAPEZ_CLI_SERVER_HOST, - user: process.env.SHAPEZ_CLI_LIVE_FTP_USER, - pass: process.env.SHAPEZ_CLI_LIVE_FTP_PW, - }) - ); - }); - - gulp.task("ftp.upload.prod", cb => { - $.sequence("ftp.writeVersion", "ftp.upload.prod.game", "ftp.upload.prod.indexHtml")(cb); - }); + gulp.task(`ftp.upload.${deployEnv}`, cb => { + $.sequence( + "ftp.writeVersion", + `ftp.upload.${deployEnv}.game`, + `ftp.upload.${deployEnv}.indexHtml`, + `ftp.upload.${deployEnv}.additionalFiles` + )(cb); + }); + } } module.exports = { diff --git a/src/js/core/config.js b/src/js/core/config.js index aa8fe90c..687cb2d5 100644 --- a/src/js/core/config.js +++ b/src/js/core/config.js @@ -71,20 +71,19 @@ export const globalConfig = { debug: { /* dev:start */ - // fastGameEnter: true, + fastGameEnter: true, noArtificialDelays: true, // disableSavegameWrite: true, - showEntityBounds: false, - showAcceptorEjectors: false, - usePlainShapeIds: true, + // showEntityBounds: true, + // showAcceptorEjectors: true, disableMusic: true, - doNotRenderStatics: false, - disableZoomLimits: false, + // doNotRenderStatics: true, + // disableZoomLimits: true, // showChunkBorders: true, - rewardsInstant: false, - allBuildingsUnlocked: true, - upgradesNoCost: true, - disableUnlockDialog: true, + // rewardsInstant: true, + // allBuildingsUnlocked: true, + // upgradesNoCost: true, + // disableUnlockDialog: true, // disableLogicTicks: true, // testClipping: true, // framePausesBetweenTicks: 40, diff --git a/src/js/game/components/underground_belt.js b/src/js/game/components/underground_belt.js index 113e66ca..7d727226 100644 --- a/src/js/game/components/underground_belt.js +++ b/src/js/game/components/underground_belt.js @@ -79,7 +79,7 @@ export class UndergroundBeltComponent extends Component { } // Notice: We assume that for all items the travel distance is the same - const maxItemsInTunnel = (1 + travelDistance) / globalConfig.itemSpacingOnBelts; + const maxItemsInTunnel = (2 + travelDistance) / globalConfig.itemSpacingOnBelts; if (this.pendingItems.length >= maxItemsInTunnel) { // Simulate a real belt which gets full at some point return false; diff --git a/src/js/game/hub_goals.js b/src/js/game/hub_goals.js index d4afc0ef..def2946a 100644 --- a/src/js/game/hub_goals.js +++ b/src/js/game/hub_goals.js @@ -36,7 +36,7 @@ export class HubGoals extends BasicSerializableObject { } // Compute gained rewards - for (let i = 0; i < this.level; ++i) { + for (let i = 0; i < this.level - 1; ++i) { if (i < tutorialGoals.length) { const reward = tutorialGoals[i].reward; this.gainedRewards[reward] = (this.gainedRewards[reward] || 0) + 1;