mirror of
https://github.com/tobspr/shapez.io.git
synced 2025-06-13 13:04:03 +00:00
Merge branch 'master' into patch-5
This commit is contained in:
commit
408fbbc2df
@ -50,7 +50,7 @@ If you want to add a new feature or in generally contribute I recommend to get i
|
||||
|
||||
### Code
|
||||
|
||||
The game is based on a custom engine which itself is based on the YORG.io 3 game egine (Actually it shares almost the same core).
|
||||
The game is based on a custom engine which itself is based on the YORG.io 3 game engine (Actually it shares almost the same core).
|
||||
The code within the engine is relatively clean with some code for the actual game on top being hacky.
|
||||
|
||||
This project is based on ES5. Some ES2015 features are used but most of them are too slow, especially when polyfilled. For example, `Array.prototype.forEach` is only used within non-critical loops since its slower than a plain for loop.
|
||||
|
@ -47,7 +47,6 @@
|
||||
"query-string": "^6.8.1",
|
||||
"rusha": "^0.8.13",
|
||||
"serialize-error": "^3.0.0",
|
||||
"sloc": "^0.2.1",
|
||||
"strictdom": "^1.0.1",
|
||||
"string-replace-webpack-plugin": "^0.1.3",
|
||||
"terser-webpack-plugin": "^1.1.0",
|
||||
|
@ -1904,13 +1904,6 @@ async@~1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-1.0.0.tgz#f8fc04ca3a13784ade9e1641af98578cfbd647a9"
|
||||
integrity sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=
|
||||
|
||||
async@~2.1.4:
|
||||
version "2.1.5"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc"
|
||||
integrity sha1-5YfGhYCZSsZ/xW/4bTrFa9voELw=
|
||||
dependencies:
|
||||
lodash "^4.14.0"
|
||||
|
||||
asynckit@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
||||
@ -2948,13 +2941,6 @@ cli-cursor@^2.1.0:
|
||||
dependencies:
|
||||
restore-cursor "^2.0.0"
|
||||
|
||||
cli-table@^0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23"
|
||||
integrity sha1-9TsFJmqLGguTSz0IIebi3FkUriM=
|
||||
dependencies:
|
||||
colors "1.0.3"
|
||||
|
||||
cli-width@^2.0.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
|
||||
@ -3119,7 +3105,7 @@ color@^3.0.0:
|
||||
color-convert "^1.9.1"
|
||||
color-string "^1.5.2"
|
||||
|
||||
colors@1.0.3, colors@1.0.x:
|
||||
colors@1.0.x:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
|
||||
integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=
|
||||
@ -3163,13 +3149,6 @@ commander@~2.8.1:
|
||||
dependencies:
|
||||
graceful-readlink ">= 1.0.0"
|
||||
|
||||
commander@~2.9.0:
|
||||
version "2.9.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
|
||||
integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=
|
||||
dependencies:
|
||||
graceful-readlink ">= 1.0.0"
|
||||
|
||||
commondir@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
|
||||
@ -8345,7 +8324,7 @@ lodash@^3.0.1:
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
|
||||
integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=
|
||||
|
||||
lodash@^4.0.0, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.3.0, lodash@~4.17.10:
|
||||
lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.3.0, lodash@~4.17.10:
|
||||
version "4.17.15"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
|
||||
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
|
||||
@ -11203,7 +11182,7 @@ readable-stream@^3.0.2, readable-stream@^3.1.1:
|
||||
string_decoder "^1.1.1"
|
||||
util-deprecate "^1.0.1"
|
||||
|
||||
readdirp@^2.1.0, readdirp@^2.2.1:
|
||||
readdirp@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
|
||||
integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
|
||||
@ -12027,16 +12006,6 @@ slice-ansi@^2.1.0:
|
||||
astral-regex "^1.0.0"
|
||||
is-fullwidth-code-point "^2.0.0"
|
||||
|
||||
sloc@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/sloc/-/sloc-0.2.1.tgz#42ad891e76838c1a22bbd8483468e9d74c7f531e"
|
||||
integrity sha512-8XJnwCFR4DatLz1s0nGFe6IJPJ+5pjRFhoBuBKq8SLgFI40eD7ak6jOXpzeG0tmIpyOc1zCs9bjKAxMFm1451A==
|
||||
dependencies:
|
||||
async "~2.1.4"
|
||||
cli-table "^0.3.1"
|
||||
commander "~2.9.0"
|
||||
readdirp "^2.1.0"
|
||||
|
||||
snapdragon-node@^2.0.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
|
||||
|
@ -52,7 +52,6 @@
|
||||
"query-string": "^6.8.1",
|
||||
"rusha": "^0.8.13",
|
||||
"serialize-error": "^3.0.0",
|
||||
"sloc": "^0.2.1",
|
||||
"strictdom": "^1.0.1",
|
||||
"string-replace-webpack-plugin": "^0.1.3",
|
||||
"terser-webpack-plugin": "^1.1.0",
|
||||
@ -96,6 +95,7 @@
|
||||
"sass-unused": "^0.3.0",
|
||||
"speed-measure-webpack-plugin": "^1.3.1",
|
||||
"strip-json-comments": "^3.0.1",
|
||||
"trim": "^0.0.1"
|
||||
"trim": "^0.0.1",
|
||||
"yarn": "^1.22.4"
|
||||
}
|
||||
}
|
||||
|
@ -158,7 +158,9 @@ export class AtlasSprite extends BaseSprite {
|
||||
const scale = parameters.desiredAtlasScale;
|
||||
const link = this.linksByResolution[scale];
|
||||
|
||||
assert(link, "Link not known: " + scale + " (having " + Object.keys(this.linksByResolution) + ")");
|
||||
if (!link) {
|
||||
assert(false, `Link not known: ${scale} (having ${Object.keys(this.linksByResolution)})`);
|
||||
}
|
||||
|
||||
const scaleW = w / link.w;
|
||||
const scaleH = h / link.h;
|
||||
|
@ -183,6 +183,11 @@ export class ShapeDefinition extends BasicSerializableObject {
|
||||
*/
|
||||
static isValidShortKeyInternal(key) {
|
||||
const sourceLayers = key.split(":");
|
||||
|
||||
if (sourceLayers.length === 0 || sourceLayers.length > 4) {
|
||||
return false;
|
||||
}
|
||||
|
||||
let layers = [];
|
||||
for (let i = 0; i < sourceLayers.length; ++i) {
|
||||
const text = sourceLayers[i];
|
||||
@ -221,15 +226,12 @@ export class ShapeDefinition extends BasicSerializableObject {
|
||||
}
|
||||
}
|
||||
|
||||
if (!anyFilled) {
|
||||
// Empty layer
|
||||
if (!anyFilled && i === sourceLayers.length - 1) {
|
||||
// Topmost layer isn't allowed being empty
|
||||
return false;
|
||||
}
|
||||
layers.push(quads);
|
||||
}
|
||||
|
||||
if (layers.length === 0 || layers.length > 4) {
|
||||
return false;
|
||||
layers.push(quads);
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -447,23 +449,23 @@ export class ShapeDefinition extends BasicSerializableObject {
|
||||
*/
|
||||
cloneFilteredByQuadrants(includeQuadrants) {
|
||||
const newLayers = this.internalCloneLayers();
|
||||
let lastNonEmptyLayer = -1;
|
||||
for (let layerIndex = 0; layerIndex < newLayers.length; ++layerIndex) {
|
||||
const quadrants = newLayers[layerIndex];
|
||||
let anyContents = false;
|
||||
for (let quadrantIndex = 0; quadrantIndex < 4; ++quadrantIndex) {
|
||||
if (includeQuadrants.indexOf(quadrantIndex) < 0) {
|
||||
quadrants[quadrantIndex] = null;
|
||||
} else if (quadrants[quadrantIndex]) {
|
||||
anyContents = true;
|
||||
lastNonEmptyLayer = layerIndex;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check if the layer is entirely empty
|
||||
if (!anyContents) {
|
||||
newLayers.splice(layerIndex, 1);
|
||||
layerIndex -= 1;
|
||||
}
|
||||
// Remove top most empty layers which aren't needed anymore
|
||||
if (lastNonEmptyLayer !== newLayers.length - 1) {
|
||||
newLayers.splice(lastNonEmptyLayer + 1);
|
||||
}
|
||||
|
||||
return new ShapeDefinition({ layers: newLayers });
|
||||
}
|
||||
|
||||
@ -513,57 +515,68 @@ export class ShapeDefinition extends BasicSerializableObject {
|
||||
* @param {ShapeDefinition} definition
|
||||
*/
|
||||
cloneAndStackWith(definition) {
|
||||
const newLayers = this.internalCloneLayers();
|
||||
|
||||
if (this.isEntirelyEmpty() || definition.isEntirelyEmpty()) {
|
||||
assert(false, "Can not stack entirely empty definition");
|
||||
}
|
||||
|
||||
// Put layer for layer on top
|
||||
for (let i = 0; i < definition.layers.length; ++i) {
|
||||
const layerToAdd = definition.layers[i];
|
||||
const bottomShapeLayers = this.layers;
|
||||
const bottomShapeHighestLayerByQuad = [-1, -1, -1, -1];
|
||||
|
||||
// On which layer we can merge this upper layer
|
||||
let mergeOnLayerIndex = null;
|
||||
|
||||
// Go from top to bottom and check if there is anything intercepting it
|
||||
for (let k = newLayers.length - 1; k >= 0; --k) {
|
||||
const lowerLayer = newLayers[k];
|
||||
|
||||
let canMerge = true;
|
||||
for (let quadrantIndex = 0; quadrantIndex < 4; ++quadrantIndex) {
|
||||
const upperItem = layerToAdd[quadrantIndex];
|
||||
const lowerItem = lowerLayer[quadrantIndex];
|
||||
|
||||
if (upperItem && lowerItem) {
|
||||
// so, we can't merge it because two items conflict
|
||||
canMerge = false;
|
||||
break;
|
||||
for (let layer = bottomShapeLayers.length - 1; layer >= 0; --layer) {
|
||||
const shapeLayer = bottomShapeLayers[layer];
|
||||
for (let quad = 0; quad < 4; ++quad) {
|
||||
const shapeQuad = shapeLayer[quad];
|
||||
if (shapeQuad !== null && bottomShapeHighestLayerByQuad[quad] < layer) {
|
||||
bottomShapeHighestLayerByQuad[quad] = layer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If we can merge it, store it - since we go from top to bottom
|
||||
// we can simply override it
|
||||
if (canMerge) {
|
||||
mergeOnLayerIndex = k;
|
||||
const topShapeLayers = definition.layers;
|
||||
const topShapeLowestLayerByQuad = [4, 4, 4, 4];
|
||||
|
||||
for (let layer = 0; layer < topShapeLayers.length; ++layer) {
|
||||
const shapeLayer = topShapeLayers[layer];
|
||||
for (let quad = 0; quad < 4; ++quad) {
|
||||
const shapeQuad = shapeLayer[quad];
|
||||
if (shapeQuad !== null && topShapeLowestLayerByQuad[quad] > layer) {
|
||||
topShapeLowestLayerByQuad[quad] = layer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (mergeOnLayerIndex !== null) {
|
||||
// Simply merge using an OR mask
|
||||
for (let quadrantIndex = 0; quadrantIndex < 4; ++quadrantIndex) {
|
||||
newLayers[mergeOnLayerIndex][quadrantIndex] =
|
||||
newLayers[mergeOnLayerIndex][quadrantIndex] || layerToAdd[quadrantIndex];
|
||||
/**
|
||||
* We want to find the number `layerToMergeAt` such that when the top shape is placed at that
|
||||
* layer, the smallest gap between shapes is only 1. Instead of doing a guess-and-check method to
|
||||
* find the appropriate layer, we just calculate all the gaps assuming a merge at layer 0, even
|
||||
* though they go negative, and calculating the number to add to it so the minimum gap is 1 (ends
|
||||
* up being 1 - minimum).
|
||||
*/
|
||||
const gapsBetweenShapes = [];
|
||||
for (let quad = 0; quad < 4; ++quad) {
|
||||
gapsBetweenShapes.push(topShapeLowestLayerByQuad[quad] - bottomShapeHighestLayerByQuad[quad]);
|
||||
}
|
||||
} else {
|
||||
// Add new layer
|
||||
newLayers.push(layerToAdd);
|
||||
const smallestGapBetweenShapes = Math.min(...gapsBetweenShapes);
|
||||
// Can't merge at a layer lower than 0
|
||||
const layerToMergeAt = Math.max(1 - smallestGapBetweenShapes, 0);
|
||||
|
||||
const mergedLayers = this.internalCloneLayers();
|
||||
for (let layer = mergedLayers.length; layer < layerToMergeAt + topShapeLayers.length; ++layer) {
|
||||
mergedLayers.push([null, null, null, null]);
|
||||
}
|
||||
|
||||
for (let layer = 0; layer < topShapeLayers.length; ++layer) {
|
||||
const layerMergingAt = layerToMergeAt + layer;
|
||||
const bottomShapeLayer = mergedLayers[layerMergingAt];
|
||||
const topShapeLayer = topShapeLayers[layer];
|
||||
for (let quad = 0; quad < 4; quad++) {
|
||||
bottomShapeLayer[quad] = bottomShapeLayer[quad] || topShapeLayer[quad];
|
||||
}
|
||||
}
|
||||
|
||||
newLayers.splice(4);
|
||||
mergedLayers.splice(4);
|
||||
|
||||
return new ShapeDefinition({ layers: newLayers });
|
||||
return new ShapeDefinition({ layers: mergedLayers });
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -17,14 +17,20 @@
|
||||
#
|
||||
# If you want to add a new language, ask me in the Discord and I will setup
|
||||
# the basic structure so the game also detects it.
|
||||
#
|
||||
# Ґлосарій:
|
||||
# map мапа
|
||||
# keybinds гарячі клавіши
|
||||
# upgrade поліпшення
|
||||
# marker позначка
|
||||
# area ділянка
|
||||
# hub
|
||||
|
||||
steamPage:
|
||||
# This is the short text appearing on the steam page
|
||||
shortText: shapez.io is a game about building factories to automate the creation and processing of increasingly complex shapes across an infinitely expanding map.
|
||||
shortText: shapez.io — це гра про будування фабрик для автоматизації створення та обробки все більш складних форм на нескінченно розширюваній мапі.
|
||||
|
||||
# This is the text shown above the Discord link
|
||||
discordLink: Official Discord - Chat with me!
|
||||
discordLink: Офіційний Discord сервер — поговори зі мною!
|
||||
|
||||
# This is the long description for the steam page - It is contained here so you can help to translate it, and I will regulary update the store page.
|
||||
# NOTICE:
|
||||
@ -42,86 +48,86 @@ steamPage:
|
||||
|
||||
This game features 18 progressive levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned!
|
||||
|
||||
Purchasing the game gives you access to the standalone version which has additional features and you'll also receive access to newly developed features.
|
||||
Купуючи гру, ви отримуєте доступ до окремої версії, яка має додаткові функції, а також ви отримаєте доступ до нещодавно розроблених функцій.
|
||||
|
||||
[img]{STEAM_APP_IMAGE}/extras/header_standalone_advantages.png[/img]
|
||||
|
||||
[list]
|
||||
[*] Dark Mode
|
||||
[*] Unlimited Waypoints
|
||||
[*] Unlimited Savegames
|
||||
[*] Additional settings
|
||||
[*] Coming soon: Wires & Energy! Aiming for (roughly) end of July 2020.
|
||||
[*] Coming soon: More Levels
|
||||
[*] Темний режим
|
||||
[*] Необмежені позначки
|
||||
[*] Необмежені збереження
|
||||
[*] Додаткові налаштування
|
||||
[*] Незабаром: дроти й енергія! Гадаю, оновлення вийде у кінці липня 2020 року.
|
||||
[*] Незабаром: більше рівнів.
|
||||
[*] Allows me to further develop shapez.io ❤️
|
||||
[/list]
|
||||
|
||||
[img]{STEAM_APP_IMAGE}/extras/header_future_updates.png[/img]
|
||||
|
||||
I am updating the game very often and trying to push an update at least every week!
|
||||
Я оновлюю гру надпрочуд часто і намагаюся випускати оновлення щотижня!
|
||||
|
||||
[list]
|
||||
[*] Different maps and challenges (e.g. maps with obstacles)
|
||||
[*] Puzzles (Deliver the requested shape with a restricted area / set of buildings)
|
||||
[*] A story mode where buildings have a cost
|
||||
[*] Configurable map generator (Configure resource/shape size/density, seed and more)
|
||||
[*] Additional types of shapes
|
||||
[*] Performance improvements (The game already runs pretty well!)
|
||||
[*] And much more!
|
||||
[*] Різноманітні мапи та випробування (наприклад, мапи з перешкодами)
|
||||
[*] Пазли (Надайте потрібну форму з обмеженою площею/набором будівель)
|
||||
[*] Режим історії, де будівлі матимуть вартість
|
||||
[*] Генератор мап, який можна налаштувати (ресурс/розмір/щільність форми, зерно та багато іншого)
|
||||
[*] Додаткові типи форм
|
||||
[*] Поліпшення продуктивності (Гра вже працює досить добре!)
|
||||
[*] Та багато чого іншого!
|
||||
[/list]
|
||||
|
||||
[img]{STEAM_APP_IMAGE}/extras/header_open_source.png[/img]
|
||||
|
||||
Anybody can contribute, I'm actively involved in the community and attempt to review all suggestions and take feedback into consideration where possible.
|
||||
Be sure to check out my trello board for the full roadmap!
|
||||
Будь-хто може зробити внесок, я активно беру участь у спільноті і намагаюся оцінити всі пропозиції і відгуки, та взяти до уваги, де це можливо.
|
||||
Не забудьте перевірити мою дошку Trello заради повної дорожньої карти!
|
||||
|
||||
[img]{STEAM_APP_IMAGE}/extras/header_links.png[/img]
|
||||
|
||||
[list]
|
||||
[*] [url=https://discord.com/invite/HN7EVzV]Official Discord[/url]
|
||||
[*] [url=https://trello.com/b/ISQncpJP/shapezio]Roadmap[/url]
|
||||
[*] [url=https://www.reddit.com/r/shapezio]Subreddit[/url]
|
||||
[*] [url=https://github.com/tobspr/shapez.io]Source code (GitHub)[/url]
|
||||
[*] [url=https://github.com/tobspr/shapez.io/blob/master/translations/README.md]Help translate[/url]
|
||||
[*] [url=https://discord.com/invite/HN7EVzV]Офіційний Discord[/url]
|
||||
[*] [url=https://trello.com/b/ISQncpJP/shapezio]Дорожня карта[/url]
|
||||
[*] [url=https://www.reddit.com/r/shapezio]Спільнота на Reddit[/url]
|
||||
[*] [url=https://github.com/tobspr/shapez.io]Вихідний код на GitHub[/url]
|
||||
[*] [url=https://github.com/tobspr/shapez.io/blob/master/translations/README.md]Допоможіть з перекладом[/url]
|
||||
[/list]
|
||||
|
||||
global:
|
||||
loading: Loading
|
||||
error: Error
|
||||
loading: Завантаження
|
||||
error: Помилка
|
||||
|
||||
# How big numbers are rendered, e.g. "10,000"
|
||||
thousandsDivider: ","
|
||||
thousandsDivider: " "
|
||||
|
||||
# What symbol to use to seperate the integer part from the fractional part of a number, e.g. "0.4"
|
||||
decimalSeparator: "."
|
||||
decimalSeparator: ","
|
||||
|
||||
# The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
|
||||
suffix:
|
||||
thousands: k
|
||||
millions: M
|
||||
billions: B
|
||||
trillions: T
|
||||
thousands: тис.
|
||||
millions: млн
|
||||
billions: млрд
|
||||
trillions: трлн
|
||||
|
||||
# Shown for infinitely big numbers
|
||||
infinite: inf
|
||||
infinite: неск.
|
||||
|
||||
time:
|
||||
# Used for formatting past time dates
|
||||
oneSecondAgo: one second ago
|
||||
xSecondsAgo: <x> seconds ago
|
||||
oneMinuteAgo: one minute ago
|
||||
xMinutesAgo: <x> minutes ago
|
||||
oneHourAgo: one hour ago
|
||||
xHoursAgo: <x> hours ago
|
||||
oneDayAgo: one day ago
|
||||
xDaysAgo: <x> days ago
|
||||
oneSecondAgo: одну секунду тому
|
||||
xSecondsAgo: <x> секунд тому
|
||||
oneMinuteAgo: 1 хвилину тому
|
||||
xMinutesAgo: <x> хвилин тому
|
||||
oneHourAgo: одну годину тому
|
||||
xHoursAgo: <x> годин тому
|
||||
oneDayAgo: один день тому
|
||||
xDaysAgo: <x> днів тому
|
||||
|
||||
# Short formats for times, e.g. '5h 23m'
|
||||
secondsShort: <seconds>s
|
||||
minutesAndSecondsShort: <minutes>m <seconds>s
|
||||
hoursAndMinutesShort: <hours>h <minutes>m
|
||||
secondsShort: <seconds>сек.
|
||||
minutesAndSecondsShort: <minutes>хв. <seconds>сек.
|
||||
hoursAndMinutesShort: <hours>год. <minutes>хв.
|
||||
|
||||
xMinutes: <x> minutes
|
||||
xMinutes: <x> хв.
|
||||
|
||||
keys:
|
||||
tab: TAB
|
||||
@ -133,180 +139,180 @@ global:
|
||||
|
||||
demoBanners:
|
||||
# This is the "advertisement" shown in the main menu and other various places
|
||||
title: Demo Version
|
||||
title: Демоверсія
|
||||
intro: >-
|
||||
Get the standalone to unlock all features!
|
||||
Завантажте окрему версію, щоб розблокувати всі функції!
|
||||
|
||||
mainMenu:
|
||||
play: Play
|
||||
continue: Continue
|
||||
newGame: New Game
|
||||
changelog: Changelog
|
||||
play: Грати
|
||||
continue: Продовжити
|
||||
newGame: Нова гра
|
||||
changelog: Змінопис
|
||||
subreddit: Reddit
|
||||
importSavegame: Import
|
||||
openSourceHint: This game is open source!
|
||||
discordLink: Official Discord Server
|
||||
helpTranslate: Help translate!
|
||||
madeBy: Made by <author-link>
|
||||
importSavegame: Імпортувати
|
||||
openSourceHint: Ця гра з відкритим вихідним кодом!
|
||||
discordLink: Офіційний Discord сервер
|
||||
helpTranslate: Допоможіть перекласти!
|
||||
madeBy: Зробив <author-link>
|
||||
|
||||
# This is shown when using firefox and other browsers which are not supported.
|
||||
browserWarning: >-
|
||||
Sorry, but the game is known to run slow on your browser! Get the standalone version or download chrome for the full experience.
|
||||
Вибачте, але гра, як відомо, працює повільно у вашому браузері! Завантажте окрему версію чи хром, щоб отримати більше задоволення від гри.
|
||||
|
||||
savegameLevel: Level <x>
|
||||
savegameLevelUnknown: Unknown Level
|
||||
savegameLevel: Рівень <x>
|
||||
savegameLevelUnknown: Невідомий рівень
|
||||
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
delete: Delete
|
||||
cancel: Cancel
|
||||
later: Later
|
||||
restart: Restart
|
||||
reset: Reset
|
||||
getStandalone: Get Standalone
|
||||
deleteGame: I know what I am doing
|
||||
viewUpdate: View Update
|
||||
showUpgrades: Show Upgrades
|
||||
showKeybindings: Show Keybindings
|
||||
ok: Гаразд
|
||||
delete: Видалити
|
||||
cancel: Скасувати
|
||||
later: Пізніше
|
||||
restart: Перезавантажити
|
||||
reset: Скинути
|
||||
getStandalone: Завантажити гру
|
||||
deleteGame: Я знаю, що роблю
|
||||
viewUpdate: Переглянути оновлення
|
||||
showUpgrades: Показати поліпшення
|
||||
showKeybindings: Показати прив’язки клавіш
|
||||
|
||||
importSavegameError:
|
||||
title: Import Error
|
||||
title: Помилка при імпортуванні
|
||||
text: >-
|
||||
Failed to import your savegame:
|
||||
Не вдалося імпортувати вашу збережену гру:
|
||||
|
||||
importSavegameSuccess:
|
||||
title: Savegame Imported
|
||||
title: Збереження імпортовано
|
||||
text: >-
|
||||
Your savegame has been successfully imported.
|
||||
Вашу збережену гру успішно імпортовано.
|
||||
|
||||
gameLoadFailure:
|
||||
title: Game is broken
|
||||
title: Гра поламана
|
||||
text: >-
|
||||
Failed to load your savegame:
|
||||
Не вдалося завантажити вашу збережену гру.
|
||||
|
||||
confirmSavegameDelete:
|
||||
title: Confirm deletion
|
||||
title: Підтвердження
|
||||
text: >-
|
||||
Are you sure you want to delete the game?
|
||||
Ви справді хочете видалити гру?
|
||||
|
||||
savegameDeletionError:
|
||||
title: Failed to delete
|
||||
title: Виникла помилка при видаленні
|
||||
text: >-
|
||||
Failed to delete the savegame:
|
||||
Не вдалося видалити збережену гру.
|
||||
|
||||
restartRequired:
|
||||
title: Restart required
|
||||
title: Потрібне перезавантаження
|
||||
text: >-
|
||||
You need to restart the game to apply the settings.
|
||||
Перезавантажте гру, щоб налаштування вступили в дію.
|
||||
|
||||
editKeybinding:
|
||||
title: Change Keybinding
|
||||
desc: Press the key or mouse button you want to assign, or escape to cancel.
|
||||
title: Зміна гарячої клавіши
|
||||
desc: Натисніть клавішу, яку ви хочете призначити, або escape для скасування.
|
||||
|
||||
resetKeybindingsConfirmation:
|
||||
title: Reset keybindings
|
||||
desc: This will reset all keybindings to their default values. Please confirm.
|
||||
title: Скинути гарячу клавіші
|
||||
desc: Це скине всі прив'язки клавіш до їхніх значень за замовчуванням. Будь ласка, підтвердіть.
|
||||
|
||||
keybindingsResetOk:
|
||||
title: Keybindings reset
|
||||
desc: The keybindings have been reset to their respective defaults!
|
||||
title: Скинути гарячі клавіші
|
||||
desc: Гарячі клавіши скинемуться до їхніх початкових значень!
|
||||
|
||||
featureRestriction:
|
||||
title: Demo Version
|
||||
desc: You tried to access a feature (<feature>) which is not available in the demo. Consider getting the standalone version for the full experience!
|
||||
title: Демоверсія
|
||||
desc: Ви спробували отримати доступ до функції (<feature>), яка недоступна в демонстраційній версії. Подумайте про отримання окремої версії, щоб насолодитися грою сповна!
|
||||
|
||||
oneSavegameLimit:
|
||||
title: Limited savegames
|
||||
desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone version!
|
||||
title: Обмежені збереження
|
||||
desc: Ви можете мати лише одне збереження одночасно в демоверсії. Будь ласка, видаліть збереження чи завантажте окрему версію гри!
|
||||
|
||||
updateSummary:
|
||||
title: New update!
|
||||
title: Нове оновлення!
|
||||
desc: >-
|
||||
Here are the changes since you last played:
|
||||
Ось зміни з вашої останньої гри
|
||||
|
||||
upgradesIntroduction:
|
||||
title: Unlock Upgrades
|
||||
title: Розблокування поліпшень
|
||||
desc: >-
|
||||
All shapes you produce can be used to unlock upgrades - <strong>Don't destroy your old factories!</strong>
|
||||
The upgrades tab can be found on the top right corner of the screen.
|
||||
Усі форми, що ви виробляєте, можуть використовуватися для розблокування поліпшення - <strong>Не зруйновуйте ваші старі заводи!<strong>
|
||||
Вкладку з поліпшеннями можна знайти в правому верхньому куті екрана.
|
||||
|
||||
massDeleteConfirm:
|
||||
title: Confirm delete
|
||||
title: Підтвердження видалення
|
||||
desc: >-
|
||||
You are deleting a lot of buildings (<count> to be exact)! Are you sure you want to do this?
|
||||
Ви видаляєте багато будівль (<count>, якщо бути точним)! Ви справді хочете зробити це?
|
||||
|
||||
massCutConfirm:
|
||||
title: Confirm cut
|
||||
title: Підтвердження вирізання
|
||||
desc: >-
|
||||
You are cutting a lot of buildings (<count> to be exact)! Are you sure you want to do this?
|
||||
Ви вирізаєте багато будівль(<count>, якщо бути точним)! Ви справді хочете зробити це?
|
||||
|
||||
massCutInsufficientConfirm:
|
||||
title: Confirm cut
|
||||
title: Підтвердити вирізання
|
||||
desc: >-
|
||||
You can not afford to paste this area! Are you sure you want to cut it?
|
||||
Ви не можете дозволити собі вставити цю область! Ви справді хочете вирізати це?
|
||||
|
||||
blueprintsNotUnlocked:
|
||||
title: Not unlocked yet
|
||||
title: Ще не розблоковано
|
||||
desc: >-
|
||||
Complete level 12 to unlock Blueprints!
|
||||
Досягніть 13-го рівня, щоб розблокувати Blueprints!
|
||||
|
||||
keybindingsIntroduction:
|
||||
title: Useful keybindings
|
||||
title: Корисні гарячі клавіши
|
||||
desc: >-
|
||||
This game has a lot of keybindings which make it easier to build big factories.
|
||||
Гра має багато гарічих клавіш, що полегшує будівництво великих заводів.
|
||||
Here are a few, but be sure to <strong>check out the keybindings</strong>!<br><br>
|
||||
<code class='keybinding'>CTRL</code> + Drag: Select an area.<br>
|
||||
<code class='keybinding'>SHIFT</code>: Hold to place multiple of one building.<br>
|
||||
<code class='keybinding'>ALT</code>: Invert orientation of placed belts.<br>
|
||||
|
||||
createMarker:
|
||||
title: New Marker
|
||||
desc: Give it a meaningful name, you can also include a <strong>short key</strong> of a shape (Which you can generate <a href="https://viewer.shapez.io" target="_blank">here</a>)
|
||||
titleEdit: Edit Marker
|
||||
title: Нова позначка
|
||||
desc: Дайте йому змістовну назву, you can also include a <strong>short key</strong> of a shape (Which you can generate <a href="https://viewer.shapez.io" target="_blank">here</a>)
|
||||
titleEdit: Редагувати позначку
|
||||
|
||||
markerDemoLimit:
|
||||
desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers!
|
||||
desc: Ви можете створити тільки 2 позначки в демоверсії. Отримайте окрему версії для створення необмеженної кількості позначок.
|
||||
|
||||
exportScreenshotWarning:
|
||||
title: Export screenshot
|
||||
desc: You requested to export your base as a screenshot. Please note that this can be quite slow for a big base and even crash your game!
|
||||
title: Експортувати зняток
|
||||
desc: Ви просили експортувати свою базу як знімок екрана. Зверніть увагу, що для великої бази це може бути досить повільним процесом і може навіть зруйнувати вашу гру!
|
||||
|
||||
ingame:
|
||||
# This is shown in the top left corner and displays useful keybindings in
|
||||
# every situation
|
||||
keybindingsOverlay:
|
||||
moveMap: Move
|
||||
selectBuildings: Select area
|
||||
moveMap: Рухатися
|
||||
selectBuildings: Виділити будівлі
|
||||
stopPlacement: Stop placement
|
||||
rotateBuilding: Rotate building
|
||||
rotateBuilding: Повернути будівлю
|
||||
placeMultiple: Place multiple
|
||||
reverseOrientation: Reverse orientation
|
||||
disableAutoOrientation: Disable auto-orientation
|
||||
toggleHud: Toggle HUD
|
||||
placeBuilding: Place building
|
||||
createMarker: Create marker
|
||||
delete: Delete
|
||||
createMarker: Створити позначку
|
||||
delete: Видалити
|
||||
pasteLastBlueprint: Paste last blueprint
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
cutSelection: Вирізати
|
||||
copySelection: Скопіювати
|
||||
clearSelection: Clear selection
|
||||
pipette: Pipette
|
||||
switchLayers: Switch layers
|
||||
pipette: Піпетка
|
||||
switchLayers: Змінити шари
|
||||
|
||||
# Names of the colors, used for the color blind mode
|
||||
colors:
|
||||
red: Red
|
||||
green: Green
|
||||
blue: Blue
|
||||
yellow: Yellow
|
||||
purple: Purple
|
||||
cyan: Cyan
|
||||
white: White
|
||||
black: Black
|
||||
uncolored: No color
|
||||
red: Червоний
|
||||
green: Зелений
|
||||
blue: Синій
|
||||
yellow: Жовтий
|
||||
purple: Фіолетовий
|
||||
cyan: Блакитний
|
||||
white: Білий
|
||||
black: Чорний
|
||||
uncolored: Без кольору
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -320,126 +326,126 @@ ingame:
|
||||
Hotkey: <key>
|
||||
|
||||
infoTexts:
|
||||
speed: Speed
|
||||
speed: Швидкість
|
||||
range: Range
|
||||
storage: Storage
|
||||
oneItemPerSecond: 1 item / second
|
||||
itemsPerSecond: <x> items / s
|
||||
storage: Сховище
|
||||
oneItemPerSecond: 1 предмет за сек.
|
||||
itemsPerSecond: <x> предмет. за сек
|
||||
itemsPerSecondDouble: (x2)
|
||||
|
||||
tiles: <x> tiles
|
||||
tiles: <x> плиток
|
||||
|
||||
# The notification when completing a level
|
||||
levelCompleteNotification:
|
||||
# <level> is replaced by the actual level, so this gets 'Level 03' for example.
|
||||
levelTitle: Level <level>
|
||||
completed: Completed
|
||||
unlockText: Unlocked <reward>!
|
||||
buttonNextLevel: Next Level
|
||||
levelTitle: Рівень <level>
|
||||
completed: Завершено
|
||||
unlockText: Розблоковано «<reward>»!
|
||||
buttonNextLevel: Наступний рівень
|
||||
|
||||
# Notifications on the lower right
|
||||
notifications:
|
||||
newUpgrade: A new upgrade is available!
|
||||
gameSaved: Your game has been saved.
|
||||
newUpgrade: Нове оновлення розблоковано!
|
||||
gameSaved: Вашу гру збережено.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Upgrades
|
||||
buttonUnlock: Upgrade
|
||||
title: Поліпшення
|
||||
buttonUnlock: Поліпшення
|
||||
|
||||
# Gets replaced to e.g. "Tier IX"
|
||||
tier: Tier <x>
|
||||
tier: Клас <x>
|
||||
|
||||
# The roman number for each tier
|
||||
tierLabels: [I, II, III, IV, V, VI, VII, VIII, IX, X]
|
||||
|
||||
maximumLevel: MAXIMUM LEVEL (Speed x<currentMult>)
|
||||
maximumLevel: МАКСИМАЛЬНИЙ РІВЕНЬ (Швидкість <currentMult>х)
|
||||
|
||||
# The "Statistics" window
|
||||
statistics:
|
||||
title: Statistics
|
||||
title: Статистика
|
||||
dataSources:
|
||||
stored:
|
||||
title: Stored
|
||||
title: Зберігається
|
||||
description: Displaying amount of stored shapes in your central building.
|
||||
produced:
|
||||
title: Produced
|
||||
title: Виробляється
|
||||
description: Displaying all shapes your whole factory produces, including intermediate products.
|
||||
delivered:
|
||||
title: Delivered
|
||||
title: Доставлено
|
||||
description: Displaying shapes which are delivered to your central building.
|
||||
noShapesProduced: No shapes have been produced so far.
|
||||
|
||||
# Displays the shapes per minute, e.g. '523 / m'
|
||||
shapesPerMinute: <shapes> / m
|
||||
shapesPerMinute: <shapes> за хв.
|
||||
|
||||
# Settings menu, when you press "ESC"
|
||||
settingsMenu:
|
||||
playtime: Playtime
|
||||
playtime: У грі
|
||||
|
||||
buildingsPlaced: Buildings
|
||||
beltsPlaced: Belts
|
||||
buildingsPlaced: Будівлі
|
||||
beltsPlaced: Стрічки
|
||||
|
||||
buttons:
|
||||
continue: Continue
|
||||
settings: Settings
|
||||
menu: Return to menu
|
||||
continue: Продовжити
|
||||
settings: Налаштування
|
||||
menu: Повернутися до меню
|
||||
|
||||
# Bottom left tutorial hints
|
||||
tutorialHints:
|
||||
title: Need help?
|
||||
showHint: Show hint
|
||||
hideHint: Close
|
||||
title: Потрібна допомога?
|
||||
showHint: Показати підказку
|
||||
hideHint: Закрити
|
||||
|
||||
# When placing a blueprint
|
||||
blueprintPlacer:
|
||||
cost: Cost
|
||||
cost: Вартість
|
||||
|
||||
# Map markers
|
||||
waypoints:
|
||||
waypoints: Markers
|
||||
hub: HUB
|
||||
waypoints: Позначки
|
||||
hub: Центр
|
||||
description: Left-click a marker to jump to it, right-click to delete it.<br><br>Press <keybinding> to create a marker from the current view, or <strong>right-click</strong> to create a marker at the selected location.
|
||||
creationSuccessNotification: Marker has been created.
|
||||
|
||||
# Shape viewer
|
||||
shapeViewer:
|
||||
title: Layers
|
||||
empty: Empty
|
||||
title: Шари
|
||||
empty: Пустий
|
||||
copyKey: Copy Key
|
||||
|
||||
# Interactive tutorial
|
||||
interactiveTutorial:
|
||||
title: Tutorial
|
||||
title: Навчання
|
||||
hints:
|
||||
1_1_extractor: Place an <strong>extractor</strong> on top of a <strong>circle shape</strong> to extract it!
|
||||
1_1_extractor: Розмістіть <strong>екстрактор</strong> поверх <strong>фігури кола</strong>, щоб отримати її!
|
||||
1_2_conveyor: >-
|
||||
Connect the extractor with a <strong>conveyor belt</strong> to your hub!<br><br>Tip: <strong>Click and drag</strong> the belt with your mouse!
|
||||
З’єднайте екстрактор з вашим центром за допомогою <strong>конвеєрної стрічки</strong>!<br><br>Підказка: <strong>Натисніть і протягніть</strong> стрічку вашою мишею.
|
||||
|
||||
1_3_expand: >-
|
||||
This is <strong>NOT</strong> an idle game! Build more extractors and belts to finish the goal quicker.<br><br>Tip: Hold <strong>SHIFT</strong> to place multiple extractors, and use <strong>R</strong> to rotate them.
|
||||
У цій грі <strong>ВАМ НЕ ПОТРІБНО БЕЗДІЯТИ</strong>! Будуйте більше екстракторів і стрічок, щоб виконати свою мету швидше.<br><br>Підказка: Утримуйте <strong>SHIFT</strong>, щоб розмістити багато екстракторів, і використовуйте <strong>R</strong>, щоб обертати їх.
|
||||
|
||||
# All shop upgrades
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Belts, Distributor & Tunnels
|
||||
description: Speed x<currentMult> → x<newMult>
|
||||
name: Стрічки, розподілювачі і тунелі
|
||||
description: Швидкість x<currentMult> → x<newMult>
|
||||
miner:
|
||||
name: Extraction
|
||||
description: Speed x<currentMult> → x<newMult>
|
||||
name: Видобуток
|
||||
description: Швидкість x<currentMult> → x<newMult>
|
||||
processors:
|
||||
name: Cutting, Rotating & Stacking
|
||||
description: Speed x<currentMult> → x<newMult>
|
||||
name: Різання, обертання й укладання
|
||||
description: Швидкість x<currentMult> → x<newMult>
|
||||
painting:
|
||||
name: Mixing & Painting
|
||||
description: Speed x<currentMult> → x<newMult>
|
||||
name: Змішування і малювання
|
||||
description: Швидкість x<currentMult> → x<newMult>
|
||||
|
||||
# Buildings and their name / description
|
||||
buildings:
|
||||
hub:
|
||||
deliver: Deliver
|
||||
toUnlock: to unlock
|
||||
levelShortcut: LVL
|
||||
deliver: Доставте,
|
||||
toUnlock: щоб розблокувати
|
||||
levelShortcut: РІВ
|
||||
|
||||
belt:
|
||||
default:
|
||||
@ -563,8 +569,8 @@ buildings:
|
||||
storyRewards:
|
||||
# Those are the rewards gained from completing the store
|
||||
reward_cutter_and_trash:
|
||||
title: Cutting Shapes
|
||||
desc: You just unlocked the <strong>cutter</strong> - it cuts shapes half from <strong>top to bottom</strong> regardless of its orientation!<br><br>Be sure to get rid of the waste, or otherwise <strong>it will stall</strong> - For this purpose I gave you a trash, which destroys everything you put into it!
|
||||
title: Різання фігур
|
||||
desc: Ви тільки-но розблокували <strong>різця</strong>. Він розрізає фігури наполовину з <strong>вершини до низу</strong> незалежно від його орієнтації!<br><br>Обов’язково позбудьтесь відходів або <strong>він зупиниться</strong>. Для цього є сміттєбак, який знищує все, що входить в нього.
|
||||
|
||||
reward_rotater:
|
||||
title: Rotating
|
||||
@ -585,7 +591,7 @@ storyRewards:
|
||||
|
||||
reward_splitter:
|
||||
title: Splitter/Merger
|
||||
desc: The multifunctional <strong>balancer</strong> has been unlocked - It can be used to build bigger factories by <strong>splitting and merging items</strong> onto multiple belts!<br><br>
|
||||
desc: Багатофункціональний <strong> балансир </strong> було розблоковано. Його можна використовувати для створення великих заводів, <strong>розділяючи та об’єднуючи предмети </strong> на кілька стрічок!<br><br>
|
||||
|
||||
reward_tunnel:
|
||||
title: Tunnel
|
||||
@ -634,21 +640,21 @@ storyRewards:
|
||||
|
||||
# Special reward, which is shown when there is no reward actually
|
||||
no_reward:
|
||||
title: Next level
|
||||
title: Наступний рівень
|
||||
desc: >-
|
||||
This level gave you no reward, but the next one will! <br><br> PS: Better don't destroy your existing factory - You need <strong>all</strong> those shapes later again to <strong>unlock upgrades</strong>!
|
||||
Цей рівень не дав нагороди, але в наступному... щось буде. <br><br> До речі, краще не руйнуйте свій поточний завод. Вам знадобляться всі ті форми пізніше, щоб <strong>розблокувати поліпшення</strong>!
|
||||
|
||||
no_reward_freeplay:
|
||||
title: Next level
|
||||
title: Наступний рівень
|
||||
desc: >-
|
||||
Congratulations! By the way, more content is planned for the standalone!
|
||||
Вітаємо! До речі, більше контенту планується в окремій версії!
|
||||
|
||||
settings:
|
||||
title: Settings
|
||||
title: Налаштування
|
||||
categories:
|
||||
general: General
|
||||
userInterface: User Interface
|
||||
advanced: Advanced
|
||||
general: Загальне
|
||||
userInterface: Користувацький інтерфейс
|
||||
advanced: Передове
|
||||
|
||||
versionBadges:
|
||||
dev: Development
|
||||
@ -658,102 +664,102 @@ settings:
|
||||
|
||||
labels:
|
||||
uiScale:
|
||||
title: Interface scale
|
||||
title: Масштаб інтерфейсу
|
||||
description: >-
|
||||
Changes the size of the user interface. The interface will still scale based on your device's resolution, but this setting controls the amount of scaling.
|
||||
Змінює розмір користувацього інтерфейсу. Інтерфейс усе ще буде масштабуватися залежно від роздільної здатності вашого пристрою, але цей параметр контролює масштаб масштабування.
|
||||
scales:
|
||||
super_small: Super small
|
||||
small: Small
|
||||
regular: Regular
|
||||
large: Large
|
||||
huge: Huge
|
||||
super_small: Надзвичайно малий
|
||||
small: Малий
|
||||
regular: Звичайний
|
||||
large: Великий
|
||||
huge: Величезний
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
title: Проміжок між автозбереженнями
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it entirely here.
|
||||
Контролює, як часто гра автоматично зберігатиметься. Ви також можете повністю вимкнути його тут.
|
||||
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
one_minute: 1 хвилина
|
||||
two_minutes: 2 хвилини
|
||||
five_minutes: 5 хвилин
|
||||
ten_minutes: 10 хвилин
|
||||
twenty_minutes: 20 хвилин
|
||||
disabled: Вимкнено
|
||||
|
||||
scrollWheelSensitivity:
|
||||
title: Zoom sensitivity
|
||||
title: Чутливість масштабування
|
||||
description: >-
|
||||
Changes how sensitive the zoom is (Either mouse wheel or trackpad).
|
||||
Змінює наскільки чутливе масштабування (колесо миші або трекпад).
|
||||
sensitivity:
|
||||
super_slow: Super slow
|
||||
slow: Slow
|
||||
regular: Regular
|
||||
fast: Fast
|
||||
super_fast: Super fast
|
||||
super_slow: Надзвичайно повільна
|
||||
slow: Повільна
|
||||
regular: Звичайна
|
||||
fast: Швидка
|
||||
super_fast: Надзвичайно швидка
|
||||
|
||||
movementSpeed:
|
||||
title: Movement speed
|
||||
title: Швидкість руху
|
||||
description: >-
|
||||
Changes how fast the view moves when using the keyboard.
|
||||
Змінює Змінює швидкість руху бачення при використанні клавіатури.
|
||||
speeds:
|
||||
super_slow: Super slow
|
||||
slow: Slow
|
||||
regular: Regular
|
||||
fast: Fast
|
||||
super_fast: Super Fast
|
||||
extremely_fast: Extremely Fast
|
||||
super_slow: Надзвичайно повільна
|
||||
slow: Повільна
|
||||
regular: Звичайна
|
||||
fast: Швидка
|
||||
super_fast: Надзвичайно швидка
|
||||
extremely_fast: Екстремально швидка
|
||||
|
||||
language:
|
||||
title: Language
|
||||
title: Мова
|
||||
description: >-
|
||||
Change the language. All translations are user-contributed and might be incomplete!
|
||||
Змініть мову. Усі переклади зроблені користувачами і можуть бути незавершеними!
|
||||
|
||||
enableColorBlindHelper:
|
||||
title: Color Blind Mode
|
||||
title: Режим високої контрастності
|
||||
description: >-
|
||||
Enables various tools which allow you to play the game if you are color blind.
|
||||
Дозволяє використовувати різні інструменти, які дозволяють грати в гру, якщо ви є дальтоніком.
|
||||
|
||||
fullscreen:
|
||||
title: Fullscreen
|
||||
title: Повноекранний режим
|
||||
description: >-
|
||||
It is recommended to play the game in fullscreen to get the best experience. Only available in the standalone.
|
||||
Щоб повністю насолодитися грою, рекомендується грати у повноекранному режимі. Не доступно тільки в демоверсії.
|
||||
|
||||
soundsMuted:
|
||||
title: Mute Sounds
|
||||
title: Заглушити звуки
|
||||
description: >-
|
||||
If enabled, mutes all sound effects.
|
||||
Якщо увімкнено, то вимикає всі звукові ефекти.
|
||||
|
||||
musicMuted:
|
||||
title: Mute Music
|
||||
title: Заглушити музику
|
||||
description: >-
|
||||
If enabled, mutes all music.
|
||||
Якщо увімкнено, то вимикає всю музику.
|
||||
|
||||
theme:
|
||||
title: Game theme
|
||||
title: Тема гри
|
||||
description: >-
|
||||
Choose the game theme (light / dark).
|
||||
Оберіть тему гри (світлу чи темну).
|
||||
themes:
|
||||
dark: Dark
|
||||
light: Light
|
||||
dark: Темна
|
||||
light: Світла
|
||||
|
||||
refreshRate:
|
||||
title: Simulation Target
|
||||
title: Частота оновлення
|
||||
description: >-
|
||||
If you have a 144hz monitor, change the refresh rate here so the game will properly simulate at higher refresh rates. This might actually decrease the FPS if your computer is too slow.
|
||||
Якщо ви маєте 144-герцовий монітор, то змініть частоту оновлення тут, щоб гра правильно працювала при більшій швидкості оновлення. Це може фактично знизити FPS, якщо ваш комп’ютер занадто повільний.
|
||||
|
||||
alwaysMultiplace:
|
||||
title: Multiplace
|
||||
title: Мультирозміщення
|
||||
description: >-
|
||||
If enabled, all buildings will stay selected after placement until you cancel it. This is equivalent to holding SHIFT permanently.
|
||||
Якщо ввімкнено, всі будівлі залишатимуться вибраними після розміщення, доки ви не скасуєте це. Це еквівалентно постійному утримуванню SHIFT.
|
||||
|
||||
offerHints:
|
||||
title: Hints & Tutorials
|
||||
title: Підказки & посібники
|
||||
description: >-
|
||||
Whether to offer hints and tutorials while playing. Also hides certain UI elements up to a given level to make it easier to get into the game.
|
||||
Якщо увімкнено, то пропонує підказки та посібники під час гри. Також приховує певні елементи інтерфейсу до заданого рівня, щоб полегшити потрапляння в гру.
|
||||
|
||||
enableTunnelSmartplace:
|
||||
title: Smart Tunnels
|
||||
title: Розумні Tunnels
|
||||
description: >-
|
||||
When enabled, placing tunnels will automatically remove unnecessary belts. This also enables you to drag tunnels and excess tunnels will get removed.
|
||||
|
||||
@ -778,15 +784,15 @@ settings:
|
||||
Disables the warning dialogs brought up when cutting/deleting more than 100 entities.
|
||||
|
||||
keybindings:
|
||||
title: Keybindings
|
||||
title: Гарячі клавіши
|
||||
hint: >-
|
||||
Tip: Be sure to make use of CTRL, SHIFT and ALT! They enable different placement options.
|
||||
|
||||
resetKeybindings: Reset Keybindings
|
||||
resetKeybindings: Скинути гарячі клавіші
|
||||
|
||||
categoryLabels:
|
||||
general: Application
|
||||
ingame: Game
|
||||
general: Застосунок
|
||||
ingame: Гра
|
||||
navigation: Navigating
|
||||
placement: Placement
|
||||
massSelect: Mass Select
|
||||
@ -794,8 +800,8 @@ keybindings:
|
||||
placementModifiers: Placement Modifiers
|
||||
|
||||
mappings:
|
||||
confirm: Confirm
|
||||
back: Back
|
||||
confirm: Підтвердити
|
||||
back: Назад
|
||||
mapMoveUp: Move Up
|
||||
mapMoveRight: Move Right
|
||||
mapMoveDown: Move Down
|
||||
@ -803,13 +809,13 @@ keybindings:
|
||||
mapMoveFaster: Move Faster
|
||||
centerMap: Center Map
|
||||
|
||||
mapZoomIn: Zoom in
|
||||
mapZoomOut: Zoom out
|
||||
createMarker: Create Marker
|
||||
mapZoomIn: Приблизити
|
||||
mapZoomOut: Віддалити
|
||||
createMarker: Створити позначку
|
||||
|
||||
menuOpenShop: Upgrades
|
||||
menuOpenStats: Statistics
|
||||
menuClose: Close Menu
|
||||
menuOpenShop: Поліпшення
|
||||
menuOpenStats: Статистика
|
||||
menuClose: Закрити меню
|
||||
|
||||
toggleHud: Toggle HUD
|
||||
toggleFPSInfo: Toggle FPS and Debug Info
|
||||
@ -829,12 +835,12 @@ keybindings:
|
||||
trash: *trash
|
||||
wire: *wire
|
||||
|
||||
pipette: Pipette
|
||||
rotateWhilePlacing: Rotate
|
||||
pipette: Pipetteї
|
||||
rotateWhilePlacing: Повернути
|
||||
rotateInverseModifier: >-
|
||||
Modifier: Rotate CCW instead
|
||||
cycleBuildingVariants: Cycle Variants
|
||||
confirmMassDelete: Delete area
|
||||
confirmMassDelete: Видалити ділянку
|
||||
pasteLastBlueprint: Paste last blueprint
|
||||
cycleBuildings: Cycle Buildings
|
||||
lockBeltDirection: Enable belt planner
|
||||
@ -842,36 +848,36 @@ keybindings:
|
||||
Planner: Switch side
|
||||
|
||||
massSelectStart: Hold and drag to start
|
||||
massSelectSelectMultiple: Select multiple areas
|
||||
massSelectCopy: Copy area
|
||||
massSelectCut: Cut area
|
||||
massSelectSelectMultiple:
|
||||
massSelectCopy: Копіювати ділянку
|
||||
massSelectCut: Вирізати ділянку
|
||||
|
||||
placementDisableAutoOrientation: Disable automatic orientation
|
||||
placementDisableAutoOrientation: Вимкнути автоматичну орієнтацію
|
||||
placeMultiple: Stay in placement mode
|
||||
placeInverse: Invert automatic belt orientation
|
||||
|
||||
about:
|
||||
title: About this Game
|
||||
title: Про гру
|
||||
body: >-
|
||||
This game is open source and developed by <a href="https://github.com/tobspr" target="_blank">Tobias Springer</a> (this is me).<br><br>
|
||||
Ця гра з відкритим вихідним кодом і розроблена <a href="https://github.com/tobspr" target="_blank">Tobias Springer</a> (це я).<br><br>
|
||||
|
||||
If you want to contribute, check out <a href="<githublink>" target="_blank">shapez.io on github</a>.<br><br>
|
||||
Якщо ви хочете зробити внесок, то йдіть на <a href="<githublink>" target="_blank">github shapez.io</a>.<br><br>
|
||||
|
||||
This game wouldn't have been possible without the great Discord community around my games - You should really join the <a href="<discordlink>" target="_blank">Discord server</a>!<br><br>
|
||||
Ця гра не була б можливою без великої Discord спільноти навколо моїх ігор. Гадаю, вам дійсно слід долучитися до <a href="<discordlink>" target="_blank">серверу в discord</a>!<br><br>
|
||||
|
||||
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius" target="_blank">Peppsen</a> - He's awesome.<br><br>
|
||||
Звуковий трек був зроблений гравцем <a href="https://soundcloud.com/pettersumelius" target="_blank">Peppsen</a> — він просто приголомшливий.<br><br>
|
||||
|
||||
Finally, huge thanks to my best friend <a href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our factorio sessions, this game would never have existed.
|
||||
І нарешті, величезна подяка моєму найкращому другу <a href="https://github.com/niklas-dahl" target="_blank">Niklas</a>, бо без наших сеансів у факторіо ця гра ніколи б не існувала.
|
||||
|
||||
changelog:
|
||||
title: Changelog
|
||||
title: Змінопис
|
||||
|
||||
demo:
|
||||
features:
|
||||
restoringGames: Restoring savegames
|
||||
importingGames: Importing savegames
|
||||
oneGameLimit: Limited to one savegame
|
||||
customizeKeybindings: Customizing Keybindings
|
||||
exportingBase: Exporting whole Base as Image
|
||||
restoringGames: Відновлення збережень
|
||||
importingGames: Імпортування збережень
|
||||
oneGameLimit: Обмежено одним збереженням
|
||||
customizeKeybindings: Налаштування гарячих клавіш
|
||||
exportingBase: Експортування цілої бази у вигляді зображення
|
||||
|
||||
settingNotAvailable: Not available in the demo.
|
||||
settingNotAvailable: Недоступно в демоверсії.
|
||||
|
@ -300,8 +300,8 @@ dialogs:
|
||||
你将要导出你的工厂的截图。如果你的基地很大,截图过程将会很慢,且有可能导致游戏崩溃!
|
||||
|
||||
massCutInsufficientConfirm:
|
||||
title: Confirm cut
|
||||
desc: You can not afford to paste this area! Are you sure you want to cut it?
|
||||
title: 确认剪切
|
||||
desc: 你没有足够的图形来粘贴这个区域!你确定要剪切吗?
|
||||
|
||||
ingame:
|
||||
# This is shown in the top left corner and displays useful keybindings in
|
||||
@ -443,11 +443,11 @@ ingame:
|
||||
cyan: 青色
|
||||
white: 白色
|
||||
uncolored: 无色
|
||||
black: Black
|
||||
black: 黑色
|
||||
shapeViewer:
|
||||
title: 层 # TODO: find better translation
|
||||
empty: 空
|
||||
copyKey: Copy Key
|
||||
copyKey: 复制短代码
|
||||
|
||||
# All shop upgrades
|
||||
shopUpgrades:
|
||||
@ -529,7 +529,7 @@ buildings:
|
||||
mixer:
|
||||
default:
|
||||
name: &mixer 混色机
|
||||
description: 将两个颜色混合在一起。(加法混合)
|
||||
description: 用加法混色将两个颜色混合起来
|
||||
|
||||
painter:
|
||||
default:
|
||||
@ -592,11 +592,11 @@ storyRewards:
|
||||
reward_painter:
|
||||
title: 上色
|
||||
desc: >-
|
||||
The <strong>painter</strong> has been unlocked - Extract some color veins (just as you do with shapes) and combine it with a shape in the painter to color them!<br><br>PS: If you are colorblind, there is a <strong>color blind mode</strong> in the settings!
|
||||
恭喜!你解锁了<strong>上色机</strong>。 开采一些颜色 (就像你开采图形一样) 将其在上色机中与图形结合来将图形上色!<br><br>PS: 如果你患有色盲,可以在设置中启用<strong>色盲模式</strong>!
|
||||
|
||||
reward_mixer:
|
||||
title: 混合颜色
|
||||
desc: The <strong>mixer</strong> has been unlocked - Combine two colors using <strong>additive blending</strong> with this building!
|
||||
desc: 恭喜!你解锁了<strong>混色机</strong>。这个建筑使用<strong>加法混色</strong>将两种颜色混合起来。
|
||||
|
||||
reward_stacker:
|
||||
title: 堆叠
|
||||
@ -616,7 +616,7 @@ storyRewards:
|
||||
|
||||
reward_miner_chainable:
|
||||
title: 链式开采机
|
||||
desc: You have unlocked the <strong>chaining extractor</strong>! It can <strong>forward its resources</strong> to other extractors so you can more efficiently extract resources!
|
||||
desc: 你解锁了<strong>链式开采机</strong>! 它能够<strong>把资源传递给</strong>其他开采机,让你可以更高效率的开采资源!
|
||||
|
||||
reward_underground_belt_tier_2:
|
||||
title: 二级隧道
|
||||
@ -624,7 +624,7 @@ storyRewards:
|
||||
|
||||
reward_splitter_compact:
|
||||
title: 小型合流机
|
||||
desc: You have unlocked a compact variant of the <strong>balancer</strong> - It accepts two inputs and merges them into one!
|
||||
desc: 恭喜!你解锁了<strong>平衡机</strong>的变体。它能够接受两个输入,合并成一个输出!
|
||||
|
||||
reward_cutter_quad:
|
||||
title: 四向切割机
|
||||
@ -640,7 +640,7 @@ storyRewards:
|
||||
|
||||
reward_storage:
|
||||
title: 仓库
|
||||
desc: You have unlocked a variant of the <strong>trash</strong> - It allows to store items up to a given capacity!
|
||||
desc: 恭喜!你解锁了<strong>垃圾桶</strong>的变体。他可以存储一定数量的物品!
|
||||
|
||||
reward_freeplay:
|
||||
title: 自由模式
|
||||
@ -664,9 +664,9 @@ storyRewards:
|
||||
settings:
|
||||
title: 设置
|
||||
categories:
|
||||
general: General
|
||||
userInterface: User Interface
|
||||
advanced: Advanced
|
||||
general: 通用
|
||||
userInterface: 用户界面
|
||||
advanced: 高级
|
||||
|
||||
versionBadges:
|
||||
dev: 开发版本 # Development
|
||||
@ -792,11 +792,9 @@ settings:
|
||||
title: 色盲模式
|
||||
description: 提供一些分辨颜色的工具。目前当鼠标移至颜色资源上方时,屏幕上方会显示颜色名称。
|
||||
rotationByBuilding:
|
||||
title: Rotation by building type
|
||||
title: 记忆建筑方向
|
||||
description: >-
|
||||
Each building type remembers the rotation you last set it to individually.
|
||||
This may be more comfortable if you frequently switch between placing
|
||||
different building types.
|
||||
每一类建筑都会记住各自上一次的旋转方向。如果你经常在不同建筑类型之间切换,这个设置会让游戏更加舒适。
|
||||
|
||||
keybindings:
|
||||
title: 按键设置
|
||||
|
45
yarn.lock
45
yarn.lock
@ -1564,13 +1564,6 @@ async@~0.2.10:
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
|
||||
integrity sha1-trvgsGdLnXGXCMo43owjfLUmw9E=
|
||||
|
||||
async@~2.1.4:
|
||||
version "2.1.5"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-2.1.5.tgz#e587c68580994ac67fc56ff86d3ac56bdbe810bc"
|
||||
integrity sha1-5YfGhYCZSsZ/xW/4bTrFa9voELw=
|
||||
dependencies:
|
||||
lodash "^4.14.0"
|
||||
|
||||
atob@^2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
|
||||
@ -2314,13 +2307,6 @@ cli-cursor@^3.1.0:
|
||||
dependencies:
|
||||
restore-cursor "^3.1.0"
|
||||
|
||||
cli-table@^0.3.1:
|
||||
version "0.3.1"
|
||||
resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23"
|
||||
integrity sha1-9TsFJmqLGguTSz0IIebi3FkUriM=
|
||||
dependencies:
|
||||
colors "1.0.3"
|
||||
|
||||
cli-width@^2.0.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
|
||||
@ -2413,11 +2399,6 @@ color@^3.0.0:
|
||||
color-convert "^1.9.1"
|
||||
color-string "^1.5.2"
|
||||
|
||||
colors@1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
|
||||
integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=
|
||||
|
||||
colors@^1.3.3:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78"
|
||||
@ -2450,13 +2431,6 @@ commander@~2.8.1:
|
||||
dependencies:
|
||||
graceful-readlink ">= 1.0.0"
|
||||
|
||||
commander@~2.9.0:
|
||||
version "2.9.0"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
|
||||
integrity sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=
|
||||
dependencies:
|
||||
graceful-readlink ">= 1.0.0"
|
||||
|
||||
commondir@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
|
||||
@ -5190,7 +5164,7 @@ lodash.uniq@^4.5.0:
|
||||
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
|
||||
integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
|
||||
|
||||
lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.3.0:
|
||||
lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.3.0:
|
||||
version "4.17.15"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
|
||||
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
|
||||
@ -7273,7 +7247,7 @@ readable-stream@^3.6.0:
|
||||
string_decoder "^1.1.1"
|
||||
util-deprecate "^1.0.1"
|
||||
|
||||
readdirp@^2.1.0, readdirp@^2.2.1:
|
||||
readdirp@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
|
||||
integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
|
||||
@ -7772,16 +7746,6 @@ slice-ansi@^2.1.0:
|
||||
astral-regex "^1.0.0"
|
||||
is-fullwidth-code-point "^2.0.0"
|
||||
|
||||
sloc@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/sloc/-/sloc-0.2.1.tgz#42ad891e76838c1a22bbd8483468e9d74c7f531e"
|
||||
integrity sha512-8XJnwCFR4DatLz1s0nGFe6IJPJ+5pjRFhoBuBKq8SLgFI40eD7ak6jOXpzeG0tmIpyOc1zCs9bjKAxMFm1451A==
|
||||
dependencies:
|
||||
async "~2.1.4"
|
||||
cli-table "^0.3.1"
|
||||
commander "~2.9.0"
|
||||
readdirp "^2.1.0"
|
||||
|
||||
snapdragon-node@^2.0.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
|
||||
@ -9082,6 +9046,11 @@ yargs@^15.3.1:
|
||||
y18n "^4.0.0"
|
||||
yargs-parser "^18.1.1"
|
||||
|
||||
yarn@^1.22.4:
|
||||
version "1.22.4"
|
||||
resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.4.tgz#01c1197ca5b27f21edc8bc472cd4c8ce0e5a470e"
|
||||
integrity sha512-oYM7hi/lIWm9bCoDMEWgffW8aiNZXCWeZ1/tGy0DWrN6vmzjCXIKu2Y21o8DYVBUtiktwKcNoxyGl/2iKLUNGA==
|
||||
|
||||
yauzl@^2.4.2:
|
||||
version "2.10.0"
|
||||
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
|
||||
|
Loading…
Reference in New Issue
Block a user