2020-09-29 17:07:48 +00:00
|
|
|
require("colors");
|
2020-05-09 14:45:23 +00:00
|
|
|
const packager = require("electron-packager");
|
Achievements (#1087)
* [WIP] Add boilerplate for achievement implementation
* Add config.local.template.js and rm cached copy of config.local.js
* [WIP] Implement painting, cutting, rotating achievements (to log only)
* [WIP] Refactor achievements, jsdoc fixes, add npm script
- Refactor achievements to make use of Signals
- Move implemented achievement interfaces to appropriate
platform folders (SteamAchievements in currently in use
in browser wrapper for testing)
- Fix invalid jsdocs
- Add dev-standalone script to package.json scripts
* Add steam/greenworks IPC calls and optional private-artifact dependency
* Include private artifacts in standalone builds
* Uncomment appid include
* [WIP] Add steam overlay fix, add hash to artifact dependency
* Update electron, greenworks. Add task to add local config if not present
* Add more achievements, refactor achievement code
* Add receiver flexibility and more achievements
- Add check to see if necessary to create achievement and add receiver
- Add remove receiver functionality when achievement is unlocked
* Add achievements and accommodations for switching states
- Fix startup code to avoid clobbering achievements on state switch
- Add a few more achievements
* Add achievements, ids. Update names, keys for consistency
* Add play time achievements
* [WIP] Add more achievements
* Add more achievements. Add bulk achievement check signal
* [WIP] Add achievements. Start savefile migration
* Add achievements. Add savefile migration
* Remove superfluous achievement stat
* Update lock files, fix merge conflict
2021-03-10 06:33:39 +00:00
|
|
|
const pj = require("../electron/package.json");
|
2020-05-09 14:45:23 +00:00
|
|
|
const path = require("path");
|
2020-08-07 07:16:23 +00:00
|
|
|
const { getVersion } = require("./buildutils");
|
2020-05-09 14:45:23 +00:00
|
|
|
const fs = require("fs");
|
|
|
|
const fse = require("fs-extra");
|
2020-09-29 17:07:48 +00:00
|
|
|
const buildutils = require("./buildutils");
|
2020-05-09 14:45:23 +00:00
|
|
|
const execSync = require("child_process").execSync;
|
2022-04-13 13:43:58 +00:00
|
|
|
const electronNotarize = require("electron-notarize");
|
2022-05-30 05:00:14 +00:00
|
|
|
|
|
|
|
let signAsync;
|
|
|
|
try {
|
|
|
|
signAsync = require("tobspr-osx-sign").signAsync;
|
|
|
|
} catch (ex) {
|
|
|
|
console.warn("tobspr-osx-sign not installed, can not create osx builds");
|
|
|
|
}
|
2020-05-09 14:45:23 +00:00
|
|
|
|
2020-08-07 07:16:23 +00:00
|
|
|
function gulptasksStandalone($, gulp) {
|
Achievements (#1087)
* [WIP] Add boilerplate for achievement implementation
* Add config.local.template.js and rm cached copy of config.local.js
* [WIP] Implement painting, cutting, rotating achievements (to log only)
* [WIP] Refactor achievements, jsdoc fixes, add npm script
- Refactor achievements to make use of Signals
- Move implemented achievement interfaces to appropriate
platform folders (SteamAchievements in currently in use
in browser wrapper for testing)
- Fix invalid jsdocs
- Add dev-standalone script to package.json scripts
* Add steam/greenworks IPC calls and optional private-artifact dependency
* Include private artifacts in standalone builds
* Uncomment appid include
* [WIP] Add steam overlay fix, add hash to artifact dependency
* Update electron, greenworks. Add task to add local config if not present
* Add more achievements, refactor achievement code
* Add receiver flexibility and more achievements
- Add check to see if necessary to create achievement and add receiver
- Add remove receiver functionality when achievement is unlocked
* Add achievements and accommodations for switching states
- Fix startup code to avoid clobbering achievements on state switch
- Add a few more achievements
* Add achievements, ids. Update names, keys for consistency
* Add play time achievements
* [WIP] Add more achievements
* Add more achievements. Add bulk achievement check signal
* [WIP] Add achievements. Start savefile migration
* Add achievements. Add savefile migration
* Remove superfluous achievement stat
* Update lock files, fix merge conflict
2021-03-10 06:33:39 +00:00
|
|
|
const targets = [
|
|
|
|
{
|
|
|
|
tempDestDir: path.join(__dirname, "..", "tmp_standalone_files"),
|
|
|
|
suffix: "",
|
2021-03-14 08:52:15 +00:00
|
|
|
taskPrefix: "",
|
2021-05-25 11:12:38 +00:00
|
|
|
electronBaseDir: path.join(__dirname, "..", "electron"),
|
|
|
|
steam: true,
|
Achievements (#1087)
* [WIP] Add boilerplate for achievement implementation
* Add config.local.template.js and rm cached copy of config.local.js
* [WIP] Implement painting, cutting, rotating achievements (to log only)
* [WIP] Refactor achievements, jsdoc fixes, add npm script
- Refactor achievements to make use of Signals
- Move implemented achievement interfaces to appropriate
platform folders (SteamAchievements in currently in use
in browser wrapper for testing)
- Fix invalid jsdocs
- Add dev-standalone script to package.json scripts
* Add steam/greenworks IPC calls and optional private-artifact dependency
* Include private artifacts in standalone builds
* Uncomment appid include
* [WIP] Add steam overlay fix, add hash to artifact dependency
* Update electron, greenworks. Add task to add local config if not present
* Add more achievements, refactor achievement code
* Add receiver flexibility and more achievements
- Add check to see if necessary to create achievement and add receiver
- Add remove receiver functionality when achievement is unlocked
* Add achievements and accommodations for switching states
- Fix startup code to avoid clobbering achievements on state switch
- Add a few more achievements
* Add achievements, ids. Update names, keys for consistency
* Add play time achievements
* [WIP] Add more achievements
* Add more achievements. Add bulk achievement check signal
* [WIP] Add achievements. Start savefile migration
* Add achievements. Add savefile migration
* Remove superfluous achievement stat
* Update lock files, fix merge conflict
2021-03-10 06:33:39 +00:00
|
|
|
},
|
2021-03-09 09:07:19 +00:00
|
|
|
{
|
|
|
|
tempDestDir: path.join(__dirname, "..", "tmp_standalone_files_china"),
|
|
|
|
suffix: "china",
|
|
|
|
taskPrefix: "china.",
|
2021-05-25 11:12:38 +00:00
|
|
|
electronBaseDir: path.join(__dirname, "..", "electron"),
|
|
|
|
steam: true,
|
2021-03-09 09:07:19 +00:00
|
|
|
},
|
2021-05-25 07:19:57 +00:00
|
|
|
{
|
|
|
|
tempDestDir: path.join(__dirname, "..", "tmp_standalone_files_wegame"),
|
|
|
|
suffix: "wegame",
|
|
|
|
taskPrefix: "wegame.",
|
2021-05-25 11:12:38 +00:00
|
|
|
electronBaseDir: path.join(__dirname, "..", "electron_wegame"),
|
|
|
|
steam: false,
|
2021-05-25 07:19:57 +00:00
|
|
|
},
|
Achievements (#1087)
* [WIP] Add boilerplate for achievement implementation
* Add config.local.template.js and rm cached copy of config.local.js
* [WIP] Implement painting, cutting, rotating achievements (to log only)
* [WIP] Refactor achievements, jsdoc fixes, add npm script
- Refactor achievements to make use of Signals
- Move implemented achievement interfaces to appropriate
platform folders (SteamAchievements in currently in use
in browser wrapper for testing)
- Fix invalid jsdocs
- Add dev-standalone script to package.json scripts
* Add steam/greenworks IPC calls and optional private-artifact dependency
* Include private artifacts in standalone builds
* Uncomment appid include
* [WIP] Add steam overlay fix, add hash to artifact dependency
* Update electron, greenworks. Add task to add local config if not present
* Add more achievements, refactor achievement code
* Add receiver flexibility and more achievements
- Add check to see if necessary to create achievement and add receiver
- Add remove receiver functionality when achievement is unlocked
* Add achievements and accommodations for switching states
- Fix startup code to avoid clobbering achievements on state switch
- Add a few more achievements
* Add achievements, ids. Update names, keys for consistency
* Add play time achievements
* [WIP] Add more achievements
* Add more achievements. Add bulk achievement check signal
* [WIP] Add achievements. Start savefile migration
* Add achievements. Add savefile migration
* Remove superfluous achievement stat
* Update lock files, fix merge conflict
2021-03-10 06:33:39 +00:00
|
|
|
];
|
|
|
|
|
2021-05-25 11:12:38 +00:00
|
|
|
for (const { tempDestDir, suffix, taskPrefix, electronBaseDir, steam } of targets) {
|
2021-03-09 09:07:19 +00:00
|
|
|
const tempDestBuildDir = path.join(tempDestDir, "built");
|
|
|
|
|
|
|
|
gulp.task(taskPrefix + "standalone.prepare.cleanup", () => {
|
2021-03-14 08:52:15 +00:00
|
|
|
return gulp.src(tempDestDir, { read: false, allowEmpty: true }).pipe($.clean({ force: true }));
|
2021-03-09 09:07:19 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
gulp.task(taskPrefix + "standalone.prepare.copyPrefab", () => {
|
|
|
|
const requiredFiles = [
|
|
|
|
path.join(electronBaseDir, "node_modules", "**", "*.*"),
|
|
|
|
path.join(electronBaseDir, "node_modules", "**", ".*"),
|
2021-05-25 19:29:44 +00:00
|
|
|
path.join(electronBaseDir, "wegame_sdk", "**", "*.*"),
|
|
|
|
path.join(electronBaseDir, "wegame_sdk", "**", ".*"),
|
2021-03-09 09:07:19 +00:00
|
|
|
path.join(electronBaseDir, "favicon*"),
|
|
|
|
|
|
|
|
// fails on platforms which support symlinks
|
|
|
|
// https://github.com/gulpjs/gulp/issues/1427
|
|
|
|
// path.join(electronBaseDir, "node_modules", "**", "*"),
|
|
|
|
];
|
2021-05-25 11:12:38 +00:00
|
|
|
if (steam) {
|
|
|
|
requiredFiles.push(path.join(electronBaseDir, "steam_appid.txt"));
|
|
|
|
}
|
2021-03-14 08:52:15 +00:00
|
|
|
return gulp.src(requiredFiles, { base: electronBaseDir }).pipe(gulp.dest(tempDestBuildDir));
|
2021-03-09 09:07:19 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
gulp.task(taskPrefix + "standalone.prepare.writePackageJson", cb => {
|
2021-03-14 08:52:15 +00:00
|
|
|
const packageJsonString = JSON.stringify(
|
|
|
|
{
|
|
|
|
scripts: {
|
|
|
|
start: pj.scripts.start,
|
|
|
|
},
|
|
|
|
devDependencies: pj.devDependencies,
|
|
|
|
dependencies: pj.dependencies,
|
|
|
|
optionalDependencies: pj.optionalDependencies,
|
Achievements (#1087)
* [WIP] Add boilerplate for achievement implementation
* Add config.local.template.js and rm cached copy of config.local.js
* [WIP] Implement painting, cutting, rotating achievements (to log only)
* [WIP] Refactor achievements, jsdoc fixes, add npm script
- Refactor achievements to make use of Signals
- Move implemented achievement interfaces to appropriate
platform folders (SteamAchievements in currently in use
in browser wrapper for testing)
- Fix invalid jsdocs
- Add dev-standalone script to package.json scripts
* Add steam/greenworks IPC calls and optional private-artifact dependency
* Include private artifacts in standalone builds
* Uncomment appid include
* [WIP] Add steam overlay fix, add hash to artifact dependency
* Update electron, greenworks. Add task to add local config if not present
* Add more achievements, refactor achievement code
* Add receiver flexibility and more achievements
- Add check to see if necessary to create achievement and add receiver
- Add remove receiver functionality when achievement is unlocked
* Add achievements and accommodations for switching states
- Fix startup code to avoid clobbering achievements on state switch
- Add a few more achievements
* Add achievements, ids. Update names, keys for consistency
* Add play time achievements
* [WIP] Add more achievements
* Add more achievements. Add bulk achievement check signal
* [WIP] Add achievements. Start savefile migration
* Add achievements. Add savefile migration
* Remove superfluous achievement stat
* Update lock files, fix merge conflict
2021-03-10 06:33:39 +00:00
|
|
|
},
|
2021-03-14 08:52:15 +00:00
|
|
|
null,
|
|
|
|
4
|
|
|
|
);
|
Achievements (#1087)
* [WIP] Add boilerplate for achievement implementation
* Add config.local.template.js and rm cached copy of config.local.js
* [WIP] Implement painting, cutting, rotating achievements (to log only)
* [WIP] Refactor achievements, jsdoc fixes, add npm script
- Refactor achievements to make use of Signals
- Move implemented achievement interfaces to appropriate
platform folders (SteamAchievements in currently in use
in browser wrapper for testing)
- Fix invalid jsdocs
- Add dev-standalone script to package.json scripts
* Add steam/greenworks IPC calls and optional private-artifact dependency
* Include private artifacts in standalone builds
* Uncomment appid include
* [WIP] Add steam overlay fix, add hash to artifact dependency
* Update electron, greenworks. Add task to add local config if not present
* Add more achievements, refactor achievement code
* Add receiver flexibility and more achievements
- Add check to see if necessary to create achievement and add receiver
- Add remove receiver functionality when achievement is unlocked
* Add achievements and accommodations for switching states
- Fix startup code to avoid clobbering achievements on state switch
- Add a few more achievements
* Add achievements, ids. Update names, keys for consistency
* Add play time achievements
* [WIP] Add more achievements
* Add more achievements. Add bulk achievement check signal
* [WIP] Add achievements. Start savefile migration
* Add achievements. Add savefile migration
* Remove superfluous achievement stat
* Update lock files, fix merge conflict
2021-03-10 06:33:39 +00:00
|
|
|
|
|
|
|
fs.writeFileSync(path.join(tempDestBuildDir, "package.json"), packageJsonString);
|
|
|
|
|
2021-03-09 09:07:19 +00:00
|
|
|
cb();
|
|
|
|
});
|
|
|
|
|
|
|
|
gulp.task(taskPrefix + "standalone.prepareVDF", cb => {
|
2021-05-25 11:12:38 +00:00
|
|
|
if (!steam) {
|
|
|
|
cb();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2021-03-09 09:07:19 +00:00
|
|
|
const hash = buildutils.getRevision();
|
|
|
|
|
|
|
|
const steampipeDir = path.join(__dirname, "steampipe", "scripts");
|
|
|
|
const templateContents = fs
|
|
|
|
.readFileSync(path.join(steampipeDir, "app.vdf.template"), { encoding: "utf-8" })
|
|
|
|
.toString();
|
|
|
|
|
|
|
|
const convertedContents = templateContents.replace("$DESC$", "Commit " + hash);
|
|
|
|
fs.writeFileSync(path.join(steampipeDir, "app.vdf"), convertedContents);
|
|
|
|
|
|
|
|
cb();
|
|
|
|
});
|
|
|
|
|
2022-04-13 13:43:58 +00:00
|
|
|
gulp.task(taskPrefix + "standalone.prepareVDF.darwin", cb => {
|
|
|
|
if (!steam) {
|
|
|
|
cb();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
const hash = buildutils.getRevision();
|
|
|
|
const steampipeDir = path.join(__dirname, "steampipe-darwin", "scripts");
|
|
|
|
const templateContents = fs
|
|
|
|
.readFileSync(path.join(steampipeDir, "app.vdf.template"), { encoding: "utf-8" })
|
|
|
|
.toString();
|
|
|
|
|
|
|
|
const convertedContents = templateContents.replace("$DESC$", "Commit " + hash);
|
|
|
|
fs.writeFileSync(path.join(steampipeDir, "app.vdf"), convertedContents);
|
|
|
|
|
|
|
|
cb();
|
|
|
|
});
|
|
|
|
|
2021-03-09 09:07:19 +00:00
|
|
|
gulp.task(taskPrefix + "standalone.prepare.minifyCode", () => {
|
|
|
|
return gulp.src(path.join(electronBaseDir, "*.js")).pipe(gulp.dest(tempDestBuildDir));
|
|
|
|
});
|
|
|
|
|
|
|
|
gulp.task(taskPrefix + "standalone.prepare.copyGamefiles", () => {
|
2021-03-14 08:52:15 +00:00
|
|
|
return gulp.src("../build/**/*.*", { base: "../build" }).pipe(gulp.dest(tempDestBuildDir));
|
2021-03-09 09:07:19 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
gulp.task(taskPrefix + "standalone.killRunningInstances", cb => {
|
|
|
|
try {
|
|
|
|
execSync("taskkill /F /IM shapezio.exe");
|
|
|
|
} catch (ex) {
|
|
|
|
console.warn("Failed to kill running instances, maybe none are up.");
|
|
|
|
}
|
|
|
|
cb();
|
|
|
|
});
|
|
|
|
|
|
|
|
gulp.task(
|
|
|
|
taskPrefix + "standalone.prepare",
|
|
|
|
gulp.series(
|
|
|
|
taskPrefix + "standalone.killRunningInstances",
|
|
|
|
taskPrefix + "standalone.prepare.cleanup",
|
|
|
|
taskPrefix + "standalone.prepare.copyPrefab",
|
|
|
|
taskPrefix + "standalone.prepare.writePackageJson",
|
|
|
|
taskPrefix + "standalone.prepare.minifyCode",
|
|
|
|
taskPrefix + "standalone.prepare.copyGamefiles"
|
2020-05-09 14:45:23 +00:00
|
|
|
)
|
|
|
|
);
|
|
|
|
|
2021-03-09 09:07:19 +00:00
|
|
|
/**
|
|
|
|
*
|
2022-04-13 13:43:58 +00:00
|
|
|
* @param {'win32'|'linux'|'darwin'} platform
|
2021-03-09 09:07:19 +00:00
|
|
|
* @param {'x64'|'ia32'} arch
|
|
|
|
* @param {function():void} cb
|
|
|
|
*/
|
2022-04-13 13:43:58 +00:00
|
|
|
function packageStandalone(platform, arch, cb, isRelease = true) {
|
2021-03-09 09:07:19 +00:00
|
|
|
const tomlFile = fs.readFileSync(path.join(__dirname, ".itch.toml"));
|
Achievements (#1087)
* [WIP] Add boilerplate for achievement implementation
* Add config.local.template.js and rm cached copy of config.local.js
* [WIP] Implement painting, cutting, rotating achievements (to log only)
* [WIP] Refactor achievements, jsdoc fixes, add npm script
- Refactor achievements to make use of Signals
- Move implemented achievement interfaces to appropriate
platform folders (SteamAchievements in currently in use
in browser wrapper for testing)
- Fix invalid jsdocs
- Add dev-standalone script to package.json scripts
* Add steam/greenworks IPC calls and optional private-artifact dependency
* Include private artifacts in standalone builds
* Uncomment appid include
* [WIP] Add steam overlay fix, add hash to artifact dependency
* Update electron, greenworks. Add task to add local config if not present
* Add more achievements, refactor achievement code
* Add receiver flexibility and more achievements
- Add check to see if necessary to create achievement and add receiver
- Add remove receiver functionality when achievement is unlocked
* Add achievements and accommodations for switching states
- Fix startup code to avoid clobbering achievements on state switch
- Add a few more achievements
* Add achievements, ids. Update names, keys for consistency
* Add play time achievements
* [WIP] Add more achievements
* Add more achievements. Add bulk achievement check signal
* [WIP] Add achievements. Start savefile migration
* Add achievements. Add savefile migration
* Remove superfluous achievement stat
* Update lock files, fix merge conflict
2021-03-10 06:33:39 +00:00
|
|
|
const privateArtifactsPath = "node_modules/shapez.io-private-artifacts";
|
|
|
|
|
2021-05-25 19:29:44 +00:00
|
|
|
let asar = steam;
|
2021-05-25 11:12:38 +00:00
|
|
|
if (steam && fs.existsSync(path.join(tempDestBuildDir, privateArtifactsPath))) {
|
2021-05-25 19:29:44 +00:00
|
|
|
// @ts-expect-error
|
Achievements (#1087)
* [WIP] Add boilerplate for achievement implementation
* Add config.local.template.js and rm cached copy of config.local.js
* [WIP] Implement painting, cutting, rotating achievements (to log only)
* [WIP] Refactor achievements, jsdoc fixes, add npm script
- Refactor achievements to make use of Signals
- Move implemented achievement interfaces to appropriate
platform folders (SteamAchievements in currently in use
in browser wrapper for testing)
- Fix invalid jsdocs
- Add dev-standalone script to package.json scripts
* Add steam/greenworks IPC calls and optional private-artifact dependency
* Include private artifacts in standalone builds
* Uncomment appid include
* [WIP] Add steam overlay fix, add hash to artifact dependency
* Update electron, greenworks. Add task to add local config if not present
* Add more achievements, refactor achievement code
* Add receiver flexibility and more achievements
- Add check to see if necessary to create achievement and add receiver
- Add remove receiver functionality when achievement is unlocked
* Add achievements and accommodations for switching states
- Fix startup code to avoid clobbering achievements on state switch
- Add a few more achievements
* Add achievements, ids. Update names, keys for consistency
* Add play time achievements
* [WIP] Add more achievements
* Add more achievements. Add bulk achievement check signal
* [WIP] Add achievements. Start savefile migration
* Add achievements. Add savefile migration
* Remove superfluous achievement stat
* Update lock files, fix merge conflict
2021-03-10 06:33:39 +00:00
|
|
|
asar = { unpackDir: privateArtifactsPath };
|
|
|
|
}
|
2021-03-09 09:07:19 +00:00
|
|
|
|
|
|
|
packager({
|
|
|
|
dir: tempDestBuildDir,
|
Mod Support - 1.5.0 Update (#1361)
* initial modloader draft
* modloader features
* Refactor mods to use signals
* Add support for modifying and registering new transltions
* Minor adjustments
* Support for string building ids for mods
* Initial support for adding new buildings
* Refactor how mods are loaded to resolve circular dependencies and prepare for future mod loading
* Lazy Load mods to make sure all dependencies are loaded
* Expose all exported members automatically to mods
* Fix duplicate exports
* Allow loading mods from standalone
* update changelog
* Fix mods folder incorrect path
* Fix modloading in standalone
* Fix sprites not getting replaced, update demo mod
* Load dev mod via raw loader
* Improve mod developing so mods are directly ready to be deployed, load mods from local file server
* Proper mods ui
* Allow mods to register game systems and draw stuff
* Change mods path
* Fix sprites not loading
* Minor adjustments, closes #1333
* Add support for loading atlases via mods
* Add support for loading mods from external sources in DEV
* Add confirmation when loading mods
* Fix circular dependency
* Minor Keybindings refactor, add support for keybindings to mods, add support for dialogs to mods
* Add some mod signals
* refactor game loading states
* Make shapez exports global
* Start to make mods safer
* Refactor file system electron event handling
* Properly isolate electron renderer process
* Update to latest electron
* Show errors when loading mods
* Update confirm dialgo
* Minor restructure, start to add mod examples
* Allow adding custom themesw
* Add more examples and allow defining custom item processor operations
* Add interface to register new buildings
* Fixed typescript type errors (#1335)
* Refactor building registry, make it easier for mods to add new buildings
* Allow overriding existing methods
* Add more examples and more features
* More mod examples
* Make mod loading simpler
* Add example how to add custom drawings
* Remove unused code
* Minor modloader adjustments
* Support for rotation variants in mods (was broken previously)
* Allow mods to replace builtin sub shapes
* Add helper methods to extend classes
* Fix menu bar on mac os
* Remember window state
* Add support for paste signals
* Add example how to add custom components and systems
* Support for mod settings
* Add example for adding a new item type
* Update class extensions
* Minor adjustments
* Fix typo
* Add notification blocks mod example
* Add small tutorial
* Update readme
* Add better instructions
* Update JSDoc for Replacing Methods (#1336)
* upgraded types for overriding methods
* updated comments
Co-authored-by: Edward Badel <you@example.com>
* Direction lock now indicates when there is a building inbetween
* Fix mod examples
* Fix linter error
* Game state register (#1341)
* Added a gamestate register helper
Added a gamestate register helper
* Update mod_interface.js
* export build options
* Fix runBeforeMethod and runAfterMethod
* Minor game system code cleanup
* Belt path drawing optimization
* Fix belt path optimization
* Belt drawing improvements, again
* Do not render belts in statics disabled view
* Allow external URL to load more than one mod (#1337)
* Allow external URL to load more than one mod
Instead of loading the text returned from the remote server, load a JSON object with a `mods` field, containing strings of all the mods. This lets us work on more than one mod at a time or without separate repos. This will break tooling such as `create-shapezio-mod` though.
* Update modloader.js
* Prettier fixes
* Added link to create-shapezio-mod npm page (#1339)
Added link to create-shapezio-mod npm page: https://www.npmjs.com/package/create-shapezio-mod
* allow command line switch to load more than one mod (#1342)
* Fixed class handle type (#1345)
* Fixed class handle type
* Fixed import game state
* Minor adjustments
* Refactor item acceptor to allow only single direction slots
* Allow specifying minimumGameVersion
* Add sandbox example
* Replaced concatenated strings with template literals (#1347)
* Mod improvements
* Make wired pins component optional on the storage
* Fix mod examples
* Bind `this` for method overriding JSDoc (#1352)
* fix entity debugger reaching HTML elements (#1353)
* Store mods in savegame and show warning when it differs
* Closes #1357
* Fix All Shapez Exports Being Const (#1358)
* Allowed setting of variables inside webpack modules
* remove console log
* Fix stringification of things inside of eval
Co-authored-by: Edward Badel <you@example.com>
* Fix building placer intersection warning
* Add example for storing data in the savegame
* Fix double painter bug (#1349)
* Add example on how to extend builtin buildings
* update readme
* Disable steam achievements when playing with mods
* Update translations
Co-authored-by: Thomas (DJ1TJOO) <44841260+DJ1TJOO@users.noreply.github.com>
Co-authored-by: Bagel03 <70449196+Bagel03@users.noreply.github.com>
Co-authored-by: Edward Badel <you@example.com>
Co-authored-by: Emerald Block <69981203+EmeraldBlock@users.noreply.github.com>
Co-authored-by: saile515 <63782477+saile515@users.noreply.github.com>
Co-authored-by: Sense101 <67970865+Sense101@users.noreply.github.com>
2022-02-01 15:35:49 +00:00
|
|
|
appCopyright: "tobspr Games",
|
2021-03-09 09:07:19 +00:00
|
|
|
appVersion: getVersion(),
|
|
|
|
buildVersion: "1.0.0",
|
|
|
|
arch,
|
|
|
|
platform,
|
Achievements (#1087)
* [WIP] Add boilerplate for achievement implementation
* Add config.local.template.js and rm cached copy of config.local.js
* [WIP] Implement painting, cutting, rotating achievements (to log only)
* [WIP] Refactor achievements, jsdoc fixes, add npm script
- Refactor achievements to make use of Signals
- Move implemented achievement interfaces to appropriate
platform folders (SteamAchievements in currently in use
in browser wrapper for testing)
- Fix invalid jsdocs
- Add dev-standalone script to package.json scripts
* Add steam/greenworks IPC calls and optional private-artifact dependency
* Include private artifacts in standalone builds
* Uncomment appid include
* [WIP] Add steam overlay fix, add hash to artifact dependency
* Update electron, greenworks. Add task to add local config if not present
* Add more achievements, refactor achievement code
* Add receiver flexibility and more achievements
- Add check to see if necessary to create achievement and add receiver
- Add remove receiver functionality when achievement is unlocked
* Add achievements and accommodations for switching states
- Fix startup code to avoid clobbering achievements on state switch
- Add a few more achievements
* Add achievements, ids. Update names, keys for consistency
* Add play time achievements
* [WIP] Add more achievements
* Add more achievements. Add bulk achievement check signal
* [WIP] Add achievements. Start savefile migration
* Add achievements. Add savefile migration
* Remove superfluous achievement stat
* Update lock files, fix merge conflict
2021-03-10 06:33:39 +00:00
|
|
|
asar: asar,
|
2021-03-09 09:07:19 +00:00
|
|
|
executableName: "shapezio",
|
|
|
|
icon: path.join(electronBaseDir, "favicon"),
|
|
|
|
name: "shapez.io-standalone" + suffix,
|
|
|
|
out: tempDestDir,
|
|
|
|
overwrite: true,
|
2022-04-13 13:43:58 +00:00
|
|
|
appBundleId: "tobspr.shapezio.standalone",
|
2021-03-09 09:07:19 +00:00
|
|
|
appCategoryType: "public.app-category.games",
|
2022-04-13 13:43:58 +00:00
|
|
|
...(isRelease &&
|
|
|
|
platform === "darwin" && {
|
|
|
|
osxSign: {
|
|
|
|
"identity": process.env.SHAPEZ_CLI_APPLE_CERT_NAME,
|
|
|
|
"hardenedRuntime": true,
|
|
|
|
"entitlements": "entitlements.plist",
|
|
|
|
"entitlements-inherit": "entitlements.plist",
|
|
|
|
"signatureFlags": ["library"],
|
|
|
|
"version": "16.0.7",
|
|
|
|
},
|
|
|
|
osxNotarize: {
|
|
|
|
appleId: process.env.SHAPEZ_CLI_APPLE_ID,
|
|
|
|
appleIdPassword: process.env.SHAPEZ_CLI_APPLE_APP_PW,
|
|
|
|
},
|
|
|
|
}),
|
2021-03-09 09:07:19 +00:00
|
|
|
}).then(
|
|
|
|
appPaths => {
|
|
|
|
console.log("Packages created:", appPaths);
|
|
|
|
appPaths.forEach(appPath => {
|
|
|
|
if (!fs.existsSync(appPath)) {
|
|
|
|
console.error("Bad app path gotten:", appPath);
|
|
|
|
return;
|
|
|
|
}
|
2020-09-27 21:14:43 +00:00
|
|
|
|
2021-05-25 11:12:38 +00:00
|
|
|
if (steam) {
|
|
|
|
fs.writeFileSync(
|
|
|
|
path.join(appPath, "LICENSE"),
|
|
|
|
fs.readFileSync(path.join(__dirname, "..", "LICENSE"))
|
|
|
|
);
|
2020-07-06 13:08:17 +00:00
|
|
|
|
2021-05-25 11:12:38 +00:00
|
|
|
fse.copySync(
|
|
|
|
path.join(tempDestBuildDir, "steam_appid.txt"),
|
|
|
|
path.join(appPath, "steam_appid.txt")
|
|
|
|
);
|
Achievements (#1087)
* [WIP] Add boilerplate for achievement implementation
* Add config.local.template.js and rm cached copy of config.local.js
* [WIP] Implement painting, cutting, rotating achievements (to log only)
* [WIP] Refactor achievements, jsdoc fixes, add npm script
- Refactor achievements to make use of Signals
- Move implemented achievement interfaces to appropriate
platform folders (SteamAchievements in currently in use
in browser wrapper for testing)
- Fix invalid jsdocs
- Add dev-standalone script to package.json scripts
* Add steam/greenworks IPC calls and optional private-artifact dependency
* Include private artifacts in standalone builds
* Uncomment appid include
* [WIP] Add steam overlay fix, add hash to artifact dependency
* Update electron, greenworks. Add task to add local config if not present
* Add more achievements, refactor achievement code
* Add receiver flexibility and more achievements
- Add check to see if necessary to create achievement and add receiver
- Add remove receiver functionality when achievement is unlocked
* Add achievements and accommodations for switching states
- Fix startup code to avoid clobbering achievements on state switch
- Add a few more achievements
* Add achievements, ids. Update names, keys for consistency
* Add play time achievements
* [WIP] Add more achievements
* Add more achievements. Add bulk achievement check signal
* [WIP] Add achievements. Start savefile migration
* Add achievements. Add savefile migration
* Remove superfluous achievement stat
* Update lock files, fix merge conflict
2021-03-10 06:33:39 +00:00
|
|
|
|
2021-05-25 11:12:38 +00:00
|
|
|
fs.writeFileSync(path.join(appPath, ".itch.toml"), tomlFile);
|
2020-07-06 13:08:17 +00:00
|
|
|
|
2021-05-25 11:12:38 +00:00
|
|
|
if (platform === "linux") {
|
|
|
|
fs.writeFileSync(
|
|
|
|
path.join(appPath, "play.sh"),
|
|
|
|
'#!/usr/bin/env bash\n./shapezio --no-sandbox "$@"\n'
|
|
|
|
);
|
|
|
|
fs.chmodSync(path.join(appPath, "play.sh"), 0o775);
|
|
|
|
}
|
2022-04-13 13:43:58 +00:00
|
|
|
if (platform === "darwin") {
|
|
|
|
if (!isRelease) {
|
|
|
|
fse.copySync(
|
|
|
|
path.join(tempDestBuildDir, "steam_appid.txt"),
|
|
|
|
path.join(
|
|
|
|
path.join(
|
|
|
|
appPath,
|
|
|
|
"shapez.io-standalone.app",
|
|
|
|
"Contents",
|
|
|
|
"MacOS"
|
|
|
|
),
|
|
|
|
"steam_appid.txt"
|
|
|
|
)
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
2021-03-09 09:07:19 +00:00
|
|
|
}
|
|
|
|
});
|
2020-07-06 13:08:17 +00:00
|
|
|
|
2021-03-09 09:07:19 +00:00
|
|
|
cb();
|
|
|
|
},
|
|
|
|
err => {
|
|
|
|
console.error("Packaging error:", err);
|
|
|
|
cb();
|
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|
2020-07-06 13:08:17 +00:00
|
|
|
|
2022-04-13 13:43:58 +00:00
|
|
|
// Manual signing with patched @electron/osx-sign (we need --no-strict)
|
|
|
|
gulp.task(taskPrefix + "standalone.package.prod.darwin64.signManually", cb =>
|
|
|
|
packageStandalone(
|
|
|
|
"darwin",
|
|
|
|
"x64",
|
|
|
|
() => {
|
|
|
|
const appFile = path.join(tempDestDir, "shapez.io-standalone-darwin-x64");
|
|
|
|
const appFileInner = path.join(appFile, "shapez.io-standalone.app");
|
|
|
|
const appIdDest = path.join(
|
|
|
|
path.join(appFileInner, "Contents", "MacOS"),
|
|
|
|
"steam_appid.txt"
|
|
|
|
);
|
|
|
|
console.warn("++ Preparing ++");
|
|
|
|
fse.copySync(path.join(tempDestBuildDir, "steam_appid.txt"), appIdDest);
|
|
|
|
|
|
|
|
console.warn("++ Signing ++");
|
|
|
|
console.warn("Signing steam_appid.txt");
|
|
|
|
|
|
|
|
execSync(
|
|
|
|
`codesign --force --verbose --options runtime --timestamp --no-strict --sign "${
|
|
|
|
process.env.SHAPEZ_CLI_APPLE_CERT_NAME
|
|
|
|
}" --entitlements "${path.join(__dirname, "entitlements.plist")}" ${appIdDest}`,
|
|
|
|
{
|
|
|
|
cwd: appFile,
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
console.warn("Base dir:", appFile);
|
|
|
|
|
|
|
|
signAsync({
|
|
|
|
app: appFileInner,
|
|
|
|
hardenedRuntime: true,
|
|
|
|
identity: process.env.SHAPEZ_CLI_APPLE_CERT_NAME,
|
|
|
|
strictVerify: false,
|
|
|
|
|
|
|
|
version: "16.0.7",
|
|
|
|
type: "distribution",
|
|
|
|
optionsForFile: f => {
|
|
|
|
return {
|
|
|
|
entitlements: path.join(__dirname, "entitlements.plist"),
|
|
|
|
hardenedRuntime: true,
|
|
|
|
signatureFlags: ["runtime"],
|
|
|
|
};
|
|
|
|
},
|
|
|
|
}).then(() => {
|
|
|
|
execSync(
|
|
|
|
`codesign --verify --verbose ${path.join(appFile, "shapez.io-standalone.app")}`,
|
|
|
|
{
|
|
|
|
cwd: appFile,
|
|
|
|
}
|
|
|
|
);
|
|
|
|
|
|
|
|
console.warn("++ Notarizing ++");
|
|
|
|
electronNotarize
|
|
|
|
.notarize({
|
|
|
|
appPath: path.join(appFile, "shapez.io-standalone.app"),
|
|
|
|
tool: "legacy",
|
|
|
|
appBundleId: "tobspr.shapezio.standalone",
|
|
|
|
|
|
|
|
appleId: process.env.SHAPEZ_CLI_APPLE_ID,
|
|
|
|
appleIdPassword: process.env.SHAPEZ_CLI_APPLE_APP_PW,
|
|
|
|
teamId: process.env.SHAPEZ_CLI_APPLE_TEAM_ID,
|
|
|
|
})
|
|
|
|
.then(() => {
|
|
|
|
console.warn("-> Notarized!");
|
|
|
|
cb();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
},
|
|
|
|
false
|
|
|
|
)
|
|
|
|
);
|
|
|
|
|
2021-03-14 08:52:15 +00:00
|
|
|
gulp.task(taskPrefix + "standalone.package.prod.win64", cb => packageStandalone("win32", "x64", cb));
|
2021-03-09 09:07:19 +00:00
|
|
|
gulp.task(taskPrefix + "standalone.package.prod.linux64", cb =>
|
|
|
|
packageStandalone("linux", "x64", cb)
|
2020-05-09 14:45:23 +00:00
|
|
|
);
|
2022-04-13 13:43:58 +00:00
|
|
|
gulp.task(taskPrefix + "standalone.package.prod.darwin64", cb =>
|
|
|
|
packageStandalone("darwin", "x64", cb)
|
|
|
|
);
|
|
|
|
gulp.task(taskPrefix + "standalone.package.prod.darwin64.unsigned", cb =>
|
|
|
|
packageStandalone("darwin", "x64", cb, false)
|
|
|
|
);
|
2020-05-09 14:45:23 +00:00
|
|
|
|
2021-03-09 09:07:19 +00:00
|
|
|
gulp.task(
|
|
|
|
taskPrefix + "standalone.package.prod",
|
|
|
|
gulp.series(
|
|
|
|
taskPrefix + "standalone.prepare",
|
|
|
|
gulp.parallel(
|
|
|
|
taskPrefix + "standalone.package.prod.win64",
|
2022-04-13 13:43:58 +00:00
|
|
|
taskPrefix + "standalone.package.prod.linux64",
|
|
|
|
taskPrefix + "standalone.package.prod.darwin64"
|
2021-03-09 09:07:19 +00:00
|
|
|
)
|
2020-06-13 15:59:25 +00:00
|
|
|
)
|
2021-03-09 09:07:19 +00:00
|
|
|
);
|
|
|
|
}
|
2020-05-09 14:45:23 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = { gulptasksStandalone };
|