From 2cbda7f9f6e340341f72605837488a5e98ada78d Mon Sep 17 00:00:00 2001 From: Gumball73 <66757746+Gumball73@users.noreply.github.com> Date: Fri, 12 Mar 2021 17:55:32 +0000 Subject: [PATCH 01/15] Update base-pt-PT.yaml (#1095) * Update base-pt-PT.yaml * Update base-pt-PT.yaml --- translations/base-pt-PT.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/translations/base-pt-PT.yaml b/translations/base-pt-PT.yaml index 502b0e3f..ab10e6cd 100644 --- a/translations/base-pt-PT.yaml +++ b/translations/base-pt-PT.yaml @@ -14,14 +14,14 @@ steamPage: Embora no inicio apenas tenhas de processar formas, mais tarde, vais ter de as colorir - para isto terás de extrair e misturar cores! Comprar o jogo na Steam dar-te-á acesso à versão completa, mas também podes jogar a versão demo em shapez.io primeiro e decidir mais tarde! - what_others_say: What people say about shapez.io - nothernlion_comment: This game is great - I'm having a wonderful time playing, - and time has flown by. - notch_comment: Oh crap. I really should sleep, but I think I just figured out - how to make a computer in shapez.io - steam_review_comment: This game has stolen my life and I don't want it back. - Very chill factory game that won't let me stop making my lines more - efficient. + what_others_say: O que dizem sobre o shapez.io + nothernlion_comment: Este é um jogo fantástico - Estou a ter um bom bocado enquanto o jogo, + e o tempo parece que voa. + notch_comment: Ora bolas. Eu devia ir dormir, mas acho que acabei de descobrir + como criar computorizar no shapez.io + steam_review_comment: Este jogo roubou a minha vida e não a quero de volta. + Jogo de fábrica relaxante que não me deixa parar de fazer as minhas linhas + cada vez mais eficientes. global: loading: A Carregar error: Erro @@ -318,7 +318,7 @@ ingame: purple: Roxo cyan: Ciano white: Branco - uncolored: Incolor + uncolored: Sem cor black: Preto shapeViewer: title: Camadas From 38bb393190faf0d9f8c3175c4b99d811f669e27e Mon Sep 17 00:00:00 2001 From: tobspr Date: Fri, 12 Mar 2021 20:31:50 +0100 Subject: [PATCH 02/15] Disable nft until properly announced --- src/css/states/main_menu.scss | 19 ++----------------- src/js/core/config.js | 1 - src/js/states/main_menu.js | 22 ---------------------- 3 files changed, 2 insertions(+), 40 deletions(-) diff --git a/src/css/states/main_menu.scss b/src/css/states/main_menu.scss index 7d3872fb..b21d465f 100644 --- a/src/css/states/main_menu.scss +++ b/src/css/states/main_menu.scss @@ -445,13 +445,13 @@ justify-content: center; align-items: flex-end; width: 100%; - grid-template-columns: auto auto auto auto 1fr; + grid-template-columns: auto auto auto 1fr; @include S(padding, 10px); box-sizing: border-box; @include S(grid-gap, 4px); &.china { - grid-template-columns: auto auto 1fr; + grid-template-columns: auto 1fr; } .author { @@ -501,15 +501,6 @@ background-color: $linkBgHover; } - &.nftLink { - background-color: #3291e9; - color: #fff; - - &:hover { - background-color: darken(#3291e9, 5); - } - } - .thirdpartyLogo { display: inline-block; @include S(width, 50px); @@ -524,12 +515,6 @@ background-image: uiResource("main_menu/discord.png"); background-size: 95%; } - - &.nftLogo { - /* @load-async */ - background-image: uiResource("main_menu/opensea.png"); - background-size: 80%; - } } } diff --git a/src/js/core/config.js b/src/js/core/config.js index 7f7e9ff1..d5dc7089 100644 --- a/src/js/core/config.js +++ b/src/js/core/config.js @@ -16,7 +16,6 @@ export const THIRDPARTY_URLS = { github: "https://github.com/tobspr/shapez.io", reddit: "https://www.reddit.com/r/shapezio", shapeViewer: "https://viewer.shapez.io", - nftTokens: "https://opensea.io/collection/shapez", standaloneStorePage: "https://store.steampowered.com/app/1318690/shapezio/", diff --git a/src/js/states/main_menu.js b/src/js/states/main_menu.js index 4e42fbe9..3afad9bf 100644 --- a/src/js/states/main_menu.js +++ b/src/js/states/main_menu.js @@ -109,16 +109,6 @@ export class MainMenuState extends GameState { ${G_CHINA_VERSION ? "" : `${T.mainMenu.helpTranslate}`} - ${ - G_CHINA_VERSION - ? "" - : ` - - shapez.io NFT Tokens - - ` - } -
${T.mainMenu.madeBy.replace( "", @@ -262,18 +252,6 @@ export class MainMenuState extends GameState { { preventClick: true } ); - const nftLink = this.htmlElement.querySelector(".nftLink"); - if (nftLink) { - this.trackClicks( - nftLink, - () => { - this.app.analytics.trackUiClick("main_menu_link_nft"); - this.app.platformWrapper.openExternalLink(THIRDPARTY_URLS.nftTokens); - }, - { preventClick: true } - ); - } - const githubLink = this.htmlElement.querySelector(".githubLink"); if (githubLink) { this.trackClicks( From 71d5b02e023d8eac6a72f3d63b8ed46e6d35cf6c Mon Sep 17 00:00:00 2001 From: tobspr Date: Sat, 13 Mar 2021 08:11:12 +0100 Subject: [PATCH 03/15] Fix spelling mistake in changelog --- src/js/changelog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/changelog.js b/src/js/changelog.js index 4bdedab4..1ce2a0c4 100644 --- a/src/js/changelog.js +++ b/src/js/changelog.js @@ -7,7 +7,7 @@ export const CHANGELOG = [ "There are now 45 Steam Achievements!", "Fixed constant signals being editable from the regular layer", "Fixed items still overlapping sometimes between buildings and belts", - "The game is now available in finish, italian, romanian and ukrainian! (Thanks to all contributors!)", + "The game is now available in finnish, italian, romanian and ukrainian! (Thanks to all contributors!)", "Updated translations (Thanks to all contributors!)", ], }, From 7ed6a9c7b6e12f889d70ea068f89068f7bf764ad Mon Sep 17 00:00:00 2001 From: Rijicho <32390417+Rijicho@users.noreply.github.com> Date: Sun, 14 Mar 2021 01:12:43 +0900 Subject: [PATCH 04/15] Revert some inappropriate updates on Japanese tips (#1096) Some Japanese translations of tips were updated by the commit 65d4c64, but it was just deletion and English duplication of some existing tips, so I fixed them in accordance with the latest English tips. --- translations/base-ja.yaml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/translations/base-ja.yaml b/translations/base-ja.yaml index 0daa9850..d27d7683 100644 --- a/translations/base-ja.yaml +++ b/translations/base-ja.yaml @@ -869,9 +869,9 @@ tips: - 切断機は配置された向きを考慮せず、常に垂直に切断します。 - ストレージは左側の出力を優先します。 - 増築可能なデザインを作るために時間を使ってください。それだけの価値があります! - - Invest time to build repeatable designs - it's worth it! - - ALTを押しながらベルトを設置すると、逆向きに設置できます。 - - You can hold ALT to invert the direction of placed belts. + - SHIFTを使用すると複数の建物を一度に配置できます。 + - ALTを押しながらベルトを設置すると、向きを逆転できます。 + - 効率が重要です! - ハブから遠くに離れるほど、形状資源はより複雑な形になります。 - 機械の速度には上限があるので、最大効率を得るためには入力を分割してください。 - 効率を最大化するために分配機/合流機を使用できます。 @@ -887,8 +887,8 @@ tips: - モジュールがあれば、空間はただの認識に過ぎなくなる――生ある人間に対する気遣いだ。 - 設計図としての工場を別に作っておくと、工場のモジュール化において重要な役割を果たします。 - 混合機をよく見ると、色の混ぜ方が解ります。 - - Have a closer look at the color mixer, and your questions will be answered. - - Use CTRL + Click to select an area. + - CTRL + クリックで範囲選択ができます。 + - ハブに近すぎる設計物を作ると、のちの設計の邪魔になるかもしれません。 - アップグレードリストの各形状の横にあるピンのアイコンは、その形状を画面左に固定表示します。 - 三原色全てを混ぜ合わせると白になります! - マップは無限の広さがあります。臆せずに拡張してください。 @@ -902,4 +902,3 @@ tips: - F4を押すことで、FPSとTickレートを表示することができます。 - F4を2回押すと、マウスとカメラの座標を表示することができます。 - 左のピン留めされた図形をクリックすると、固定を解除できます。 - - You can click a pinned shape on the left side to unpin it. From 5dddb846efaec696088c5841855f2114343d14e5 Mon Sep 17 00:00:00 2001 From: tobspr Date: Sun, 14 Mar 2021 08:51:10 +0100 Subject: [PATCH 05/15] Attempt #1 on preserving savegame files --- electron/index.js | 116 ++++++++++++++---- electron/package.json | 3 + electron/yarn.lock | 5 + src/js/platform/browser/storage.js | 5 - src/js/platform/browser/storage_indexed_db.js | 6 - src/js/platform/electron/storage.js | 8 -- src/js/platform/storage.js | 10 -- 7 files changed, 100 insertions(+), 53 deletions(-) diff --git a/electron/index.js b/electron/index.js index d078b649..14a19a64 100644 --- a/electron/index.js +++ b/electron/index.js @@ -3,10 +3,11 @@ const { app, BrowserWindow, Menu, MenuItem, session } = require("electron"); const path = require("path"); const url = require("url"); -const childProcess = require("child_process"); const { ipcMain, shell } = require("electron"); const fs = require("fs"); -const steam = require('./steam'); +const steam = require("./steam"); +const asyncLock = require("async-lock"); + const isDev = process.argv.indexOf("--dev") >= 0; const isLocal = process.argv.indexOf("--local") >= 0; @@ -153,7 +154,82 @@ ipcMain.on("exit-app", (event, flag) => { app.quit(); }); -function performFsJob(job) { +let renameCounter = 1; + +const fileLock = new asyncLock({ + timeout: 30000, + maxPending: 1000, +}); + +function niceFileName(filename) { + return filename.replace(storePath, "@"); +} + +async function writeFileSafe(filename, contents) { + ++renameCounter; + const prefix = "[ " + renameCounter + ":" + niceFileName(filename) + " ] "; + const transactionId = String(new Date().getTime()) + "." + renameCounter; + + if (fileLock.isBusy()) { + console.warn(prefix, "Concurrent write process on", filename); + } + + fileLock.acquire(filename, async () => { + console.log(prefix, "Starting write on", niceFileName(filename), "in transaction", transactionId); + + if (!fs.existsSync(filename)) { + // this one is easy + console.log(prefix, "Writing file instantly because it does not exist:", niceFileName(filename)); + await fs.promises.writeFile(filename, contents, { encoding: "utf8" }); + return; + } + + // first, write a temporary file (.tmp-XXX) + const tempName = filename + ".tmp-" + transactionId; + console.log(prefix, "Writing temporary file", niceFileName(tempName)); + await fs.promises.writeFile(tempName, contents, { encoding: "utf8" }); + + // now, rename the original file to (.backup-XXX) + const oldTemporaryName = filename + ".backup-" + transactionId; + console.log( + prefix, + "Renaming old file", + niceFileName(filename), + "to", + niceFileName(oldTemporaryName) + ); + await fs.promises.rename(filename, oldTemporaryName); + + // now, rename the temporary file (.tmp-XXX) to the target + console.log( + prefix, + "Renaming the temporary file", + niceFileName(tempName), + "to the original", + niceFileName(filename) + ); + await fs.promises.rename(tempName, filename); + + // we are done now, try to create a backup, but don't fail if the backup fails + try { + // check if there is an old backup file + const backupFileName = filename + ".backup"; + if (fs.existsSync(backupFileName)) { + console.log(prefix, "Deleting old backup file", niceFileName(backupFileName)); + // delete the old backup + await fs.promises.unlink(backupFileName); + } + + // rename the old file to the new backup file + console.log(prefix, "Moving", niceFileName(oldTemporaryName), "to the backup file location"); + await fs.promises.rename(oldTemporaryName, backupFileName); + } catch (ex) { + console.error(prefix, "Failed to switch backup files:", ex); + } + }); +} + +async function performFsJob(job) { const fname = path.join(storePath, job.filename); switch (job.type) { @@ -165,38 +241,35 @@ function performFsJob(job) { }; } - let contents = ""; try { - contents = fs.readFileSync(fname, { encoding: "utf8" }); + const data = await fs.promises.readFile(fname, { encoding: "utf8" }); + return { + success: true, + data, + }; } catch (ex) { return { error: ex, }; } - - return { - success: true, - data: contents, - }; } case "write": { try { - fs.writeFileSync(fname, job.contents); + await writeFileSafe(fname, job.contents); + return { + success: true, + data: job.contents, + }; } catch (ex) { return { error: ex, }; } - - return { - success: true, - data: job.contents, - }; } case "delete": { try { - fs.unlinkSync(fname); + await fs.promises.unlink(fname); } catch (ex) { return { error: ex, @@ -214,15 +287,10 @@ function performFsJob(job) { } } -ipcMain.on("fs-job", (event, arg) => { - const result = performFsJob(arg); +ipcMain.on("fs-job", async (event, arg) => { + const result = await performFsJob(arg); event.reply("fs-response", { id: arg.id, result }); }); -ipcMain.on("fs-sync-job", (event, arg) => { - const result = performFsJob(arg); - event.returnValue = result; -}); - steam.init(isDev); steam.listen(); diff --git a/electron/package.json b/electron/package.json index 9b5a99d2..79a6536b 100644 --- a/electron/package.json +++ b/electron/package.json @@ -14,5 +14,8 @@ }, "optionalDependencies": { "shapez.io-private-artifacts": "github:tobspr/shapez.io-private-artifacts#abi-v85" + }, + "dependencies": { + "async-lock": "^1.2.8" } } diff --git a/electron/yarn.lock b/electron/yarn.lock index 06a6bf25..f3101361 100644 --- a/electron/yarn.lock +++ b/electron/yarn.lock @@ -35,6 +35,11 @@ resolved "https://registry.npmjs.org/@types/node/-/node-12.20.5.tgz" integrity sha512-5Oy7tYZnu3a4pnJ//d4yVvOImExl4Vtwf0D40iKUlU+XlUsyV9iyFWyCFlwy489b72FMAik/EFwRkNLjjOdSPg== +async-lock@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/async-lock/-/async-lock-1.2.8.tgz#7b02bdfa2de603c0713acecd11184cf97bbc7c4c" + integrity sha512-G+26B2jc0Gw0EG/WN2M6IczuGepBsfR1+DtqLnyFSH4p2C668qkOCtEkGNVEaaNAVlYwEMazy1+/jnLxltBkIQ== + boolean@^3.0.1: version "3.0.2" resolved "https://registry.npmjs.org/boolean/-/boolean-3.0.2.tgz" diff --git a/src/js/platform/browser/storage.js b/src/js/platform/browser/storage.js index 2a399e54..ac0fa4ca 100644 --- a/src/js/platform/browser/storage.js +++ b/src/js/platform/browser/storage.js @@ -58,11 +58,6 @@ export class StorageImplBrowser extends StorageInterface { }); } - writeFileSyncIfSupported(filename, contents) { - window.localStorage.setItem(filename, contents); - return true; - } - readFileAsync(filename) { if (this.currentBusyFilename === filename) { logger.warn("Attempt to read", filename, "while write progress on it is ongoing!"); diff --git a/src/js/platform/browser/storage_indexed_db.js b/src/js/platform/browser/storage_indexed_db.js index 0c1dbe4f..1028eed3 100644 --- a/src/js/platform/browser/storage_indexed_db.js +++ b/src/js/platform/browser/storage_indexed_db.js @@ -94,12 +94,6 @@ export class StorageImplBrowserIndexedDB extends StorageInterface { }); } - writeFileSyncIfSupported(filename, contents) { - // Not supported - this.writeFileAsync(filename, contents); - return true; - } - readFileAsync(filename) { if (!this.database) { return Promise.reject("Storage not ready"); diff --git a/src/js/platform/electron/storage.js b/src/js/platform/electron/storage.js index 7736fcb4..41ed1746 100644 --- a/src/js/platform/electron/storage.js +++ b/src/js/platform/electron/storage.js @@ -46,14 +46,6 @@ export class StorageImplElectron extends StorageInterface { }); } - writeFileSyncIfSupported(filename, contents) { - return getIPCRenderer().sendSync("fs-sync-job", { - type: "write", - filename, - contents, - }); - } - readFileAsync(filename) { return new Promise((resolve, reject) => { // ipcMain diff --git a/src/js/platform/storage.js b/src/js/platform/storage.js index 1c7fc54b..165ee828 100644 --- a/src/js/platform/storage.js +++ b/src/js/platform/storage.js @@ -30,16 +30,6 @@ export class StorageInterface { return Promise.reject(); } - /** - * Tries to write a file synchronously, used in unload handler - * @param {string} filename - * @param {string} contents - */ - writeFileSyncIfSupported(filename, contents) { - abstract; - return false; - } - /** * Reads a string asynchronously. Returns Promise if file was not found. * @param {string} filename From 858057c5a93c4c96e3d2dbecec2d22f7562b3d5d Mon Sep 17 00:00:00 2001 From: Tobias Springer Date: Sun, 14 Mar 2021 08:56:48 +0100 Subject: [PATCH 06/15] Switch to electron 10 --- electron/package.json | 2 +- electron/yarn.lock | 180 +++++++++++++++++++++--------------------- 2 files changed, 91 insertions(+), 91 deletions(-) diff --git a/electron/package.json b/electron/package.json index 79a6536b..893e3609 100644 --- a/electron/package.json +++ b/electron/package.json @@ -10,7 +10,7 @@ "start": "electron --disable-direct-composition --in-process-gpu ." }, "devDependencies": { - "electron": "11.3.0" + "electron": "10.4.0" }, "optionalDependencies": { "shapez.io-private-artifacts": "github:tobspr/shapez.io-private-artifacts#abi-v85" diff --git a/electron/yarn.lock b/electron/yarn.lock index f3101361..8c5b1dec 100644 --- a/electron/yarn.lock +++ b/electron/yarn.lock @@ -4,7 +4,7 @@ "@electron/get@^1.0.1": version "1.12.4" - resolved "https://registry.npmjs.org/@electron/get/-/get-1.12.4.tgz" + resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.12.4.tgz#a5971113fc1bf8fa12a8789dc20152a7359f06ab" integrity sha512-6nr9DbJPUR9Xujw6zD3y+rS95TyItEVM0NVjt1EehY2vUWfIgPiIPVHxCvaTS0xr2B+DRxovYVKbuOWqC35kjg== dependencies: debug "^4.1.1" @@ -20,19 +20,19 @@ "@sindresorhus/is@^0.14.0": version "0.14.0" - resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== "@szmarczak/http-timer@^1.1.2": version "1.1.2" - resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== dependencies: defer-to-connect "^1.0.1" "@types/node@^12.0.12": version "12.20.5" - resolved "https://registry.npmjs.org/@types/node/-/node-12.20.5.tgz" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.5.tgz#4ca82a766f05c359fd6c77505007e5a272f4bb9b" integrity sha512-5Oy7tYZnu3a4pnJ//d4yVvOImExl4Vtwf0D40iKUlU+XlUsyV9iyFWyCFlwy489b72FMAik/EFwRkNLjjOdSPg== async-lock@^1.2.8: @@ -42,22 +42,22 @@ async-lock@^1.2.8: boolean@^3.0.1: version "3.0.2" - resolved "https://registry.npmjs.org/boolean/-/boolean-3.0.2.tgz" + resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.0.2.tgz#df1baa18b6a2b0e70840475e1d93ec8fe75b2570" integrity sha512-RwywHlpCRc3/Wh81MiCKun4ydaIFyW5Ea6JbL6sRCVx5q5irDw7pMXBUFYF/jArQ6YrG36q0kpovc9P/Kd3I4g== buffer-crc32@~0.2.3: version "0.2.13" - resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= buffer-from@^1.0.0: version "1.1.1" - resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== cacheable-request@^6.0.0: version "6.1.0" - resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== dependencies: clone-response "^1.0.2" @@ -70,14 +70,14 @@ cacheable-request@^6.0.0: clone-response@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= dependencies: mimic-response "^1.0.0" concat-stream@^1.6.2: version "1.6.2" - resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: buffer-from "^1.0.0" @@ -87,7 +87,7 @@ concat-stream@^1.6.2: config-chain@^1.1.11: version "1.1.12" - resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== dependencies: ini "^1.3.4" @@ -95,61 +95,61 @@ config-chain@^1.1.11: core-js@^3.6.5: version "3.9.1" - resolved "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.9.1.tgz#cec8de593db8eb2a85ffb0dbdeb312cb6e5460ae" integrity sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg== core-util-is@~1.0.0: version "1.0.2" - resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= debug@^2.6.9: version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== dependencies: ms "2.0.0" debug@^4.1.0, debug@^4.1.1: version "4.3.1" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: ms "2.1.2" decompress-response@^3.3.0: version "3.3.0" - resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= dependencies: mimic-response "^1.0.0" defer-to-connect@^1.0.1: version "1.1.3" - resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== define-properties@^1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== dependencies: object-keys "^1.0.12" detect-node@^2.0.4: version "2.0.4" - resolved "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== duplexer3@^0.1.4: version "0.1.4" - resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -electron@11.3.0: - version "11.3.0" - resolved "https://registry.npmjs.org/electron/-/electron-11.3.0.tgz" - integrity sha512-MhdS0gok3wZBTscLBbYrOhLaQybCSAfkupazbK1dMP5c+84eVMxJE/QGohiWQkzs0tVFIJsAHyN19YKPbelNrQ== +electron@10.4.0: + version "10.4.0" + resolved "https://registry.yarnpkg.com/electron/-/electron-10.4.0.tgz#018385914474b56110a5a43087a53c114b67c08d" + integrity sha512-qK8OOCWuNvEFWThmjkukkqDwIpBqULlDuMXVC9MC/2P4UaWJEjIYvBmBuTyxtFcKoE3kWvcWyeRDUuvzVxxXjA== dependencies: "@electron/get" "^1.0.1" "@types/node" "^12.0.12" @@ -157,34 +157,34 @@ electron@11.3.0: encodeurl@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= end-of-stream@^1.1.0: version "1.4.4" - resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: once "^1.4.0" env-paths@^2.2.0: version "2.2.1" - resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== es6-error@^4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz" + resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== escape-string-regexp@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== extract-zip@^1.0.3: version "1.7.0" - resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== dependencies: concat-stream "^1.6.2" @@ -194,14 +194,14 @@ extract-zip@^1.0.3: fd-slicer@~1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= dependencies: pend "~1.2.0" fs-extra@^8.1.0: version "8.1.0" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== dependencies: graceful-fs "^4.2.0" @@ -210,21 +210,21 @@ fs-extra@^8.1.0: get-stream@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: pump "^3.0.0" get-stream@^5.1.0: version "5.2.0" - resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" global-agent@^2.0.2: version "2.1.12" - resolved "https://registry.npmjs.org/global-agent/-/global-agent-2.1.12.tgz" + resolved "https://registry.yarnpkg.com/global-agent/-/global-agent-2.1.12.tgz#e4ae3812b731a9e81cbf825f9377ef450a8e4195" integrity sha512-caAljRMS/qcDo69X9BfkgrihGUgGx44Fb4QQToNQjsiWh+YlQ66uqYVAdA8Olqit+5Ng0nkz09je3ZzANMZcjg== dependencies: boolean "^3.0.1" @@ -237,7 +237,7 @@ global-agent@^2.0.2: global-tunnel-ng@^2.7.1: version "2.7.1" - resolved "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz" + resolved "https://registry.yarnpkg.com/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz#d03b5102dfde3a69914f5ee7d86761ca35d57d8f" integrity sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg== dependencies: encodeurl "^1.0.2" @@ -247,14 +247,14 @@ global-tunnel-ng@^2.7.1: globalthis@^1.0.1: version "1.0.2" - resolved "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.2.tgz#2a235d34f4d8036219f7e34929b5de9e18166b8b" integrity sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ== dependencies: define-properties "^1.1.3" got@^9.6.0: version "9.6.0" - resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== dependencies: "@sindresorhus/is" "^0.14.0" @@ -271,117 +271,117 @@ got@^9.6.0: graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.6" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== http-cache-semantics@^4.0.0: version "4.1.0" - resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== ini@^1.3.4: version "1.3.8" - resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== isarray@~1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= json-buffer@3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= json-stringify-safe@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= jsonfile@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= optionalDependencies: graceful-fs "^4.1.6" keyv@^3.0.0: version "3.1.0" - resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== dependencies: json-buffer "3.0.0" lodash@^4.17.10: version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== lowercase-keys@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== lru-cache@^6.0.0: version "6.0.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: yallist "^4.0.0" matcher@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== dependencies: escape-string-regexp "^4.0.0" mimic-response@^1.0.0, mimic-response@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== minimist@^1.2.5: version "1.2.5" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== mkdirp@^0.5.4: version "0.5.5" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: minimist "^1.2.5" ms@2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= ms@2.1.2: version "2.1.2" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== normalize-url@^4.1.0: version "4.5.0" - resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== npm-conf@^1.1.3: version "1.1.3" - resolved "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz" + resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== dependencies: config-chain "^1.1.11" @@ -389,54 +389,54 @@ npm-conf@^1.1.3: object-keys@^1.0.12: version "1.1.1" - resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== once@^1.3.1, once@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: wrappy "1" p-cancelable@^1.0.0: version "1.1.0" - resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== pend@~1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= pify@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= prepend-http@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== progress@^2.0.3: version "2.0.3" - resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== proto-list@~1.2.1: version "1.2.4" - resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= pump@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: end-of-stream "^1.1.0" @@ -444,7 +444,7 @@ pump@^3.0.0: readable-stream@^2.2.2: version "2.3.7" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== dependencies: core-util-is "~1.0.0" @@ -457,14 +457,14 @@ readable-stream@^2.2.2: responselike@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= dependencies: lowercase-keys "^1.0.0" roarr@^2.15.3: version "2.15.4" - resolved "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz" + resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A== dependencies: boolean "^3.0.1" @@ -476,29 +476,29 @@ roarr@^2.15.3: safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== semver-compare@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= semver@^6.2.0: version "6.3.0" - resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== semver@^7.3.2: version "7.3.4" - resolved "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== dependencies: lru-cache "^6.0.0" serialize-error@^7.0.1: version "7.0.1" - resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz" + resolved "https://registry.yarnpkg.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== dependencies: type-fest "^0.13.1" @@ -509,73 +509,73 @@ serialize-error@^7.0.1: sprintf-js@^1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" sumchecker@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42" integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg== dependencies: debug "^4.1.0" to-readable-stream@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== tunnel@^0.0.6: version "0.0.6" - resolved "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz" + resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== type-fest@^0.13.1: version "0.13.1" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== typedarray@^0.0.6: version "0.0.6" - resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= universalify@^0.1.0: version "0.1.2" - resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== url-parse-lax@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= dependencies: prepend-http "^2.0.0" util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= wrappy@1: version "1.0.2" - resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= yallist@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yauzl@^2.10.0: version "2.10.0" - resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= dependencies: buffer-crc32 "~0.2.3" From ab2beaab495759dcc3a45ba92a859b8abe522f6a Mon Sep 17 00:00:00 2001 From: Tobias Springer Date: Sun, 14 Mar 2021 09:07:27 +0100 Subject: [PATCH 07/15] Update changelog --- src/js/changelog.js | 8 ++++++++ version | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/js/changelog.js b/src/js/changelog.js index 1ce2a0c4..61c1c79a 100644 --- a/src/js/changelog.js +++ b/src/js/changelog.js @@ -1,4 +1,12 @@ export const CHANGELOG = [ + { + version: "1.3.1", + date: "beta", + entries: [ + "Fixed savegames getting corrupt in rare conditions", + "Fixed game crashing sometimes since the achievements update", + ], + }, { version: "1.3.0", date: "12.03.2020", diff --git a/version b/version index 589268e6..6261a05b 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.3.0 \ No newline at end of file +1.3.1 \ No newline at end of file From 5a3da57f106716ad672f1d91c357ea78805f222b Mon Sep 17 00:00:00 2001 From: Tobias Springer Date: Sun, 14 Mar 2021 09:52:15 +0100 Subject: [PATCH 08/15] Fix missing dependencies, autoformat --- gulp/standalone.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/gulp/standalone.js b/gulp/standalone.js index f9718010..ffec8539 100644 --- a/gulp/standalone.js +++ b/gulp/standalone.js @@ -14,7 +14,7 @@ function gulptasksStandalone($, gulp) { { tempDestDir: path.join(__dirname, "..", "tmp_standalone_files"), suffix: "", - taskPrefix: "" + taskPrefix: "", }, { tempDestDir: path.join(__dirname, "..", "tmp_standalone_files_china"), @@ -27,8 +27,7 @@ function gulptasksStandalone($, gulp) { const tempDestBuildDir = path.join(tempDestDir, "built"); gulp.task(taskPrefix + "standalone.prepare.cleanup", () => { - return gulp.src(tempDestDir, { read: false, allowEmpty: true }) - .pipe($.clean({ force: true })); + return gulp.src(tempDestDir, { read: false, allowEmpty: true }).pipe($.clean({ force: true })); }); gulp.task(taskPrefix + "standalone.prepare.copyPrefab", () => { @@ -42,18 +41,22 @@ function gulptasksStandalone($, gulp) { // https://github.com/gulpjs/gulp/issues/1427 // path.join(electronBaseDir, "node_modules", "**", "*"), ]; - return gulp.src(requiredFiles, { base: electronBaseDir }) - .pipe(gulp.dest(tempDestBuildDir)); + return gulp.src(requiredFiles, { base: electronBaseDir }).pipe(gulp.dest(tempDestBuildDir)); }); gulp.task(taskPrefix + "standalone.prepare.writePackageJson", cb => { - const packageJsonString = JSON.stringify({ - scripts: { - start: pj.scripts.start + const packageJsonString = JSON.stringify( + { + scripts: { + start: pj.scripts.start, + }, + devDependencies: pj.devDependencies, + dependencies: pj.dependencies, + optionalDependencies: pj.optionalDependencies, }, - devDependencies: pj.devDependencies, - optionalDependencies: pj.optionalDependencies - }, null, 4); + null, + 4 + ); fs.writeFileSync(path.join(tempDestBuildDir, "package.json"), packageJsonString); @@ -79,8 +82,7 @@ function gulptasksStandalone($, gulp) { }); gulp.task(taskPrefix + "standalone.prepare.copyGamefiles", () => { - return gulp.src("../build/**/*.*", { base: "../build" }) - .pipe(gulp.dest(tempDestBuildDir)); + return gulp.src("../build/**/*.*", { base: "../build" }).pipe(gulp.dest(tempDestBuildDir)); }); gulp.task(taskPrefix + "standalone.killRunningInstances", cb => { @@ -175,9 +177,7 @@ function gulptasksStandalone($, gulp) { ); } - gulp.task(taskPrefix + "standalone.package.prod.win64", cb => - packageStandalone("win32", "x64", cb) - ); + gulp.task(taskPrefix + "standalone.package.prod.win64", cb => packageStandalone("win32", "x64", cb)); gulp.task(taskPrefix + "standalone.package.prod.linux64", cb => packageStandalone("linux", "x64", cb) ); From 25f8f7d9c3e74df661f1983cc3bffd0fcad135ef Mon Sep 17 00:00:00 2001 From: Rijicho <32390417+Rijicho@users.noreply.github.com> Date: Tue, 16 Mar 2021 17:44:36 +0900 Subject: [PATCH 09/15] Update Japanese translation (#1097) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Translated the added texts. - Renamed Color Mixer from "混合機" to "混色機" because the former has only represented "Mixer". - Fixed some wrong or incomprehensible texts (e.g. the information about tick-rate setting). - Fixed some inconsistency and redundancy. --- translations/base-ja.yaml | 155 ++++++++++++++++++-------------------- 1 file changed, 73 insertions(+), 82 deletions(-) diff --git a/translations/base-ja.yaml b/translations/base-ja.yaml index d27d7683..2632a4c8 100644 --- a/translations/base-ja.yaml +++ b/translations/base-ja.yaml @@ -9,14 +9,11 @@ steamPage: しかし、それだけでは不十分です。指数関数的に増大していく形状の要求量に対応する必要があり――「スケーリング」が、唯一の対抗策と成り得ます。また、最初は形状を加工するだけですが、後々着色も必要になってきます。色を抽出して混ぜ合わせましょう! Steamでゲームを購入するとフルバージョンで遊べますが、まずshapez.ioでデモをプレイし、その後で決めることもできます! - what_others_say: What people say about shapez.io - nothernlion_comment: This game is great - I'm having a wonderful time playing, - and time has flown by. - notch_comment: Oh crap. I really should sleep, but I think I just figured out - how to make a computer in shapez.io - steam_review_comment: This game has stolen my life and I don't want it back. - Very chill factory game that won't let me stop making my lines more - efficient. + what_others_say: shapez.ioプレイヤーの反応: + nothernlion_comment: これはすごいゲーム。プレイ体験が最高な上に時間の溶け方が尋常でない。 + notch_comment: いややばいって。マジで寝なきゃなんだけど、今ならshapez.ioで計算機組めそうな気がする。 + steam_review_comment: このゲームは私の生活を奪い去っていったが、返して欲しいとは思わない。 + いくらでも気の向くままに生産ラインを効率化させてくれる、そんなとても穏やかな工場ゲームだ。 global: loading: ロード中 error: エラー @@ -60,9 +57,9 @@ mainMenu: importSavegame: インポート openSourceHint: このゲームはオープンソースです discordLink: 公式Discordサーバー - helpTranslate: 翻訳を助けてください! + helpTranslate: 翻訳にご協力ください! madeBy: によって作られました - browserWarning: このゲームはお使いのブラウザでは速度が落ちることがあります。スタンドアローン版を入手するか、Chromeでプレイすることでこの問題は避けられます。 + browserWarning: このゲームはお使いのブラウザでは速度が落ちることがあります。スタンドアローン版を入手するか、Chromeでプレイすることで解決できます。 savegameLevel: レベル savegameLevelUnknown: 不明なレベル savegameUnnamed: 無名のデータ @@ -153,7 +150,7 @@ dialogs: desc: スクリーンショット出力を実行します。この処理は工場の全体像があまりに大きいと、 ゲームが遅くなったりクラッシュしてしまう可能性があります! renameSavegame: title: セーブデータの名前を変更 - desc: セーブデータの名前を変更することができます + desc: セーブデータの名前を変更できます tutorialVideoAvailable: title: チュートリアル視聴可能 desc: このレベルで利用できるチュートリアル動画があります! 確認しますか? @@ -179,7 +176,7 @@ ingame: cutSelection: カット copySelection: コピー clearSelection: 選択範囲をクリア - pipette: ピペット + pipette: スポイト switchLayers: レイヤーを変更 colors: red: 赤 @@ -266,7 +263,7 @@ ingame: 2_1_place_cutter: "次に、切断機を設置し、円を 二分割します!

追記: 切断機はそれの向きに関わらず、縦の線で切断します。" 2_2_place_trash: 切断機は詰まる場合があります!

- ゴミ箱を利用して、不必要な部品を廃棄することができます。 + ゴミ箱を利用して、不必要な部品を廃棄できます。 2_3_more_cutters: "いいですね! 更に2つ以上の切断機を設置して処理をスピードアップさせましょう!
\
追記: 0から9 のホットキーを使用すると素早く部品にアクセスできます。" 3_1_rectangles: "それでは四角形を抽出しましょう! 4つの抽出機を作成してそれをハブに接続します。
<\ @@ -299,8 +296,8 @@ ingame: title: 新しい18個の設置物 desc: あなたの工場を完全自動化しましょう! upgrades: - title: 20個のアップデートティア - desc: このデモバージョンでは5ティアのみです! + title: 無限のアップグレード段階 + desc: このデモバージョンでは5段階のみです! markers: title: 無限個のマップマーカー desc: これでもうあなたの工場を見失いません! @@ -314,20 +311,20 @@ ingame: title: 製作者をサポート desc: 余暇に制作しています! achievements: - title: Achievements - desc: Hunt them all! + title: アチーブメント + desc: 取り尽くせ! shopUpgrades: belt: - name: ベルト、ディストリビュータとトンネル + name: ベルト、分配機とトンネル description: スピード x → x miner: - name: 抽出機 + name: 抽出 description: スピード x → x processors: name: 切断、回転と積み重ね description: スピード x → x painting: - name: 混合と着色 + name: 混色と着色 description: スピード x → x buildings: hub: @@ -389,11 +386,11 @@ buildings: stacker: default: name: 積層機 - description: 入力アイテムを積み重ねます。もしうまく統合できなかった場合は、右の入力アイテムを左の入力アイテムの上に重ねます。 + description: 入力アイテムを積み重ねます。可能なら同じレイヤーに統合し、そうでなければ右の入力アイテムを左の入力アイテムの上に重ねます。 mixer: default: - name: 混合機 - description: 2つの色を加算混合で混ぜ合わせます。 + name: 混色機 + description: 2つの色を加法混色で混ぜ合わせます。 painter: default: name: 着色機 @@ -403,10 +400,10 @@ buildings: description: 左から入力された形の全体を、下から入力された色で着色します。 double: name: 着色機 (ダブル) - description: 左から入力された形を、上から入力された色で着色します。 + description: 左から入力された複数の形を、上から入力された色で着色します。 quad: name: 着色機 (四分割) - description: 入力された形を四分割づつ別の色で塗り分けられます。 + description: 入力された形の四部分をそれぞれ別の色で塗り分けられます。 真らしい信号が流れているスロットのみがペイントされます! trash: default: @@ -467,7 +464,7 @@ buildings: reader: default: name: ベルトリーダー - description: 平均スループットを計測できます。 アンロック後は、 最後に通過したアイテムの情報を出力します。 + description: 平均スループットを計測できます。 ワイヤレイヤのアンロック後は、 最後に通過したアイテムの情報を出力します。 analyzer: default: name: 形状解析機 @@ -482,7 +479,7 @@ buildings: description: 形状の信号を2つに切断できます。 rotater: name: 仮想回転機 - description: 形状の信号を時計回り、反時計回りに回転させます。 + description: 形状の信号を時計回りに回転させます。 unstacker: name: 仮想分離機 description: 形状の信号の最上層を右側に出力し、残りの層を左側に出力します。 @@ -509,8 +506,8 @@ storyRewards: desc: "着色機が利用可能になりました。(今まで形状でやってきた方法で)色を抽出し、形状と合成することで着色します! <\ br>
追伸: もし色覚特性をお持ちでしたら、 設定に色覚特性モードがあります!" reward_mixer: - title: 色の混合 - desc: 混合機が利用可能になりました。この建造物は2つの色を加算混合で混ぜ合わせます! + title: 混色 + desc: 混色機が利用可能になりました。この建造物は2つの色を加法混色で混ぜ合わせます! reward_stacker: title: 積層機 desc: 積層機で形を組み合わせ可能になりました! 双方の入力を組み合わせ、連続した形になっていればそれらは融合してひとつになります。そうでなければ、左の入力の上に右の入力が重なります! @@ -530,7 +527,7 @@ storyRewards: reward_underground_belt_tier_2: title: トンネル レベルII desc: トンネルのバリエーションが利用可能になりました。 - - 距離拡張版が追加され、以前のものと組み合わせて目的に応じて利用することができます! + 距離拡張版が追加され、以前のものと組み合わせて目的に応じて利用できます! reward_merger: title: コンパクトな合流機 desc: 合流機コンパクトバージョンが利用可能になりました! 2つの入力を1つの出力に合流させます! @@ -539,54 +536,49 @@ storyRewards: desc: 分配機コンパクトバージョンが利用可能になりました! 1つの入力を2つの出力に分配します! reward_belt_reader: title: ベルトリーダー - desc: ベルトリーダーが利用可能になりました! ベルトのスループットを計測できます。

ワイヤーのロックが解除されれば、より便利になります! + desc: ベルトリーダーが利用可能になりました! ベルトのスループットを計測できます。

ワイヤ関連の機能がアンロックされれば、より便利になります! reward_cutter_quad: - title: 四分割 + title: 四分割切断機 desc: 切断機のバリエーションが利用可能になりました。 - - 上下の二分割ではなく、四分割に切断できます! + 左右二分割ではなく、四つに切断できます! reward_painter_double: title: 着色機 (ダブル) desc: 着色機のバリエーションが利用可能になりました。 - 通常の着色機と同様に機能しますが、ひとつの色の消費で一度に2つの形を着色処理できます! reward_storage: - title: 余剰の貯蓄 - desc: ゴミ箱のバリエーションが利用可能になりました。 - 容量上限までアイテムを格納することができます!

+ title: ストレージ + desc: ストレージが利用可能になりました。 - 容量上限までアイテムを格納できます!

左側の出力を優先するため、オーバーフローゲートとしても使用できます! reward_blueprints: title: ブループリント desc: 工場の建造物のコピー&ペーストが利用可能になりました! - 範囲選択(CTRLキーを押したままマウスドラッグ)した状態で、'C'キーを押すことでコピーができます。

ペーストはタダではありません。ブループリントの形を生産することで可能になります!(たった今納品したものです) + 範囲選択(CTRLキーを押したままマウスドラッグ)した状態で、'C'キーを押すことでコピーができます。

ただしペーストはタダではありません。ブループリントの形を生産する必要があります!(たった今納品した形です) reward_rotater_180: - title: 180度の回転 - desc: 回転機のバリエーションが利用可能になりました! 180度の回転ができるようになります!(サプライズ! :D) + title: 回転(180°) + desc: 回転機のバリエーションが利用可能になりました! 180°の回転ができるようになります!(サプライズ! :D) reward_wires_painter_and_levers: title: ワイヤ&着色機(四分割) - desc: "ワイヤレイヤが利用可能になりました: これは通常の レイヤーの上にある別のレイヤであり、多くの新しい要素が - あります!

最初に、四色 着色機が利用可能になりました - - 着色するスロットをワイヤレイヤで 接続します!

ワイヤレイヤに切り替えるには、 - Eを押します。

補足: - 設定でヒントを有効にすると、 ワイヤのチュートリアルが有効になります。" + desc: "ワイヤレイヤが利用可能になりました: これは通常の レイヤーの上にある別のレイヤであり、多くの新しい要素があります!

+ まず最初に、四色着色機が利用可能になりました - 着色するスロットをワイヤレイヤで接続してください!

+ ワイヤレイヤに切り替えるには、Eを押します。

+ 補足: 設定でヒントを有効にすると、 ワイヤのチュートリアルが有効になります。" reward_filter: title: アイテムフィルタ - desc: アイテムフィルタが利用可能になりました! ワイヤレイヤの信号と一致するかどうかに応じて、 - アイテムを上部または右側の出力に分離します。

真偽値(0/1)信号を利用することで - どんなアイテムでも通過させるか、または通過させないかを選ぶこともできます。 + desc: アイテムフィルタが利用可能になりました! ワイヤレイヤの信号と一致するかどうかに応じて、アイテムを上側または右側の出力に分離します。

+ また、真偽値(0/1)信号を入力すれば全てのアイテムの通過・非通過を制御できます。 reward_display: title: ディスプレイ - desc: "ディスプレイが利用可能になりました - ワイヤレイヤで - 信号を接続することで、その内容を視認することができます!

補足: ベルトリーダーとストレージが - 最後に通過したアイテムを出力していることに気づきましたか? それをディスプレイに 表示してみてください!" + desc: "ディスプレイが利用可能になりました - ワイヤレイヤで信号を接続することで、その内容を表示できます!

+ 補足: ベルトリーダーとストレージが最後に通過したアイテムを出力していることに気づきましたか? それをディスプレイに表示してみてください!" reward_constant_signal: title: 定数信号 - desc: 定数信号がワイヤレイヤで - 利用可能になりました! これは例えばアイテムフィルタに接続する 場合に便利です。

- 定数信号は 形状または - 真偽値(1か0)を発信できます。 + desc: 定数信号がワイヤレイヤで利用可能になりました! これは例えばアイテムフィルタに接続すると便利です。

+ 発信できる信号は形状真偽値(1か0)です。 reward_logic_gates: title: 論理ゲート - desc: 論理ゲートが利用可能になりました! 興奮する必要はありませんが、非常に優秀なのです!

- これでAND, OR, XOR, - NOTを計算できます。

ボーナスとしてトランジスタも追加しました! + desc: 論理ゲートが利用可能になりました! 興奮する必要はありませんが、これは非常に優秀なんですよ!

+ これでAND, OR, XOR, NOTを計算できます。

+ ボーナスとしてトランジスタも追加しました! reward_virtual_processing: title: 仮想処理 desc: 形状処理をシミュレートできる新しい部品をたくさん追加しました!

@@ -596,9 +588,8 @@ storyRewards: - ワイヤでイカしたものを作る。

- 今までのように工場を建設する。

いずれにしても、楽しんでください! no_reward: title: 次のレベル - desc: "このレベルには報酬はありません。次にはあるでしょう! 

補足: すでに作った生産ラインは削除しないようにしましょう。 - - 生産された形はすべて、後にアップグレードの解除のために必要になりま\ - す!" + desc: "このレベルには報酬はありません。次はきっとありますよ! 

補足: すでに作った生産ラインは削除しないようにしましょう。 - + 生産された形はすべて、後でアップグレードの解除に必要になります!" no_reward_freeplay: title: 次のレベル desc: おめでとうございます! @@ -606,8 +597,8 @@ storyRewards: title: フリープレイ desc: やりましたね! フリープレイモードが利用可能になりました。 - これからは納品すべき形はランダムに生成されます!

- 今後、ハブにはスループットが必要になるため、要求する形状を自動的に納品するマシンを構築することを強くお勧めします!

- ハブは要求する形状をワイヤレイヤに出力するので、それを分析し自動的に調整する工場を作成するだけです。 + 今後、ハブはスループットを要求してきます。要求された形状を自動的に納品するマシンを構築することを強くお勧めします!

+ ハブは要求する形状をワイヤレイヤに出力するので、それを分析して自動的に工場を調整するだけですよ。 reward_demo_end: title: お試し終了 desc: デモ版の最後に到達しました! @@ -665,13 +656,13 @@ settings: extremely_fast: 極速 language: title: 言語 - description: 言語を変更します。すべての翻訳はユーザーからの協力で成り立っており、まだ完全には完了していない可能性があります! + description: 言語を変更します。すべての翻訳はユーザーの皆さんの協力によるものであり、まだ不完全な可能性があります! enableColorBlindHelper: title: 色覚モード description: 色覚特性を持っていてもゲームがプレイできるようにするための各種ツールを有効化します。 fullscreen: title: フルスクリーン - description: フルスクリーンでのプレイが推奨です。スタンドアローン版のみ変更可能です。 + description: フルスクリーンでのプレイが推奨されます。スタンドアローン版のみ変更可能です。 soundsMuted: title: 効果音ミュート description: 有効に設定するとすべての効果音をミュートします。 @@ -686,13 +677,13 @@ settings: description: 音楽の音量を設定してください。 theme: title: ゲームテーマ - description: ゲームテーマを選択します。 (ライト / ダーク). + description: ゲームテーマを選択します。(ライト/ダーク) themes: dark: ダーク light: ライト refreshRate: - title: シミュレーション対象 - description: もし144hzのモニターを利用しているなら、この設定でリフレッシュレートを変更することで、ゲームが高リフレッシュレートを正しくシミュレーションします。利用しているPCが非力な場合、この設定により実効FPSが遅くなる可能性があります。 + title: リフレッシュレート + description: 秒間何回ゲームが更新されるかを設定できます。一般的には値が高いほど正確になりますが、パフォーマンスは低下します。値が低い場合、正確なスループットを計測できなくなる可能性があります。 alwaysMultiplace: title: 連続配置 description: この設定を有効にすると、建造物を選択後に意図的にキャンセルするまで選択された状態を維持します。これはSHIFTキーを押し続けている状態と同等です。 @@ -749,7 +740,7 @@ settings: description: ズームアウトしたときの図形のサイズを調節します。 keybindings: title: キー設定 - hint: "Tip: CTRL, SHIFT, ALTを利用するようにしてください。これらはそれぞれ建造物配置の際の機能があります。" + hint: "Tip: CTRL, SHIFT, ALTを活用してください。建造物配置の際の追加機能がそれぞれ割り当てられています。" resetKeybindings: キー設定をリセット categoryLabels: general: アプリケーション @@ -785,7 +776,7 @@ keybindings: cutter: 切断機 rotater: 回転機 stacker: 積層機 - mixer: 混合機 + mixer: 混色機 painter: 着色機 trash: ゴミ箱 storage: ストレージ @@ -811,31 +802,31 @@ keybindings: cycleBuildings: 建造物の選択 lockBeltDirection: ベルトプランナーを有効化 switchDirectionLockSide: "プランナー: 通る側を切り替え" - copyWireValue: "ワイヤ: カーソルに合っている形状信号をキーとしてコピー" + copyWireValue: "ワイヤ: カーソルの下の形状信号をキーとしてコピー" massSelectStart: マウスドラッグで開始 massSelectSelectMultiple: 複数範囲選択 massSelectCopy: 範囲コピー massSelectCut: 範囲カット - placementDisableAutoOrientation: 自動向き合わせ無効 + placementDisableAutoOrientation: 自動向き合わせを無効化 placeMultiple: 配置モードの維持 placeInverse: ベルトの自動向き合わせを逆転 - rotateToUp: "Rotate: Point Up" - rotateToDown: "Rotate: Point Down" - rotateToRight: "Rotate: Point Right" - rotateToLeft: "Rotate: Point Left" + rotateToUp: "回転: 上向きにする" + rotateToDown: "回転: 下向きにする" + rotateToRight: "回転: 右向きにする" + rotateToLeft: "回転: 左向きにする" about: title: このゲームについて body: >- このゲームはオープンソースであり、Tobias Springer (私)によって開発されています。

+ target="_blank">Tobias Springer (私です)によって開発されています。

- 開発に参加したい場合は以下をチェックしてみてください。shapez.io on github.

+ 開発に参加したい場合はこちらをチェックしてみてください:shapez.io on github.

- このゲームはdiscordでの素晴らしいコミュニティなしには実現しませんでした。 - このサーバにも是非参加してください! Discord server!

+ このゲームは素晴らしいDiscordコミュニティなしには実現しませんでした。 - このサーバにも是非参加してください! Discord server!

- サウンドトラックはPeppsenにより製作されました。 - 彼は素晴らしいです

+ サウンドトラックはPeppsenにより製作されました。 - 彼は素晴らしいです。

- 最後に、私の最高の友人Niklasに大きな感謝を。 - 彼とのFactorioのゲーム体験がなければ、このゲームは存在しませんでした。 + 最後に、私の最高の友人Niklasに大きな感謝を。 - 彼とのFactorioのゲーム体験がなければ、このゲームは存在しなかったでしょう。 changelog: title: 更新履歴 demo: @@ -886,7 +877,7 @@ tips: - 最大の効率を得るためには、切断する前に着色をしてください。 - モジュールがあれば、空間はただの認識に過ぎなくなる――生ある人間に対する気遣いだ。 - 設計図としての工場を別に作っておくと、工場のモジュール化において重要な役割を果たします。 - - 混合機をよく見ると、色の混ぜ方が解ります。 + - 混色機をよく見ると、色の混ぜ方が解ります。 - CTRL + クリックで範囲選択ができます。 - ハブに近すぎる設計物を作ると、のちの設計の邪魔になるかもしれません。 - アップグレードリストの各形状の横にあるピンのアイコンは、その形状を画面左に固定表示します。 @@ -899,6 +890,6 @@ tips: - このゲームにはたくさんの設定があります。是非チェックしてみてください! - ハブのマーカーには、その方向を示す小さなコンパスがついています。 - ベルトの中身をクリアするには、範囲選択して同じ場所に貼り付けをします。 - - F4を押すことで、FPSとTickレートを表示することができます。 - - F4を2回押すと、マウスとカメラの座標を表示することができます。 + - F4を押すことで、FPSとTickレートを表示できます。 + - F4を2回押すと、マウスとカメラの座標を表示できます。 - 左のピン留めされた図形をクリックすると、固定を解除できます。 From b105cac3ee1c45162007c6bbc0cba058cd1d5b4a Mon Sep 17 00:00:00 2001 From: Hermanni Saresma Date: Tue, 16 Mar 2021 10:44:50 +0200 Subject: [PATCH 10/15] Update base-fi.yaml (#1098) Translated the new content in lines 632-637 and 955-972. Also fixed some awkward translations to more fitting ones from before, now that I've played the game more --- translations/base-fi.yaml | 66 +++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/translations/base-fi.yaml b/translations/base-fi.yaml index 430823f1..737b0fd6 100644 --- a/translations/base-fi.yaml +++ b/translations/base-fi.yaml @@ -14,7 +14,7 @@ steamPage: Vaikka alussa vain prosessoit muotoja, myöhemmin niitä pitää myös maalata - tätä varten sinun täytyy kerätä ja sekoittaa värejä Pelin ostaminen Steamista antaa sinulle pääsyn pelin täysversioon, mutta voit myös pelata kokeiluversiota ensin sivuillamme shapez.io ja päättää myöhemmin! - what_others_say: What people say about shapez.io + what_others_say: Muiden mielipiteitä shapez.io:sta nothernlion_comment: This game is great - I'm having a wonderful time playing, and time has flown by. notch_comment: Oh crap. I really should sleep, but I think I just figured out @@ -30,7 +30,7 @@ global: suffix: thousands: k millions: M - billions: B + billions: G trillions: T infinite: ∞ time: @@ -195,7 +195,7 @@ ingame: delete: Poista pasteLastBlueprint: Liitä viimeisin piirustus lockBeltDirection: Ota kuljettimen suunnittelija käyttöön - plannerSwitchSide: Käännä suunnittelijan puoli + plannerSwitchSide: Vaihda suunnittelijan puolta cutSelection: Leikkaa copySelection: Kopioi clearSelection: Tyhjennä valinta @@ -347,8 +347,8 @@ ingame: title: Tue minua desc: Kehitän peliä vapaa-ajallani! achievements: - title: Achievements - desc: Hunt them all! + title: Saavutukset + desc: Metsästä kaikki! shopUpgrades: belt: name: Kuljettimet, jakelijat & tunnelit @@ -454,16 +454,16 @@ buildings: description: Monikäyttöinen - Jakaa sisääntulot tasaisesti kaikkiin ulostuloihin. merger: - name: Yhdistäjä (compact) + name: Yhdistäjä (kompakti) description: Yhdistää kaksi kuljetinta yhteen. merger-inverse: - name: Yhdistäjä (compact) + name: Yhdistäjä (kompakti) description: Yhdistää kaksi kuljetinta yhteen. splitter: - name: Erottaja (compact) + name: Erottaja (kompakti) description: Erottaa kuljettimen kahteen kuljettimeen. splitter-inverse: - name: Erottaja (compact) + name: Erottaja (kompakti) description: Erottaa kuljettimen kahteen kuljettimeen. storage: default: @@ -562,12 +562,12 @@ buildings: storyRewards: reward_cutter_and_trash: title: Muotojen Leikkaus - desc: You just unlocked the cutter, which cuts shapes in half - from top to bottom regardless of its - orientation!

Be sure to get rid of the waste, or - otherwise it will clog and stall - For this purpose - I have given you the trash, which destroys - everything you put into it! + desc: Avasit Leikkurin, joka leikkaa muotoja + ylhäältä alas muodon suunnasta + riippumatta!

muista hankkiutua eroon jätteestä, tai + muuten se tukkii ja pysäyttää leikkurin - Siksi + olen antanut sinulle roskiksen, joka tuhoaa + kaiken sinne laitetun! reward_rotater: title: Kääntö desc: Avasit Kääntäjän! Se kääntää muotoja myötäpäivään 90 @@ -629,12 +629,12 @@ storyRewards: reward_freeplay: title: Vapaapeli desc: Onnistuit! Avasit juuri vapaapelimuodon! Muodot luodaan - nyt satunnaisesti

Since the hub will - require a throughput from now on, I highly - recommend to build a machine which automatically delivers the - requested shape!

The HUB outputs the requested shape on the - wires layer, so all you have to do is to analyze it and - automatically configure your factory based on that. + nyt satunnaisesti

Koska keskusrakennus vaatii + tietyn kuljetuskapasiteetin tästä eteenpäin, suosittelen + lämpimästi rakentamaan koneen, joka tuottaa vaaditun muodon + automaattisesti!

Keskusrakennus lähettää pyydetyn muodon + johtotasolle, joten sinun ei tarvitse kuin analysoida se ja + konfiguroida tehtaasi sen perusteella. reward_blueprints: title: Piirustukset desc: Nyt voit Kopioida ja Liittää paloja tehtaastasi! Valitse @@ -928,7 +928,7 @@ keybindings: pasteLastBlueprint: Liitä viimeisin piirustus cycleBuildings: Valitse rakennuksia lockBeltDirection: Ota kuljetinsuunnittelija käyttöön - switchDirectionLockSide: "Suunnittelija: Muuta sivua" + switchDirectionLockSide: "Suunnittelija: Vaihda sivua" massSelectStart: Pidä pohjassa ja raahaa aloittaaksesi massSelectSelectMultiple: Valitse useita alueita massSelectCopy: Kopioi alue @@ -952,24 +952,24 @@ keybindings: comparator: Vertaa item_producer: Signaaligeneraattori (Hiekkalaattikko) copyWireValue: "Johdot: Kopioi arvo kursorin kohdalta" - rotateToUp: "Rotate: Point Up" - rotateToDown: "Rotate: Point Down" - rotateToRight: "Rotate: Point Right" - rotateToLeft: "Rotate: Point Left" + rotateToUp: "Käännä: osoittaa ylös" + rotateToDown: "Käännä: osoittaa alas" + rotateToRight: "Käännä: osoittaa oikealle" + rotateToLeft: "Käännä: osoittaa vasemmalle" about: title: Tietoja tästä pelistä body: >- - This game is open source and developed by Tobias Springer - (this is me).

+ Tämä peli on avointa lähdekoodia ja Tobias Springerin + (siis minun) kehittämäni.

- If you want to contribute, check out shapez.io on GitHub.

+ Jos haluat avustaa, käy katsomassa shapez.io GitHubissa.

- This game wouldn't have been possible without the great Discord community around my games - You should really join the Discord server!

+ Tämä peli ei olisi mahdollinen ilman pelieni ympärillä olevaa Discord-yhteisöä - Sinun todella kannattaisi liittyä Discord serverillemme!

- The soundtrack was made by Peppsen - He's awesome.

+ Ääniraidan on tehnyt Peppsen - Hän on uskomattoman loistava.

- Finally, huge thanks to my best friend Niklas - Without our Factorio sessions, this game would never have existed. + Lopuksi valtavat kiitokset parhaalle ystävälleni Niklakselle - Ilman Factorio-sessioitamme tätä peliä ei olisi olemassa. changelog: title: Muutosloki demo: From cce8a92d33bf7e018734d30a04802296349f5e48 Mon Sep 17 00:00:00 2001 From: Mutt <72538204+presdm@users.noreply.github.com> Date: Tue, 16 Mar 2021 15:51:47 +0700 Subject: [PATCH 11/15] Update base-ind.yaml (#1107) translated new section --- translations/base-ind.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/translations/base-ind.yaml b/translations/base-ind.yaml index 4a59824c..761caf46 100644 --- a/translations/base-ind.yaml +++ b/translations/base-ind.yaml @@ -11,14 +11,14 @@ steamPage: Dan jita itu tidak cukup, kamu juga perlu memproduksi bentuk secara eksponensial untuk memenuhkan kebutuhan - hal yang membantu hanyalah memperbesar pabrik! Walaupun kamu hanya perlu memproses bentuk di awal, nantinya kamu harus memberinya warna - dengan mengekstrak dan mencampur warna! Membeli game ini di Steam memberikan kamu akses ke versi lengkap, namun kamu juga dapat mencoba demo dan memutuskan nanti! - what_others_say: What people say about shapez.io - nothernlion_comment: This game is great - I'm having a wonderful time playing, - and time has flown by. - notch_comment: Oh crap. I really should sleep, but I think I just figured out - how to make a computer in shapez.io - steam_review_comment: This game has stolen my life and I don't want it back. - Very chill factory game that won't let me stop making my lines more - efficient. + what_others_say: Apa yang orang lain katakan tentang shapez.io + nothernlion_comment: Game ini bagus - Saya sangat menikmati waktu saya ketika + memainkan game ini, dan waktu telah berlalu. + notch_comment: Oh sial. Saya benar-benar harus tidur, namun sepertinya saya baru + menemukan bagaimana cara membuat komputer di shapez.io + steam_review_comment: Game ini telah mencuri hidup saya dan saya tidak + menginginkannya kembali. Game pembuatan pabrik yang sangat santai yang tidak + akan membiarkan saya berhenti membuat pabrik saya lebih efisien. global: loading: Memuat error: Terjadi kesalahan From ed89d6777352b319334152b4ae98e774672f2ed0 Mon Sep 17 00:00:00 2001 From: Lincoln V Schreiber Date: Tue, 16 Mar 2021 05:52:00 -0300 Subject: [PATCH 12/15] Update base-pt-BR.yaml (#1108) * Update base-pt-BR.yaml Some changes in the use of the word "hotkey" and translation of the comments. * Update base-pt-BR.yaml * Update base-pt-BR.yaml --- translations/base-pt-BR.yaml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/translations/base-pt-BR.yaml b/translations/base-pt-BR.yaml index 8c65a3de..79435979 100644 --- a/translations/base-pt-BR.yaml +++ b/translations/base-pt-BR.yaml @@ -13,14 +13,14 @@ steamPage: Enquanto no começo você apenas processa as formas, mais a frente você deve pintá-las - para isso você deve extrair e misturar cores! Comprar o jogo na Steam te garante acesso à versão completa, mas você pode jogar a versão demo em shapez.io primeiro e decidir depois! - what_others_say: What people say about shapez.io - nothernlion_comment: This game is great - I'm having a wonderful time playing, - and time has flown by. - notch_comment: Oh crap. I really should sleep, but I think I just figured out - how to make a computer in shapez.io - steam_review_comment: This game has stolen my life and I don't want it back. - Very chill factory game that won't let me stop making my lines more - efficient. + what_others_say: O que as pessoas dizem sobre o shapez.io + nothernlion_comment: Este jogo é ótimo - estou me divertindo muito jogando + e o tempo passou voando. + notch_comment: Droga. Eu realmente deveria dormir, mas eu acho que acabei + de descobrir como fazer um computador no shapez.io + steam_review_comment: Este jogo roubou minha vida e eu não a quero de volta. + Jogo de fábrica muito descontraído que não me deixa parar de fazer + linhas mais eficientes. global: loading: Carregando error: Erro @@ -214,7 +214,7 @@ ingame: uncolored: Sem cor buildingPlacement: cycleBuildingVariants: Aperte para variações. - hotkeyLabel: "Hotkey: " + hotkeyLabel: "Tecla: " infoTexts: speed: Velocidade range: Distância @@ -299,7 +299,7 @@ ingame: não for necessário. 2_3_more_cutters: "Bom trabalho! Agora coloque mais 2 cortadores para acelerar este processo lento!

- PS: Use as hotkeys 0-9 para acessar as + PS: Use as teclas 0-9 para acessar as construções mais rápido!" 3_1_rectangles: "Vamos extrair alguns retângulos! Construa 4 extratores e conecte-os ao hub.

PS: Segure From 7f2132d7639d540e043de058ebb92e1475ac35e8 Mon Sep 17 00:00:00 2001 From: Greg Considine Date: Tue, 16 Mar 2021 12:58:37 -0400 Subject: [PATCH 13/15] Fix 'Oops' achievement shape validation (#1113) --- src/js/platform/achievement_provider.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/js/platform/achievement_provider.js b/src/js/platform/achievement_provider.js index 94a6a29c..e9d7ca7a 100644 --- a/src/js/platform/achievement_provider.js +++ b/src/js/platform/achievement_provider.js @@ -492,12 +492,11 @@ export class AchievementCollection { /** @param {ShapeDefinition} definition @returns {boolean} */ isIrrelevantShapeValid(definition) { - if (definition.cachedHash === this.root.hubGoals.currentGoal.definition.cachedHash) { - return false; - } - - if (definition.cachedHash === this.root.gameMode.getBlueprintShapeKey()) { - return false; + const levels = this.root.gameMode.getLevelDefinitions(); + for (let i = 0; i < levels.length; i++) { + if (definition.cachedHash === levels[i].shape) { + return false; + } } const upgrades = this.root.gameMode.getUpgrades(); From 22b8777aa02ffbd487e467e382d0786c19aaf63d Mon Sep 17 00:00:00 2001 From: "Thomas (DJ1TJOO)" <44841260+DJ1TJOO@users.noreply.github.com> Date: Tue, 16 Mar 2021 17:59:23 +0100 Subject: [PATCH 14/15] Changed electron fs-job to invoke, for simplefying storage (#1106) * Changed electron fs-job to invoke, for simplefying storage (And it helps for the modloader) * Reverted some unneeded chages * Uploaded wrong file * Removed uneeded promise --- electron/index.js | 8 +-- src/js/platform/electron/storage.js | 82 +++++++++++++---------------- 2 files changed, 39 insertions(+), 51 deletions(-) diff --git a/electron/index.js b/electron/index.js index 14a19a64..b877900c 100644 --- a/electron/index.js +++ b/electron/index.js @@ -1,9 +1,8 @@ /* eslint-disable quotes,no-undef */ -const { app, BrowserWindow, Menu, MenuItem, session } = require("electron"); +const { app, BrowserWindow, Menu, MenuItem, ipcMain, shell } = require("electron"); const path = require("path"); const url = require("url"); -const { ipcMain, shell } = require("electron"); const fs = require("fs"); const steam = require("./steam"); const asyncLock = require("async-lock"); @@ -287,10 +286,7 @@ async function performFsJob(job) { } } -ipcMain.on("fs-job", async (event, arg) => { - const result = await performFsJob(arg); - event.reply("fs-response", { id: arg.id, result }); -}); +ipcMain.handle("fs-job", (event, arg) => performFsJob(arg)); steam.init(isDev); steam.listen(); diff --git a/src/js/platform/electron/storage.js b/src/js/platform/electron/storage.js index 41ed1746..bf4ed9ac 100644 --- a/src/js/platform/electron/storage.js +++ b/src/js/platform/electron/storage.js @@ -7,24 +7,6 @@ const logger = createLogger("electron-storage"); export class StorageImplElectron extends StorageInterface { constructor(app) { super(app); - - /** @type {Object.} */ - this.jobs = {}; - this.jobId = 0; - - getIPCRenderer().on("fs-response", (event, arg) => { - const id = arg.id; - if (!this.jobs[id]) { - logger.warn("Got unhandled FS response, job not known:", id); - return; - } - const { resolve, reject } = this.jobs[id]; - if (arg.result.success) { - resolve(arg.result.data); - } else { - reject(arg.result.error); - } - }); } initialize() { @@ -33,43 +15,53 @@ export class StorageImplElectron extends StorageInterface { writeFileAsync(filename, contents) { return new Promise((resolve, reject) => { - // ipcMain - const jobId = ++this.jobId; - this.jobs[jobId] = { resolve, reject }; - - getIPCRenderer().send("fs-job", { - type: "write", - filename, - contents, - id: jobId, - }); + getIPCRenderer() + .invoke("fs-job", { + type: "write", + filename, + contents, + }) + .then(result => { + if (result.success) { + resolve(result.data); + } else { + reject(result.error); + } + }); }); } readFileAsync(filename) { return new Promise((resolve, reject) => { - // ipcMain - const jobId = ++this.jobId; - this.jobs[jobId] = { resolve, reject }; - - getIPCRenderer().send("fs-job", { - type: "read", - filename, - id: jobId, - }); + getIPCRenderer() + .invoke("fs-job", { + type: "read", + filename, + }) + .then(result => { + if (result.success) { + resolve(result.data); + } else { + reject(result.error); + } + }); }); } deleteFileAsync(filename) { return new Promise((resolve, reject) => { - // ipcMain - const jobId = ++this.jobId; - this.jobs[jobId] = { resolve, reject }; - getIPCRenderer().send("fs-job", { - type: "delete", - filename, - id: jobId, - }); + getIPCRenderer() + .invoke("fs-job", { + type: "delete", + filename, + }) + .then(result => { + if (result.success) { + resolve(result.data); + } else { + reject(result.error); + } + }); }); } } From 6a62ec8f6310825848cffe8ec3fbd7f0309768b3 Mon Sep 17 00:00:00 2001 From: HY0077 <80679452+HY0077@users.noreply.github.com> Date: Tue, 16 Mar 2021 18:08:39 +0100 Subject: [PATCH 15/15] Update base-de.yaml (#1111) * Update base-de.yaml I translated some things to german. * Update base-de.yaml * Update base-de.yaml --- translations/base-de.yaml | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/translations/base-de.yaml b/translations/base-de.yaml index eef9f893..f3478dae 100644 --- a/translations/base-de.yaml +++ b/translations/base-de.yaml @@ -348,8 +348,8 @@ ingame: title: Unterstütze Mich desc: Ich entwickle in meiner Freizeit! achievements: - title: Achievements - desc: Hunt them all! + title: Errungenschaften + desc: Hol sie dir alle! shopUpgrades: belt: name: Fließbänder, Verteiler & Tunnel @@ -912,9 +912,8 @@ settings: description: If activated the zoom will happen in the direction of your mouse position, otherwise in the middle of the screen. mapResourcesScale: - title: Map Resources Size - description: Controls the size of the shapes on the map overview (when zooming - out). + title: Größe der Ressourcen auf der Karte + description: Legt die Größe der Ressourcen auf der Karte (beim Herauszoomen) fest. keybindings: title: Tastenbelegung hint: "Tipp: Benutze STRG, UMSCH and ALT! Sie aktivieren verschiedene @@ -988,10 +987,10 @@ keybindings: placementDisableAutoOrientation: Automatische Orientierung deaktivieren placeMultiple: Im Platziermodus bleiben placeInverse: Automatische Fließbandorientierung invertieren - rotateToUp: "Rotate: Point Up" - rotateToDown: "Rotate: Point Down" - rotateToRight: "Rotate: Point Right" - rotateToLeft: "Rotate: Point Left" + rotateToUp: "Rotieren: Nach oben zeigend" + rotateToDown: "Rotieren: Nach unten zeigend" + rotateToRight: "Rotieren: Nach rechts zeigend" + rotateToLeft: "Rotieren: Nach links zeigend" about: title: Über dieses Spiel body: Dieses Spiel ist quelloffen (Open Source) und wurde von