mirror of
https://github.com/tobspr/shapez.io.git
synced 2025-06-13 13:04:03 +00:00
Merge branch 'master' into puzzle
This commit is contained in:
commit
cd764146aa
1
.gitignore
vendored
1
.gitignore
vendored
@ -47,6 +47,7 @@ res_built
|
||||
gulp/runnable-texturepacker.jar
|
||||
tmp_standalone_files
|
||||
tmp_standalone_files_china
|
||||
tmp_standalone_files_wegame
|
||||
|
||||
# Local config
|
||||
config.local.js
|
||||
|
@ -5,11 +5,11 @@
|
||||
This is the source code for shapez.io, an open source base building game inspired by Factorio.
|
||||
Your goal is to produce shapes by cutting, rotating, merging and painting parts of shapes.
|
||||
|
||||
- [Trello Board & Roadmap](https://trello.com/b/ISQncpJP/shapezio)
|
||||
- [Free web version](https://shapez.io)
|
||||
- [itch.io Page](https://tobspr.itch.io/shapezio)
|
||||
- [Steam Page](https://steam.shapez.io)
|
||||
- [Official Discord](https://discord.com/invite/HN7EVzV) <- _Highly recommended to join!_
|
||||
- [Trello Board & Roadmap](https://trello.com/b/ISQncpJP/shapezio)
|
||||
- [itch.io Page](https://tobspr.itch.io/shapezio)
|
||||
- [Free web version](https://shapez.io)
|
||||
|
||||
## Reporting issues, suggestions, feedback, bugs
|
||||
|
||||
|
@ -274,7 +274,10 @@ async function performFsJob(job) {
|
||||
}
|
||||
}
|
||||
|
||||
ipcMain.handle("fs-job", (event, arg) => performFsJob(arg));
|
||||
ipcMain.on("fs-job", async (event, arg) => {
|
||||
const result = await performFsJob(arg);
|
||||
event.reply("fs-response", { id: arg.id, result });
|
||||
});
|
||||
|
||||
steam.init(isDev);
|
||||
steam.listen();
|
||||
|
@ -47,8 +47,36 @@ function listen() {
|
||||
return;
|
||||
}
|
||||
|
||||
console.log("Adding listeners");
|
||||
|
||||
ipcMain.handle("steam:get-achievement-names", getAchievementNames);
|
||||
ipcMain.handle("steam:activate-achievement", activateAchievement);
|
||||
|
||||
function bufferToHex(buffer) {
|
||||
return Array.from(new Uint8Array(buffer))
|
||||
.map(b => b.toString(16).padStart(2, "0"))
|
||||
.join("");
|
||||
}
|
||||
|
||||
ipcMain.handle("steam:get-ticket", (event, arg) => {
|
||||
console.log("Requested steam ticket ...");
|
||||
return new Promise((resolve, reject) => {
|
||||
greenworks.getAuthSessionTicket(
|
||||
success => {
|
||||
const ticketHex = bufferToHex(success.ticket);
|
||||
resolve(ticketHex);
|
||||
},
|
||||
error => {
|
||||
console.error("Failed to get steam ticket:", error);
|
||||
reject(error);
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
ipcMain.handle("steam:check-app-ownership", (event, appId) => {
|
||||
return Promise.resolve(greenworks.isSubscribedApp(appId));
|
||||
});
|
||||
}
|
||||
|
||||
function isInitialized(event) {
|
||||
|
1
electron_wegame/.gitignore
vendored
Normal file
1
electron_wegame/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
wegame_sdk
|
13
electron_wegame/electron_wegame.code-workspace
Normal file
13
electron_wegame/electron_wegame.code-workspace
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"folders": [
|
||||
{
|
||||
"path": "."
|
||||
}
|
||||
],
|
||||
"settings": {
|
||||
"files.exclude": {
|
||||
"**/node_modules": true,
|
||||
"**/typedefs_gen": true
|
||||
}
|
||||
}
|
||||
}
|
BIN
electron_wegame/favicon.icns
Normal file
BIN
electron_wegame/favicon.icns
Normal file
Binary file not shown.
BIN
electron_wegame/favicon.ico
Normal file
BIN
electron_wegame/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 103 KiB |
BIN
electron_wegame/favicon.png
Normal file
BIN
electron_wegame/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
288
electron_wegame/index.js
Normal file
288
electron_wegame/index.js
Normal file
@ -0,0 +1,288 @@
|
||||
/* eslint-disable quotes,no-undef */
|
||||
|
||||
const { app, BrowserWindow, Menu, MenuItem, ipcMain, shell } = require("electron");
|
||||
|
||||
app.commandLine.appendSwitch("in-process-gpu");
|
||||
|
||||
const path = require("path");
|
||||
const url = require("url");
|
||||
const fs = require("fs");
|
||||
const wegame = require("./wegame");
|
||||
const asyncLock = require("async-lock");
|
||||
|
||||
const isDev = process.argv.indexOf("--dev") >= 0;
|
||||
const isLocal = process.argv.indexOf("--local") >= 0;
|
||||
|
||||
const roamingFolder =
|
||||
process.env.APPDATA ||
|
||||
(process.platform == "darwin"
|
||||
? process.env.HOME + "/Library/Preferences"
|
||||
: process.env.HOME + "/.local/share");
|
||||
let storePath = path.join(roamingFolder, "shapez.io", "saves");
|
||||
|
||||
if (!fs.existsSync(storePath)) {
|
||||
// No try-catch by design
|
||||
fs.mkdirSync(storePath, { recursive: true });
|
||||
}
|
||||
|
||||
/** @type {BrowserWindow} */
|
||||
let win = null;
|
||||
let menu = null;
|
||||
|
||||
function createWindow() {
|
||||
let faviconExtension = ".png";
|
||||
if (process.platform === "win32") {
|
||||
faviconExtension = ".ico";
|
||||
}
|
||||
|
||||
win = new BrowserWindow({
|
||||
width: 1280,
|
||||
height: 800,
|
||||
show: false,
|
||||
backgroundColor: "#222428",
|
||||
useContentSize: true,
|
||||
minWidth: 800,
|
||||
minHeight: 600,
|
||||
title: "shapez.io Standalone",
|
||||
transparent: false,
|
||||
icon: path.join(__dirname, "favicon" + faviconExtension),
|
||||
// fullscreen: true,
|
||||
autoHideMenuBar: true,
|
||||
webPreferences: {
|
||||
nodeIntegration: true,
|
||||
webSecurity: false,
|
||||
},
|
||||
// allowRunningInsecureContent: false,
|
||||
});
|
||||
|
||||
if (isLocal) {
|
||||
win.loadURL("http://localhost:3005");
|
||||
} else {
|
||||
win.loadURL(
|
||||
url.format({
|
||||
pathname: path.join(__dirname, "index.html"),
|
||||
protocol: "file:",
|
||||
slashes: true,
|
||||
})
|
||||
);
|
||||
}
|
||||
win.webContents.session.clearCache(() => null);
|
||||
win.webContents.session.clearStorageData();
|
||||
|
||||
win.webContents.on("new-window", (event, pth) => {
|
||||
event.preventDefault();
|
||||
shell.openExternal(pth);
|
||||
});
|
||||
|
||||
win.on("closed", () => {
|
||||
console.log("Window closed");
|
||||
win = null;
|
||||
});
|
||||
|
||||
if (isDev) {
|
||||
menu = new Menu();
|
||||
|
||||
const mainItem = new MenuItem({
|
||||
label: "Toggle Dev Tools",
|
||||
click: () => win.webContents.toggleDevTools(),
|
||||
accelerator: "F12",
|
||||
});
|
||||
menu.append(mainItem);
|
||||
|
||||
const reloadItem = new MenuItem({
|
||||
label: "Restart",
|
||||
click: () => win.reload(),
|
||||
accelerator: "F5",
|
||||
});
|
||||
menu.append(reloadItem);
|
||||
|
||||
const fullscreenItem = new MenuItem({
|
||||
label: "Fullscreen",
|
||||
click: () => win.setFullScreen(!win.isFullScreen()),
|
||||
accelerator: "F11",
|
||||
});
|
||||
menu.append(fullscreenItem);
|
||||
|
||||
Menu.setApplicationMenu(menu);
|
||||
} else {
|
||||
Menu.setApplicationMenu(null);
|
||||
}
|
||||
|
||||
win.once("ready-to-show", () => {
|
||||
win.show();
|
||||
win.focus();
|
||||
});
|
||||
}
|
||||
|
||||
if (!app.requestSingleInstanceLock()) {
|
||||
app.exit(0);
|
||||
} else {
|
||||
app.on("second-instance", (event, commandLine, workingDirectory) => {
|
||||
// Someone tried to run a second instance, we should focus
|
||||
if (win) {
|
||||
if (win.isMinimized()) {
|
||||
win.restore();
|
||||
}
|
||||
win.focus();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
app.on("ready", createWindow);
|
||||
|
||||
app.on("window-all-closed", () => {
|
||||
console.log("All windows closed");
|
||||
app.quit();
|
||||
});
|
||||
|
||||
ipcMain.on("set-fullscreen", (event, flag) => {
|
||||
win.setFullScreen(flag);
|
||||
});
|
||||
|
||||
ipcMain.on("exit-app", (event, flag) => {
|
||||
win.close();
|
||||
app.quit();
|
||||
});
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
await 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));
|
||||
fs.writeFileSync(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));
|
||||
fs.writeFileSync(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)
|
||||
);
|
||||
fs.renameSync(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)
|
||||
);
|
||||
fs.renameSync(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
|
||||
fs.unlinkSync(backupFileName);
|
||||
}
|
||||
|
||||
// rename the old file to the new backup file
|
||||
console.log(prefix, "Moving", niceFileName(oldTemporaryName), "to the backup file location");
|
||||
fs.renameSync(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) {
|
||||
case "read": {
|
||||
if (!fs.existsSync(fname)) {
|
||||
return {
|
||||
// Special FILE_NOT_FOUND error code
|
||||
error: "file_not_found",
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const data = fs.readFileSync(fname, { encoding: "utf8" });
|
||||
return {
|
||||
success: true,
|
||||
data,
|
||||
};
|
||||
} catch (ex) {
|
||||
console.error(ex);
|
||||
return {
|
||||
error: ex,
|
||||
};
|
||||
}
|
||||
}
|
||||
case "write": {
|
||||
try {
|
||||
writeFileSafe(fname, job.contents);
|
||||
return {
|
||||
success: true,
|
||||
data: job.contents,
|
||||
};
|
||||
} catch (ex) {
|
||||
console.error(ex);
|
||||
return {
|
||||
error: ex,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
case "delete": {
|
||||
try {
|
||||
fs.unlinkSync(fname);
|
||||
} catch (ex) {
|
||||
console.error(ex);
|
||||
return {
|
||||
error: ex,
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
success: true,
|
||||
data: null,
|
||||
};
|
||||
}
|
||||
|
||||
default:
|
||||
throw new Error("Unkown fs job: " + job.type);
|
||||
}
|
||||
}
|
||||
|
||||
ipcMain.on("fs-job", async (event, arg) => {
|
||||
const result = await performFsJob(arg);
|
||||
event.sender.send("fs-response", { id: arg.id, result });
|
||||
});
|
||||
wegame.init(isDev);
|
||||
wegame.listen();
|
18
electron_wegame/package.json
Normal file
18
electron_wegame/package.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "electron",
|
||||
"version": "1.0.0",
|
||||
"main": "index.js",
|
||||
"license": "MIT",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"startDev": "electron --disable-direct-composition --in-process-gpu . --dev --local",
|
||||
"startDevGpu": "electron --enable-gpu-rasterization --enable-accelerated-2d-canvas --num-raster-threads=8 --enable-zero-copy . --dev --local",
|
||||
"start": "electron --disable-direct-composition --in-process-gpu ."
|
||||
},
|
||||
"devDependencies": {
|
||||
"electron": "3.1.13"
|
||||
},
|
||||
"dependencies": {
|
||||
"async-lock": "^1.2.8"
|
||||
}
|
||||
}
|
52
electron_wegame/wegame.js
Normal file
52
electron_wegame/wegame.js
Normal file
@ -0,0 +1,52 @@
|
||||
const railsdk = require("./wegame_sdk/railsdk.js");
|
||||
const { dialog } = require("electron");
|
||||
|
||||
function init(isDev) {
|
||||
console.log("Step 1: wegame: init");
|
||||
|
||||
try {
|
||||
console.log("Step 2: Calling need restart app");
|
||||
const need_restart = railsdk.RailNeedRestartAppForCheckingEnvironment(
|
||||
2001639,
|
||||
[`--rail_render_pid=${process.pid}`] //,"--rail_debug_mode",
|
||||
);
|
||||
console.log("Step 3: Needs restart =", need_restart);
|
||||
if (need_restart) {
|
||||
console.error("Step 4: Need restart");
|
||||
dialog.showErrorBox("加载RailSDK失败", "请先运行WeGame开发者版本");
|
||||
return;
|
||||
}
|
||||
} catch (err) {
|
||||
console.error("Rail SDK error:", err);
|
||||
dialog.showErrorBox("加载RailSDK失败", err);
|
||||
return;
|
||||
}
|
||||
|
||||
console.log("Step 5: starting rail sdk");
|
||||
if (railsdk.RailInitialize() === false) {
|
||||
console.error("RailInitialize() = false");
|
||||
dialog.showErrorBox("RailInitialize调用失败", "请先运行WeGame开发者版本");
|
||||
return;
|
||||
}
|
||||
|
||||
console.log("Initialize RailSDK success!");
|
||||
|
||||
railsdk.RailRegisterEvent(railsdk.RailEventID.kRailEventSystemStateChanged, event => {
|
||||
console.log(event);
|
||||
if (event.result === railsdk.RailResult.kSuccess) {
|
||||
if (
|
||||
event.state === railsdk.RailSystemState.kSystemStatePlatformOffline ||
|
||||
event.state === railsdk.RailSystemState.kSystemStatePlatformExit ||
|
||||
event.state === railsdk.RailSystemState.kSystemStateGameExitByAntiAddiction
|
||||
) {
|
||||
remote.app.exit();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function listen() {
|
||||
console.log("wegame: listen");
|
||||
}
|
||||
|
||||
module.exports = { init, listen };
|
982
electron_wegame/yarn.lock
Normal file
982
electron_wegame/yarn.lock
Normal file
@ -0,0 +1,982 @@
|
||||
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
# yarn lockfile v1
|
||||
|
||||
|
||||
"@types/node@^10.1.4":
|
||||
version "10.17.60"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b"
|
||||
integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==
|
||||
|
||||
ajv@^6.12.3:
|
||||
version "6.12.6"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
|
||||
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
|
||||
dependencies:
|
||||
fast-deep-equal "^3.1.1"
|
||||
fast-json-stable-stringify "^2.0.0"
|
||||
json-schema-traverse "^0.4.1"
|
||||
uri-js "^4.2.2"
|
||||
|
||||
ansi-regex@^2.0.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
|
||||
integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8=
|
||||
|
||||
array-find-index@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
|
||||
integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
|
||||
|
||||
asn1@~0.2.3:
|
||||
version "0.2.4"
|
||||
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
|
||||
integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
|
||||
dependencies:
|
||||
safer-buffer "~2.1.0"
|
||||
|
||||
assert-plus@1.0.0, assert-plus@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
|
||||
integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
|
||||
|
||||
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==
|
||||
|
||||
asynckit@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
||||
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
|
||||
|
||||
aws-sign2@~0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
|
||||
integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
|
||||
|
||||
aws4@^1.8.0:
|
||||
version "1.11.0"
|
||||
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
|
||||
integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
|
||||
|
||||
bcrypt-pbkdf@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
|
||||
integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
|
||||
dependencies:
|
||||
tweetnacl "^0.14.3"
|
||||
|
||||
buffer-crc32@~0.2.3:
|
||||
version "0.2.13"
|
||||
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.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
|
||||
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
|
||||
|
||||
camelcase-keys@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
|
||||
integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc=
|
||||
dependencies:
|
||||
camelcase "^2.0.0"
|
||||
map-obj "^1.0.0"
|
||||
|
||||
camelcase@^2.0.0:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
|
||||
integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=
|
||||
|
||||
caseless@~0.12.0:
|
||||
version "0.12.0"
|
||||
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
|
||||
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
|
||||
|
||||
code-point-at@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
|
||||
integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=
|
||||
|
||||
combined-stream@^1.0.6, combined-stream@~1.0.6:
|
||||
version "1.0.8"
|
||||
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
|
||||
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
|
||||
dependencies:
|
||||
delayed-stream "~1.0.0"
|
||||
|
||||
concat-stream@^1.6.2:
|
||||
version "1.6.2"
|
||||
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"
|
||||
inherits "^2.0.3"
|
||||
readable-stream "^2.2.2"
|
||||
typedarray "^0.0.6"
|
||||
|
||||
core-util-is@1.0.2, core-util-is@~1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
||||
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
|
||||
|
||||
currently-unhandled@^0.4.1:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
|
||||
integrity sha1-mI3zP+qxke95mmE2nddsF635V+o=
|
||||
dependencies:
|
||||
array-find-index "^1.0.1"
|
||||
|
||||
dashdash@^1.12.0:
|
||||
version "1.14.1"
|
||||
resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
|
||||
integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
|
||||
dependencies:
|
||||
assert-plus "^1.0.0"
|
||||
|
||||
debug@^2.1.3, debug@^2.2.0, debug@^2.6.9:
|
||||
version "2.6.9"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
||||
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
|
||||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
debug@^3.0.0:
|
||||
version "3.2.7"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
|
||||
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
|
||||
dependencies:
|
||||
ms "^2.1.1"
|
||||
|
||||
decamelize@^1.1.2:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
|
||||
integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=
|
||||
|
||||
deep-extend@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
|
||||
integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==
|
||||
|
||||
delayed-stream@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
||||
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
|
||||
|
||||
ecc-jsbn@~0.1.1:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
|
||||
integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
|
||||
dependencies:
|
||||
jsbn "~0.1.0"
|
||||
safer-buffer "^2.1.0"
|
||||
|
||||
electron-download@^4.1.0:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/electron-download/-/electron-download-4.1.1.tgz#02e69556705cc456e520f9e035556ed5a015ebe8"
|
||||
integrity sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg==
|
||||
dependencies:
|
||||
debug "^3.0.0"
|
||||
env-paths "^1.0.0"
|
||||
fs-extra "^4.0.1"
|
||||
minimist "^1.2.0"
|
||||
nugget "^2.0.1"
|
||||
path-exists "^3.0.0"
|
||||
rc "^1.2.1"
|
||||
semver "^5.4.1"
|
||||
sumchecker "^2.0.2"
|
||||
|
||||
electron@3.1.13:
|
||||
version "3.1.13"
|
||||
resolved "https://registry.yarnpkg.com/electron/-/electron-3.1.13.tgz#aeb276f4cf5e3785078b6495e982ee46d553a5d2"
|
||||
integrity sha512-aRNywoUSO1Va/lpU4nz3K6GDyFqYtlOnHGLcERAAHfhB+IJrJ34cUJW4FVBpm43AwvUdAeuCkVKRLtOmrgx5CA==
|
||||
dependencies:
|
||||
"@types/node" "^10.1.4"
|
||||
electron-download "^4.1.0"
|
||||
extract-zip "^1.0.3"
|
||||
|
||||
env-paths@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-1.0.0.tgz#4168133b42bb05c38a35b1ae4397c8298ab369e0"
|
||||
integrity sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=
|
||||
|
||||
error-ex@^1.2.0:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
|
||||
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
|
||||
dependencies:
|
||||
is-arrayish "^0.2.1"
|
||||
|
||||
extend@~3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
|
||||
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
|
||||
|
||||
extract-zip@^1.0.3:
|
||||
version "1.7.0"
|
||||
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"
|
||||
debug "^2.6.9"
|
||||
mkdirp "^0.5.4"
|
||||
yauzl "^2.10.0"
|
||||
|
||||
extsprintf@1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
|
||||
integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
|
||||
|
||||
extsprintf@^1.2.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
|
||||
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
|
||||
|
||||
fast-deep-equal@^3.1.1:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
|
||||
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
|
||||
|
||||
fast-json-stable-stringify@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
|
||||
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
|
||||
|
||||
fd-slicer@~1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
|
||||
integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
|
||||
dependencies:
|
||||
pend "~1.2.0"
|
||||
|
||||
find-up@^1.0.0:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
|
||||
integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=
|
||||
dependencies:
|
||||
path-exists "^2.0.0"
|
||||
pinkie-promise "^2.0.0"
|
||||
|
||||
forever-agent@~0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
|
||||
integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
|
||||
|
||||
form-data@~2.3.2:
|
||||
version "2.3.3"
|
||||
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
|
||||
integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
|
||||
dependencies:
|
||||
asynckit "^0.4.0"
|
||||
combined-stream "^1.0.6"
|
||||
mime-types "^2.1.12"
|
||||
|
||||
fs-extra@^4.0.1:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
|
||||
integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==
|
||||
dependencies:
|
||||
graceful-fs "^4.1.2"
|
||||
jsonfile "^4.0.0"
|
||||
universalify "^0.1.0"
|
||||
|
||||
function-bind@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
|
||||
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
||||
|
||||
get-stdin@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
|
||||
integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=
|
||||
|
||||
getpass@^0.1.1:
|
||||
version "0.1.7"
|
||||
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
|
||||
integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
|
||||
dependencies:
|
||||
assert-plus "^1.0.0"
|
||||
|
||||
graceful-fs@^4.1.2, graceful-fs@^4.1.6:
|
||||
version "4.2.6"
|
||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee"
|
||||
integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==
|
||||
|
||||
har-schema@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
|
||||
integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
|
||||
|
||||
har-validator@~5.1.3:
|
||||
version "5.1.5"
|
||||
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd"
|
||||
integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==
|
||||
dependencies:
|
||||
ajv "^6.12.3"
|
||||
har-schema "^2.0.0"
|
||||
|
||||
has@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
|
||||
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
|
||||
dependencies:
|
||||
function-bind "^1.1.1"
|
||||
|
||||
hosted-git-info@^2.1.4:
|
||||
version "2.8.9"
|
||||
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9"
|
||||
integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
|
||||
|
||||
http-signature@~1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
|
||||
integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
|
||||
dependencies:
|
||||
assert-plus "^1.0.0"
|
||||
jsprim "^1.2.2"
|
||||
sshpk "^1.7.0"
|
||||
|
||||
indent-string@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
|
||||
integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=
|
||||
dependencies:
|
||||
repeating "^2.0.0"
|
||||
|
||||
inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||
|
||||
ini@~1.3.0:
|
||||
version "1.3.8"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
|
||||
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
|
||||
|
||||
is-arrayish@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
|
||||
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
|
||||
|
||||
is-core-module@^2.2.0:
|
||||
version "2.4.0"
|
||||
resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1"
|
||||
integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==
|
||||
dependencies:
|
||||
has "^1.0.3"
|
||||
|
||||
is-finite@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3"
|
||||
integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==
|
||||
|
||||
is-fullwidth-code-point@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
|
||||
integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs=
|
||||
dependencies:
|
||||
number-is-nan "^1.0.0"
|
||||
|
||||
is-typedarray@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
|
||||
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
|
||||
|
||||
is-utf8@^0.2.0:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
|
||||
integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
|
||||
|
||||
isarray@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
|
||||
integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
|
||||
|
||||
isarray@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
||||
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
|
||||
|
||||
isstream@~0.1.2:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
|
||||
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
|
||||
|
||||
jsbn@~0.1.0:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
|
||||
integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
|
||||
|
||||
json-schema-traverse@^0.4.1:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
|
||||
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
|
||||
|
||||
json-schema@0.2.3:
|
||||
version "0.2.3"
|
||||
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
|
||||
integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
|
||||
|
||||
json-stringify-safe@~5.0.1:
|
||||
version "5.0.1"
|
||||
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.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
|
||||
integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
|
||||
optionalDependencies:
|
||||
graceful-fs "^4.1.6"
|
||||
|
||||
jsprim@^1.2.2:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
|
||||
integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
|
||||
dependencies:
|
||||
assert-plus "1.0.0"
|
||||
extsprintf "1.3.0"
|
||||
json-schema "0.2.3"
|
||||
verror "1.10.0"
|
||||
|
||||
load-json-file@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
|
||||
integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=
|
||||
dependencies:
|
||||
graceful-fs "^4.1.2"
|
||||
parse-json "^2.2.0"
|
||||
pify "^2.0.0"
|
||||
pinkie-promise "^2.0.0"
|
||||
strip-bom "^2.0.0"
|
||||
|
||||
loud-rejection@^1.0.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
|
||||
integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=
|
||||
dependencies:
|
||||
currently-unhandled "^0.4.1"
|
||||
signal-exit "^3.0.0"
|
||||
|
||||
map-obj@^1.0.0, map-obj@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
|
||||
integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=
|
||||
|
||||
meow@^3.1.0:
|
||||
version "3.7.0"
|
||||
resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
|
||||
integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=
|
||||
dependencies:
|
||||
camelcase-keys "^2.0.0"
|
||||
decamelize "^1.1.2"
|
||||
loud-rejection "^1.0.0"
|
||||
map-obj "^1.0.1"
|
||||
minimist "^1.1.3"
|
||||
normalize-package-data "^2.3.4"
|
||||
object-assign "^4.0.1"
|
||||
read-pkg-up "^1.0.1"
|
||||
redent "^1.0.0"
|
||||
trim-newlines "^1.0.0"
|
||||
|
||||
mime-db@1.47.0:
|
||||
version "1.47.0"
|
||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c"
|
||||
integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==
|
||||
|
||||
mime-types@^2.1.12, mime-types@~2.1.19:
|
||||
version "2.1.30"
|
||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d"
|
||||
integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==
|
||||
dependencies:
|
||||
mime-db "1.47.0"
|
||||
|
||||
minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5:
|
||||
version "1.2.5"
|
||||
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.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.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
||||
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
|
||||
|
||||
ms@^2.1.1:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
||||
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||
|
||||
normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8"
|
||||
integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==
|
||||
dependencies:
|
||||
hosted-git-info "^2.1.4"
|
||||
resolve "^1.10.0"
|
||||
semver "2 || 3 || 4 || 5"
|
||||
validate-npm-package-license "^3.0.1"
|
||||
|
||||
nugget@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.1.tgz#201095a487e1ad36081b3432fa3cada4f8d071b0"
|
||||
integrity sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=
|
||||
dependencies:
|
||||
debug "^2.1.3"
|
||||
minimist "^1.1.0"
|
||||
pretty-bytes "^1.0.2"
|
||||
progress-stream "^1.1.0"
|
||||
request "^2.45.0"
|
||||
single-line-log "^1.1.2"
|
||||
throttleit "0.0.2"
|
||||
|
||||
number-is-nan@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
|
||||
integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=
|
||||
|
||||
oauth-sign@~0.9.0:
|
||||
version "0.9.0"
|
||||
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
|
||||
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
|
||||
|
||||
object-assign@^4.0.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
||||
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
|
||||
|
||||
object-keys@~0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336"
|
||||
integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=
|
||||
|
||||
parse-json@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
|
||||
integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=
|
||||
dependencies:
|
||||
error-ex "^1.2.0"
|
||||
|
||||
path-exists@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
|
||||
integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=
|
||||
dependencies:
|
||||
pinkie-promise "^2.0.0"
|
||||
|
||||
path-exists@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
|
||||
integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
|
||||
|
||||
path-parse@^1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
|
||||
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
|
||||
|
||||
path-type@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
|
||||
integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=
|
||||
dependencies:
|
||||
graceful-fs "^4.1.2"
|
||||
pify "^2.0.0"
|
||||
pinkie-promise "^2.0.0"
|
||||
|
||||
pend@~1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
|
||||
integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
|
||||
|
||||
performance-now@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
|
||||
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
|
||||
|
||||
pify@^2.0.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
||||
integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw=
|
||||
|
||||
pinkie-promise@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
|
||||
integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o=
|
||||
dependencies:
|
||||
pinkie "^2.0.0"
|
||||
|
||||
pinkie@^2.0.0:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
|
||||
integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA=
|
||||
|
||||
pretty-bytes@^1.0.2:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-1.0.4.tgz#0a22e8210609ad35542f8c8d5d2159aff0751c84"
|
||||
integrity sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=
|
||||
dependencies:
|
||||
get-stdin "^4.0.1"
|
||||
meow "^3.1.0"
|
||||
|
||||
process-nextick-args@~2.0.0:
|
||||
version "2.0.1"
|
||||
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-stream@^1.1.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-1.2.0.tgz#2cd3cfea33ba3a89c9c121ec3347abe9ab125f77"
|
||||
integrity sha1-LNPP6jO6OonJwSHsM0er6asSX3c=
|
||||
dependencies:
|
||||
speedometer "~0.1.2"
|
||||
through2 "~0.2.3"
|
||||
|
||||
psl@^1.1.28:
|
||||
version "1.8.0"
|
||||
resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
|
||||
integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
|
||||
|
||||
punycode@^2.1.0, punycode@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
|
||||
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
|
||||
|
||||
qs@~6.5.2:
|
||||
version "6.5.2"
|
||||
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
|
||||
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
|
||||
|
||||
rc@^1.2.1:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
|
||||
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
|
||||
dependencies:
|
||||
deep-extend "^0.6.0"
|
||||
ini "~1.3.0"
|
||||
minimist "^1.2.0"
|
||||
strip-json-comments "~2.0.1"
|
||||
|
||||
read-pkg-up@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
|
||||
integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=
|
||||
dependencies:
|
||||
find-up "^1.0.0"
|
||||
read-pkg "^1.0.0"
|
||||
|
||||
read-pkg@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
|
||||
integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=
|
||||
dependencies:
|
||||
load-json-file "^1.0.0"
|
||||
normalize-package-data "^2.3.2"
|
||||
path-type "^1.0.0"
|
||||
|
||||
readable-stream@^2.2.2:
|
||||
version "2.3.7"
|
||||
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"
|
||||
inherits "~2.0.3"
|
||||
isarray "~1.0.0"
|
||||
process-nextick-args "~2.0.0"
|
||||
safe-buffer "~5.1.1"
|
||||
string_decoder "~1.1.1"
|
||||
util-deprecate "~1.0.1"
|
||||
|
||||
readable-stream@~1.1.9:
|
||||
version "1.1.14"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
|
||||
integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk=
|
||||
dependencies:
|
||||
core-util-is "~1.0.0"
|
||||
inherits "~2.0.1"
|
||||
isarray "0.0.1"
|
||||
string_decoder "~0.10.x"
|
||||
|
||||
redent@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
|
||||
integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=
|
||||
dependencies:
|
||||
indent-string "^2.1.0"
|
||||
strip-indent "^1.0.1"
|
||||
|
||||
repeating@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
|
||||
integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=
|
||||
dependencies:
|
||||
is-finite "^1.0.0"
|
||||
|
||||
request@^2.45.0:
|
||||
version "2.88.2"
|
||||
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
|
||||
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
|
||||
dependencies:
|
||||
aws-sign2 "~0.7.0"
|
||||
aws4 "^1.8.0"
|
||||
caseless "~0.12.0"
|
||||
combined-stream "~1.0.6"
|
||||
extend "~3.0.2"
|
||||
forever-agent "~0.6.1"
|
||||
form-data "~2.3.2"
|
||||
har-validator "~5.1.3"
|
||||
http-signature "~1.2.0"
|
||||
is-typedarray "~1.0.0"
|
||||
isstream "~0.1.2"
|
||||
json-stringify-safe "~5.0.1"
|
||||
mime-types "~2.1.19"
|
||||
oauth-sign "~0.9.0"
|
||||
performance-now "^2.1.0"
|
||||
qs "~6.5.2"
|
||||
safe-buffer "^5.1.2"
|
||||
tough-cookie "~2.5.0"
|
||||
tunnel-agent "^0.6.0"
|
||||
uuid "^3.3.2"
|
||||
|
||||
resolve@^1.10.0:
|
||||
version "1.20.0"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
|
||||
integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
|
||||
dependencies:
|
||||
is-core-module "^2.2.0"
|
||||
path-parse "^1.0.6"
|
||||
|
||||
safe-buffer@^5.0.1, safe-buffer@^5.1.2:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
|
||||
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
|
||||
|
||||
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
||||
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
|
||||
|
||||
safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
"semver@2 || 3 || 4 || 5", semver@^5.4.1:
|
||||
version "5.7.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
||||
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
||||
|
||||
signal-exit@^3.0.0:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c"
|
||||
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
|
||||
|
||||
single-line-log@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/single-line-log/-/single-line-log-1.1.2.tgz#c2f83f273a3e1a16edb0995661da0ed5ef033364"
|
||||
integrity sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=
|
||||
dependencies:
|
||||
string-width "^1.0.1"
|
||||
|
||||
spdx-correct@^3.0.0:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9"
|
||||
integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==
|
||||
dependencies:
|
||||
spdx-expression-parse "^3.0.0"
|
||||
spdx-license-ids "^3.0.0"
|
||||
|
||||
spdx-exceptions@^2.1.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d"
|
||||
integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==
|
||||
|
||||
spdx-expression-parse@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679"
|
||||
integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==
|
||||
dependencies:
|
||||
spdx-exceptions "^2.1.0"
|
||||
spdx-license-ids "^3.0.0"
|
||||
|
||||
spdx-license-ids@^3.0.0:
|
||||
version "3.0.9"
|
||||
resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f"
|
||||
integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==
|
||||
|
||||
speedometer@~0.1.2:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz#9876dbd2a169d3115402d48e6ea6329c8816a50d"
|
||||
integrity sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=
|
||||
|
||||
sshpk@^1.7.0:
|
||||
version "1.16.1"
|
||||
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
|
||||
integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
|
||||
dependencies:
|
||||
asn1 "~0.2.3"
|
||||
assert-plus "^1.0.0"
|
||||
bcrypt-pbkdf "^1.0.0"
|
||||
dashdash "^1.12.0"
|
||||
ecc-jsbn "~0.1.1"
|
||||
getpass "^0.1.1"
|
||||
jsbn "~0.1.0"
|
||||
safer-buffer "^2.0.2"
|
||||
tweetnacl "~0.14.0"
|
||||
|
||||
string-width@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
|
||||
integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=
|
||||
dependencies:
|
||||
code-point-at "^1.0.0"
|
||||
is-fullwidth-code-point "^1.0.0"
|
||||
strip-ansi "^3.0.0"
|
||||
|
||||
string_decoder@~0.10.x:
|
||||
version "0.10.31"
|
||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
|
||||
integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
|
||||
|
||||
string_decoder@~1.1.1:
|
||||
version "1.1.1"
|
||||
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"
|
||||
|
||||
strip-ansi@^3.0.0:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
|
||||
integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=
|
||||
dependencies:
|
||||
ansi-regex "^2.0.0"
|
||||
|
||||
strip-bom@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
|
||||
integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=
|
||||
dependencies:
|
||||
is-utf8 "^0.2.0"
|
||||
|
||||
strip-indent@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
|
||||
integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
|
||||
dependencies:
|
||||
get-stdin "^4.0.1"
|
||||
|
||||
strip-json-comments@~2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
||||
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
|
||||
|
||||
sumchecker@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-2.0.2.tgz#0f42c10e5d05da5d42eea3e56c3399a37d6c5b3e"
|
||||
integrity sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=
|
||||
dependencies:
|
||||
debug "^2.2.0"
|
||||
|
||||
throttleit@0.0.2:
|
||||
version "0.0.2"
|
||||
resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf"
|
||||
integrity sha1-z+34jmDADdlpe2H90qg0OptoDq8=
|
||||
|
||||
through2@~0.2.3:
|
||||
version "0.2.3"
|
||||
resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz#eb3284da4ea311b6cc8ace3653748a52abf25a3f"
|
||||
integrity sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=
|
||||
dependencies:
|
||||
readable-stream "~1.1.9"
|
||||
xtend "~2.1.1"
|
||||
|
||||
tough-cookie@~2.5.0:
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
|
||||
integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
|
||||
dependencies:
|
||||
psl "^1.1.28"
|
||||
punycode "^2.1.1"
|
||||
|
||||
trim-newlines@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
|
||||
integrity sha1-WIeWa7WCpFA6QetST301ARgVphM=
|
||||
|
||||
tunnel-agent@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
|
||||
integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
|
||||
dependencies:
|
||||
safe-buffer "^5.0.1"
|
||||
|
||||
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
|
||||
version "0.14.5"
|
||||
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
|
||||
integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
|
||||
|
||||
typedarray@^0.0.6:
|
||||
version "0.0.6"
|
||||
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.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
|
||||
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
|
||||
|
||||
uri-js@^4.2.2:
|
||||
version "4.4.1"
|
||||
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
|
||||
integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
|
||||
dependencies:
|
||||
punycode "^2.1.0"
|
||||
|
||||
util-deprecate@~1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
|
||||
|
||||
uuid@^3.3.2:
|
||||
version "3.4.0"
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
||||
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
|
||||
|
||||
validate-npm-package-license@^3.0.1:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
|
||||
integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==
|
||||
dependencies:
|
||||
spdx-correct "^3.0.0"
|
||||
spdx-expression-parse "^3.0.0"
|
||||
|
||||
verror@1.10.0:
|
||||
version "1.10.0"
|
||||
resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
|
||||
integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
|
||||
dependencies:
|
||||
assert-plus "^1.0.0"
|
||||
core-util-is "1.0.2"
|
||||
extsprintf "^1.2.0"
|
||||
|
||||
xtend@~2.1.1:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b"
|
||||
integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os=
|
||||
dependencies:
|
||||
object-keys "~0.4.0"
|
||||
|
||||
yauzl@^2.10.0:
|
||||
version "2.10.0"
|
||||
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
|
||||
integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
|
||||
dependencies:
|
||||
buffer-crc32 "~0.2.3"
|
||||
fd-slicer "~1.1.0"
|
@ -139,7 +139,12 @@ gulp.task("main.webserver", () => {
|
||||
);
|
||||
});
|
||||
|
||||
function serve({ standalone, chineseVersion = false }) {
|
||||
/**
|
||||
*
|
||||
* @param {object} param0
|
||||
* @param {"web"|"standalone"|"china"|"wegame"} param0.version
|
||||
*/
|
||||
function serve({ version = "web" }) {
|
||||
browserSync.init({
|
||||
server: buildFolder,
|
||||
port: 3005,
|
||||
@ -163,7 +168,7 @@ function serve({ standalone, chineseVersion = false }) {
|
||||
gulp.watch(["../src/**/*.scss"], gulp.series("css.dev"));
|
||||
|
||||
// Watch .html files, those trigger a html rebuild
|
||||
gulp.watch("../src/**/*.html", gulp.series(standalone ? "html.standalone-dev" : "html.dev"));
|
||||
gulp.watch("../src/**/*.html", gulp.series(version === "web" ? "html.dev" : "html.standalone-dev"));
|
||||
|
||||
// Watch sound files
|
||||
// gulp.watch(["../res_raw/sounds/**/*.mp3", "../res_raw/sounds/**/*.wav"], gulp.series("sounds.dev"));
|
||||
@ -199,14 +204,25 @@ function serve({ standalone, chineseVersion = false }) {
|
||||
return gulp.src(path).pipe(browserSync.reload({ stream: true }));
|
||||
});
|
||||
|
||||
// Start the webpack watching server (Will never return)
|
||||
if (standalone) {
|
||||
gulp.series("js.standalone-dev.watch")(() => true);
|
||||
} else {
|
||||
if (chineseVersion) {
|
||||
gulp.series("china.js.dev.watch")(() => true);
|
||||
} else {
|
||||
switch (version) {
|
||||
case "web": {
|
||||
gulp.series("js.dev.watch")(() => true);
|
||||
break;
|
||||
}
|
||||
case "standalone": {
|
||||
gulp.series("js.standalone-dev.watch")(() => true);
|
||||
break;
|
||||
}
|
||||
case "china": {
|
||||
gulp.series("china.js.dev.watch")(() => true);
|
||||
break;
|
||||
}
|
||||
case "wegame": {
|
||||
gulp.series("wegame.js.dev.watch")(() => true);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
throw new Error("Unknown version " + version);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -294,7 +310,7 @@ gulp.task(
|
||||
|
||||
// Builds everything (standalone-prod)
|
||||
|
||||
for (const prefix of ["", "china."]) {
|
||||
for (const prefix of ["", "china.", "wegame."]) {
|
||||
gulp.task(
|
||||
prefix + "step.standalone-prod.code",
|
||||
gulp.series("sounds.fullbuildHQ", "translations.fullBuild", prefix + "js.standalone-prod")
|
||||
@ -327,25 +343,45 @@ gulp.task(
|
||||
);
|
||||
gulp.task("main.deploy.prod", gulp.series("utils.requireCleanWorkingTree", "build.prod", "ftp.upload.prod"));
|
||||
gulp.task("main.deploy.all", gulp.series("main.deploy.staging", "main.deploy.prod"));
|
||||
|
||||
// steam
|
||||
gulp.task("regular.main.standalone", gulp.series("build.standalone-prod", "standalone.package.prod"));
|
||||
|
||||
// china
|
||||
gulp.task(
|
||||
"china.main.standalone",
|
||||
gulp.series("china.build.standalone-prod", "china.standalone.package.prod")
|
||||
);
|
||||
gulp.task("standalone.all", gulp.series("regular.main.standalone", "china.main.standalone"));
|
||||
|
||||
// wegame
|
||||
gulp.task(
|
||||
"wegame.main.standalone",
|
||||
gulp.series("wegame.build.standalone-prod", "wegame.standalone.package.prod")
|
||||
);
|
||||
|
||||
// all (except wegame)
|
||||
gulp.task("standalone.steam", gulp.series("regular.main.standalone", "china.main.standalone"));
|
||||
gulp.task(
|
||||
"standalone.all",
|
||||
gulp.series("regular.main.standalone", "china.main.standalone", "wegame.main.standalone")
|
||||
);
|
||||
|
||||
// Live-development
|
||||
gulp.task(
|
||||
"main.serveDev",
|
||||
gulp.series("build.dev", () => serve({ standalone: false }))
|
||||
gulp.series("build.dev", () => serve({ version: "web" }))
|
||||
);
|
||||
gulp.task(
|
||||
"main.serveStandalone",
|
||||
gulp.series("build.standalone.dev", () => serve({ standalone: true }))
|
||||
gulp.series("build.standalone.dev", () => serve({ version: "standalone" }))
|
||||
);
|
||||
gulp.task(
|
||||
"china.main.serveDev",
|
||||
gulp.series("build.dev", () => serve({ standalone: false, chineseVersion: true }))
|
||||
gulp.series("build.dev", () => serve({ version: "china" }))
|
||||
);
|
||||
gulp.task(
|
||||
"wegame.main.serveDev",
|
||||
gulp.series("build.dev", () => serve({ version: "wegame" }))
|
||||
);
|
||||
|
||||
gulp.task("default", gulp.series("main.serveDev"));
|
||||
|
47
gulp/js.js
47
gulp/js.js
@ -59,6 +59,36 @@ function gulptasksJS($, gulp, buildFolder, browserSync) {
|
||||
.pipe(gulp.dest(buildFolder));
|
||||
});
|
||||
|
||||
//// DEV WEGAME
|
||||
|
||||
gulp.task("wegame.js.dev.watch", () => {
|
||||
return gulp
|
||||
.src("../src/js/main.js")
|
||||
.pipe(
|
||||
$.webpackStream(
|
||||
requireUncached("./webpack.config.js")({
|
||||
watch: true,
|
||||
wegameVersion: true,
|
||||
})
|
||||
)
|
||||
)
|
||||
.pipe(gulp.dest(buildFolder))
|
||||
.pipe(browserSync.stream());
|
||||
});
|
||||
|
||||
gulp.task("wegame.js.dev", () => {
|
||||
return gulp
|
||||
.src("../src/js/main.js")
|
||||
.pipe(
|
||||
$.webpackStream(
|
||||
requireUncached("./webpack.config.js")({
|
||||
wegameVersion: true,
|
||||
})
|
||||
)
|
||||
)
|
||||
.pipe(gulp.dest(buildFolder));
|
||||
});
|
||||
|
||||
//// STAGING
|
||||
|
||||
gulp.task("js.staging.transpiled", () => {
|
||||
@ -208,6 +238,23 @@ function gulptasksJS($, gulp, buildFolder, browserSync) {
|
||||
)
|
||||
.pipe(gulp.dest(buildFolder));
|
||||
});
|
||||
|
||||
gulp.task("wegame.js.standalone-prod", () => {
|
||||
return gulp
|
||||
.src("../src/js/main.js")
|
||||
.pipe(
|
||||
$.webpackStream(
|
||||
requireUncached("./webpack.production.config.js")({
|
||||
enableAssert: false,
|
||||
environment: "prod",
|
||||
es6: false,
|
||||
standalone: true,
|
||||
wegameVersion: true,
|
||||
})
|
||||
)
|
||||
)
|
||||
.pipe(gulp.dest(buildFolder));
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
|
@ -9,21 +9,31 @@ const buildutils = require("./buildutils");
|
||||
const execSync = require("child_process").execSync;
|
||||
|
||||
function gulptasksStandalone($, gulp) {
|
||||
const electronBaseDir = path.join(__dirname, "..", "electron");
|
||||
const targets = [
|
||||
{
|
||||
tempDestDir: path.join(__dirname, "..", "tmp_standalone_files"),
|
||||
suffix: "",
|
||||
taskPrefix: "",
|
||||
electronBaseDir: path.join(__dirname, "..", "electron"),
|
||||
steam: true,
|
||||
},
|
||||
{
|
||||
tempDestDir: path.join(__dirname, "..", "tmp_standalone_files_china"),
|
||||
suffix: "china",
|
||||
taskPrefix: "china.",
|
||||
electronBaseDir: path.join(__dirname, "..", "electron"),
|
||||
steam: true,
|
||||
},
|
||||
{
|
||||
tempDestDir: path.join(__dirname, "..", "tmp_standalone_files_wegame"),
|
||||
suffix: "wegame",
|
||||
taskPrefix: "wegame.",
|
||||
electronBaseDir: path.join(__dirname, "..", "electron_wegame"),
|
||||
steam: false,
|
||||
},
|
||||
];
|
||||
|
||||
for (const { tempDestDir, suffix, taskPrefix } of targets) {
|
||||
for (const { tempDestDir, suffix, taskPrefix, electronBaseDir, steam } of targets) {
|
||||
const tempDestBuildDir = path.join(tempDestDir, "built");
|
||||
|
||||
gulp.task(taskPrefix + "standalone.prepare.cleanup", () => {
|
||||
@ -34,13 +44,17 @@ function gulptasksStandalone($, gulp) {
|
||||
const requiredFiles = [
|
||||
path.join(electronBaseDir, "node_modules", "**", "*.*"),
|
||||
path.join(electronBaseDir, "node_modules", "**", ".*"),
|
||||
path.join(electronBaseDir, "steam_appid.txt"),
|
||||
path.join(electronBaseDir, "wegame_sdk", "**", "*.*"),
|
||||
path.join(electronBaseDir, "wegame_sdk", "**", ".*"),
|
||||
path.join(electronBaseDir, "favicon*"),
|
||||
|
||||
// fails on platforms which support symlinks
|
||||
// https://github.com/gulpjs/gulp/issues/1427
|
||||
// path.join(electronBaseDir, "node_modules", "**", "*"),
|
||||
];
|
||||
if (steam) {
|
||||
requiredFiles.push(path.join(electronBaseDir, "steam_appid.txt"));
|
||||
}
|
||||
return gulp.src(requiredFiles, { base: electronBaseDir }).pipe(gulp.dest(tempDestBuildDir));
|
||||
});
|
||||
|
||||
@ -64,6 +78,11 @@ function gulptasksStandalone($, gulp) {
|
||||
});
|
||||
|
||||
gulp.task(taskPrefix + "standalone.prepareVDF", cb => {
|
||||
if (!steam) {
|
||||
cb();
|
||||
return;
|
||||
}
|
||||
|
||||
const hash = buildutils.getRevision();
|
||||
|
||||
const steampipeDir = path.join(__dirname, "steampipe", "scripts");
|
||||
@ -116,11 +135,10 @@ function gulptasksStandalone($, gulp) {
|
||||
const tomlFile = fs.readFileSync(path.join(__dirname, ".itch.toml"));
|
||||
const privateArtifactsPath = "node_modules/shapez.io-private-artifacts";
|
||||
|
||||
let asar;
|
||||
if (fs.existsSync(path.join(tempDestBuildDir, privateArtifactsPath))) {
|
||||
let asar = steam;
|
||||
if (steam && fs.existsSync(path.join(tempDestBuildDir, privateArtifactsPath))) {
|
||||
// @ts-expect-error
|
||||
asar = { unpackDir: privateArtifactsPath };
|
||||
} else {
|
||||
asar = true;
|
||||
}
|
||||
|
||||
packager({
|
||||
@ -147,6 +165,7 @@ function gulptasksStandalone($, gulp) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (steam) {
|
||||
fs.writeFileSync(
|
||||
path.join(appPath, "LICENSE"),
|
||||
fs.readFileSync(path.join(__dirname, "..", "LICENSE"))
|
||||
@ -166,6 +185,7 @@ function gulptasksStandalone($, gulp) {
|
||||
);
|
||||
fs.chmodSync(path.join(appPath, "play.sh"), 0o775);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
cb();
|
||||
|
@ -2,16 +2,16 @@
|
||||
{
|
||||
"appid" "1318690"
|
||||
"desc" "$DESC$"
|
||||
"buildoutput" "C:\work\shapez.io\gulp\steampipe\steamtemp"
|
||||
"buildoutput" "C:\work\shapez\shapez.io\gulp\steampipe\steamtemp"
|
||||
"contentroot" ""
|
||||
"setlive" ""
|
||||
"preview" "0"
|
||||
"local" ""
|
||||
"depots"
|
||||
{
|
||||
"1318691" "C:\work\shapez.io\gulp\steampipe\scripts\windows.vdf"
|
||||
"1318694" "C:\work\shapez.io\gulp\steampipe\scripts\china-windows.vdf"
|
||||
"1318692" "C:\work\shapez.io\gulp\steampipe\scripts\linux.vdf"
|
||||
"1318695" "C:\work\shapez.io\gulp\steampipe\scripts\china-linux.vdf"
|
||||
"1318691" "C:\work\shapez\shapez.io\gulp\steampipe\scripts\windows.vdf"
|
||||
"1318694" "C:\work\shapez\shapez.io\gulp\steampipe\scripts\china-windows.vdf"
|
||||
"1318692" "C:\work\shapez\shapez.io\gulp\steampipe\scripts\linux.vdf"
|
||||
"1318695" "C:\work\shapez\shapez.io\gulp\steampipe\scripts\china-linux.vdf"
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
"DepotBuildConfig"
|
||||
{
|
||||
"DepotID" "1318695"
|
||||
"contentroot" "C:\work\shapez.io\tmp_standalone_files_china\shapez.io-standalonechina-linux-x64"
|
||||
"contentroot" "C:\work\shapez\shapez.io\tmp_standalone_files_china\shapez.io-standalonechina-linux-x64"
|
||||
"FileMapping"
|
||||
{
|
||||
"LocalPath" "*"
|
||||
|
@ -1,7 +1,7 @@
|
||||
"DepotBuildConfig"
|
||||
{
|
||||
"DepotID" "1318694"
|
||||
"contentroot" "C:\work\shapez.io\tmp_standalone_files_china\shapez.io-standalonechina-win32-x64"
|
||||
"contentroot" "C:\work\shapez\shapez.io\tmp_standalone_files_china\shapez.io-standalonechina-win32-x64"
|
||||
"FileMapping"
|
||||
{
|
||||
"LocalPath" "*"
|
||||
|
@ -1,7 +1,7 @@
|
||||
"DepotBuildConfig"
|
||||
{
|
||||
"DepotID" "1318692"
|
||||
"contentroot" "C:\work\shapez.io\tmp_standalone_files\shapez.io-standalone-linux-x64"
|
||||
"contentroot" "C:\work\shapez\shapez.io\tmp_standalone_files\shapez.io-standalone-linux-x64"
|
||||
"FileMapping"
|
||||
{
|
||||
"LocalPath" "*"
|
||||
|
@ -1,7 +1,7 @@
|
||||
"DepotBuildConfig"
|
||||
{
|
||||
"DepotID" "1318691"
|
||||
"contentroot" "C:\work\shapez.io\tmp_standalone_files\shapez.io-standalone-win32-x64"
|
||||
"contentroot" "C:\work\shapez\shapez.io\tmp_standalone_files\shapez.io-standalone-win32-x64"
|
||||
"FileMapping"
|
||||
{
|
||||
"LocalPath" "*"
|
||||
|
@ -6,7 +6,7 @@ const { getRevision, getVersion, getAllResourceImages } = require("./buildutils"
|
||||
const lzString = require("lz-string");
|
||||
const CircularDependencyPlugin = require("circular-dependency-plugin");
|
||||
|
||||
module.exports = ({ watch = false, standalone = false, chineseVersion = false }) => {
|
||||
module.exports = ({ watch = false, standalone = false, chineseVersion = false, wegameVersion = false }) => {
|
||||
return {
|
||||
mode: "development",
|
||||
devtool: "cheap-source-map",
|
||||
@ -35,6 +35,7 @@ module.exports = ({ watch = false, standalone = false, chineseVersion = false })
|
||||
lzString.compressToEncodedURIComponent("http://localhost:10005/v1")
|
||||
),
|
||||
G_CHINA_VERSION: JSON.stringify(chineseVersion),
|
||||
G_WEGAME_VERSION: JSON.stringify(wegameVersion),
|
||||
G_IS_DEV: "true",
|
||||
G_IS_RELEASE: "false",
|
||||
G_IS_MOBILE_APP: "false",
|
||||
|
@ -17,6 +17,7 @@ module.exports = ({
|
||||
isBrowser = true,
|
||||
mobileApp = false,
|
||||
chineseVersion = false,
|
||||
wegameVersion = false,
|
||||
}) => {
|
||||
const globalDefs = {
|
||||
assert: enableAssert ? "window.assert" : "false && window.assert",
|
||||
@ -25,6 +26,7 @@ module.exports = ({
|
||||
G_IS_DEV: "false",
|
||||
|
||||
G_CHINA_VERSION: JSON.stringify(chineseVersion),
|
||||
G_WEGAME_VERSION: JSON.stringify(wegameVersion),
|
||||
G_IS_RELEASE: environment === "prod" ? "true" : "false",
|
||||
G_IS_STANDALONE: standalone ? "true" : "false",
|
||||
G_IS_BROWSER: isBrowser ? "true" : "false",
|
||||
|
BIN
res/logo_wegame.png
Normal file
BIN
res/logo_wegame.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 40 KiB |
BIN
res/puzzle_dlc_logo.png
Normal file
BIN
res/puzzle_dlc_logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 32 KiB |
BIN
res/puzzle_dlc_logo_china.png
Normal file
BIN
res/puzzle_dlc_logo_china.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 44 KiB |
BIN
res/ui/puzzle_dlc_logo_china.png
Normal file
BIN
res/ui/puzzle_dlc_logo_china.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 44 KiB |
BIN
res_raw/sounds/music/puzzle-full.mp3
Normal file
BIN
res_raw/sounds/music/puzzle-full.mp3
Normal file
Binary file not shown.
@ -37,7 +37,7 @@
|
||||
|
||||
.building {
|
||||
@include S(width, 30px);
|
||||
@include S(height, 22px);
|
||||
@include S(height, 30px);
|
||||
background-size: 45%;
|
||||
|
||||
&:not(.unlocked) {
|
||||
@ -49,6 +49,10 @@
|
||||
}
|
||||
|
||||
.building {
|
||||
display: flex;
|
||||
@include S(width, 40px);
|
||||
position: relative;
|
||||
@include S(height, 40px);
|
||||
.icon {
|
||||
color: $accentColorDark;
|
||||
display: flex;
|
||||
@ -56,18 +60,18 @@
|
||||
position: relative;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
@include S(padding, 5px);
|
||||
@include S(padding-bottom, 1px);
|
||||
@include S(width, 35px);
|
||||
@include S(height, 37px);
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
@include S(border-radius, $globalBorderRadius);
|
||||
|
||||
background: center center / 70% no-repeat;
|
||||
}
|
||||
|
||||
&:not(.unlocked) {
|
||||
@include S(width, 25px);
|
||||
.icon {
|
||||
@include S(width, 20px);
|
||||
opacity: 0.15;
|
||||
}
|
||||
&.editor {
|
||||
@ -91,8 +95,8 @@
|
||||
pointer-events: all;
|
||||
transition: all 50ms ease-in-out;
|
||||
transition-property: background-color, transform;
|
||||
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
background-color: rgba(30, 40, 90, 0.1);
|
||||
}
|
||||
@ -100,40 +104,38 @@
|
||||
&.pressed {
|
||||
transform: scale(0.9) !important;
|
||||
}
|
||||
|
||||
}
|
||||
&.selected {
|
||||
// transform: scale(1.05);
|
||||
background-color: rgba(lighten($colorBlueBright, 9), 0.4);
|
||||
@include S(border-radius, 2px);
|
||||
|
||||
.keybinding {
|
||||
color: #111;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.puzzle-lock {
|
||||
& {
|
||||
/* @load-async */
|
||||
background: uiResource("locked_building.png") center center / #{D(14px)} #{D(14px)}
|
||||
no-repeat;
|
||||
background: uiResource("locked_building.png") center center / 90% no-repeat;
|
||||
}
|
||||
|
||||
display: grid;
|
||||
grid-auto-flow: column;
|
||||
@include S(margin-top, 2px);
|
||||
@include S(margin-left, 16px);
|
||||
@include S(margin-bottom, 29px);
|
||||
|
||||
position: absolute;
|
||||
bottom: 20px;
|
||||
@include S(top, -15px);
|
||||
left: 50%;
|
||||
transform: translateX(-50%) !important;
|
||||
transition: all 0.12s ease-in-out;
|
||||
transition-property: opacity, transform;
|
||||
|
||||
cursor: pointer;
|
||||
pointer-events: all;
|
||||
|
||||
@include S(width, 14px);
|
||||
@include S(height, 14px);
|
||||
@include S(width, 12px);
|
||||
@include S(height, 12px);
|
||||
|
||||
&:hover {
|
||||
opacity: 0.5;
|
||||
|
@ -96,12 +96,13 @@
|
||||
@include S(height, 60px);
|
||||
@include S(margin, 0, 10px);
|
||||
box-sizing: border-box;
|
||||
@include S(border-radius, $globalBorderRadius);
|
||||
border-radius: 50%;
|
||||
transition: opacity 0.12s ease-in-out, background-color 0.12s ease-in-out;
|
||||
@include IncreasedClickArea(0px);
|
||||
|
||||
&.liked-yes {
|
||||
/* @load-async */
|
||||
background: uiResource("icons/puzzle_action_liked_yes.png") center center / 70%
|
||||
background: uiResource("icons/puzzle_action_liked_yes.png") center 55% / 60%
|
||||
no-repeat;
|
||||
}
|
||||
|
||||
@ -110,7 +111,18 @@
|
||||
}
|
||||
|
||||
&.active {
|
||||
background-color: #151118 !important;
|
||||
background-color: $colorRedBright !important;
|
||||
@include InlineAnimation(0.3s ease-in-out) {
|
||||
0% {
|
||||
transform: scale(0);
|
||||
}
|
||||
50% {
|
||||
transform: scale(1.2);
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
&:not(.active) {
|
||||
opacity: 0.4;
|
||||
@ -119,6 +131,26 @@
|
||||
}
|
||||
}
|
||||
|
||||
> .buttonBar {
|
||||
display: flex;
|
||||
@include S(margin-top, 20px);
|
||||
|
||||
button.continue {
|
||||
background: #555;
|
||||
@include S(margin-right, 10px);
|
||||
}
|
||||
|
||||
button.menu {
|
||||
background-color: $colorGreenBright;
|
||||
}
|
||||
|
||||
> button {
|
||||
@include S(min-width, 100px);
|
||||
@include S(padding, 10px, 20px);
|
||||
@include IncreasedClickArea(0px);
|
||||
}
|
||||
}
|
||||
|
||||
> .actions {
|
||||
position: absolute;
|
||||
@include S(bottom, 40px);
|
||||
@ -135,14 +167,5 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
button.close {
|
||||
border: 0;
|
||||
position: relative;
|
||||
@include S(margin-top, 15px);
|
||||
background: $colorGreenBright;
|
||||
@include Heading;
|
||||
@include S(padding, 14px, 40px);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -16,4 +16,9 @@
|
||||
background: uiResource("puzzle_dlc_logo_inverse.png") center center / contain no-repeat;
|
||||
}
|
||||
}
|
||||
|
||||
&.china {
|
||||
/* @load-async */
|
||||
background: uiResource("puzzle_dlc_logo_china.png") center center / contain no-repeat !important;
|
||||
}
|
||||
}
|
||||
|
@ -88,9 +88,11 @@
|
||||
|
||||
@include S(grid-column-gap, 10px);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
|
||||
&.demo {
|
||||
&[data-columns="1"] {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
&[data-columns="2"] {
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
|
||||
@ -223,9 +225,48 @@
|
||||
}
|
||||
}
|
||||
|
||||
.puzzleContainer {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
background: #4cc98a;
|
||||
grid-row: 1 / 2;
|
||||
grid-column: 2 / 3;
|
||||
@include S(padding, 20px);
|
||||
@include S(border-radius, $globalBorderRadius);
|
||||
> .dlcLogo {
|
||||
@include S(width, 190px);
|
||||
}
|
||||
|
||||
> button {
|
||||
@include S(margin-top, 20px);
|
||||
@include Heading;
|
||||
@include S(padding, 10px, 30px);
|
||||
background-color: #333;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
&.notOwned {
|
||||
p {
|
||||
@include PlainText;
|
||||
color: #333;
|
||||
@include S(margin-top, 10px);
|
||||
@include S(width, 190px);
|
||||
}
|
||||
> button {
|
||||
box-sizing: border-box;
|
||||
@include S(margin-top, 10px);
|
||||
@include S(width, 190px);
|
||||
@include S(padding, 10px, 20px);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mainContainer {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
grid-row: 1 / 2;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
background: #fafafa;
|
||||
|
@ -1,11 +1,11 @@
|
||||
export const CHANGELOG = [
|
||||
{
|
||||
version: "1.4.0",
|
||||
date: "UNRELEASED",
|
||||
date: "04.06.2021",
|
||||
entries: [
|
||||
"Added puzzle mode",
|
||||
"Belts in blueprints should now always paste correctly",
|
||||
"You can now clear belts by selecting them, and then pressing 'B'",
|
||||
"You can now clear belts by selecting them and then pressing 'B'",
|
||||
"Preparations for the <a href='https://store.steampowered.com/app/1625400/shapezio__Puzzle_DLC/' target='_blank'>Puzzle DLC</a>, coming June 22nd!",
|
||||
],
|
||||
},
|
||||
{
|
||||
|
@ -12,8 +12,13 @@ import { cachebust } from "./cachebust";
|
||||
|
||||
const logger = createLogger("background_loader");
|
||||
|
||||
export function getLogoSprite() {
|
||||
// @todo: ugh, in a hurry
|
||||
return G_WEGAME_VERSION ? "logo_wegame.png" : G_CHINA_VERSION ? "logo_cn.png" : "logo.png";
|
||||
}
|
||||
|
||||
const essentialMainMenuSprites = [
|
||||
G_CHINA_VERSION ? "logo_cn.png" : "logo.png",
|
||||
getLogoSprite(),
|
||||
...G_ALL_UI_IMAGES.filter(src => src.startsWith("ui/") && src.indexOf(".gif") < 0),
|
||||
];
|
||||
const essentialMainMenuSounds = [
|
||||
|
@ -18,6 +18,7 @@ export const THIRDPARTY_URLS = {
|
||||
shapeViewer: "https://viewer.shapez.io",
|
||||
|
||||
standaloneStorePage: "https://store.steampowered.com/app/1318690/shapezio/",
|
||||
puzzleDlcStorePage: "https://store.steampowered.com/app/1625400/shapezio__Puzzle_DLC",
|
||||
|
||||
levelTutorialVideos: {
|
||||
21: "https://www.youtube.com/watch?v=0nUfRLMCcgo&",
|
||||
|
@ -90,9 +90,9 @@ export class StateManager {
|
||||
dialogParent.classList.add("modalDialogParent");
|
||||
document.body.appendChild(dialogParent);
|
||||
|
||||
this.currentState.internalEnterCallback(payload);
|
||||
this.app.sound.playThemeMusic(this.currentState.getThemeMusic());
|
||||
|
||||
this.currentState.internalEnterCallback(payload);
|
||||
this.currentState.onResized(this.app.screenWidth, this.app.screenHeight);
|
||||
|
||||
this.app.analytics.trackStateEnter(key);
|
||||
|
@ -573,12 +573,14 @@ export function round1DigitLocalized(speed, separator = T.global.decimalSeparato
|
||||
* @param {string=} separator The decimal separator for numbers like 50.1 (separator='.')
|
||||
*/
|
||||
export function formatItemsPerSecond(speed, double = false, separator = T.global.decimalSeparator) {
|
||||
return speed === 1.0
|
||||
return (
|
||||
(speed === 1.0
|
||||
? T.ingame.buildingPlacement.infoTexts.oneItemPerSecond
|
||||
: T.ingame.buildingPlacement.infoTexts.itemsPerSecond.replace(
|
||||
"<x>",
|
||||
round2Digits(speed).toString().replace(".", separator)
|
||||
) + (double ? " " + T.ingame.buildingPlacement.infoTexts.itemsPerSecondDouble : "");
|
||||
)) + (double ? " " + T.ingame.buildingPlacement.infoTexts.itemsPerSecondDouble : "")
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -32,6 +32,12 @@ export class AchievementProxy {
|
||||
}
|
||||
|
||||
onLoad() {
|
||||
if (!this.root.gameMode.hasAchievements()) {
|
||||
logger.log("Disabling achievements because game mode does not have achievements");
|
||||
this.disabled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
this.provider
|
||||
.onLoad(this.root)
|
||||
.then(() => {
|
||||
|
@ -199,7 +199,7 @@ export class BeltPath extends BasicSerializableObject {
|
||||
/**
|
||||
* Finds the entity which accepts our items
|
||||
* @param {boolean=} debug_Silent Whether debug output should be silent
|
||||
* @return { (BaseItem, number) => boolean }
|
||||
* @return { (BaseItem, number?) => boolean }
|
||||
*/
|
||||
computeAcceptingEntityAndSlot(debug_Silent = false) {
|
||||
DEBUG && !debug_Silent && logger.log("Recomputing acceptor target");
|
||||
|
@ -3,9 +3,9 @@ import { Entity } from "../entity";
|
||||
/* typehints:end */
|
||||
|
||||
import { enumDirection, Vector } from "../../core/vector";
|
||||
import { enumConstantSignalType, ConstantSignalComponent } from "../components/constant_signal";
|
||||
import { ConstantSignalComponent } from "../components/constant_signal";
|
||||
import { ItemEjectorComponent } from "../components/item_ejector";
|
||||
import { enumItemProducerType, ItemProducerComponent } from "../components/item_producer";
|
||||
import { ItemProducerComponent } from "../components/item_producer";
|
||||
import { MetaBuilding } from "../meta_building";
|
||||
|
||||
export class MetaConstantProducerBuilding extends MetaBuilding {
|
||||
@ -36,15 +36,7 @@ export class MetaConstantProducerBuilding extends MetaBuilding {
|
||||
slots: [{ pos: new Vector(0, 0), direction: enumDirection.top }],
|
||||
})
|
||||
);
|
||||
entity.addComponent(
|
||||
new ItemProducerComponent({
|
||||
type: enumItemProducerType.wireless,
|
||||
})
|
||||
);
|
||||
entity.addComponent(
|
||||
new ConstantSignalComponent({
|
||||
type: enumConstantSignalType.wireless,
|
||||
})
|
||||
);
|
||||
entity.addComponent(new ItemProducerComponent({}));
|
||||
entity.addComponent(new ConstantSignalComponent({}));
|
||||
}
|
||||
}
|
||||
|
@ -3,9 +3,7 @@ import { Entity } from "../entity";
|
||||
/* typehints:end */
|
||||
|
||||
import { enumDirection, Vector } from "../../core/vector";
|
||||
import { enumBeltReaderType, BeltReaderComponent } from "../components/belt_reader";
|
||||
import { GoalAcceptorComponent } from "../components/goal_acceptor";
|
||||
import { ItemEjectorComponent } from "../components/item_ejector";
|
||||
import { ItemAcceptorComponent } from "../components/item_acceptor";
|
||||
import { enumItemProcessorTypes, ItemProcessorComponent } from "../components/item_processor";
|
||||
import { MetaBuilding } from "../meta_building";
|
||||
|
@ -16,20 +16,12 @@ export class BeltReaderComponent extends Component {
|
||||
|
||||
static getSchema() {
|
||||
return {
|
||||
type: types.string,
|
||||
lastItem: types.nullable(typeItemSingleton),
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {object} param0
|
||||
* @param {string=} param0.type
|
||||
*/
|
||||
constructor({ type = enumBeltReaderType.wired }) {
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
this.type = type;
|
||||
|
||||
this.clear();
|
||||
}
|
||||
|
||||
@ -58,8 +50,4 @@ export class BeltReaderComponent extends Component {
|
||||
*/
|
||||
this.lastThroughputComputation = 0;
|
||||
}
|
||||
|
||||
isWireless() {
|
||||
return this.type === enumBeltReaderType.wireless;
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
import { gItemRegistry } from "../../core/global_registries";
|
||||
import { types } from "../../savegame/serialization";
|
||||
import { Component } from "../component";
|
||||
import { BaseItem } from "../base_item";
|
||||
import { Component } from "../component";
|
||||
import { typeItemSingleton } from "../item_resolver";
|
||||
|
||||
/** @enum {string} */
|
||||
|
@ -112,6 +112,11 @@ export class GameMode extends BasicSerializableObject {
|
||||
return true;
|
||||
}
|
||||
|
||||
/** @returns {boolean} */
|
||||
hasAchievements() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/** @returns {number} */
|
||||
getMinimumZoom() {
|
||||
return 0.1;
|
||||
|
@ -40,7 +40,6 @@ export class HUDBaseToolbar extends BaseHUDPart {
|
||||
* element: HTMLElement,
|
||||
* index: number
|
||||
* puzzleLocked: boolean;
|
||||
* class: typeof MetaBuilding,
|
||||
* }>} */
|
||||
this.buildingHandles = {};
|
||||
}
|
||||
@ -136,7 +135,6 @@ export class HUDBaseToolbar extends BaseHUDPart {
|
||||
selected: false,
|
||||
index: i,
|
||||
puzzleLocked: false,
|
||||
class: allBuildings[i],
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -52,12 +52,26 @@ export class HUDPuzzleCompleteNotification extends BaseHUDPart {
|
||||
this.updateState();
|
||||
});
|
||||
|
||||
this.btnClose = document.createElement("button");
|
||||
this.btnClose.classList.add("close", "styledButton");
|
||||
this.btnClose.innerText = T.ingame.puzzleCompletion.buttonSubmit;
|
||||
dialog.appendChild(this.btnClose);
|
||||
const buttonBar = document.createElement("div");
|
||||
buttonBar.classList.add("buttonBar");
|
||||
this.elemContents.appendChild(buttonBar);
|
||||
|
||||
this.trackClicks(this.btnClose, this.close);
|
||||
this.continueBtn = document.createElement("button");
|
||||
this.continueBtn.classList.add("continue", "styledButton");
|
||||
this.continueBtn.innerText = T.ingame.puzzleCompletion.continueBtn;
|
||||
buttonBar.appendChild(this.continueBtn);
|
||||
this.trackClicks(this.continueBtn, () => {
|
||||
this.close(false);
|
||||
});
|
||||
|
||||
this.menuBtn = document.createElement("button");
|
||||
this.menuBtn.classList.add("menu", "styledButton");
|
||||
this.menuBtn.innerText = T.ingame.puzzleCompletion.menuBtn;
|
||||
buttonBar.appendChild(this.menuBtn);
|
||||
|
||||
this.trackClicks(this.menuBtn, () => {
|
||||
this.close(true);
|
||||
});
|
||||
}
|
||||
|
||||
updateState() {
|
||||
@ -79,13 +93,16 @@ export class HUDPuzzleCompleteNotification extends BaseHUDPart {
|
||||
return this.visible;
|
||||
}
|
||||
|
||||
close() {
|
||||
close(toMenu) {
|
||||
/** @type {PuzzlePlayGameMode} */ (this.root.gameMode)
|
||||
.trackCompleted(this.userDidLikePuzzle, Math.round(this.timeOfCompletion))
|
||||
.then(() => {
|
||||
// this.root.gameState.moveToState("PuzzleMenuState");
|
||||
if (toMenu) {
|
||||
this.root.gameState.moveToState("PuzzleMenuState");
|
||||
} else {
|
||||
this.visible = false;
|
||||
this.cleanup();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,7 @@ import { BaseHUDPart } from "../base_hud_part";
|
||||
export class HUDPuzzleDLCLogo extends BaseHUDPart {
|
||||
createElements(parent) {
|
||||
this.element = makeDiv(parent, "ingame_HUD_PuzzleDLCLogo");
|
||||
this.element.classList.toggle("china", G_CHINA_VERSION || G_WEGAME_VERSION);
|
||||
parent.appendChild(this.element);
|
||||
}
|
||||
|
||||
|
@ -163,7 +163,9 @@ export class HUDPuzzleEditorReview extends BaseHUDPart {
|
||||
const serialized = new PuzzleSerializer().generateDumpFromGameRoot(this.root);
|
||||
|
||||
logger.log("Submitting puzzle, title=", title, "shortKey=", shortKey);
|
||||
if (G_IS_DEV) {
|
||||
logger.log("Serialized data:", serialized);
|
||||
}
|
||||
|
||||
const closeLoading = this.root.hud.parts.dialogs.showLoadingDialog(T.puzzleMenu.submittingPuzzle);
|
||||
|
||||
|
@ -7,9 +7,6 @@ import { types } from "../../savegame/serialization";
|
||||
import { enumGameModeTypes, GameMode } from "../game_mode";
|
||||
import { HUDPuzzleBackToMenu } from "../hud/parts/puzzle_back_to_menu";
|
||||
import { HUDPuzzleDLCLogo } from "../hud/parts/puzzle_dlc_logo";
|
||||
import { gMetaBuildingRegistry } from "../../core/global_registries";
|
||||
import { MetaBalancerBuilding } from "../buildings/balancer";
|
||||
import { MetaUndergroundBeltBuilding } from "../buildings/underground_belt";
|
||||
|
||||
export class PuzzleGameMode extends GameMode {
|
||||
static getType() {
|
||||
|
@ -29,6 +29,7 @@ import { HUDPuzzleCompleteNotification } from "../hud/parts/puzzle_complete_noti
|
||||
import { HUDPuzzlePlaySettings } from "../hud/parts/puzzle_play_settings";
|
||||
import { MetaBlockBuilding } from "../buildings/block";
|
||||
import { MetaBuilding } from "../meta_building";
|
||||
import { gMetaBuildingRegistry } from "../../core/global_registries";
|
||||
|
||||
const logger = createLogger("puzzle-play");
|
||||
const copy = require("clipboard-copy");
|
||||
@ -47,7 +48,7 @@ export class PuzzlePlayGameMode extends PuzzleGameMode {
|
||||
super(root);
|
||||
|
||||
/** @type {Array<typeof MetaBuilding>} */
|
||||
const excludedBuildings = [
|
||||
let excludedBuildings = [
|
||||
MetaConstantProducerBuilding,
|
||||
MetaGoalAcceptorBuilding,
|
||||
MetaBlockBuilding,
|
||||
@ -70,7 +71,22 @@ export class PuzzlePlayGameMode extends PuzzleGameMode {
|
||||
MetaTransistorBuilding,
|
||||
];
|
||||
|
||||
this.hiddenBuildings = excludedBuildings.concat(puzzle.game.excludedBuildings);
|
||||
if (puzzle.game.excludedBuildings) {
|
||||
/**
|
||||
* @type {any}
|
||||
*/
|
||||
const puzzleHidden = puzzle.game.excludedBuildings
|
||||
.map(id => {
|
||||
if (!gMetaBuildingRegistry.hasId(id)) {
|
||||
return;
|
||||
}
|
||||
return gMetaBuildingRegistry.findById(id).constructor;
|
||||
})
|
||||
.filter(x => !!x);
|
||||
excludedBuildings = excludedBuildings.concat(puzzleHidden);
|
||||
}
|
||||
|
||||
this.hiddenBuildings = excludedBuildings;
|
||||
|
||||
this.additionalHudParts.puzzlePlayMetadata = HUDPuzzlePlayMetadata;
|
||||
this.additionalHudParts.puzzlePlaySettings = HUDPuzzlePlaySettings;
|
||||
|
@ -66,6 +66,8 @@ const preparementShape = "CpRpCp--:SwSwSwSw";
|
||||
// Tiers need % of the previous tier as requirement too
|
||||
const tierGrowth = 2.5;
|
||||
|
||||
const chinaShapes = G_WEGAME_VERSION || G_CHINA_VERSION;
|
||||
|
||||
/**
|
||||
* Generates all upgrades
|
||||
* @returns {Object<string, UpgradeTiers>} */
|
||||
@ -144,7 +146,7 @@ function generateUpgrades(limitedVersion = false) {
|
||||
{
|
||||
required: [
|
||||
{
|
||||
shape: G_CHINA_VERSION
|
||||
shape: chinaShapes
|
||||
? "CyCyCyCy:CyCyCyCy:RyRyRyRy:RuRuRuRu"
|
||||
: "CbRbRbCb:CwCwCwCw:WbWbWbWb",
|
||||
amount: 50000,
|
||||
@ -205,7 +207,7 @@ function generateUpgrades(limitedVersion = false) {
|
||||
{
|
||||
required: [
|
||||
{
|
||||
shape: G_CHINA_VERSION ? "CuCuCuCu:CwCwCwCw:Sb--Sr--" : "RpRpRpRp:CwCwCwCw",
|
||||
shape: chinaShapes ? "CuCuCuCu:CwCwCwCw:Sb--Sr--" : "RpRpRpRp:CwCwCwCw",
|
||||
amount: 6500,
|
||||
},
|
||||
],
|
||||
@ -382,7 +384,7 @@ export function generateLevelDefinitions(limitedVersion = false) {
|
||||
// 13
|
||||
// Tunnel Tier 2
|
||||
{
|
||||
shape: G_CHINA_VERSION ? "CuCuCuCu:CwCwCwCw:Sb--Sr--" : "RpRpRpRp:CwCwCwCw", // painting t3
|
||||
shape: chinaShapes ? "CuCuCuCu:CwCwCwCw:Sb--Sr--" : "RpRpRpRp:CwCwCwCw", // painting t3
|
||||
required: 3800,
|
||||
reward: enumHubGoalRewards.reward_underground_belt_tier_2,
|
||||
},
|
||||
@ -391,7 +393,7 @@ export function generateLevelDefinitions(limitedVersion = false) {
|
||||
...(limitedVersion
|
||||
? [
|
||||
{
|
||||
shape: G_CHINA_VERSION ? "CuCuCuCu:CwCwCwCw:Sb--Sr--" : "RpRpRpRp:CwCwCwCw",
|
||||
shape: chinaShapes ? "CuCuCuCu:CwCwCwCw:Sb--Sr--" : "RpRpRpRp:CwCwCwCw",
|
||||
required: 0,
|
||||
reward: enumHubGoalRewards.reward_demo_end,
|
||||
},
|
||||
@ -425,7 +427,7 @@ export function generateLevelDefinitions(limitedVersion = false) {
|
||||
// 17
|
||||
// Double painter
|
||||
{
|
||||
shape: G_CHINA_VERSION
|
||||
shape: chinaShapes
|
||||
? "CyCyCyCy:CyCyCyCy:RyRyRyRy:RuRuRuRu"
|
||||
: "CbRbRbCb:CwCwCwCw:WbWbWbWb", // miner t4 (two variants)
|
||||
required: 20000,
|
||||
@ -467,7 +469,7 @@ export function generateLevelDefinitions(limitedVersion = false) {
|
||||
// 22
|
||||
// Constant signal
|
||||
{
|
||||
shape: G_CHINA_VERSION
|
||||
shape: chinaShapes
|
||||
? "RrSySrSy:RyCrCwCr:CyCyRyCy"
|
||||
: "Cg----Cr:Cw----Cw:Sy------:Cy----Cy",
|
||||
required: 25000,
|
||||
@ -477,7 +479,7 @@ export function generateLevelDefinitions(limitedVersion = false) {
|
||||
// 23
|
||||
// Display
|
||||
{
|
||||
shape: G_CHINA_VERSION
|
||||
shape: chinaShapes
|
||||
? "CrCrCrCr:CwCwCwCw:WwWwWwWw:CrCrCrCr"
|
||||
: "CcSyCcSy:SyCcSyCc:CcSyCcSy",
|
||||
required: 25000,
|
||||
@ -486,7 +488,7 @@ export function generateLevelDefinitions(limitedVersion = false) {
|
||||
|
||||
// 24 Logic gates
|
||||
{
|
||||
shape: G_CHINA_VERSION
|
||||
shape: chinaShapes
|
||||
? "Su----Su:RwRwRwRw:Cu----Cu:CwCwCwCw"
|
||||
: "CcRcCcRc:RwCwRwCw:Sr--Sw--:CyCyCyCy",
|
||||
required: 25000,
|
||||
@ -615,4 +617,9 @@ export class RegularGameMode extends GameMode {
|
||||
getIsFreeplayAvailable() {
|
||||
return this.root.app.restrictionMgr.getHasExtendedLevelsAndFreeplay();
|
||||
}
|
||||
|
||||
/** @returns {boolean} */
|
||||
hasAchievements() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ export class BeltReaderSystem extends GameSystemWithFilter {
|
||||
readerComp.lastItemTimes.shift();
|
||||
}
|
||||
|
||||
if (!entity.components.BeltReader.isWireless()) {
|
||||
if (pinsComp) {
|
||||
pinsComp.slots[1].value = readerComp.lastItem;
|
||||
pinsComp.slots[0].value =
|
||||
(readerComp.lastItemTimes[readerComp.lastItemTimes.length - 1] || 0) >
|
||||
|
@ -16,15 +16,11 @@ export class ConstantProducerSystem extends GameSystemWithFilter {
|
||||
update() {
|
||||
for (let i = 0; i < this.allEntities.length; ++i) {
|
||||
const entity = this.allEntities[i];
|
||||
const producerComp = entity.components.ItemProducer;
|
||||
const signalComp = entity.components.ConstantSignal;
|
||||
|
||||
if (!producerComp.isWireless() || !signalComp.isWireless()) {
|
||||
const ejectorComp = entity.components.ItemEjector;
|
||||
if (!ejectorComp) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const ejectorComp = entity.components.ItemEjector;
|
||||
|
||||
ejectorComp.tryEject(0, signalComp.signal);
|
||||
}
|
||||
}
|
||||
@ -41,7 +37,7 @@ export class ConstantProducerSystem extends GameSystemWithFilter {
|
||||
const producerComp = contents[i].components.ItemProducer;
|
||||
const signalComp = contents[i].components.ConstantSignal;
|
||||
|
||||
if (!producerComp || !producerComp.isWireless() || !signalComp || !signalComp.isWireless()) {
|
||||
if (!producerComp || !signalComp) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,7 @@ import { fillInLinkIntoTranslation } from "../../core/utils";
|
||||
import { T } from "../../translations";
|
||||
import { BaseItem } from "../base_item";
|
||||
import { enumColors } from "../colors";
|
||||
import { ConstantSignalComponent, enumConstantSignalType } from "../components/constant_signal";
|
||||
import { ConstantSignalComponent } from "../components/constant_signal";
|
||||
import { Entity } from "../entity";
|
||||
import { GameSystemWithFilter } from "../game_system_with_filter";
|
||||
import { BOOL_FALSE_SINGLETON, BOOL_TRUE_SINGLETON } from "../items/boolean_item";
|
||||
@ -27,15 +27,13 @@ export class ConstantSignalSystem extends GameSystemWithFilter {
|
||||
for (let i = 0; i < this.allEntities.length; ++i) {
|
||||
const entity = this.allEntities[i];
|
||||
const signalComp = entity.components.ConstantSignal;
|
||||
|
||||
if (signalComp.isWireless()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const pinsComp = entity.components.WiredPins;
|
||||
|
||||
if (pinsComp) {
|
||||
pinsComp.slots[0].value = signalComp.signal;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Asks the entity to enter a valid signal code
|
||||
@ -56,19 +54,20 @@ export class ConstantSignalSystem extends GameSystemWithFilter {
|
||||
label: fillInLinkIntoTranslation(T.dialogs.editSignal.descShortKey, THIRDPARTY_URLS.shapeViewer),
|
||||
placeholder: "",
|
||||
defaultValue: "",
|
||||
validator: val => this.parseSignalCode(entity.components.ConstantSignal.type, val),
|
||||
validator: val => this.parseSignalCode(entity, val),
|
||||
});
|
||||
|
||||
const items = [...Object.values(COLOR_ITEM_SINGLETONS)];
|
||||
|
||||
if (entity.components.ConstantSignal.type === enumConstantSignalType.wired) {
|
||||
if (entity.components.WiredPins) {
|
||||
items.unshift(BOOL_FALSE_SINGLETON, BOOL_TRUE_SINGLETON);
|
||||
items.push(
|
||||
this.root.shapeDefinitionMgr.getShapeItemFromShortKey(
|
||||
this.root.gameMode.getBlueprintShapeKey()
|
||||
)
|
||||
);
|
||||
} else if (entity.components.ConstantSignal.type === enumConstantSignalType.wireless) {
|
||||
} else {
|
||||
// producer which can produce virtually anything
|
||||
const shapes = ["CuCuCuCu", "RuRuRuRu", "WuWuWuWu", "SuSuSuSu"];
|
||||
items.unshift(
|
||||
...shapes.reverse().map(key => this.root.shapeDefinitionMgr.getShapeItemFromShortKey(key))
|
||||
@ -129,10 +128,7 @@ export class ConstantSignalSystem extends GameSystemWithFilter {
|
||||
if (itemInput.chosenItem) {
|
||||
constantComp.signal = itemInput.chosenItem;
|
||||
} else {
|
||||
constantComp.signal = this.parseSignalCode(
|
||||
entity.components.ConstantSignal.type,
|
||||
signalValueInput.getValue()
|
||||
);
|
||||
constantComp.signal = this.parseSignalCode(entity, signalValueInput.getValue());
|
||||
}
|
||||
};
|
||||
|
||||
@ -171,11 +167,11 @@ export class ConstantSignalSystem extends GameSystemWithFilter {
|
||||
|
||||
/**
|
||||
* Tries to parse a signal code
|
||||
* @param {string} type
|
||||
* @param {Entity} entity
|
||||
* @param {string} code
|
||||
* @returns {BaseItem}
|
||||
*/
|
||||
parseSignalCode(type, code) {
|
||||
parseSignalCode(entity, code) {
|
||||
if (!this.root || !this.root.shapeDefinitionMgr) {
|
||||
// Stale reference
|
||||
return null;
|
||||
@ -188,7 +184,7 @@ export class ConstantSignalSystem extends GameSystemWithFilter {
|
||||
return COLOR_ITEM_SINGLETONS[codeLower];
|
||||
}
|
||||
|
||||
if (type === enumConstantSignalType.wired) {
|
||||
if (entity.components.WiredPins) {
|
||||
if (code === "1" || codeLower === "true") {
|
||||
return BOOL_TRUE_SINGLETON;
|
||||
}
|
||||
|
@ -15,14 +15,12 @@ export class ItemProducerSystem extends GameSystemWithFilter {
|
||||
update() {
|
||||
for (let i = 0; i < this.allEntities.length; ++i) {
|
||||
const entity = this.allEntities[i];
|
||||
const producerComp = entity.components.ItemProducer;
|
||||
const ejectorComp = entity.components.ItemEjector;
|
||||
|
||||
if (producerComp.isWireless()) {
|
||||
const pinsComp = entity.components.WiredPins;
|
||||
if (!pinsComp) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const pinsComp = entity.components.WiredPins;
|
||||
const pin = pinsComp.slots[0];
|
||||
const network = pin.linkedNetwork;
|
||||
|
||||
|
1
src/js/globals.d.ts
vendored
1
src/js/globals.d.ts
vendored
@ -20,6 +20,7 @@ declare const G_ALL_UI_IMAGES: Array<string>;
|
||||
declare const G_IS_RELEASE: boolean;
|
||||
|
||||
declare const G_CHINA_VERSION: boolean;
|
||||
declare const G_WEGAME_VERSION: boolean;
|
||||
|
||||
// Polyfills
|
||||
declare interface String {
|
||||
|
@ -3,10 +3,10 @@ import { Application } from "../application";
|
||||
/* typehints:end */
|
||||
import { createLogger } from "../core/logging";
|
||||
import { compressX64 } from "../core/lzstring";
|
||||
import { getIPCRenderer } from "../core/utils";
|
||||
import { T } from "../translations";
|
||||
|
||||
const logger = createLogger("puzzle-api");
|
||||
const rusha = require("rusha");
|
||||
|
||||
export class ClientAPI {
|
||||
/**
|
||||
@ -21,15 +21,6 @@ export class ClientAPI {
|
||||
* @type {string|null}
|
||||
*/
|
||||
this.token = null;
|
||||
|
||||
this.syncToken = window.localStorage.getItem("tmp.syncToken");
|
||||
if (!this.syncToken) {
|
||||
this.syncToken = rusha
|
||||
.createHash()
|
||||
.update(new Date().getTime() + "=" + Math.random())
|
||||
.digest("hex");
|
||||
window.localStorage.setItem("tmp.syncToken", this.syncToken);
|
||||
}
|
||||
}
|
||||
|
||||
getEndpoint() {
|
||||
@ -109,12 +100,30 @@ export class ClientAPI {
|
||||
* @returns {Promise<{token: string}>}
|
||||
*/
|
||||
apiTryLogin() {
|
||||
if (!G_IS_STANDALONE) {
|
||||
const token = window.prompt(
|
||||
"Please enter the auth token for the puzzle DLC (If you have none, you can't login):"
|
||||
);
|
||||
return Promise.resolve({ token });
|
||||
}
|
||||
|
||||
const renderer = getIPCRenderer();
|
||||
|
||||
return renderer.invoke("steam:get-ticket").then(
|
||||
ticket => {
|
||||
logger.log("Got auth ticket:", ticket);
|
||||
return this._request("/v1/public/login", {
|
||||
method: "POST",
|
||||
body: {
|
||||
token: this.syncToken,
|
||||
token: ticket,
|
||||
},
|
||||
});
|
||||
},
|
||||
err => {
|
||||
logger.error("Failed to get auth ticket from steam: ", err);
|
||||
throw err;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -53,6 +53,10 @@ export class ShapezGameAnalytics extends GameAnalyticsInterface {
|
||||
initialize() {
|
||||
this.syncKey = null;
|
||||
|
||||
if (G_WEGAME_VERSION) {
|
||||
return;
|
||||
}
|
||||
|
||||
setInterval(() => this.sendTimePoints(), 60 * 1000);
|
||||
|
||||
// Retrieve sync key from player
|
||||
@ -136,6 +140,10 @@ export class ShapezGameAnalytics extends GameAnalyticsInterface {
|
||||
* @param {string} value
|
||||
*/
|
||||
sendGameEvent(category, value) {
|
||||
if (G_WEGAME_VERSION) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.syncKey) {
|
||||
logger.warn("Can not send event due to missing sync key");
|
||||
return;
|
||||
|
@ -105,6 +105,10 @@ export class SteamAchievementProvider extends AchievementProviderInterface {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
if (G_WEGAME_VERSION) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
this.ipc = getIPCRenderer();
|
||||
|
||||
return this.ipc.invoke("steam:is-initialized").then(initialized => {
|
||||
@ -125,6 +129,10 @@ export class SteamAchievementProvider extends AchievementProviderInterface {
|
||||
activate(key) {
|
||||
let promise;
|
||||
|
||||
if (G_WEGAME_VERSION) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
if (!this.initialized) {
|
||||
promise = Promise.resolve();
|
||||
} else {
|
||||
|
@ -7,6 +7,24 @@ const logger = createLogger("electron-storage");
|
||||
export class StorageImplElectron extends StorageInterface {
|
||||
constructor(app) {
|
||||
super(app);
|
||||
|
||||
/** @type {Object.<number, {resolve:Function, reject: Function}>} */
|
||||
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() {
|
||||
@ -15,52 +33,42 @@ export class StorageImplElectron extends StorageInterface {
|
||||
|
||||
writeFileAsync(filename, contents) {
|
||||
return new Promise((resolve, reject) => {
|
||||
getIPCRenderer()
|
||||
.invoke("fs-job", {
|
||||
// ipcMain
|
||||
const jobId = ++this.jobId;
|
||||
this.jobs[jobId] = { resolve, reject };
|
||||
|
||||
getIPCRenderer().send("fs-job", {
|
||||
type: "write",
|
||||
filename,
|
||||
contents,
|
||||
})
|
||||
.then(result => {
|
||||
if (result.success) {
|
||||
resolve(result.data);
|
||||
} else {
|
||||
reject(result.error);
|
||||
}
|
||||
id: jobId,
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
readFileAsync(filename) {
|
||||
return new Promise((resolve, reject) => {
|
||||
getIPCRenderer()
|
||||
.invoke("fs-job", {
|
||||
// ipcMain
|
||||
const jobId = ++this.jobId;
|
||||
this.jobs[jobId] = { resolve, reject };
|
||||
|
||||
getIPCRenderer().send("fs-job", {
|
||||
type: "read",
|
||||
filename,
|
||||
})
|
||||
.then(result => {
|
||||
if (result.success) {
|
||||
resolve(result.data);
|
||||
} else {
|
||||
reject(result.error);
|
||||
}
|
||||
id: jobId,
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
deleteFileAsync(filename) {
|
||||
return new Promise((resolve, reject) => {
|
||||
getIPCRenderer()
|
||||
.invoke("fs-job", {
|
||||
// ipcMain
|
||||
const jobId = ++this.jobId;
|
||||
this.jobs[jobId] = { resolve, reject };
|
||||
getIPCRenderer().send("fs-job", {
|
||||
type: "delete",
|
||||
filename,
|
||||
})
|
||||
.then(result => {
|
||||
if (result.success) {
|
||||
resolve(result.data);
|
||||
} else {
|
||||
reject(result.error);
|
||||
}
|
||||
id: jobId,
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -10,6 +10,10 @@ const logger = createLogger("electron-wrapper");
|
||||
|
||||
export class PlatformWrapperImplElectron extends PlatformWrapperImplBrowser {
|
||||
initialize() {
|
||||
this.dlcs = {
|
||||
puzzle: false,
|
||||
};
|
||||
|
||||
this.steamOverlayCanvasFix = document.createElement("canvas");
|
||||
this.steamOverlayCanvasFix.width = 1;
|
||||
this.steamOverlayCanvasFix.height = 1;
|
||||
@ -23,9 +27,9 @@ export class PlatformWrapperImplElectron extends PlatformWrapperImplBrowser {
|
||||
this.app.storage = new StorageImplElectron(this);
|
||||
this.app.achievementProvider = new SteamAchievementProvider(this.app);
|
||||
|
||||
return this.initializeAchievementProvider().then(() =>
|
||||
PlatformWrapperInterface.prototype.initialize.call(this)
|
||||
);
|
||||
return this.initializeAchievementProvider()
|
||||
.then(() => this.initializeDlcStatus())
|
||||
.then(() => PlatformWrapperInterface.prototype.initialize.call(this));
|
||||
}
|
||||
|
||||
steamOverlayFixRedrawCanvas() {
|
||||
@ -66,6 +70,26 @@ export class PlatformWrapperImplElectron extends PlatformWrapperImplBrowser {
|
||||
});
|
||||
}
|
||||
|
||||
initializeDlcStatus() {
|
||||
const renderer = getIPCRenderer();
|
||||
|
||||
if (G_WEGAME_VERSION) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
logger.log("Checking DLC ownership ...");
|
||||
// @todo: Don't hardcode the app id
|
||||
return renderer.invoke("steam:check-app-ownership", 1625400).then(
|
||||
res => {
|
||||
logger.log("Got DLC ownership:", res);
|
||||
this.dlcs.puzzle = Boolean(res);
|
||||
},
|
||||
err => {
|
||||
logger.error("Failed to get DLC ownership:", err);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
getSupportsFullscreen() {
|
||||
return true;
|
||||
}
|
||||
|
@ -35,6 +35,10 @@ export const MUSIC = {
|
||||
menu: "menu",
|
||||
};
|
||||
|
||||
if (G_IS_STANDALONE || G_IS_DEV) {
|
||||
MUSIC.puzzle = "puzzle-full";
|
||||
}
|
||||
|
||||
export class SoundInstanceInterface {
|
||||
constructor(key, url) {
|
||||
this.key = key;
|
||||
|
@ -2,7 +2,6 @@
|
||||
import { GameRoot } from "../game/root";
|
||||
import { PuzzleGameMode } from "../game/modes/puzzle";
|
||||
/* typehints:end */
|
||||
import { enumConstantSignalType } from "../game/components/constant_signal";
|
||||
import { StaticMapEntityComponent } from "../game/components/static_map_entity";
|
||||
import { ShapeItem } from "../game/items/shape_item";
|
||||
import { Vector } from "../core/vector";
|
||||
@ -38,7 +37,6 @@ export class PuzzleSerializer {
|
||||
const signalComp = entity.components.ConstantSignal;
|
||||
|
||||
if (signalComp) {
|
||||
assert(signalComp.type === enumConstantSignalType.wireless, "not a wireless signal");
|
||||
assert(["shape", "color"].includes(signalComp.signal.getItemType()), "not a shape signal");
|
||||
buildings.push({
|
||||
type: "emitter",
|
||||
@ -85,12 +83,13 @@ export class PuzzleSerializer {
|
||||
const handles = root.hud.parts.buildingsToolbar.buildingHandles;
|
||||
const ids = gMetaBuildingRegistry.getAllIds();
|
||||
|
||||
/** @type {Array<typeof MetaBuilding>} */
|
||||
/** @type {Array<string>} */
|
||||
let excludedBuildings = [];
|
||||
for (let i = 0; i < ids.length; ++i) {
|
||||
const handle = handles[ids[i]];
|
||||
if (handle && handle.puzzleLocked) {
|
||||
excludedBuildings.push(handle.class);
|
||||
// @ts-ignore
|
||||
excludedBuildings.push(handle.metaBuilding.getId());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -87,7 +87,7 @@ import { MetaBuilding } from "../game/meta_building";
|
||||
* version: number;
|
||||
* bounds: { w: number; h: number; },
|
||||
* buildings: (PuzzleGameBuildingGoal | PuzzleGameBuildingConstantProducer | PuzzleGameBuildingBlock)[],
|
||||
* excludedBuildings: Array<typeof MetaBuilding>,
|
||||
* excludedBuildings: Array<string>,
|
||||
* }} PuzzleGameData
|
||||
*/
|
||||
|
||||
|
@ -275,7 +275,7 @@ export function deserializeSchema(obj, schema, data, baseclassErrorResult = null
|
||||
return baseclassErrorResult;
|
||||
}
|
||||
|
||||
if (!data) {
|
||||
if (data === null || typeof data === "undefined") {
|
||||
logger.error("Got 'NULL' data for", obj, "and schema", schema, "!");
|
||||
return "Got null data";
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ import { TextualGameState } from "../core/textual_game_state";
|
||||
import { T } from "../translations";
|
||||
import { THIRDPARTY_URLS } from "../core/config";
|
||||
import { cachebust } from "../core/cachebust";
|
||||
import { getLogoSprite } from "../core/background_resources_loader";
|
||||
|
||||
export class AboutState extends TextualGameState {
|
||||
constructor() {
|
||||
@ -15,9 +16,7 @@ export class AboutState extends TextualGameState {
|
||||
getMainContentHTML() {
|
||||
return `
|
||||
<div class="head">
|
||||
<img src="${cachebust(
|
||||
G_CHINA_VERSION ? "res/logo_cn.png" : "res/logo.png"
|
||||
)}" alt="shapez.io Logo">
|
||||
<img src="${cachebust("res/" + getLogoSprite())}" alt="shapez.io Logo">
|
||||
</div>
|
||||
<div class="text">
|
||||
${T.about.body
|
||||
|
@ -104,6 +104,9 @@ export class InGameState extends GameState {
|
||||
}
|
||||
|
||||
getThemeMusic() {
|
||||
if (this.creationPayload.gameModeId && this.creationPayload.gameModeId.includes("puzzle")) {
|
||||
return MUSIC.puzzle;
|
||||
}
|
||||
return MUSIC.theme;
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,4 @@
|
||||
import { getLogoSprite } from "../core/background_resources_loader";
|
||||
import { cachebust } from "../core/cachebust";
|
||||
import { A_B_TESTING_LINK_TYPE, globalConfig, THIRDPARTY_URLS } from "../core/config";
|
||||
import { GameState } from "../core/game_state";
|
||||
@ -15,8 +16,8 @@ import {
|
||||
startFileChoose,
|
||||
waitNextFrame,
|
||||
} from "../core/utils";
|
||||
import { enumGameModeIds } from "../game/game_mode";
|
||||
import { HUDModalDialogs } from "../game/hud/parts/modal_dialogs";
|
||||
import { PlatformWrapperImplElectron } from "../platform/electron/wrapper";
|
||||
import { getApplicationSettingById } from "../profile/application_settings";
|
||||
import { T } from "../translations";
|
||||
|
||||
@ -41,10 +42,15 @@ export class MainMenuState extends GameState {
|
||||
|
||||
const showDemoBadges = this.app.restrictionMgr.getIsStandaloneMarketingActive();
|
||||
|
||||
const puzzleDlc =
|
||||
G_IS_STANDALONE &&
|
||||
/** @type { PlatformWrapperImplElectron
|
||||
}*/ (this.app.platformWrapper).dlcs.puzzle;
|
||||
|
||||
return `
|
||||
<div class="topButtons">
|
||||
${
|
||||
G_CHINA_VERSION
|
||||
G_CHINA_VERSION || G_WEGAME_VERSION
|
||||
? ""
|
||||
: `<button class="languageChoose" data-languageicon="${this.app.settings.getLanguage()}"></button>`
|
||||
}
|
||||
@ -64,31 +70,67 @@ export class MainMenuState extends GameState {
|
||||
</video>
|
||||
|
||||
<div class="logo">
|
||||
<img src="${cachebust(
|
||||
G_CHINA_VERSION ? "res/logo_cn.png" : "res/logo.png"
|
||||
)}" alt="shapez.io Logo">
|
||||
<span class="updateLabel">v${G_BUILD_VERSION} - Puzzle DLC!</span>
|
||||
<img src="${cachebust("res/" + getLogoSprite())}" alt="shapez.io Logo">
|
||||
${
|
||||
G_WEGAME_VERSION
|
||||
? ""
|
||||
: `<span class="updateLabel">v${G_BUILD_VERSION} - Puzzle DLC!</span>`
|
||||
}
|
||||
</div>
|
||||
|
||||
<div class="mainWrapper ${showDemoBadges ? "demo" : "noDemo"}">
|
||||
<div class="mainWrapper ${showDemoBadges ? "demo" : "noDemo"}" data-columns="${
|
||||
G_IS_STANDALONE ? 2 : showDemoBadges ? 2 : 1
|
||||
}">
|
||||
<div class="sideContainer">
|
||||
${showDemoBadges ? `<div class="standaloneBanner">${bannerHtml}</div>` : ""}
|
||||
</div>
|
||||
|
||||
<div class="mainContainer">
|
||||
${
|
||||
isSupportedBrowser()
|
||||
G_IS_STANDALONE || isSupportedBrowser()
|
||||
? ""
|
||||
: `<div class="browserWarning">${T.mainMenu.browserWarning}</div>`
|
||||
}
|
||||
<div class="buttons"></div>
|
||||
</div>
|
||||
<div class="bottomContainer">
|
||||
<div class="buttons"></div>
|
||||
</div>
|
||||
|
||||
${
|
||||
!G_WEGAME_VERSION && G_IS_STANDALONE && puzzleDlc
|
||||
? `
|
||||
<div class="puzzleContainer">
|
||||
<img class="dlcLogo" src="${cachebust(
|
||||
G_CHINA_VERSION || G_WEGAME_VERSION
|
||||
? "res/puzzle_dlc_logo_china.png"
|
||||
: "res/puzzle_dlc_logo.png"
|
||||
)}" alt="shapez.io Logo">
|
||||
<button class="styledButton puzzleDlcPlayButton">${T.mainMenu.play}</button>
|
||||
</div>`
|
||||
: ""
|
||||
}
|
||||
|
||||
${
|
||||
!G_WEGAME_VERSION && G_IS_STANDALONE && !puzzleDlc
|
||||
? `
|
||||
<div class="puzzleContainer notOwned">
|
||||
<img class="dlcLogo" src="${cachebust(
|
||||
G_CHINA_VERSION || G_WEGAME_VERSION
|
||||
? "res/puzzle_dlc_logo_china.png"
|
||||
: "res/puzzle_dlc_logo.png"
|
||||
)}" alt="shapez.io Logo">
|
||||
<p>${T.mainMenu.puzzleDlcText}</p>
|
||||
<button class="styledButton puzzleDlcGetButton">${
|
||||
T.mainMenu.puzzleDlcWishlist
|
||||
}</button>
|
||||
</div>`
|
||||
: ""
|
||||
}
|
||||
</div>
|
||||
|
||||
<div class="footer ${G_CHINA_VERSION ? "china" : ""}">
|
||||
${
|
||||
G_WEGAME_VERSION
|
||||
? "<div class='footer wegame'></div>"
|
||||
: `
|
||||
<div class="footer ${G_CHINA_VERSION ? "china" : ""} ">
|
||||
|
||||
${
|
||||
G_CHINA_VERSION
|
||||
@ -119,6 +161,8 @@ export class MainMenuState extends GameState {
|
||||
'<a class="producerLink" target="_blank">Tobias Springer</a>'
|
||||
)}</div>
|
||||
</div>
|
||||
`
|
||||
}
|
||||
`;
|
||||
}
|
||||
|
||||
@ -232,7 +276,7 @@ export class MainMenuState extends GameState {
|
||||
|
||||
this.trackClicks(qs(".settingsButton"), this.onSettingsButtonClicked);
|
||||
|
||||
if (!G_CHINA_VERSION) {
|
||||
if (!G_CHINA_VERSION && !G_WEGAME_VERSION) {
|
||||
this.trackClicks(qs(".languageChoose"), this.onLanguageChooseClicked);
|
||||
this.trackClicks(qs(".redditLink"), this.onRedditClicked);
|
||||
this.trackClicks(qs(".changelog"), this.onChangelogClicked);
|
||||
@ -252,6 +296,7 @@ export class MainMenuState extends GameState {
|
||||
}
|
||||
|
||||
const discordLink = this.htmlElement.querySelector(".discordLink");
|
||||
if (discordLink) {
|
||||
this.trackClicks(
|
||||
discordLink,
|
||||
() => {
|
||||
@ -260,6 +305,7 @@ export class MainMenuState extends GameState {
|
||||
},
|
||||
{ preventClick: true }
|
||||
);
|
||||
}
|
||||
|
||||
const githubLink = this.htmlElement.querySelector(".githubLink");
|
||||
if (githubLink) {
|
||||
@ -274,9 +320,25 @@ export class MainMenuState extends GameState {
|
||||
}
|
||||
|
||||
const producerLink = this.htmlElement.querySelector(".producerLink");
|
||||
this.trackClicks(producerLink, () => this.app.platformWrapper.openExternalLink("https://tobspr.io"), {
|
||||
if (producerLink) {
|
||||
this.trackClicks(
|
||||
producerLink,
|
||||
() => this.app.platformWrapper.openExternalLink("https://tobspr.io"),
|
||||
{
|
||||
preventClick: true,
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
const puzzleModeButton = qs(".puzzleDlcPlayButton");
|
||||
if (puzzleModeButton) {
|
||||
this.trackClicks(puzzleModeButton, () => this.onPuzzleModeButtonClicked());
|
||||
}
|
||||
|
||||
const puzzleWishlistButton = qs(".puzzleDlcGetButton");
|
||||
if (puzzleWishlistButton) {
|
||||
this.trackClicks(puzzleWishlistButton, () => this.onPuzzleWishlistButtonClicked());
|
||||
}
|
||||
}
|
||||
|
||||
renderMainMenu() {
|
||||
@ -313,14 +375,6 @@ export class MainMenuState extends GameState {
|
||||
this.trackClicks(playBtn, this.onPlayButtonClicked);
|
||||
buttonContainer.appendChild(importButtonElement);
|
||||
}
|
||||
|
||||
const bottomButtonContainer = this.htmlElement.querySelector(".bottomContainer .buttons");
|
||||
removeAllChildren(bottomButtonContainer);
|
||||
|
||||
const puzzleModeButton = makeButton(bottomButtonContainer, ["styledButton"], T.mainMenu.puzzleMode);
|
||||
|
||||
bottomButtonContainer.appendChild(puzzleModeButton);
|
||||
this.trackClicks(puzzleModeButton, () => this.onPuzzleModeButtonClicked());
|
||||
}
|
||||
|
||||
onPuzzleModeButtonClicked(force = false) {
|
||||
@ -341,6 +395,12 @@ export class MainMenuState extends GameState {
|
||||
});
|
||||
}
|
||||
|
||||
onPuzzleWishlistButtonClicked() {
|
||||
this.app.platformWrapper.openExternalLink(
|
||||
THIRDPARTY_URLS.puzzleDlcStorePage + "?ref=mmsl2&prc=" + A_B_TESTING_LINK_TYPE
|
||||
);
|
||||
}
|
||||
|
||||
onBackButtonClicked() {
|
||||
this.renderMainMenu();
|
||||
this.renderSavegames();
|
||||
|
@ -1,6 +1,7 @@
|
||||
import { GameState } from "../core/game_state";
|
||||
import { cachebust } from "../core/cachebust";
|
||||
import { THIRDPARTY_URLS } from "../core/config";
|
||||
import { getLogoSprite } from "../core/background_resources_loader";
|
||||
|
||||
export class MobileWarningState extends GameState {
|
||||
constructor() {
|
||||
@ -10,9 +11,7 @@ export class MobileWarningState extends GameState {
|
||||
getInnerHTML() {
|
||||
return `
|
||||
|
||||
<img class="logo" src="${cachebust(
|
||||
G_CHINA_VERSION ? "res/logo_cn.png" : "res/logo.png"
|
||||
)}" alt="shapez.io Logo">
|
||||
<img class="logo" src="${cachebust("res/" + getLogoSprite())}" alt="shapez.io Logo">
|
||||
|
||||
<p>
|
||||
I'm sorry, but shapez.io is not available on mobile devices yet!
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { CHANGELOG } from "../changelog";
|
||||
import { getLogoSprite } from "../core/background_resources_loader";
|
||||
import { cachebust } from "../core/cachebust";
|
||||
import { globalConfig } from "../core/config";
|
||||
import { GameState } from "../core/game_state";
|
||||
@ -19,7 +20,7 @@ export class PreloadState extends GameState {
|
||||
return `
|
||||
<div class="loadingImage"></div>
|
||||
<div class="loadingStatus">
|
||||
<span class="desc">${G_CHINA_VERSION ? "加载中" : "Booting"}</span>
|
||||
<span class="desc">${G_CHINA_VERSION || G_WEGAME_VERSION ? "加载中" : "Booting"}</span>
|
||||
</div>
|
||||
</div>
|
||||
<span class="prefab_GameHint"></span>
|
||||
@ -112,7 +113,7 @@ export class PreloadState extends GameState {
|
||||
|
||||
.then(() => this.setStatus("Initializing language"))
|
||||
.then(() => {
|
||||
if (G_CHINA_VERSION) {
|
||||
if (G_CHINA_VERSION || G_WEGAME_VERSION) {
|
||||
return this.app.settings.updateLanguage("zh-CN");
|
||||
}
|
||||
|
||||
@ -164,7 +165,7 @@ export class PreloadState extends GameState {
|
||||
return;
|
||||
}
|
||||
|
||||
if (G_CHINA_VERSION) {
|
||||
if (G_CHINA_VERSION || G_WEGAME_VERSION) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -227,7 +228,7 @@ export class PreloadState extends GameState {
|
||||
}
|
||||
|
||||
update() {
|
||||
if (G_CHINA_VERSION) {
|
||||
if (G_CHINA_VERSION || G_WEGAME_VERSION) {
|
||||
return;
|
||||
}
|
||||
const now = performance.now();
|
||||
@ -260,7 +261,7 @@ export class PreloadState extends GameState {
|
||||
*/
|
||||
setStatus(text) {
|
||||
logger.log("✅ " + text);
|
||||
if (G_CHINA_VERSION) {
|
||||
if (G_CHINA_VERSION || G_WEGAME_VERSION) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
this.currentStatus = text;
|
||||
@ -278,9 +279,7 @@ export class PreloadState extends GameState {
|
||||
|
||||
subElement.innerHTML = `
|
||||
<div class="logo">
|
||||
<img src="${cachebust(
|
||||
G_CHINA_VERSION ? "res/logo_cn.png" : "res/logo.png"
|
||||
)}" alt="Shapez.io Logo">
|
||||
<img src="${cachebust("res/" + getLogoSprite())}" alt="Shapez.io Logo">
|
||||
</div>
|
||||
<div class="failureInner">
|
||||
<div class="errorHeader">
|
||||
|
@ -6,6 +6,7 @@ import { TextualGameState } from "../core/textual_game_state";
|
||||
import { formatBigNumberFull } from "../core/utils";
|
||||
import { enumGameModeIds } from "../game/game_mode";
|
||||
import { ShapeDefinition } from "../game/shape_definition";
|
||||
import { MUSIC } from "../platform/sound";
|
||||
import { Savegame } from "../savegame/savegame";
|
||||
import { T } from "../translations";
|
||||
|
||||
@ -59,6 +60,10 @@ export class PuzzleMenuState extends TextualGameState {
|
||||
this.activeCategory = "";
|
||||
}
|
||||
|
||||
getThemeMusic() {
|
||||
return MUSIC.puzzle;
|
||||
}
|
||||
|
||||
getStateHeaderTitle() {
|
||||
return T.puzzleMenu.title;
|
||||
}
|
||||
@ -186,7 +191,10 @@ export class PuzzleMenuState extends TextualGameState {
|
||||
const difficulty = document.createElement("div");
|
||||
difficulty.classList.add("difficulty");
|
||||
|
||||
const completionPercentage = Math.round((puzzle.completions / puzzle.downloads) * 100.0);
|
||||
const completionPercentage = Math.max(
|
||||
0,
|
||||
Math.min(100, Math.round((puzzle.completions / puzzle.downloads) * 100.0))
|
||||
);
|
||||
difficulty.innerText = completionPercentage + "%";
|
||||
stats.appendChild(difficulty);
|
||||
|
||||
@ -201,10 +209,13 @@ export class PuzzleMenuState extends TextualGameState {
|
||||
}
|
||||
}
|
||||
|
||||
if (this.activeCategory === "mine") {
|
||||
const downloads = document.createElement("div");
|
||||
downloads.classList.add("downloads");
|
||||
downloads.innerText = String(puzzle.downloads);
|
||||
stats.appendChild(downloads);
|
||||
stats.classList.add("withDownloads");
|
||||
}
|
||||
|
||||
const likes = document.createElement("div");
|
||||
likes.classList.add("likes");
|
||||
@ -235,7 +246,7 @@ export class PuzzleMenuState extends TextualGameState {
|
||||
/**
|
||||
*
|
||||
* @param {*} category
|
||||
* @returns {Promise<import("../savegame/savegame_typedefs").PuzzleMetadata[]}
|
||||
* @returns {Promise<import("../savegame/savegame_typedefs").PuzzleMetadata[]>}
|
||||
*/
|
||||
getPuzzlesForCategory(category) {
|
||||
if (category === "levels") {
|
||||
|
@ -30,7 +30,7 @@ export class SettingsState extends TextualGameState {
|
||||
<div class="other">
|
||||
|
||||
${
|
||||
G_CHINA_VERSION
|
||||
G_CHINA_VERSION || G_WEGAME_VERSION
|
||||
? ""
|
||||
: `
|
||||
<button class="styledButton about">${T.about.title}</button>
|
||||
@ -74,7 +74,7 @@ export class SettingsState extends TextualGameState {
|
||||
for (let i = 0; i < allApplicationSettings.length; ++i) {
|
||||
const setting = allApplicationSettings[i];
|
||||
|
||||
if (G_CHINA_VERSION && setting.id === "language") {
|
||||
if ((G_CHINA_VERSION || G_WEGAME_VERSION) && setting.id === "language") {
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -105,7 +105,7 @@ export class SettingsState extends TextualGameState {
|
||||
onEnter(payload) {
|
||||
this.renderBuildText();
|
||||
|
||||
if (!G_CHINA_VERSION) {
|
||||
if (!G_CHINA_VERSION && !G_WEGAME_VERSION) {
|
||||
this.trackClicks(this.htmlElement.querySelector(".about"), this.onAboutClicked, {
|
||||
preventDefault: false,
|
||||
});
|
||||
@ -144,7 +144,7 @@ export class SettingsState extends TextualGameState {
|
||||
|
||||
initSettings() {
|
||||
allApplicationSettings.forEach(setting => {
|
||||
if (G_CHINA_VERSION && setting.id === "language") {
|
||||
if ((G_CHINA_VERSION || G_WEGAME_VERSION) && setting.id === "language") {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -50,6 +50,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: SPACE
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Demo Version
|
||||
intro: Get the standalone to unlock all features!
|
||||
@ -69,6 +70,11 @@ mainMenu:
|
||||
savegameLevel: Level <x>
|
||||
savegameLevelUnknown: Unknown Level
|
||||
savegameUnnamed: Unnamed
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -82,6 +88,9 @@ dialogs:
|
||||
viewUpdate: View Update
|
||||
showUpgrades: Show Upgrades
|
||||
showKeybindings: Show Keybindings
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: Import Error
|
||||
text: "Failed to import your savegame:"
|
||||
@ -179,6 +188,67 @@ dialogs:
|
||||
title: Tutorial Available
|
||||
desc: There is a tutorial video available for this level, but it is only
|
||||
available in English. Would you like to watch it?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Move
|
||||
@ -200,6 +270,7 @@ ingame:
|
||||
clearSelection: Clear selection
|
||||
pipette: Pipette
|
||||
switchLayers: Switch layers
|
||||
clearBelts: Clear belts
|
||||
colors:
|
||||
red: Red
|
||||
green: Green
|
||||
@ -347,6 +418,44 @@ ingame:
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Belts, Distributor & Tunnels
|
||||
@ -553,6 +662,18 @@ buildings:
|
||||
name: Item Producer
|
||||
description: Available in sandbox mode only, outputs the given signal from the
|
||||
wires layer on the regular layer.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Cutting Shapes
|
||||
@ -954,6 +1075,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: About this Game
|
||||
body: >-
|
||||
@ -1039,3 +1164,57 @@ tips:
|
||||
- Press F4 to show your FPS and Tick Rate.
|
||||
- Press F4 twice to show the tile of your mouse and camera.
|
||||
- You can click a pinned shape on the left side to unpin it.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
@ -53,6 +53,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: ESPAI
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Demo - Versió de prova
|
||||
intro: Aconsegueix el joc complet per obtenir totes les característiques!
|
||||
@ -73,6 +74,11 @@ mainMenu:
|
||||
savegameLevel: Nivell <x>
|
||||
savegameLevelUnknown: Nivell desconegut
|
||||
savegameUnnamed: Unnamed
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -86,6 +92,9 @@ dialogs:
|
||||
viewUpdate: Veure actualitzacions
|
||||
showUpgrades: Mostrar millores
|
||||
showKeybindings: Mostrar dreceres de teclat
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: Error en importar
|
||||
text: "Ha ocurrit un error intentant importar la teva partida:"
|
||||
@ -187,6 +196,67 @@ dialogs:
|
||||
title: Tutorial Available
|
||||
desc: There is a tutorial video available for this level, but it is only
|
||||
available in English. Would you like to watch it?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Moure
|
||||
@ -208,6 +278,7 @@ ingame:
|
||||
clearSelection: Buidar selecció
|
||||
pipette: Pipeta
|
||||
switchLayers: Intercanviar capes
|
||||
clearBelts: Clear belts
|
||||
colors:
|
||||
red: Roig
|
||||
green: Verd
|
||||
@ -357,6 +428,44 @@ ingame:
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Cintes transportadores, Distribuidors i Túnels
|
||||
@ -569,6 +678,18 @@ buildings:
|
||||
name: Productor d'ítems
|
||||
description: Només avaliable en mode "sandbox", emet la senyal de la capa de
|
||||
cablejat a la capa normal.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Tallar figures
|
||||
@ -981,6 +1102,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: Sobre aquest Joc
|
||||
body: >-
|
||||
@ -1081,3 +1206,57 @@ tips:
|
||||
- Premeu F4 per mostrar la vostra tarifa FPS i Tick.
|
||||
- Premeu F4 dues vegades per mostrar el mosaic del ratolí i la càmera.
|
||||
- Podeu fer clic a una forma fixada al costat esquerre per desenganxar-la.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
@ -10,14 +10,14 @@ steamPage:
|
||||
A jako by to nestačilo, musíte také produkovat exponenciálně více, abyste uspokojili požadavky - jediná věc, která pomáhá, je škálování! Zatímco na začátku tvary pouze zpracováváte, později je musíte obarvit - těžbou a mícháním barev!
|
||||
|
||||
Koupením hry na platformě Steam získáte přístup k plné verzi hry, ale také můžete nejdříve hrát demo verzi na shapez.io a až potom se rozhodnout!
|
||||
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: Co o shapez.io říkají lidé
|
||||
nothernlion_comment: Tato hra je úžasná - Užívám si čas strávený hraním této hry,
|
||||
jen strašně rychle utekl.
|
||||
notch_comment: Sakra. Opravdu bych měl jít spát, ale myslím si, že jsem zrovna přišel na to,
|
||||
jak v shapez.io vytvořit počítač.
|
||||
steam_review_comment: Tato hra mi ukradla život a já ho nechci zpět.
|
||||
Odpočinková factory hra, která mi nedovolí přestat dělat mé výrobní linky více
|
||||
efektivní.
|
||||
global:
|
||||
loading: Načítání
|
||||
error: Chyba
|
||||
@ -49,6 +49,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: SPACE
|
||||
loggingIn: Přihlašuji
|
||||
demoBanners:
|
||||
title: Demo verze
|
||||
intro: Získejte plnou verzi pro odemknutí všech funkcí a obsahu!
|
||||
@ -69,6 +70,11 @@ mainMenu:
|
||||
savegameLevel: Úroveň <x>
|
||||
savegameLevelUnknown: Neznámá úroveň
|
||||
savegameUnnamed: Nepojmenovaný
|
||||
puzzleMode: Puzzle mód
|
||||
back: Zpět
|
||||
puzzleDlcText: Baví vás zmenšování a optimalizace továren? Pořiďte si nyní Puzzle
|
||||
DLC na Steamu pro ještě více zábavy!
|
||||
puzzleDlcWishlist: Přidejte si nyní na seznam přání!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -82,6 +88,9 @@ dialogs:
|
||||
viewUpdate: Zobrazit aktualizaci
|
||||
showUpgrades: Zobrazit vylepšení
|
||||
showKeybindings: Zobrazit klávesové zkratky
|
||||
retry: Opakovat
|
||||
continue: Pokračovat
|
||||
playOffline: Hrát offline
|
||||
importSavegameError:
|
||||
title: Chyba Importu
|
||||
text: "Nepovedlo se importovat vaši uloženou hru:"
|
||||
@ -178,6 +187,67 @@ dialogs:
|
||||
title: Dostupný tutoriál
|
||||
desc: Pro tuto úroveň je k dispozici tutoriál, ale je dostupný pouze v
|
||||
angličtině. Chtěli byste se na něj podívat?
|
||||
editConstantProducer:
|
||||
title: Nastavte tvar
|
||||
puzzleLoadFailed:
|
||||
title: Načítání puzzle selhalo
|
||||
desc: "Bohužel nebylo možné puzzle načíst:"
|
||||
submitPuzzle:
|
||||
title: Odeslat puzzle
|
||||
descName: "Pojmenujte svůj puzzle:"
|
||||
descIcon: "Prosím zadejte unikátní krátký klíč, který bude zobrazen jako ikona
|
||||
vašeho puzzle (Ten můžete vygenerovat <link>zde</link>, nebo vyberte jeden
|
||||
z níže náhodně vybraných tvarů):"
|
||||
placeholderName: Název puzzlu
|
||||
puzzleResizeBadBuildings:
|
||||
title: Změna velikosti není možná
|
||||
desc: Zónu není možné více zmenšit, protože by některé budovy byly
|
||||
mimo zónu.
|
||||
puzzleLoadError:
|
||||
title: Špatný puzzle
|
||||
desc: "Načítání puzzlu selhalo:"
|
||||
offlineMode:
|
||||
title: Offline mód
|
||||
desc: Nebylo možné kontaktovat herní servery, proto musí hra běžet v offline módu.
|
||||
Ujistěte se, že máte aktivní připojení k internetu.
|
||||
puzzleDownloadError:
|
||||
title: Chyba stahování
|
||||
desc: "Stažení puzzlu selhalo:"
|
||||
puzzleSubmitError:
|
||||
title: Chyba odeslání
|
||||
desc: "Odeslání puzzlu selhalo:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle zveřejněno
|
||||
desc: Gratuluji! Vaše puzzle bylo zvěřejněno a je dostupné pro
|
||||
ostatní hráče. Můžete ho najít v sekci "Má puzzle".
|
||||
puzzleCreateOffline:
|
||||
title: Offline mód
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Posun mapy
|
||||
@ -199,6 +269,7 @@ ingame:
|
||||
clearSelection: Zrušit výběr
|
||||
pipette: Kapátko
|
||||
switchLayers: Změnit vrstvy
|
||||
clearBelts: Clear belts
|
||||
buildingPlacement:
|
||||
cycleBuildingVariants: Zmáčkněte <key> pro přepínání mezi variantami.
|
||||
hotkeyLabel: "Klávesová zkratka: <key>"
|
||||
@ -347,7 +418,45 @@ ingame:
|
||||
desc: Vyvíjím to ve svém volném čase!
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
desc: Získejte je všechny!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zóna
|
||||
zoneWidth: Šířka
|
||||
zoneHeight: Výška
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Pásy, distribuce a tunely
|
||||
@ -403,7 +512,7 @@ buildings:
|
||||
name: Rotor
|
||||
description: Otáčí tvary o 90 stupňů po směru hodinových ručiček.
|
||||
ccw:
|
||||
name: Rotor (opačný)
|
||||
name: Rotor (Opačný)
|
||||
description: Otáčí tvary o 90 stupňů proti směru hodinových ručiček.
|
||||
rotate180:
|
||||
name: Rotor (180°)
|
||||
@ -546,6 +655,18 @@ buildings:
|
||||
name: Výrobník předmětů
|
||||
description: Dostupný pouze v sandboxovém módu, vydává daný signál z vrstvy
|
||||
kabelů na běžnou vrstvu.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Řezání tvarů
|
||||
@ -945,6 +1066,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: O hře
|
||||
body: >-
|
||||
@ -1039,3 +1164,57 @@ tips:
|
||||
- Stisknutím F4 zobrazíte FPS a rychlost ticků.
|
||||
- Stisknutím F4 dvakrát zobrazíte souřadnici myši a kamery.
|
||||
- Můžete kliknout na připínáček vlevo vedle připnutého tvaru k jeho odepnutí.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
@ -53,6 +53,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SKIFT/SHIFT
|
||||
space: MELLEMRUM
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Demo Version
|
||||
intro: Køb spillet for at få den fulde oplevelse!
|
||||
@ -72,6 +73,11 @@ mainMenu:
|
||||
savegameLevel: Niveau <x>
|
||||
savegameLevelUnknown: Ukendt Niveau
|
||||
savegameUnnamed: Unnamed
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -85,6 +91,9 @@ dialogs:
|
||||
viewUpdate: Se Opdatering
|
||||
showUpgrades: Vis Opgraderinger
|
||||
showKeybindings: Vis Keybindings
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: Import Fejl
|
||||
text: "Importering af gemt spil fejlede:"
|
||||
@ -184,6 +193,67 @@ dialogs:
|
||||
title: Tutorial Available
|
||||
desc: There is a tutorial video available for this level, but it is only
|
||||
available in English. Would you like to watch it?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Bevæg dig
|
||||
@ -205,6 +275,7 @@ ingame:
|
||||
clearSelection: Ryd Selektion
|
||||
pipette: Pipette
|
||||
switchLayers: Skift Lag
|
||||
clearBelts: Clear belts
|
||||
colors:
|
||||
red: Rød
|
||||
green: Grøn
|
||||
@ -352,6 +423,44 @@ ingame:
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Bælter, Fordelere & Tuneller
|
||||
@ -557,6 +666,18 @@ buildings:
|
||||
name: Item Producer
|
||||
description: Available in sandbox mode only, outputs the given signal from the
|
||||
wires layer on the regular layer.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Klippe Figurer
|
||||
@ -963,6 +1084,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: Om dette spil
|
||||
body: >-
|
||||
@ -1048,3 +1173,57 @@ tips:
|
||||
- Press F4 to show your FPS and Tick Rate.
|
||||
- Press F4 twice to show the tile of your mouse and camera.
|
||||
- You can click a pinned shape on the left side to unpin it.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
@ -49,6 +49,7 @@ global:
|
||||
escape: ESC
|
||||
shift: UMSCH
|
||||
space: LEER
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Demo-Version
|
||||
intro: Kauf die Vollversion für alle Features!
|
||||
@ -69,6 +70,11 @@ mainMenu:
|
||||
savegameLevel: Level <x>
|
||||
savegameLevelUnknown: Unbekanntes Level
|
||||
savegameUnnamed: Unbenannt
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -82,6 +88,9 @@ dialogs:
|
||||
viewUpdate: Update anzeigen
|
||||
showUpgrades: Upgrades anzeigen
|
||||
showKeybindings: Kürzel anzeigen
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: Importfehler
|
||||
text: "Fehler beim Importieren deines Speicherstands:"
|
||||
@ -181,6 +190,67 @@ dialogs:
|
||||
title: Tutorial verfügbar
|
||||
desc: Für dieses Level ist ein Tutorial-Video verfügbar, allerdings nur auf
|
||||
Englisch. Willst du es trotzdem anschauen?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Bewegen
|
||||
@ -202,6 +272,7 @@ ingame:
|
||||
clearSelection: Auswahl aufheben
|
||||
pipette: Pipette
|
||||
switchLayers: Ebenen wechseln
|
||||
clearBelts: Clear belts
|
||||
colors:
|
||||
red: Rot
|
||||
green: Grün
|
||||
@ -350,6 +421,44 @@ ingame:
|
||||
achievements:
|
||||
title: Errungenschaften
|
||||
desc: Hol sie dir alle!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Fließbänder, Verteiler & Tunnel
|
||||
@ -566,6 +675,18 @@ buildings:
|
||||
name: Item-Produzent
|
||||
description: Nur im Sandkastenmodus verfügbar. Gibt das Signal aus der
|
||||
Wires-Ebene als Item aus.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Formen zerschneiden
|
||||
@ -913,7 +1034,8 @@ settings:
|
||||
position, otherwise in the middle of the screen.
|
||||
mapResourcesScale:
|
||||
title: Größe der Ressourcen auf der Karte
|
||||
description: Legt die Größe der Ressourcen auf der Karte (beim Herauszoomen) fest.
|
||||
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
|
||||
@ -991,6 +1113,10 @@ keybindings:
|
||||
rotateToDown: "Rotieren: Nach unten zeigend"
|
||||
rotateToRight: "Rotieren: Nach rechts zeigend"
|
||||
rotateToLeft: "Rotieren: Nach links zeigend"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: Über dieses Spiel
|
||||
body: Dieses Spiel ist quelloffen (Open Source) und wurde von <a
|
||||
@ -1094,3 +1220,57 @@ tips:
|
||||
- Drücke doppelt F4 um den Standort des Mauszeigers und der Kamera zu
|
||||
bestimmen.
|
||||
- Du kannst die angehefteten Formen am linken Rand wieder entfernen.
|
||||
puzzleMenu:
|
||||
play: Spielen
|
||||
edit: bearbeiten
|
||||
title: Puzzle Modus
|
||||
createPuzzle: Puzzle erstellen
|
||||
loadPuzzle: Laden
|
||||
reviewPuzzle: Überprüfen & Veröffentlichen
|
||||
validatingPuzzle: Puzzle wird überprüft
|
||||
submittingPuzzle: Puzzle wird veröffentlicht
|
||||
noPuzzles: Hier gibt es bisher noch keine Puzzles.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: Neu
|
||||
top-rated: Am besten bewertet
|
||||
mine: Meine Puzzles
|
||||
short: Kurz
|
||||
easy: Einfach
|
||||
hard: Schwierig
|
||||
completed: Abgeschlossen
|
||||
validation:
|
||||
title: Ungültiges Puzzle
|
||||
noProducers: Bitte plaziere einen Item-Produzent!
|
||||
noGoalAcceptors: Bitte plaziere einen Ziel-Akzeptor!
|
||||
goalAcceptorNoItem: Einer oder mehrere Ziel-Akzeptoren haben noch kein zugewiesenes Item.
|
||||
Liefere eine Form zu diesen, um ein Ziel zu setzen.
|
||||
goalAcceptorRateNotMet: Einer oder mehrere Ziel-Aktzeptoren bekommen nicht genügend Items.
|
||||
Stelle sicher, dass alle Akzeptatorindikatoren grün sind.
|
||||
buildingOutOfBounds: Ein oder mehrere Gebäude befinden sich außerhalb des beabauren Bereichs.
|
||||
Vergrößere den Bereich oder entferene die Gebäude.
|
||||
autoComplete: Dein Puzzle schließt sich selbst ab! Bitte stelle sicher, dass deine Item-Produzent
|
||||
nicht direkt an deine Ziel-Akzeptoren lieferen.
|
||||
backendErrors:
|
||||
ratelimit: Du führst Aktionen zu schnell aus. Bitte warte kurz.
|
||||
invalid-api-key: Kommunikation mit dem Back-End fehlgeschlagen, veruche das Spiel
|
||||
neustarten oder zu updaten (Ungültiger Api-Schlüssel).
|
||||
unauthorized: Kommunikation mit dem Back-End fehlgeschlagen, veruche das Spiel
|
||||
neustarten oder zu updaten (Nicht autorisiert).
|
||||
bad-token: Kommunikation mit dem Back-End fehlgeschlagen, veruche das Spiel
|
||||
neustarten oder zu updaten (Ungültiger Token).
|
||||
bad-id: Ungültige Puzzle Identifikation.
|
||||
not-found: Das gegebene Puzzle konnte nicht gefunden werden.
|
||||
bad-category: Die gegebene Kategorie konnte nicht gefunden werden.
|
||||
bad-short-key: Der gegebene Kurzschlüssel ist ungültig.
|
||||
profane-title: Dein Puzzletitel enthält ungültige Wörter.
|
||||
bad-title-too-many-spaces: Dein Puzzletitel ist zu kurz.
|
||||
bad-shape-key-in-emitter: Einem konstanten Produzenten wurde ein ungültiges Item zugewiesen.
|
||||
bad-shape-key-in-goal: Einem Ziel-Akzeptor wurde ein ungültiges Item zugewiesen.
|
||||
no-emitters: Dein Puzzle enthält keine konstanten Produzenten.
|
||||
no-goals: Dein Puzzle enthält keine Ziel-Akzeptoren.
|
||||
short-key-already-taken: Dieser Kurzschlüssel ist bereits vergeben, bitte wähle einen anderen.
|
||||
can-not-report-your-own-puzzle: Du kannst nicht dein eigenes Puzzle melden.
|
||||
bad-payload: Die Anfrage beinhaltet ungültige Daten.
|
||||
bad-building-placement: Dein Puzzle beinhaltet Gebäude, die sich an ungültigen Stellen befinden.
|
||||
timeout: Es kam zu einer Zeitüberschreitung bei der Anfrage.
|
||||
|
@ -53,6 +53,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: SPACE
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Demo Version
|
||||
intro: Get the standalone to unlock all features!
|
||||
@ -73,6 +74,11 @@ mainMenu:
|
||||
madeBy: Made by <author-link>
|
||||
subreddit: Reddit
|
||||
savegameUnnamed: Unnamed
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -86,6 +92,9 @@ dialogs:
|
||||
viewUpdate: Προβολή ενημέρωσης
|
||||
showUpgrades: Εμφάνιση αναβαθμίσεων
|
||||
showKeybindings: Συνδυασμοί πλήκτρων
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: Σφάλμα εισαγωγής
|
||||
text: "Αποτυχία εισαγωγής του αποθηκευμένου παιχνιδιού:"
|
||||
@ -192,6 +201,67 @@ dialogs:
|
||||
title: Tutorial Available
|
||||
desc: There is a tutorial video available for this level, but it is only
|
||||
available in English. Would you like to watch it?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Κίνηση
|
||||
@ -213,6 +283,7 @@ ingame:
|
||||
clearSelection: Εκκαθαρισμός επιλογής
|
||||
pipette: Σταγονόμετρο
|
||||
switchLayers: Εναλλαγή στρώματος
|
||||
clearBelts: Clear belts
|
||||
buildingPlacement:
|
||||
cycleBuildingVariants: Πάτησε <key> για εναλλαγή μεταξύ παραλλαγών.
|
||||
hotkeyLabel: "Hotkey: <key>"
|
||||
@ -363,6 +434,44 @@ ingame:
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Ιμάντες, Διανομείς & Σήραγγες
|
||||
@ -573,6 +682,18 @@ buildings:
|
||||
name: Item Producer
|
||||
description: Available in sandbox mode only, outputs the given signal from the
|
||||
wires layer on the regular layer.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Κοπή σχημάτων
|
||||
@ -986,6 +1107,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: Σχετικά με αυτό το παιχνίδι
|
||||
body: >-
|
||||
@ -1078,3 +1203,57 @@ tips:
|
||||
- Press F4 to show your FPS and Tick Rate.
|
||||
- Press F4 twice to show the tile of your mouse and camera.
|
||||
- You can click a pinned shape on the left side to unpin it.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
@ -120,6 +120,11 @@ mainMenu:
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
|
||||
puzzleDlcText: >-
|
||||
Do you enjoy compacting and optimizing factories?
|
||||
Get the Puzzle DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
@ -617,8 +622,9 @@ ingame:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of time, it <strong>saves it as a goal</strong> that the player must produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Once you click review, your puzzle will be validated and you can publish it.
|
||||
- 5. Upon release, <strong>all buildings will be removed</strong> except for the Producers and Goal Acceptors - That's the part that the player is supposed to figure out for themselves, after all :)
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable it.
|
||||
- 5. Once you click review, your puzzle will be validated and you can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong> except for the Producers and Goal Acceptors - That's the part that the player is supposed to figure out for themselves, after all :)
|
||||
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
@ -628,7 +634,8 @@ ingame:
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
|
||||
buttonSubmit: Continue
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
|
@ -14,19 +14,19 @@ steamPage:
|
||||
Mientras que sólo procesas formas al principio, tienes que colorearlas después - ¡para ello tienes que extraer y mezclar colores!
|
||||
|
||||
Comprando el juego en Steam tienes acceso a la versión completa, ¡pero también puedes jugar una demo en shapez.io primero y decidir después!
|
||||
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: Lo que otras personas dicen sobre shapez.io
|
||||
nothernlion_comment: Este juego es estupendo - Estoy teniendo un tiempo
|
||||
maravolloso jugano, y el tiempo ha pasado volando.
|
||||
notch_comment: Miercoles. Verdaderamente debería dormir, pero creo que acabo de
|
||||
descubrir como hacer un ordenador en shapez.io
|
||||
steam_review_comment: Este juego ha robado mi vida y no la quiero de vuelta. Muy
|
||||
relajante juego de fábrica que no me dejará hacer mis lineas más
|
||||
eficientes.
|
||||
global:
|
||||
loading: Cargando
|
||||
error: Error
|
||||
thousandsDivider: .
|
||||
decimalSeparator: ","
|
||||
thousandsDivider: ","
|
||||
decimalSeparator: .
|
||||
suffix:
|
||||
thousands: k
|
||||
millions: M
|
||||
@ -53,6 +53,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: ESPACIO
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Versión de prueba
|
||||
intro: ¡Obtén el juego completo para desbloquear todas las características!
|
||||
@ -72,6 +73,11 @@ mainMenu:
|
||||
savegameLevel: Nivel <x>
|
||||
savegameLevelUnknown: Nivel desconocido
|
||||
savegameUnnamed: Sin nombre
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -85,6 +91,9 @@ dialogs:
|
||||
viewUpdate: Ver actualización
|
||||
showUpgrades: Ver mejoras
|
||||
showKeybindings: Ver atajos de teclado
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: Error de importación
|
||||
text: "Fallo al importar tu partida guardada:"
|
||||
@ -187,6 +196,67 @@ dialogs:
|
||||
title: Tutorial Disponible
|
||||
desc: Hay un video tutorial disponible para este nivel, pero solo está
|
||||
disponible en inglés ¿Te gustaría verlo?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Mover
|
||||
@ -196,7 +266,7 @@ ingame:
|
||||
placeMultiple: Colocar varios
|
||||
reverseOrientation: Invertir la orientación
|
||||
disableAutoOrientation: Desactivar la autoorientación
|
||||
toggleHud: Habilitar el HUD
|
||||
toggleHud: Habilitar la interfaz
|
||||
placeBuilding: Colocar edificio
|
||||
createMarker: Crear marcador
|
||||
delete: Destruir
|
||||
@ -208,6 +278,7 @@ ingame:
|
||||
clearSelection: Limpiar selección
|
||||
pipette: Cuentagotas
|
||||
switchLayers: Cambiar capas
|
||||
clearBelts: Clear belts
|
||||
colors:
|
||||
red: Rojo
|
||||
green: Verde
|
||||
@ -217,7 +288,7 @@ ingame:
|
||||
cyan: Cian
|
||||
white: Blanco
|
||||
black: Negro
|
||||
uncolored: Gris
|
||||
uncolored: Incoloro
|
||||
buildingPlacement:
|
||||
cycleBuildingVariants: Pulsa <key> para rotar por las distintas variantes.
|
||||
hotkeyLabel: "Tecla: <key>"
|
||||
@ -248,18 +319,18 @@ ingame:
|
||||
dataSources:
|
||||
stored:
|
||||
title: Almacenado
|
||||
description: Muestra la cantidad de figuras guardadas en tu HUB.
|
||||
description: Muestra la cantidad de figuras guardadas en tu Centro.
|
||||
produced:
|
||||
title: Producido
|
||||
description: Muestra todas las figuras que tu fábrica al completo produce,
|
||||
incluyendo productos intermedios.
|
||||
delivered:
|
||||
title: Entregados
|
||||
description: Muestra las figuras que son entregadas a tu HUB.
|
||||
description: Muestra las figuras que son entregadas a tu Centro.
|
||||
noShapesProduced: Todavía no se han producido figuras.
|
||||
shapesDisplayUnits:
|
||||
second: <shapes> / s
|
||||
minute: <shapes> / m
|
||||
minute: <shapes> / min
|
||||
hour: <shapes> / h
|
||||
settingsMenu:
|
||||
playtime: Tiempo de juego
|
||||
@ -273,7 +344,7 @@ ingame:
|
||||
cost: Coste
|
||||
waypoints:
|
||||
waypoints: Marcadores
|
||||
hub: HUB
|
||||
hub: Centro
|
||||
description: Click izquierdo sobre un marcador para ir ahí, click derecho para
|
||||
borrarlo. <br><br> Pulsa <keybinding> para crear un marcador de la
|
||||
vista actual o <strong>click derecho</strong> para crear un marcador
|
||||
@ -289,8 +360,9 @@ ingame:
|
||||
1_1_extractor: ¡Coloca un <strong>extractor</strong> encima de un
|
||||
<strong>círculo</strong> para extraerlo!
|
||||
1_2_conveyor: "¡Conecta el extractor con una <strong>cinta
|
||||
transportadora</strong> a tu HUB!<br><br> Pista: ¡<strong>Pulsa
|
||||
y arrastra</strong> la cinta transportadora con el ratón!"
|
||||
transportadora</strong> a tu Centro!<br><br> Pista:
|
||||
¡<strong>Pulsa y arrastra</strong> la cinta transportadora con
|
||||
el ratón!"
|
||||
1_3_expand: '¡Esto <strong>NO</strong> es un "juego de esperar"! Construye más
|
||||
extractores y cintas transportadoras para completar el objetivo
|
||||
más rápido.<br><br> Pista: Mantén pulsado <strong>SHIFT</strong>
|
||||
@ -307,8 +379,8 @@ ingame:
|
||||
para acelerar este lento proceso!<br><br> PD: Usa las teclas
|
||||
<strong>0-9 </strong> para acceder a los edificios más rápido!"
|
||||
3_1_rectangles: "¡Ahora consigamos unos rectangulos! <strong>construye 4
|
||||
extractores</strong> y conectalos a el HUB.<br><br> PD: Manten
|
||||
apretado <strong>SHIFT</strong> mientrás pones cintas
|
||||
extractores</strong> y conectalos a el Centro.<br><br> PD:
|
||||
Manten apretado <strong>SHIFT</strong> mientrás pones cintas
|
||||
transportadoras para activar el planeador de cintas!"
|
||||
21_1_place_quad_painter: ¡Pon el <strong>pintador cuádruple</strong> y consigue
|
||||
unos <strong>círculos</strong>, el color <strong>blanco</strong>
|
||||
@ -319,9 +391,9 @@ ingame:
|
||||
21_3_place_button: ¡Genial! ¡Ahora pon un <strong>Interruptor</strong> y
|
||||
conéctalo con cables!
|
||||
21_4_press_button: "Presiona el interruptor para hacer que <strong>emita una
|
||||
señal verdadera</strong> lo cual activa el pintador.<br><br>
|
||||
PD: ¡No necesitas conectar todas las entradas! Intenta
|
||||
conectando sólo dos."
|
||||
señal verdadera</strong> lo cual activa el pintador.<br><br> PD:
|
||||
¡No necesitas conectar todas las entradas! Intenta conectando
|
||||
sólo dos."
|
||||
connectedMiners:
|
||||
one_miner: 1 Minero
|
||||
n_miners: <amount> Mineros
|
||||
@ -356,8 +428,46 @@ ingame:
|
||||
title: Apoyame
|
||||
desc: ¡Desarrollo este juego en mi tiempo libre!
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
title: Logros
|
||||
desc: Atrapalos a todos!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Cintas transportadoras, Distribuidores y Túneles
|
||||
@ -375,8 +485,8 @@ buildings:
|
||||
hub:
|
||||
deliver: Entregar
|
||||
toUnlock: para desbloquear
|
||||
levelShortcut: LVL
|
||||
endOfDemo: End of Demo
|
||||
levelShortcut: Nivel
|
||||
endOfDemo: Final de la demo
|
||||
belt:
|
||||
default:
|
||||
name: Cinta Transportadora
|
||||
@ -574,6 +684,18 @@ buildings:
|
||||
name: Productor de items
|
||||
description: Solo disponible en modo libre, envía la señal recivida de la capa
|
||||
de cables en la capa regular.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Cortador de figuras
|
||||
@ -649,12 +771,12 @@ storyRewards:
|
||||
desc: ¡Lo hiciste! Haz desbloqueado el <strong>modo de juego libre</strong>!
|
||||
¡Esto significa que las formas ahora son
|
||||
<strong>aleatoriamente</strong> generadas!<br><br> Debído a que
|
||||
desde ahora de adelante el HUB pedrirá una cantidad especifica de
|
||||
desde ahora de adelante el Centro pedrirá una cantidad especifica de
|
||||
formas <strong>por segundo</strong> ¡Te recomiendo encarecidamente
|
||||
que construyas una maquina que automáticamente envíe la forma
|
||||
pedida!<br><br> El HUB emite la forma pedida en la capa de cables,
|
||||
así que todo lo que tienes que hacer es analizarla y automaticamente
|
||||
configurar tu fabrica basada en ello.
|
||||
pedida!<br><br> El Centro emite la forma pedida en la capa de
|
||||
cables, así que todo lo que tienes que hacer es analizarla y
|
||||
automaticamente configurar tu fabrica basada en ello.
|
||||
reward_blueprints:
|
||||
title: Planos
|
||||
desc: ¡Ahora puedes <strong>copiar y pegar</strong> partes de tu fábrica!
|
||||
@ -719,9 +841,9 @@ storyRewards:
|
||||
¡Ahora puedes simular un cortador, rotador, apilador y más dentro de
|
||||
la capa de cables! Con esto ahora tienes tres opciones para
|
||||
continuar el juego:<br><br> - Construir una <strong>maquina
|
||||
automatizada</strong> para crear cualquier forma que te pida el HUB
|
||||
(¡Te recomiendo que lo intentes!).<br><br> - Construir algo genial
|
||||
con los cables.<br><br> - Continuar jugando de la manera
|
||||
automatizada</strong> para crear cualquier forma que te pida el
|
||||
Centro (¡Te recomiendo que lo intentes!).<br><br> - Construir algo
|
||||
genial con los cables.<br><br> - Continuar jugando de la manera
|
||||
regular.<br><br> ¡Cualquiera que eligas, recuerda divertirte!
|
||||
reward_wires_painter_and_levers:
|
||||
title: Cables y pintor cuádruple
|
||||
@ -941,7 +1063,7 @@ keybindings:
|
||||
menuOpenShop: Mejoras
|
||||
menuOpenStats: Estadísticas
|
||||
menuClose: Cerrar menú
|
||||
toggleHud: Activar HUD
|
||||
toggleHud: Activar Interfaz
|
||||
toggleFPSInfo: Activar FPS e información de depurado
|
||||
switchLayers: Cambiar capas
|
||||
exportScreenshot: Exportar la base completa como imagen
|
||||
@ -963,7 +1085,7 @@ keybindings:
|
||||
pasteLastBlueprint: Pegar último plano
|
||||
cycleBuildings: Ciclar edificios
|
||||
lockBeltDirection: Activar planificador de cintas transportadoras
|
||||
switchDirectionLockSide: "Planner: Cambiar sentido"
|
||||
switchDirectionLockSide: "Planificador: Cambiar sentido"
|
||||
massSelectStart: Mantén pulsado y arrastra para empezar
|
||||
massSelectSelectMultiple: Seleccionar múltiples áreas
|
||||
massSelectCopy: Copiar área
|
||||
@ -986,10 +1108,14 @@ keybindings:
|
||||
comparator: Comparador
|
||||
item_producer: Productor de items (Sandbox)
|
||||
copyWireValue: "Cables: Copiar valor bajo el cursos"
|
||||
rotateToUp: "Rotate: Point Up"
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
rotateToUp: "Rotar: Apuntar hacia arriba"
|
||||
rotateToDown: "Rotar: Apuntar hacia abajo"
|
||||
rotateToRight: "Rotar: Apuntar hacia la derecha"
|
||||
rotateToLeft: "Rotar: Apuntar hacia la izquierda"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: Sobre el juego
|
||||
body: >-
|
||||
@ -1015,9 +1141,9 @@ demo:
|
||||
exportingBase: Exportando la base completa como imagen
|
||||
settingNotAvailable: No disponible en la versión de prueba.
|
||||
tips:
|
||||
- El HUB acepta entradas de cualquier tipo ¡No solo la forma actual!
|
||||
- El Centro acepta entradas de cualquier tipo ¡No solo la forma actual!
|
||||
- Trata de que tus fábricas sean modulares - ¡Te servirá en el futuro!
|
||||
- No construyas muy cerca del HUB ¡O se volverá todo un caos!
|
||||
- No construyas muy cerca del Centro ¡O se volverá todo un caos!
|
||||
- Si apilar las formas no funciona, intenta intercambiar las entradas.
|
||||
- Puedes activar la dirección del planeador de cintas apretando <b>R</b>.
|
||||
- Mantener apretado <b>CTRL</b> te permite poner cintas sin auto-orientación.
|
||||
@ -1047,7 +1173,7 @@ tips:
|
||||
- Puedes apretar <b>ALT</b> para invertir la dirección a la que van las
|
||||
cintas.
|
||||
- ¡La eficiencia es la clave!
|
||||
- Mientras más lejos del HUB estés más complejas serán las formas que te
|
||||
- Mientras más lejos del Centro estés más complejas serán las formas que te
|
||||
encuentres.
|
||||
- Las máquinas tienen una velocidad limitada, divídelas para una máxima
|
||||
eficiencia.
|
||||
@ -1071,7 +1197,7 @@ tips:
|
||||
- Echa un vistazo más de cerca al mezclador de colores, y tus preguntas
|
||||
serán respondidas.
|
||||
- Usa <b>CTRL</b> + Click izquierdo para seleccionar un área.
|
||||
- Construir demasiado cerca del HUB puede interponerse en el camino de
|
||||
- Construir demasiado cerca del Centro puede interponerse en el camino de
|
||||
proyectos a futuro.
|
||||
- El icono del alfiler junto a cada forma de la lista de mejoras lo fija a
|
||||
la pantalla.
|
||||
@ -1084,10 +1210,65 @@ tips:
|
||||
- ¡Este juego tiene un montón de atajos útiles! Asegúrate de revisar la
|
||||
página de ajustes.
|
||||
- Este juego tiene muchos ajustes, ¡asegúrate de revisarlos!
|
||||
- ¡El marcador de tu HUB tiene una pequeña brújula para indicar su dirección!
|
||||
- ¡El marcador de tu Centro tiene una pequeña brújula para indicar su
|
||||
dirección!
|
||||
- Para despejar las cintas transportadoras, corta el área y luego pégala en
|
||||
el mismo lugar.
|
||||
- Presiona F4 para mostrar tu FPS y Tick Rate.
|
||||
- Presiona F4 dos veces para mostrar las coordenadas de tu ratón y de la
|
||||
cámara.
|
||||
- Puedes hacer clic en una forma fijada en el lado izquierdo para desfijarla.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
@ -53,6 +53,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: VÄLILYÖNTI
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Demoversio
|
||||
intro: Hanki pelin täysversio avataksesi kaikki ominaisuudet!
|
||||
@ -72,6 +73,11 @@ mainMenu:
|
||||
savegameLevel: Taso <x>
|
||||
savegameLevelUnknown: Tuntematon taso
|
||||
savegameUnnamed: Nimetön
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -85,6 +91,9 @@ dialogs:
|
||||
viewUpdate: Näytä päivitys
|
||||
showUpgrades: Näytä päivitykset
|
||||
showKeybindings: Näytä pikanäppäimet
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: Tuontivirhe
|
||||
text: "Tallennuksen tuonti epäonnistui:"
|
||||
@ -180,6 +189,67 @@ dialogs:
|
||||
tutorialVideoAvailableForeignLanguage:
|
||||
title: Ohjevideo saatavilla
|
||||
desc: Tästä tasosta on saatavilla ohjevideo! Haluaisitko katsoa sen?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Liiku
|
||||
@ -201,6 +271,7 @@ ingame:
|
||||
clearSelection: Tyhjennä valinta
|
||||
pipette: Pipetti
|
||||
switchLayers: Vaihda tasoa
|
||||
clearBelts: Clear belts
|
||||
colors:
|
||||
red: Punainen
|
||||
green: Vihreä
|
||||
@ -349,6 +420,44 @@ ingame:
|
||||
achievements:
|
||||
title: Saavutukset
|
||||
desc: Metsästä kaikki!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Kuljettimet, jakelijat & tunnelit
|
||||
@ -559,15 +668,26 @@ buildings:
|
||||
name: Signaaligeneraattori
|
||||
description: Saatavilla vain hiekkalaatikkotilassa. Lähettää johtotasolla
|
||||
annetun signaalin normaaliin tasoon.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Muotojen Leikkaus
|
||||
desc: Avasit <strong>Leikkurin</strong>, joka leikkaa muotoja
|
||||
ylhäältä alas <strong>muodon suunnasta
|
||||
riippumatta</strong>!<br><br>muista hankkiutua eroon jätteestä, tai
|
||||
muuten <strong>se tukkii ja pysäyttää leikkurin</strong> - Siksi
|
||||
olen antanut sinulle <strong>roskiksen</strong>, joka tuhoaa
|
||||
kaiken sinne laitetun!
|
||||
desc: Avasit <strong>Leikkurin</strong>, joka leikkaa muotoja ylhäältä alas
|
||||
<strong>muodon suunnasta riippumatta</strong>!<br><br>muista
|
||||
hankkiutua eroon jätteestä, tai muuten <strong>se tukkii ja
|
||||
pysäyttää leikkurin</strong> - Siksi olen antanut sinulle
|
||||
<strong>roskiksen</strong>, joka tuhoaa kaiken sinne laitetun!
|
||||
reward_rotater:
|
||||
title: Kääntö
|
||||
desc: Avasit <strong>Kääntäjän</strong>! Se kääntää muotoja myötäpäivään 90
|
||||
@ -629,11 +749,11 @@ storyRewards:
|
||||
reward_freeplay:
|
||||
title: Vapaapeli
|
||||
desc: Onnistuit! Avasit juuri <strong>vapaapelimuodon</strong>! Muodot luodaan
|
||||
nyt <strong>satunnaisesti</strong><br><br> Koska keskusrakennus vaatii
|
||||
tietyn <strong>kuljetuskapasiteetin</strong> tästä eteenpäin, suosittelen
|
||||
lämpimästi rakentamaan koneen, joka tuottaa vaaditun muodon
|
||||
automaattisesti!<br><br> Keskusrakennus lähettää pyydetyn muodon
|
||||
johtotasolle, joten sinun ei tarvitse kuin analysoida se ja
|
||||
nyt <strong>satunnaisesti</strong><br><br> Koska keskusrakennus
|
||||
vaatii tietyn <strong>kuljetuskapasiteetin</strong> tästä eteenpäin,
|
||||
suosittelen lämpimästi rakentamaan koneen, joka tuottaa vaaditun
|
||||
muodon automaattisesti!<br><br> Keskusrakennus lähettää pyydetyn
|
||||
muodon johtotasolle, joten sinun ei tarvitse kuin analysoida se ja
|
||||
konfiguroida tehtaasi sen perusteella.
|
||||
reward_blueprints:
|
||||
title: Piirustukset
|
||||
@ -956,12 +1076,15 @@ keybindings:
|
||||
rotateToDown: "Käännä: osoittaa alas"
|
||||
rotateToRight: "Käännä: osoittaa oikealle"
|
||||
rotateToLeft: "Käännä: osoittaa vasemmalle"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: Tietoja tästä pelistä
|
||||
body: >-
|
||||
Tämä peli on avointa lähdekoodia ja <a
|
||||
href="https://github.com/tobspr" target="_blank">Tobias Springer</a>in
|
||||
(siis minun) kehittämäni.<br><br>
|
||||
Tämä peli on avointa lähdekoodia ja <a href="https://github.com/tobspr"
|
||||
target="_blank">Tobias Springer</a>in (siis minun) kehittämäni.<br><br>
|
||||
|
||||
Jos haluat avustaa, käy katsomassa <a href="<githublink>" target="_blank">shapez.io GitHubissa</a>.<br><br>
|
||||
|
||||
@ -1043,3 +1166,57 @@ tips:
|
||||
- Paina F4 nähdäksesi FPS laskurin ja virkistystaajuuden.
|
||||
- Press F4 kahdesti nähdäksesi hiiren ja kameran ruudun.
|
||||
- Klikkaa kiinnitetyn muodon vasemmalta puolelta irrottaaksesi sen.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
@ -11,11 +11,11 @@ steamPage:
|
||||
Et en plus, vous devrez aussi produire de plus en plus pour satisfaire la demande. La seule solution est de construire en plus grand ! Au début vous ne ferez que découper les formes, mais plus tard vous devrez les peindre — et pour ça vous devrez extraire et mélanger des couleurs !
|
||||
|
||||
En achetant le jeu sur Steam, vous aurez accès à la version complète, mais vous pouvez aussi jouer à une démo sur shapez.io et vous décider ensuite !
|
||||
what_others_say: What people say about shapez.io
|
||||
what_others_say: Ce que les gens pensent de 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
|
||||
notch_comment: Mince! Je devrais vraiment me coucher, Mais je crois que j'ai trouvé
|
||||
comment faire un ordinateur dans 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.
|
||||
@ -50,6 +50,7 @@ global:
|
||||
escape: ESC
|
||||
shift: MAJ
|
||||
space: ESPACE
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Version de démo
|
||||
intro: Achetez la version complète pour débloquer toutes les fonctionnalités !
|
||||
@ -70,6 +71,11 @@ mainMenu:
|
||||
savegameLevel: Niveau <x>
|
||||
savegameLevelUnknown: Niveau inconnu
|
||||
savegameUnnamed: Sans titre
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Vous aimez compacter et optimiser vos usines? Achetez le DLC
|
||||
sur Steam dés maintenant pour encore plus d'amusement!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -83,6 +89,9 @@ dialogs:
|
||||
viewUpdate: Voir les mises à jour
|
||||
showUpgrades: Montrer les améliorations
|
||||
showKeybindings: Montrer les raccourcis
|
||||
retry: Reesayer
|
||||
continue: Continuer
|
||||
playOffline: Jouer Hors-ligne
|
||||
importSavegameError:
|
||||
title: Erreur d’importation
|
||||
text: "Impossible d’importer votre sauvegarde :"
|
||||
@ -183,6 +192,67 @@ dialogs:
|
||||
title: Tutoriel disponible
|
||||
desc: Il y a un tutoriel vidéo pour ce niveau, mais il n’est disponible qu’en
|
||||
anglais. Voulez-vous le regarder ?
|
||||
editConstantProducer:
|
||||
title: Définir l'objet
|
||||
puzzleLoadFailed:
|
||||
title: Le chargement du Puzzle à échoué
|
||||
desc: "Malheuresement, le puzzle n'a pas pu être chargé:"
|
||||
submitPuzzle:
|
||||
title: Envoyer le Puzzle
|
||||
descName: "Donnez un nom à votre puzzle:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Mode hors-ligne
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Erreur de téléchargment
|
||||
desc: "Le téléchargement à échoué:"
|
||||
puzzleSubmitError:
|
||||
title: Erreur d'envoi
|
||||
desc: "L'envoi à échoué:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle envoyé
|
||||
desc: Félicitation! Votre puzzle à été envoyé et peut maintenant être joué.
|
||||
Vous pouvez maintenant le retrouver dans la section "Mes Puzzle".
|
||||
puzzleCreateOffline:
|
||||
title: Mode Hors-ligne
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Merci pour votre retour!
|
||||
desc: Le puzzle à été marqué.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Déplacer
|
||||
@ -204,6 +274,7 @@ ingame:
|
||||
clearSelection: Effacer la sélection
|
||||
pipette: Pipette
|
||||
switchLayers: Changer de calque
|
||||
clearBelts: Suprimer les rails
|
||||
colors:
|
||||
red: Rouge
|
||||
green: Vert
|
||||
@ -357,6 +428,44 @@ ingame:
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Convoyeurs, distributeurs et tunnels
|
||||
@ -574,6 +683,18 @@ buildings:
|
||||
name: Générateur d’objet
|
||||
description: Seulement disponible en mode bac à sable. Renvoie le signal du
|
||||
calque de câblage sur le calque normal.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Découpage de formes
|
||||
@ -1000,6 +1121,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: À propos de ce jeu
|
||||
body: >-
|
||||
@ -1101,3 +1226,57 @@ tips:
|
||||
- Appuyez sur F4 pour voir vos IPS et votre fréquence de rafraîchissement.
|
||||
- Appuyez deux fois sur F4 pour voir les coordonnées.
|
||||
- Cliquez sur une forme épinglée à gauche pour l’enlever.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -52,6 +52,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: SPACE
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Demo Verzija
|
||||
intro: Nabavi samostalnu igru kako bi otključao sve značajke!
|
||||
@ -71,6 +72,11 @@ mainMenu:
|
||||
savegameLevel: Nivo <x>
|
||||
savegameLevelUnknown: Nepoznati Nivo
|
||||
savegameUnnamed: Unnamed
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -84,6 +90,9 @@ dialogs:
|
||||
viewUpdate: Pogledaj ažuriranje
|
||||
showUpgrades: Pokaži Nadogradnje
|
||||
showKeybindings: Pokaži tipke
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: Greška prilikom uvoza
|
||||
text: "Neuspješan uvoz spremljene igre:"
|
||||
@ -181,6 +190,67 @@ dialogs:
|
||||
title: Tutorial Available
|
||||
desc: There is a tutorial video available for this level, but it is only
|
||||
available in English. Would you like to watch it?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Kretanje
|
||||
@ -202,6 +272,7 @@ ingame:
|
||||
clearSelection: Očisti odabir
|
||||
pipette: Pipeta
|
||||
switchLayers: Promijeni sloj
|
||||
clearBelts: Clear belts
|
||||
colors:
|
||||
red: Crvena
|
||||
green: Zelena
|
||||
@ -349,6 +420,44 @@ ingame:
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Trake, Distributer i Tuneli
|
||||
@ -553,6 +662,18 @@ buildings:
|
||||
name: Item Producer
|
||||
description: Available in sandbox mode only, outputs the given signal from the
|
||||
wires layer on the regular layer.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Rezanje Oblika
|
||||
@ -949,6 +1070,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: O Igri
|
||||
body: >-
|
||||
@ -1034,3 +1159,57 @@ tips:
|
||||
- Press F4 to show your FPS and Tick Rate.
|
||||
- Press F4 twice to show the tile of your mouse and camera.
|
||||
- You can click a pinned shape on the left side to unpin it.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
@ -50,6 +50,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: SZÓKÖZ
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Demó verzió
|
||||
intro: Vásárold meg az Önálló Verziót a teljes játékélményért!
|
||||
@ -69,6 +70,11 @@ mainMenu:
|
||||
savegameLevel: <x>. szint
|
||||
savegameLevelUnknown: Ismeretlen szint
|
||||
savegameUnnamed: Névtelen
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -82,6 +88,9 @@ dialogs:
|
||||
viewUpdate: Frissítés Megtekintése
|
||||
showUpgrades: Fejlesztések
|
||||
showKeybindings: Irányítás
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: Importálás Hiba
|
||||
text: "Nem sikerült importálni a mentésedet:"
|
||||
@ -182,6 +191,67 @@ dialogs:
|
||||
title: Oktatás Elérhető
|
||||
desc: Elérhető egy oktatóvideó ehhez a szinthez, de csak angol nyelven.
|
||||
Szeretnéd megnézni?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Mozgatás
|
||||
@ -203,6 +273,7 @@ ingame:
|
||||
clearSelection: Kijelölés megszüntetése
|
||||
pipette: Pipetta
|
||||
switchLayers: Réteg váltás
|
||||
clearBelts: Clear belts
|
||||
colors:
|
||||
red: Piros
|
||||
green: Zöld
|
||||
@ -352,6 +423,44 @@ ingame:
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Futószalagok, Elosztók & Alagutak
|
||||
@ -561,6 +670,18 @@ buildings:
|
||||
name: Létrehozó
|
||||
description: Csak Homokozó módban elérhető. Létrehozza a Vezeték rétegen
|
||||
beállított jelet a normál rétegen.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Alakzatok Vágása
|
||||
@ -972,6 +1093,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: A Játékról
|
||||
body: >-
|
||||
@ -1065,3 +1190,57 @@ tips:
|
||||
- Press F4 to show your FPS and Tick Rate.
|
||||
- Press F4 twice to show the tile of your mouse and camera.
|
||||
- You can click a pinned shape on the left side to unpin it.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
@ -17,8 +17,8 @@ steamPage:
|
||||
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.
|
||||
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
|
||||
@ -50,6 +50,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: SPACE
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Versi Demo
|
||||
intro: Dapatkan versi lengkap untuk membuka semua fitur!
|
||||
@ -69,6 +70,11 @@ mainMenu:
|
||||
savegameLevel: Level <x>
|
||||
savegameLevelUnknown: Level tidak diketahui
|
||||
savegameUnnamed: Tidak Dinamai
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -82,6 +88,9 @@ dialogs:
|
||||
viewUpdate: Tampilkan Update
|
||||
showUpgrades: Tunjukkan Tingkatan
|
||||
showKeybindings: Tunjukkan Tombol Pintas
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: Kesalahan pada Impor
|
||||
text: "Gagal memasukkan data simpanan kamu:"
|
||||
@ -185,6 +194,67 @@ dialogs:
|
||||
title: Tutorial Tersedia
|
||||
desc: Ada video tutorial yang tersedia untuk level ini, tetapi hanya dalam
|
||||
Bahasa Inggris. Apakah kamu ingin menontonnya?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Geser
|
||||
@ -206,6 +276,7 @@ ingame:
|
||||
clearSelection: Hapus pilihan
|
||||
pipette: Pipet
|
||||
switchLayers: Ganti lapisan
|
||||
clearBelts: Clear belts
|
||||
colors:
|
||||
red: Merah
|
||||
green: Hijau
|
||||
@ -358,6 +429,44 @@ ingame:
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Sabuk konveyor, Pembagi Arus & Terowongan
|
||||
@ -577,6 +686,18 @@ buildings:
|
||||
name: Pembuat Bentuk
|
||||
description: Hanya tersedia di dalam mode sandbox, mengeluarkan sinyal yang
|
||||
diberikan dari lapisan kabel ke lapisan biasa.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Memotong Bentuk
|
||||
@ -1008,6 +1129,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: Tentang permainan ini
|
||||
body: >-
|
||||
@ -1115,3 +1240,57 @@ tips:
|
||||
- Tekan F4 dua kali untuk menunjukkan ubin mouse dan kameramu.
|
||||
- Kamu bisa mengklik bentuk yang di-pin di sebelah kiri untuk tidak
|
||||
mem-pinnya lagi.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
@ -53,6 +53,7 @@ global:
|
||||
escape: ESC
|
||||
shift: MAIUSC
|
||||
space: SPAZIO
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Versione Demo
|
||||
intro: Ottieni la versione completa per sbloccare tutte le funzioni!
|
||||
@ -72,6 +73,11 @@ mainMenu:
|
||||
madeBy: Creato da <author-link>
|
||||
subreddit: Reddit
|
||||
savegameUnnamed: Senza nome
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -85,6 +91,9 @@ dialogs:
|
||||
viewUpdate: Mostra aggiornamento
|
||||
showUpgrades: Mostra miglioramenti
|
||||
showKeybindings: Mostra scorciatoie
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: Errore di importazione
|
||||
text: "Impossibile caricare il salvataggio:"
|
||||
@ -189,6 +198,67 @@ dialogs:
|
||||
title: Tutorial Disponibile
|
||||
desc: C'è un video tutorial per questo livello, ma è disponibile solo in
|
||||
Inglese. Vorresti dargli un'occhiata?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Sposta
|
||||
@ -210,6 +280,7 @@ ingame:
|
||||
clearSelection: Annulla selezione
|
||||
pipette: Contagocce
|
||||
switchLayers: Cambia livello
|
||||
clearBelts: Clear belts
|
||||
buildingPlacement:
|
||||
cycleBuildingVariants: Premi <key> per cambiare variante.
|
||||
hotkeyLabel: "Hotkey: <key>"
|
||||
@ -361,6 +432,44 @@ ingame:
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Nastri, distribuzione e tunnel
|
||||
@ -574,6 +683,18 @@ buildings:
|
||||
name: Generatore di oggetti
|
||||
description: Disponibile solo nella modalità sandbox, emette il segnale dal
|
||||
livello elettrico come oggetti sul livello normale.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Taglio forme
|
||||
@ -991,6 +1112,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: Riguardo questo gioco
|
||||
body: >-
|
||||
@ -1089,3 +1214,57 @@ tips:
|
||||
- Premi F4 due volte per mostrare la casella del cursore e della telecamera.
|
||||
- Puoi cliccare a sinistra di una forma fermata a schermo per rimuoverla
|
||||
dalla lista.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
@ -45,6 +45,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: SPACE
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: デモ版
|
||||
intro: スタンドアローン版を手に入れ、すべての機能をアンロックしましょう!
|
||||
@ -63,6 +64,11 @@ mainMenu:
|
||||
savegameLevel: レベル <x>
|
||||
savegameLevelUnknown: 不明なレベル
|
||||
savegameUnnamed: 無名のデータ
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -76,6 +82,9 @@ dialogs:
|
||||
viewUpdate: アップデートを見る
|
||||
showUpgrades: アップグレード表示
|
||||
showKeybindings: キー設定表示
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: インポートエラー
|
||||
text: "セーブデータのインポートに失敗しました:"
|
||||
@ -157,6 +166,67 @@ dialogs:
|
||||
tutorialVideoAvailableForeignLanguage:
|
||||
title: チュートリアル視聴可能
|
||||
desc: このレベルで利用できるチュートリアル動画がありますが、言語は英語です。確認しますか?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: マップ移動
|
||||
@ -178,6 +248,7 @@ ingame:
|
||||
clearSelection: 選択範囲をクリア
|
||||
pipette: スポイト
|
||||
switchLayers: レイヤーを変更
|
||||
clearBelts: Clear belts
|
||||
colors:
|
||||
red: 赤
|
||||
green: 緑
|
||||
@ -313,6 +384,44 @@ ingame:
|
||||
achievements:
|
||||
title: アチーブメント
|
||||
desc: 取り尽くせ!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: ベルト、分配機とトンネル
|
||||
@ -493,6 +602,18 @@ buildings:
|
||||
default:
|
||||
name: なんでも抽出機
|
||||
description: サンドボックスモードでのみ使用可能で、ワイヤレイヤーで与えられた信号の形状を通常レイヤーに出力します。
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: 形の切断
|
||||
@ -558,18 +679,21 @@ storyRewards:
|
||||
desc: <strong>回転機</strong>のバリエーションが利用可能になりました! 180°の回転ができるようになります!(サプライズ! :D)
|
||||
reward_wires_painter_and_levers:
|
||||
title: ワイヤ&着色機(四分割)
|
||||
desc: "<strong>ワイヤレイヤ</strong>が利用可能になりました: これは通常の レイヤーの上にある別のレイヤであり、多くの新しい要素があります!<br><br>
|
||||
まず最初に、<strong>四色着色機</strong>が利用可能になりました - 着色するスロットをワイヤレイヤで接続してください!<br><br>
|
||||
ワイヤレイヤに切り替えるには、<strong>E</strong>を押します。 <br><br>
|
||||
補足: 設定で<strong>ヒントを有効にする</strong>と、 ワイヤのチュートリアルが有効になります。"
|
||||
desc: "<strong>ワイヤレイヤ</strong>が利用可能になりました: これは通常の
|
||||
レイヤーの上にある別のレイヤであり、多くの新しい要素があります!<br><br>
|
||||
まず最初に、<strong>四色着色機</strong>が利用可能になりました -
|
||||
着色するスロットをワイヤレイヤで接続してください!<br><br>
|
||||
ワイヤレイヤに切り替えるには、<strong>E</strong>を押します。 <br><br> 補足:
|
||||
設定で<strong>ヒントを有効にする</strong>と、 ワイヤのチュートリアルが有効になります。"
|
||||
reward_filter:
|
||||
title: アイテムフィルタ
|
||||
desc: <strong>アイテムフィルタ</strong>が利用可能になりました! ワイヤレイヤの信号と一致するかどうかに応じて、アイテムを上側または右側の出力に分離します。<br><br>
|
||||
また、真偽値(0/1)信号を入力すれば全てのアイテムの通過・非通過を制御できます。
|
||||
reward_display:
|
||||
title: ディスプレイ
|
||||
desc: "<strong>ディスプレイ</strong>が利用可能になりました - ワイヤレイヤで信号を接続することで、その内容を表示できます!<br><br>
|
||||
補足: ベルトリーダーとストレージが最後に通過したアイテムを出力していることに気づきましたか? それをディスプレイに表示してみてください!"
|
||||
desc: "<strong>ディスプレイ</strong>が利用可能になりました -
|
||||
ワイヤレイヤで信号を接続することで、その内容を表示できます!<br><br> 補足:
|
||||
ベルトリーダーとストレージが最後に通過したアイテムを出力していることに気づきましたか? それをディスプレイに表示してみてください!"
|
||||
reward_constant_signal:
|
||||
title: 定数信号
|
||||
desc: <strong>定数信号</strong>がワイヤレイヤで利用可能になりました! これは例えば<strong>アイテムフィルタ</strong>に接続すると便利です。<br><br>
|
||||
@ -814,6 +938,10 @@ keybindings:
|
||||
rotateToDown: "回転: 下向きにする"
|
||||
rotateToRight: "回転: 右向きにする"
|
||||
rotateToLeft: "回転: 左向きにする"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: このゲームについて
|
||||
body: >-
|
||||
@ -860,9 +988,9 @@ tips:
|
||||
- 切断機は配置された向きを考慮せず、常に垂直に切断します。
|
||||
- ストレージは左側の出力を優先します。
|
||||
- 増築可能なデザインを作るために時間を使ってください。それだけの価値があります!
|
||||
- <b>SHIFT</b>を使用すると複数の建物を一度に配置できます。
|
||||
- Invest time to build repeatable designs - it's worth it!
|
||||
- <b>ALT</b>を押しながらベルトを設置すると、向きを逆転できます。
|
||||
- 効率が重要です!
|
||||
- You can hold <b>ALT</b> to invert the direction of placed belts.
|
||||
- ハブから遠くに離れるほど、形状資源はより複雑な形になります。
|
||||
- 機械の速度には上限があるので、最大効率を得るためには入力を分割してください。
|
||||
- 効率を最大化するために分配機/合流機を使用できます。
|
||||
@ -878,8 +1006,8 @@ tips:
|
||||
- モジュールがあれば、空間はただの認識に過ぎなくなる――生ある人間に対する気遣いだ。
|
||||
- 設計図としての工場を別に作っておくと、工場のモジュール化において重要な役割を果たします。
|
||||
- 混色機をよく見ると、色の混ぜ方が解ります。
|
||||
- <b>CTRL</b> + クリックで範囲選択ができます。
|
||||
- ハブに近すぎる設計物を作ると、のちの設計の邪魔になるかもしれません。
|
||||
- Have a closer look at the color mixer, and your questions will be answered.
|
||||
- Use <b>CTRL</b> + Click to select an area.
|
||||
- アップグレードリストの各形状の横にあるピンのアイコンは、その形状を画面左に固定表示します。
|
||||
- 三原色全てを混ぜ合わせると白になります!
|
||||
- マップは無限の広さがあります。臆せずに拡張してください。
|
||||
@ -893,3 +1021,58 @@ tips:
|
||||
- F4を押すことで、FPSとTickレートを表示できます。
|
||||
- F4を2回押すと、マウスとカメラの座標を表示できます。
|
||||
- 左のピン留めされた図形をクリックすると、固定を解除できます。
|
||||
- You can click a pinned shape on the left side to unpin it.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
@ -47,6 +47,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: SPACE
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: 체험판 버전
|
||||
intro: 정식 버전을 구매해서 모든 콘텐츠를 사용해 보세요!
|
||||
@ -66,6 +67,11 @@ mainMenu:
|
||||
madeBy: 제작 <author-link>
|
||||
subreddit: Reddit
|
||||
savegameUnnamed: 이름 없음
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: 확인
|
||||
@ -79,6 +85,9 @@ dialogs:
|
||||
viewUpdate: 업데이트 보기
|
||||
showUpgrades: 업그레이드 보기
|
||||
showKeybindings: 조작법 보기
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: 가져오기 오류
|
||||
text: "세이브 파일을 가져오지 못했습니다:"
|
||||
@ -163,6 +172,67 @@ dialogs:
|
||||
tutorialVideoAvailableForeignLanguage:
|
||||
title: 활성화된 튜토리얼
|
||||
desc: 현재 레벨에서 사용할 수 있는 튜토리얼 비디오가 있습니다! 허나 영어로만 제공될 것입니다. 보시겠습니까?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: 이동
|
||||
@ -184,6 +254,7 @@ ingame:
|
||||
clearSelection: 지우기
|
||||
pipette: 피펫
|
||||
switchLayers: 레이어 전환
|
||||
clearBelts: Clear belts
|
||||
buildingPlacement:
|
||||
cycleBuildingVariants: <key> 키를 눌러 변형 전환
|
||||
hotkeyLabel: "단축키: <key>"
|
||||
@ -322,6 +393,44 @@ ingame:
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: 벨트, 밸런서, 터널
|
||||
@ -506,6 +615,18 @@ buildings:
|
||||
default:
|
||||
name: 아이템 생성기
|
||||
description: 샌드박스 모드에서만 사용할 수 있는 아이템으로, 일반 레이어 위에 있는 전선 레이어에서 주어진 신호를 출력합니다.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: 절단기
|
||||
@ -765,8 +886,8 @@ settings:
|
||||
description: 기본적으로 활성화되어 있으며, 자원 패치에서 피펫 기능을 사용 시 즉시 추출기를 선택합니다.
|
||||
simplifiedBelts:
|
||||
title: 벨트 단순화 (못생김)
|
||||
description: 성능 향상을 위해 벨트를 가리킬 때를 제외한 모든 상황에서 벨트 아이템을 렌더링하지 않습니다. 이 기능을 사용할 할
|
||||
정도로 심각한 성능 문제가 일어나지 않는 한, 이 설정을 사용할 필요는 없습니다.
|
||||
description: 성능 향상을 위해 벨트를 가리킬 때를 제외한 모든 상황에서 벨트 아이템을 렌더링하지 않습니다. 이 기능을 사용할 정도로
|
||||
심각한 성능 문제가 일어나지 않는 한, 이 설정을 사용할 필요는 없습니다.
|
||||
enableMousePan:
|
||||
title: 화면 가장자리 패닝
|
||||
description: 커서를 화면 가장자리로 옮기면 스크롤되어 지도를 이동할 수 있습니다. 스크롤 속도는 이동 속도 설정에 따릅니다.
|
||||
@ -853,6 +974,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: 게임 정보
|
||||
body: >-
|
||||
@ -922,7 +1047,7 @@ tips:
|
||||
- 공장을 허브에 가까이 지으면 나중에 거대한 프로젝트에 방해가 될 수 있습니다.
|
||||
- 업그레이드 목록에 나타나는 도형 옆의 핀 아이콘을 누르면 화면에 고정됩니다.
|
||||
- 세 가지의 기본 색상을 모두 섞어서 흰색을 만드세요!
|
||||
- 당신에겐 무한한 땅이 있습니다. 굳이 공간을 적게 쓸 필요는 없으니, 맘껏 확장하세요!
|
||||
- 당신에겐 무한한 땅이 있습니다. 굳이 공간을 적게 쓸 필요는 없으니, 마음껏 확장하세요!
|
||||
- Factorio도 플레이 해보세요! 제가 가장 좋아하는 게임입니다.
|
||||
- 4단 절단기는 오른쪽 상단부터 시계 방향으로 차례로 절단합니다.
|
||||
- 메인 메뉴에서 세이브 파일을 다운로드 할 수 있습니다.
|
||||
@ -933,3 +1058,57 @@ tips:
|
||||
- F4 키를 누르면 FPS와 틱 비율을 표시합니다.
|
||||
- F4 키를 두번 누르면 마우스와 카메라의 타일을 표시합니다.
|
||||
- 왼쪽에 고정된 도형을 클릭하여 고정을 해제할 수 있습니다.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
@ -52,6 +52,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: SPACE
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Demo Version
|
||||
intro: Get the standalone to unlock all features!
|
||||
@ -71,6 +72,11 @@ mainMenu:
|
||||
madeBy: Made by <author-link>
|
||||
subreddit: Reddit
|
||||
savegameUnnamed: Unnamed
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -84,6 +90,9 @@ dialogs:
|
||||
viewUpdate: View Update
|
||||
showUpgrades: Show Upgrades
|
||||
showKeybindings: Show Keybindings
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: Import Error
|
||||
text: "Failed to import your savegame:"
|
||||
@ -180,6 +189,67 @@ dialogs:
|
||||
title: Tutorial Available
|
||||
desc: There is a tutorial video available for this level, but it is only
|
||||
available in English. Would you like to watch it?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Move
|
||||
@ -201,6 +271,7 @@ ingame:
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
switchLayers: Switch layers
|
||||
clearBelts: Clear belts
|
||||
buildingPlacement:
|
||||
cycleBuildingVariants: Press <key> to cycle variants.
|
||||
hotkeyLabel: "Hotkey: <key>"
|
||||
@ -348,6 +419,44 @@ ingame:
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Belts, Distributor & Tunnels
|
||||
@ -554,6 +663,18 @@ buildings:
|
||||
name: Item Producer
|
||||
description: Available in sandbox mode only, outputs the given signal from the
|
||||
wires layer on the regular layer.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Cutting Shapes
|
||||
@ -954,6 +1075,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: About this Game
|
||||
body: >-
|
||||
@ -1039,3 +1164,57 @@ tips:
|
||||
- Press F4 to show your FPS and Tick Rate.
|
||||
- Press F4 twice to show the tile of your mouse and camera.
|
||||
- You can click a pinned shape on the left side to unpin it.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
@ -53,6 +53,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: SPATIE
|
||||
loggingIn: Inloggen
|
||||
demoBanners:
|
||||
title: Demoversie
|
||||
intro: Koop de standalone om alle functies te ontgrendelen!
|
||||
@ -72,6 +73,11 @@ mainMenu:
|
||||
madeBy: Gemaakt door <author-link>
|
||||
subreddit: Reddit
|
||||
savegameUnnamed: Naamloos
|
||||
puzzleMode: Puzzel Modus
|
||||
back: Terug
|
||||
puzzleDlcText: Houd je van het comprimeren en optimaliseren van fabrieken? Verkrijg de puzzel
|
||||
DLC nu op Steam voor nog meer plezier!
|
||||
puzzleDlcWishlist: Voeg nu toe aan je verlanglijst!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -85,6 +91,9 @@ dialogs:
|
||||
viewUpdate: Zie Update
|
||||
showUpgrades: Zie Upgrades
|
||||
showKeybindings: Zie Sneltoetsen
|
||||
retry: Opnieuw Proberen
|
||||
continue: Ga Verder
|
||||
playOffline: Offline Spelen
|
||||
importSavegameError:
|
||||
title: Importeerfout
|
||||
text: "Het importeren van je savegame is mislukt:"
|
||||
@ -185,9 +194,64 @@ dialogs:
|
||||
desc: Er is een tutorial video beschikbaar voor dit level! Zou je het willen
|
||||
bekijken?
|
||||
tutorialVideoAvailableForeignLanguage:
|
||||
title: Tutorial Available
|
||||
title: Tutorial Beschikbaar
|
||||
desc: Er is een tutorial beschikbaar voor dit level, maar het is alleen
|
||||
beschikbaar in het Engels. Zou je het toch graag kijken?
|
||||
editConstantProducer:
|
||||
title: Item instellen
|
||||
puzzleLoadFailed:
|
||||
title: Puzzels kunnen niet geladen worden
|
||||
desc: "Helaas konden de puzzels niet worden geladen:"
|
||||
submitPuzzle:
|
||||
title: Puzzel indienen
|
||||
descName: "Geef je puzzel een naam:"
|
||||
descIcon: "Voer een unieke vorm sleutel in, die wordt weergegeven als het icoon van
|
||||
uw puzzel (je kunt ze <link>hier</link> genereren, of je kunt er een kiezen
|
||||
van de willekeurig voorgestelde vormen hieronder):"
|
||||
placeholderName: Puzzel Naam
|
||||
puzzleResizeBadBuildings:
|
||||
title: Formaat wijzigen niet mogelijk
|
||||
desc: Je kunt het gebied niet kleiner maken, want dan zouden sommige gebouwen buiten het gebied zijn.
|
||||
puzzleLoadError:
|
||||
title: Foute Puzzel
|
||||
desc: "De puzzel kon niet geladen worden:"
|
||||
offlineMode:
|
||||
title: Offline Modus
|
||||
desc: We konden de server niet bereiken, dus het spel moet offline modus draaien. Zorg ervoor dat je een actieve internetverbinding heeft.
|
||||
puzzleDownloadError:
|
||||
title: Download fout
|
||||
desc: "Downloaden van de puzzel is mislukt:"
|
||||
puzzleSubmitError:
|
||||
title: Indieningsfout
|
||||
desc: "Het indienen van je puzzel is mislukt:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzel Gepubliceerd
|
||||
desc: Gefeliciteerd! Je puzzel is gepubliceerd en kan nu worden gespeeld door
|
||||
anderen. Je kunt het nu vinden in het gedeelte "Mijn puzzels".
|
||||
puzzleCreateOffline:
|
||||
title: Offline Modus
|
||||
desc: Aangezien je offline bent, kan je je puzzels niet opslaan of publiceren. Wil je nog steeds doorgaan?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Aanbeveling
|
||||
desc: Ik raad <strong>sterk</strong> aan om het normale spel tot niveau 12 te spelen voordat je de puzzel-DLC probeert, anders kan je mechanica tegenkomen die je nog niet kent. Wil je toch doorgaan?
|
||||
puzzleShare:
|
||||
title: Vorm Sleutel Gekopieerd
|
||||
desc: De vorm sleutel van de puzzel (<key>) is naar je klembord gekopieerd! Het kan in het puzzelmenu worden ingevoerd om toegang te krijgen tot de puzzel.
|
||||
puzzleReport:
|
||||
title: Puzzel Rapporteren
|
||||
options:
|
||||
profane: Ongepast
|
||||
unsolvable: Niet oplosbaar
|
||||
trolling: Trollen
|
||||
puzzleReportComplete:
|
||||
title: Bedankt voor je feedback!
|
||||
desc: De puzzel is gemarkeerd.
|
||||
puzzleReportError:
|
||||
title: Melden mislukt
|
||||
desc: "Uw melding kan niet worden verwerkt:"
|
||||
puzzleLoadShortKey:
|
||||
title: Voer een vorm sleutel in
|
||||
desc: Voer de vorm sleutel van de puzzel in om deze te laden.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Beweeg speelveld
|
||||
@ -209,6 +273,7 @@ ingame:
|
||||
clearSelection: Annuleer selectie
|
||||
pipette: Pipet
|
||||
switchLayers: Wissel lagen
|
||||
clearBelts: Lopende banden leeg maken
|
||||
buildingPlacement:
|
||||
cycleBuildingVariants: Druk op <key> om tussen varianten te wisselen.
|
||||
hotkeyLabel: "Hotkey: <key>"
|
||||
@ -358,6 +423,39 @@ ingame:
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Gebied
|
||||
zoneWidth: Breedte
|
||||
zoneHeight: Hoogte
|
||||
trimZone: Bijsnijden
|
||||
clearItems: Items leeg maken
|
||||
share: Delen
|
||||
report: Rapporteren
|
||||
puzzleEditorControls:
|
||||
title: Puzzel Maker
|
||||
instructions:
|
||||
- 1. Plaats <strong>Constante Producenten</strong> om vormen en
|
||||
kleuren aan de speler te bieden
|
||||
- 2. Bouw een of meer vormen die de speler later en
|
||||
bezorg het aan een of meer <strong>Ontvangers</strong>
|
||||
- 3. Wanneer een Ontvanger een vorm ontvangt voor een bepaalde tijd, het <strong>slaat het op als een doel</strong> dat de speler later moet produceren (Aangegeven door de <strong>groene indicatoren</strong>).
|
||||
- 4. Klik de <strong>vergrendelknop</strong> om een gebouw uit te schakelen.
|
||||
- 5. Zodra je op review klikt, wordt je puzzel gevalideerd en jij
|
||||
kan het publiceren.
|
||||
- 6. Bij publicatie, <strong>worden alle gebouwen verwijderd</strong> behalve de Muren, Constante Producenten en Ontvangers - Dat is het deel dat de speler tenslotte voor zichzelf moet uitzoeken :)
|
||||
puzzleCompletion:
|
||||
title: Puzzel Voltooid!
|
||||
titleLike: "Klik op het hartje als je de puzzel leuk vond:"
|
||||
titleRating: Hoe moeilijk vond je de puzzel?
|
||||
titleRatingDesc: Je beoordeling helpt me om je in de toekomst betere suggesties te geven
|
||||
continueBtn: Blijf Spelen
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Auteur
|
||||
shortKey: Vorm Sleutel
|
||||
rating: Moeilijkheidsgraad
|
||||
averageDuration: Gem. Speel Tijd
|
||||
completionRate: Voltooiingspercentage
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Banden, Verdeler & Tunnels
|
||||
@ -562,6 +660,18 @@ buildings:
|
||||
name: Item Producent
|
||||
description: Alleen beschikbaar in sandbox-modus, geeft het gegeven signaal van
|
||||
de kabel laag op de reguliere laag.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constante Producent
|
||||
description: Voert constant een bepaalde vorm of kleur uit.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Ontvanger
|
||||
description: Lever vormen aan de Ontvanger om ze als doel te stellen.
|
||||
block:
|
||||
default:
|
||||
name: Blokkade
|
||||
description: Hiermee kan je een tegel blokkeren.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Vormen Knippen
|
||||
@ -979,6 +1089,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constante Producent
|
||||
goal_acceptor: Ontvanger
|
||||
block: Blokkade
|
||||
massSelectClear: Lopende banden leeg maken
|
||||
about:
|
||||
title: Over dit spel
|
||||
body: >-
|
||||
@ -1080,3 +1194,52 @@ tips:
|
||||
- Druk twee keer op F4 om de tegel van je muis en camera weer te geven.
|
||||
- Je kan aan de linkerkant op een vastgezette vorm klikken om deze los te
|
||||
maken.
|
||||
puzzleMenu:
|
||||
play: Spelen
|
||||
edit: Bewerken
|
||||
title: Puzzel Modus
|
||||
createPuzzle: Puzzel Maken
|
||||
loadPuzzle: Laden
|
||||
reviewPuzzle: Beoordeel en publiceer
|
||||
validatingPuzzle: Puzzel Valideren
|
||||
submittingPuzzle: Puzzel Indienen
|
||||
noPuzzles: Er zijn momenteel geen puzzels in deze sectie.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: Nieuw
|
||||
top-rated: Best Beoordeeld
|
||||
mine: Mijn Puzzels
|
||||
short: Kort
|
||||
easy: Makkelijk
|
||||
hard: Moeilijk
|
||||
completed: Voltooid
|
||||
validation:
|
||||
title: Ongeldige Puzzel
|
||||
noProducers: Plaats alstublieft een Constante Producent!
|
||||
noGoalAcceptors: Plaats alstublieft een Ontvanger!
|
||||
goalAcceptorNoItem: Een of meer Ontvangers hebben nog geen item toegewezen.
|
||||
Geef ze een vorm om een doel te stellen.
|
||||
goalAcceptorRateNotMet: Een of meerdere Ontvangers krijgen niet genoeg items.
|
||||
Zorg ervoor dat de indicatoren groen zijn voor alle acceptanten.
|
||||
buildingOutOfBounds: Een of meer gebouwen bevinden zich buiten het bebouwbare gebied. Vergroot het gebied of verwijder ze.
|
||||
autoComplete: Je puzzel voltooid zichzelf automatisch! Zorg ervoor dat je Constante Producenten niet rechtstreeks aan je Ontvangers leveren.
|
||||
backendErrors:
|
||||
ratelimit: Je voert je handelingen te vaak uit. Wacht alstublieft even.
|
||||
invalid-api-key: Kan niet communiceren met de servers, probeer alstublieft het spel te updaten/herstarten (ongeldige API-sleutel).
|
||||
unauthorized: Kan niet communiceren met de servers, probeer alstublieft het spel te updaten/herstarten (Onbevoegd).
|
||||
bad-token: Kan niet communiceren met de servers, probeer alstublieft het spel te updaten/herstarten (Ongeldige Token).
|
||||
bad-id: Ongeldige puzzel-ID.
|
||||
not-found: De opgegeven puzzel is niet gevonden.
|
||||
bad-category: De opgegeven categorie is niet gevonden.
|
||||
bad-short-key: De opgegeven vorm sleutel is ongeldig.
|
||||
profane-title: Je puzzel titel bevat groffe woorden.
|
||||
bad-title-too-many-spaces: Je puzzel titel is te kort.
|
||||
bad-shape-key-in-emitter: Een Ontvanger heeft een ongeldig item.
|
||||
bad-shape-key-in-goal: Een Constante Producent heeft een ongeldig item.
|
||||
no-emitters: Je puzzel heeft geen Constante Producenten.
|
||||
no-goals: Je puzzel heeft geen Ontvangers.
|
||||
short-key-already-taken: Deze vorm sleutel is al in gebruik, gebruik een andere.
|
||||
can-not-report-your-own-puzzle: Je kunt je eigen puzzel niet melden.
|
||||
bad-payload: Het verzoek bevat ongeldige gegevens.
|
||||
bad-building-placement: Je puzzel bevat ongeldig geplaatste gebouwen.
|
||||
timeout: Het verzoek is verlopen.
|
||||
|
@ -53,6 +53,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: MELLOMROM
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Demo Versjon
|
||||
intro: Skaff deg frittstående versjon for å åpne alle funksjoner!
|
||||
@ -73,6 +74,11 @@ mainMenu:
|
||||
madeBy: Laget av <author-link>
|
||||
subreddit: Reddit
|
||||
savegameUnnamed: Unnamed
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -86,6 +92,9 @@ dialogs:
|
||||
viewUpdate: Vis Oppdatering
|
||||
showUpgrades: Vis Oppgraderinger
|
||||
showKeybindings: Se Hurtigtaster
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: Importeringsfeil
|
||||
text: "Kunne ikke importere lagringsfilen:"
|
||||
@ -186,6 +195,67 @@ dialogs:
|
||||
title: Tutorial Available
|
||||
desc: There is a tutorial video available for this level, but it is only
|
||||
available in English. Would you like to watch it?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Beveg
|
||||
@ -207,6 +277,7 @@ ingame:
|
||||
clearSelection: Fjern Valgte
|
||||
pipette: Pipette
|
||||
switchLayers: Bytt lag
|
||||
clearBelts: Clear belts
|
||||
buildingPlacement:
|
||||
cycleBuildingVariants: Trykk <key> for å veksle mellom variantene.
|
||||
hotkeyLabel: "Hotkey: <key>"
|
||||
@ -354,6 +425,44 @@ ingame:
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Belter, Distributører & Tunneler
|
||||
@ -565,6 +674,18 @@ buildings:
|
||||
name: Item Producer
|
||||
description: Available in sandbox mode only, outputs the given signal from the
|
||||
wires layer on the regular layer.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Kutt Objekter
|
||||
@ -970,6 +1091,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: Om dette spillet
|
||||
body: >-
|
||||
@ -1055,3 +1180,57 @@ tips:
|
||||
- Press F4 to show your FPS and Tick Rate.
|
||||
- Press F4 twice to show the tile of your mouse and camera.
|
||||
- You can click a pinned shape on the left side to unpin it.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
@ -53,6 +53,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: SPACJA
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Wersja demonstracyjna
|
||||
intro: Kup pełną wersję gry, by odblokować więcej funkcji!
|
||||
@ -72,6 +73,11 @@ mainMenu:
|
||||
madeBy: Gra wykonana przez <author-link>
|
||||
subreddit: Reddit
|
||||
savegameUnnamed: Zapis bez nazwy
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -85,6 +91,9 @@ dialogs:
|
||||
viewUpdate: Zobacz aktualizację
|
||||
showUpgrades: Pokaż ulepszenia
|
||||
showKeybindings: Pokaż Klawiszologię
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: Błąd importowania
|
||||
text: "Nie udało się zaimportować twojego zapisu gry:"
|
||||
@ -187,6 +196,67 @@ dialogs:
|
||||
title: Dostępny tutorial
|
||||
desc: Dla tego poziomu dostępny jest video tutorial w języku angielskim. Chcesz
|
||||
go obejrzeć?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Ruch
|
||||
@ -208,6 +278,7 @@ ingame:
|
||||
clearSelection: Wyczyść zaznaczenie
|
||||
pipette: Wybierz obiekt z mapy
|
||||
switchLayers: Przełącz warstwy
|
||||
clearBelts: Clear belts
|
||||
colors:
|
||||
red: Czerwony
|
||||
green: Zielony
|
||||
@ -356,6 +427,44 @@ ingame:
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Taśmociągi, Dystrybutory & Tunele
|
||||
@ -573,6 +682,18 @@ buildings:
|
||||
name: Producent kształtów
|
||||
description: Dostępne tylko w trybie piaskownicy. Produkuje przedmioty z sygnału
|
||||
danego na warstwie przewodów na główną warstwę.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Przecinanie Kształtów
|
||||
@ -640,7 +761,7 @@ storyRewards:
|
||||
reward_storage:
|
||||
title: Magazyn
|
||||
desc: Właśnie odblokowałeś <strong>magazyn</strong> - Pozwala na przechowywanie
|
||||
przedmiotów, do pewnej ilości!<br><br> Prawe wyjście posiada większy
|
||||
przedmiotów, do pewnej ilości!<br><br> Lewe wyjście posiada większy
|
||||
piorytet, więc może być on użyty jako <strong>brama
|
||||
przepełnieniowa</strong>!
|
||||
reward_freeplay:
|
||||
@ -980,6 +1101,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: O Grze
|
||||
body: 'Ta gra jest open-source. Rozwijana jest przez <a
|
||||
@ -1078,3 +1203,57 @@ tips:
|
||||
- Naciśnij F4, by zobaczyć ilość FPS i tempo ticków.
|
||||
- Naciśnij F4 dwa razy, by zobaczyć kratkę twojej myszy i kamery.
|
||||
- Możesz kliknąć przypięty kształt po lewej stronie, by go odpiąć.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
@ -14,10 +14,10 @@ steamPage:
|
||||
|
||||
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: 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
|
||||
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.
|
||||
@ -52,6 +52,7 @@ global:
|
||||
escape: ESC
|
||||
shift: Shift
|
||||
space: Espaço
|
||||
loggingIn: Entrando
|
||||
demoBanners:
|
||||
title: Versão Demo
|
||||
intro: Compre a versão completa para desbloquear todos os recursos!
|
||||
@ -71,6 +72,11 @@ mainMenu:
|
||||
savegameLevel: Nível <x>
|
||||
savegameLevelUnknown: Nível desconhecido
|
||||
savegameUnnamed: Sem nome
|
||||
puzzleMode: Modo Puzzle
|
||||
back: Voltar
|
||||
puzzleDlcText: Você gosta de compactar e otimizar fábricas? Adquira a Puzzle
|
||||
DLC já disponível na Steam para se divertir ainda mais!
|
||||
puzzleDlcWishlist: Adicione já a sua lista de desejos!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -84,6 +90,9 @@ dialogs:
|
||||
viewUpdate: Atualizações
|
||||
showUpgrades: Melhorias
|
||||
showKeybindings: Controles
|
||||
retry: Tentar novamente
|
||||
continue: Continue
|
||||
playOffline: Jogar Offline
|
||||
importSavegameError:
|
||||
title: Erro de importação
|
||||
text: "Houve uma falha ao importar seu jogo salvo:"
|
||||
@ -181,6 +190,67 @@ dialogs:
|
||||
title: Tutorial disponível
|
||||
desc: Existe um tutorial em vídeo para esse nível, mas está disponível apenas em
|
||||
Inglês. Gostaria de assistí-lo?
|
||||
editConstantProducer:
|
||||
title: Selecionar Item
|
||||
puzzleLoadFailed:
|
||||
title: O carregamento dos desafios falhou
|
||||
desc: "Infelizmente os desafios não puderam ser carregados:"
|
||||
submitPuzzle:
|
||||
title: Enviar desafio
|
||||
descName: "Dê um nome ao seu desafio:"
|
||||
descIcon: "Por favor crie um código exclusivo, o qual será o ícone
|
||||
do seu Desafio (Você pode gera-los <link>aqui</link>, ou escolha um
|
||||
dos gerados aleatoriamente abaixo):"
|
||||
placeholderName: Nome do desafio
|
||||
puzzleResizeBadBuildings:
|
||||
title: Mudar o tamanho não é possível
|
||||
desc: Você não pode deixar a zona menor, porque algumas construções ficariam
|
||||
fora dela.
|
||||
puzzleLoadError:
|
||||
title: Desafio Ruim
|
||||
desc: "O desafio não pôde ser carregado:"
|
||||
offlineMode:
|
||||
title: Modo Offline
|
||||
desc: Não conseguimos nos conectar aos servidores, então o jogo terá que ser jogado no Modo Offline.
|
||||
Por favor garanta que você tenha uma conexão ativa com a internet.
|
||||
puzzleDownloadError:
|
||||
title: Erro no download
|
||||
desc: "Falha ao baixar o desafio:"
|
||||
puzzleSubmitError:
|
||||
title: Erro no envio
|
||||
desc: "Erro ao enviar seu desafio:"
|
||||
puzzleSubmitOk:
|
||||
title: Desafio publicado
|
||||
desc: Parabéns! Seu desafio foi publicado e pode ser acessado por
|
||||
outros jogadores. Você pode acha-lo na categoria "Meus Desafios".
|
||||
puzzleCreateOffline:
|
||||
title: Modo Offline
|
||||
desc: Como você está no Modo Offline, não será possível salvar e/ou publicar seus
|
||||
desafios. Você deseja continuar?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recomendação
|
||||
desc: Eu <strong>fortemente</strong> recomendo jogar o jogo normal até o nível 12
|
||||
antes de se aventurar na Puzzle DLC, senão você poderá encontrar
|
||||
mecânicas que ainda não foram introduzidas. Você ainda deseja continuar?
|
||||
puzzleShare:
|
||||
title: Código copiado
|
||||
desc: O código do desafio (<key>) foi copiado para sua área de transferência! Ele
|
||||
pode ser inserido no menu de desafios para acessar o desafio.
|
||||
puzzleReport:
|
||||
title: Denunciar Desafio
|
||||
options:
|
||||
profane: Ofensivo
|
||||
unsolvable: Impossível
|
||||
trolling: Antijogo
|
||||
puzzleReportComplete:
|
||||
title: Obrigado pelo seu feedback!
|
||||
desc: O desafio foi marcado.
|
||||
puzzleReportError:
|
||||
title: Falha ao denunciar
|
||||
desc: "Sua denúncia não pôde ser processada:"
|
||||
puzzleLoadShortKey:
|
||||
title: Insira código
|
||||
desc: Insira o código do desafio para carrega-lo.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Mover
|
||||
@ -202,6 +272,7 @@ ingame:
|
||||
clearSelection: Limpar Seleção
|
||||
pipette: Conta-Gotas
|
||||
switchLayers: Trocar Camadas
|
||||
clearBelts: Clear belts
|
||||
colors:
|
||||
red: Vermelho
|
||||
green: Verde
|
||||
@ -351,8 +422,45 @@ ingame:
|
||||
title: Me ajuda
|
||||
desc: Eu desenvolvo o jogo no meu tempo livre!
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
title: Conquistas
|
||||
desc: Consiga todas elas!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zona
|
||||
zoneWidth: Largura
|
||||
zoneHeight: Altura
|
||||
trimZone: Cortar
|
||||
clearItems: Limpar Items
|
||||
share: Compartilhar
|
||||
report: Denunciar
|
||||
puzzleEditorControls:
|
||||
title: Criador de Desafios
|
||||
instructions:
|
||||
- 1. Coloque <strong>Produtores Constantes</strong> para gerar itens e
|
||||
cores ao jogador
|
||||
- 2. Monte uma ou mais itens que você quer que o jogador produza e
|
||||
entregue em um ou mais <strong>Receptores de Objetivo</strong>
|
||||
- 3. Uma vez que um Receptor de Objetivo recebe uma item por uma certa quantidade de
|
||||
tempo, ele <strong>a salva como seu objetivo</strong> , o qual o jogador terá
|
||||
que produzir depois (Indicato pela <strong>insígnia verde</strong>).
|
||||
- 4. Clique no <strong>botao de travar</strong> de uma construção para desabilita-la.
|
||||
- 5. Uma vez que você clicou em revisar, seu desafio será validado e você
|
||||
poderá publica-lo.
|
||||
- 6. Quando seu desafio for publicado, <strong>todas as construções serão removidas</strong>
|
||||
exceto os Produtores Constantes e Receptores de Objetivo - Essa é a parte que
|
||||
o jogador terá que descobrir sozinho, por isso se chama desafio :)
|
||||
puzzleCompletion:
|
||||
title: Desafio Completo!
|
||||
titleLike: "Clique no coração se você gostou do desafio:"
|
||||
titleRating: O qual difícil foi esse desafio?
|
||||
titleRatingDesc: Sua avaliação me ajuda a te fazer sugestões melhores no futuro!
|
||||
continueBtn: Continuar jogando
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Autor
|
||||
shortKey: Código
|
||||
rating: Dificuldade
|
||||
averageDuration: Duração média
|
||||
completionRate: Taxa de sucesso
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Esteiras, Distribuidores e Túneis
|
||||
@ -569,6 +677,18 @@ buildings:
|
||||
name: Fabricante de Itens
|
||||
description: Disponível no modo sandbox apenas, envia o sinal recebido do plano
|
||||
de fios para o plano regular.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Produtor Constante
|
||||
description: Produz constantemente um item ou cor específica.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Receptor de Objetivo
|
||||
description: Entregue itens ao Receptor de Objetivo para os definir como o objetivo.
|
||||
block:
|
||||
default:
|
||||
name: Bloco
|
||||
description: Te permite bloquear um espaço.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Cortando formas
|
||||
@ -980,10 +1100,14 @@ keybindings:
|
||||
comparator: Comparador
|
||||
item_producer: Produtor de Itens (Sandbox)
|
||||
copyWireValue: "Fios: Copiar valor abaixo do cursor"
|
||||
rotateToUp: "Rotate: Point Up"
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
rotateToUp: "Rotação: Para cima"
|
||||
rotateToDown: "Rotação: Para baixo"
|
||||
rotateToRight: "Rotação: Para direita"
|
||||
rotateToLeft: "Rotação: Para esquerda"
|
||||
constant_producer: Produtor Constante
|
||||
goal_acceptor: Receptor de Objetivo
|
||||
block: Bloco
|
||||
massSelectClear: Limpar esteiras
|
||||
about:
|
||||
title: Sobre o jogo
|
||||
body: >-
|
||||
@ -1077,3 +1201,57 @@ tips:
|
||||
- Pressione F4 para mostrar seu FPS e taxa de tiques.
|
||||
- Pressione F4 duas vezes para mostrar o ladrilho do seu mouse e da câmera.
|
||||
- Você pode clicar em uma forma fixada na esquerda para tirá-la de lá.
|
||||
puzzleMenu:
|
||||
play: Jogar
|
||||
edit: Editar
|
||||
title: Modo Puzzle
|
||||
createPuzzle: Criar Desafio
|
||||
loadPuzzle: Carregar
|
||||
reviewPuzzle: Revisar e Publicar
|
||||
validatingPuzzle: Validando Desafio
|
||||
submittingPuzzle: Enviando Desafio
|
||||
noPuzzles: Não existem desafios nesta categoria atualmente.
|
||||
categories:
|
||||
levels: Níveis
|
||||
new: Novo
|
||||
top-rated: Melhor Avaliados
|
||||
mine: Meus Desafios
|
||||
short: Curto
|
||||
easy: Fácil
|
||||
hard: Difícil
|
||||
completed: Completados
|
||||
validation:
|
||||
title: Desafio inválido
|
||||
noProducers: Por favor coloque um Produtor Constante!
|
||||
noGoalAcceptors: Por favor coloque um Receptor de Objetivo!
|
||||
goalAcceptorNoItem: Um ou mais Receptores de Objetivo ainda não tiveram um item determinado.
|
||||
Entregue um item a ele para definir seu objetivo.
|
||||
goalAcceptorRateNotMet: Um ou mais Receptores de Objetivo não estão recebendo itens suficientes.
|
||||
Garanta que os indicadores estejam verdes para todos os Receptores.
|
||||
buildingOutOfBounds: Uma ou mais construções estão fora da área construível.
|
||||
Você pode aumentar a área ou removê-los.
|
||||
autoComplete: Seu desafio se completa sozinho! Por favor garanta que seus Produtores
|
||||
Constantes não estão entregando diretamente aos seus Receptores de Objetivo.
|
||||
backendErrors:
|
||||
ratelimit: Você está fazendo coisas muito rapidamente. Por favor espere um pouco.
|
||||
invalid-api-key: Falha ao comunicar com o backend, por favor tente
|
||||
atualizar/reiniciar o jogo (Chave API Inválida).
|
||||
unauthorized: Falha ao comunicar com o backend, por favor tente
|
||||
atualizar/reiniciar o jogo (Não autorizado).
|
||||
bad-token: Falha ao comunicar com o backend, por favor tente
|
||||
atualizar/reiniciar o jogo (Bad Token).
|
||||
bad-id: Indentificador de desafio inválido.
|
||||
not-found: O desafio não pôde ser achado.
|
||||
bad-category: A categoria não pôde ser achada.
|
||||
bad-short-key: O código é inválido.
|
||||
profane-title: O nome do seu desafio contém palavras proibidas.
|
||||
bad-title-too-many-spaces: O nome do seu desafio é muito curto.
|
||||
bad-shape-key-in-emitter: Um Produtor Constante contém um item inválido.
|
||||
bad-shape-key-in-goal: Um Receptor de Objetivo contém um item inválido.
|
||||
no-emitters: Seu desafio não contém nenhum Produtor Constante.
|
||||
no-goals: Seu desafio não contém nenhum Receptor de Objetivo.
|
||||
short-key-already-taken: Esse código já está sendo usado, por favor escolha outro.
|
||||
can-not-report-your-own-puzzle: Você não pode denunciar seu próprio desafio.
|
||||
bad-payload: O pedido contém dados inválidos.
|
||||
bad-building-placement: Seu desafio contém construções colocadas de forma inválida.
|
||||
timeout: Acabou o tempo do pedido.
|
||||
|
@ -15,12 +15,12 @@ steamPage:
|
||||
|
||||
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: 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.
|
||||
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
|
||||
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
|
||||
@ -53,6 +53,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: SPACE
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Versão Demo
|
||||
intro: Compra a versão completa para desbloqueares todas as funcionalidades!
|
||||
@ -73,6 +74,11 @@ mainMenu:
|
||||
madeBy: Criado por <author-link>
|
||||
subreddit: Reddit
|
||||
savegameUnnamed: Sem Nome
|
||||
puzzleMode: Modo Puzzle
|
||||
back: Voltar
|
||||
puzzleDlcText: Gostas de compactar e otimizar fábricas? Adquire agora o DLC Puzzle
|
||||
na Steam para ainda mais diversão!
|
||||
puzzleDlcWishlist: Lista de desejos agora!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -86,6 +92,9 @@ dialogs:
|
||||
viewUpdate: Ver Update
|
||||
showUpgrades: Mostrar Upgrades
|
||||
showKeybindings: Mostrar Atalhos
|
||||
retry: Tentar novamente
|
||||
continue: Continuar
|
||||
playOffline: Jogar Offline
|
||||
importSavegameError:
|
||||
title: Erro de importação
|
||||
text: "Erro ao importar o teu savegame:"
|
||||
@ -189,6 +198,67 @@ dialogs:
|
||||
title: Tutorial Disponível
|
||||
desc: Existe um vídeo de tutorial disponível para este nível, mas apenas está
|
||||
disponível em Inglês. Gostarias de o ver?
|
||||
editConstantProducer:
|
||||
title: Selecionar Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles falharam a carregar
|
||||
desc: "Infelizmente os puzzles não podem ser carregados:"
|
||||
submitPuzzle:
|
||||
title: Submeter Puzzle
|
||||
descName: "Dá um nome ao teu puzzle:"
|
||||
descIcon: "Por favor insere um pequeno código único que será a imagem do ícone
|
||||
da teu puzzle (Podes gerar o código <link>aqui</link>, ou escolher uma
|
||||
das seguintes sugestões aleatoriamente geradas.):"
|
||||
placeholderName: Título do Puzzle
|
||||
puzzleResizeBadBuildings:
|
||||
title: Não é possível alterar o tamanho
|
||||
desc: Não podes tornar a zona mais pequena, assim algumas das construções ficariam
|
||||
fora da zona.
|
||||
puzzleLoadError:
|
||||
title: Mau puzzle
|
||||
desc: "O puzzle falhou ao carregar:"
|
||||
offlineMode:
|
||||
title: Modo Offline
|
||||
desc: Não conseguimos correr os servidores, sendo assim o jogo tem de ser jogado em modo offline.
|
||||
Por favor assegura-te de que tens uma boa conexão de internet.
|
||||
puzzleDownloadError:
|
||||
title: Falha no Download
|
||||
desc: "Falha ao fazer o download do puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Erro ao submeter
|
||||
desc: "Falha ao submeter o teu puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Publicado
|
||||
desc: Parabéns! O teu puzzle foi publicado e agora pode ser jogado
|
||||
por outros jogadores. Agora podes encontrar o teu puzzle na zona "Meus puzzles".
|
||||
puzzleCreateOffline:
|
||||
title: Modo Offline
|
||||
desc: Como estás no modo offline, tu não poderás salvar e/ou publicar o
|
||||
teu puzzle. Mesmo assim queres continuar?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recomendação
|
||||
desc: Eu recomendo <strong>fortemente</strong> a jogares no modo normal até ao nível 12
|
||||
antes de tentares o "puzzle DLC", caso contrário poderás encontrar
|
||||
mecanicas às quais ainda não foste introduzido. Mesmo assim queres continuar?
|
||||
puzzleShare:
|
||||
title: Pequeno código copiado
|
||||
desc: O pequeno código do puzzle (<key>) foi copiado para a tua área de transferências!
|
||||
Poderá ser introduzido no menu puzzle para teres acesso ao puzzle.
|
||||
puzzleReport:
|
||||
title: Reportar Puzzle
|
||||
options:
|
||||
profane: Inapropriado
|
||||
unsolvable: Não solucionável
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Obrigado pelo teu feedback!
|
||||
desc: O puzzle foi sinalizado.
|
||||
puzzleReportError:
|
||||
title: Falha ao reportar
|
||||
desc: "Não foi possível proceder com o ter reporte:"
|
||||
puzzleLoadShortKey:
|
||||
title: Introduzir pequeno código
|
||||
desc: Introduz um pequeno código para o puzzle carregar.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Mover
|
||||
@ -210,6 +280,7 @@ ingame:
|
||||
clearSelection: Cancelar
|
||||
pipette: Pipeta
|
||||
switchLayers: Troca de camadas
|
||||
clearBelts: Limpar tapetes rolantes
|
||||
buildingPlacement:
|
||||
cycleBuildingVariants: Pressionar <key> para obter variações.
|
||||
hotkeyLabel: "Atalho: <key>"
|
||||
@ -358,8 +429,46 @@ ingame:
|
||||
title: Ajuda-me
|
||||
desc: Eu desenvolvo este jogo no meu tempo livre!
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
title: Conquistas
|
||||
desc: Tenta obtê-las todas!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zona
|
||||
zoneWidth: Largura
|
||||
zoneHeight: Altura
|
||||
trimZone: Aparar
|
||||
clearItems: Limpar Itens
|
||||
share: Partilhar
|
||||
report: Reportar
|
||||
puzzleEditorControls:
|
||||
title: Criador de Puzzle
|
||||
instructions:
|
||||
- 1. Coloca um <strong>Produtor Constante</strong> para fornecer formas e
|
||||
cores ao jogador
|
||||
- 2. Constrói uma ou mais formas que queiras que o jogador tenha de contruir mais tarde
|
||||
e a tenha de entregar a um ou mais <strong>Recetor de Objetivo</strong>
|
||||
- 3. Assim que o Recetor de Objetivo receba uma forma durante um certo espaço
|
||||
de tempo, ele <strong>guarda-a num objetivo</strong> que o jogador terá
|
||||
de produzir mais tarde (Indicatdo pelo <strong>distintivo verde</strong>).
|
||||
- 4. Clcica no <strong>botão de bloqueio</strong> numa construção para
|
||||
desátiva-lo.
|
||||
- 5. Assim que clicares em analisar, o teu puzzle será validado e poderás
|
||||
publicá-lo.
|
||||
- 6. Após publicado, <strong>todas as construções serão removidas</strong>
|
||||
excepto os Produtores e Recetores de Objetivo - Esta é a parte em que
|
||||
é suposto o jogador tentar descobrir como resolver o teu Puzzle :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completo!
|
||||
titleLike: "Clica no coração se gostaste do puzzle:"
|
||||
titleRating: Quão difícil achaste que foi o puzzle?
|
||||
titleRatingDesc: A tua avaliação ajudar-me-á a fazer melhores sugestões no futuro
|
||||
continueBtn: Continua a Jogar
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Autor
|
||||
shortKey: Pequeno Código
|
||||
rating: Grau de dificuldade
|
||||
averageDuration: Média de duração
|
||||
completionRate: Taxa de conclusão
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Tapetes, Distribuidores e Túneis
|
||||
@ -576,6 +685,18 @@ buildings:
|
||||
name: Produtor de Itens
|
||||
description: Disponível apenas no modo sandbox, produz o sinal dado na camada de
|
||||
fios na camada normal.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Produtor Constante
|
||||
description: Produz constantemente uma forma ou cor específica.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Recetor de Objetivo
|
||||
description: Entrega formas ao recetor de objetivo para defini-las como um objetivo.
|
||||
block:
|
||||
default:
|
||||
name: Bloqueador
|
||||
description: Permite-te bloquear uma quadrícula.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Corte de formas
|
||||
@ -990,6 +1111,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Produtor Constante
|
||||
goal_acceptor: Recetor de Objetivo
|
||||
block: Bloqueador
|
||||
massSelectClear: Limpar tapetes rolante
|
||||
about:
|
||||
title: Sobre o Jogo
|
||||
body: >-
|
||||
@ -1085,3 +1210,57 @@ tips:
|
||||
- Pressiona F4 para mostrar os teus FPS e Tick Rate.
|
||||
- Pressiona F4 duas vezes para mostrar a tile do teu rato e câmara.
|
||||
- Podes clicar numa forma afixada no lado direito para desafixa-la.
|
||||
puzzleMenu:
|
||||
play: Jogar
|
||||
edit: Editar
|
||||
title: Modo Puzzle
|
||||
createPuzzle: Criar Puzzle
|
||||
loadPuzzle: Carregar
|
||||
reviewPuzzle: Analisar e Publicar
|
||||
validatingPuzzle: A validar Puzzle
|
||||
submittingPuzzle: A submeter Puzzle
|
||||
noPuzzles: Não há atualmente puzzles nesta secção.
|
||||
categories:
|
||||
levels: Nivéis
|
||||
new: Novo
|
||||
top-rated: Melhor Avaliado
|
||||
mine: Meus Puzzles
|
||||
short: Pequeno
|
||||
easy: Fácil
|
||||
hard: Difícil
|
||||
completed: Completo
|
||||
validation:
|
||||
title: Puzzle Inválido
|
||||
noProducers: Por favor coloca um Produtor Constante!
|
||||
noGoalAcceptors: Por favor coloca um Recetor de Objetivo!
|
||||
goalAcceptorNoItem: Um ou mais Recetores de Objetivo ainda não tem itens atrbuídos.
|
||||
Entrega uma forma nele para definires um objetivo.
|
||||
goalAcceptorRateNotMet: Um ou mais Recetores de Objetivo não está a receber itens suficientes.
|
||||
Assegura-te de que tens o indicador verde em todos os Recetores.
|
||||
buildingOutOfBounds: Uma ou mais formas estão fora da área de construção.
|
||||
Ou aumentas a área ou removes esses itens.
|
||||
autoComplete: O teu Puzzle completa-se sozinho! Por favor assegura-te de que os teus
|
||||
Produtores Constantes não estão automaticamente direcionados para os Recetores de Objetivo.
|
||||
backendErrors:
|
||||
ratelimit: Estás a realizar as tuas ações demasiado rápido. Aguarda um pouco.
|
||||
invalid-api-key: Falha ao cominucar com o backend, por favor tenta
|
||||
atualizar/resetar o Jogo (Chave Api inválida).
|
||||
unauthorized: Falha ao cominucar com o backend, or favor tenta
|
||||
atualizar/resetar o Jogo (Não autorizado).
|
||||
bad-token: Falha ao cominucar com o backend, por favor tenta atualizar/resetar
|
||||
o Jogo (Mau Token).
|
||||
bad-id: Identificador de Puzzle inválido.
|
||||
not-found: O Puzzle pedido não foi encontrado.
|
||||
bad-category: A categoria pedida não foi encontrada.
|
||||
bad-short-key: O pequeno código inserido não é válido.
|
||||
profane-title: O título do teu Puzzle contém palavras impróprias.
|
||||
bad-title-too-many-spaces: O título do teu Puzzle é demasiado pequeno.
|
||||
bad-shape-key-in-emitter: Um Produtor Constante tem um item inválido.
|
||||
bad-shape-key-in-goal: Um Recetor de Objetivo tem um item inválido.
|
||||
no-emitters: O teu Puzzle não contém nenhum Produtor Constante.
|
||||
no-goals: O teu Puzzle não contém nenhum Recetor de Objetivo.
|
||||
short-key-already-taken: Este pequeno código já foi utilizado, por favor tenta outro.
|
||||
can-not-report-your-own-puzzle: Não podes reportar o teu próprio puzzle.
|
||||
bad-payload: O pedido contém informção inválida.
|
||||
bad-building-placement: O teu Puzzle contém construções posicionadas de forma inválida.
|
||||
timeout: O tempo do pedido esgotou.
|
||||
|
@ -53,6 +53,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: SPACE
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Versiunea Demo
|
||||
intro: Instalează versiunea Standalone pentru a debloca toate funcțiile!
|
||||
@ -73,6 +74,11 @@ mainMenu:
|
||||
madeBy: Făcut de <author-link>
|
||||
subreddit: Reddit
|
||||
savegameUnnamed: Fară nume
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -86,6 +92,9 @@ dialogs:
|
||||
viewUpdate: Vezi Update-ul
|
||||
showUpgrades: Vezi Upgrade-urile
|
||||
showKeybindings: Arată tastele configurate
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: Eroare la Importare
|
||||
text: "Încercarea de importare a eșuat:"
|
||||
@ -188,6 +197,67 @@ dialogs:
|
||||
title: Tutorial Available
|
||||
desc: There is a tutorial video available for this level, but it is only
|
||||
available in English. Would you like to watch it?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Move
|
||||
@ -209,6 +279,7 @@ ingame:
|
||||
clearSelection: Golește Secțiunea
|
||||
pipette: Pipette
|
||||
switchLayers: Switch layers
|
||||
clearBelts: Clear belts
|
||||
buildingPlacement:
|
||||
cycleBuildingVariants: Apasă <key> pentru a cicla variantele.
|
||||
hotkeyLabel: "Tasta: <key>"
|
||||
@ -357,6 +428,44 @@ ingame:
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Benzi, Distribuitor & Tunele
|
||||
@ -567,6 +676,18 @@ buildings:
|
||||
name: Item Producer
|
||||
description: Available in sandbox mode only, outputs the given signal from the
|
||||
wires layer on the regular layer.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Tăierea formelor
|
||||
@ -975,6 +1096,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: Despre acest joc
|
||||
body: >-
|
||||
@ -1060,3 +1185,57 @@ tips:
|
||||
- Press F4 to show your FPS and Tick Rate.
|
||||
- Press F4 twice to show the tile of your mouse and camera.
|
||||
- You can click a pinned shape on the left side to unpin it.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -53,6 +53,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: SPACE
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Demo Version
|
||||
intro: Get the standalone to unlock all features!
|
||||
@ -72,6 +73,11 @@ mainMenu:
|
||||
savegameLevel: Level <x>
|
||||
savegameLevelUnknown: Unknown Level
|
||||
savegameUnnamed: Unnamed
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -85,6 +91,9 @@ dialogs:
|
||||
viewUpdate: View Update
|
||||
showUpgrades: Show Upgrades
|
||||
showKeybindings: Show Keybindings
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: Import Error
|
||||
text: "Failed to import your savegame:"
|
||||
@ -182,6 +191,67 @@ dialogs:
|
||||
title: Tutorial Available
|
||||
desc: There is a tutorial video available for this level, but it is only
|
||||
available in English. Would you like to watch it?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Move
|
||||
@ -203,6 +273,7 @@ ingame:
|
||||
clearSelection: Clear selection
|
||||
pipette: Pipette
|
||||
switchLayers: Switch layers
|
||||
clearBelts: Clear belts
|
||||
colors:
|
||||
red: Red
|
||||
green: Green
|
||||
@ -350,6 +421,44 @@ ingame:
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Belts, Distributor & Tunnels
|
||||
@ -556,6 +665,18 @@ buildings:
|
||||
name: Item Producer
|
||||
description: Available in sandbox mode only, outputs the given signal from the
|
||||
wires layer on the regular layer.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Cutting Shapes
|
||||
@ -957,6 +1078,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: About this Game
|
||||
body: >-
|
||||
@ -1042,3 +1167,57 @@ tips:
|
||||
- Press F4 to show your FPS and Tick Rate.
|
||||
- Press F4 twice to show the tile of your mouse and camera.
|
||||
- You can click a pinned shape on the left side to unpin it.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
@ -52,6 +52,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: SPACE
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Demo Verzija
|
||||
intro: Nabavite punu igru kako biste otključali sve funkcije!
|
||||
@ -72,6 +73,11 @@ mainMenu:
|
||||
savegameLevel: Nivo <x>
|
||||
savegameLevelUnknown: Nepoznat Nivo
|
||||
savegameUnnamed: Unnamed
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -85,6 +91,9 @@ dialogs:
|
||||
viewUpdate: Pogledajte ažuriranje
|
||||
showUpgrades: Prikaži Nadogradnje
|
||||
showKeybindings: Prikaži podešavanje tastera
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: Greška prilikom uvoza
|
||||
text: "Neuspešan uvoz sačuvane igre:"
|
||||
@ -182,6 +191,67 @@ dialogs:
|
||||
title: Tutorial Available
|
||||
desc: There is a tutorial video available for this level, but it is only
|
||||
available in English. Would you like to watch it?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Kretanje
|
||||
@ -203,6 +273,7 @@ ingame:
|
||||
clearSelection: Očisti odabir
|
||||
pipette: Pipeta
|
||||
switchLayers: Promeni sloj
|
||||
clearBelts: Clear belts
|
||||
colors:
|
||||
red: Crvena
|
||||
green: Zelena
|
||||
@ -350,6 +421,44 @@ ingame:
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Trake, Delioci i Tuneli
|
||||
@ -554,6 +663,18 @@ buildings:
|
||||
name: Item Producer
|
||||
description: Available in sandbox mode only, outputs the given signal from the
|
||||
wires layer on the regular layer.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Rezanje Oblika
|
||||
@ -955,6 +1076,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: O Igri
|
||||
body: >-
|
||||
@ -1040,3 +1165,57 @@ tips:
|
||||
- Press F4 to show your FPS and Tick Rate.
|
||||
- Press F4 twice to show the tile of your mouse and camera.
|
||||
- You can click a pinned shape on the left side to unpin it.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
@ -52,6 +52,7 @@ global:
|
||||
escape: ESC
|
||||
shift: SKIFT
|
||||
space: MELLANSLAG
|
||||
loggingIn: Logging in
|
||||
demoBanners:
|
||||
title: Demo-version
|
||||
intro: Skaffa den fristående versionen för att låsa upp alla funktioner!
|
||||
@ -72,6 +73,11 @@ mainMenu:
|
||||
madeBy: Skapad av <author-link>
|
||||
subreddit: Reddit
|
||||
savegameUnnamed: Namnlöst
|
||||
puzzleMode: Puzzle Mode
|
||||
back: Back
|
||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
||||
DLC now on Steam for even more fun!
|
||||
puzzleDlcWishlist: Wishlist now!
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -85,6 +91,9 @@ dialogs:
|
||||
viewUpdate: Se uppdateringar
|
||||
showUpgrades: Visa uppgraderingar
|
||||
showKeybindings: Visa tangentbindingar
|
||||
retry: Retry
|
||||
continue: Continue
|
||||
playOffline: Play Offline
|
||||
importSavegameError:
|
||||
title: Importfel
|
||||
text: "Kunde inte importera sparfil:"
|
||||
@ -186,6 +195,67 @@ dialogs:
|
||||
title: Handledning Tillgänglig
|
||||
desc: Det finns en handledningsvideo tillgänglig för denna nivå, men den är bara
|
||||
tillgänglig på engelska. Vill du se den?
|
||||
editConstantProducer:
|
||||
title: Set Item
|
||||
puzzleLoadFailed:
|
||||
title: Puzzles failed to load
|
||||
desc: "Unfortunately the puzzles could not be loaded:"
|
||||
submitPuzzle:
|
||||
title: Submit Puzzle
|
||||
descName: "Give your puzzle a name:"
|
||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
||||
your puzzle (You can generate them <link>here</link>, or choose one
|
||||
of the randomly suggested shapes below):"
|
||||
placeholderName: Puzzle Title
|
||||
puzzleResizeBadBuildings:
|
||||
title: Resize not possible
|
||||
desc: You can't make the zone any smaller, because then some buildings would be
|
||||
outside the zone.
|
||||
puzzleLoadError:
|
||||
title: Bad Puzzle
|
||||
desc: "The puzzle failed to load:"
|
||||
offlineMode:
|
||||
title: Offline Mode
|
||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
||||
Please make sure you have an active internect connection.
|
||||
puzzleDownloadError:
|
||||
title: Download Error
|
||||
desc: "Failed to download the puzzle:"
|
||||
puzzleSubmitError:
|
||||
title: Submission Error
|
||||
desc: "Failed to submit your puzzle:"
|
||||
puzzleSubmitOk:
|
||||
title: Puzzle Published
|
||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
||||
others. You can now find it in the "My puzzles" section.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Mode
|
||||
desc: Since you are offline, you will not be able to save and/or publish your
|
||||
puzzle. Would you still like to continue?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Recommendation
|
||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
||||
before attempting the puzzle DLC, otherwise you may encounter
|
||||
mechanics not yet introduced. Do you still want to continue?
|
||||
puzzleShare:
|
||||
title: Short Key Copied
|
||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
||||
can be entered in the puzzle menu to access the puzzle.
|
||||
puzzleReport:
|
||||
title: Report Puzzle
|
||||
options:
|
||||
profane: Profane
|
||||
unsolvable: Not solvable
|
||||
trolling: Trolling
|
||||
puzzleReportComplete:
|
||||
title: Thank you for your feedback!
|
||||
desc: The puzzle has been flagged.
|
||||
puzzleReportError:
|
||||
title: Failed to report
|
||||
desc: "Your report could not get processed:"
|
||||
puzzleLoadShortKey:
|
||||
title: Enter short key
|
||||
desc: Enter the short key of the puzzle to load it.
|
||||
ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Flytta
|
||||
@ -207,6 +277,7 @@ ingame:
|
||||
clearSelection: Rensa vald
|
||||
pipette: Pipett
|
||||
switchLayers: Byt lager
|
||||
clearBelts: Clear belts
|
||||
buildingPlacement:
|
||||
cycleBuildingVariants: Tryck ned <key> För att bläddra igenom varianter.
|
||||
hotkeyLabel: "Snabbtangent: <key>"
|
||||
@ -354,6 +425,44 @@ ingame:
|
||||
achievements:
|
||||
title: Achievements
|
||||
desc: Hunt them all!
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
zoneHeight: Height
|
||||
trimZone: Trim
|
||||
clearItems: Clear Items
|
||||
share: Share
|
||||
report: Report
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Creator
|
||||
instructions:
|
||||
- 1. Place <strong>Constant Producers</strong> to provide shapes and
|
||||
colors to the player
|
||||
- 2. Build one or more shapes you want the player to build later and
|
||||
deliver it to one or more <strong>Goal Acceptors</strong>
|
||||
- 3. Once a Goal Acceptor receives a shape for a certain amount of
|
||||
time, it <strong>saves it as a goal</strong> that the player must
|
||||
produce later (Indicated by the <strong>green badge</strong>).
|
||||
- 4. Click the <strong>lock button</strong> on a building to disable
|
||||
it.
|
||||
- 5. Once you click review, your puzzle will be validated and you
|
||||
can publish it.
|
||||
- 6. Upon release, <strong>all buildings will be removed</strong>
|
||||
except for the Producers and Goal Acceptors - That's the part that
|
||||
the player is supposed to figure out for themselves, after all :)
|
||||
puzzleCompletion:
|
||||
title: Puzzle Completed!
|
||||
titleLike: "Click the heart if you liked the puzzle:"
|
||||
titleRating: How difficult did you find the puzzle?
|
||||
titleRatingDesc: Your rating will help me to make you better suggestions in the future
|
||||
continueBtn: Keep Playing
|
||||
menuBtn: Menu
|
||||
puzzleMetadata:
|
||||
author: Author
|
||||
shortKey: Short Key
|
||||
rating: Difficulty score
|
||||
averageDuration: Avg. Duration
|
||||
completionRate: Completion rate
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Rullband, Distributörer & Tunnlar
|
||||
@ -559,6 +668,18 @@ buildings:
|
||||
name: Item Producer
|
||||
description: Endast tillgänglig i sandlådeläge, avger en given signal från
|
||||
kabellagret till det vanliga lagret.
|
||||
constant_producer:
|
||||
default:
|
||||
name: Constant Producer
|
||||
description: Constantly outputs a specified shape or color.
|
||||
goal_acceptor:
|
||||
default:
|
||||
name: Goal Acceptor
|
||||
description: Deliver shapes to the goal acceptor to set them as a goal.
|
||||
block:
|
||||
default:
|
||||
name: Block
|
||||
description: Allows you to block a tile.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Att klippa former
|
||||
@ -965,6 +1086,10 @@ keybindings:
|
||||
rotateToDown: "Rotate: Point Down"
|
||||
rotateToRight: "Rotate: Point Right"
|
||||
rotateToLeft: "Rotate: Point Left"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
about:
|
||||
title: Om detta spel
|
||||
body: >-
|
||||
@ -1050,3 +1175,57 @@ tips:
|
||||
- Press F4 to show your FPS and Tick Rate.
|
||||
- Press F4 twice to show the tile of your mouse and camera.
|
||||
- You can click a pinned shape on the left side to unpin it.
|
||||
puzzleMenu:
|
||||
play: Play
|
||||
edit: Edit
|
||||
title: Puzzle Mode
|
||||
createPuzzle: Create Puzzle
|
||||
loadPuzzle: Load
|
||||
reviewPuzzle: Review & Publish
|
||||
validatingPuzzle: Validating Puzzle
|
||||
submittingPuzzle: Submitting Puzzle
|
||||
noPuzzles: There are currently no puzzles in this section.
|
||||
categories:
|
||||
levels: Levels
|
||||
new: New
|
||||
top-rated: Top Rated
|
||||
mine: My Puzzles
|
||||
short: Short
|
||||
easy: Easy
|
||||
hard: Hard
|
||||
completed: Completed
|
||||
validation:
|
||||
title: Invalid Puzzle
|
||||
noProducers: Please place a Constant Producer!
|
||||
noGoalAcceptors: Please place a Goal Acceptor!
|
||||
goalAcceptorNoItem: One or more Goal Acceptors have not yet assigned an item.
|
||||
Deliver a shape to them to set a goal.
|
||||
goalAcceptorRateNotMet: One or more Goal Acceptors are not getting enough items.
|
||||
Make sure that the indicators are green for all acceptors.
|
||||
buildingOutOfBounds: One or more buildings are outside of the buildable area.
|
||||
Either increase the area or remove them.
|
||||
autoComplete: Your puzzle autocompletes itself! Please make sure your constant
|
||||
producers are not directly delivering to your goal acceptors.
|
||||
backendErrors:
|
||||
ratelimit: You are performing your actions too frequent. Please wait a bit.
|
||||
invalid-api-key: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Invalid Api Key).
|
||||
unauthorized: Failed to communicate with the backend, please try to
|
||||
update/restart the game (Unauthorized).
|
||||
bad-token: Failed to communicate with the backend, please try to update/restart
|
||||
the game (Bad Token).
|
||||
bad-id: Invalid puzzle identifier.
|
||||
not-found: The given puzzle could not be found.
|
||||
bad-category: The given category could not be found.
|
||||
bad-short-key: The given short key is invalid.
|
||||
profane-title: Your puzzle title contains profane words.
|
||||
bad-title-too-many-spaces: Your puzzle title is too short.
|
||||
bad-shape-key-in-emitter: A constant producer has an invalid item.
|
||||
bad-shape-key-in-goal: A goal acceptor has an invalid item.
|
||||
no-emitters: Your puzzle does not contain any constant producers.
|
||||
no-goals: Your puzzle does not contain any goal acceptors.
|
||||
short-key-already-taken: This short key is already taken, please use another one.
|
||||
can-not-report-your-own-puzzle: You can not report your own puzzle.
|
||||
bad-payload: The request contains invalid data.
|
||||
bad-building-placement: Your puzzle contains invalid placed buildings.
|
||||
timeout: The request timed out.
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user