1
0
mirror of https://github.com/tobspr/shapez.io.git synced 2025-06-13 13:04:03 +00:00

Merge remote-tracking branch 'origin/master' into patch-4

This commit is contained in:
EmeraldBlock 2020-10-18 20:10:25 -05:00
commit b427e8e819
91 changed files with 5748 additions and 4480 deletions

4
.gitpod.Dockerfile vendored Normal file
View File

@ -0,0 +1,4 @@
FROM gitpod/workspace-full
RUN sudo apt-get update \
&& sudo apt install ffmpeg -yq

10
.gitpod.yml Normal file
View File

@ -0,0 +1,10 @@
image:
file: .gitpod.Dockerfile
tasks:
- init: yarn && gp sync-done boot
- before: cd gulp
init: gp sync-await boot && yarn
command: yarn gulp
ports:
- port: 3005
onOpen: open-preview

View File

@ -31,6 +31,16 @@ Your goal is to produce shapes by cutting, rotating, merging and painting parts
**Notice**: This will produce a debug build with several debugging flags enabled. If you want to disable them, modify [`src/js/core/config.js`](src/js/core/config.js).
## Build Online with one-click setup
You can use [Gitpod](https://www.gitpod.io/) (an Online Open Source VS Code-like IDE which is free for Open Source) for working on issues and making PRs to this project. With a single click it will start a workspace and automatically:
- clone the `shapez.io` repo.
- install all of the dependencies.
- start `gulp` in `gulp/` directory.
[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/from-referrer/)
## Helping translate
Please checkout the [Translations readme](translations/).

View File

@ -71,10 +71,6 @@ releaseUploader.gulptasksReleaseUploader($, gulp, buildFolder);
const translations = require("./translations");
translations.gulptasksTranslations($, gulp, buildFolder);
// FIXME
// const cordova = require("./cordova");
// cordova.gulptasksCordova($, gulp, buildFolder);
///////////////////// BUILD TASKS /////////////////////
// Cleans up everything

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 809 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 531 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 776 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@ -1,36 +1,38 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<path style="fill:#FF4B55;" d="M400,0H112C50.144,0,0,50.144,0,112v288c0,61.856,50.144,112,112,112h288 c61.856,0,112-50.144,112-112V112C512,50.144,461.856,0,400,0z"/>
<polygon style="fill:#F5F5F5;" points="512,229.517 211.862,229.517 211.862,0 158.897,0 158.897,229.517 0,229.517 0,282.483 158.897,282.483 158.897,512 211.862,512 211.862,282.483 512,282.483 "/>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<rect style="fill:#FF4B55;" width="512" height="512"/>
<polygon style="fill:#F5F5F5;" points="512,229.517 211.862,229.517 211.862,0 158.897,0 158.897,229.517 0,229.517 0,282.483
158.897,282.483 158.897,512 211.862,512 211.862,282.483 512,282.483 "/>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 858 B

After

Width:  |  Height:  |  Size: 786 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@ -27,7 +27,7 @@
@include S(border-radius, $globalBorderRadius);
@include DarkThemeOverride {
background-color: rgba(darken($darkModeGameBackground, 15), 0.4);
background-color: rgba(darken($darkModeGameBackground, 15), 0.95);
}
&.secondary {

View File

@ -56,8 +56,9 @@
.helperGif {
@include S(margin-top, 5px);
@include S(width, 150px);
@include S(height, 150px);
background: center center / contain no-repeat;
background: center center / cover no-repeat;
transition: opacity 0.1s ease-out;
}
}

View File

@ -4,9 +4,7 @@
left: 0;
right: 0;
bottom: 0;
display: flex;
justify-content: center;
align-items: center;
overflow: auto;
pointer-events: all;
& {
@ -33,7 +31,6 @@
display: flex;
align-items: center;
flex-direction: column;
max-height: 100vh;
color: #fff;
text-align: center;

View File

@ -73,8 +73,8 @@ ingame_HUD_KeybindingOverlay,
ingame_HUD_Notifications,
ingame_HUD_DebugInfo,
ingame_HUD_EntityDebugger,
ingame_HUD_InteractiveTutorial,
ingame_HUD_TutorialHints,
ingame_HUD_InteractiveTutorial,
ingame_HUD_BuildingsToolbar,
ingame_HUD_wires_toolbar,
ingame_HUD_BlueprintPlacer,

View File

@ -1,4 +1,13 @@
export const CHANGELOG = [
{
version: "1.2.1",
date: "unreleased",
entries: [
"Fixed stacking bug for level 26 which required restarting the game",
"Fix reward notification being too long sometimes (by LeopoldTal)",
"Updated translations",
],
},
{
version: "1.2.0",
date: "09.10.2020",

View File

@ -1,467 +1,465 @@
import { createLogger } from "../core/logging";
import { Signal } from "../core/signal";
import { fastArrayDelete, fastArrayDeleteValueIfContained } from "./utils";
import { Vector } from "./vector";
import { IS_MOBILE, SUPPORT_TOUCH } from "./config";
import { SOUNDS } from "../platform/sound";
import { GLOBAL_APP } from "./globals";
const logger = createLogger("click_detector");
export const MAX_MOVE_DISTANCE_PX = IS_MOBILE ? 20 : 80;
// For debugging
const registerClickDetectors = G_IS_DEV && true;
if (registerClickDetectors) {
/** @type {Array<ClickDetector>} */
window.activeClickDetectors = [];
}
// Store active click detectors so we can cancel them
/** @type {Array<ClickDetector>} */
const ongoingClickDetectors = [];
// Store when the last touch event was registered, to avoid accepting a touch *and* a click event
export let clickDetectorGlobals = {
lastTouchTime: -1000,
};
/**
* Click detector creation payload typehints
* @typedef {{
* consumeEvents?: boolean,
* preventDefault?: boolean,
* applyCssClass?: string,
* captureTouchmove?: boolean,
* targetOnly?: boolean,
* maxDistance?: number,
* clickSound?: string,
* preventClick?: boolean,
* }} ClickDetectorConstructorArgs
*/
// Detects clicks
export class ClickDetector {
/**
*
* @param {Element} element
* @param {object} param1
* @param {boolean=} param1.consumeEvents Whether to call stopPropagation
* (Useful for nested elements where the parent has a click handler as wel)
* @param {boolean=} param1.preventDefault Whether to call preventDefault (Usually makes the handler faster)
* @param {string=} param1.applyCssClass The css class to add while the element is pressed
* @param {boolean=} param1.captureTouchmove Whether to capture touchmove events as well
* @param {boolean=} param1.targetOnly Whether to also accept clicks on child elements (e.target !== element)
* @param {number=} param1.maxDistance The maximum distance in pixels to accept clicks
* @param {string=} param1.clickSound Sound key to play on touchdown
* @param {boolean=} param1.preventClick Whether to prevent click events
*/
constructor(
element,
{
consumeEvents = false,
preventDefault = true,
applyCssClass = "pressed",
captureTouchmove = false,
targetOnly = false,
maxDistance = MAX_MOVE_DISTANCE_PX,
clickSound = SOUNDS.uiClick,
preventClick = false,
}
) {
assert(element, "No element given!");
this.clickDownPosition = null;
this.consumeEvents = consumeEvents;
this.preventDefault = preventDefault;
this.applyCssClass = applyCssClass;
this.captureTouchmove = captureTouchmove;
this.targetOnly = targetOnly;
this.clickSound = clickSound;
this.maxDistance = maxDistance;
this.preventClick = preventClick;
// Signals
this.click = new Signal();
this.rightClick = new Signal();
this.touchstart = new Signal();
this.touchmove = new Signal();
this.touchend = new Signal();
this.touchcancel = new Signal();
// Simple signals which just receive the touch position
this.touchstartSimple = new Signal();
this.touchmoveSimple = new Signal();
this.touchendSimple = new Signal();
// Store time of touch start
this.clickStartTime = null;
// A click can be cancelled if another detector registers a click
this.cancelled = false;
this.internalBindTo(/** @type {HTMLElement} */ (element));
}
/**
* Cleans up all event listeners of this detector
*/
cleanup() {
if (this.element) {
if (registerClickDetectors) {
const index = window.activeClickDetectors.indexOf(this);
if (index < 0) {
logger.error("Click detector cleanup but is not active");
} else {
window.activeClickDetectors.splice(index, 1);
}
}
const options = this.internalGetEventListenerOptions();
if (SUPPORT_TOUCH) {
this.element.removeEventListener("touchstart", this.handlerTouchStart, options);
this.element.removeEventListener("touchend", this.handlerTouchEnd, options);
this.element.removeEventListener("touchcancel", this.handlerTouchCancel, options);
}
this.element.removeEventListener("mouseup", this.handlerTouchStart, options);
this.element.removeEventListener("mousedown", this.handlerTouchEnd, options);
this.element.removeEventListener("mouseout", this.handlerTouchCancel, options);
if (this.captureTouchmove) {
if (SUPPORT_TOUCH) {
this.element.removeEventListener("touchmove", this.handlerTouchMove, options);
}
this.element.removeEventListener("mousemove", this.handlerTouchMove, options);
}
if (this.preventClick) {
this.element.removeEventListener("click", this.handlerPreventClick, options);
}
this.click.removeAll();
this.touchstart.removeAll();
this.touchmove.removeAll();
this.touchend.removeAll();
this.touchcancel.removeAll();
// TODO: Remove pointer captures
this.element = null;
}
}
// INTERNAL METHODS
/**
*
* @param {Event} event
*/
internalPreventClick(event) {
window.focus();
event.preventDefault();
}
/**
* Internal method to get the options to pass to an event listener
*/
internalGetEventListenerOptions() {
return {
capture: this.consumeEvents,
passive: !this.preventDefault,
};
}
/**
* Binds the click detector to an element
* @param {HTMLElement} element
*/
internalBindTo(element) {
const options = this.internalGetEventListenerOptions();
this.handlerTouchStart = this.internalOnPointerDown.bind(this);
this.handlerTouchEnd = this.internalOnPointerEnd.bind(this);
this.handlerTouchMove = this.internalOnPointerMove.bind(this);
this.handlerTouchCancel = this.internalOnTouchCancel.bind(this);
if (this.preventClick) {
this.handlerPreventClick = this.internalPreventClick.bind(this);
element.addEventListener("click", this.handlerPreventClick, options);
}
if (SUPPORT_TOUCH) {
element.addEventListener("touchstart", this.handlerTouchStart, options);
element.addEventListener("touchend", this.handlerTouchEnd, options);
element.addEventListener("touchcancel", this.handlerTouchCancel, options);
}
element.addEventListener("mousedown", this.handlerTouchStart, options);
element.addEventListener("mouseup", this.handlerTouchEnd, options);
element.addEventListener("mouseout", this.handlerTouchCancel, options);
if (this.captureTouchmove) {
if (SUPPORT_TOUCH) {
element.addEventListener("touchmove", this.handlerTouchMove, options);
}
element.addEventListener("mousemove", this.handlerTouchMove, options);
}
if (registerClickDetectors) {
window.activeClickDetectors.push(this);
}
this.element = element;
}
/**
* Returns if the bound element is currently in the DOM.
*/
internalIsDomElementAttached() {
return this.element && document.documentElement.contains(this.element);
}
/**
* Checks if the given event is relevant for this detector
* @param {TouchEvent|MouseEvent} event
*/
internalEventPreHandler(event, expectedRemainingTouches = 1) {
if (!this.element) {
// Already cleaned up
return false;
}
if (this.targetOnly && event.target !== this.element) {
// Clicked a child element
return false;
}
// Stop any propagation and defaults if configured
if (this.consumeEvents && event.cancelable) {
event.stopPropagation();
}
if (this.preventDefault && event.cancelable) {
event.preventDefault();
}
if (window.TouchEvent && event instanceof TouchEvent) {
clickDetectorGlobals.lastTouchTime = performance.now();
// console.log("Got touches", event.targetTouches.length, "vs", expectedRemainingTouches);
if (event.targetTouches.length !== expectedRemainingTouches) {
return false;
}
}
if (event instanceof MouseEvent) {
if (performance.now() - clickDetectorGlobals.lastTouchTime < 1000.0) {
return false;
}
}
return true;
}
/**
* Extracts the mous position from an event
* @param {TouchEvent|MouseEvent} event
* @returns {Vector} The client space position
*/
static extractPointerPosition(event) {
if (window.TouchEvent && event instanceof TouchEvent) {
if (event.changedTouches.length !== 1) {
logger.warn(
"Got unexpected target touches:",
event.targetTouches.length,
"->",
event.targetTouches
);
return new Vector(0, 0);
}
const touch = event.changedTouches[0];
return new Vector(touch.clientX, touch.clientY);
}
if (event instanceof MouseEvent) {
return new Vector(event.clientX, event.clientY);
}
assertAlways(false, "Got unknown event: " + event);
return new Vector(0, 0);
}
/**
* Cacnels all ongoing events on this detector
*/
cancelOngoingEvents() {
if (this.applyCssClass && this.element) {
this.element.classList.remove(this.applyCssClass);
}
this.clickDownPosition = null;
this.clickStartTime = null;
this.cancelled = true;
fastArrayDeleteValueIfContained(ongoingClickDetectors, this);
}
/**
* Internal pointer down handler
* @param {TouchEvent|MouseEvent} event
*/
internalOnPointerDown(event) {
window.focus();
if (!this.internalEventPreHandler(event, 1)) {
return false;
}
const position = /** @type {typeof ClickDetector} */ (this.constructor).extractPointerPosition(event);
if (event instanceof MouseEvent) {
const isRightClick = event.button === 2;
if (isRightClick) {
// Ignore right clicks
this.rightClick.dispatch(position, event);
this.cancelled = true;
this.clickDownPosition = null;
return;
}
}
if (this.clickDownPosition) {
logger.warn("Ignoring double click");
return false;
}
this.cancelled = false;
this.touchstart.dispatch(event);
// Store where the touch started
this.clickDownPosition = position;
this.clickStartTime = performance.now();
this.touchstartSimple.dispatch(this.clickDownPosition.x, this.clickDownPosition.y);
// If we are not currently within a click, register it
if (ongoingClickDetectors.indexOf(this) < 0) {
ongoingClickDetectors.push(this);
} else {
logger.warn("Click detector got pointer down of active pointer twice");
}
// If we should apply any classes, do this now
if (this.applyCssClass) {
this.element.classList.add(this.applyCssClass);
}
// If we should play any sound, do this
if (this.clickSound) {
GLOBAL_APP.sound.playUiSound(this.clickSound);
}
return false;
}
/**
* Internal pointer move handler
* @param {TouchEvent|MouseEvent} event
*/
internalOnPointerMove(event) {
if (!this.internalEventPreHandler(event, 1)) {
return false;
}
this.touchmove.dispatch(event);
const pos = /** @type {typeof ClickDetector} */ (this.constructor).extractPointerPosition(event);
this.touchmoveSimple.dispatch(pos.x, pos.y);
return false;
}
/**
* Internal pointer end handler
* @param {TouchEvent|MouseEvent} event
*/
internalOnPointerEnd(event) {
window.focus();
if (!this.internalEventPreHandler(event, 0)) {
return false;
}
if (this.cancelled) {
// warn(this, "Not dispatching touchend on cancelled listener");
return false;
}
if (event instanceof MouseEvent) {
const isRightClick = event.button === 2;
if (isRightClick) {
return;
}
}
const index = ongoingClickDetectors.indexOf(this);
if (index < 0) {
logger.warn("Got pointer end but click detector is not in pressed state");
} else {
fastArrayDelete(ongoingClickDetectors, index);
}
let dispatchClick = false;
let dispatchClickPos = null;
// Check for correct down position, otherwise must have pinched or so
if (this.clickDownPosition) {
const pos = /** @type {typeof ClickDetector} */ (this.constructor).extractPointerPosition(event);
const distance = pos.distance(this.clickDownPosition);
if (!IS_MOBILE || distance <= this.maxDistance) {
dispatchClick = true;
dispatchClickPos = pos;
} else {
console.warn("[ClickDetector] Touch does not count as click:", "(was", distance, ")");
}
}
this.clickDownPosition = null;
this.clickStartTime = null;
if (this.applyCssClass) {
this.element.classList.remove(this.applyCssClass);
}
// Dispatch in the end to avoid the element getting invalidated
// Also make sure that the element is still in the dom
if (this.internalIsDomElementAttached()) {
this.touchend.dispatch(event);
this.touchendSimple.dispatch();
if (dispatchClick) {
const detectors = ongoingClickDetectors.slice();
for (let i = 0; i < detectors.length; ++i) {
detectors[i].cancelOngoingEvents();
}
this.click.dispatch(dispatchClickPos, event);
}
}
return false;
}
/**
* Internal touch cancel handler
* @param {TouchEvent|MouseEvent} event
*/
internalOnTouchCancel(event) {
if (!this.internalEventPreHandler(event, 0)) {
return false;
}
if (this.cancelled) {
// warn(this, "Not dispatching touchcancel on cancelled listener");
return false;
}
this.cancelOngoingEvents();
this.touchcancel.dispatch(event);
this.touchendSimple.dispatch(event);
return false;
}
}
import { createLogger } from "../core/logging";
import { Signal } from "../core/signal";
import { fastArrayDelete, fastArrayDeleteValueIfContained } from "./utils";
import { Vector } from "./vector";
import { IS_MOBILE, SUPPORT_TOUCH } from "./config";
import { SOUNDS } from "../platform/sound";
import { GLOBAL_APP } from "./globals";
const logger = createLogger("click_detector");
export const MAX_MOVE_DISTANCE_PX = IS_MOBILE ? 20 : 80;
// For debugging
const registerClickDetectors = G_IS_DEV && true;
if (registerClickDetectors) {
/** @type {Array<ClickDetector>} */
window.activeClickDetectors = [];
}
// Store active click detectors so we can cancel them
/** @type {Array<ClickDetector>} */
const ongoingClickDetectors = [];
// Store when the last touch event was registered, to avoid accepting a touch *and* a click event
export let clickDetectorGlobals = {
lastTouchTime: -1000,
};
/**
* Click detector creation payload typehints
* @typedef {{
* consumeEvents?: boolean,
* preventDefault?: boolean,
* applyCssClass?: string,
* captureTouchmove?: boolean,
* targetOnly?: boolean,
* maxDistance?: number,
* clickSound?: string,
* preventClick?: boolean,
* }} ClickDetectorConstructorArgs
*/
// Detects clicks
export class ClickDetector {
/**
*
* @param {Element} element
* @param {object} param1
* @param {boolean=} param1.consumeEvents Whether to call stopPropagation
* (Useful for nested elements where the parent has a click handler as wel)
* @param {boolean=} param1.preventDefault Whether to call preventDefault (Usually makes the handler faster)
* @param {string=} param1.applyCssClass The css class to add while the element is pressed
* @param {boolean=} param1.captureTouchmove Whether to capture touchmove events as well
* @param {boolean=} param1.targetOnly Whether to also accept clicks on child elements (e.target !== element)
* @param {number=} param1.maxDistance The maximum distance in pixels to accept clicks
* @param {string=} param1.clickSound Sound key to play on touchdown
* @param {boolean=} param1.preventClick Whether to prevent click events
*/
constructor(
element,
{
consumeEvents = false,
preventDefault = true,
applyCssClass = "pressed",
captureTouchmove = false,
targetOnly = false,
maxDistance = MAX_MOVE_DISTANCE_PX,
clickSound = SOUNDS.uiClick,
preventClick = false,
}
) {
assert(element, "No element given!");
this.clickDownPosition = null;
this.consumeEvents = consumeEvents;
this.preventDefault = preventDefault;
this.applyCssClass = applyCssClass;
this.captureTouchmove = captureTouchmove;
this.targetOnly = targetOnly;
this.clickSound = clickSound;
this.maxDistance = maxDistance;
this.preventClick = preventClick;
// Signals
this.click = new Signal();
this.rightClick = new Signal();
this.touchstart = new Signal();
this.touchmove = new Signal();
this.touchend = new Signal();
this.touchcancel = new Signal();
// Simple signals which just receive the touch position
this.touchstartSimple = new Signal();
this.touchmoveSimple = new Signal();
this.touchendSimple = new Signal();
// Store time of touch start
this.clickStartTime = null;
// A click can be cancelled if another detector registers a click
this.cancelled = false;
this.internalBindTo(/** @type {HTMLElement} */ (element));
}
/**
* Cleans up all event listeners of this detector
*/
cleanup() {
if (this.element) {
if (registerClickDetectors) {
const index = window.activeClickDetectors.indexOf(this);
if (index < 0) {
logger.error("Click detector cleanup but is not active");
} else {
window.activeClickDetectors.splice(index, 1);
}
}
const options = this.internalGetEventListenerOptions();
if (SUPPORT_TOUCH) {
this.element.removeEventListener("touchstart", this.handlerTouchStart, options);
this.element.removeEventListener("touchend", this.handlerTouchEnd, options);
this.element.removeEventListener("touchcancel", this.handlerTouchCancel, options);
}
this.element.removeEventListener("mouseup", this.handlerTouchStart, options);
this.element.removeEventListener("mousedown", this.handlerTouchEnd, options);
this.element.removeEventListener("mouseout", this.handlerTouchCancel, options);
if (this.captureTouchmove) {
if (SUPPORT_TOUCH) {
this.element.removeEventListener("touchmove", this.handlerTouchMove, options);
}
this.element.removeEventListener("mousemove", this.handlerTouchMove, options);
}
if (this.preventClick) {
this.element.removeEventListener("click", this.handlerPreventClick, options);
}
this.click.removeAll();
this.touchstart.removeAll();
this.touchmove.removeAll();
this.touchend.removeAll();
this.touchcancel.removeAll();
this.element = null;
}
}
// INTERNAL METHODS
/**
*
* @param {Event} event
*/
internalPreventClick(event) {
window.focus();
event.preventDefault();
}
/**
* Internal method to get the options to pass to an event listener
*/
internalGetEventListenerOptions() {
return {
capture: this.consumeEvents,
passive: !this.preventDefault,
};
}
/**
* Binds the click detector to an element
* @param {HTMLElement} element
*/
internalBindTo(element) {
const options = this.internalGetEventListenerOptions();
this.handlerTouchStart = this.internalOnPointerDown.bind(this);
this.handlerTouchEnd = this.internalOnPointerEnd.bind(this);
this.handlerTouchMove = this.internalOnPointerMove.bind(this);
this.handlerTouchCancel = this.internalOnTouchCancel.bind(this);
if (this.preventClick) {
this.handlerPreventClick = this.internalPreventClick.bind(this);
element.addEventListener("click", this.handlerPreventClick, options);
}
if (SUPPORT_TOUCH) {
element.addEventListener("touchstart", this.handlerTouchStart, options);
element.addEventListener("touchend", this.handlerTouchEnd, options);
element.addEventListener("touchcancel", this.handlerTouchCancel, options);
}
element.addEventListener("mousedown", this.handlerTouchStart, options);
element.addEventListener("mouseup", this.handlerTouchEnd, options);
element.addEventListener("mouseout", this.handlerTouchCancel, options);
if (this.captureTouchmove) {
if (SUPPORT_TOUCH) {
element.addEventListener("touchmove", this.handlerTouchMove, options);
}
element.addEventListener("mousemove", this.handlerTouchMove, options);
}
if (registerClickDetectors) {
window.activeClickDetectors.push(this);
}
this.element = element;
}
/**
* Returns if the bound element is currently in the DOM.
*/
internalIsDomElementAttached() {
return this.element && document.documentElement.contains(this.element);
}
/**
* Checks if the given event is relevant for this detector
* @param {TouchEvent|MouseEvent} event
*/
internalEventPreHandler(event, expectedRemainingTouches = 1) {
if (!this.element) {
// Already cleaned up
return false;
}
if (this.targetOnly && event.target !== this.element) {
// Clicked a child element
return false;
}
// Stop any propagation and defaults if configured
if (this.consumeEvents && event.cancelable) {
event.stopPropagation();
}
if (this.preventDefault && event.cancelable) {
event.preventDefault();
}
if (window.TouchEvent && event instanceof TouchEvent) {
clickDetectorGlobals.lastTouchTime = performance.now();
// console.log("Got touches", event.targetTouches.length, "vs", expectedRemainingTouches);
if (event.targetTouches.length !== expectedRemainingTouches) {
return false;
}
}
if (event instanceof MouseEvent) {
if (performance.now() - clickDetectorGlobals.lastTouchTime < 1000.0) {
return false;
}
}
return true;
}
/**
* Extracts the mous position from an event
* @param {TouchEvent|MouseEvent} event
* @returns {Vector} The client space position
*/
static extractPointerPosition(event) {
if (window.TouchEvent && event instanceof TouchEvent) {
if (event.changedTouches.length !== 1) {
logger.warn(
"Got unexpected target touches:",
event.targetTouches.length,
"->",
event.targetTouches
);
return new Vector(0, 0);
}
const touch = event.changedTouches[0];
return new Vector(touch.clientX, touch.clientY);
}
if (event instanceof MouseEvent) {
return new Vector(event.clientX, event.clientY);
}
assertAlways(false, "Got unknown event: " + event);
return new Vector(0, 0);
}
/**
* Cacnels all ongoing events on this detector
*/
cancelOngoingEvents() {
if (this.applyCssClass && this.element) {
this.element.classList.remove(this.applyCssClass);
}
this.clickDownPosition = null;
this.clickStartTime = null;
this.cancelled = true;
fastArrayDeleteValueIfContained(ongoingClickDetectors, this);
}
/**
* Internal pointer down handler
* @param {TouchEvent|MouseEvent} event
*/
internalOnPointerDown(event) {
window.focus();
if (!this.internalEventPreHandler(event, 1)) {
return false;
}
const position = /** @type {typeof ClickDetector} */ (this.constructor).extractPointerPosition(event);
if (event instanceof MouseEvent) {
const isRightClick = event.button === 2;
if (isRightClick) {
// Ignore right clicks
this.rightClick.dispatch(position, event);
this.cancelled = true;
this.clickDownPosition = null;
return;
}
}
if (this.clickDownPosition) {
logger.warn("Ignoring double click");
return false;
}
this.cancelled = false;
this.touchstart.dispatch(event);
// Store where the touch started
this.clickDownPosition = position;
this.clickStartTime = performance.now();
this.touchstartSimple.dispatch(this.clickDownPosition.x, this.clickDownPosition.y);
// If we are not currently within a click, register it
if (ongoingClickDetectors.indexOf(this) < 0) {
ongoingClickDetectors.push(this);
} else {
logger.warn("Click detector got pointer down of active pointer twice");
}
// If we should apply any classes, do this now
if (this.applyCssClass) {
this.element.classList.add(this.applyCssClass);
}
// If we should play any sound, do this
if (this.clickSound) {
GLOBAL_APP.sound.playUiSound(this.clickSound);
}
return false;
}
/**
* Internal pointer move handler
* @param {TouchEvent|MouseEvent} event
*/
internalOnPointerMove(event) {
if (!this.internalEventPreHandler(event, 1)) {
return false;
}
this.touchmove.dispatch(event);
const pos = /** @type {typeof ClickDetector} */ (this.constructor).extractPointerPosition(event);
this.touchmoveSimple.dispatch(pos.x, pos.y);
return false;
}
/**
* Internal pointer end handler
* @param {TouchEvent|MouseEvent} event
*/
internalOnPointerEnd(event) {
window.focus();
if (!this.internalEventPreHandler(event, 0)) {
return false;
}
if (this.cancelled) {
// warn(this, "Not dispatching touchend on cancelled listener");
return false;
}
if (event instanceof MouseEvent) {
const isRightClick = event.button === 2;
if (isRightClick) {
return;
}
}
const index = ongoingClickDetectors.indexOf(this);
if (index < 0) {
logger.warn("Got pointer end but click detector is not in pressed state");
} else {
fastArrayDelete(ongoingClickDetectors, index);
}
let dispatchClick = false;
let dispatchClickPos = null;
// Check for correct down position, otherwise must have pinched or so
if (this.clickDownPosition) {
const pos = /** @type {typeof ClickDetector} */ (this.constructor).extractPointerPosition(event);
const distance = pos.distance(this.clickDownPosition);
if (!IS_MOBILE || distance <= this.maxDistance) {
dispatchClick = true;
dispatchClickPos = pos;
} else {
console.warn("[ClickDetector] Touch does not count as click:", "(was", distance, ")");
}
}
this.clickDownPosition = null;
this.clickStartTime = null;
if (this.applyCssClass) {
this.element.classList.remove(this.applyCssClass);
}
// Dispatch in the end to avoid the element getting invalidated
// Also make sure that the element is still in the dom
if (this.internalIsDomElementAttached()) {
this.touchend.dispatch(event);
this.touchendSimple.dispatch();
if (dispatchClick) {
const detectors = ongoingClickDetectors.slice();
for (let i = 0; i < detectors.length; ++i) {
detectors[i].cancelOngoingEvents();
}
this.click.dispatch(dispatchClickPos, event);
}
}
return false;
}
/**
* Internal touch cancel handler
* @param {TouchEvent|MouseEvent} event
*/
internalOnTouchCancel(event) {
if (!this.internalEventPreHandler(event, 0)) {
return false;
}
if (this.cancelled) {
// warn(this, "Not dispatching touchcancel on cancelled listener");
return false;
}
this.cancelOngoingEvents();
this.touchcancel.dispatch(event);
this.touchendSimple.dispatch(event);
return false;
}
}

View File

@ -18,6 +18,12 @@ export const THIRDPARTY_URLS = {
shapeViewer: "https://viewer.shapez.io",
standaloneStorePage: "https://store.steampowered.com/app/1318690/shapezio/",
levelTutorialVideos: {
21: "https://www.youtube.com/watch?v=0nUfRLMCcgo&",
25: "https://www.youtube.com/watch?v=7OCV1g40Iew&",
26: "https://www.youtube.com/watch?v=gfm6dS1dCoY",
},
};
export const A_B_TESTING_LINK_TYPE = Math.random() > 0.5 ? "steam_1_pr" : "steam_2_npr";
@ -132,3 +138,8 @@ if (G_IS_DEV && globalConfig.debug.renderForTrailer) {
if (globalConfig.debug.fastGameEnter) {
globalConfig.debug.noArtificialDelays = true;
}
if (G_IS_DEV && globalConfig.debug.noArtificialDelays) {
globalConfig.warmupTimeSecondsFast = 0;
globalConfig.warmupTimeSecondsRegular = 0;
}

View File

@ -1,26 +1,25 @@
import { globalConfig } from "./config";
/**
* @typedef {import("../game/root").GameRoot} GameRoot
* @typedef {import("./rectangle").Rectangle} Rectangle
*/
export class DrawParameters {
constructor({ context, visibleRect, desiredAtlasScale, zoomLevel, root }) {
/** @type {CanvasRenderingContext2D} */
this.context = context;
/** @type {Rectangle} */
this.visibleRect = visibleRect;
/** @type {string} */
this.desiredAtlasScale = desiredAtlasScale;
/** @type {number} */
this.zoomLevel = zoomLevel;
// FIXME: Not really nice
/** @type {GameRoot} */
this.root = root;
}
}
import { globalConfig } from "./config";
/**
* @typedef {import("../game/root").GameRoot} GameRoot
* @typedef {import("./rectangle").Rectangle} Rectangle
*/
export class DrawParameters {
constructor({ context, visibleRect, desiredAtlasScale, zoomLevel, root }) {
/** @type {CanvasRenderingContext2D} */
this.context = context;
/** @type {Rectangle} */
this.visibleRect = visibleRect;
/** @type {string} */
this.desiredAtlasScale = desiredAtlasScale;
/** @type {number} */
this.zoomLevel = zoomLevel;
/** @type {GameRoot} */
this.root = root;
}
}

View File

@ -13,6 +13,17 @@ import { getStringForKeyCode } from "../game/key_action_mapper";
import { createLogger } from "./logging";
import { T } from "../translations";
/*
* ***************************************************
*
* LEGACY CODE WARNING
*
* This is old code from yorg3.io and needs to be refactored
* @TODO
*
* ***************************************************
*/
const kbEnter = 13;
const kbCancel = 27;

View File

@ -2,6 +2,17 @@ import { BaseItem } from "../game/base_item";
import { ClickDetector } from "./click_detector";
import { Signal } from "./signal";
/*
* ***************************************************
*
* LEGACY CODE WARNING
*
* This is old code from yorg3.io and needs to be refactored
* @TODO
*
* ***************************************************
*/
export class FormElement {
constructor(id, label) {
this.id = id;

View File

@ -44,7 +44,6 @@ export class RestrictionManager extends ReadWriteProxy {
* @param {any} data
*/
migrate(data) {
// Todo
return ExplainedResult.good();
}

View File

@ -108,17 +108,6 @@ export class RandomNumberGenerator {
assert(max > min, "rng: max <= min");
return Math.floor(this.next() * (max - min) + min);
}
/**
* @param {number} min
* @param {number} max
* @returns {number} Integer in range [min, max]
*/
nextIntRangeInclusive(min, max) {
assert(Number.isFinite(min), "Minimum is no integer");
assert(Number.isFinite(max), "Maximum is no integer");
assert(max > min, "rng: max <= min");
return Math.round(this.next() * (max - min) + min);
}
/**
* @param {number} min

View File

@ -41,7 +41,7 @@ const variantsCache = new Map();
export function registerBuildingVariant(
code,
meta,
variant = "default" /* FIXME: Circular dependency, actually its defaultBuildingVariant */,
variant = "default" /* @TODO: Circular dependency, actually its defaultBuildingVariant */,
rotationVariant = 0
) {
assert(!gBuildingVariants[code], "Duplicate id: " + code);

View File

@ -7,6 +7,7 @@ import { BeltComponent } from "../components/belt";
import { Entity } from "../entity";
import { MetaBuilding } from "../meta_building";
import { GameRoot } from "../root";
import { THEME } from "../theme";
export const arrayBeltVariantToRotation = [enumDirection.top, enumDirection.left, enumDirection.right];
@ -22,7 +23,7 @@ export class MetaBeltBuilding extends MetaBuilding {
}
getSilhouetteColor() {
return "#777";
return THEME.map.chunkOverview.beltColor;
}
getPlacementSound() {

View File

@ -191,7 +191,6 @@ export class MetaUndergroundBeltBuilding extends MetaBuilding {
) {
tile = tile.addScalars(searchVector.x, searchVector.y);
/* WIRES: FIXME */
const contents = root.map.getTileContent(tile, "regular");
if (contents) {
const undergroundComp = contents.components.UndergroundBelt;

View File

@ -26,7 +26,7 @@ export class ItemEjectorComponent extends Component {
static getSchema() {
// The cachedDestSlot, cachedTargetEntity fields are not serialized.
return {
slots: types.array(
slots: types.fixedSizeArray(
types.structured({
item: types.nullable(typeItemSingleton),
progress: types.float,

View File

@ -31,7 +31,7 @@ export class WiredPinsComponent extends Component {
static getSchema() {
return {
slots: types.array(
slots: types.fixedSizeArray(
types.structured({
value: types.nullable(typeItemSingleton),
})

View File

@ -182,23 +182,6 @@ export class EntityManager extends BasicSerializableObject {
return this.componentToEntity[componentHandle.getId()] || [];
}
/**
* Return all of a given class. This is SLOW!
* @param {object} entityClass
* @returns {Array<Entity>} entities
*/
getAllOfClass(entityClass) {
// FIXME: Slow
const result = [];
for (let i = 0; i < this.entities.length; ++i) {
const entity = this.entities[i];
if (entity instanceof entityClass) {
result.push(entity);
}
}
return result;
}
/**
* Unregisters all components of an entity from the component to entity mapping
* @param {Entity} entity

View File

@ -369,7 +369,7 @@ export class HubGoals extends BasicSerializableObject {
if (allowUncolored) {
universalColors.push(enumColors.uncolored);
}
const index = rng.nextIntRangeInclusive(0, colorWheel.length - 3);
const index = rng.nextIntRange(0, colorWheel.length - 2);
const pickedColors = colorWheel.slice(index, index + 3);
pickedColors.push(rng.choice(universalColors));
return pickedColors;

View File

@ -47,6 +47,7 @@ import { HUDMinerHighlight } from "./parts/miner_highlight";
import { HUDBetaOverlay } from "./parts/beta_overlay";
import { HUDStandaloneAdvantages } from "./parts/standalone_advantages";
import { HUDCatMemes } from "./parts/cat_memes";
import { HUDTutorialVideoOffer } from "./parts/tutorial_video_offer";
export class GameHUD {
/**
@ -60,6 +61,18 @@ export class GameHUD {
* Initializes the hud parts
*/
initialize() {
this.signals = {
buildingSelectedForPlacement: /** @type {TypedSignal<[MetaBuilding|null]>} */ (new Signal()),
selectedPlacementBuildingChanged: /** @type {TypedSignal<[MetaBuilding|null]>} */ (new Signal()),
shapePinRequested: /** @type {TypedSignal<[ShapeDefinition]>} */ (new Signal()),
shapeUnpinRequested: /** @type {TypedSignal<[string]>} */ (new Signal()),
notification: /** @type {TypedSignal<[string, enumNotificationType]>} */ (new Signal()),
buildingsSelectedForCopy: /** @type {TypedSignal<[Array<number>]>} */ (new Signal()),
pasteBlueprintRequested: /** @type {TypedSignal<[]>} */ (new Signal()),
viewShapeDetailsRequested: /** @type {TypedSignal<[ShapeDefinition]>} */ (new Signal()),
unlockNotificationFinished: /** @type {TypedSignal<[]>} */ (new Signal()),
};
this.parts = {
buildingsToolbar: new HUDBuildingsToolbar(this.root),
wiresToolbar: new HUDWiresToolbar(this.root),
@ -87,6 +100,7 @@ export class GameHUD {
layerPreview: new HUDLayerPreview(this.root),
minerHighlight: new HUDMinerHighlight(this.root),
tutorialVideoOffer: new HUDTutorialVideoOffer(this.root),
// Typing hints
/* typehints:start */
@ -95,17 +109,6 @@ export class GameHUD {
/* typehints:end */
};
this.signals = {
buildingSelectedForPlacement: /** @type {TypedSignal<[MetaBuilding|null]>} */ (new Signal()),
selectedPlacementBuildingChanged: /** @type {TypedSignal<[MetaBuilding|null]>} */ (new Signal()),
shapePinRequested: /** @type {TypedSignal<[ShapeDefinition]>} */ (new Signal()),
shapeUnpinRequested: /** @type {TypedSignal<[string]>} */ (new Signal()),
notification: /** @type {TypedSignal<[string, enumNotificationType]>} */ (new Signal()),
buildingsSelectedForCopy: /** @type {TypedSignal<[Array<number>]>} */ (new Signal()),
pasteBlueprintRequested: /** @type {TypedSignal<[]>} */ (new Signal()),
viewShapeDetailsRequested: /** @type {TypedSignal<[ShapeDefinition]>} */ (new Signal()),
};
if (!IS_MOBILE) {
this.parts.keybindingOverlay = new HUDKeybindingOverlay(this.root);
}

View File

@ -6,23 +6,25 @@ import { DynamicDomAttach } from "../dynamic_dom_attach";
import { TrackedState } from "../../../core/tracked_state";
import { cachebust } from "../../../core/cachebust";
import { T } from "../../../translations";
import { enumItemProcessorTypes, ItemProcessorComponent } from "../../components/item_processor";
import { ShapeItem } from "../../items/shape_item";
import { WireComponent } from "../../components/wire";
import { LeverComponent } from "../../components/lever";
// @todo: Make dictionary
const tutorialsByLevel = [
// Level 1
[
// 1.1. place an extractor
{
id: "1_1_extractor",
condition: /** @param {GameRoot} root */ root => {
return root.entityMgr.getAllWithComponent(MinerComponent).length === 0;
},
condition: /** @param {GameRoot} root */ root =>
root.entityMgr.getAllWithComponent(MinerComponent).length === 0,
},
// 1.2. connect to hub
{
id: "1_2_conveyor",
condition: /** @param {GameRoot} root */ root => {
return root.hubGoals.getCurrentGoalDelivered() === 0;
},
condition: /** @param {GameRoot} root */ root => root.hubGoals.getCurrentGoalDelivered() === 0,
},
// 1.3 wait for completion
{
@ -30,6 +32,108 @@ const tutorialsByLevel = [
condition: () => true,
},
],
// Level 2
[
// 2.1 place a cutter
{
id: "2_1_place_cutter",
condition: /** @param {GameRoot} root */ root =>
root.entityMgr
.getAllWithComponent(ItemProcessorComponent)
.filter(e => e.components.ItemProcessor.type === enumItemProcessorTypes.cutter).length ===
0,
},
// 2.2 place trash
{
id: "2_2_place_trash",
condition: /** @param {GameRoot} root */ root =>
root.entityMgr
.getAllWithComponent(ItemProcessorComponent)
.filter(e => e.components.ItemProcessor.type === enumItemProcessorTypes.trash).length ===
0,
},
// 2.3 place more cutters
{
id: "2_3_more_cutters",
condition: /** @param {GameRoot} root */ root =>
root.entityMgr
.getAllWithComponent(ItemProcessorComponent)
.filter(e => e.components.ItemProcessor.type === enumItemProcessorTypes.cutter).length <
3,
},
],
// Level 3
[
// 3.1. rectangles
{
id: "3_1_rectangles",
condition: /** @param {GameRoot} root */ root =>
// 4 miners placed above rectangles and 10 delivered
root.hubGoals.getCurrentGoalDelivered() < 10 ||
root.entityMgr.getAllWithComponent(MinerComponent).filter(entity => {
const tile = entity.components.StaticMapEntity.origin;
const below = root.map.getLowerLayerContentXY(tile.x, tile.y);
if (below && below.getItemType() === "shape") {
const shape = /** @type {ShapeItem} */ (below).definition.getHash();
return shape === "RuRuRuRu";
}
return false;
}).length < 4,
},
],
[], // Level 4
[], // Level 5
[], // Level 6
[], // Level 7
[], // Level 8
[], // Level 9
[], // Level 10
[], // Level 11
[], // Level 12
[], // Level 13
[], // Level 14
[], // Level 15
[], // Level 16
[], // Level 17
[], // Level 18
[], // Level 19
[], // Level 20
// Level 21
[
// 21.1 place quad painter
{
id: "21_1_place_quad_painter",
condition: /** @param {GameRoot} root */ root =>
root.entityMgr
.getAllWithComponent(ItemProcessorComponent)
.filter(e => e.components.ItemProcessor.type === enumItemProcessorTypes.painterQuad)
.length === 0,
},
// 21.2 switch to wires layer
{
id: "21_2_switch_to_wires",
condition: /** @param {GameRoot} root */ root =>
root.entityMgr.getAllWithComponent(WireComponent).length < 5,
},
// 21.3 place button
{
id: "21_3_place_button",
condition: /** @param {GameRoot} root */ root =>
root.entityMgr.getAllWithComponent(LeverComponent).length === 0,
},
// 21.4 activate button
{
id: "21_4_press_button",
condition: /** @param {GameRoot} root */ root =>
root.entityMgr.getAllWithComponent(LeverComponent).some(e => !e.components.Lever.toggled),
},
],
];
export class HUDInteractiveTutorial extends BaseHUDPart {

View File

@ -0,0 +1,34 @@
import { THIRDPARTY_URLS } from "../../../core/config";
import { T } from "../../../translations";
import { BaseHUDPart } from "../base_hud_part";
/**
* Offers to open the tutorial video after completing a level
*/
export class HUDTutorialVideoOffer extends BaseHUDPart {
createElements() {}
initialize() {
this.root.hud.signals.unlockNotificationFinished.add(() => {
const level = this.root.hubGoals.level;
const tutorialVideoLink = THIRDPARTY_URLS.levelTutorialVideos[level];
if (tutorialVideoLink) {
const isForeign = this.root.app.settings.getLanguage() !== "en";
const dialogData = isForeign
? T.dialogs.tutorialVideoAvailableForeignLanguage
: T.dialogs.tutorialVideoAvailable;
const { ok } = this.root.hud.parts.dialogs.showInfo(dialogData.title, dialogData.desc, [
"cancel:bad",
"ok:good",
]);
this.root.app.analytics.trackUiClick("ingame_video_link_show_" + level);
ok.add(() => {
this.root.app.platformWrapper.openExternalLink(tutorialVideoLink);
this.root.app.analytics.trackUiClick("ingame_video_link_open_" + level);
});
}
});
}
}

View File

@ -129,6 +129,8 @@ export class HUDUnlockNotification extends BaseHUDPart {
this.root.app.adProvider.showVideoAd().then(() => {
this.close();
this.root.hud.signals.unlockNotificationFinished.dispatch();
if (!this.root.app.settings.getAllSettings().offerHints) {
return;
}

View File

@ -11,6 +11,7 @@ import { MetaComparatorBuilding } from "../../buildings/comparator";
import { MetaReaderBuilding } from "../../buildings/reader";
import { MetaFilterBuilding } from "../../buildings/filter";
import { MetaDisplayBuilding } from "../../buildings/display";
import { MetaStorageBuilding } from "../../buildings/storage";
export class HUDWiresToolbar extends HUDBaseToolbar {
constructor(root) {
@ -26,6 +27,7 @@ export class HUDWiresToolbar extends HUDBaseToolbar {
MetaTransistorBuilding,
],
secondaryBuildings: [
MetaStorageBuilding,
MetaReaderBuilding,
MetaLeverBuilding,
MetaFilterBuilding,

View File

@ -122,6 +122,7 @@ export const KEYCODE_RMB = 3;
* @returns {string}
*/
export function getStringForKeyCode(code) {
// @todo: Refactor into dictionary
switch (code) {
case KEYCODE_LMB:
return "LMB";

View File

@ -104,15 +104,17 @@ export class MapChunkView extends MapChunk {
});
parameters.context.imageSmoothingEnabled = true;
const resourcesScale = this.root.app.settings.getAllSettings().mapResourcesScale;
// Draw patch items
if (this.root.currentLayer === "regular") {
if (this.root.currentLayer === "regular" && resourcesScale > 0.05) {
const diameter = (70 / Math.pow(parameters.zoomLevel, 0.35)) * (0.2 + 2 * resourcesScale);
for (let i = 0; i < this.patches.length; ++i) {
const patch = this.patches[i];
if (patch.item.getItemType() === "shape") {
const destX = this.x * dims + patch.pos.x * globalConfig.tileSize;
const destY = this.y * dims + patch.pos.y * globalConfig.tileSize;
const diameter = 80 / Math.pow(parameters.zoomLevel, 0.35);
patch.item.drawItemCenteredClipped(destX, destY, parameters, diameter);
}
}

View File

@ -45,7 +45,7 @@ function generateUpgrades(limitedVersion = false) {
const upgrades = {
belt: [
{
required: [{ shape: "CuCuCuCu", amount: 60 }],
required: [{ shape: "CuCuCuCu", amount: 30 }],
},
{
required: [{ shape: "--CuCu--", amount: 500 }],
@ -334,7 +334,7 @@ export function generateLevelDefinitions(limitedVersion = false) {
// Belt reader
{
shape: "--Cg----:--Cr----", // unused
required: 16, // Per second!
required: 8, // Per second!
reward: enumHubGoalRewards.reward_belt_reader,
throughputOnly: true,
},

View File

@ -31,7 +31,7 @@ export class ShapeDefinitionManager extends BasicSerializableObject {
*/
this.shapeKeyToItem = {};
// Caches operations in the form of 'operation:def1[:def2]'
// Caches operations in the form of 'operation/def1[/def2]'
/** @type {Object.<string, Array<ShapeDefinition>|ShapeDefinition>} */
this.operationCache = {};
}
@ -89,7 +89,7 @@ export class ShapeDefinitionManager extends BasicSerializableObject {
* @returns {[ShapeDefinition, ShapeDefinition]}
*/
shapeActionCutHalf(definition) {
const key = "cut:" + definition.getHash();
const key = "cut/" + definition.getHash();
if (this.operationCache[key]) {
return /** @type {[ShapeDefinition, ShapeDefinition]} */ (this.operationCache[key]);
}
@ -108,7 +108,7 @@ export class ShapeDefinitionManager extends BasicSerializableObject {
* @returns {[ShapeDefinition, ShapeDefinition, ShapeDefinition, ShapeDefinition]}
*/
shapeActionCutQuad(definition) {
const key = "cut-quad:" + definition.getHash();
const key = "cut-quad/" + definition.getHash();
if (this.operationCache[key]) {
return /** @type {[ShapeDefinition, ShapeDefinition, ShapeDefinition, ShapeDefinition]} */ (this
.operationCache[key]);
@ -130,7 +130,7 @@ export class ShapeDefinitionManager extends BasicSerializableObject {
* @returns {ShapeDefinition}
*/
shapeActionRotateCW(definition) {
const key = "rotate-cw:" + definition.getHash();
const key = "rotate-cw/" + definition.getHash();
if (this.operationCache[key]) {
return /** @type {ShapeDefinition} */ (this.operationCache[key]);
}
@ -148,7 +148,7 @@ export class ShapeDefinitionManager extends BasicSerializableObject {
* @returns {ShapeDefinition}
*/
shapeActionRotateCCW(definition) {
const key = "rotate-ccw:" + definition.getHash();
const key = "rotate-ccw/" + definition.getHash();
if (this.operationCache[key]) {
return /** @type {ShapeDefinition} */ (this.operationCache[key]);
}
@ -166,7 +166,7 @@ export class ShapeDefinitionManager extends BasicSerializableObject {
* @returns {ShapeDefinition}
*/
shapeActionRotate180(definition) {
const key = "rotate-fl:" + definition.getHash();
const key = "rotate-fl/" + definition.getHash();
if (this.operationCache[key]) {
return /** @type {ShapeDefinition} */ (this.operationCache[key]);
}
@ -185,7 +185,7 @@ export class ShapeDefinitionManager extends BasicSerializableObject {
* @returns {ShapeDefinition}
*/
shapeActionStack(lowerDefinition, upperDefinition) {
const key = "stack:" + lowerDefinition.getHash() + ":" + upperDefinition.getHash();
const key = "stack/" + lowerDefinition.getHash() + "/" + upperDefinition.getHash();
if (this.operationCache[key]) {
return /** @type {ShapeDefinition} */ (this.operationCache[key]);
}
@ -202,7 +202,7 @@ export class ShapeDefinitionManager extends BasicSerializableObject {
* @returns {ShapeDefinition}
*/
shapeActionPaintWith(definition, color) {
const key = "paint:" + definition.getHash() + ":" + color;
const key = "paint/" + definition.getHash() + "/" + color;
if (this.operationCache[key]) {
return /** @type {ShapeDefinition} */ (this.operationCache[key]);
}
@ -219,7 +219,7 @@ export class ShapeDefinitionManager extends BasicSerializableObject {
* @returns {ShapeDefinition}
*/
shapeActionPaintWith4Colors(definition, colors) {
const key = "paint4:" + definition.getHash() + ":" + colors.join(",");
const key = "paint4/" + definition.getHash() + "/" + colors.join(",");
if (this.operationCache[key]) {
return /** @type {ShapeDefinition} */ (this.operationCache[key]);
}

View File

@ -48,7 +48,7 @@ export class BeltReaderSystem extends GameSystemWithFilter {
throughput = 1 / (averageSpacing / averageSpacingNum);
}
readerComp.lastThroughput = Math.min(30, throughput);
readerComp.lastThroughput = Math.min(globalConfig.beltSpeedItemsPerSecond * 23.9, throughput);
}
}
}

View File

@ -225,8 +225,7 @@ export class ItemEjectorSystem extends GameSystemWithFilter {
*/
tryPassOverItem(item, receiver, slotIndex) {
// Try figuring out how what to do with the item
// TODO: Kinda hacky. How to solve this properly? Don't want to go through inheritance hell.
// Also its just a few cases (hope it stays like this .. :x).
// @TODO: Kinda hacky. How to solve this properly? Don't want to go through inheritance hell.
const beltComp = receiver.components.Belt;
if (beltComp) {

View File

@ -32,7 +32,8 @@
},
"chunkOverview": {
"empty": "#444856",
"filled": "#646b7d"
"filled": "#646b7d",
"beltColor": "#9096a3"
},
"wires": {

View File

@ -33,7 +33,8 @@
"chunkOverview": {
"empty": "#a6afbb",
"filled": "#c5ccd6"
"filled": "#c5ccd6",
"beltColor": "#777"
},
"wires": {

View File

@ -55,7 +55,7 @@ export const enumHubGoalRewardsToContentUnlocked = {
]),
[enumHubGoalRewards.reward_logic_gates]: typed([[MetaLogicGateBuilding, defaultBuildingVariant]]),
[enumHubGoalRewards.reward_filter]: typed([[MetaFilterBuilding, defaultBuildingVariant]]),
[enumHubGoalRewards.reward_virtual_processing]: null, // @TODO!
[enumHubGoalRewards.reward_virtual_processing]: null,
[enumHubGoalRewards.reward_wires_painter_and_levers]: typed([
[MetaPainterBuilding, enumPainterVariants.quad],

View File

@ -1,113 +1,120 @@
/**
* @type {Object<string, {name: string, data: any, code: string, region: string}>}
*/
export const LANGUAGES = {
"en": {
name: "English",
data: null,
code: "en",
region: "",
},
"de": {
name: "Deutsch",
data: require("./built-temp/base-de.json"),
code: "de",
region: "",
},
"fr": {
name: "Français",
data: require("./built-temp/base-fr.json"),
code: "fr",
region: "",
},
"ja": {
name: "日本語",
data: require("./built-temp/base-ja.json"),
code: "ja",
region: "",
},
"pt-PT": {
name: "Português (Portugal)",
data: require("./built-temp/base-pt-PT.json"),
code: "pt",
region: "PT",
},
"pt-BR": {
name: "Português (Brasil)",
data: require("./built-temp/base-pt-BR.json"),
code: "pt",
region: "BR",
},
"ru": {
name: "Русский",
data: require("./built-temp/base-ru.json"),
code: "ru",
region: "",
},
"cs": {
name: "Čeština",
data: require("./built-temp/base-cz.json"),
code: "cs",
region: "",
},
"es-419": {
name: "Español",
data: require("./built-temp/base-es.json"),
code: "es",
region: "",
},
"pl": {
name: "Polski",
data: require("./built-temp/base-pl.json"),
code: "pl",
region: "",
},
"kor": {
name: "한국어",
data: require("./built-temp/base-kor.json"),
code: "kor",
region: "",
},
"nl": {
name: "Nederlands",
data: require("./built-temp/base-nl.json"),
code: "nl",
region: "",
},
"no": {
name: "Norsk",
data: require("./built-temp/base-no.json"),
code: "no",
region: "",
},
"tr": {
name: "Türkçe",
data: require("./built-temp/base-tr.json"),
code: "tr",
region: "",
},
"zh-CN": {
// simplified
name: "中文简体",
data: require("./built-temp/base-zh-CN.json"),
code: "zh",
region: "CN",
},
"zh-TW": {
// traditional
name: "中文繁體",
data: require("./built-temp/base-zh-TW.json"),
code: "zh",
region: "TW",
},
"sv": {
name: "Svenska",
data: require("./built-temp/base-sv.json"),
code: "sv",
region: "",
},
};
/**
* @type {Object<string, {name: string, data: any, code: string, region: string}>}
*/
export const LANGUAGES = {
"en": {
name: "English",
data: null,
code: "en",
region: "",
},
"de": {
name: "Deutsch",
data: require("./built-temp/base-de.json"),
code: "de",
region: "",
},
"fr": {
name: "Français",
data: require("./built-temp/base-fr.json"),
code: "fr",
region: "",
},
"ja": {
name: "日本語",
data: require("./built-temp/base-ja.json"),
code: "ja",
region: "",
},
"pt-PT": {
name: "Português (Portugal)",
data: require("./built-temp/base-pt-PT.json"),
code: "pt",
region: "PT",
},
"pt-BR": {
name: "Português (Brasil)",
data: require("./built-temp/base-pt-BR.json"),
code: "pt",
region: "BR",
},
"ru": {
name: "Русский",
data: require("./built-temp/base-ru.json"),
code: "ru",
region: "",
},
"cs": {
name: "Čeština",
data: require("./built-temp/base-cz.json"),
code: "cs",
region: "",
},
"es-419": {
name: "Español",
data: require("./built-temp/base-es.json"),
code: "es",
region: "",
},
"pl": {
name: "Polski",
data: require("./built-temp/base-pl.json"),
code: "pl",
region: "",
},
"kor": {
name: "한국어",
data: require("./built-temp/base-kor.json"),
code: "kor",
region: "",
},
"nl": {
name: "Nederlands",
data: require("./built-temp/base-nl.json"),
code: "nl",
region: "",
},
"no": {
name: "Norsk",
data: require("./built-temp/base-no.json"),
code: "no",
region: "",
},
"tr": {
name: "Türkçe",
data: require("./built-temp/base-tr.json"),
code: "tr",
region: "",
},
"zh-CN": {
// simplified
name: "中文简体",
data: require("./built-temp/base-zh-CN.json"),
code: "zh",
region: "CN",
},
"zh-TW": {
// traditional
name: "中文繁體",
data: require("./built-temp/base-zh-TW.json"),
code: "zh",
region: "TW",
},
"sv": {
name: "Svenska",
data: require("./built-temp/base-sv.json"),
code: "sv",
region: "",
},
"da": {
name: "Dansk",
data: require("./built-temp/base-da.json"),
code: "da",
region: "",
},
};

View File

@ -267,6 +267,7 @@ export const allApplicationSettings = [
new BoolSetting("rotationByBuilding", enumCategories.advanced, (app, value) => {}),
new BoolSetting("displayChunkBorders", enumCategories.advanced, (app, value) => {}),
new BoolSetting("pickMinerOnPatch", enumCategories.advanced, (app, value) => {}),
new RangeSetting("mapResourcesScale", enumCategories.advanced, () => null),
new EnumSetting("refreshRate", {
options: refreshRateOptions,
@ -324,6 +325,7 @@ class SettingsStorage {
this.lowQualityTextures = false;
this.simplifiedBelts = false;
this.zoomToCursor = true;
this.mapResourcesScale = 0.5;
/**
* @type {Object.<string, number>}
@ -534,7 +536,7 @@ export class ApplicationSettings extends ReadWriteProxy {
}
getCurrentVersion() {
return 29;
return 30;
}
/** @param {{settings: SettingsStorage, version: number}} data */
@ -672,6 +674,15 @@ export class ApplicationSettings extends ReadWriteProxy {
data.version = 29;
}
if (data.version < 30) {
data.settings.mapResourcesScale = 0.5;
// Re-enable hints as well
data.settings.offerHints = true;
data.version = 30;
}
return ExplainedResult.good();
}
}

View File

@ -7,6 +7,17 @@ import { T } from "../translations";
const logger = createLogger("setting_types");
/*
* ***************************************************
*
* LEGACY CODE WARNING
*
* This is old code from yorg3.io and needs to be refactored
* @TODO
*
* ***************************************************
*/
export class BaseSetting {
/**
*

View File

@ -41,7 +41,7 @@ export class SavegameManager extends ReadWriteProxy {
}
verify(data) {
// TODO / FIXME!!!!
// @TODO
return ExplainedResult.good();
}

View File

@ -248,7 +248,7 @@ export class SavegameInterface_V1006 extends SavegameInterface_V1005 {
if (components.Storage) {
// @ts-ignore
components.Storage = {
storedCount: 0,
storedCount: rebalance(components.Storage.storedCount),
storedItem: null,
};
}

View File

@ -1,344 +1,351 @@
import { createLogger } from "../core/logging";
import {
BaseDataType,
TypeArray,
TypeBoolean,
TypeClass,
TypeClassData,
TypeClassFromMetaclass,
TypeClassId,
TypeEntity,
TypeEntityWeakref,
TypeEnum,
TypeFixedClass,
TypeInteger,
TypeKeyValueMap,
TypeMetaClass,
TypeNullable,
TypeNumber,
TypePair,
TypePositiveInteger,
TypePositiveNumber,
TypeString,
TypeStructuredObject,
TypeVector,
} from "./serialization_data_types";
const logger = createLogger("serialization");
// Schema declarations
export const types = {
int: new TypeInteger(),
uint: new TypePositiveInteger(),
float: new TypeNumber(),
ufloat: new TypePositiveNumber(),
string: new TypeString(),
entity: new TypeEntity(),
weakEntityRef: new TypeEntityWeakref(),
vector: new TypeVector(),
tileVector: new TypeVector(),
bool: new TypeBoolean(),
/**
* @param {BaseDataType} wrapped
*/
nullable(wrapped) {
return new TypeNullable(wrapped);
},
/**
* @param {FactoryTemplate<*>|SingletonFactoryTemplate<*>} registry
*/
classId(registry) {
return new TypeClassId(registry);
},
/**
* @param {BaseDataType} valueType
* @param {boolean=} includeEmptyValues
*/
keyValueMap(valueType, includeEmptyValues = true) {
return new TypeKeyValueMap(valueType, includeEmptyValues);
},
/**
* @param {Object<string, any>} values
*/
enum(values) {
return new TypeEnum(values);
},
/**
* @param {FactoryTemplate<*>} registry
* @param {(GameRoot, any) => object=} resolver
*/
obj(registry, resolver = null) {
return new TypeClass(registry, resolver);
},
/**
* @param {FactoryTemplate<*>} registry
*/
objData(registry) {
return new TypeClassData(registry);
},
/**
* @param {typeof BasicSerializableObject} cls
*/
knownType(cls) {
return new TypeFixedClass(cls);
},
/**
* @param {BaseDataType} innerType
*/
array(innerType) {
return new TypeArray(innerType);
},
/**
* @param {SingletonFactoryTemplate<*>} innerType
*/
classRef(registry) {
return new TypeMetaClass(registry);
},
/**
* @param {Object.<string, BaseDataType>} descriptor
*/
structured(descriptor) {
return new TypeStructuredObject(descriptor);
},
/**
* @param {BaseDataType} a
* @param {BaseDataType} b
*/
pair(a, b) {
return new TypePair(a, b);
},
/**
* @param {typeof BasicSerializableObject} classHandle
* @param {SingletonFactoryTemplate<*>} registry
*/
classWithMetaclass(classHandle, registry) {
return new TypeClassFromMetaclass(classHandle, registry);
},
};
/**
* A full schema declaration
* @typedef {Object.<string, BaseDataType>} Schema
*/
const globalSchemaCache = {};
/* dev:start */
const classnamesCache = {};
/* dev:end*/
export class BasicSerializableObject {
/* dev:start */
/**
* Fixes typeof DerivedComponent is not assignable to typeof Component, compiled out
* in non-dev builds
*/
constructor(...args) {}
/* dev:end */
static getId() {
abstract;
}
/**
* Should return the serialization schema
* @returns {Schema}
*/
static getSchema() {
return {};
}
// Implementation
/** @returns {Schema} */
static getCachedSchema() {
const id = this.getId();
/* dev:start */
assert(
classnamesCache[id] === this || classnamesCache[id] === undefined,
"Class name taken twice: " + id + " (from " + this.name + ")"
);
classnamesCache[id] = this;
/* dev:end */
const entry = globalSchemaCache[id];
if (entry) {
return entry;
}
const schema = this.getSchema();
globalSchemaCache[id] = schema;
return schema;
}
/** @returns {object} */
serialize() {
return serializeSchema(
this,
/** @type {typeof BasicSerializableObject} */ (this.constructor).getCachedSchema()
);
}
/**
* @param {any} data
* @param {import("./savegame_serializer").GameRoot} root
* @returns {string|void}
*/
deserialize(data, root = null) {
return deserializeSchema(
this,
/** @type {typeof BasicSerializableObject} */ (this.constructor).getCachedSchema(),
data,
null,
root
);
}
/** @returns {string|void} */
static verify(data) {
return verifySchema(this.getCachedSchema(), data);
}
}
/**
* Serializes an object using the given schema, mergin with the given properties
* @param {object} obj The object to serialize
* @param {Schema} schema The schema to use
* @param {object=} mergeWith Any additional properties to merge with the schema, useful for super calls
* @returns {object} Serialized data object
*/
export function serializeSchema(obj, schema, mergeWith = {}) {
for (const key in schema) {
if (!obj.hasOwnProperty(key)) {
logger.error("Invalid schema, property", key, "does not exist on", obj, "(schema=", schema, ")");
assert(
obj.hasOwnProperty(key),
"serialization: invalid schema, property does not exist on object: " + key
);
}
if (!schema[key]) {
assert(false, "Invalid schema (bad key '" + key + "'): " + JSON.stringify(schema));
}
if (G_IS_DEV) {
try {
mergeWith[key] = schema[key].serialize(obj[key]);
} catch (ex) {
logger.error(
"Serialization of",
obj,
"failed on key '" + key + "' ->",
ex,
"(schema was",
schema,
")"
);
throw ex;
}
} else {
mergeWith[key] = schema[key].serialize(obj[key]);
}
}
return mergeWith;
}
/**
* Deserializes data into an object
* @param {object} obj The object to store the deserialized data into
* @param {Schema} schema The schema to use
* @param {object} data The serialized data
* @param {string|void|null=} baseclassErrorResult Convenience, if this is a string error code, do nothing and return it
* @param {import("../game/root").GameRoot=} root Optional game root reference
* @returns {string|void} String error code or nothing on success
*/
export function deserializeSchema(obj, schema, data, baseclassErrorResult = null, root) {
if (baseclassErrorResult) {
return baseclassErrorResult;
}
if (!data) {
logger.error("Got 'NULL' data for", obj, "and schema", schema, "!");
return "Got null data";
}
for (const key in schema) {
if (!data.hasOwnProperty(key)) {
logger.error("Data", data, "does not contain", key, "(schema:", schema, ")");
return "Missing key in schema: " + key + " of class " + obj.constructor.name;
}
if (!schema[key].allowNull() && (data[key] === null || data[key] === undefined)) {
logger.error("Data", data, "has null value for", key, "(schema:", schema, ")");
return "Non-nullable entry is null: " + key + " of class " + obj.constructor.name;
}
const errorStatus = schema[key].deserializeWithVerify(data[key], obj, key, obj.root || root);
if (errorStatus) {
logger.error(
"Deserialization failed with error '" + errorStatus + "' on object",
obj,
"and key",
key,
"(root? =",
obj.root ? "y" : "n",
")"
);
return errorStatus;
}
}
}
/**
* Verifies stored data using the given schema
* @param {Schema} schema The schema to use
* @param {object} data The data to verify
* @returns {string|void} String error code or nothing on success
*/
export function verifySchema(schema, data) {
for (const key in schema) {
if (!data.hasOwnProperty(key)) {
logger.error("Data", data, "does not contain", key, "(schema:", schema, ")");
return "verify: missing key required by schema in stored data: " + key;
}
if (!schema[key].allowNull() && (data[key] === null || data[key] === undefined)) {
logger.error("Data", data, "has null value for", key, "(schema:", schema, ")");
return "verify: non-nullable entry is null: " + key;
}
const errorStatus = schema[key].verifySerializedValue(data[key]);
if (errorStatus) {
logger.error(errorStatus);
return "verify: " + errorStatus;
}
}
}
/**
* Extends a schema by adding the properties from the new schema to the existing base schema
* @param {Schema} base
* @param {Schema} newOne
* @returns {Schema}
*/
export function extendSchema(base, newOne) {
/** @type {Schema} */
const result = Object.assign({}, base);
for (const key in newOne) {
if (result.hasOwnProperty(key)) {
logger.error("Extend schema got duplicate key:", key);
continue;
}
result[key] = newOne[key];
}
return result;
}
import { createLogger } from "../core/logging";
import {
BaseDataType,
TypeArray,
TypeBoolean,
TypeClass,
TypeClassData,
TypeClassFromMetaclass,
TypeClassId,
TypeEntity,
TypeEntityWeakref,
TypeEnum,
TypeFixedClass,
TypeInteger,
TypeKeyValueMap,
TypeMetaClass,
TypeNullable,
TypeNumber,
TypePair,
TypePositiveInteger,
TypePositiveNumber,
TypeString,
TypeStructuredObject,
TypeVector,
} from "./serialization_data_types";
const logger = createLogger("serialization");
// Schema declarations
export const types = {
int: new TypeInteger(),
uint: new TypePositiveInteger(),
float: new TypeNumber(),
ufloat: new TypePositiveNumber(),
string: new TypeString(),
entity: new TypeEntity(),
weakEntityRef: new TypeEntityWeakref(),
vector: new TypeVector(),
tileVector: new TypeVector(),
bool: new TypeBoolean(),
/**
* @param {BaseDataType} wrapped
*/
nullable(wrapped) {
return new TypeNullable(wrapped);
},
/**
* @param {FactoryTemplate<*>|SingletonFactoryTemplate<*>} registry
*/
classId(registry) {
return new TypeClassId(registry);
},
/**
* @param {BaseDataType} valueType
* @param {boolean=} includeEmptyValues
*/
keyValueMap(valueType, includeEmptyValues = true) {
return new TypeKeyValueMap(valueType, includeEmptyValues);
},
/**
* @param {Object<string, any>} values
*/
enum(values) {
return new TypeEnum(values);
},
/**
* @param {FactoryTemplate<*>} registry
* @param {(GameRoot, any) => object=} resolver
*/
obj(registry, resolver = null) {
return new TypeClass(registry, resolver);
},
/**
* @param {FactoryTemplate<*>} registry
*/
objData(registry) {
return new TypeClassData(registry);
},
/**
* @param {typeof BasicSerializableObject} cls
*/
knownType(cls) {
return new TypeFixedClass(cls);
},
/**
* @param {BaseDataType} innerType
*/
array(innerType) {
return new TypeArray(innerType);
},
/**
* @param {BaseDataType} innerType
*/
fixedSizeArray(innerType) {
return new TypeArray(innerType, true);
},
/**
* @param {SingletonFactoryTemplate<*>} innerType
*/
classRef(registry) {
return new TypeMetaClass(registry);
},
/**
* @param {Object.<string, BaseDataType>} descriptor
*/
structured(descriptor) {
return new TypeStructuredObject(descriptor);
},
/**
* @param {BaseDataType} a
* @param {BaseDataType} b
*/
pair(a, b) {
return new TypePair(a, b);
},
/**
* @param {typeof BasicSerializableObject} classHandle
* @param {SingletonFactoryTemplate<*>} registry
*/
classWithMetaclass(classHandle, registry) {
return new TypeClassFromMetaclass(classHandle, registry);
},
};
/**
* A full schema declaration
* @typedef {Object.<string, BaseDataType>} Schema
*/
const globalSchemaCache = {};
/* dev:start */
const classnamesCache = {};
/* dev:end*/
export class BasicSerializableObject {
/* dev:start */
/**
* Fixes typeof DerivedComponent is not assignable to typeof Component, compiled out
* in non-dev builds
*/
constructor(...args) {}
/* dev:end */
static getId() {
abstract;
}
/**
* Should return the serialization schema
* @returns {Schema}
*/
static getSchema() {
return {};
}
// Implementation
/** @returns {Schema} */
static getCachedSchema() {
const id = this.getId();
/* dev:start */
assert(
classnamesCache[id] === this || classnamesCache[id] === undefined,
"Class name taken twice: " + id + " (from " + this.name + ")"
);
classnamesCache[id] = this;
/* dev:end */
const entry = globalSchemaCache[id];
if (entry) {
return entry;
}
const schema = this.getSchema();
globalSchemaCache[id] = schema;
return schema;
}
/** @returns {object} */
serialize() {
return serializeSchema(
this,
/** @type {typeof BasicSerializableObject} */ (this.constructor).getCachedSchema()
);
}
/**
* @param {any} data
* @param {import("./savegame_serializer").GameRoot} root
* @returns {string|void}
*/
deserialize(data, root = null) {
return deserializeSchema(
this,
/** @type {typeof BasicSerializableObject} */ (this.constructor).getCachedSchema(),
data,
null,
root
);
}
/** @returns {string|void} */
static verify(data) {
return verifySchema(this.getCachedSchema(), data);
}
}
/**
* Serializes an object using the given schema, mergin with the given properties
* @param {object} obj The object to serialize
* @param {Schema} schema The schema to use
* @param {object=} mergeWith Any additional properties to merge with the schema, useful for super calls
* @returns {object} Serialized data object
*/
export function serializeSchema(obj, schema, mergeWith = {}) {
for (const key in schema) {
if (!obj.hasOwnProperty(key)) {
logger.error("Invalid schema, property", key, "does not exist on", obj, "(schema=", schema, ")");
assert(
obj.hasOwnProperty(key),
"serialization: invalid schema, property does not exist on object: " + key
);
}
if (!schema[key]) {
assert(false, "Invalid schema (bad key '" + key + "'): " + JSON.stringify(schema));
}
if (G_IS_DEV) {
try {
mergeWith[key] = schema[key].serialize(obj[key]);
} catch (ex) {
logger.error(
"Serialization of",
obj,
"failed on key '" + key + "' ->",
ex,
"(schema was",
schema,
")"
);
throw ex;
}
} else {
mergeWith[key] = schema[key].serialize(obj[key]);
}
}
return mergeWith;
}
/**
* Deserializes data into an object
* @param {object} obj The object to store the deserialized data into
* @param {Schema} schema The schema to use
* @param {object} data The serialized data
* @param {string|void|null=} baseclassErrorResult Convenience, if this is a string error code, do nothing and return it
* @param {import("../game/root").GameRoot=} root Optional game root reference
* @returns {string|void} String error code or nothing on success
*/
export function deserializeSchema(obj, schema, data, baseclassErrorResult = null, root) {
if (baseclassErrorResult) {
return baseclassErrorResult;
}
if (!data) {
logger.error("Got 'NULL' data for", obj, "and schema", schema, "!");
return "Got null data";
}
for (const key in schema) {
if (!data.hasOwnProperty(key)) {
logger.error("Data", data, "does not contain", key, "(schema:", schema, ")");
return "Missing key in schema: " + key + " of class " + obj.constructor.name;
}
if (!schema[key].allowNull() && (data[key] === null || data[key] === undefined)) {
logger.error("Data", data, "has null value for", key, "(schema:", schema, ")");
return "Non-nullable entry is null: " + key + " of class " + obj.constructor.name;
}
const errorStatus = schema[key].deserializeWithVerify(data[key], obj, key, obj.root || root);
if (errorStatus) {
logger.error(
"Deserialization failed with error '" + errorStatus + "' on object",
obj,
"and key",
key,
"(root? =",
obj.root ? "y" : "n",
")"
);
return errorStatus;
}
}
}
/**
* Verifies stored data using the given schema
* @param {Schema} schema The schema to use
* @param {object} data The data to verify
* @returns {string|void} String error code or nothing on success
*/
export function verifySchema(schema, data) {
for (const key in schema) {
if (!data.hasOwnProperty(key)) {
logger.error("Data", data, "does not contain", key, "(schema:", schema, ")");
return "verify: missing key required by schema in stored data: " + key;
}
if (!schema[key].allowNull() && (data[key] === null || data[key] === undefined)) {
logger.error("Data", data, "has null value for", key, "(schema:", schema, ")");
return "verify: non-nullable entry is null: " + key;
}
const errorStatus = schema[key].verifySerializedValue(data[key]);
if (errorStatus) {
logger.error(errorStatus);
return "verify: " + errorStatus;
}
}
}
/**
* Extends a schema by adding the properties from the new schema to the existing base schema
* @param {Schema} base
* @param {Schema} newOne
* @returns {Schema}
*/
export function extendSchema(base, newOne) {
/** @type {Schema} */
const result = Object.assign({}, base);
for (const key in newOne) {
if (result.hasOwnProperty(key)) {
logger.error("Extend schema got duplicate key:", key);
continue;
}
result[key] = newOne[key];
}
return result;
}

File diff suppressed because it is too large Load Diff

View File

@ -80,7 +80,10 @@ export class SerializerInternal {
for (const componentId in data) {
if (!entity.components[componentId]) {
if (G_IS_DEV && !globalConfig.debug.disableSlowAsserts) {
logger.warn("Entity no longer has component:", componentId);
// @ts-ignore
if (++window.componentWarningsShown < 100) {
logger.warn("Entity no longer has component:", componentId);
}
}
continue;
}

View File

@ -285,14 +285,10 @@ export class InGameState extends GameState {
*/
stage7Warmup() {
if (this.switchStage(stages.s7_warmup)) {
if (G_IS_DEV && globalConfig.debug.noArtificialDelays) {
this.warmupTimeSeconds = 0.05;
if (this.creationPayload.fastEnter) {
this.warmupTimeSeconds = globalConfig.warmupTimeSecondsFast;
} else {
if (this.creationPayload.fastEnter) {
this.warmupTimeSeconds = globalConfig.warmupTimeSecondsFast;
} else {
this.warmupTimeSeconds = globalConfig.warmupTimeSecondsRegular;
}
this.warmupTimeSeconds = globalConfig.warmupTimeSecondsRegular;
}
}
}

View File

@ -320,20 +320,23 @@ export class MainMenuState extends GameState {
});
optionSelected.add(value => {
this.app.settings.updateLanguage(value);
if (setting.restartRequired) {
if (this.app.platformWrapper.getSupportsRestart()) {
this.app.platformWrapper.performRestart();
} else {
this.dialogs.showInfo(T.dialogs.restartRequired.title, T.dialogs.restartRequired.text, [
"ok:good",
]);
this.app.settings.updateLanguage(value).then(() => {
if (setting.restartRequired) {
if (this.app.platformWrapper.getSupportsRestart()) {
this.app.platformWrapper.performRestart();
} else {
this.dialogs.showInfo(
T.dialogs.restartRequired.title,
T.dialogs.restartRequired.text,
["ok:good"]
);
}
}
}
if (setting.changeCb) {
setting.changeCb(this.app, value);
}
if (setting.changeCb) {
setting.changeCb(this.app, value);
}
});
// Update current icon
this.htmlElement.querySelector("button.languageChoose").setAttribute("data-languageIcon", value);

View File

@ -21,10 +21,6 @@ export class PreloadState extends GameState {
<div class="loadingImage"></div>
<div class="loadingStatus">
<span class="desc">Booting</span>
<span class="bar">
<span class="inner" style="width: 0%"></span>
<span class="status">0%</span>
</span>
</div>
</div>
<span class="prefab_GameHint"></span>
@ -56,10 +52,6 @@ export class PreloadState extends GameState {
/** @type {HTMLElement} */
this.statusText = this.htmlElement.querySelector(".loadingStatus > .desc");
/** @type {HTMLElement} */
this.statusBar = this.htmlElement.querySelector(".loadingStatus > .bar > .inner");
/** @type {HTMLElement} */
this.statusBarText = this.htmlElement.querySelector(".loadingStatus > .bar > .status");
/** @type {HTMLElement} */
this.hintsText = this.htmlElement.querySelector(".prefab_GameHint");
@ -67,7 +59,6 @@ export class PreloadState extends GameState {
this.nextHintDuration = 0;
this.currentStatus = "booting";
this.currentIndex = 0;
this.startLoading();
}
@ -259,16 +250,8 @@ export class PreloadState extends GameState {
*/
setStatus(text) {
logger.log("✅ " + text);
this.currentIndex += 1;
this.currentStatus = text;
this.statusText.innerText = text;
const numSteps = 10; // FIXME
const percentage = (this.currentIndex / numSteps) * 100.0;
this.statusBar.style.width = percentage + "%";
this.statusBarText.innerText = findNiceValue(percentage) + "%";
return Promise.resolve();
}

View File

@ -36,7 +36,7 @@ function match(originalObj, translatedObj, path = "/") {
if (typeof valueOriginal === "object") {
match(valueOriginal, valueMatching, path + key + "/");
} else if (typeof valueOriginal === "string") {
// todo
// @todo
const originalPlaceholders = matchAll(valueOriginal, placeholderRegexp).toArray();
const translatedPlaceholders = matchAll(valueMatching, placeholderRegexp).toArray();

View File

@ -196,6 +196,14 @@ dialogs:
renameSavegame:
title: Rename Savegame
desc: You can rename your savegame here.
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: Move
@ -304,6 +312,30 @@ ingame:
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."
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
connectedMiners:
one_miner: 1 Miner
n_miners: <amount> Miners
@ -694,7 +726,8 @@ storyRewards:
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Item Filter
desc: You unlocked the <strong>Item Filter</strong>! It will route items either
@ -864,6 +897,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: Keybindings

View File

@ -93,9 +93,9 @@ mainMenu:
discordLink: Servidor Discord oficial
helpTranslate: Ajuda a traduir-lo!
madeBy: Creat per <author-link>
browserWarning: >-
Disculpa, però el joc funcionarà lent al teu navegador! Aconsegueix el joc complet o descarrega't chrome per una millor experiència.
browserWarning: Disculpa, però el joc funcionarà lent al teu navegador!
Aconsegueix el joc complet o descarrega't chrome per una millor
experiència.
savegameLevel: Nivell <x>
savegameLevelUnknown: Nivell desconegut
savegameUnnamed: Unnamed
@ -205,6 +205,14 @@ dialogs:
renameSavegame:
title: Canviar el nom.
desc: Canviar el nom de la partida guardada.
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: Moure
@ -315,6 +323,30 @@ ingame:
ràpidament.<br><br>Pista: Manté pressionat
<strong>SHIFT</strong> per a col·locar més extractors, i
utilitza <strong>R</strong> per a rotar-los."
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
connectedMiners:
one_miner: 1 Miner
n_miners: <amount> Miners
@ -712,12 +744,13 @@ storyRewards:
passar-ho bé!
reward_wires_painter_and_levers:
title: Cables i Pintador Quàdruple
desc: "\"Has desbloquejat la <strong>Capa de Cables</strong>: És una capa
separada damunt la capa normal i introdueix moltes mecàniques
noves!<br><br> Per començar t'he desbloquejat el <strong>Pintador
Quàdruple</strong>. Conecta les ranures que vols pintar a la capa de
Cables!<br><br> Per canviar a la capa de Cables, prem
<strong>E</strong>.\""
desc: "You just unlocked the <strong>Wires Layer</strong>: It is a separate
layer on top of the regular layer and introduces a lot of new
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Filtre d'Ítems
desc: Has desbloquejat el <strong>Filtre d'Ítems</strong>! Filtrarà els ítems a
@ -892,6 +925,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: Combinacions de tecles

View File

@ -1,56 +1,53 @@
steamPage:
shortText: shapez.io je hra o stavbě továren pro automatizaci výroby a
shortText: shapez.io je hra o stavbě továren na automatizaci výroby a
kombinování čím dál složitějších tvarů na nekonečné mapě.
discordLinkShort: Oficiální Discord
intro: >-
Shapez.io je relaxační hra, ve které musíte stavět továrny pro
automatizaci výroby geometrických tvarů.
Máte rádi automatizaci? Tak to jste na správném místě!
Jak se zvyšuje úroveň, tvary se stávají stále složitějšími a vy se musíte rozšířit po nekonečné mapě.
shapez.io je relaxační hra, ve které musíte stavět továrny na automatizaci výroby geometrických tvarů. Jak se zvyšuje úroveň, tvary se stávají stále složitějšími a vy se musíte rozšířit po nekonečné mapě.
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í!
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!
Zatímco tvary zpracováváte pouze na začátku, musíte je později obarvit - k tomu musíte těžit a míchat barvy!
Koupením hry na platformě Steam vám dá přístup k plné verzi hry, ale také můžete hrát demo verzi na shapez.io a potom se můžete rozhodnou jestli hru koupíte!
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!
title_advantages: Výhody samostatné verze hry
advantages:
- <b>12 Nových úrovní</b> celkem 26 úrovní
- <b>12 Nových úrovní</b> z celkových 26 úrovní
- <b>18 Nových budov</b> pro plně automatizovanou továrnu!
- <b>20 vylepšení</b> pro mnoho hodin zábavy!
- <b>Wires Update</b> pro zcela nové rozměry!
- <b>Dark Mode</b>!
- <b>20 Řad vylepšení</b> pro mnoho hodin zábavy!
- <b>Wires Update</b> pro zcela novou dimenzi!
- <b>Tmavý mód</b>!
- Neomezený počet uložených her
- Neomezené značky
- Podpořte mě! ❤️
title_future: Plánovaný kontent
title_future: Plánovaný obsah
planned:
- Blueprintová knihovna
- Steam Achievements
- Puzzle Mód
- Puzzle mód
- Minimapa
- Módy
- Sandbox Mód
- ... a o hodně víc!
- Sandbox mód
- ... a mnohem více!
title_open_source: Tato hra je open source!
text_open_source: >-
Kdokoli může přispět, jsem aktivně zapojený do komunity, pokouším se
zkontrolovat všechny návrhy a vzít v úvahu zpětnou vazbu všude, kde je
to možné.
Nezapomeňte se podívat na můj trello board pro kompletní plán!
title_links: Odkazy
links:
discord: Oficiální Discord
roadmap: Roadmap
subreddit: Subreddit
source_code: Source code (GitHub)
source_code: Zdrojový kód (GitHub)
translate: Pomozte přeložit hru!
text_open_source: >-
Kdokoli může přispět, jsem aktivně zapojený do komunity,
pokouším se zkontrolovat všechny návrhy a vzít v úvahu zpětnou vazbu všude,
kde je to možné.
Nezapomeňte se podívat na můj trello board, kde najdete kompletní plán!
global:
loading: Načítám
loading: Načítání
error: Chyba
thousandsDivider: " "
decimalSeparator: .
decimalSeparator: ","
suffix:
thousands: k
millions: M
@ -79,23 +76,23 @@ global:
space: SPACE
demoBanners:
title: Demo verze
intro: Získejte plnou verzi pro odemknutí všech funkcí!
intro: Získejte plnou verzi pro odemknutí všech funkcí a obsahu!
mainMenu:
play: Hrát
changelog: Změny
continue: Pokračovat
newGame: Nová hra
changelog: Seznam změn
subreddit: Reddit
importSavegame: Importovat
openSourceHint: Tato hra je open source!
discordLink: Oficiální Discord Server
helpTranslate: Pomozte přeložit hru!
browserWarning: Hrajete v nepodporovaném prohlížeči, je možné že hra poběží
pomalu! Pořiďte si samostatnou verzi nebo vyzkoušejte prohlížeč Chrome
pro plnohodnotný zážitek.
madeBy: Vytvořil <author-link>
browserWarning: Promiňte, ale víme, že hra poběží pomalu ve vašem prohlížeči!
Pořiďte si samostatnou verzi nebo si stáhněte Google Chrome pro
plnohodnotný zážitek.
savegameLevel: Úroveň <x>
savegameLevelUnknown: Neznámá úroveň
continue: Pokračovat
newGame: Nová hra
madeBy: Vytvořil <author-link>
subreddit: Reddit
savegameUnnamed: Nepojmenovaný
dialogs:
buttons:
@ -105,8 +102,8 @@ dialogs:
later: Později
restart: Restart
reset: Reset
getStandalone: Získejte Plnou verzi
deleteGame: Vím co dělám
getStandalone: Získejte plnou verzi
deleteGame: Vím, co dělám
viewUpdate: Zobrazit aktualizaci
showUpgrades: Zobrazit vylepšení
showKeybindings: Zobrazit klávesové zkratky
@ -132,73 +129,81 @@ dialogs:
text: Pro aplikování nastavení musíte restartovat hru.
editKeybinding:
title: Změna klávesové zkratky
desc: Zmáčkněte klávesu nebo tlačítko na myši pro přiřazení nebo Escape pro
desc: Zmáčkněte klávesu nebo tlačítko myši pro přiřazení nebo Escape pro
zrušení.
resetKeybindingsConfirmation:
title: Reset klávesových zkratek
desc: Opravdu chcete vrátit klávesové zkratky zpět do původního nastavení?
desc: Toto vrátí všechny klávesové zkratky do původního nastavení. Prosím
potvrďte.
keybindingsResetOk:
title: Reset klávesových zkratek
desc: Vaše klávesové zkratky byly resetovány do původního nastavení!
desc: Všechny klávesové zkratky byly vráceny do původního nastavení!
featureRestriction:
title: Demo verze
desc: Zkoušíte použít funkci (<feature>), která není v demo verzi. Pořiďte si
plnou verzi pro lepší zážitek!
desc: Zkoušíte použít funkci (<feature>), která není v demo verzi. Zvažte
pořízení plné verze pro kompletní zážitek!
oneSavegameLimit:
title: Omezené ukládání
desc: Ve zkušební verzi můžete mít pouze jednu uloženou hru. Odstraňte stávající
desc: Ve demo verzi můžete mít pouze jednu uloženou hru. Odstraňte stávající
uloženou hru nebo si pořiďte plnou verzi!
updateSummary:
title: Nová aktualizace!
desc: "Tady jsou změny od posledně:"
desc: "Zde jsou změny od doby, kdy jste naposledy hráli:"
upgradesIntroduction:
title: Odemknout vylepšení
desc: Všechny tvary, které vytvoříte, lze použít k odemčení vylepšení -
<strong>Neničte své staré továrny!</strong> Karta vylepšení se
nachází v pravém horním rohu obrazovky.
<strong>Neničte své staré továrny!</strong> Kartu vylepšení lze
najít v pravém horním rohu obrazovky.
massDeleteConfirm:
title: Potvrdit smazání
desc: Odstraňujete spoustu budov (přesněji <count>)! Opravdu je chcete smazat?
massCutConfirm:
title: Potvrdit vyjmutí
desc: Vyjímáte spoustu budov (přesněji <count>)! Opravdu je chcete vyjmout?
massCutInsufficientConfirm:
title: Potvrdit vyjmutí
desc: Nemůžete si dovolit vložení této oblasti! Opravdu ji chcete vyjmout?
blueprintsNotUnlocked:
title: Zatím neodemčeno
desc: Plány ještě nebyly odemčeny! Chcete-li je odemknout, dokončete úroveň 12.
desc: Dokončete úroveň 12 pro odemčení Plánů!
keybindingsIntroduction:
title: Užitečné klávesové zkratky
desc: "Hra má spoustu klávesových zkratek, které usnadňují stavbu velkých
desc: "Tato hra má spoustu klávesových zkratek, které usnadňují stavbu velkých
továren. Zde jsou některé, ale nezapomeňte se podívat i na
<strong>ostatní klávesové zkratky</strong>!<br><br> <code
class='keybinding'>CTRL</code> + Táhnout: Vybrání oblasti.<br> <code
class='keybinding'>SHIFT</code>: Podržením můžete umístit více budov
za sebout.<br> <code class='keybinding'>ALT</code>: Změnit orientaci
za sebou.<br> <code class='keybinding'>ALT</code>: Změnit orientaci
umístěných pásů.<br>"
createMarker:
title: Nová značka
desc: Použijte smysluplný název, můžete také zahrnout <strong>krátký
klíč</strong> tvaru (který můžete vygenerovat <link>zde</link>)
titleEdit: Upravit značku
markerDemoLimit:
desc: V ukázce můžete vytvořit pouze dvě značky. Získejte plnou verzi pro
neomezený počet značek!
massCutConfirm:
title: Potvrdit vyjmutí
desc: Chceš vyjmout spoustu budov (přesněji řečeno <count>)! Vážně to chceš
udělat?
exportScreenshotWarning:
title: Exportuj snímek obrazovky
desc: Zažádal jsi o exportování své základny jako obrázek. Měj prosím na paměti,
že to může zejména u větších základen dlouho trvat, nebo dokonce
shodit hru!
massCutInsufficientConfirm:
title: Potvrdit vyjmutí
desc: Nemůžeš si dovolit vložení této oblasti! Skutečně ji chceš vyjmout?
desc: Použijte smysluplný název, můžete také zahrnout <strong>krátký
klíč</strong> tvaru (Ten můžete vygenerovat <link>zde</link>)
editSignal:
title: Nastavte signál
descItems: "Vyberte předdefinovanou položku:"
descShortKey: ... nebo zadejte <strong>krátký klíč</strong> tvaru (který můžete
descShortKey: ... nebo zadejte <strong>krátký klíč</strong> tvaru (Ten můžete
vygenerovat <link>zde</link>)
markerDemoLimit:
desc: V demo verzi můžete vytvořit pouze dvě značky. Pořiďte si plnou verzi pro
neomezený počet značek!
exportScreenshotWarning:
title: Exportuj snímek obrazovky
desc: Chcete exportovat svou základnu jako snímek obrazovky. Mějte prosím na
paměti, že to bude docela pomalé u větších základen a může dokonce
dojít k pádu hry!
renameSavegame:
title: Přejmenovat uloženou hru
desc: Zde můžeš přejmenovat svoji uloženou hru.
desc: Zde můžete přejmenovat svoji uloženou hru.
tutorialVideoAvailable:
title: Dostupný tutoriál
desc: Pro tuto úroveň je k dispozici tutoriál! Chtěli byste se na
něj podívat?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: Posun mapy
@ -237,7 +242,7 @@ ingame:
unlockText: "Odemčeno: <reward>!"
buttonNextLevel: Další úroveň
notifications:
newUpgrade: Nová aktualizace je k dispozici!
newUpgrade: Nové vylepšení je k dispozici!
gameSaved: Hra byla uložena.
freeplayLevelComplete: Level <level> byl dokončen!
shop:
@ -253,10 +258,10 @@ ingame:
description: Tvary uložené ve vaší centrální budově.
produced:
title: Vyprodukováno
description: Tvary která vaše továrna produkuje, včetně meziproduktů.
description: Tvary, která vaše továrna produkuje, včetně meziproduktů.
delivered:
title: Dodáno
description: Tvary které jsou dodávány do vaší centrální budovy.
description: Tvary, které jsou dodávány do vaší centrální budovy.
noShapesProduced: Žádné tvary zatím nebyly vyprodukovány.
shapesDisplayUnits:
second: <shapes> / s
@ -289,10 +294,34 @@ ingame:
1_2_conveyor: "Připojte extraktor pomocí <strong>dopravníkového pásu</strong> k
vašemu HUBu!<br><br>Tip: <strong>Klikněte a táhněte</strong>
myší pro položení více pásů!"
1_3_expand: "Toto <strong>NENÍ</strong> hra o čekání! Sestavte další extraktory
1_3_expand: "Toto <strong>NENÍ</strong> hra o čekání! Postavte další extraktory
a pásy, abyste dosáhli cíle rychleji.<br><br>Tip: Chcete-li
umístit více extraktorů, podržte <strong>SHIFT</strong>. Pomocí
<strong>R</strong> je můžete otočit."
2_1_place_cutter: "Teď umístěte <strong>pilu</strong> k rozřezání kruhového tvaru na dvě
poloviny!<br><br> PS: Pila řeže tvary vždy <strong>svisle na
poloviny</strong> bez ohledu na její orientaci."
2_2_place_trash: Pila se může <strong>zaseknout a zastavit vaši produkci</strong>!<br><br> Použijte
<strong>koš</strong> ke smazání (!) nepotřebných
částí tvarů.
2_3_more_cutters: "Dobrá práce! Teď postavte <strong>více pil</strong> pro zrychlení
tohoto pomalého procesu!<br><br> PS: Použijte <strong>0-9
na klávesnici</strong> pro rychlejší přístup k budovám!"
3_1_rectangles: "Teď vytěžte nějaké obdelníkové tvary! <strong>Postavte 4
extraktory</strong> a připojte je k HUBu.<br><br> PS:
Podržením klávesy <strong>SHIFT</strong> a tažením pásu aktivujete
plánovač pásů!"
21_1_place_quad_painter: Postavte <strong>čtyřnásobný barvič</strong> a získejte nějaké
<strong>kruhové tvary</strong>, <strong>bílou</strong> a
<strong>červenou</strong> barvu!
21_2_switch_to_wires: Změňte vrstvy na vrstvu kabelů stisknutím klávesy
<strong>E</strong>!<br><br> Pak <strong>připojte všechny čtyři
vstupy</strong> barviče s pomocí kabelů!
21_3_place_button: Úžasné! Teď postavte <strong>přepínač</strong> a připojte ho
pomocí kabelů!
21_4_press_button: "Stiskněte přepínač pro změnu <strong>vysílaného logického
signálu</strong> a tím aktivujte barvič.<br><br> PS: Nemusíte
připojit veškeré vstupy! Zkuste spojit pouze dva."
colors:
red: Červená
green: Zelená
@ -306,7 +335,7 @@ ingame:
shapeViewer:
title: Vrstvy
empty: Prázdné
copyKey: Copy Key
copyKey: Zkopírovat klíč
connectedMiners:
one_miner: 1 Extraktor
n_miners: <amount> Extraktorů
@ -316,7 +345,7 @@ ingame:
desc: Kliknutím sem zobrazíte výhody Steam verze!
get_on_steam: Získejte na steamu
standaloneAdvantages:
title: Získejte plnou verzy!
title: Získejte plnou verzi!
no_thanks: Ne, děkuji!
points:
levels:
@ -345,7 +374,7 @@ ingame:
desc: Vyvíjím to ve svém volném čase!
shopUpgrades:
belt:
name: Pásy, distribuce & tunely
name: Pásy, distribuce a tunely
description: Rychlost x<currentMult> → x<newMult>
miner:
name: Extrakce
@ -370,10 +399,10 @@ buildings:
miner:
default:
name: Extraktor
description: Umístěte na náleziště tvaru nebo barvy pro zahájení těžby.
description: Umístěte na naleziště tvaru nebo barvy pro zahájení těžby.
chainable:
name: Extraktor (Navazující)
description: Umístěte na náleziště tvaru nebo barvy pro zahájení těžby. Lze
description: Umístěte na naleziště tvaru nebo barvy pro zahájení těžby. Lze
zapojit po skupinách.
underground_belt:
default:
@ -441,7 +470,7 @@ buildings:
balancer:
default:
name: Vyvažovač
description: Multifunkční - Rozděluje vstupy do výstupy.
description: Multifunkční - Rovnoměrně rozděluje vstupy na výstupech.
merger:
name: Spojovač (kompaktní)
description: Spojí dva pásy do jednoho.
@ -506,7 +535,7 @@ buildings:
reader:
default:
name: Čtečka pásů
description: Umožňuje měřit průměrnou propustnost pásu. Výstup čte poslední
description: Umožňuje změřit průměrnou propustnost pásu. Výstup čte poslední
položku ve vrstvě kabelů.
analyzer:
default:
@ -569,7 +598,7 @@ storyRewards:
jde, oba tvary se <strong>slepí</strong> k sobě. Pokud ne, tvar
vpravo se <strong>nalepí na</strong> tvar vlevo!
reward_splitter:
title: Rozřazování/Spojování pásu
title: Kompaktní rozdělovač
desc: Právě jste odemkli <strong>rozdělovací</strong> variantu
<strong>vyvažovače</strong> - Přijímá jeden vstup a rozdělí ho na
dva!
@ -633,9 +662,9 @@ storyRewards:
desc: Gratuluji! Mimochodem, více obsahu najdete v plné verzi!
reward_balancer:
title: Vyvažovač
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!
desc: Multifunkční <strong>vyvažovač</strong> byl odemknut - Může
být použit ke zvětšení vašich továren <strong>rozdělováním a spojováním
předmětů</strong> na několik pásu!
reward_merger:
title: Kompaktní spojovač
desc: Právě jste odemkli <strong>spojovací</strong> variantu
@ -681,13 +710,14 @@ storyRewards:
kabelů.<br><br> - Pokračovat ve hře pravidelně.<br><br> Bez ohledu
na tvou volbu, nezapomeň si svou hru užít!
reward_wires_painter_and_levers:
title: Kabely a čtyřnásobný barvič
title: Kabely a 4x-barvič
desc: "Právě jste odemkli <strong>vrstvu kabelů</strong>: Je to samostatná
vrstva navíc oproti běžné vrstvě a představuje spoustu nových
možností!<br><br> Do začátku jsem zpřístupnil <strong>čtyřnásobný
barvič</strong> - Připojte vstupy, které byste chtěli obarvit na
vrstvě kabelů!<br><br> Pro přepnutí mezi vrstvami stiskněte klávesu
<strong>E</strong>."
barvič</strong> - Připojte vstupy, které byste chtěli obarvit
na vrstvě kabelů!<br><br> Pro přepnutí mezi vrstvami stiskněte klávesu
<strong>E</strong>. <br><br> PS: <strong>Aktivujte nápovědy</strong> v
nastavení pro spuštění tutoriálu o kabelech!"
reward_filter:
title: Filtr předmětů
desc: Právě jste odemkli <strong>filtr předmětů</strong>! Nasměruje předměty buď
@ -703,7 +733,7 @@ settings:
general: Obecné
userInterface: Uživatelské rozhraní
advanced: Rozšířené
performance: Performance
performance: Výkon
versionBadges:
dev: Vývojová verze
staging: Testovací verze
@ -713,7 +743,7 @@ settings:
uiScale:
title: Škálování UI
description: Změní velikost uživatelského rozhraní. Rozhraní se bude stále
přizpůsobovoat rozlišení vaší obrazovky, toto nastavení pouze
přizpůsobovat rozlišení vaší obrazovky, toto nastavení pouze
mění jeho škálu.
scales:
super_small: Velmi malé
@ -722,7 +752,7 @@ settings:
large: Velké
huge: Obrovské
scrollWheelSensitivity:
title: Citlivost přibížení
title: Citlivost přiblížení
description: Změní citlivost přiblížení (kolečkem myši nebo trackpadem).
sensitivity:
super_slow: Hodně pomalé
@ -757,7 +787,7 @@ settings:
alwaysMultiplace:
title: Několikanásobné pokládání
description: Pokud bude zapnuté, zůstanou budovy vybrané i po postavení do té
doby než je zrušíte. Má to stejný efekt jako držení klávesy
doby, než je zrušíte. Má to stejný efekt jako držení klávesy
SHIFT.
offerHints:
title: Tipy & Nápovědy
@ -772,8 +802,8 @@ settings:
slow: Pomalá
regular: Normální
fast: Rychlá
super_fast: Hodně Rychlá
extremely_fast: Extrémně Rychlá
super_fast: Hodně rychlá
extremely_fast: Extrémně rychlá
enableTunnelSmartplace:
title: Chytré tunely
description: Pokládání tunelů po zapnutí bude samo odstraňovat nepotřebné pásy.
@ -800,11 +830,11 @@ settings:
koeficient. V opačném případě zobrazí popis a obrázek.
disableCutDeleteWarnings:
title: Zakázat upozornění o vyjmutí nebo odstranění
description: Deaktivujte varovná dialogová okna vyvolaná při vymutí/mazání více
description: Deaktivujte varovná dialogová okna vyvolaná při vyjmutí/mazání více
než 100 entit.
enableColorBlindHelper:
title: Režim pro barvoslepé
description: Zapné různé nástroje, které vám umožní hrát hru i pokud jste
description: Zapne různé nástroje, které vám umožní hrát hru i pokud jste
barvoslepí.
rotationByBuilding:
title: Rotace dle typu budov
@ -854,9 +884,13 @@ settings:
description: Umožnuje posouvání po mapě, pokud myší přejedete na okraj
obrazovky. Rychlost žáleží na nastavení rychlosti pohybu.
zoomToCursor:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
title: Přiblížení ke kurzoru
description: Při zapnutí dojde k přibližování ve směru polohy
kurzoru, jinak ve středu obrazovky.
mapResourcesScale:
title: Velikost zdrojů na mapě
description: Určuje velikost ikon tvarů na náhledu mapy (při
oddálení).
rangeSliderPercentage: <amount> %
keybindings:
title: Klávesové zkratky
@ -934,13 +968,13 @@ keybindings:
about:
title: O hře
body: >-
Tato hra je open source a je vyvíjená <a
Tato hra je open source. Je vyvíjená <a
href="https://github.com/tobspr" target="_blank">Tobiasem Springerem</a>
(česky neumí, ale je to fakt frajer :) ).<br><br>
(česky neumí, ale je fakt frajer :) ).<br><br>
Pokud se chceš na hře podílet, podívej se na <a href="<githublink>" target="_blank">shapez.io na githubu</a>.<br><br>
Tato hra by nebyla ani možná bez skvělé Discord komunity okolo Tobiasových her - Vážně by ses měl přijít mrknout na <a href="<discordlink>" target="_blank">Discord server</a>!<br><br>
Tato hra by nebyla možná ani bez skvělé Discord komunity okolo Tobiasových her - Vážně by ses měl přijít mrknout na <a href="<discordlink>" target="_blank">Discord server</a>!<br><br>
Soundtrack udělal <a href="https://soundcloud.com/pettersumelius" target="_blank">Peppsen</a> - Je úžasnej.<br><br>

View File

@ -201,6 +201,14 @@ dialogs:
renameSavegame:
title: Rename Savegame
desc: You can rename your savegame here.
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: Bevæg dig
@ -309,6 +317,30 @@ ingame:
bælter for at færdiggøre målet hurtigere.<br><br>Tip: Hold
<strong>SKIFT</strong> for at sætte flere udvindere, og tryk
<strong>R</strong> for at rotere dem."
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
connectedMiners:
one_miner: 1 Miner
n_miners: <amount> Miners
@ -699,7 +731,8 @@ storyRewards:
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Item Filter
desc: You unlocked the <strong>Item Filter</strong>! It will route items either
@ -872,6 +905,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: Keybindings

View File

@ -2,17 +2,14 @@ steamPage:
shortText: In shapez.io nutzt du die vorhandenen Ressourcen, um mit deinen
Maschinen durch Kombination immer komplexere Formen zu erschaffen.
discordLinkShort: Offizieller Discord
intro: Du magst Automatisierungsspiele? Dann bist du hier genau richtig!
shapez.io ist ein ruhiges Spiel, in dem du Fabriken zur automatisierten
Produktion von geometrischen Formen bauen musst. Mit steigendem Level
werden die Formen immer komplexer, und du musst dich auf der unendlich
großen Karte ausbreiten. Das ist noch nicht alles, denn du musst
exponentiell mehr produzieren, um die Anforderungen zu erfüllen - Da
hilft nur skalieren! Während du am Anfang nur Formen verarbeitest, musst
du diese später auch einfärben - Dafür musst du Farben extrahieren und
mischen! Der Kauf des Spiels auf Steam gibt dir Zugriff auf die
Vollversion, aber du kannst auch zuerst die Demo auf shapez.io spielen
und dich später entscheiden!
intro: >-
Du magst Automatisierungsspiele? Dann bist du hier genau richtig!
shapez.io ist ein entspanntes Spiel, in dem du Fabriken zur automatisierten Produktion von geometrischen Formen bauen musst.
Mit steigendem Level werden die Formen immer komplexer, und du musst dich auf der unendlich großen Karte ausbreiten. Das ist noch nicht alles, denn du musst exponentiell mehr produzieren, um die Anforderungen zu erfüllen - Da hilft nur skalieren!
Während du am Anfang nur Formen verarbeitest, musst du diese später auch einfärben - Dafür musst du Farben extrahieren und mischen! Der Kauf des Spiels auf Steam gibt dir Zugriff auf die Vollversion, aber du kannst auch zuerst die Demo auf shapez.io spielen und dich später entscheiden!
title_advantages: Vorteile der Vollversion
advantages:
- <b>12 Neue Level</b> für insgesamt 26 Level
@ -88,7 +85,7 @@ mainMenu:
discordLink: Offizieller Discord Server
helpTranslate: Hilf beim Übersetzen!
madeBy: Ein Spiel von <author-link>
browserWarning: Sorry, aber das Spiel wird in deinem Browser langsam laufen!
browserWarning: Sorry, aber das Spiel wird in deinem Browser langsamer laufen!
Kaufe die Vollversion oder verwende Google Chrome für die beste
Erfahrung!
savegameLevel: Level <x>
@ -174,9 +171,9 @@ dialogs:
vereinfachen und beschleunigen. Hier sind ein paar Beispiele, aber
prüfe am besten die
<strong>Tastenbelegung-Einstellungen</strong>!<br><br>
<code class='keybinding'>STRG</code> + Ziehen: Wähle Areal aus.<br>
<code class='keybinding'>STRG</code> + Ziehen: Wähle Bereich aus.<br>
<code class='keybinding'>UMSCH</code>: Halten, um mehrere Gebäude zu platzieren.<br>
<code class='keybinding'>ALT</code>: Invertiere die Platzierungsrichtung der Förderbänder.<br>
<code class='keybinding'>ALT</code>: Invertiere die Platzierungsrichtung der Fließbänder.<br>
createMarker:
title: Neuer Marker
titleEdit: Marker bearbeiten
@ -199,6 +196,13 @@ dialogs:
renameSavegame:
title: Speicherstand umbenennen
desc: Hier kannst du deinen Speicherstand umbenennen.
tutorialVideoAvailable:
title: Tutorial verfügbar
desc: Für dieses Level ist ein Tutorial-Video verfügbar. Willst du es anschauen?
tutorialVideoAvailableForeignLanguage:
title: Tutorial verfügbar
desc: Für dieses Level ist ein Tutorial-Video verfügbar, allerdings nur auf
Englisch. Willst du es trotzdem anschauen?
ingame:
keybindingsOverlay:
moveMap: Bewegen
@ -275,7 +279,7 @@ ingame:
settingsMenu:
playtime: Spielzeit
buildingsPlaced: Gebäude
beltsPlaced: Förderbänder
beltsPlaced: Fließbänder
tutorialHints:
title: Brauchst du Hilfe?
showHint: Hinweis
@ -303,9 +307,35 @@ ingame:
schließe ihn am Hub an!<br><br>Tipp: <strong>Drücke und
ziehe</strong> das Fließband mit der Maus!"
1_3_expand: "Dies ist <strong>KEIN</strong> Idle-Game! Baue mehr Extrahierer und
Förderbänder, um das Ziel schneller zu erreichen.<br><br>Tipp:
Fließbänder, um das Ziel schneller zu erreichen.<br><br>Tipp:
Halte <strong>UMSCH</strong>, um mehrere Gebäude zu platzieren
und nutze <strong>R</strong>, um sie zu rotieren."
2_1_place_cutter: "Platziere nun einen <strong>Schneider</strong> um die Kreise
in zwei Hälften zu zerteilen.<br><br> Übrigens: Der Schneider
schneidet immer von <strong>oben nach unten</strong>, unabhängig
seiner Orientierung!"
2_2_place_trash: Der Schneider kann <strong>verstopfen</strong>!<br><br>Benutze
einen <strong>Mülleimer</strong> um den aktuell (!) nicht
benötigten Rest loszuwerden.
2_3_more_cutters: "Gut gemacht! Platziere noch <strong>2 mehr Schneider</strong>
um das ganze zu beschleunigen.<br><br> Übrigens: Benutze die
<strong>Tasten 0-9</strong> um Gebäude schneller auszuwählen!"
3_1_rectangles: "Lass uns ein paar Quadrate extrahieren! <strong>Baue 4
Extrahierer</strong> und verbinde sie mit deinem HUB.<br><br>
PS: Halte <strong>SHIFT</strong> während du ein Fließband
ziehst, um den Fließbandplaner zu aktivieren!"
21_1_place_quad_painter: Platzier den <strong>Vierfach-Färber</strong> und
organisier ein paar <strong>Kreise</strong>,
<strong>weiße</strong> und <strong>rote</strong> Farbe!
21_2_switch_to_wires: Wechsle in die Wires-Ebene indem du <strong>E</strong>
drückst!<br><br> Verbinde danach <strong>alle vier
Eingänge</strong> mit Signalkabeln!
21_3_place_button: Perfekt! Platziere jetzt einen <strong>Schalter</strong> und
verbinde ihn mit Signalkabeln.
21_4_press_button: "Drücke den Schalter damit er ein <strong>wahres
Signal</strong> ausgibt, und damit den Färber aktiviert.<br><br>
PS: Du musst nicht alle Eingänge verbinden! Probiere mal nur 2
aus."
connectedMiners:
one_miner: Ein Extrahierer
n_miners: <amount> Extrahierer
@ -334,7 +364,7 @@ ingame:
title: ∞ Marker
desc: Verliere nie den Überblick!
wires:
title: Wires
title: Wires-Ebene
desc: Eine ganz neue Dimension!
darkmode:
title: Dark-Mode
@ -344,7 +374,7 @@ ingame:
desc: Ich entwickle in meiner Freizeit!
shopUpgrades:
belt:
name: Förderbänder, Verteiler & Tunnel
name: Fließbänder, Verteiler & Tunnel
description: Geschw. x<currentMult> → x<newMult>
miner:
name: Extrahierer
@ -376,11 +406,11 @@ buildings:
underground_belt:
default:
name: Tunnel
description: Erlaubt dir, Formen und Farbe unter Gebäuden und Förderbändern
description: Erlaubt dir, Formen und Farbe unter Gebäuden und Fließbändern
durchzuleiten.
tier2:
name: Tunnel Stufe II
description: Erlaubt dir, Formen und Farbe unter Gebäuden und Förderbändern
description: Erlaubt dir, Formen und Farbe unter Gebäuden und Fließbändern
durchzuleiten. Höhere Reichweite.
balancer:
default:
@ -389,16 +419,16 @@ buildings:
Ausgänge.
merger:
name: Kombinierer (kompakt)
description: Kombiniert zwei Fließbänder zu einem.
description: Kombiniert zwei Eingänge gleichmäßig zu einem Ausgang.
merger-inverse:
name: Kombinierer (kompakt)
description: Kombiniert zwei Fließbänder zu einem.
description: Kombiniert zwei Eingänge gleichmäßig zu einem Ausgang.
splitter:
name: Aufteiler (kompakt)
description: Teilt ein Fließband in zwei.
description: Teilt einen Eingang gleichmäßig in zwei Ausgänge auf.
splitter-inverse:
name: Aufteiler (kompakt)
description: Teilt ein Fließband in zwei.
description: Teilt einen Eingang gleichmäßig in zwei Ausgänge auf.
cutter:
default:
name: Schneider
@ -443,8 +473,8 @@ buildings:
quad:
name: Färber (vierfach)
description: Erlaubt dir, jeden Quadranten der Form individuell zu färben. Nur
Quadranten mit einem <strong>wahren Signal</strong> auf der
Wires-Ebene werden angemalt!
Quadranten mit einem <strong>wahren Signal</strong> (Form, Farbe
oder "1") auf der Wires-Ebene werden angemalt!
trash:
default:
name: Mülleimer
@ -474,8 +504,8 @@ buildings:
constant_signal:
default:
name: Signalgeber
description: Sendet ein konstantes Signal. Du wählst zwischen Formen, Farben
oder Wahrheitswerten (1 oder 0).
description: Sendet ein konstantes Signal. Du wählst zwischen Formen, Farben und
Wahrheitswerten (1 oder 0).
lever:
default:
name: Schalter
@ -484,36 +514,36 @@ buildings:
Filters verwendet werden kann.
logic_gate:
default:
name: UND Gatter
description: Gibt eine "1" aus, wenn beide Eingänge wahr sind (wahr bedeutet
Form, Farbe oder "1").
name: UND-Gatter
description: Gibt eine "1" aus, wenn beide Eingänge wahr (Form, Farbe oder "1")
sind.
not:
name: NICHT Gatter
description: Gibt eine "1" aus, wenn der Eingang nicht wahr ist (wahr bedeutet
Form, Farbe oder "1").
name: NICHT-Gatter
description: Gibt eine "1" aus, wenn beide Eingänge nicht wahr (kein Signal oder
"0") sind.
xor:
name: XOR Gatter
description: Gibt eine "1" aus, wenn einer der Eingänge wahr ist, aber nicht
beide (wahr bedeutet Form, Farbe oder "1").
name: XODER-Gatter
description: Gibt eine "1" aus, wenn genau einer der Eingänge wahr (Form, Farbe
oder "1") ist.
or:
name: ODER Gatter
description: Gibt eine "1" aus, wenn einer der Eingänge wahr ist (wahr bedeutet
Form, Farbe oder "1").
name: ODER-Gatter
description: Gibt eine "1" aus, wenn mindestens einer der Eingänge wahr (Form,
Farbe oder "1") ist.
transistor:
default:
name: Transistor
description: Leitet den unteren Eingang weiter, wenn der seitliche Eingang wahr
ist (eine Form, Farbe oder "1").
description: Lässt den unteren Eingang passieren, wenn der seitliche Eingang
wahr (Form, Farbe oder "1") ist.
mirrored:
name: Transistor
description: Leitet den unteren Eingang weiter, wenn der seitliche Eingang wahr
ist (eine Form, Farbe oder "1").
description: Lässt den unteren Eingang passieren, wenn der seitliche Eingang
wahr (Form, Farbe oder "1") ist.
filter:
default:
name: Filter
description: Verbinde ein Signal, um alle passenden Gegenstände nach oben zu
leiten und die restlichen nach rechts. Kann auch mit
Wahrheitswerten gesteuert werden.
name: Itemfilter
description: Lässt nur die Items durch, die dem eingespeisten Signal entsprechen
und sortiert die restlichen aus. Mit Wahrheitswerten
konfiguriert fungiert er als Schranke.
display:
default:
name: Anzeige
@ -522,14 +552,14 @@ buildings:
reader:
default:
name: Fließbandkontrolle
description: Ermöglicht es, den durchschnittlichen Durchsatz des Fließbandes zu
messen. Gibt den letzten Gegenstand auf der Wires-Ebene aus
(sobald freigeschaltet).
description: Misst den gemittelten Durchsatz des Fließbandes. Gibt zuätzlich den
zuletzt passierten Gegenstand auf der Wires-Ebene aus (sobald
freigeschaltet).
analyzer:
default:
name: Formanalyse
description: Analysiert den oberen rechten Quadranten der untersten Schicht der
Form und gibt seine Form und Farbe zurück.
description: Analysiert den oberen rechten Quadranten der untersten Schicht
einer Form und gibt sowohl Form als auch Farbe aus.
comparator:
default:
name: Vergleich
@ -541,11 +571,10 @@ buildings:
description: Schneidet die Form virtuell in zwei Hälften.
rotater:
name: Virtueller Rotierer
description: Dreht die Form virtuell, sowohl im als auch gegen den
Uhrzeigersinn.
description: Dreht die Form virtuell im Uhrzeigersinn.
unstacker:
name: Virtueller Entstapler
description: Extrahiert virtuell die oberste Ebene nach rechts und die die
description: Extrahiert virtuell die oberste Ebene nach rechts und die
restlichen Ebenen nach links.
stacker:
name: Virtueller Stapler
@ -558,7 +587,7 @@ buildings:
default:
name: Item-Produzent
description: Nur im Sandkastenmodus verfügbar. Gibt das Signal aus der
Wires-Ebene auf der regulären Ebene aus.
Wires-Ebene als Item aus.
storyRewards:
reward_cutter_and_trash:
title: Formen zerschneiden
@ -574,9 +603,9 @@ storyRewards:
Uhrzeigersinn um 90 Grad.
reward_painter:
title: Färben
desc: "Der <strong>Färber</strong> wurde freigeschaltet. Extrahiere ein paar
Farben (genauso wie bei Formen) und färbe damit eine Form im
Färber.<br><br>PS: Falls du Farbenblind bist, gibt es einen
desc: "Der <strong>Färber</strong> wurde freigeschaltet! Extrahiere ein paar
Farben (genauso wie bei Formen) und lasse damit eine Form im Färber
bemalen.<br><br>PS: Falls du farbenblind bist, gibt es einen
<strong>Modus für Farbenblinde</strong> in den Einstellungen!"
reward_mixer:
title: Farben mischen
@ -591,13 +620,13 @@ storyRewards:
<strong>gestapelt</strong>.
reward_balancer:
title: Verteiler
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!
desc: Der multifunktionale <strong>Verteiler</strong> wurde freigeschaltet! Er
kann benutzt werden, um größere Fabriken zu bauen, indem Fließbänder
<strong>aufgeteilt oder zusammengelegt</strong> werden!
reward_tunnel:
title: Tunnel
desc: Der <strong>Tunnel</strong> wurde freigeschaltet! Du kannst Items nun
unter Gebäuden oder Förderbändern hindurchleiten.
unter Gebäuden oder Fließbändern hindurchleiten.
reward_rotater_ccw:
title: Gegen UZS Rotieren
desc: Du hast eine zweite Variante des <strong>Rotierers</strong>
@ -607,9 +636,9 @@ storyRewards:
reward_miner_chainable:
title: Extrahierer (Kette)
desc: "Du hast den <strong>Kettenextrahierer</strong> freigeschaltet! Er kann
seine Resourcen an andere Extrahierer <strong>weiterleiten</strong>!
<br><br> PS: Die alten Extrahierer wurde jetzt in deiner
Symbolleiste ersetzt!"
seine Ressourcen an andere Extrahierer
<strong>weiterleiten</strong>. <br><br> PS: Der alte Extrahierer
wurde jetzt in deiner Symbolleiste ersetzt!"
reward_underground_belt_tier_2:
title: Tunnel Stufe II
desc: Du hast eine neue Variante des <strong>Tunnels</strong> freigeschaltet!
@ -619,7 +648,7 @@ storyRewards:
title: Kompakter Kombinierer
desc: Du hast eine <strong>kompakte Variante</strong> des
<strong>Verteilers</strong> freigeschaltet! Der Kombinierer vereint
zwei Eingäge zu einem Ausgang.
zwei Eingänge zu einem Ausgang.
reward_splitter:
title: Kompakter Aufteiler
desc: Du hast eine <strong>kompakte Variante</strong> des
@ -632,12 +661,12 @@ storyRewards:
lassen.<br><br>Wenn du Stromkabel freischaltest, wird er um eine
sehr nützliche Funktion ergänzt!
reward_cutter_quad:
title: Schneider (4-fach)
title: Schneider (vierfach)
desc: Du hast eine neue Variante des <strong>Schneiders</strong> freigeschaltet!
Damit kannst du Formen in alle <strong>vier Teile</strong>
zerschneiden.
reward_painter_double:
title: Färber (2-fach)
title: Färber (zweifach)
desc: Du hast eine neue Variante des <strong>Färbers</strong> freigeschaltet!
Hiermit kannst du <strong>zwei Formen auf einmal</strong> färben und
verbrauchst nur eine Farbe.
@ -650,59 +679,69 @@ storyRewards:
reward_blueprints:
title: Blaupausen
desc: Jetzt kannst du Teile deiner Fabrik <strong>kopieren und
einfügen</strong>! Wähle ein Areal aus (Halte STRG und ziehe mit
einfügen</strong>! Wähle einen Bereich aus (Halte STRG und ziehe mit
deiner Maus) und drücke 'C', um zu kopieren.<br><br>Einfügen ist
<strong>nicht kostenlos</strong>! Du musst
<strong>Blaupausenformen</strong> produzieren, um die Kopierkosten
zu decken (Welche du gerade produziert hast)!
zu decken (Welche du gerade produziert hast).
reward_rotater_180:
title: Rotierer (180°)
desc: Du hast eine weitere Variante des <strong>Rotierers</strong>
freigeschaltet! Mit ihm kannst du Formen um 180° drehen
(Überraschung! :D).
reward_wires_painter_and_levers:
title: Wires & Quad Painter
desc: "You just unlocked the <strong>Wires Layer</strong>: It is a separate
layer on top of the regular layer and introduces a lot of new
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
title: Wires-Ebene & vierfacher Färber
desc: "Du hast soeben die <strong>Wires-Ebene</strong> freigeschaltet! Diese
separate Ebene befindet sich unter deinen Gebäuden und gibt dir
viele neue Möglichkeiten.<br><br> Für den Anfang bekommst du einen
<strong>vierfachen Färber</strong>. Schließe die Eingänge, mit denen
du die Quadranten färben möchtest, an ein Signalkabel auf der
Wires-Ebene an!<br><br> Mit <strong>E</strong> wechselst du zwischen
den Ebenen. <br><br>PS: <strong>Aktiviere Hinweise</strong> in den
Einstellungen um das Tutorial anzuzeigen!"
reward_filter:
title: Item Filter
desc: You unlocked the <strong>Item Filter</strong>! It will route items either
to the top or the right output depending on whether they match the
signal from the wires layer or not.<br><br> You can also pass in a
boolean signal (1 / 0) to entirely activate or disable it.
title: Itemfilter
desc: Du hast den <strong>Itemfilter</strong> freigeschaltet! Items, die dem
eingespeisten Signal entsprechen, lässt er passieren. Den Rest
zweigt er nach rechts ab.<br><br> Du kannst z.B. nach Farbe und Form
sortieren oder mit Wahrheitswerten (1 oder 0) Items nur auf
Knopfdruck passieren lassen.
reward_display:
title: Display
desc: "You have unlocked the <strong>Display</strong> - Connect a signal on the
wires layer to visualize it!<br><br> PS: Did you notice the belt
reader and storage output their last read item? Try showing it on a
display!"
title: Anzeige
desc: Du hast die <strong>Anzeige</strong> freigeschaltet! Jedes eingespeiste
Signal kann damit dargestellt werden.<br><br>Apropos, ist dir schon
aufgefallen, dass Fließbandkontrolle und Lager das zuletzt passierte
Item ausgeben können? Lasse es dir doch gleich mal anzeigen!
reward_constant_signal:
title: Constant Signal
desc: You unlocked the <strong>constant signal</strong> building on the wires
layer! This is useful to connect it to <strong>item filters</strong>
for example.<br><br> The constant signal can emit a
<strong>shape</strong>, <strong>color</strong> or
<strong>boolean</strong> (1 / 0).
title: Signalgeber
desc: Du hast den <strong>Signalgeber</strong> freigeschaltet! Du kannst das
Gebäude auf der Wires-Ebene platzieren und z.B. mit einem
<strong>Itemfilter</strong> verbinden.<br><br> Der Signalgeber kann
dir <strong>Formen</strong>, <strong>Farben</strong> oder
<strong>Wahrheitswerte</strong> (1 oder 0) zur Verfügung stellen.
reward_logic_gates:
title: Logic Gates
desc: You unlocked <strong>logic gates</strong>! You don't have to be excited
about this, but it's actually super cool!<br><br> With those gates
you can now compute AND, OR, XOR and NOT operations.<br><br> As a
bonus on top I also just gave you a <strong>transistor</strong>!
title: Logikgatter
desc: Du hast nun eine Reihe an <strong>Logikgattern</strong> freigeschaltet!
Das muss dich jetzt nicht nervös machen, die Funktionsweise ist
simpel und ziemlich cool.<br><br> Mit Logikgattern kannst du UND-,
ODER-, XODER- und NICHT-Operationen ausführen.<br><br> Als
Sahnehäubchen obendrauf stelle ich dir noch einen
<strong>Transistor</strong> zur Verfügung. Houston, wir sind
Turing-vollständig!
reward_virtual_processing:
title: Virtual Processing
desc: I just gave a whole bunch of new buildings which allow you to
<strong>simulate the processing of shapes</strong>!<br><br> You can
now simulate a cutter, rotater, stacker and more on the wires layer!
With this you now have three options to continue the game:<br><br> -
Build an <strong>automated machine</strong> to create any possible
shape requested by the HUB (I recommend to try it!).<br><br> - Build
something cool with wires.<br><br> - Continue to play
regulary.<br><br> Whatever you choose, remember to have fun!
title: Virtuelle Verarbeitung
desc: "Du hast gerade eine Menge neue Gebäude freigeschaltet! Mit ihnen kannst
du die <strong>Verarbeitung von Formen komplett
simulieren</strong>.<br><br> Das beinhaltet einen Schneider,
Rotierer, Stapler und mehr für die Wires-Ebene! Damit bleiben dir ab
jetzt drei Optionen offen:<br><br> - Ich empfehle dir, eine
<strong>automatisierte Maschine</strong> zu bauen, die jede
beliebige Form am Hub abgreift und herstellt. (Probiere es
wenigstens!)<br><br> - Werde kreativ und lasse dir etwas Cooles
einfallen, das du auf der Wires-Ebene umsetzen kannst. (Und teile es
auf dem Discord!)<br><br> - Spiele dich weiter durch die Level. Auf
deine Art!<br><br> Das Wichstigste an deiner Entscheidung ist:
Vergiss nicht, dabei Spaß zu haben!"
no_reward:
title: Nächstes Level
desc: "Dieses Level hat dir keine Belohnung gegeben, aber im Nächsten gibt es
@ -714,8 +753,8 @@ storyRewards:
desc: Du hast das nächste Level freigeschaltet!
reward_freeplay:
title: Freies Spiel
desc: Du hast es geschafft! Du hast den <strong>Freispiel-Modus</strong>
freigeschaltet! Das bedeutet, dass die abzuliefernden Formen jetzt
desc: Du hast es geschafft! Du bist im <strong>Freispiel-Modus</strong>
angekommen! Das bedeutet, dass die abzuliefernden Formen jetzt
<strong>zufällig</strong> erzeugt werden!<br><br> Da der Hub ab
jetzt einen bestimmten <strong>Durchsatz</strong> benötigt, empfehle
ich dringend, eine Maschine zu bauen, die automatisch die gewünschte
@ -830,10 +869,9 @@ settings:
die den Einstieg erleichtern sollen.
enableTunnelSmartplace:
title: Intelligente Tunnel
description: Aktiviert das automatische Entfernen von überflüssigen
Förderbändern bei der Platzierung von Tunneln. Außerdem
funktioniert das Ziehen von Tunneln und überschüssige werden
ebenfalls entfernt.
description: Aktiviert das automatische Entfernen von überflüssigen Fließbändern
bei der Platzierung von Tunneln. Außerdem funktioniert das
Ziehen von Tunneln und überschüssige werden ebenfalls entfernt.
vignette:
title: Vignette
description: Aktiviert den Vignetteneffekt, der den Rand des Bildschirms
@ -881,9 +919,9 @@ settings:
description: Standardmäßig eingeschaltet, wählst du automatisch den Extrahierer,
wenn du mit der Pipette auf einen Ressourcenfleck zeigst
simplifiedBelts:
title: Minimalistische Förderbänder (Unschön)
description: Zur Verbesserung der Leistung werden die Items auf Förderbändern
nur angezeigt, wenn du deine Maus darüber bewegst. Hier leidet
title: Minimalistische Fließbänder (Unschön)
description: Zur Verbesserung der Leistung werden die Items auf Fließbändern nur
angezeigt, wenn du deine Maus darüber bewegst. Hier leidet
sowohl die Grafik, also auch dein Spielerlebnis. Benutze die
Funktion nur, wenn du auf die Leistung wirklich angewiesen bist!
enableMousePan:
@ -895,6 +933,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
keybindings:
title: Tastenbelegung
hint: "Tipp: Benutze STRG, UMSCH and ALT! Sie aktivieren verschiedene
@ -1001,7 +1043,7 @@ tips:
- Wenn der Stapler nicht die richtige Form ausspuckt, wechsle doch mal die
Eingänge.
- Du kannst mit <b>R</b> die Richtung des Bandplaners umkehren.
- Halte <b>STRG</b>, um die Förderbänder ohne automatische Orientierung zu
- Halte <b>STRG</b>, um die Fließbänder ohne automatische Orientierung zu
platzieren.
- Die Verhältnisse der Maschinen bleiben gleich, wenn du die Upgrades
gleichmäßig kaufst.
@ -1020,13 +1062,13 @@ tips:
- Vergiss die Tunnel nicht!
- Für maximale Effizienz musst du die Items nicht gleichmässig aufteilen.
- Das Halten von <b>UMSCH</b> aktiviert den Bandplaner, der lange
Förderbänder ganz einfach platziert.
Fließbänder ganz einfach platziert.
- Schneider teilen die Form immer vertikal, unabhängig von der Orientierung.
- Weiß erhälst du aus der Kombination aller 3 Grundfarben.
- Das Lager gibt Items immer zuerst am linken Ausgang ab.
- Es lohnt sich, Zeit in den Bau von wiederverwendbaren Designs zu stecken!
- Das Halten von <b>STRG</b> ermöglicht dir, mehrere Gebäude zu platzieren.
- Du kanst <b>ALT</b> gedrückt halten, um die Richtung der Förderbänder
- Du kanst <b>ALT</b> gedrückt halten, um die Richtung der Fließbänder
umzukehren.
- Effizienz ist entscheidend!
- Abbaubare Formen werden komplexer, je weiter sie vom Hub entfernt sind.
@ -1034,7 +1076,7 @@ tips:
mehreren auf.
- Benutze Aufteiler, um deine Effizienz zu maximieren.
- Organisation ist wichtig! Verheddere dich nicht in einem Gewirr aus
Förderbändern.
Fließbändern.
- Plane vorher und lasse dir Platz für Reserven, oder es gibt ein riesiges
Chaos!
- Lösche deine alten Fabriken nicht! Du benötigst sie um Upgrades
@ -1065,7 +1107,7 @@ tips:
- Dieses Spiel hat eine Menge Einstellungen, schaue sie dir einmal an!
- Die Richtung zu deinem Hub ist oben rechts mit einer kleinen Kompassnadel
markiert!
- Um alle Förderbänder zu leeren, schneide den Bereich aus und füge ihn auf
- Um alle Fließbänder zu leeren, schneide den Bereich aus und füge ihn auf
der selben Position wieder ein.
- Drücke F4 um deine FPS und Tickrate anzuzeigen.
- Drücke doppelt F4 um den Standort des Mauszeigers und der Kamera zu

View File

@ -209,6 +209,14 @@ dialogs:
renameSavegame:
title: Rename Savegame
desc: You can rename your savegame here.
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: Κίνηση
@ -306,6 +314,30 @@ ingame:
<strong>SHIFT</strong> για να τοποθετήσεις πολλούς αποσπαστές
και χρησιμοποιήστε το <strong>R</strong> για να τους
περιστρέψεις."
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
colors:
red: Κόκκινο
green: Πράσινο
@ -721,7 +753,8 @@ storyRewards:
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Item Filter
desc: You unlocked the <strong>Item Filter</strong>! It will route items either
@ -896,6 +929,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: Συνδιασμοί πλήκτρων

View File

@ -28,7 +28,7 @@ steamPage:
discordLinkShort: Official Discord
intro: >-
You like automation games? Then you are in the right place!
Do you like automation games? Then you are in the right place!
shapez.io is a relaxed game in which you have to build factories for the automated production of geometric shapes. As the level increases, the shapes become more and more complex, and you have to spread out on the infinite map.
@ -272,6 +272,14 @@ dialogs:
title: Rename Savegame
desc: You can rename your savegame here.
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
# This is shown in the top left corner and displays useful keybindings in
# every situation
@ -414,6 +422,36 @@ ingame:
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.
2_1_place_cutter: >-
Now place a <strong>Cutter</strong> to cut the circles in two halves!<br><br>
PS: The cutter always cuts from <strong>top to bottom</strong> regardless of its orientation.
2_2_place_trash: >-
The cutter can <strong>clog and stall</strong>!<br><br>
Use a <strong>trash</strong> to get rid of the currently (!) not needed waste.
2_3_more_cutters: >-
Good job! Now place <strong>2 more cutters</strong> to speed up this slow process!<br><br>
PS: Use the <strong>0-9 hotkeys</strong> to access buildings faster!
3_1_rectangles: >-
Now let's extract some rectangles! <strong>Build 4 extractors</strong> and connect them to the hub.<br><br>
PS: Hold <strong>SHIFT</strong> while dragging a belt to activate the belt planner!
21_1_place_quad_painter: >-
Place the <strong>quad painter</strong> and get some <strong>circles</strong>, <strong>white</strong> and <strong>red</strong> color!
21_2_switch_to_wires: >-
Switch to the wires layer by pressing <strong>E</strong>!<br><br>
Then <strong>connect all four inputs</strong> of the painter with cables!
21_3_place_button: >-
Awesome! Now place a <strong>Switch</strong> and connect it with wires!
21_4_press_button: >-
Press the switch to make it <strong>emit a truthy signal</strong> and thus activate the painter.<br><br>
PS: You don't have to connect all inputs! Try wiring only two.
# Connected miners
connectedMiners:
one_miner: 1 Extractor
@ -668,7 +706,7 @@ buildings:
rotater:
name: Virtual Rotater
description: Virtually rotates the shape, both clockwise and counter-clockwise.
description: Virtually rotates the shape clockwise.
unstacker:
name: Virtual Unstacker
@ -775,7 +813,8 @@ storyRewards:
desc: >-
You just unlocked the <strong>Wires Layer</strong>: It is a separate layer on top of the regular layer and introduces a lot of new mechanics!<br><br>
For the beginning I unlocked you the <strong>Quad Painter</strong> - Connect the slots you would like to paint with on the wires layer!<br><br>
To switch to the wires layer, press <strong>E</strong>.
To switch to the wires layer, press <strong>E</strong>. <br><br>
PS: <strong>Enable hints</strong> in the settings to activate the wires tutorial!
reward_filter:
title: >-
@ -1030,6 +1069,11 @@ settings:
description: >-
If activated the zoom will happen in the direction of your mouse position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: >-
Controls the size of the shapes on the map overview (when zooming out).
keybindings:
title: Keybindings
hint: >-
@ -1145,9 +1189,9 @@ demo:
settingNotAvailable: Not available in the demo.
tips:
- The hub accepts input of any kind, not just the current shape!
- The hub will accept any input, not just the current shape!
- Make sure your factories are modular - it will pay out!
- Don't build too close to the hub, or it will be a huge chaos!
- Don't build too close to the hub, or it will be a mess!
- If stacking does not work, try switching the inputs.
- You can toggle the belt planner direction by pressing <b>R</b>.
- Holding <b>CTRL</b> allows dragging of belts without auto-orientation.
@ -1165,21 +1209,20 @@ tips:
- You don't need to divide up items evenly for full efficiency.
- Holding <b>SHIFT</b> will activate the belt planner, letting you place long lines of belts easily.
- Cutters always cut vertically, regardless of their orientation.
- To get white mix all three colors.
- The storage buffer prioritises the left output.
- Invest time to build repeatable designs - it's worth it!
- Holding <b>CTRL</b> allows to place multiple buildings.
- Holding <b>SHIFT</b> lets you place multiple buildings in one click.
- You can hold <b>ALT</b> to invert the direction of placed belts.
- Efficiency is key!
- Shape patches that are further away from the hub are more complex.
- Machines have a limited speed, divide them up for maximum efficiency.
- Use balancers to maximize your efficiency.
- Organization is important. Try not to cross conveyors too much.
- Plan in advance, or it will be a huge chaos!
- Plan in advance, or it will be a mess!
- Don't remove your old factories! You'll need them to unlock upgrades.
- Try beating level 20 on your own before seeking for help!
- Try beating level 20 or 26 on your own before seeking for help!
- Don't complicate things, try to stay simple and you'll go far.
- You may need to re-use factories later in the game. Plan your factories to be re-usable.
- You may need to reuse factories later in the game. Build your factories to be reusable.
- Sometimes, you can find a needed shape in the map without creating it with stackers.
- Full windmills/pinwheels can never spawn naturally.
- Color your shapes before cutting for maximum efficiency.
@ -1190,13 +1233,13 @@ tips:
- Building too close to the hub can get in the way of later projects.
- The pin icon next to each shape in the upgrade list pins it to the screen.
- Mix all three primary colors to make white!
- You have an infinite map, don't cramp your factory, expand!
- You have an infinite map. Don't cramp your factory, expand!
- Also try Factorio! It's my favorite game.
- The quad cutter cuts clockwise starting from the top right!
- The quad cutter cuts clockwise, starting from the top right.
- You can download your savegames in the main menu!
- This game has a lot of useful keybindings! Be sure to check out the settings page.
- This game has a lot of settings, be sure to check them out!
- The marker to your hub has a small compass to indicate its direction!
- Your hub marker has a small compass that shows which direction it is in!
- To clear belts, cut the area and then paste it at the same location.
- Press F4 to show your FPS and Tick Rate.
- Press F4 twice to show the tile of your mouse and camera.

View File

@ -23,30 +23,30 @@ steamPage:
- <b>Modo oscuro</b>!
- Partidad guardadas ilimitadas
- Marcadores ilimitados
- Support me! ❤️
- Me apoyarás! ❤️
title_future: Contenido futuro
planned:
- Blueprint Library (Standalone Exclusive)
- Steam Achievements
- Puzzle Mode
- Minimap
- Librería de planos (Exclusivo de Standalone)
- Logros de Steam
- Modo Puzzle
- Minimapa
- Mods
- Sandbox mode
- ... and a lot more!
title_open_source: This game is open source!
- Modo libre
- ... y mucho más!
title_open_source: Este juego es de código abierto!
title_links: Links
links:
discord: Official Discord
discord: Discord oficial
roadmap: Roadmap
subreddit: Subreddit
source_code: Source code (GitHub)
translate: Help translate
source_code: Código fuente (GitHub)
translate: Ayuda a traducír
text_open_source: >-
Anybody can contribute, I'm actively involved in the community and
attempt to review all suggestions and take feedback into consideration
where possible.
Cualquiera puede contribuír, Estoy activamete involucrado en la comunidad y
trato de revisar todas las sugerencias además de tomar en cuenta los consejos
siempre que sea posible.
Be sure to check out my trello board for the full roadmap!
Asegurate de revisar mi página de Trello donde podrás encontrar el Roadmap!
global:
loading: Cargando
error: Error
@ -96,7 +96,7 @@ mainMenu:
Obtén el juego completo o descarga Chrome para la experiencia completa.
savegameLevel: Nivel <x>
savegameLevelUnknown: Nivel desconocido
savegameUnnamed: Unnamed
savegameUnnamed: Sin nombre
dialogs:
buttons:
ok: OK
@ -121,9 +121,8 @@ dialogs:
text: "No se ha podido cargar la partida guardada:"
confirmSavegameDelete:
title: Confirmar borrado
text: Are you sure you want to delete the following game?<br><br>
'<savegameName>' at level <savegameLevel><br><br> This can not be
undone!
text: Estás seguro de querér borrar el siguiente guardado?<br><br>
'<savegameName>' que está en el nivel <savegameLevel><br><br> Esto no se puede deshacer!
savegameDeletionError:
title: Fallo al borrar
text: "Fallo al borrar la partida guardada:"
@ -186,8 +185,7 @@ dialogs:
createMarker:
title: Nuevo marcador
titleEdit: Editar marcador
desc: Give it a meaningful name, you can also include a <strong>short
key</strong> of a shape (Which you can generate <link>here</link>)
desc: Dale un nombre significativo, tambien puedes incluir la <strong>clave</strong> de una forma (La cual puedes generar <link>aquí</link>)
markerDemoLimit:
desc: Solo puedes crear dos marcadores en la versión de prueba. ¡Obtén el juego
completo para marcadores ilimitados!
@ -197,13 +195,19 @@ dialogs:
cuenta que puede tardar bastante en las bases grandes. ¡E incluso
crashear tu juego!
editSignal:
title: Set Signal
descItems: "Choose a pre-defined item:"
descShortKey: ... or enter the <strong>short key</strong> of a shape (Which you
can generate <link>here</link>)
title: Establecer señal
descItems: "Elige un item pre-definido:"
descShortKey: ... o escribe la <strong>calve</strong> de una forma (La cual
puedes generar <link>aquí</link>)
renameSavegame:
title: Rename Savegame
desc: You can rename your savegame here.
title: Renombrar archivo de guardado
desc: Aquí puedes cambiarle el nombre a tu archivo de guardado.
tutorialVideoAvailable:
title: Tutorial disponible
desc: ¡Hay un video tutorial disponible para este nivel! ¿Te gustaría verlo?
tutorialVideoAvailableForeignLanguage:
title: Tutorial Disponible
desc: Hay un video tutorial disponible para este nivel, pero solo está disponible en inglés ¿Te gustaría verlo?
ingame:
keybindingsOverlay:
moveMap: Mover
@ -314,42 +318,66 @@ ingame:
más rápido.<br><br> Pista: Mantén pulsado <strong>SHIFT</strong>
para colocar varios extractores y usa <strong>R</strong> para
rotarlos.'
2_1_place_cutter: "¡Ahora pon un <strong>Cortador</strong> para dividir los circulos en dos
mitades!<br><br> PD: El cortador siempre corta de <strong>de arriba a
abajo</strong> independientemente de su orientación."
2_2_place_trash: ¡El cortador se puede <strong>tabar y atorar</strong>!<br><br> Usa un
<strong>basurero</strong> para deshacerse de la actualmente (!) no
necesitada basura.
2_3_more_cutters: "¡Buen trabajo! ¡Ahora pon <strong>2 cortadores más</strong> 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 edificio central.<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>pintaor cuadruple</strong> y consigue unos
<strong>circulos</strong>, el color <strong>blanco</strong> y el color
<strong>rojo</strong>!
21_2_switch_to_wires: ¡Cambia a la capa de cables apretando la técla
<strong>E</strong>!<br><br> Luego <strong>conecta las cuatro
entradas</strong> de el pintador con cables!
21_3_place_button: ¡Genial! ¡Ahora pon un <strong>Interruptor</strong> y conectalo
con cables!
21_4_press_button: "Presioa el interruptor para hacer que <strong>emita una señal
verdadera</strong> lo cual activa el piintador.<br><br> PD: ¡No necesitas
conectar todas las entradas! Intenta conectando solo dos."
connectedMiners:
one_miner: 1 Miner
n_miners: <amount> Miners
limited_items: Limited to <max_throughput>
one_miner: 1 Minero
n_miners: <amount> Mineros
limited_items: Limitado a <max_throughput>
watermark:
title: Demo version
desc: Click here to see the Steam version advantages!
get_on_steam: Get on steam
title: Versión demo
desc: Presiona aquí para ver que tiene la versión de Steam!
get_on_steam: Consiguelo en Steam
standaloneAdvantages:
title: Get the full version!
no_thanks: No, thanks!
title: ¡Consigue la versión completa!
no_thanks: ¡No grácias!
points:
levels:
title: 12 New Levels
desc: For a total of 26 levels!
title: 12 nuevos niveles
desc: ¡Para un total de 26 niveles!
buildings:
title: 18 New Buildings
desc: Fully automate your factory!
title: 18 nuevos edificios
desc: ¡Automatiza completamente tu fabrica!
savegames:
title: ∞ Savegames
desc: As many as your heart desires!
title: Archivos de guardado infinitos
desc: ¡Tantos como desees!
upgrades:
title: 20 Upgrade Tiers
desc: This demo version has only 5!
title: 20 niveles de mejoras
desc: ¡Esta demo solo tiene 5!
markers:
title: ∞ Markers
desc: Never get lost in your factory!
title: Marcadores infinitos
desc: ¡Nunca te pierdas en tu propia fabrica!
wires:
title: Wires
desc: An entirely new dimension!
title: Cables
desc: ¡Una dimension completamente nueva!
darkmode:
title: Dark Mode
desc: Stop hurting your eyes!
title: Modo oscuro
desc: ¡Deja de lastimar tus ojos!
support:
title: Support me
desc: I develop it in my spare time!
title: Apoyame
desc: ¡Desarrollo este juego en mi tiempo libre!
shopUpgrades:
belt:
name: Cintas transportadoras, Distribuidores y Túneles
@ -379,9 +407,9 @@ buildings:
name: Cable
description: Te permite transportar energía
second:
name: Wire
description: Transfers signals, which can be items, colors or booleans (1 / 0).
Different colored wires do not connect.
name: Cable
description: Transfiere señales, que pueden ser items, colores o valores booleanos (1 / 0).
Cables de diferentes colores no se conectan.
miner:
default:
name: Extractor
@ -417,8 +445,8 @@ buildings:
name: Rotador (Inverso)
description: Rota las figuras en sentido antihorario 90 grados.
rotate180:
name: Rotate (180)
description: Rotates shapes by 180 degrees.
name: Rotador (180)
description: Rota formas en 180 grados.
stacker:
default:
name: Apilador
@ -443,132 +471,131 @@ buildings:
la entrada de arriba.
quad:
name: Pintor (Cuádruple)
description: Allows you to color each quadrant of the shape individually. Only
slots with a <strong>truthy signal</strong> on the wires layer
will be painted!
description: Te permite colorear cada cuadrante de la forma individualemte. ¡Solo las
ranuras con una <strong>señal verdadera</strong> en la capa de cables
seran pintadas!
trash:
default:
name: Basurero
description: Acepta formas desde todos los lados y las destruye. Para siempre.
balancer:
default:
name: Balancer
description: Multifunctional - Evenly distributes all inputs onto all outputs.
name: Balanceador
description: Multifuncional - Distribuye igualmente todas las entradas en las salidas.
merger:
name: Merger (compact)
description: Merges two conveyor belts into one.
name: Unión (compacta)
description: Junta dos cintas transportadoras en una.
merger-inverse:
name: Merger (compact)
description: Merges two conveyor belts into one.
name: Unión (compacta)
description: Junta dos cintas transportadoras en una.
splitter:
name: Splitter (compact)
description: Splits one conveyor belt into two.
name: Separador (compacto)
description: Separa una cinta trasportadora en dos.
splitter-inverse:
name: Splitter (compact)
description: Splits one conveyor belt into two.
name: Separador (compacto)
description: Separa una cinta trasportadora en dos.
storage:
default:
name: Storage
description: Stores excess items, up to a given capacity. Prioritizes the left
output and can be used as an overflow gate.
name: Almacén
description: Guarda items en exceso, hasta una dada capacidad. Prioritiza la salida
de la izquierda y puede ser usada como una puerta de desbordamiento.
wire_tunnel:
default:
name: Wire Crossing
description: Allows to cross two wires without connecting them.
name: Cruze de cables
description: Permite que dos cables se cruzen sin conectarse.
constant_signal:
default:
name: Constant Signal
description: Emits a constant signal, which can be either a shape, color or
boolean (1 / 0).
name: Señal costante
description: Emite una señal constante, que puede ser una forma, color o valor booleano (1 / 0).
lever:
default:
name: Switch
description: Can be toggled to emit a boolean signal (1 / 0) on the wires layer,
which can then be used to control for example an item filter.
name: Interruptor
description: Puede ser activado para emitir una señal booleana (1 / 0) en la capa de cables,
la cual puede ser usada por ejemplo para un filtro de items.
logic_gate:
default:
name: AND Gate
description: Emits a boolean "1" if both inputs are truthy. (Truthy means shape,
color or boolean "1")
name: Puerta AND
description: Emite el valor booleano "1" si ambas entradas son verdaderas. (Verdadeas significa una forma,
color o valor booleano "1")
not:
name: NOT Gate
description: Emits a boolean "1" if the input is not truthy. (Truthy means
shape, color or boolean "1")
name: Puerta NOT
description: Emite el valor booleano "1" si ambas entradas no son verdaderas. (Verdadeas significa una forma,
color o valor booleano "1")
xor:
name: XOR Gate
description: Emits a boolean "1" if one of the inputs is truthy, but not both.
(Truthy means shape, color or boolean "1")
name: Puerta XOR
description: Emite el valor booleano "1" si una de las entradas es verdadera, pero no si ambas lo son.
(Verdadeas significa una forma,
color o valor booleano "1")
or:
name: OR Gate
description: Emits a boolean "1" if one of the inputs is truthy. (Truthy means
shape, color or boolean "1")
name: Puerta OR
description: Emite el valor booleano "1" Si una de las entradas es verdadera. (Verdadeas significa una forma,
color o valor booleano "1")
transistor:
default:
name: Transistor
description: Forwards the bottom input if the side input is truthy (a shape,
color or "1").
description: Envia la señal de abajo si la señal del costado es verdadera (Verdadeas significa una forma,
color o valor booleano "1").
mirrored:
name: Transistor
description: Forwards the bottom input if the side input is truthy (a shape,
color or "1").
description: Envia la señal de abajo si la señal del costado es verdadera (Verdadeas significa una forma,
color o valor booleano "1").
filter:
default:
name: Filter
description: Connect a signal to route all matching items to the top and the
remaining to the right. Can be controlled with boolean signals
too.
name: Filtro
description: Conecta una señal para enviar todas las que coincidan hacia arriba y las demás
hacia la derecha. También puede ser controlada por señales booleanas.
display:
default:
name: Display
description: Connect a signal to show it on the display - It can be a shape,
color or boolean.
name: Monitor
description: Conecta una señal para mostrarla en el monitor - Puede ser una forma,
color o valor booleano.
reader:
default:
name: Belt Reader
description: Allows to measure the average belt throughput. Outputs the last
read item on the wires layer (once unlocked).
name: Lector de cinta
description: Te permite medir la cantidad media de items que pasan por la cinta. Emite el último
item leído en la capa de cables (una vez desbloquada).
analyzer:
default:
name: Shape Analyzer
description: Analyzes the top right quadrant of the lowest layer of the shape
and returns its shape and color.
name: Analizador de formas
description: analiza el cuadrante de arriba a la derecha de la capa más baja de la forma
y devuelve su figura y color.
comparator:
default:
name: Compare
description: Returns boolean "1" if both signals are exactly equal. Can compare
shapes, items and booleans.
name: Comparador
description: Devuelve el valor booleano "1" Si ambas señales son exactamente iguales. Puede comparar
formas, items y valores booleanos.
virtual_processor:
default:
name: Virtual Cutter
description: Virtually cuts the shape into two halves.
name: Cortador virtual
description: Corta virtualmente la forma en dos.
rotater:
name: Virtual Rotater
description: Virtually rotates the shape, both clockwise and counter-clockwise.
name: Rotador virtual
description: Rota virtualmente la forma, tanto en sentido del horario como sentido anti-horario.
unstacker:
name: Virtual Unstacker
description: Virtually extracts the topmost layer to the right output and the
remaining ones to the left.
name: Desapilador virtual
description: Extrae virtualmente la capa más alta en la salida a la derecha y
las que quedan en la izquierda.
stacker:
name: Virtual Stacker
description: Virtually stacks the right shape onto the left.
name: Apilador virtual
description: Apila virtualmente la forma de la derecha en la de la izquierda.
painter:
name: Virtual Painter
description: Virtually paints the shape from the bottom input with the shape on
the right input.
name: Pintor virtual
description: Pinta virtualmente la forma de la entrada de abajo con la forma de
la entrada de la derecha.
item_producer:
default:
name: Item Producer
description: Available in sandbox mode only, outputs the given signal from the
wires layer on the regular layer.
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.
storyRewards:
reward_cutter_and_trash:
title: Cortador de figuras
desc: You just unlocked the <strong>cutter</strong>, which cuts shapes in half
from top to bottom <strong>regardless of its
orientation</strong>!<br><br>Be sure to get rid of the waste, or
otherwise <strong>it will clog and stall</strong> - For this purpose
I have given you the <strong>trash</strong>, which destroys
everything you put into it!
desc: ¡Acabas de desbloquear el <strong>cortador</strong>, el cual corta formas por la mitad
de arriba a abajo <strong>independientemente de su
orientacion</strong>!<br><br>Asegurate de deshacerte de la basura, o
sino <strong>se trabará y parará</strong> - Por este proposite
Te he dado el <strong>basurero</strong>, el cual destruye
todo lo que pongas dentro de él!
reward_rotater:
title: Rotador
desc: ¡El <strong>rotador</strong> se ha desbloqueado! Rota figuras en sentido
@ -592,9 +619,9 @@ storyRewards:
será <strong>apilada encima</strong> de la entrada izquierda!
reward_splitter:
title: Separador/Fusionador
desc: You have unlocked a <strong>splitter</strong> variant of the
<strong>balancer</strong> - It accepts one input and splits them
into two!
desc: Has desbloqueado el <strong>separador</strong> , una variante de el
<strong>balanceador</strong> - Acepta una entrada y la separa
en dos!
reward_tunnel:
title: Túnel
desc: El <strong>túnel</strong> se ha desbloqueado - ¡Ahora puedes transportar
@ -606,10 +633,10 @@ storyRewards:
y <strong>pulsa 'T' para ciclar por sus variantes</strong>
reward_miner_chainable:
title: Extractor en cadena
desc: "You have unlocked the <strong>chained extractor</strong>! It can
<strong>forward its resources</strong> to other extractors so you
can more efficiently extract resources!<br><br> PS: The old
extractor has been replaced in your toolbar now!"
desc: "¡Has desbloqueado el <strong>extractor en cadena</strong>! ¡Este puede
<strong>enviar sus recursos</strong> a otros extractores así puedes
extraer recursos más eficientemente!<br><br> PD: ¡El extractor
viejo ha sido reemplazado en tu barra de herramientas!"
reward_underground_belt_tier_2:
title: Túnel nivel II
desc: Has desbloqueado una nueva variante del <strong>túnel</strong> - ¡Tiene un
@ -626,13 +653,13 @@ storyRewards:
consumiendo solo un color en vez de dos!
reward_storage:
title: Almacenamiento intermedio
desc: You have unlocked the <strong>storage</strong> building - It allows you to
store items up to a given capacity!<br><br> It priorities the left
output, so you can also use it as an <strong>overflow gate</strong>!
desc: Haz desbloquado el edificio de <strong>almacenamiento</strong> - ¡Te permite
guardar items hasta una capacidad determinada!<br><br> Prioriza la salida
de la izquierda, por lo que tambien puedes suarlo como una <strong>puerta de desbordamiento</strong>!
reward_freeplay:
title: Juego libre
desc: You did it! You unlocked the <strong>free-play mode</strong>! This means
that shapes are now <strong>randomly</strong> generated!<br><br>
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>
Since the hub will require a <strong>throughput</strong> from now
on, I highly recommend to build a machine which automatically
delivers the requested shape!<br><br> The HUB outputs the requested
@ -657,77 +684,78 @@ storyRewards:
desc: ¡Felicidades! ¡Por cierto, hay más contenido planeado para el juego
completo!
reward_balancer:
title: Balancer
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!
title: Balanceador
desc: El <strong>balanceador</strong> multifuncional ha sido desbloqueado - ¡Este puede
ser usado para construir fabricas más grandes al <strong>separar y mezclar
items</strong> hacia múltiples cintas!
reward_merger:
title: Compact Merger
desc: You have unlocked a <strong>merger</strong> variant of the
<strong>balancer</strong> - It accepts two inputs and merges them
into one belt!
title: Unión compacta
desc: Has desbloqueado la variante <strong>unión</strong> de el
<strong>balanceador</strong> - ¡Acepta dos entradas y las une en
una sola cinta!
reward_belt_reader:
title: Belt reader
desc: You have now unlocked the <strong>belt reader</strong>! It allows you to
measure the throughput of a belt.<br><br>And wait until you unlock
wires - then it gets really useful!
title: Lector de cinta
desc: ¡Has desbloqueado el <strong>lector de cinta</strong>! Este te permite
medir la cantidad de items que pasan por esta.<br><brY tan solo espera hasta debloquear
los cables - ¡Ahí si que se vuelve útil!
reward_rotater_180:
title: Rotater (180 degrees)
desc: You just unlocked the 180 degress <strong>rotater</strong>! - It allows
you to rotate a shape by 180 degress (Surprise! :D)
title: Rotador (180 grados)
desc: ¡Has desbloqueado el <strong>rotador</strong> de 180 grados! - Te permite
rotar una forma en 180 grados (¡Sorpresa! :D)
reward_display:
title: Display
desc: "You have unlocked the <strong>Display</strong> - Connect a signal on the
wires layer to visualize it!<br><br> PS: Did you notice the belt
reader and storage output their last read item? Try showing it on a
display!"
title: Monitor
desc: "Has desbloqueado el <strong>Monitor</strong> - ¡Conecta una señal dentro de
la capa de cables para visualizarla!<br><br> PD: ¿Te has dado cuenta que el lector
de cinta y el almacenador emiten su último item leído? ¡Trata de conectarlo
al monitor!"
reward_constant_signal:
title: Constant Signal
desc: You unlocked the <strong>constant signal</strong> building on the wires
layer! This is useful to connect it to <strong>item filters</strong>
for example.<br><br> The constant signal can emit a
<strong>shape</strong>, <strong>color</strong> or
<strong>boolean</strong> (1 / 0).
title: Señal constante
desc: ¡Has desbloqueado la <strong>señal constante</strong> en la capa de
cables! Esto es muy útil para conectar a el <strong>filtro de items</strong>
por ejemplo.<br><br> La señal constante puede emitir
<strong>formas</strong>, <strong>colores</strong> o
<strong>valores booleanos</strong> (1 / 0).
reward_logic_gates:
title: Logic Gates
desc: You unlocked <strong>logic gates</strong>! You don't have to be excited
about this, but it's actually super cool!<br><br> With those gates
you can now compute AND, OR, XOR and NOT operations.<br><br> As a
bonus on top I also just gave you a <strong>transistor</strong>!
title: Puertas lógicas
desc: ¡Has desbloqueado las <strong>puertas lógicas</strong>! No es necesario que te emociones
por esto ¡Pero en realidad es super geniall!<br><br> Con estas puertas
ahora puedes computar operaciones AND, OR, XOR y NOT.<br><br> Como bonus
también te he dado el <strong>transistor</strong>!
reward_virtual_processing:
title: Virtual Processing
desc: I just gave a whole bunch of new buildings which allow you to
<strong>simulate the processing of shapes</strong>!<br><br> You can
now simulate a cutter, rotater, stacker and more on the wires layer!
With this you now have three options to continue the game:<br><br> -
Build an <strong>automated machine</strong> to create any possible
shape requested by the HUB (I recommend to try it!).<br><br> - Build
something cool with wires.<br><br> - Continue to play
regulary.<br><br> Whatever you choose, remember to have fun!
title: Procesamiento virtual
desc: ¡Acabo de darte un monton de nuevos edificios los cuales te permiten
<strong>simular el procesamiento de las formas</strong>!<br><br> ¡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 regular.<br><br> ¡Cualquiera que eligas, recuerda divertirte!
reward_wires_painter_and_levers:
title: Wires & Quad Painter
desc: "You just unlocked the <strong>Wires Layer</strong>: It is a separate
layer on top of the regular layer and introduces a lot of new
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
title: Cables y pintor cuádruple
desc: "Has desbloqueado la <strong>Capa de cables</strong>: ¡Es una capa
separada a la capa regular e introduce un montón de mecanicas
nuevas!<br><br> Para empezar te he dado el <strong>Pintor
Cuádruple</strong> - ¡Conecta las ranuras que quieras pintar usando
la capa de cables!<br><br> Para cambiar a la capa de cables, presiona la tecla
<strong>E</strong>. <br><br> PD: ¡Activa las <strong>pistas</strong> en
las opciones para activar el tutorial de cables!"
reward_filter:
title: Item Filter
desc: You unlocked the <strong>Item Filter</strong>! It will route items either
to the top or the right output depending on whether they match the
signal from the wires layer or not.<br><br> You can also pass in a
boolean signal (1 / 0) to entirely activate or disable it.
title: Filtro de items
desc: Has desbloqueado el <strong>Filtro de Items</strong>! Este enviará los items tanto
arriaba como a la derecha dependiendo en si coinciden con la
señal de la capa de cables o no.<br><br> Tambien puedes enviar una señal
booleana (1 / 0) para activarlo o desactivarlo completamente.
reward_demo_end:
title: End of Demo
desc: You have reached the end of the demo version!
title: Fin de la demo
desc: ¡Has llegado al final de la demo!
settings:
title: Opciones
categories:
general: General
userInterface: User Interface
userInterface: Interfaz de Usuario
advanced: Avanzado
performance: Performance
performance: Rendimiento
versionBadges:
dev: Desarrollo
staging: Escenificación
@ -839,51 +867,54 @@ settings:
description: Deshabilita los diálogos de advertencia que se muestran cuando se
cortan/eliminan más de 100 elementos.
soundVolume:
title: Sound Volume
description: Set the volume for sound effects
title: Volumen de efectos
description: Establece el volumen para los efectos de sonido
musicVolume:
title: Music Volume
description: Set the volume for music
title: Volumen de música
description: Establece el volumen para la música
lowQualityMapResources:
title: Low Quality Map Resources
description: Simplifies the rendering of resources on the map when zoomed in to
improve performance. It even looks cleaner, so be sure to try it
out!
title: Recursos del mapa de baja calidad
description: Simplifica el renderizado de los recusos en el mapa al ser vistos desde cerca,
mejorando el rendimiento. ¡Incluso se ve más limpio, asi que asegurate de probarlo!
disableTileGrid:
title: Disable Grid
description: Disabling the tile grid can help with the performance. This also
makes the game look cleaner!
title: Deshabilitar grilla
description: Deshabilitar la grilla puede ayudar con el rendimiento. ¡También hace
que el juego se vea más limpio!
clearCursorOnDeleteWhilePlacing:
title: Clear Cursor on Right Click
description: Enabled by default, clears the cursor whenever you right click
while you have a building selected for placement. If disabled,
you can delete buildings by right-clicking while placing a
building.
title: Limpiar el cursos al apretar click derecho
description: Activado por defecto, Limpia el cursor al hacer click derecho
mientras tengas un un edificio seleccionado. Si se deshabilita,
puedes eliminar edificios al hacer click derecho mientras pones
un edificio.
lowQualityTextures:
title: Low quality textures (Ugly)
description: Uses low quality textures to save performance. This will make the
game look very ugly!
title: Texturas de baja calidad (Feo)
description: Usa texturas de baja calidad para mejorar el rendimiento. ¡Esto hará que el
juego se vea muy feo!
displayChunkBorders:
title: Display Chunk Borders
description: The game is divided into chunks of 16x16 tiles, if this setting is
enabled the borders of each chunk are displayed.
title: Mostrar bordes de chunk
description: Este juego está dividido en chunks de 16x16 cuadrados, si esta opción es
habilitada los bordes de cada chunk serán mostrados.
pickMinerOnPatch:
title: Pick miner on resource patch
description: Enabled by default, selects the miner if you use the pipette when
hovering a resource patch.
title: Elegír el minero en la veta de recursos
description: Activado pir defecto, selecciona el minero si usas el cuentagotas sobre
una veta de recursos.
simplifiedBelts:
title: Simplified Belts (Ugly)
description: Does not render belt items except when hovering the belt to save
performance. I do not recommend to play with this setting if you
do not absolutely need the performance.
title: Cintas trasportadoras simplificadas (Feo)
description: No rederiza los items en las cintas trasportadoras exceptuando al pasar el cursor sobre la cinta para mejorar
el rendimiento. No recomiendo jugar con esta opcion activada
a menos que necesites fuertemente mejorar el rendimiento.
enableMousePan:
title: Enable Mouse Pan
description: Allows to move the map by moving the cursor to the edges of the
screen. The speed depends on the Movement Speed setting.
title: Habilitar movimiento con mouse
description: Te permite mover el mapa moviendo el cursor hacia los bordes de la
pantalla. La velocidad depende de la opción de velocidad de movimiento.
zoomToCursor:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
title: Hacer zoom donde está el cursor
description: Si se activa, se hará zoom en al dirección donde esté tu cursor,
a diferencia de hacer zoom en el centro de la pantalla.
mapResourcesScale:
title: Tamaño de recursos en el mapa
description: Controla el tamaño de los recursos en la vista de aerea del mapa (Al hacer zoom
minimo).
rangeSliderPercentage: <amount> %
keybindings:
title: Atajos de teclado
@ -942,21 +973,21 @@ keybindings:
placementDisableAutoOrientation: Desactivar orientación automática
placeMultiple: Permanecer en modo de construcción
placeInverse: Invierte automáticamente la orientación de las cintas transportadoras
balancer: Balancer
storage: Storage
constant_signal: Constant Signal
logic_gate: Logic Gate
lever: Switch (regular)
filter: Filter
wire_tunnel: Wire Crossing
display: Display
reader: Belt Reader
virtual_processor: Virtual Cutter
balancer: Balanceador
storage: Almacenamiento
constant_signal: Señal constante
logic_gate: Puerta lógica
lever: Interruptor (regular)
filter: Filtro
wire_tunnel: Cruze de cables
display: Monitor
reader: Lector de cinta
virtual_processor: Cortador virtual
transistor: Transistor
analyzer: Shape Analyzer
comparator: Compare
item_producer: Item Producer (Sandbox)
copyWireValue: "Wires: Copy value below cursor"
analyzer: Analizador de formas
comparator: Comparador
item_producer: Productor de items (Sandbox)
copyWireValue: "Cables: Copiar valor bajo el cursos"
backwardsModifier: "Modifier: Cycle backwards"
about:
title: Sobre el juego

View File

@ -2,51 +2,51 @@ steamPage:
shortText: shapez.io on peli tehtaiden rakentamisesta, joiden avulla
automatisoidaan yhä monimutkaisempien muotojen luonti and yhdisteleminen
loputtomassa maailmassa.
discordLinkShort: Official Discord
discordLinkShort: Virallinen Discord
intro: >-
Shapez.io is a relaxed game in which you have to build factories for the
automated production of geometric shapes.
Shapez.io on rento peli, jossa sinun täytyy rakentaa tehtaita geometristen muotojen
automatisoituun tuotantoon.
As the level increases, the shapes become more and more complex, and you have to spread out on the infinite map.
Kun taso kasvaa, muodot tulevat entistä vaikeammaksi sekä sinun täytyy laajentua loputtomassa kartassa.
And as if that wasn't enough, you also have to produce exponentially more to satisfy the demands - the only thing that helps is scaling!
Ja jos tämä ei ollut tarpeeksi, niin sinun täytyy tuottaa eksponentiaalisesti enemmän täyttääksesi tarpeet - ainut asia mikä auttaa on skaalautuminen!
While you only process shapes at the beginning, you have to color them later - for this you have to extract and mix colors!
Vaikka alussa vain prosessoit muotoja, myöhemmin niitä pitää maalata - tätä varten täytyy sinun kaivaa ja sekoittaa värejä
Buying the game on Steam gives you access to the full version, but you can also play a demo on shapez.io first and decide later!
title_advantages: Standalone Advantages
Pelin ostaminen Steamista antaa sinulle pääsyn pelin kokoversioon, mutta voit myös pelata kokeiluversiota esin sivuillamme shapez.io ja päättää myöhemmin!
title_advantages: Kokoversion hyödyt
advantages:
- <b>12 New Level</b> for a total of 26 levels
- <b>18 New Buildings</b> for a fully automated factory!
- <b>20 Upgrade Tiers</b> for many hours of fun!
- <b>Wires Update</b> for an entirely new dimension!
- <b>Dark Mode</b>!
- Unlimited Savegames
- Unlimited Markers
- Support me! ❤️
title_future: Planned Content
- <b>12 uutta tasoa</b> nostaen tasojen määrän 26 tasoon!
- <b>18 uutta rakennusta</b> täysin automatisoidulle tehtaalle!
- <b>20 päivitystasoa</b> monelle hauskalle pelitunnille!
- <b>Johdot -päivitys</b> tuoden täyden uuden ulottuvuuden!
- <b>Tumma teema</b>!
- Rajattomat tallennukset
- Rajattomat merkit
- Tue minua! ❤️
title_future: Suunniteltu sisältö
planned:
- Blueprint Library (Standalone Exclusive)
- Pohjapiirustus kirjasto (Standalone Exclusive)
- Steam Achievements
- Puzzle Mode
- Minimap
- Mods
- Sandbox mode
- ... and a lot more!
title_open_source: This game is open source!
title_links: Links
- Palapelitila
- Minikartta
- Modit
- Hiekkalaatikko -tila
- ... ja paljon muuta!
title_open_source: Tämä peli on avointa lähdekoodia!
title_links: Linkit
links:
discord: Official Discord
discord: Virallinen Discord
roadmap: Roadmap
subreddit: Subreddit
source_code: Source code (GitHub)
translate: Help translate
source_code: Lähdekoodi (GitHub)
translate: Auta kääntämään
text_open_source: >-
Anybody can contribute, I'm actively involved in the community and
attempt to review all suggestions and take feedback into consideration
where possible.
Kuka tahansa voi osallistua. Olen aktiivisesti mukana yhteisössä ja
yritän tarkistaa kaikki ehdotukset ja ottaa palautteen huomioon missä
mahdollista.
Be sure to check out my trello board for the full roadmap!
Muista tarkistaa Trello -lautani, jossa löytyy koko roadmap!
global:
loading: Ladataan
error: Virhe
@ -60,7 +60,7 @@ global:
infinite:
time:
oneSecondAgo: yksi sekunti sitten
xSecondsAgo: <x> sekunttia sitten
xSecondsAgo: <x> sekuntia sitten
oneMinuteAgo: yksi minuutti sitten
xMinutesAgo: <x> minuuttia sitten
oneHourAgo: yksi tunti sitten
@ -76,11 +76,11 @@ global:
control: CTRL
alt: ALT
escape: ESC
shift: VAIHTO
shift: SHIFT
space: VÄLILYÖNTI
demoBanners:
title: Demoversio
intro: Hanki itsenäinen peli avataksesi kaikki omunaisuudet!
intro: Hanki pelin kokoversio avataksesi kaikki ominaisuudet!
mainMenu:
play: Pelaa
continue: Jatka
@ -89,13 +89,13 @@ mainMenu:
subreddit: Reddit
importSavegame: Tuo peli
openSourceHint: Tämä on avoimen lähdekoodin peli!
discordLink: Virallinen Discord Palvelin
discordLink: Virallinen Discord -palvelin
helpTranslate: Auta kääntämään!
madeBy: Pelin on tehnyt <author-link>
browserWarning: Anteeksi, mutta pelin tiedetään toimivan huonosti selaimellasi!
Hanki itsenäinen versio tai lataa Chrome täyttä tukea varten.
Hanki pelin kokoversio tai lataa Google Chrome täyttä tukea varten.
savegameLevel: Taso <x>
savegameLevelUnknown: Tuntematon Taso
savegameLevelUnknown: Tuntematon taso
savegameUnnamed: Unnamed
dialogs:
buttons:
@ -105,13 +105,13 @@ dialogs:
later: Myöhemmin
restart: Käynnistä uudelleen
reset: Nollaa
getStandalone: Hanki itsenäinen peli
getStandalone: Hanki kokoversio
deleteGame: Tiedän mitä olen tekemässä
viewUpdate: Näytä päivitys
showUpgrades: Näytä Päivitykset
showUpgrades: Näytä päivitykset
showKeybindings: Näytä pikanäppäimet
importSavegameError:
title: Tuonti Virhe
title: Tuontivirhe
text: "Tallennuksen tuonti epäonnistui:"
importSavegameSuccess:
title: Tallennus tuotiin
@ -121,9 +121,9 @@ dialogs:
text: "Tallennuksen lataus epäonnistui:"
confirmSavegameDelete:
title: Varmista poisto
text: Are you sure you want to delete the following game?<br><br>
'<savegameName>' at level <savegameLevel><br><br> This can not be
undone!
text: Oletko varma, että haluat poistaa valitun pelin?<br><br>
'<savegameName>' tasossa <savegameLevel><br><br> Tätä toimintoa ei
voida peruuttaa!
savegameDeletionError:
title: Poisto epäonnistui
text: "Tallennuksen poisto epäonnistui:"
@ -132,8 +132,8 @@ dialogs:
text: Käynnistä peli uudelleen ottaaksesi asetukset käyttöön.
editKeybinding:
title: Vaihda pikanäppäin
desc: Paina näppäintä tai hiiren nappia jonka haluat asettaa tai paina escape
peruuttaaksesi.
desc: Paina näppäintä tai hiiren nappia, jonka haluat asettaa tai paina
escape peruuttaaksesi.
resetKeybindingsConfirmation:
title: Nollaa pikanäppäimet
desc: Tämä nollaa kaikki pikanäppäimet oletusarvoihin. Vahvista.
@ -142,32 +142,32 @@ dialogs:
desc: Pikanäppäimet nollattiin oletusarvoihin!
featureRestriction:
title: Demoversio
desc: Yritit käyttää ominaisuutta (<feature>) joka ei ole saatavilla
demoversiossa. Harkitse itsenäisen version hankkimista avataksesi
desc: Yritit käyttää ominaisuutta (<feature>), joka ei ole saatavilla
demoversiossa. Harkitse kokoversio avataksesi
kaikki ominaisuudet!
oneSavegameLimit:
title: Rajoitetut tallennukset
desc: Sinulla voi olla vain yksi tallennus kerrallaan demoversiossa. Poista
vanha tallennus tai hanki itsenäinen versio!
vanha tallennus tai hanki kokoversio pelistä!
updateSummary:
title: Uusi päivitys!
desc: "Tässä on tulleet muutokset sen jälkeen kun viimeksi pelasit:"
desc: "Tässä uudet muutokset sen jälkeen kun viimeksi pelasit:"
upgradesIntroduction:
title: Avaa Päivitykset
desc: Kaikkia muodoja joita tuotat voi käyttää päivitysten avaamiseen -
title: Avaa päivitykset
desc: Kaikkia muotoja joita tuotat voidaan käyttää päivitysten avaamiseen -
<strong>Älä tuhoa vanhoja tehtaitasi!</strong> Löydät
päivitysikkunan näytön oikeasta yläkulmasta.
massDeleteConfirm:
title: Vahvista poisto
desc: Olet poistamassa paljon rakennuksia (tasan <count>)! Oletko varma että
desc: Olet poistamassa paljon rakennuksia (<count> tarkalleen)! Oletko varma, että
haluat jatkaa?
massCutConfirm:
title: Vahtista leikkaus
desc: Olet leikkaamassa paljon rakennuksia (tasan <count>)! Oletko varma että
title: Vahvista leikkaus
desc: Olet leikkaamassa paljon rakennuksia (<count> tarkalleen)! Oletko varma, että
haluat jatkaa?
blueprintsNotUnlocked:
title: Ei vielä avattu
desc: Suorita taso 12 avataksesi Piirustukset!
desc: Suorita taso 12 avataksesi piirustukset!
keybindingsIntroduction:
title: Hyödyllisiä pikanäppäimiä
desc: "Tässä pelissä on paljon pikanäppäimiä, jotka tekevät isojen tehtaiden
@ -178,13 +178,13 @@ dialogs:
useita samoja rakennuksia.<br> <code class='keybinding'>ALT</code>:
Käännä sijoitettavien hihnojen suunta.<br>"
createMarker:
title: Uusi Merkki
desc: Give it a meaningful name, you can also include a <strong>short
key</strong> of a shape (Which you can generate <link>here</link>)
title: Uusi merkki
desc: Anna merkille merkitsevä nimi. Voit myös liittää <strong>lyhyen koodin</strong>
muodosta. (Jonka voit luoda <link>täällä</link>.)
titleEdit: Muokkaa merkkiä
markerDemoLimit:
desc: Voit tehdä vain kaksi mukautettua merkkiä demoversiossa. Hanki itsenäinen
versio saadaksesi loputtoman määrän merkkejä!
desc: Voit tehdä vain kaksi mukautettua merkkiä demoversiossa. Hanki kokoversio
saadaksesi loputtoman määrän merkkejä!
exportScreenshotWarning:
title: Vie kuvakaappaus
desc: Pyysit tukikohtasi viemistä kuvakaappauksena. Huomaa, että tämä voi olla
@ -199,8 +199,14 @@ dialogs:
descShortKey: ... or enter the <strong>short key</strong> of a shape (Which you
can generate <link>here</link>)
renameSavegame:
title: Rename Savegame
desc: You can rename your savegame here.
title: Nimeä tallennus uudelleen
desc: Voit nimetä tallennuksesi uudelleen täällä.
tutorialVideoAvailable:
title: Ohjevideo saatavilla
desc: Tästä tasosta on saatavilla ohjevideo! Haluaisitko katsoa sen?
tutorialVideoAvailableForeignLanguage:
title: Ohjevideo saatavilla
desc: Tästä tasosta on saatavilla ohjevideo! Haluaisitko katsoa sen?
ingame:
keybindingsOverlay:
moveMap: Liiku
@ -219,9 +225,9 @@ ingame:
plannerSwitchSide: Käännä suunnittelijan puoli
cutSelection: Leikkaa
copySelection: Kopioi
clearSelection: Tyhjennä Valinta
clearSelection: Tyhjennä valinta
pipette: Pipetti
switchLayers: Vaihda Tasoa
switchLayers: Vaihda tasoa
colors:
red: Punainen
green: Vihreä
@ -233,7 +239,7 @@ ingame:
uncolored: Väritön
black: Musta
buildingPlacement:
cycleBuildingVariants: Paina <key> kiertääksesi muunnoksia.
cycleBuildingVariants: Paina <key> selataksesi vaihtoehtoja.
hotkeyLabel: "Pikanäppäin: <key>"
infoTexts:
speed: Nopeus
@ -251,7 +257,7 @@ ingame:
notifications:
newUpgrade: Uusi päivitys on saatavilla!
gameSaved: Peli on tallennettu.
freeplayLevelComplete: Level <level> has been completed!
freeplayLevelComplete: Taso <level> on saavutettu!
shop:
title: Päivitykset
buttonUnlock: Päivitä
@ -269,7 +275,7 @@ ingame:
välituotteet.
delivered:
title: Toimitettu
description: Näyttää muodot jotka on toimitettu keskusrakennukseen.
description: Näyttää muodot, jotka on toimitettu keskusrakennukseen.
noShapesProduced: Toistaiseksi ei muotoja tuotettu.
shapesDisplayUnits:
second: <shapes> / s
@ -288,9 +294,9 @@ ingame:
waypoints:
waypoints: Merkit
hub: Keskusrakennus
description: Paina merkkia hiiren vasemmalla mennäksesi siihen, paina oikeaa
description: Paina merkkiä hiiren vasemmalla mennäksesi siihen, paina oikeaa
nappia poistaaksesi sen.<br><br>Paina <keybinding> luodaksesi merkin
nykyisestä näkymästä tai <strong>varen nappi</strong> luodaksesi
nykyisestä näkymästä tai <strong>vasen nappi</strong> luodaksesi
merkin valittuun paikkaan.
creationSuccessNotification: Merkki luotiin onnistuneesti.
shapeViewer:
@ -310,73 +316,97 @@ ingame:
valmiiksi.<br><br>Vihje: Pidä pohjassa <strong>VAIHTO</strong>
laittaaksesi useampia kaivajia ja käytä <strong>R</strong>
kääntääksesi niitä."
2_1_place_cutter: "Nyt aseta <strong>Leikkuri</strong> leikataksesi ympyrä
puoliksi!<br><br> PS: Leikkuri aina leikkaa <strong>ylhäältä alaspäin</strong>
riippumatta sen asennosta."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
connectedMiners:
one_miner: 1 Miner
n_miners: <amount> Miners
limited_items: Limited to <max_throughput>
one_miner: 1 kaivaja
n_miners: <amount> kaivajaa
limited_items: Rajoitettu <max_throughput>
watermark:
title: Demo version
desc: Click here to see the Steam version advantages!
get_on_steam: Get on steam
title: Kokeiluversio
desc: Napsauta tästä nähdäksesi Steam version edut!
get_on_steam: Hanki Steamista
standaloneAdvantages:
title: Get the full version!
no_thanks: No, thanks!
title: Hanki kokoversio!
no_thanks: Ei kiitos!
points:
levels:
title: 12 New Levels
desc: For a total of 26 levels!
title: 12 Uutta tasoa
desc: Yhteensä 26 tasoa!
buildings:
title: 18 New Buildings
desc: Fully automate your factory!
title: 18 Uutta rakennusta
desc: Automatisoi tehtaasi täysin!
savegames:
title: ∞ Savegames
desc: As many as your heart desires!
title: Tallennukset
desc: Niin paljon kuin sielusi kaipaa!
upgrades:
title: 20 Upgrade Tiers
desc: This demo version has only 5!
title: 20 päivitystasoa
desc: Kokeiluversiossa on vain viisi!
markers:
title: ∞ Markers
desc: Never get lost in your factory!
title: ∞ Merkit
desc: Älä koskaan eksy tehtaassasi!
wires:
title: Wires
desc: An entirely new dimension!
title: Johdot
desc: Täysin uusi ulottuvuus!
darkmode:
title: Dark Mode
desc: Stop hurting your eyes!
title: Tumma teema
desc: Jotta silmiisi ei sattuisi!
support:
title: Support me
desc: I develop it in my spare time!
title: Tue minua
desc: Kehitän peliä vapaa-ajallani!
shopUpgrades:
belt:
name: Hihnat, Jakelija & Tunneli
name: Hihnat, jakelija & tunneli
description: Nopeus x<currentMult> → x<newMult>
miner:
name: Kaivuu
description: Nopeus x<currentMult> → x<newMult>
processors:
name: Leikkaus, Kääntö & Pinoaminen
name: Leikkaus, kääntö & pinoaminen
description: Nopeus x<currentMult> → x<newMult>
painting:
name: Sekoitus & Värjäys
name: Sekoitus & värjäys
description: Nopeus x<currentMult> → x<newMult>
buildings:
hub:
deliver: Toimita
toUnlock: avataksesi
levelShortcut: LVL
endOfDemo: End of Demo
endOfDemo: Kokeiluversion loppu!
belt:
default:
name: Liukuhihna
description: Kuljettaa esineitä, pidä pohjassa ja raahaa laittaaksesi useampia.
description: Kuljettaa esineitä. Pidä pohjassa ja raahaa laittaaksesi useampia.
wire:
default:
name: Johto
description: Sallii sähkön kuljetuksen
description: Sallii sähkönkuljetuksen
second:
name: Wire
description: Transfers signals, which can be items, colors or booleans (1 / 0).
Different colored wires do not connect.
name: Johto
description: Siirtää signaaleja, jotka voivat olla muotoja, värejä, taikka binääriarvoja (1 / 0).
Eriväriset johdot eivät yhdisty toisiinsa.
miner:
default:
name: Kaivaja
@ -390,7 +420,7 @@ buildings:
name: Tunneli
description: Sallii resurssien kuljetuksen rakennuksien ja hihnojen alta.
tier2:
name: Tunneli Taso II
name: Tunneli taso II
description: Sallii resurssien kuljetuksen rakennuksien ja hihnojen alta
pidemmältä kantamalta.
cutter:
@ -409,11 +439,11 @@ buildings:
name: Kääntäjä
description: Kääntää muotoja 90 astetta myötäpäivään.
ccw:
name: Kääntäjä (Vastapäivään)
name: Kääntäjä (vastapäivään)
description: Kääntää muotoja 90 astetta vastapäivään.
rotate180:
name: Rotate (180)
description: Rotates shapes by 180 degrees.
name: Kääntäjä (180)
description: Kääntää muotoja 180 astetta.
stacker:
default:
name: Pinoaja
@ -425,19 +455,19 @@ buildings:
description: Sekoittaa kaksi väriä lisäaineiden avulla.
painter:
default:
name: Värjääjä
description: Värjää vasemmasta sisääntulosta tulevan muodon ylemmästä
name: Maalari
description: Maalaa vasemmasta sisääntulosta tulevan muodon ylemmästä
sisääntulosta tulevalla värillä.
mirrored:
name: Värjääjä
description: Värjää vasemmasta sisääntulosta tulevan muodon ylemmästä
name: Maalari
description: Maalaa vasemmasta sisääntulosta tulevan muodon alemmasta
sisääntulosta tulevalla värillä.
double:
name: Värjääjä (Kaksinkertainen)
description: Värjää vasemmasta sisääntulosta tulevan muodon ylemmästä
name: Maalari (kaksinkertainen)
description: Värjää vasemmasta sisääntulosta tulevat muodot ylemmästä
sisääntulosta tulevalla värillä.
quad:
name: Painter (Neljännes)
name: Maalari (neljännes)
description: Allows you to color each quadrant of the shape individually. Only
slots with a <strong>truthy signal</strong> on the wires layer
will be painted!
@ -447,114 +477,111 @@ buildings:
description: Sallii sisääntulot kaikilta sivuilta ja tuhoaa ne. Lopullisesti.
balancer:
default:
name: Balancer
description: Multifunctional - Evenly distributes all inputs onto all outputs.
name: Tasaaja
description: Monikäyttöinen - Jaa sisääntulot tasaisesti kaikkiin ulostuloihin.
merger:
name: Merger (compact)
description: Merges two conveyor belts into one.
name: Yhdistäjä (compact)
description: Yhdistää kaksi hihnaa yhteen.
merger-inverse:
name: Merger (compact)
description: Merges two conveyor belts into one.
name: Yhdistäjä (compact)
description: Yhdistää kaksi hihnaa yhteen.
splitter:
name: Splitter (compact)
description: Splits one conveyor belt into two.
name: Erottaja (compact)
description: Erottaa hihnan kahteen hihnaan.
splitter-inverse:
name: Splitter (compact)
description: Splits one conveyor belt into two.
name: Erottaja (compact)
description: Erottaa hihnan kahteen hihnaan.
storage:
default:
name: Storage
description: Stores excess items, up to a given capacity. Prioritizes the left
output and can be used as an overflow gate.
name: Varasto
description: Varasotoi ylijäämätavarat tiettyyn kapasiteettiin asti. Priorisoi vasemman ulostulon
ja voidaan käyttää ylivuotoporttina.
wire_tunnel:
default:
name: Wire Crossing
description: Allows to cross two wires without connecting them.
name: Johdon ylitys
description: Antaa johdon ylittää toisen liittämättä niitä.
constant_signal:
default:
name: Constant Signal
description: Emits a constant signal, which can be either a shape, color or
boolean (1 / 0).
name: Jatkuva signaali
description: Lähettää vakiosignaalin, joka voi olla muoto, väri, taikka binääriarvo (1 / 0).
lever:
default:
name: Switch
description: Can be toggled to emit a boolean signal (1 / 0) on the wires layer,
which can then be used to control for example an item filter.
name: Kytkin
description: Voidaan kytkeä lähettämään binääriarvoa (1 / 0) johtotasolla,
jota voidaan sitten käyttää esimerkiksi tavarasuodattimen ohjaukseen.
logic_gate:
default:
name: AND Gate
description: Emits a boolean "1" if both inputs are truthy. (Truthy means shape,
color or boolean "1")
name: AND portti
description: Lähettää totuusarvon "1", jos molemmat sisääntulot ovat totta. (Totuus tarkoittaa,
että muoto, väri tai totuusarvo "1")
not:
name: NOT Gate
description: Emits a boolean "1" if the input is not truthy. (Truthy means
shape, color or boolean "1")
name: NOT portti
description: Lähettää totuusarvon "1", jos sisääntulot eivät ole totta.
(Totuus tarkoittaa, että muoto, väri tai totuusarvo "1")
xor:
name: XOR Gate
description: Emits a boolean "1" if one of the inputs is truthy, but not both.
(Truthy means shape, color or boolean "1")
name: XOR portti
description: Lähettää totuusarvon "1", jos yksi sisääntuloista on totta, mutta kaikki eivät.
(Totuus tarkoittaa, että muoto, väri tai totuusarvo "1")
or:
name: OR Gate
description: Emits a boolean "1" if one of the inputs is truthy. (Truthy means
shape, color or boolean "1")
name: OR portti
description: Lähettää totuusarvon "1", jos yksi sisääntuloista on totta.
(Totuus tarkoittaa, että muoto, väri tai totuusarvo "1")
transistor:
default:
name: Transistor
description: Forwards the bottom input if the side input is truthy (a shape,
color or "1").
name: Transistori
description: Lähettää pohjasignaalin eteenpäin, jos sivusisääntulo on totta.
(Totuus tarkoittaa, että muoto, väri tai totuusarvo "1")
mirrored:
name: Transistor
description: Forwards the bottom input if the side input is truthy (a shape,
color or "1").
name: Transistori
description: Lähettää pohjasignaalin eteenpäin, jos sivusisääntulo on totta.
(Totuus tarkoittaa, että muoto, väri tai totuusarvo "1")
filter:
default:
name: Filter
description: Connect a signal to route all matching items to the top and the
remaining to the right. Can be controlled with boolean signals
too.
name: Suodatin
description: Yhdistä signaali reitittääksesi kaikki vastaavat tavarat ylös,
ja jäljelle jäämät vasemmalle. Voidaan ohjata myös binääriarvoilla.
display:
default:
name: Display
description: Connect a signal to show it on the display - It can be a shape,
color or boolean.
name: Näyttö
description: Yhdistö signaali näyttääksesi sen näytöllä. Voi olla muoto,
väri tai binääriarvo.
reader:
default:
name: Belt Reader
description: Allows to measure the average belt throughput. Outputs the last
read item on the wires layer (once unlocked).
name: Hihnanlukija
description: Mittaa hihnan keskiarvosuorituskyky. Antaa viimeksi luetun
tavaran signaalin johtotasolla (kun saavutettu).
analyzer:
default:
name: Shape Analyzer
description: Analyzes the top right quadrant of the lowest layer of the shape
and returns its shape and color.
name: Tutkija
description: Analysoi ylä oikean neljänneksen alimmasta tavaran tasosta ja
palauttaa sen muodon ja värin.
comparator:
default:
name: Compare
description: Returns boolean "1" if both signals are exactly equal. Can compare
shapes, items and booleans.
name: Vertain
description: Palauttaa binääriarvon "1", jos molemmat signaalit ovat täysin samat.
Voi verrata värejä, tavaroita, ja binääriarvoja.
virtual_processor:
default:
name: Virtual Cutter
description: Virtually cuts the shape into two halves.
name: Virtuaalileikkuri
description: Virtuaalisesti leikkaa tavara kahteen puoliskoon.
rotater:
name: Virtual Rotater
description: Virtually rotates the shape, both clockwise and counter-clockwise.
name: Virtuaalikääntäjä Rotater
description: Virtuaalisesti käännä tavara, sekä myötäpäivään että vastapäivään.
unstacker:
name: Virtual Unstacker
description: Virtually extracts the topmost layer to the right output and the
remaining ones to the left.
name: Virtuaalierottaja
description: Virtuaalisesti erota ylin taso oikeaan ulostuloon ja jäljelle jäävät
vasempaan ulostuloon.
stacker:
name: Virtual Stacker
description: Virtually stacks the right shape onto the left.
name: Virtuaaliyhdistäjä
description: Virtuaalisesti yhdistä oikea tavara vasempaan.
painter:
name: Virtual Painter
description: Virtually paints the shape from the bottom input with the shape on
the right input.
name: Virtuaalimaalaaja
description: Virtuaalisesti maalaa tavara alhaalta sisääntulosta oikean sisääntulon värillä.
item_producer:
default:
name: Item Producer
description: Available in sandbox mode only, outputs the given signal from the
wires layer on the regular layer.
description: Saatavilla vain hiekkalaatikkotilassa. Palauttaa
johtotasolla annetun signaalin normaaliin tasoon.
storyRewards:
reward_cutter_and_trash:
title: Muotojen Leikkaus
@ -703,7 +730,8 @@ storyRewards:
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Item Filter
desc: You unlocked the <strong>Item Filter</strong>! It will route items either
@ -711,26 +739,25 @@ storyRewards:
signal from the wires layer or not.<br><br> You can also pass in a
boolean signal (1 / 0) to entirely activate or disable it.
reward_demo_end:
title: End of Demo
desc: You have reached the end of the demo version!
title: Kokeiluversion loppu!
desc: Olet läpäissyt kokeiluversion!
settings:
title: Asetukset
categories:
general: Yleinen
userInterface: Käyttöliittyma
advanced: Kehittynyt
performance: Performance
userInterface: Käyttöliittymä
advanced: Lisäasetukset
performance: Suorityskyky
versionBadges:
dev: Kehitys
staging: Näyttämö
staging: Testaus
prod: Tuotanto
buildDate: Rakennettu <at-date>
buildDate: Koottu <at-date>
labels:
uiScale:
title: Käyttöliittymän Koko
title: Käyttöliittymän koko
description: Muuttaa käyttöliittymän kokoa. Käyttöliittymä skaalataan silti
laitteen resoluution perusteella based on your device
resolution, mutta tämä asetus määrittää skaalauksen määrän.
laitteen resoluution perusteella, mutta tämä asetus määrittää skaalauksen määrän.
scales:
super_small: Erittäin pieni
small: Pieni
@ -738,7 +765,7 @@ settings:
large: Iso
huge: Valtava
autosaveInterval:
title: Automaattitallennuksen Aikaväli
title: Automaattitallennuksen aikaväli
description: Määrittää kuinka usein peli tallentaa automaattisesti. Voit myös
poistaa automaattisen tallennuksen kokonaan käytöstä täällä.
intervals:
@ -749,8 +776,8 @@ settings:
twenty_minutes: 20 Minuutin välein
disabled: Pois käytöstä
scrollWheelSensitivity:
title: Zoomausherkkyys
description: Vaihtaa kuinka herkkä zoomi on (Joko hiiren rulla tai ohjauslevy).
title: Suurennusherkkyys
description: Vaihtaa kuinka herkkä suurennus on (Joko hiiren rulla tai ohjauslevy).
sensitivity:
super_slow: Erittäin hidas
slow: Hidas
@ -758,7 +785,7 @@ settings:
fast: Nopea
super_fast: Erittäin nopea
movementSpeed:
title: Liikkumis nopeus
title: Liikkumisnopeus
description: Muuttaa kuinka nopeasti näkymä liikkuu kun käytetään näppäimistöä.
speeds:
super_slow: Erittäin hidas
@ -766,7 +793,7 @@ settings:
regular: Normaali
fast: Nopea
super_fast: Erittäin nopea
extremely_fast: Hyper nopea
extremely_fast: Supernopea
language:
title: Kieli
description: Vaihda kieltä. Kaikki käännökset ovat käyttäjien tekemiä ja
@ -780,19 +807,19 @@ settings:
description: On suositeltava pelata tätä peliä kokonäytön tilassa saadaksesi
parhaan kokemuksen. Saatavilla vain itsenäisessä versiossa.
soundsMuted:
title: Mykistä Äänet
title: Mykistä äänet
description: Jos käytössä, mykistää kaikki ääniefektit.
musicMuted:
title: Mykistä Musiikki
title: Mykistä musiikki
description: Jos käytössä, mykistää musiikin.
theme:
title: Pelin Teema
title: Pelin teema
description: Valitse pelin teema (vaalea / tumma).
themes:
dark: Tumma
light: Kirkas
light: Vaalea
refreshRate:
title: Simulaatiotavoite
title: Virkistystaajuus
description: Jos sinulla on 144hz näyttö, muuta virkistystaajuus täällä jotta
pelin simulaatio toimii oikein isommilla virkistystaajuuksilla.
Tämä voi laskea FPS nopeutta, jos tietokoneesi on liian hidas.
@ -802,18 +829,18 @@ settings:
jälkeen kunnes peruutat sen. Tämä vastaa SHIFT:in pitämistä
pohjassa ikuisesti.
offerHints:
title: Vihjeet & Oppaat
title: Vihjeet & oppaat
description: Tarjoaa pelaamisen aikana vihjeitä ja oppaita. Myös piilottaa
tietyt käyttöliittymäelementit tietyn tason mukaan, jotta
alkuunpääseminen olisi helpompaa.
enableTunnelSmartplace:
title: Älykkäät Tunnelit
title: Älykkäät tunnelit
description: Kun käytössä, tunnelin sijoittaminen automaattisesti poistaa
tarpeettomat liukuhihnat. Tämä myös ottaa käyttöön tunnelien
raahaamisen ja ylimääräiset tunnelit poistetaan.
vignette:
title: Vignetti
description: Ottaa käyttöön vignetin, joka tummentaa näytön kulmia ja tekee
title: Vinjetointi
description: Ottaa käyttöön vinjetoinnin, joka tummentaa näytön kulmia ja tekee
tekstin lukemisesta helpompaa.
rotationByBuilding:
title: Kiertäminen rakennustyypin mukaan
@ -821,26 +848,26 @@ settings:
yksilöllisesti. Tämä voi olla mukavampi vaihtoehto jos usein
sijoitat eri rakennustyyppejä.
compactBuildingInfo:
title: Kompaktit Rakennusten Tiedot
title: Kompaktit rakennusten tiedot
description: Lyhentää rakennusten tietolaatikoita näyttämällä vain niiden
suhteet. Muuten rakennuksen kuvaus ja kuva näytetään.
disableCutDeleteWarnings:
title: Poista Leikkaus/Poisto Varoitukset
title: Poista leikkaus/poisto -varoitukset
description: Poista varoitusikkunat jotka ilmestyy kun leikkaat/poistat enemmän
kuin 100 entiteettiä
soundVolume:
title: Sound Volume
description: Set the volume for sound effects
title: Efektien äänenvoimakkuus
description: Aseta äänenvoimakkuus efekteille
musicVolume:
title: Music Volume
description: Set the volume for music
title: Musiikin äänenvoimakkuus
description: Aseta äänenvoimakkuus musiikille
lowQualityMapResources:
title: Low Quality Map Resources
description: Simplifies the rendering of resources on the map when zoomed in to
improve performance. It even looks cleaner, so be sure to try it
out!
disableTileGrid:
title: Disable Grid
title: Poista ruudukko
description: Disabling the tile grid can help with the performance. This also
makes the game look cleaner!
clearCursorOnDeleteWhilePlacing:
@ -850,13 +877,13 @@ settings:
you can delete buildings by right-clicking while placing a
building.
lowQualityTextures:
title: Low quality textures (Ugly)
description: Uses low quality textures to save performance. This will make the
game look very ugly!
title: Alhaisen tason tekstuurit (ruma)
description: Käyttää alhaisen tason tekstuureja tehojen säästämiseksi. Tämä
muutta pelin rumaksi!
displayChunkBorders:
title: Display Chunk Borders
description: The game is divided into chunks of 16x16 tiles, if this setting is
enabled the borders of each chunk are displayed.
title: Näytä kimpaleiden reunus Display Chunk Borders
description: Pel on jaettu 16x16 kimpaleisiin. Jos tämä asetus on käytössä,
reunat jokaiselle kimpaleelle näytetään.
pickMinerOnPatch:
title: Pick miner on resource patch
description: Enabled by default, selects the miner if you use the pipette when
@ -874,18 +901,22 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: Pikanäppäimet
hint: "Tip: Muista käyttää CTRL, VAIHTO ja ALT! Ne ottavat käyttöön erilaisia
hint: "Tip: Muista käyttää CTRL, SHIFT ja ALT! Ne ottavat käyttöön erilaisia
sijoitteluvaihtoehtoja."
resetKeybindings: Nollaa Pikanäppäimet
resetKeybindings: Nollaa pikanäppäimet
categoryLabels:
general: Sovellus
ingame: Peli
navigation: Navigointi
placement: Sijoitus
massSelect: Massa Valinta
massSelect: Massavalinta
buildings: Rakennus Pikanäppäimet
placementModifiers: Sijoittelu Muokkaajat
mappings:
@ -955,9 +986,9 @@ about:
href="https://github.com/tobspr" target="_blank">Tobias Springer</a>
(tämä on minä).<br><br>
Jos haluat osallistua, tarkista <a href="<githublink>" target="_blank">shapez.io githubissa</a>.<br><br>
Jos haluat osallistua, tarkista <a href="<githublink>" target="_blank">shapez.io GitHubissa</a>.<br><br>
Tämä peli ei olisi ollut mahdollinen ilman suurta Discord yhteisöä pelini ympärillä - Sinun kannattaisi liittyä <a href="<discordlink>" target="_blank">Discord palvelimelleni</a>!<br><br>
Tämä peli ei olisi ollut mahdollista ilman suurta Discord -yhteisöä pelini ympärillä - Sinun kannattaisi liittyä <a href="<discordlink>" target="_blank">Discord palvelimelleni</a>!<br><br>
Ääniraidan on tehnyt <a href="https://soundcloud.com/pettersumelius" target="_blank">Peppsen</a> - Hän on mahtava.<br><br>
@ -983,7 +1014,7 @@ tips:
- Serial execution is more efficient than parallel.
- You will unlock more variants of buildings later in the game!
- You can use <b>T</b> to switch between different variants.
- Symmetry is key!
- Symmetria on keskeistä!
- You can weave different tiers of tunnels.
- Try to build compact factories - it will pay out!
- The painter has a mirrored variant which you can select with <b>T</b>
@ -994,12 +1025,12 @@ tips:
- Holding <b>SHIFT</b> will activate the belt planner, letting you place
long lines of belts easily.
- Cutters always cut vertically, regardless of their orientation.
- To get white mix all three colors.
- Sekoita kolmea väriä saadaksesi valkoista.
- The storage buffer priorities the first output.
- Invest time to build repeatable designs - it's worth it!
- Holding <b>CTRL</b> allows to place multiple buildings.
- You can hold <b>ALT</b> to invert the direction of placed belts.
- Efficiency is key!
- Tehokkuus on keskeistä!
- Shape patches that are further away from the hub are more complex.
- Machines have a limited speed, divide them up for maximum efficiency.
- Use balancers to maximize your efficiency.
@ -1030,6 +1061,6 @@ tips:
- This game has a lot of settings, be sure to check them out!
- The marker to your hub has a small compass to indicate its direction!
- To clear belts, cut the area and then paste it at the same location.
- Press F4 to show your FPS and Tick Rate.
- Paina F4 nähdäksesi FPS laskurin ja virkistystaajuuden.
- 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.

View File

@ -198,6 +198,14 @@ dialogs:
renameSavegame:
title: Rename Savegame
desc: You can rename your savegame here.
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: Kretanje
@ -306,6 +314,30 @@ ingame:
traka će ubrzati napredak do cilja.<br><br>Savjet: Drži
<strong>SHIFT</strong> za postavljanje više rudara istovremeno,
a pritisni <strong>R</strong> za rotaciju."
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
connectedMiners:
one_miner: 1 Miner
n_miners: <amount> Miners
@ -691,7 +723,8 @@ storyRewards:
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Item Filter
desc: You unlocked the <strong>Item Filter</strong>! It will route items either
@ -859,6 +892,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: Tipka

View File

@ -204,6 +204,14 @@ dialogs:
renameSavegame:
title: Rename Savegame
desc: You can rename your savegame here.
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: Mozgatás
@ -312,6 +320,30 @@ ingame:
futószalagot, hogy hamarabb elérd a célt.<br><br>Tipp: Tartsd
lenyomva a <strong>SHIFT</strong>-et, hogy egyszerre több bányát
helyezz le, és nyomj <strong>R</strong>-t a forgatáshoz."
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
connectedMiners:
one_miner: 1 Miner
n_miners: <amount> Miners
@ -705,7 +737,8 @@ storyRewards:
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Item Filter
desc: You unlocked the <strong>Item Filter</strong>! It will route items either
@ -875,6 +908,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: Keybindings

File diff suppressed because it is too large Load Diff

View File

@ -22,7 +22,7 @@ steamPage:
- <b>L'aggiornamento dei Cavi</b> per una dimensione completamente nuova!
- <b>Modalità scura</b>!
- Salvataggi illimitati
- Segnapunti illimitati
- Etichette illimitate
- Mi sostieni! ❤️
title_future: Contenuti pianificati
planned:
@ -82,8 +82,8 @@ demoBanners:
title: Versione Demo
intro: Ottieni la versione completa per sbloccare tutte le funzioni!
mainMenu:
play: Play
changelog: Changelog
play: Gioca
changelog: Registro modifiche
importSavegame: Importa
openSourceHint: Questo gioco è open source!
discordLink: Server ufficiale Discord
@ -121,9 +121,9 @@ dialogs:
text: "Impossibile caricare il salvataggio:"
confirmSavegameDelete:
title: Conferma eliminazione
text: Are you sure you want to delete the following game?<br><br>
'<savegameName>' at level <savegameLevel><br><br> This can not be
undone!
text: Sei sicuro di voler eliminare la partita seguente?<br><br>
'<savegameName>' al livello <savegameLevel><br><br> Da qui in poi
non si può più tornare indietro!
savegameDeletionError:
title: Impossibile eliminare
text: "Impossibile eliminare il salvataggio:"
@ -177,13 +177,14 @@ dialogs:
class='keybinding'>ALT</code>: Inverti l'orientamento dei nastri
trasportatori.<br>"
createMarker:
title: Nuovo segnapunto
desc: Give it a meaningful name, you can also include a <strong>short
key</strong> of a shape (Which you can generate <link>here</link>)
titleEdit: Modifica segnapunto
title: Nuova etichetta
desc: Dagli un nome significativo, puoi anche inserire un
<strong>codice</strong> di una forma (Che puoi generare
<link>qui</link>)
titleEdit: Modifica etichetta
markerDemoLimit:
desc: Puoi creare solo due segnapunti personalizzati nella Demo. Ottieni la
versione completa per avere segnapunti personalizzati illimitati!
desc: Puoi creare solo due etichette personalizzate nella Demo. Ottieni la
versione completa per avere etichette personalizzate illimitati!
massCutConfirm:
title: Conferma taglio
desc: Stai tagliando molte strutture (<count> per essere precisi)! Sei sicuro di
@ -205,6 +206,14 @@ dialogs:
renameSavegame:
title: Rinomina salvataggio.
desc: Qui puoi cambiare il nome del salvataggio.
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: Sposta
@ -234,7 +243,7 @@ ingame:
range: Raggio
storage: Spazio
oneItemPerSecond: 1 oggetto / secondo
itemsPerSecond: <x> oggetti / s
itemsPerSecond: <x> oggetti / secondo
itemsPerSecondDouble: (x2)
tiles: <x> caselle
levelCompleteNotification:
@ -245,7 +254,7 @@ ingame:
notifications:
newUpgrade: È disponibile un nuovo aggiornamento!
gameSaved: Partita salvata.
freeplayLevelComplete: Level <level> has been completed!
freeplayLevelComplete: Il livello <level> è stato completato!
shop:
title: Miglioramenti
buttonUnlock: Sblocca
@ -256,7 +265,7 @@ ingame:
dataSources:
stored:
title: Immagazzinate
description: Mostra il numero di forme immagizzinate nell'edificio centrale.
description: Mostra il numero di forme immagazzinate nell'Edificio centrale.
produced:
title: Prodotte
description: Mostra tutte le forme prodotte dalla tua fabbrica, inclusi i
@ -280,19 +289,19 @@ ingame:
blueprintPlacer:
cost: Costo
waypoints:
waypoints: Segnapunti
waypoints: Punti di interesse
hub: HUB
description: Clic sinistro su un segnapunto per raggiungerlo, clic destro per
cancellarlo. <br><br>Premi <keybinding> per creare un segnapunto
description: Clic sinistro su un etichetta per raggiungerla, clic destro per
cancellarla. <br><br>Premi <keybinding> per creare un etichetta
dalla visuale corrente, oppure <strong>click destro</strong> per
creare un segnapunto nella posizione selezionata.
creationSuccessNotification: Il segnapunto è stato creato.
creare un etichetta nella posizione selezionata.
creationSuccessNotification: L'etichetta è stata creata.
interactiveTutorial:
title: Tutorial
hints:
1_1_extractor: Posiziona un <strong>estrattore</strong> sopra una <strong>forma
circolare</strong> per estrarla!
1_2_conveyor: "Connetti l'estrattore all'Hub centrale utilizzando un
1_2_conveyor: "Connetti l'estrattore all'Edificio centrale utilizzando un
<strong>nastro trasportatore</strong>!<br><br>Suggerimento:
<strong>Clicca e trascina</strong> il nastro con il mouse!"
1_3_expand: "Questo <strong>NON</strong> è un idle game! Costruisci più
@ -300,6 +309,30 @@ ingame:
velocemente.<br><br>Suggerimento: Tieni premuto
<strong>MAIUSC</strong> per piazzare estrattori multipli, e usa
<strong>R</strong> per ruotarli."
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
colors:
red: Rosso
green: Verde
@ -308,7 +341,7 @@ ingame:
purple: Magenta
cyan: Azzurro
white: Bianco
uncolored: No colore
uncolored: Senza colore
black: Nero
shapeViewer:
title: Strati
@ -320,7 +353,7 @@ ingame:
limited_items: Limitato a <max_throughput>
watermark:
title: Versione demo
desc: Clicca qui per vedere i vantaggi della versione Steam!
desc: Clicca qui per vedere i vantaggi della versione Completa!
get_on_steam: Ottieni su Steam
standaloneAdvantages:
title: Ottieni la versione completa!
@ -339,7 +372,7 @@ ingame:
title: 20 gradi di miglioramenti
desc: Questa demo ne ha solo 5!
markers:
title: segnapunti
title: etichette
desc: Non perderti nella tua fabbrica!
wires:
title: Cavi
@ -367,43 +400,43 @@ buildings:
belt:
default:
name: Nastro Trasportatore
description: Trasporta oggetti, clicca e trascina per posizionare in sequenza.
description: Trasporta oggetti, clicca e trascina per posizionarli in sequenza.
miner:
default:
name: Estrattore
description: Posiziona sopra una forma o un colore per estrarlo.
description: Posizionalo sopra una forma o un colore per estrarlo.
chainable:
name: Estrattore (Catena)
description: Posiziona sopra una forma o un colore per estrarlo. Puoi combinarlo
con altri estrattori.
description: Posizionalo sopra una forma o un colore per estrarlo. Puoi
combinarlo con altri estrattori.
underground_belt:
default:
name: Tunnel
description: Permette di far passare delle risorse sotto a costruzioni e nastri
trasportatori.
description: Permette di far passare le risorse sotto alle costruzioni e ai
nastri trasportatori.
tier2:
name: Tunnel Grado II
description: Permette di far passare delle risorse sotto a costruzioni e nastri
trasportatori.
description: Permette di far passare le risorse sotto alle costruzioni e ai
nastri trasportatori.
cutter:
default:
name: Tagliatrice
description: Taglia le forme verticalmente e restituisce le metà destra e
sinistra. <strong>Se usi solo una parte, distruggi l'altra o la
macchina si fermerà!</strong>
name: Taglierino
description: Taglia le forme verticalmente e restituisce le due metà a destra e
a sinistra. <strong>Se usi solo una parte, distruggi l'altra o
la macchina si fermerà!</strong>
quad:
name: Tagliatrice (4x)
description: Taglia le forme in quattro parti. <strong>Se usi solo una parte,
distruggi le altre o la macchina si fermerà!</strong>
name: Taglierino (4x)
description: Taglia le forme in quattro parti. <strong>Se usi meno di quattro
parti, distruggi le altre o la macchina si fermerà!</strong>
rotater:
default:
name: Ruotatrice
name: Ruotatore
description: Ruota le forme di 90 gradi in senso orario.
ccw:
name: Ruotatrice (Ant.)
name: Ruotatore (Ant.)
description: Ruota le forme di 90 gradi in senso antiorario.
rotate180:
name: Ruotatrice (180)
name: Ruotatore (180°)
description: Ruota le forme di 180 gradi.
stacker:
default:
@ -412,26 +445,26 @@ buildings:
uniti, l'oggetto destro è posizionato sopra il sinstro.
mixer:
default:
name: Mixer Colori
name: Miscelatore di vernice
description: Mescola due colori mediante sintesi additiva.
painter:
default:
name: Verniciatrice
name: Verniciatore
description: Colora l'intera forma dall'ingresso sinistro con il colore
dall'ingresso destro.
dall'ingresso superiore.
double:
name: Verniciatrice (2x)
name: Verniciatore (2x)
description: Colora le forme dagli ingressi sinistri con il colore dall'ingresso
destro.
superiore.
quad:
name: Verniciatrice (4x)
description: Allows you to color each quadrant of the shape individually. Only
slots with a <strong>truthy signal</strong> on the wires layer
will be painted!
name: Verniciatore (4x)
description: Ti permette di colorare ogni quadrante della forma individualmente.
Solo gli spazi con un <strong>Vero</strong> sul livello
elettrico saranno colorati!
mirrored:
name: Verniciatrice
name: Verniciatore
description: Colora l'intera forma dall'ingresso sinistro con il colore
dall'ingresso destro.
dall'ingresso inferiore.
trash:
default:
name: Cestino
@ -452,7 +485,7 @@ buildings:
balancer:
default:
name: Bilanciatore
description: Multifunzionale, distribuisce equamente gli ogetti in ingresso tra
description: Multifunzione, distribuisce equamente gli oggetti in ingresso tra
tutte le uscite.
merger:
name: Aggregatore (compatto)
@ -468,13 +501,13 @@ buildings:
description: Divide un nastro in due.
storage:
default:
name: Stoccaggio
name: Magazzino
description: Immagazzina gli oggetti in eccesso, fino ad una capacità massima.
Prioritizza l'uscita sinistra e può quindi essere usato per
Dà priorità all'uscita sinistra e può quindi essere usato per
gestire le eccedenze.
wire_tunnel:
default:
name: Incrocio cavi
name: Incrocio fra cavi
description: Consente a due cavi di attraversarsi senza connettersi.
constant_signal:
default:
@ -483,15 +516,15 @@ buildings:
un booleano (1 / 0).
lever:
default:
name: Bottone
name: Interruttore
description: Può essere azionato per emettere un segnale booleano (1 / 0) nel
livello dei cavi, che può essere usato per controllare, per
livello elettrico, che può essere usato per controllare, per
esempio, un filtro.
logic_gate:
default:
name: Porta AND
description: Emette un "1" booleano se entrambi gli ingressi sono veri. (Vero
significa forma, colore o "1" boolean)
significa forma, colore o "1" booleano)
not:
name: Porta NOT
description: Emette un "1" booleano se l'ingresso è falso. (Vero significa
@ -506,11 +539,11 @@ buildings:
significa forma, colore o "1" booleano)
transistor:
default:
name: Transistor
name: Transistore
description: Inoltra il segnale dall'ingresso inferiore se l'ingresso laterale è
vero (una forma, un colore o "1").
mirrored:
name: Transistor
name: Transistore
description: Inoltra il segnale dall'ingresso inferiore se l'ingresso laterale è
vero (una forma, un colore o "1").
filter:
@ -542,105 +575,107 @@ buildings:
comparare forme, colori e booleani.
virtual_processor:
default:
name: Tagliatrice virtuale
name: Taglierino virtuale
description: Taglia virtualmente la forma in due metà.
rotater:
name: Ruotatrice virtuale
description: Ruota virtualmente la forma, sia in senso orario che antiorario.
name: Ruotatore virtuale
description: Ruota virtualmente la forma, sia in senso orario sia antiorario.
unstacker:
name: Disimpilatrice virtuale
description: Estrae virtualmente lo strato più alto e lo emette a destra, i
restanti sono emessi a sinistra.
stacker:
name: Impilatrice virtuale
description: Impila visrtualmente la forma destra sulla sinistra.
description: Impila virtualmente la forma destra sulla sinistra.
painter:
name: Verniciatrice virtuale
name: Verniciatore virtuale
description: Vernicia virtualmente la forma dall'ingresso inferiore con il
colore dall'ingresso destro.
item_producer:
default:
name: Generatore di oggetti
description: Disponibile solo nella modalità sandbox, emette il segnale dal
livello dei cavi come oggetti sul livello normale.
livello elettrico come oggetti sul livello normale.
storyRewards:
reward_cutter_and_trash:
title: Taglio forme
desc: You just unlocked the <strong>cutter</strong>, which cuts shapes in half
from top to bottom <strong>regardless of its
orientation</strong>!<br><br>Be sure to get rid of the waste, or
otherwise <strong>it will clog and stall</strong> - For this purpose
I have given you the <strong>trash</strong>, which destroys
everything you put into it!
desc: Il <strong>taglierino</strong> è stato bloccato! Taglia le forme a metà da
sopra a sotto <strong>indipendentemente dal suo
orientamento</strong>!<br><br> Assicurati di buttare via lo scarto,
sennò <strong>si intaserà e andrà in stallo </strong> - Per questo
ti ho dato il <strong>certino</strong>, che distrugge tutto quello
che riceve!
reward_rotater:
title: Rotazione
desc: La <strong>ruotatrice</strong> è stata sbloccata! Ruota le forme di 90
desc: Il <strong>ruotatore</strong> è stato sbloccato! Ruota le forme di 90
gradi in senso orario.
reward_painter:
title: Verniciatura
desc: "La <strong>verniciatrice</strong> è stata sbloccata - Estrai dalle vene
desc: "Il <strong>verniciatore</strong> è stato sbloccato! Estrai dalle vene
colorate (esattamente come fai con le forme) e combina il colore con
una forma nella veniciatrice per colorarla!<br><br>PS: Se sei
daltonico, c'è la <strong>modalità daltonici </strong> nelle
opzioni!"
impostazion!"
reward_mixer:
title: Mix colori
desc: Il <strong>mixer</strong> è stato sbloccato - Con questo edificio, puoi
combinare due colori mediante <strong>sintesi additiva</strong>!
desc: Il <strong>miscelatore</strong> è stato sbloccato! Con questo edificio,
puoi combinare due colori mediante la <strong>sintesi
additiva</strong>!
reward_splitter:
title: Separatore/Agrregatore
desc: You have unlocked a <strong>splitter</strong> variant of the
<strong>balancer</strong> - It accepts one input and splits them
into two!
desc: Il <strong>separatore</strong> è stato sbloccato! è una variante del
<strong>bilanciatore</strong> - Accetta un imput e lo divide in due!
reward_tunnel:
title: Tunnel
desc: Il <strong>tunnel</strong> è stato sbloccato. In questo modo puoi
desc: Il <strong>tunnel</strong> è stato sbloccato! In questo modo puoi
trasportare oggetti al di sotto di nastri ed edifici!
reward_rotater_ccw:
title: Rotazione antioraria
desc: Hai sbloccato una variante della <strong>ruotatrice</strong>. Consente di
desc: Hai sbloccato una variante del <strong>ruotatore</strong>! Consente di
ruotare in senso antiorario! Per costruirla, seleziona la ruotatrice
e <strong>premi 'T' per cambiare variante</strong>!
reward_miner_chainable:
title: Estrattore a catena
desc: "You have unlocked the <strong>chained extractor</strong>! It can
<strong>forward its resources</strong> to other extractors so you
can more efficiently extract resources!<br><br> PS: The old
extractor has been replaced in your toolbar now!"
desc: "L'<strong>estrattore a catena</strong> è stato sbloccato! Può
<strong>passare le sue risorse</strong> agli altri estrattori, così
tu puoi estrarre le risorse in modo più efficiente!<br><br> PS: Il
primo estrattore è stato rimpiazzato nel tuo inventario!"
reward_underground_belt_tier_2:
title: Tunnel grado II
desc: Hai sbloccato una nuova variante del <strong>tunnel</strong>. Ha un
desc: Hai sbloccato una variante del <strong>tunnel</strong>! Ha un
<strong>raggio più ampio</strong> e puoi anche mischiare le due
varianti ora!
reward_cutter_quad:
title: Taglio quadruplo
desc: Hai sbloccato una variante della <strong>tagliatrice</strong>. Cconsente
di tagliare le forme in <strong>quattro parti</strong> invece che in
desc: Hai sbloccato una variante del <strong>taglierino</strong>! Consente di
tagliare le forme in <strong>quattro parti</strong> invece che in
due!
reward_painter_double:
title: Verniciatura doppia
desc: Hai sbloccato una variante della <strong>verniciatrice</strong>. Funziona
come una normale verniciatrice, ma processa <strong>due forme alla
desc: Hai sbloccato una variante del <strong>verniciatore</strong>! Funziona
come un normale verniciatore, ma processa <strong>due forme alla
volta</strong> consumando solo un'unità di colore invece che due!
reward_storage:
title: Unità di stoccaggio
desc: You have unlocked the <strong>storage</strong> building - It allows you to
store items up to a given capacity!<br><br> It priorities the left
output, so you can also use it as an <strong>overflow gate</strong>!
desc: Hai sbloccato il <strong>magazzino</strong>! Ti permette di immagazzinare
le forme fino a un certo limite!<br><br> Dà priorità all'uscita a
sinistra, puoi quindi usarlo per gestire le
<strong>eccedenze</strong>!
reward_freeplay:
title: Modalità libera
desc: You did it! You unlocked the <strong>free-play mode</strong>! This means
that shapes are now <strong>randomly</strong> generated!<br><br>
Since the hub will require a <strong>throughput</strong> from now
on, I highly recommend to build a machine which automatically
delivers the requested shape!<br><br> The HUB outputs the requested
shape on the wires layer, so all you have to do is to analyze it and
automatically configure your factory based on that.
desc: Ce l'hai fatta! Hai sbloccato la <strong>modalità libera</strong>! Questo
significa che le forme da adesso in poi sono generate
<strong>casualmente</strong>!<br><br> Visto che la HUB avrà bisogno
di una <strong>portata maggiore</strong> Ti consiglio vivamente di
costruire un macchinario che consegna automaticamente la forma
richiesta!<br><br> La HUB da come output la forma richiesta sul
livello elettrico, quindi ti basta solo analizzarla e configurare
automaticamente la tua fabbrica in base a quei dati.
reward_blueprints:
title: Progetti
desc: Ora puoi <strong>copiare ed incollare</strong> parti della tua fabbrica!
Seleziona un'area (Tieni premuto CTRL e trascina con il mouse) e
premi 'C' per copiarla.<br><br>Incollarla <strong>non è
desc: Ora puoi <strong>copiare ed incollare</strong> componenti della tua
fabbrica! Seleziona un'area (Tieni premuto CTRL e trascina con il
mouse) e premi 'C' per copiarla.<br><br>Incollarla <strong>non è
gratis</strong>, devi produrre <strong>forme progetto</strong> per
potertelo permettere! (Quelle che hai appena consegnato).
no_reward:
@ -667,7 +702,7 @@ storyRewards:
reward_merger:
title: Aggregatore compatto
desc: Hai sbloccato un <strong>aggregatore</strong>, variante del
<strong>bilanciatore</strong>. Acetta due ingressi e li aggrega su
<strong>bilanciatore</strong>! Acetta due ingressi e li aggrega su
un unico nastro!
reward_belt_reader:
title: Lettore di nastri
@ -676,19 +711,19 @@ storyRewards:
allora sì che sarà molto utile!
reward_rotater_180:
title: Ruotatrice (180 gradi)
desc: Hai appena sbloccato la <strong>ruotatrice</strong> a 180 gradi! Consente
desc: Hai appena sbloccato il <strong>ruotatore</strong> a 180 gradi! Consente
di ruotare una forma di 180 gradi (Sorpresa! :D)
reward_display:
title: Display
desc: "You have unlocked the <strong>Display</strong> - Connect a signal on the
wires layer to visualize it!<br><br> PS: Did you notice the belt
reader and storage output their last read item? Try showing it on a
display!"
desc: "Hai sbloccato il <strong>Display</strong>! Connetti un segnale sul
livello elettrico per visualizzarlo!<br><br> PS: Hai notato che il
lettore di nastri e il magazzino mostrano l'ultimo oggetto da loro
letto? Prova a mostrarlo su di un display!"
reward_constant_signal:
title: Sengale costante
desc: Hai sblocatto l'edificio <strong>segnale costante</strong> sul livello dei
cavi! È utile collegarlo ai <strong>filtri oggetti</strong> per
esempio.<br><br> Il segnale costante può emettere una
desc: Hai sblocatto l'edificio <strong>segnale costante</strong> sul livello
elettrico! È utile collegarlo ai <strong>filtri di oggetti</strong>
per esempio.<br><br> Il segnale costante può emettere una
<strong>forma</strong>, un <strong>colore</strong> o un
<strong>booleano</strong> (1 / 0).
reward_logic_gates:
@ -697,33 +732,34 @@ storyRewards:
entusiasta, ma in realtà sono fantastiche!<br><br> Con quelle porte
ora puoi eseguire le operazioni logiche di AND, OR, XOR e
NOT.<br><br> Come bonus extra ti ho anche regalato un
<strong>transistor</strong>!
<strong>transistore</strong>!
reward_virtual_processing:
title: Lavorazione virtuale
desc: Ti ho appena dato un bel po' di nuovi edifici che ti consentono di
<strong>simulare la lavorazione delle forme</strong>!<br><br> Ora
puoi simulare una tagliatrice, una ruotatrice, un'impilatrice e
molto altro sul livello dei cavi! In questo modo hai tre opzioni per
puoi simulare un taglierino, un ruotatore, un'impilatrice e molto
altro sul livello elettrico! In questo modo hai tre opzioni per
continuare il gioco:<br><br> -Costruisci una <strong>macchina
automatica</strong> per creare ogni possibile forma richiesta
dall'HUB (ti consiglio di provarci!).<br><br> - Costruisci qualcosa
di interessante con i cavi.<br><br> - Continua a giocare
normalmente. <br><br> Qualsiasi cosa tu scelga, riordati di
normalmente. <br><br> Qualsiasi cosa tu scelga, ricordati di
divertirti!
reward_wires_painter_and_levers:
title: Cavi e Verniciatrice quadrupla
desc: "Hai appena sbloccato il <strong>livello dei cavi</strong>: È un livello
separato al di sopra di quello normale e introduce un sacco di nuove
meccaniche!<br><br> Per il momento ti ho sbloccato la
<strong>Verniciatrice quadrupla</strong>. Collega gli ingressi con i
quali vuoi dipingere nel livello dei cavi!<br><br> Per passare al
livello dei cavi, premi <strong>E</strong>."
desc: "You just unlocked the <strong>Wires Layer</strong>: It is a separate
layer on top of the regular layer and introduces a lot of new
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Filtro oggetti
desc: Hai sbloccato il <strong>filtro oggetti</strong>! Smisterà gli oggetti
verso l'alto o verso destra a seconda che corrispondano al sengale
dal livello dei cavi o no.<br><br> Puoi anche mandargli un segnale
booleano (1 / 0) per attivarlo o disattivarlo completamente.
verso l'alto o verso destra a seconda del segnale dal livello
elettrico o meno.<br><br> Puoi anche mandargli un segnale booleano
(1 / 0) per attivarlo o disattivarlo completamente.
reward_demo_end:
title: Fine della demo
desc: Hai raggiunto la fine della demo!
@ -733,7 +769,7 @@ settings:
general: Generali
userInterface: Interfaccia utente
advanced: Avanzate
performance: Performance
performance: Prestazioni
versionBadges:
dev: Sviluppo
staging: Staging
@ -894,6 +930,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: Comandi
@ -918,7 +958,7 @@ keybindings:
centerMap: Centra mappa
mapZoomIn: Aumenta zoom
mapZoomOut: Riduci zoom
createMarker: Crea segnapunto
createMarker: Crea Etichetta
menuOpenShop: Miglioramenti
menuOpenStats: Statistiche
toggleHud: Mostra/Nascondi HUD
@ -926,16 +966,16 @@ keybindings:
belt: Nastro Trasportatore
underground_belt: Tunnel
miner: Estrattore
cutter: Tagliatrice
rotater: Ruotatrice
cutter: Taglierino
rotater: Ruotatore
stacker: Impilatrice
mixer: Mixer Colori
painter: Verniciatrice
mixer: Miscelatore di vernice
painter: Verniciatore
trash: Cestino
rotateWhilePlacing: Ruota
cycleBuildingVariants: Cicla varianti
confirmMassDelete: Conferma eliminazione di massa
cycleBuildings: Cicla edifici
cycleBuildings: Cambia variante
massSelectStart: Clicca e trascina per cominciare
massSelectSelectMultiple: Seleziona aree multiple
massSelectCopy: Copia area
@ -953,16 +993,16 @@ keybindings:
switchLayers: Cambia livello
wire: Cavo
balancer: Bilanciatore
storage: Stoccaggio
storage: Magazzino
constant_signal: Segnale costante
logic_gate: Porta logica
lever: Bottone (normale)
lever: Interruttore (normale)
filter: Filtro
wire_tunnel: Incrocio cavi
display: Display
reader: Lettore nastri
virtual_processor: Tagliatrice virtuale
transistor: Transistor
virtual_processor: Taglierino virtuale
transistor: Transistore
analyzer: Analizzatore forme
comparator: Comparatore
item_producer: Generatore di oggetti (Sandbox)
@ -983,7 +1023,7 @@ about:
Per finire, grazie di cuore al mio migliore amico <a href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Senza le nostre sessioni su factorio questo gioco non sarebbe mai esistito.
changelog:
title: Changelog
title: Registro modifiche
demo:
features:
restoringGames: Recupero salvataggi
@ -1008,8 +1048,7 @@ tips:
- La simmetria è la chiave!
- Puoi intrecciare gradi diversi del tunnel.
- Cerca di costruire fabbriche compatte, sarai ricompensato!
- La verniciatrice ha una variante speculare che puoi selezionare con
<b>T</b>
- Il verniciatore ha una variante speculare che puoi selezionare con <b>T</b>
- Avere i giusti rapporti tra gli edifici massimizzerà l'efficienza.
- Al massimo livello, 5 estrattori saturano un singolo nastro.
- Non dimenticare i tunnel!
@ -1017,10 +1056,10 @@ tips:
efficienza.
- Tenere premuto <b>SHIFT</b> attiva il pianificatore nastri, facilitando il
posizionamento dei nastri più lunghi
- Le tagliatrici tagliano sempre in verticale, indipendentemente dalla
direzione.
- I taglierini tagliano sempre in verticale, indipendentemente
dall'orientamento.
- Mischia tutti i tre colori per fare il bianco.
- L'unità di stoccaggio prioritizza la prima uscita.
- Il magazzino prioritizza la prima uscita.
- Impiega tempo per costruire design replicabili, ne vale la pena!
- Tenere premuto <b>CTRL</b> ti consente di piazzare multipli edifici.
- Puoi tenere premuto <b>ALT</b> per invertire la direzione dei nastri
@ -1046,23 +1085,24 @@ tips:
mortali.
- Costruisci una fabbrica dedicata per i progetti. Sono importanti per i
moduli.
- Guarda da vicino il mixer dei colori, e le tue domande avranno risposta.
- Guarda da vicino il miscelatore di colori, e le tue domande avranno
risposta.
- Usa <b>CTRL</b> + Clic per selezionare un'area.
- Costruire troppo vicino all'hub potrebbe intralciare progetti futuri.
- Premere la puntina vicino a ogni forma nel menù miglioramenti la farà
visualizzare sempre a schermo
- Mescola tutti i colori primari per fare il bianco!
- Hai una mappa finita, non incastrare la tua fabbrica, espanditi!
- Prova anhe factorio! È il mio gioco preferito.
- La tagliatrice quadrupla taglia in senso orario a partire dal quadrante in
- Hai una mappa infinita, non incastrare la tua fabbrica, espanditi!
- Prova anche factorio! È il mio gioco preferito.
- Il taglierino quadruplo taglia in senso orario a partire dal quadrante in
alto a destra!
- Puoi scaricare i salvataggi dal menù principale!
- Questo gioco ha molti tasti di scelta rapida! Dai un'occhiata alla pagina
delle impostazioni
- Questo gioco ha molte impostazioni, dai un'occhiata!
- Il segnapunto dell'hub ha una piccola bussola per indicarne la direzione!
- Per svutare i nastri, taglia e re-incolla l'area nello stesso punto.
- L'etichetta dell'hub ha una piccola bussola per indicarne la direzione!
- Per svuotare i nastri, taglia e re-incolla l'area nello stesso punto.
- Premi F4 per mostrare FPS e Tick al secondo.
- Press 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 lisata.
dalla lista.

View File

@ -176,6 +176,14 @@ dialogs:
renameSavegame:
title: セーブデータの名前を変更
desc: セーブデータの名前を変更することができます
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: マップ移動
@ -279,6 +287,30 @@ ingame:
もっと早く要件を満たせるように、追加の抽出機とベルトを設置しましょう。<br><br>Tip:
<strong>SHIFT</strong>
キーを押し続けると抽出機を連続配置できます。<strong>R</strong>キーで設置方向を回転できます。"
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
connectedMiners:
one_miner: 1個の抽出機
n_miners: <amount>個の抽出機
@ -568,10 +600,13 @@ storyRewards:
desc: <strong>回転機</strong>のバリエーションが利用可能になりました! 180度の回転ができるようになります(サプライズ! :D)
reward_wires_painter_and_levers:
title: ワイヤ&着色機(四分割)
desc: "<strong>ワイヤレイヤ</strong>が利用可能になりました!:
通常レイヤとは別のレイヤーであり、異なる機能が使用できます!<br><br>
最初に、<strong>着色機(四分割)</strong>が利用可能です。着色したいスロットを、ワイヤレイヤで接続します。<br><b\
r> ワイヤレイヤに切り替えるには、<strong>E</strong>を押します。"
desc: "You just unlocked the <strong>Wires Layer</strong>: It is a separate
layer on top of the regular layer and introduces a lot of new
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: アイテムフィルタ
desc: <strong>アイテムフィルタ</strong>が利用可能になりました! ワイヤレイヤの信号と一致するかどうかに応じて、
@ -753,6 +788,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
keybindings:
title: キー設定
hint: "Tip: CTRL, SHIFT, ALTを利用するようにしてください。これらはそれぞれ建造物配置の際の機能があります。"

View File

@ -77,7 +77,7 @@ demoBanners:
mainMenu:
play: 시작
changelog: 버전 기록
importSavegame: 불러오기
importSavegame: 가져오기
openSourceHint: 이 게임은 오픈 소스입니다!
discordLink: 공식 디스코드 서버
helpTranslate: 번역을 도와주세요!
@ -104,14 +104,14 @@ dialogs:
showUpgrades: 업그레이드 보기
showKeybindings: 조작법 보기
importSavegameError:
title: 불러오기 오류
text: "Failed to import your savegame:"
title: 가져오기 오류
text: "세이브 파일을 가져오지 못했습니다:"
importSavegameSuccess:
title: 세이브 파일 불러오기 성공
title: 세이브 파일 가져오기 성공
text: 세이브 파일을 성공적으로 불러왔습니다.
gameLoadFailure:
title: 세이브 파일 에러
text: "Failed to load your savegame:"
text: "세이브 파일을 불러오지 못했습니다:"
confirmSavegameDelete:
title: 삭제 확인
text: 이 세이브 파일을 정말로 삭제하시겠습니까?<br><br> '<savegameName>' <savegameLevel>
@ -176,11 +176,18 @@ dialogs:
desc: 이 영역에는 붙여넣기를 할 수 없습니다! 정말 자르시겠습니까?
editSignal:
title: 신호 설정
descItems: "Choose a pre-defined item:"
descItems: "미리 정의된 아이템을 선택합니다:"
descShortKey: ... 또는 도형 <strong>단축키</strong>를 사용합니다 (<link>여기</link>에서 만드실 수 있습니다).
renameSavegame:
title: 세이브 파일 이름 설정
desc: 여기에서 세이브 파일의 이름을 바꿀 수 있습니다.
tutorialVideoAvailable:
title: 활성화된 튜토리얼
desc: 현재 레벨에서 사용할 수 있는 튜토리얼 비디오가 있습니다! 보시겠습니까?
tutorialVideoAvailableForeignLanguage:
title: 활성화된 튜토리얼
desc: 현재 레벨에서 사용할 수 있는 튜토리얼 비디오가 있습니다! 허나 영어로만
제공될 것입니다. 보시겠습니까?
ingame:
keybindingsOverlay:
moveMap: 이동
@ -204,7 +211,7 @@ ingame:
switchLayers: 레이어 전환
buildingPlacement:
cycleBuildingVariants: <key> 키를 눌러 변형 전환
hotkeyLabel: "Hotkey: <key>"
hotkeyLabel: "단축키: <key>"
infoTexts:
speed: 속도
range: 최대 거리
@ -266,13 +273,33 @@ ingame:
hints:
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!"
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."
1_2_conveyor: "이제 <strong>컨베이어 벨트</strong>를 추출기와 허브를 서로 연결하세요!<br><br> 팁: 벨트를
마우스로 <strong>클릭한 뒤 드래그</strong>하세요!"
1_3_expand: "이 게임은 방치형 게임이 <strong>아닙니다</strong>! 더 많은 추출기와 벨트를 만들어 지정된 목표를 빨리
달성하세요.<br><br> 팁: <strong>SHIFT</strong> 키를 누른 상태에서는 빠르게 배치할 수
있고, <strong>R</strong> 키를 눌러 회전할 수 있습니다."
2_1_place_cutter: "이제 <strong>절단기</strong>를 배치하여 원형 도형을 둘로 자르세요!<br><br>
추신: 절단기는 방향에 관계 없이 항상 수직으로 자릅니다."
2_2_place_trash: 절단기가 <strong>막히거나 멈출 수 있습니다</strong>!<br><br>
<strong>휴지통</strong>을 사용하여 현재 필요없는 쓰레기 도형 (!)을
제거하세요.
2_3_more_cutters: "잘하셨습니다! 느린 처리 속도를 보완하기 위해 <strong>절단기를 두 개</strong>
이상 배치해보세요!<br><br> 추신: <strong>상단 숫자 단축키 (0~9)</strong>를 사용하여
건물을 빠르게 선택할 수 있습니다!"
3_1_rectangles: "이제 사각형 도형을 추출해 볼까요! <strong>추출기 네 개를
배치</strong>하고 허브와 연결하세요.<br><br> 추신: 긴 벨트 한 줄을
간단히 만들려면 <strong>SHIFT 키</strong>를 누른 채 드래그하세요!"
21_1_place_quad_painter: <strong>4단 색칠기</strong>를 배치하여 <strong>흰색</strong>과
<strong>빨간색</strong>이 칠해진 <strong>원형
도형</strong>을 만들어보세요!
21_2_switch_to_wires: <strong>E 키</strong>를 눌러 전선 레이어
로 전환하세요!<br><br> 그 후 색칠기의 <strong>네 입력 부분</strong>을
모두 케이블로 연결하세요!
21_3_place_button: 훌륭해요! 이제 <strong>스위치</strong>를 배치하고 전선으로
연결하세요!
21_4_press_button: "스위치를 눌러 </strong>참 신호를 내보내<strong>
색칠기를 활성화하세요. 추신: 모든 입력을 연결할 필요는 없습니다!
지금은 두 개만 연결하세요."
colors:
red: 빨간색
green: 초록색
@ -284,13 +311,13 @@ ingame:
black: 검은색
uncolored: 회색
shapeViewer:
title:
title: 레이어
empty: 비었음
copyKey: 키 복사하기
connectedMiners:
one_miner: 추출기 1 개
n_miners: 추출기 <amount>개
limited_items: <max_throughput>개로 제한됨
limited_items: <max_throughput>까지가 한계임
watermark:
title: 체험판 버전
desc: 정식 버전의 장점을 보려면 여기를 클릭하세요!
@ -510,12 +537,10 @@ buildings:
storyRewards:
reward_cutter_and_trash:
title: 절단기
desc: You just unlocked the <strong>cutter</strong>, which cuts shapes in half
from top to bottom <strong>regardless of its
orientation</strong>!<br><br>Be sure to get rid of the waste, or
otherwise <strong>it will clog and stall</strong> - For this purpose
I have given you the <strong>trash</strong>, which destroys
everything you put into it!
desc: <strong>절단기</strong>가 잠금 해제되었습니다! 절단기는 들어오는 도형이 어떤 모양을 하고 있던 수직으로 잘라
<strong>반으로 나눕니다</strong>!<br><br> 쓰지 않는 도형은 쓰레기로 처리하세요, 그렇지 않으면
<strong>작동을 멈출 것입니다</strong>! 이러한 목적을 위해 <strong>휴지통</strong>도 함께
지급되었습니다. 휴지통에 들어간 것은 모두 파괴됩니다!
reward_rotater:
title: 회전기
desc: <strong>회전기</strong>가 잠금 해제되었습니다! 회전기는 들어오는 도형을 시계 방향으로 90도 회전시켜줍니다.
@ -580,9 +605,8 @@ storyRewards:
기능을 사용할 수 있습니다! (방금 당신이 만든 것입니다.)
no_reward:
title: 다음 레벨
desc: "This level gave you no reward, but the next one will! <br><br> PS: Better
not destroy your existing factory - You'll need <strong>all</strong>
those shapes later to <strong>unlock upgrades</strong>!"
desc: "이번 레벨의 보상은 없네요. 대신 다음 레벨에서 줄겁니다!<br><br> 추신: 기존 공장을 파괴하지는 마세요. 후에
<strong>업그레이드 잠금 해제</strong>되면 <strong>기존의 모든</strong> 도형이 필요합니다!"
no_reward_freeplay:
title: 다음 레벨
desc: 축하드립니다!
@ -625,12 +649,12 @@ storyRewards:
- 평소처럼 게임을 진행합니다.<br><br> 어떤 방식으로든, 재미있게 게임을 플레이해주시길 바랍니다!
reward_wires_painter_and_levers:
title: 전선과 4단 색칠기
desc: "You just unlocked the <strong>Wires Layer</strong>: It is a separate
layer on top of the regular layer and introduces a lot of new
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
desc: "<strong>전선 레이어</strong>가 잠금 해제되었습니다! 전선 레이어는
일반 레이어 위에 존재하는 별도의 레이어로, 이를 통한 다양하고 새로운
메커니즘을 소개하겠습니다!<br><br> 우선 <strong>4단 색칠기</strong>가
잠금 해제되었습니다. 전선 레이어에서 색칠하고 싶은 슬롯에 전선을 연결하세요!
전선 레이어로 전환하려면 <strong>E</strong> 키를 누르세요. <br><br>
추신: 설정에서 <strong>힌트를 활성화</strong>하여 전선 튜토리얼을 활성화하세요!"
reward_filter:
title: 아이템 선별기
desc: <strong>아이템 선별기</strong>가 잠금 해제되었습니다! 전선 레이어의 신호와 일치하는지에 대한 여부로 아이템을 위쪽
@ -773,14 +797,15 @@ settings:
title: 화면 가장자리 패닝
description: 커서를 화면 가장자리로 옮기면 스크롤되어 지도를 이동할 수 있습니다. 스크롤 속도는 이동 속도 설정에 따릅니다.
zoomToCursor:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
title: 커서를 기준으로 줌
description: 활성화할 경우 화면 줌 인 아웃이 마우스 커서가 있는 지점을 기준이 되며, 아닐 경우 화면 중앙이 기준이 됩니다.
mapResourcesScale:
title: 지도 자원 크기
description: 지도를 축소할 때 나타나는 도형의 크기를 제어합니다.
rangeSliderPercentage: <amount> %
keybindings:
title: 조작법
hint: "Tip: Be sure to make use of CTRL, SHIFT and ALT! They enable different
placement options."
hint: "팁: CTRL, SHIFT, ALT를 적절히 사용하세요! 건물을 배치할 때 유용합니다."
resetKeybindings: 초기화
categoryLabels:
general: 애플리케이션
@ -829,7 +854,7 @@ keybindings:
exportScreenshot: 공장 전체를 이미지로 내보내기
mapMoveFaster: 더 빠르게 움직이기
lockBeltDirection: 벨트 계획기 활성화
switchDirectionLockSide: "Planner: Switch side"
switchDirectionLockSide: "계획기: 방향 바꾸기"
pipette: 피펫
menuClose: 메뉴 닫기
switchLayers: 레이어 전환
@ -848,7 +873,7 @@ keybindings:
analyzer: 도형 분석기
comparator: 비교기
item_producer: 아이템 생성기 (샌드박스)
copyWireValue: "Wires: Copy value below cursor"
copyWireValue: "전선: 커서 아래 값 복사"
backwardsModifier: "Modifier: Cycle backwards"
about:
title: 게임 정보
@ -868,7 +893,7 @@ changelog:
demo:
features:
restoringGames: 게임 세이브 파일 복원 하기
importingGames: 게임 세이브 파일 불러오기
importingGames: 게임 세이브 파일 가져오기
oneGameLimit: 게임 세이브 파일 최대 1개
customizeKeybindings: 조작법 설정하기
exportingBase: 공장 전체를 이미지로 내보내기
@ -892,8 +917,7 @@ tips:
- 최대 레벨에서, 한 줄의 벨트를 채우기 위해 다섯 개의 추출기가 필요합니다.
- 터널을 잊지 마세요!
- 완벽한 효율성을 위해 굳이 아이템을 균등하게 배분할 필요는 없습니다.
- Holding <b>SHIFT</b> will activate the belt planner, letting you place
long lines of belts easily.
- <b>SHIFT</b>키를 누르면 벨트 계획기가 활성화되어 긴 길이의 벨트 한 줄을 쉽게 배치할 수 있습니다.
- 절단기는 들어오는 도형과 배치된 절단기의 방향에 관계 없이, 언제나 수직으로 자릅니다.
- 흰색은 세 가지의 색소를 혼합해야 합니다.
- 저장고의 양쪽 출력 중 왼쪽 출력이 가장 우선됩니다.

View File

@ -197,6 +197,14 @@ dialogs:
renameSavegame:
title: Rename Savegame
desc: You can rename your savegame here.
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: Move
@ -291,6 +299,30 @@ ingame:
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."
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
colors:
red: Red
green: Green
@ -694,7 +726,8 @@ storyRewards:
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Item Filter
desc: You unlocked the <strong>Item Filter</strong>! It will route items either
@ -864,6 +897,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: Keybindings

View File

@ -2,27 +2,28 @@ steamPage:
shortText: shapez.io is een spel dat draait om het bouwen van fabrieken voor het
produceren en automatiseren van steeds complexere vormen in een oneindig
groot speelveld.
discordLinkShort: Officiële Discord
discordLinkShort: Officiële Discord server
intro: >-
Shapez.io is een spel waarin je fabrieken moet bouwen voor de
automatische productie van geometrische vormen.
Naarmate het spel vordert, worden de vormen complexer, en moet je uitbreiden in het oneindige speelveld.
En als dat nog niet genoeg is moet je ook nog eens steeds me produceren om aan de vraag te kunnen voldoen. Het enige dat helpt is uitbreiden!
En als dat nog niet genoeg is moet je ook nog eens steeds meer produceren om aan de vraag te kunnen voldoen. Het enige dat helpt is uitbreiden!
Ondanks het feit dat je in het begin alleen vormen maakt, komt er het punt waarop je ze moet kleuren. Deze kleuren moet je vinden en mengen!
Door het spel op Steam te kopen kun je de volledige versie spelen. Je kunt echter ook een demo versie spelen op shapez.io en later beslissen.
Door het spel op Steam te kopen kun je de volledige versie spelen. Je kunt echter ook een demo versie spelen op shapez.io en later beslissen
om over te schakelen zonder voortgang te verliezen.
title_advantages: Standalone Voordelen
advantages:
- <b>12 Nieuwe Levels</b> met een totaal van 26 levels
- <b>18 Nieuwe Gebouwen</b> voor een volledig geautomatiseerde fabriek!
- <b>20 Upgrade Levels</b> voor vele speeluren!
- <b>Draden Update</b> voor een volledig nieuwe dimensie!
- <b>Dark Mode</b>!
- Ongelimiteerde Saves
- Ongelimiteerde Markers
- <b>Dark Mode</b> Donkere modus!
- Oneindig veel werelden.
- Oneindig veel Markers
- Help mij! ❤️
title_future: Geplande Content
planned:
@ -40,7 +41,7 @@ steamPage:
roadmap: Roadmap
subreddit: Subreddit
source_code: Source code (GitHub)
translate: Help vertalen
translate: Hulp met vertalen
text_open_source: >-
Iedereen mag meewerken. Ik ben actief betrokken in de community en
probeer alle suggesties en feedback te beoordelen als dat nodig is.
@ -56,9 +57,9 @@ global:
millions: M
billions: B
trillions: T
infinite: inf
infinite:
time:
oneSecondAgo: één seconde geleden
oneSecondAgo: een seconde geleden
xSecondsAgo: <x> seconden geleden
oneMinuteAgo: een minuut geleden
xMinutesAgo: <x> minuten geleden
@ -86,12 +87,12 @@ mainMenu:
importSavegame: Importeren
openSourceHint: Dit spel is open source!
discordLink: Officiële Discord-server (Engelstalig)
helpTranslate: Help met vertalen!
helpTranslate: Help ons met vertalen!
browserWarning: Sorry, maar dit spel draait langzaam in je huidige browser! Koop
de standalone versie of download chrome voor de volledige ervaring.
savegameLevel: Level <x>
savegameLevelUnknown: Onbekend Level
continue: Verder
continue: Ga verder
newGame: Nieuw Spel
madeBy: Gemaakt door <author-link>
subreddit: Reddit
@ -119,10 +120,10 @@ dialogs:
title: Het spel is kapot
text: "Het laden van je savegame is mislukt:"
confirmSavegameDelete:
title: Bevestig verwijderen
text: Are you sure you want to delete the following game?<br><br>
'<savegameName>' at level <savegameLevel><br><br> This can not be
undone!
title: Bevestig het verwijderen
text: Ben je zeker dat je het volgende spel wil verwijderen?<br><br>
'<savegameName>' op niveau <savegameLevel><br><br> Dit kan niet ongedaan worden
gemaakt!
savegameDeletionError:
title: Verwijderen mislukt
text: "Het verwijderen van de savegame is mislukt:"
@ -177,9 +178,9 @@ dialogs:
van lopende banden om te draaien wanneer je ze plaatst.<br>"
createMarker:
title: Nieuwe markering
desc: Give it a meaningful name, you can also include a <strong>short
key</strong> of a shape (Which you can generate <link>here</link>)
titleEdit: Edit Marker
desc: Geef het een nuttige naam, Je kan ook een <strong>snel
toets</strong> van een vorm gebruiken (die je <link>here</link> kan genereren).
titleEdit: Bewerk markering
markerDemoLimit:
desc: Je kunt maar twee markeringen plaatsen in de demo. Koop de standalone voor
een ongelimiteerde hoeveelheid markeringen!
@ -197,13 +198,20 @@ dialogs:
desc: Je kunt het je niet veroorloven om de selectie te plakken! Weet je zeker
dat je het wil knippen?
editSignal:
title: Set Signal
title: Stel het signaal in.
descItems: "Kies een ingesteld item:"
descShortKey: ... of voer de <strong>short key</strong> van een vorm (Die je
<link>hier</link> kunt vinden) in.
descShortKey: ... of voer de <strong>hotkey</strong> in van een vorm (Die je
<link>hier</link> kunt vinden).
renameSavegame:
title: Hernoem opgeslagen spel
desc: Geef je opgeslagen spel een nieuwe naam.
tutorialVideoAvailable:
title: Tutorial Beschikbaar
desc: Er is een tutorial video beschikbaar voor dit level! Zou je het willen bekijken?
tutorialVideoAvailableForeignLanguage:
title: Tutorial Available
desc: Er is een tutorial beschikbaar voor dit level, maar het is alleen
beschikbaar in het Engels. Zou je het toch graag kijken?
ingame:
keybindingsOverlay:
moveMap: Beweeg speelveld
@ -232,8 +240,8 @@ ingame:
speed: Snelheid
range: Bereik
storage: Opslag
oneItemPerSecond: 1 voorwerp / s
itemsPerSecond: <x> voorwerpen / s
oneItemPerSecond: 1 voorwerp/s
itemsPerSecond: <x> voorwerpen/s
itemsPerSecondDouble: (x2)
tiles: <x> tegels
levelCompleteNotification:
@ -265,9 +273,9 @@ ingame:
description: Geeft alle vormen weer die in de HUB worden bezorgd.
noShapesProduced: Er zijn nog geen vormen geproduceerd.
shapesDisplayUnits:
second: <shapes> / s
minute: <shapes> / m
hour: <shapes> / h
second: <shapes>/s
minute: <shapes>/m
hour: <shapes>/h
settingsMenu:
playtime: Speeltijd
buildingsPlaced: Gebouwen
@ -299,6 +307,30 @@ ingame:
en lopende banden om het doel sneller te behalen.<br><br>Tip:
Houd <strong>SHIFT</strong> ingedrukt om meerdere ontginners te
plaatsen en gebruik <strong>R</strong> om ze te draaien."
2_1_place_cutter: "Plaats nu een <strong>Knipper</strong> om de cirkels in twee te knippen
halves!<br><br> PS: De knipper knipt altijd van <strong>boven naar
onder</strong> ongeacht zijn oriëntatie."
2_2_place_trash: De knipper kan vormen <strong>verstoppen en bijhouden</strong>!<br><br> Gebruik een
<strong>vuilbak</strong> om van het (!) niet
nodige afval vanaf te geraken.
2_3_more_cutters: "Goed gedaan! Plaats nu <strong>2 extra knippers</strong> om dit traag
process te versnellen! <br><br> PS: Gebruik de <strong>0-9
sneltoetsen</strong> om gebouwen sneller te selecteren."
3_1_rectangles: "Laten we nu rechthoeken ontginnen! <strong>Bouw 4
ontginners</strong> en verbind ze met de lever.<br><br> PS:
Houd <strong>SHIFT</strong> Ingedrukt terwijl je lopende banden plaats
om ze te plannen!"
21_1_place_quad_painter: Plaats de <strong>quad painter</strong> en krijg een paar
<strong>cirkels</strong> in <strong>witte</strong> en
<strong>rode</strong> kleur!
21_2_switch_to_wires: Schakel naar de draden laag door te duwen op
<strong>E</strong>!<br><br> <strong>verbind daarna alle
inputs</strong> van de verver met kabels!
21_3_place_button: Mooi! Plaats nu een <strong>schakelaar</strong> en verbind het
met draden!
21_4_press_button: "Druk op de schakelaar om het een <strong>Juist signaal door
te geven</strong> en de verver te activeren.<br><br> PS: Je
moet niet alle inputs verbinden! Probeer er eens 2."
colors:
red: Rood
green: Groen
@ -320,7 +352,7 @@ ingame:
watermark:
title: Demo versie
desc: Klik hier om het spel op Steam te bekijken!
get_on_steam: Get on steam
get_on_steam: Krijg het op Steam
standaloneAdvantages:
title: Koop de volledige versie!
no_thanks: Nee, bedankt!
@ -398,10 +430,10 @@ buildings:
name: Roteerder
description: Draait vormen 90 graden met de klok mee.
ccw:
name: Roteerder (andersom)
name: Roteerder (omgekeerd)
description: Draait vormen 90 graden tegen de klok in.
rotate180:
name: Roteerder (180)
name: Roteerder (180°)
description: Draait vormen 180 graden.
stacker:
default:
@ -435,7 +467,7 @@ buildings:
name: Vuilnisbak
description: Accepteert input van alle kanten en vernietigt het. Voor altijd.
hub:
deliver: Lever
deliver: Lever in
toUnlock: om te ontgrendelen
levelShortcut: LVL
endOfDemo: End of Demo
@ -458,11 +490,11 @@ buildings:
name: Samenvoeger
description: Voeg 2 lopende banden samen.
splitter:
name: Splitter (compact)
description: Split een lopende band in tweeën.
name: Splitser (compact)
description: Splits een lopende band in tweeën.
splitter-inverse:
name: Splitter
description: Split een lopende band in tweeën.
name: Splitser
description: Splits een lopende band in tweeën.
storage:
default:
name: Opslag
@ -485,18 +517,18 @@ buildings:
default:
name: AND poort
description: Zend een 1 uit als beide invoeren hetzelfde zijn. (Kan een vorm,
kleur of boolean (1 / 0) zijn)
kleur of boolean (1/0) zijn)
not:
name: NOT poort
description: Zend een 1 uit als de invoer een 0 is.
xor:
name: XOR poort
description: Zend een 1 uit als de invoeren niet hetzelfde zijn. (Kan een vorm,
kleur of boolean (1 / 0) zijn)
kleur of boolean (1/0) zijn)
or:
name: OR gate
name: OR poort
description: Zend een 1 uit als de invoeren wel of niet hetzelfde zijn, maar
niet uit zijn. (Kan een vorm, kleur of boolean (1 / 0) zijn)
niet uit zijn. (Kan een vorm, kleur of boolean (1/0) zijn)
transistor:
default:
name: Transistor
@ -513,7 +545,7 @@ buildings:
default:
name: Scherm
description: Verbind een signaal met het scherm om de soort weer te geven. Kan
een vorm, kleur of boolean (1 / 0) zijn.
een vorm, kleur of boolean (1/0) zijn.
reader:
default:
name: Lopende band lezer
@ -528,7 +560,7 @@ buildings:
default:
name: Vergelijker
description: Zend 1 uit als beiden invoeren gelijk zijn, kunnen vormen, kleuren
of booleans (1 / 0) zijn
of booleans (1/0) zijn
virtual_processor:
default:
name: Virtuele Snijder
@ -555,12 +587,12 @@ buildings:
storyRewards:
reward_cutter_and_trash:
title: Vormen Knippen
desc: You just unlocked the <strong>cutter</strong>, which cuts shapes in half
from top to bottom <strong>regardless of its
orientation</strong>!<br><br>Be sure to get rid of the waste, or
otherwise <strong>it will clog and stall</strong> - For this purpose
I have given you the <strong>trash</strong>, which destroys
everything you put into it!
desc: Je hebt juist de <strong>knipper</strong> ontgrendeld, die vormen in de helft
kan knippen van boven naar onder <strong>ongeacht zijn rotatie
</strong>!<br><br>Wees zeker dat je het afval weggooit, want
anders <strong>zal het vastlopen</strong> - Voor deze reden
heb ik je de <strong>vuilbak</strong> gegeven, die alles
vernietigd wat je erin laat stromen!
reward_rotater:
title: Roteren
desc: De <strong>roteerder</strong> is ontgrendeld - Het draait vormen 90 graden
@ -585,10 +617,10 @@ storyRewards:
worden dan wordt het rechtervoorwerp <strong>boven op</strong> het
linker geplaatst!
reward_splitter:
title: Splitter/samenvoeger
desc: You have unlocked a <strong>splitter</strong> variant of the
<strong>balancer</strong> - It accepts one input and splits them
into two!
title: Splitser/samenvoeger
desc: Je hebt de <strong>splitser</strong> ontgrendeld, een variant van de
<strong>samenvoeger</strong> - Het accepteert 1 input en verdeelt het
in 2!
reward_tunnel:
title: Tunnel
desc: De <strong>tunnel</strong> is ontgrendeld - Je kunt nu voorwerpen onder
@ -601,15 +633,15 @@ storyRewards:
wisselen</strong>!
reward_miner_chainable:
title: Ketting-ontginner
desc: "You have unlocked the <strong>chained extractor</strong>! It can
<strong>forward its resources</strong> to other extractors so you
can more efficiently extract resources!<br><br> PS: The old
extractor has been replaced in your toolbar now!"
desc: "Je hebt de <strong>Ketting-ontginner</strong> ontgrendeld! Het kan
<strong>zijn materialen ontginnen</strong> via andere ontginners zodat je
meer materialen tegelijkertijd kan ontginnen!<br><br> PS: De oude
ontginner is vervangen in je toolbar!"
reward_underground_belt_tier_2:
title: Tunnel Niveau II
desc: You have unlocked a new variant of the <strong>tunnel</strong> - It has a
<strong>bigger range</strong>, and you can also mix-n-match those
tunnels now!
desc: Je hebt een nieuwe variant van de <strong>tunnel</strong> ontgrendeld. - Het heeft een
<strong>groter bereik</strong>, en je kan nu ook die tunnels mixen
over en onder elkaar!
reward_cutter_quad:
title: Quad Knippen
desc: Je hebt een variant van de <strong>knipper</strong> ontgrendeld - Dit
@ -621,18 +653,18 @@ storyRewards:
tegelijk</strong> met één kleur in plaats van twee!
reward_storage:
title: Opslagbuffer
desc: You have unlocked the <strong>storage</strong> building - It allows you to
store items up to a given capacity!<br><br> It priorities the left
output, so you can also use it as an <strong>overflow gate</strong>!
desc: Je hebt een variant van de <strong>opslag</strong> ontgrendeld - Het laat je toe om
vormen op te slagen tot een bepaalde capaciteit!<br><br> Het verkiest de linkse
output, dus je kan het altijd gebruiken als een <strong>overloop poort</strong>!
reward_freeplay:
title: Vrij spel
desc: You did it! You unlocked the <strong>free-play mode</strong>! This means
that shapes are now <strong>randomly</strong> generated!<br><br>
Since the hub will require a <strong>throughput</strong> from now
on, I highly recommend to build a machine which automatically
delivers the requested shape!<br><br> The HUB outputs the requested
shape on the wires layer, so all you have to do is to analyze it and
automatically configure your factory based on that.
desc: Je hebt het gedaan! Je hebt de <strong>free-play modus</strong> ontgrendeld! Dit betekend
dat vormen nu <strong>willekeurig</strong> gegenereerd worden!<br><br>
Omdat de hub vanaf nu een <strong>bepaald aantal vormen per seconden</strong> nodig heeft,
Raad ik echt aan een machine te maken die automatisch
de juiste vormen genereert!<br><br> De HUB geeft de vorm die je nodig hebt
op de tweede laag met draden, dus alles wat je moet doen is dat analyseren
en je fabriek dat automatisch laten maken op basis van dat.
reward_blueprints:
title: Blauwdrukken
desc: Je kunt nu delen van je fabriek <strong>kopiëren en plakken</strong>!
@ -653,9 +685,9 @@ storyRewards:
uitgebereid in de standalone!
reward_balancer:
title: Verdeler
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!
desc: De multifunctionele <strong>verdeler</strong> is nu ontgrendeld - Het kan
gebruikt worden om grotere <strong>te knippen en plakken</strong> vormen op meerdere
lopende banden te zetten
reward_merger:
title: Compacte samenvoeger
desc: Je hebt een variant op de <strong>samenvoeger</strong> van de
@ -672,17 +704,17 @@ storyRewards:
je een item op de band 180 graden draaien!
reward_display:
title: Scherm
desc: "You have unlocked the <strong>Display</strong> - Connect a signal on the
wires layer to visualize it!<br><br> PS: Did you notice the belt
reader and storage output their last read item? Try showing it on a
display!"
desc: "Je hebt het <strong>scherm</strong> ontgrendeld - Verbind een signaal met de
laag van draden om het te visualiseren!<br><br> PS: Heb je gezien dat de lopende band
lezer en opslag hun laatste vorm weergeven? Probeer het te tonen op
een scherm!"
reward_constant_signal:
title: Constante Signaal
desc: Je hebt het <strong>constante signaal</strong> vrijgespeeld op de kabel
dimensie! Dit gebouw is handig in samenwerking met <strong>item
filters</strong>.<br><br> Het constante signaal kan een
<strong>vorm</strong>, <strong>kleur</strong> of
<strong>boolean</strong> (1 / 0) zijn.
<strong>boolean</strong> (1/0) zijn.
reward_logic_gates:
title: Logische poorten
desc: Je hebt de <strong>logische poorten</strong> vrijgespeeld! Misschien word
@ -691,28 +723,29 @@ storyRewards:
uitvoeren.<br><br> Als bonus krijg je ook nog een
<strong>transistor</strong> van mij!
reward_virtual_processing:
title: Virtual Processing
desc: I just gave a whole bunch of new buildings which allow you to
<strong>simulate the processing of shapes</strong>!<br><br> You can
now simulate a cutter, rotater, stacker and more on the wires layer!
With this you now have three options to continue the game:<br><br> -
Build an <strong>automated machine</strong> to create any possible
shape requested by the HUB (I recommend to try it!).<br><br> - Build
something cool with wires.<br><br> - Continue to play
regulary.<br><br> Whatever you choose, remember to have fun!
title: VIrtuele verwerking
desc: Ik heb juist een hele hoop nieuwe gebouwen toegevoegd die je toetstaan om
<strong>het process van vormen te stimuleren</strong>!<br><br> Je kan
nu de knipper, draaier, stapelaar en meer op de dradenlaag stimuleren!
Met dit heb je nu 3 opties om verder te gaan met het spel:<br><br> -
Bouw een <strong>automatische fabriek</strong> om eender welke mogelijke
vorm te maken gebraagd door de HUB (Ik raad aan dit te proberen!).<br><br> - Bouw
iets cool met draden.<br><br> - Ga verder met normaal
spelen.<br><br> Wat je ook kiest, onthoud dat je plezier hoort te hebben!
reward_wires_painter_and_levers:
title: Wires & Quad Painter
desc: "You just unlocked the <strong>Wires Layer</strong>: It is a separate
layer on top of the regular layer and introduces a lot of new
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
desc: "Je hebt juist de <strong>draden laag</strong> ontgrendeld: Het is een aparte
laag boven op de huidige laag en introduceert heel veel nieuwe
manieren om te spelen!<br><br> Voor het begin heb ik voor jou de <strong>Quad
Painter</strong> ontgrendeld - Verbind de gleuf waarin je wilt verven op
de draden laag!<br><br> Om over te schakelen naar de draden laag, Duw op
<strong>E</strong>. <br><br> PS: <strong>Zet hints aan</strong> in
de instellingen om de draden tutorial te activeren!"
reward_filter:
title: Item Filter
desc: Je hebt de <strong>Item Filter</strong> vrijgespeeld! Items worden naar
rechts of naar boven gestuurd, afhankelijk van de invoer.<br><br> Er
kan ook een boolean (1 / 0) worden ingevoerd om de filter in en uit
kan ook een boolean (1/0) worden ingevoerd om de filter in en uit
te schakelen.
reward_demo_end:
title: Einde van de Demo
@ -723,10 +756,10 @@ settings:
general: Algemeen
userInterface: Opmaak
advanced: Geavanceerd
performance: Performance
performance: Prestatie
versionBadges:
dev: Ontwikkeling
staging: Staging
staging: Positie
prod: Productie
buildDate: <at-date> gebouwd
labels:
@ -766,12 +799,12 @@ settings:
description: Wanneer dit aan staat wordt alle muziek uitgeschakeld.
theme:
title: Donkere modus
description: Kies de gewenste weergave (licht / donker).
description: Kies de gewenste weergave (licht/donker).
themes:
dark: Donker
light: Licht
refreshRate:
title: Simulation Target
title: Simulatie doel
description: Wanneer je een 144 hz monitor hebt, verander de refresh rate hier
zodat het spel naar behoren weer blijft geven. Dit verlaagt
mogelijk de FPS als je computer te traag is.
@ -835,11 +868,11 @@ settings:
laatst geplaatst hebt. Dit kan handig zijn wanneer je vaak
tussen verschillende soorten gebouwen wisselt.
soundVolume:
title: Sound Volume
description: Set the volume for sound effects
title: Geluidsvolume
description: Stel het volume voor geluidseffecten in.
musicVolume:
title: Music Volume
description: Set the volume for music
title: Muziekvolume
description: Stel het volume voor muziek in.
lowQualityMapResources:
title: Lage kwaliteit van resources
description: Versimpeldde resources op de wereld wanneer ingezoomd om de
@ -878,9 +911,13 @@ settings:
Plaats de cursor boven, rechts, links of onder om daar naartoe
te bewegen.
zoomToCursor:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
title: Zoom naar de Muis
description: "Wanneer geactiveert: de zoom zal gebeuren in de richting van je
muispositie, anders in het midden van het scherm."
mapResourcesScale:
title: Kaartbronnen schaal
description: Controleert de grote van de vormen op het map overzicht (wanneer je
uitzoomt).
rangeSliderPercentage: <amount> %
keybindings:
title: Sneltoetsen
@ -976,7 +1013,7 @@ demo:
restoringGames: Savegames terughalen
importingGames: Savegames importeren
oneGameLimit: Gelimiteerd tot één savegame
customizeKeybindings: Custom sneltoetsen
customizeKeybindings: Aangepaste sneltoetsen
exportingBase: Exporteer volledige basis als afbeelding
settingNotAvailable: Niet beschikbaar in de demo.
tips:

View File

@ -203,6 +203,14 @@ dialogs:
renameSavegame:
title: Rename Savegame
desc: You can rename your savegame here.
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: Beveg
@ -297,6 +305,30 @@ ingame:
og belter for å nå målet raskere.<br><br>Tips: Hold
<strong>SHIFT</strong> for å plassere flere utdragere, og bruk
<strong>R</strong> for å rotere dem."
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
colors:
red: Rød
green: Grønn
@ -708,7 +740,8 @@ storyRewards:
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Item Filter
desc: You unlocked the <strong>Item Filter</strong>! It will route items either
@ -880,6 +913,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: Hurtigtaster

View File

@ -206,6 +206,14 @@ dialogs:
renameSavegame:
title: Zmień nazwę zapisu gry
desc: Tutaj możesz zmienić nazwę zapisu gry.
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: Ruch
@ -315,6 +323,30 @@ ingame:
szybciej.<br><br>Porada: Przytrzymaj <strong>SHIFT</strong>, by
postawić wiele ekstraktorów. Naciśnij <strong>R</strong>, by je
obracać.'
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
connectedMiners:
one_miner: 1 ekstraktor
n_miners: <amount> ekstraktorów
@ -717,12 +749,13 @@ storyRewards:
bawić!
reward_wires_painter_and_levers:
title: Przewody i poczwórny malarz
desc: "Właśnie odblokowałeś <strong>Warstwę przewodów</strong>: Jest to osobna
warstwa położnoa na istniejącej, która wprowadza wiele nowych
mechanik! <br><br> Na początek dałem ci <strong>Poczwórnego
Malarza</strong> - Podłącz ćwiartki, które chcesz pomalować na
warstwie przewodów!<br><br> By przełączyć się na warstwę przewodów,
wciśnij <strong>E</strong>."
desc: "You just unlocked the <strong>Wires Layer</strong>: It is a separate
layer on top of the regular layer and introduces a lot of new
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Filtr przedmiotów
desc: Właśnie odblokowałeś <strong>Filtr Przedmiotów</strong>! Będzie on
@ -892,6 +925,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: Klawiszologia

View File

@ -198,6 +198,14 @@ dialogs:
renameSavegame:
title: Renomear Save
desc: Você pode renomear seu save aqui.
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: Mover
@ -307,6 +315,30 @@ ingame:
esteiras para concluir o objetivo mais rapidamente.<br><br>Dica,
segure <strong>SHIFT</strong> para colocar vários extratores e
use <strong>R</strong> para girá-los.
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
connectedMiners:
one_miner: 1 Extrator
n_miners: <amount> Extratores
@ -707,12 +739,13 @@ storyRewards:
lembre de se divertir!
reward_wires_painter_and_levers:
title: Fios e Pintor Quádruplo
desc: "Você acabou de desbloquear o <strong>Plano de Fiação</strong>: Ele é um
plano separado no topo do plano comum e introduz um monte de novas
mecânicas!<br><br> Para começar eu te dou o <strong>Pintor
Quádruplo</strong> - Conecte a entrada que você quer que seja
colorida com o plano da fiação!<br><br> Para mudar de plano, aperte
<strong>E</strong>."
desc: "You just unlocked the <strong>Wires Layer</strong>: It is a separate
layer on top of the regular layer and introduces a lot of new
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Filtro de Itens
desc: Você desbloqueou o <strong>Filtro de Itens</strong>! Ele irá rotear os
@ -889,6 +922,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: Controles

View File

@ -206,6 +206,14 @@ dialogs:
renameSavegame:
title: Renomear Savegame
desc: Podes renomear o teu savegame aqui.
tutorialVideoAvailable:
title: Tutorial Disponível
desc: Existe um vídeo de tutorial disponível para este nível! Gostarias de
o ver?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: Mover
@ -300,6 +308,30 @@ ingame:
e tapetes para atingir o objetivo mais rapidamente.<br><br>Dica:
Pressiona <strong>SHIFT</strong> para colocar vários extratores,
e usa <strong>R</strong> para os rodar."
2_1_place_cutter: "Agora coloca um <strong>Cortador</strong> para cortares os circulos
em duas metades!<br><br> PS: O cortador corta sempre <strong>de cima para
baixo</strong> independentemente da sua orientação"
2_2_place_trash: O cortador pode <strong>encravar e parar</strong>!<br><br> Usa
um <strong>lixo</strong> para de livrares do atual (!) não
é necessário desperdício.
2_3_more_cutters: "Bom trabalho! Agora coloca<strong>mais 2 cortadores</strong> para acelerades
este progresso lento!<br><br> PS: Usa os <strong>atalhos
0-9</strong> para acederes às contruções mais rapidamente!"
3_1_rectangles: "Agora vamos extrair alguns retângulos! <strong>Constrói 4
extratores</strong> e conecta-os ao edifício central.<br><br> PS:
Pressiona <strong>SHIFT</strong> enquanto arrastas um tapete rolante
para ativares o planeador de tapetes!"
21_1_place_quad_painter: Coloca o <strong>pintor quádruplo</strong> e arranja alguns
<strong>círculos</strong>, cores <strong>branca</strong> e
<strong>vermelha</strong>!
21_2_switch_to_wires: Troca para a camada de fios pressionando
<strong>E</strong>!<br><br> A seguir <strong>conecta todas as quatro
entradas</strong> do pintor com fios!
21_3_place_button: Fantástico! Agora coloca o <strong>Interruptor</strong> e conecta-o
com os fios!
21_4_press_button: "Pressiona o interruptor para que ele <strong>emita um
sinal verdadeiro</strong>, isso irá ativar o pintor.<br><br> PS: Tu
não tens de conectar todas as entradas! Tenta conectar apenas duas."
colors:
red: Vermelho
green: Verde
@ -719,9 +751,10 @@ storyRewards:
desc: "Desbloquaste a <strong>Camada de Fios</strong>: É uma camada separada no
topo da camada normal e introduz um monte de novas
mecânicas!<br><br> Para o inicio eu dei-te o <strong>Pintor
Quádruplo</strong> - Conecta as entradasque queres pintar na camada
Quádruplo</strong> - Conecta as entradas que queres pintar na camada
de fios!<br><br> Para trocares para a camada de fios, pressiona a
tecla <strong>E</strong>."
tecla <strong>E</strong>. <br><br> PS: <strong>Ativa as dicas</strong> nas
definições para ativares o tutorial de fios!"
reward_filter:
title: Filtro de Itens
desc: Desbloquaste o <strong>Filtro de Itens</strong>! Vai mandar itens ou para
@ -897,6 +930,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: Atalhos
@ -996,22 +1033,22 @@ demo:
exportingBase: Exportar base como uma imagem
settingNotAvailable: Não disponível no Demo.
tips:
- O edifício central aceita qualquer entrada, não apenas a forma atual!
- O edifício central aceita qualquer entrada, não apenas a da forma atual!
- Tem a certeza que as tuas fábricas são modulares - vai valer a pena!
- Não construas demasiado perto do edifício, ou vai ser um grande caos!
- Não construas demasiado perto do edifício, ou será um grande caos!
- Se empilhar não funciona, tenta trocar as entradas.
- Podes alternar a direção do planeador de tapete rolante ao pressionar
<b>R</b>.
- Ao segurar <b>CTRL</b> podes arrastar tapetes rolantes sem auto-orientação.
- Ao pressionares <b>CTRL</b> podes arrastar tapetes rolantes sem auto-orientação.
- Os rácios continuam os mesmos, desde que todos os upgrades estejam no
mesmo Nível.
- Execução em série é mais eficiente que em paralelo.
- Vais desbloquear mais variações de edifícios mais tarde no jogo!
- Podes usar <b>T</b> para trocar entre as diferentes variantes.
- Vais desbloquear mais variações de edifícios, mais tarde no jogo!
- Podes usar <b>T</b> para trocares entre as diferentes variantes.
- Simetria é a solução!
- Podes entrelaçar diferentes níveis de túneis.
- Podes entrelaçar diferentes tipos de túneis.
- Tenta construir fábricas compactas - vai valer a pena!
- O pintor tem uma variante espelhada que podes selectionar com <b>T</b>
- O pintor tem uma variante espelhada que podes selecionar com <b>T</b>
- Ter os rácios de edifícios corretos vai maximizar a eficiência.
- No nível máximo, 5 extratores vão encher um tapete.
- Não te esqueças dos túneis!
@ -1029,31 +1066,31 @@ tips:
- As formas que estão mais longes do edifício central são mais complexas.
- As Máquinas têm uma velocidade limitada, divide-as para eficiência máxima.
- Usa balanceadores para maximizar a tua eficiência.
- Organização é importante. Tenta não cruzar tapetes demasiado.
- Planeja antecipadamente, ou vai ser um grande caos!
- Não removas as tuas fábricas antigas! Vais precisar delas para desbloquear
- Organização é importante. Tenta não cruzar demasiados tapetes.
- Planeia antecipadamente, ou vai ser um grande caos!
- Não removas as tuas fábricas antigas! Vais precisar delas para desbloqueares
upgrades.
- Tenta superar o nível 18 sozinho sem procurar ajuda!
- Tenta superar o nível 20 sozinho sem procurar ajuda!
- Não complicas as coisas, tenta continuar simples e irás muito longe.
- Talvez precises de reusar fábricas mais tarde no jogo. Planeia as tuas
- Talvez precises de reutilizar fábricas, mais tarde no jogo. Planeia as tuas
fábricas para serem reutilizáveis.
- Às vezes, podes encontrar uma forma necessária no mapa sem criar-la com
empilhadoras.
- Moinhos de vento e cataventos completos nunca aparecem naturalmente.
- Pinta as tuas formas antes de cortar-las para eficiência máxima.
- Com módulos, o espaço é apenas uma percepção; uma preocupação para pessoas
- Pinta as tuas formas antes de as cortares para eficiência máxima.
- Com módulos, o espaço é apenas uma perceção; uma preocupação para pessoas
mortais.
- Faz uma fábrica de diagramas separada. São importantes para módulos.
- Dá uma olhada ao misturador de cores, e as tuas questões serão respondidas.
- Use <b>CTRL</b> + Clique para selecionar uma área.
- Usa <b>CTRL</b> + Clique para selecionar uma área.
- Construir demasiado perto do edifício central pode ficar no caminho de
projetos futuros.
- O ícone de alfinete perto duma forma na lista de upgrades vai afixar-la ao
- O ícone de alfinete perto duma forma na lista de upgrades vai afixa-la ao
ecrã.
- Junta todas as cores primárias juntas para fazer branco!
- Junta todas as cores primárias para fazeres branco!
- Tu tens um mapa infinito, não limites a tua fábrica, expande!
- Tenta também Factorio! É o meu jogo favorito.
- O cortador quádruplo corta no sentido dos ponteiros começando no canto
- O cortador quádruplo corta no sentido dos ponteiros do relógio começando no canto
superior direito!
- Podes fazer download dos teus savegames no menu principal!
- Este jogo tem muitos atalhos de teclado úteis! Não te esqueças de
@ -1064,4 +1101,4 @@ tips:
- Para limpar tapetes, corta a área e cola-a na mesma localização.
- 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 desafixar-la.
- Podes clicar numa forma afixada no lado direito para desafixa-la.

View File

@ -204,6 +204,14 @@ dialogs:
renameSavegame:
title: Rename Savegame
desc: You can rename your savegame here.
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: Move
@ -299,6 +307,30 @@ ingame:
rapid.<br><br>Sfat: Ține apăsat <strong>SHIFT</strong> pentru a
plasa mai multe extractoare, și flosește <strong>R</strong>
pentru a le roti."
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
colors:
red: Roșu
green: Verde
@ -710,7 +742,8 @@ storyRewards:
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Item Filter
desc: You unlocked the <strong>Item Filter</strong>! It will route items either
@ -884,6 +917,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: Tastele setate

View File

@ -1,51 +1,51 @@
steamPage:
shortText: shapez.io — это игра о строительстве фабрик для автоматизации
создания и объединения все более сложных фигур на бесконечной карте.
discordLinkShort: Official Discord
discordLinkShort: Официальный Discord сервер
intro: >-
Shapez.io is a relaxed game in which you have to build factories for the
automated production of geometric shapes.
Shapez.io - это спокойная игра о создании фабрик для автоматизации
создания сложных геометрических фигур.
As the level increases, the shapes become more and more complex, and you have to spread out on the infinite map.
По мере управления уровня, фигуры становятся все сложнее, так что придется расширять фабрику засчет бесконечной карты.
And as if that wasn't enough, you also have to produce exponentially more to satisfy the demands - the only thing that helps is scaling!
Если этого мало, то Вам так же придется экспоненциально производить все больше и больше фигур, чтобы удовлетворить потребности Вашей фабрики. Ключ к успеху - расширение!
While you only process shapes at the beginning, you have to color them later - for this you have to extract and mix colors!
Вначале игры Вам понадобится производить только фигуры, однако позже фигуры надо будет окрашивать. Для этого добывайте и смешивайте краски!
Buying the game on Steam gives you access to the full version, but you can also play a demo on shapez.io first and decide later!
title_advantages: Standalone Advantages
Приобретение игры в Steam предоставляет доступ к полной версии игры, но вы можете опробовать демоверсию игры на shapez.io и принять решение позже!
title_advantages: Преимущества полной версии
advantages:
- <b>12 New Level</b> for a total of 26 levels
- <b>18 New Buildings</b> for a fully automated factory!
- <b>20 Upgrade Tiers</b> for many hours of fun!
- <b>Wires Update</b> for an entirely new dimension!
- <b>Dark Mode</b>!
- Unlimited Savegames
- Unlimited Markers
- Support me! ❤️
title_future: Planned Content
- <b>12 новых уровней</b> - всего 26 уровней!
- <b>18 новых построек</b> для полностью автоматизированной фабрики!
- <b>20 стадий улучшения</b> для долгих часов веселья!
- <b>Провода</b> - открывает полноценное новое измерение!
- <b>Темная тема</b>!
- Неограниченные сохранения
- Неограниченные маркеры
- Поддержите меня! ❤️
title_future: Запланированный контент
planned:
- Blueprint Library (Standalone Exclusive)
- Steam Achievements
- Puzzle Mode
- Minimap
- Mods
- Sandbox mode
- ... and a lot more!
title_open_source: This game is open source!
title_links: Links
- Библиотека чертежей (только для Полной версии)
- Достижения Steam
- Режим головоломок
- Мини-карта
- Моды
- Режим песочницы
- ... и многое другое!
title_open_source: Эта игра находится в открытом доступе!
title_links: Ссылки
links:
discord: Official Discord
roadmap: Roadmap
discord: Официальный Discord сервер
roadmap: Планы
subreddit: Subreddit
source_code: Source code (GitHub)
translate: Help translate
source_code: Исходный код (GitHub)
translate: Помочь с переводом
text_open_source: >-
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 board, чтобы ознакомиться с планами на будущее!
global:
loading: Загрузка
error: Ошибка
@ -78,7 +78,7 @@ global:
shift: SHIFT
space: ПРОБЕЛ
demoBanners:
title: Демо-версия
title: Демоверсия
intro: Приобретите полную версию, чтобы разблокировать все возможности!
mainMenu:
play: Играть
@ -96,7 +96,7 @@ mainMenu:
newGame: Новая Игра
madeBy: Создал <author-link>
subreddit: Reddit
savegameUnnamed: Unnamed
savegameUnnamed: Без названия
dialogs:
buttons:
ok: OK
@ -121,9 +121,8 @@ dialogs:
text: Не удалось загрузить сохранение игры.
confirmSavegameDelete:
title: Подтвердите удаление.
text: Are you sure you want to delete the following game?<br><br>
'<savegameName>' at level <savegameLevel><br><br> This can not be
undone!
text: Вы уверены, что хотите удалить это сохранение?<br><br> '<savegameName>' на
уровне <savegameLevel><br><br> Это не может быть отменено!
savegameDeletionError:
title: Ошибка удаления
text: Не удалось удалить сохранение игры.
@ -142,13 +141,13 @@ dialogs:
title: Сброс управления
desc: Настройки управления сброшены до соответствующих значений по умолчанию!
featureRestriction:
title: Демо-версия
title: Демоверсия
desc: Вы попытались получить доступ к функции (<feature>), которая недоступна в
демо-версии. Вы можете приобрести полную версию чтобы пользоваться
демоверсии. Вы можете приобрести полную версию чтобы пользоваться
всеми функциями!
oneSavegameLimit:
title: Лимит сохранений
desc: Вы можете иметь только одно сохранение игры в демо-версии. Пожалуйста,
desc: Вы можете иметь только одно сохранение игры в демоверсии. Пожалуйста,
удалите существующее или приобретите полную версию!
updateSummary:
title: Новое обновление!
@ -177,11 +176,12 @@ dialogs:
Инвертировать направление размещаемых конвейерных лент.<br>"
createMarker:
title: Новый маркер
desc: Give it a meaningful name, you can also include a <strong>short
key</strong> of a shape (Which you can generate <link>here</link>)
desc: Дайте ему значимое название, вы также можете добавить <strong>короткий
ключ</strong> фигуры (Который можно сгенерировать
<link>здесь</link>)
titleEdit: Редактирование маркера
markerDemoLimit:
desc: Вы можете создать только 2 своих маркера в демо-версии. Приобретите полную
desc: Вы можете создать только 2 своих маркера в демоверсии. Приобретите полную
версию для безлимитных маркеров.
massCutConfirm:
title: Подтвердите вырезку
@ -197,13 +197,19 @@ dialogs:
desc: Вы не можете позволить себе вставить эту область! Вы уверены, что хотите
вырезать ее?
editSignal:
title: Set Signal
descItems: "Choose a pre-defined item:"
descShortKey: ... or enter the <strong>short key</strong> of a shape (Which you
can generate <link>here</link>)
title: Установить Сигнал
descItems: "Выберите объект:"
descShortKey: ... или введите <strong>короткий ключ</strong> фигуры (Который
можно сгенерировать <link>здесь</link>)
renameSavegame:
title: Rename Savegame
desc: You can rename your savegame here.
title: Переименовать Сохранение
desc: Здесь вы можете изменить название своего сохранения.
tutorialVideoAvailable:
title: Доступно обучение
desc: Для этого уровня доступно видео-обучение! Посмотрите его?
tutorialVideoAvailableForeignLanguage:
title: Доступно обучение
desc: Для этого уровня доступно видео-обучение, но только на английском языке. Посмотрите его?
ingame:
keybindingsOverlay:
moveMap: Передвижение
@ -212,7 +218,7 @@ ingame:
rotateBuilding: Повернуть постройку
placeMultiple: Поставить несколько
reverseOrientation: Реверсировать направление
disableAutoOrientation: Отключить авто-определение направления
disableAutoOrientation: Отключить автоопределение направления
toggleHud: Переключить HUD
placeBuilding: Разместить постройку
createMarker: Создать маркер
@ -244,7 +250,7 @@ ingame:
notifications:
newUpgrade: Новое улучшение доступно!
gameSaved: Игра сохранена.
freeplayLevelComplete: Level <level> has been completed!
freeplayLevelComplete: Уровень <level> завершён!
shop:
title: Улучшения
buttonUnlock: Улучшить
@ -265,9 +271,9 @@ ingame:
description: Показывает фигуры, которые доставляются в хаб.
noShapesProduced: Фигуры еще не произведены.
shapesDisplayUnits:
second: <shapes> / s
minute: <shapes> / m
hour: <shapes> / h
second: <shapes> / с
minute: <shapes> / м
hour: <shapes> / ч
settingsMenu:
playtime: Игровое время
buildingsPlaced: Постройки
@ -298,6 +304,26 @@ ingame:
конвейеров, чтобы достичь цели быстрее.<br><br>Подсказка:
Удерживайте <strong>SHIFT</strong> чтобы разместить несколько
экстракторов, а <strong>R</strong> чтобы вращать их."
2_1_place_cutter: "Разместите <strong>Резак</strong> для разрезания кругов на две половины!
<br><br> PS: Резак всегда разрезает <strong>сверху вниз</strong> независимо от ориентации."
2_2_place_trash: Резак может <strong>засориться и остановиться</strong>!<br><br> Используйте
<strong>мусорку</strong> что бы избавиться от в данный момент (!) ненужных частей.
2_3_more_cutters: "Хорошая работа! Теперь разместите <strong>ещё 2 резака</strong> что бы ускорить
этот медленный процесс!<br><br> PS: Используйте <strong>клавиши 0-9
</strong> для быстрого доступа к постройкам!"
3_1_rectangles: "Теперь давайте извлечём немного прямоугольников! <strong>Постройте 4
экстрактора</strong>и соедините их с хабом.<br><br> PS:
Удерживайте <strong>SHIFT</strong> во время удерживания конвейера для активации планировщика
конвейеров!"
21_1_place_quad_painter: Разместите <strong>покрасчик для 4 предметов</strong> и получите
<strong>круги</strong>, <strong>белого</strong> и
<strong>красного</strong> цветов!
21_2_switch_to_wires: Переключите слой проводов нажатием клавиши
<strong>E</strong>!<br><br> Потом <strong>соедините все входы</strong> покрасчика кабелями!
21_3_place_button: Отлично! Теперь разместите <strong>Переключатель</strong> и присоедини его проводами!
21_4_press_button: "Нажмите на переключатель что бы заставить его <strong>выдавать истинный сигнал
</strong> и активировать этим покрасчика.<br><br> PS: Не обязательно
соединять все входы! Достаточно двух."
colors:
red: Красный
green: Зеленый
@ -313,41 +339,41 @@ ingame:
empty: Пусто
copyKey: Копировать
connectedMiners:
one_miner: 1 Miner
n_miners: <amount> Miners
limited_items: Limited to <max_throughput>
one_miner: 1 Экстрактор
n_miners: <amount> Экстрактора(-ов)
limited_items: Ограничено до <max_throughput>
watermark:
title: Demo version
desc: Click here to see the Steam version advantages!
get_on_steam: Get on steam
title: Демоверсия
desc: Нажмите сюда, чтобы узнать о преимуществах Steam версии!
get_on_steam: Приобрести в Steam
standaloneAdvantages:
title: Get the full version!
no_thanks: No, thanks!
title: Приобретите полную версию!
no_thanks: Нет, спасибо!
points:
levels:
title: 12 New Levels
desc: For a total of 26 levels!
title: 12 Новых Уровней!
desc: Всего 26 уровней!
buildings:
title: 18 New Buildings
desc: Fully automate your factory!
title: 18 новых Построек!
desc: Полностью автоматизируйте свою фабрику!
savegames:
title: Savegames
desc: As many as your heart desires!
title: Сохранений
desc: Сколько Вашей душе угодно!
upgrades:
title: 20 Upgrade Tiers
desc: This demo version has only 5!
title: 20 стадий улучшений!
desc: В демоверсии всего 5!
markers:
title: Markers
desc: Never get lost in your factory!
title: Маркеров!
desc: Никогда не теряйтесь в своей фабрике!
wires:
title: Wires
desc: An entirely new dimension!
title: Провода!
desc: Полноценное дополнительное измерение!
darkmode:
title: Dark Mode
desc: Stop hurting your eyes!
title: Темная Тема!
desc: Дайте глазам отдохнуть!
support:
title: Support me
desc: I develop it in my spare time!
title: Поддержите меня
desc: Я занимаюсь разработкой в свободное время!
shopUpgrades:
belt:
name: Конвейеры, Разделители & Туннели
@ -387,11 +413,11 @@ buildings:
default:
name: Резак
description: Разрезает фигуры сверху вниз и выводит обе половины. <strong>Если
Вы собираетесь использовать только одну часть, уничтожьте
вы собираетесь использовать только одну часть, уничтожьте
другую, иначе производство остановится!</strong>
quad:
name: Резак (4Вых.)
description: Разрезает фигуры на четыре части. <strong>Если Вы собираетесь
description: Разрезает фигуры на четыре части. <strong>Если вы собираетесь
использовать не все части - уничтожьте оставшиеся, иначе
производство остановится!</strong>
rotater:
@ -402,8 +428,8 @@ buildings:
name: Вращатель (Обр.)
description: Поворачивает фигуры против часовой стрелки на 90 градусов.
rotate180:
name: Rotate (180)
description: Rotates shapes by 180 degrees.
name: Вращатель (180)
description: Поворачивает фигуры на 180 градусов.
stacker:
default:
name: Объединитель
@ -422,9 +448,9 @@ buildings:
description: Красит фигуру из левых входов красителем из перпендикулярного.
quad:
name: Покрасчик (4Вх.)
description: Allows you to color each quadrant of the shape individually. Only
slots with a <strong>truthy signal</strong> on the wires layer
will be painted!
description: Позволяет отдельно окрашивать каждую часть фигуры. Только ячейки с
<strong>положительным сигналом</strong> на слое с проводами
будут окрашены!
mirrored:
name: Покрасчик
description: Красит всю фигуру из левого входа красителем из перпендикулярного.
@ -436,134 +462,139 @@ buildings:
deliver: Доставить
toUnlock: чтобы открыть
levelShortcut: Ур.
endOfDemo: End of Demo
endOfDemo: Конец Демо
wire:
default:
name: Энерг. провод
description: Позволяет транспортировать энергию.
second:
name: Wire
description: Transfers signals, which can be items, colors or booleans (1 / 0).
Different colored wires do not connect.
name: Энерг. провод
description: Передает сигналы, которые могут быть ресурсами, цветами или
логическими значениями (1 / 0). Провода разных цветов не
соединяются.
balancer:
default:
name: Balancer
description: Multifunctional - Evenly distributes all inputs onto all outputs.
name: Балансер
description: Многофункциональный - равномерно распределяет все входы на выходы.
merger:
name: Merger (compact)
description: Merges two conveyor belts into one.
name: Соединитель (компактный)
description: Соединяет две линии ковейера в одну.
merger-inverse:
name: Merger (compact)
description: Merges two conveyor belts into one.
name: Соединитель (компактный)
description: Соединяет две линии ковейера в одну.
splitter:
name: Splitter (compact)
description: Splits one conveyor belt into two.
name: Разделитель (компактный)
description: Разделяет одну линию конвейера на две.
splitter-inverse:
name: Splitter (compact)
description: Splits one conveyor belt into two.
name: Разделитель (компактный)
description: Разделяет одну линию конвейера на две.
storage:
default:
name: Storage
description: Stores excess items, up to a given capacity. Prioritizes the left
output and can be used as an overflow gate.
name: Буферное Хранилище
description: Хранит излишние ресурсы пока есть место. Левый выход в приоритете,
может быть использован как буфер.
wire_tunnel:
default:
name: Wire Crossing
description: Allows to cross two wires without connecting them.
name: Пересечение Проводов
description: Позволяет пересекать провода при этом их не соединяя.
constant_signal:
default:
name: Constant Signal
description: Emits a constant signal, which can be either a shape, color or
boolean (1 / 0).
name: Постоянный Сигнал
description: Издает постоянный сигнал, который может быть ресурсом, цветом или
логическим значением (1 / 0).
lever:
default:
name: Switch
description: Can be toggled to emit a boolean signal (1 / 0) on the wires layer,
which can then be used to control for example an item filter.
name: Переключатель
description: Может быть переключен, чтобы издавать логический сигнал (1 / 0) на
слое с проводами, который может быть использован для управления
Фильтром, например.
logic_gate:
default:
name: AND Gate
description: Emits a boolean "1" if both inputs are truthy. (Truthy means shape,
color or boolean "1")
description: Издает значение "1" если оба входа положительны. (Положительный -
значит ресурс, цвет или логическое значение "1")
not:
name: NOT Gate
description: Emits a boolean "1" if the input is not truthy. (Truthy means
shape, color or boolean "1")
description: Издает значение "1" если вход не положительный. (Положительный -
значит ресурс, цвет или логическое значение "1")
xor:
name: XOR Gate
description: Emits a boolean "1" if one of the inputs is truthy, but not both.
(Truthy means shape, color or boolean "1")
description: Издает значение "1" только один из входов положительный.
(Положительный - значит ресурс, цвет или логическое значение
"1")
or:
name: OR Gate
description: Emits a boolean "1" if one of the inputs is truthy. (Truthy means
shape, color or boolean "1")
transistor:
default:
name: Transistor
description: Forwards the bottom input if the side input is truthy (a shape,
color or "1").
mirrored:
name: Transistor
description: Forwards the bottom input if the side input is truthy (a shape,
color or "1").
description: Издает значение "1" если хотя бы один вход положительный.
(Положительный - значит ресурс, цвет или логическое значение
"1").
filter:
default:
name: Filter
description: Connect a signal to route all matching items to the top and the
remaining to the right. Can be controlled with boolean signals
too.
name: Фильтр
description: Подключите сигнал, чтобы направить все подходящие ресурсы наверх, а
остальные направо. Также контролируемо логическими сигналами.
display:
default:
name: Display
description: Connect a signal to show it on the display - It can be a shape,
color or boolean.
name: Экран
description: Подключите сигнал, чтобы отобразить его на экране. Это может
ресурс, цвет или логическое значение (1 / 0).
reader:
default:
name: Belt Reader
description: Allows to measure the average belt throughput. Outputs the last
read item on the wires layer (once unlocked).
name: Измеритель
description: Позволяет измерять среднюю пропускную способность конвейера.
Отображает последний прошедший ресурс на слое с проводами (когда
разблокировано).
analyzer:
default:
name: Shape Analyzer
description: Analyzes the top right quadrant of the lowest layer of the shape
and returns its shape and color.
name: Анализатор Фигур
description: Анализирует правую верхнюю часть низшего слоя фигуры и возвращает
ее форму и цвет.
comparator:
default:
name: Compare
description: Returns boolean "1" if both signals are exactly equal. Can compare
shapes, items and booleans.
name: Сравнить
description: Возвращает значение "1" если оба сигнала полностью одинаковы. Может
сравнивать фигуры, цвета и логические значения.
virtual_processor:
default:
name: Virtual Cutter
description: Virtually cuts the shape into two halves.
name: Виртуальный Резак
description: Виртуально разрезает фигуру пополам.
rotater:
name: Virtual Rotater
description: Virtually rotates the shape, both clockwise and counter-clockwise.
name: Виртуальный Вращатель
description: Виртуально вращает фигуру как по часовой стрелке, так и против
часовой стрелки.
unstacker:
name: Virtual Unstacker
description: Virtually extracts the topmost layer to the right output and the
remaining ones to the left.
name: Виртуальный Разъединитель
description: Виртуально извлекает самый верхний слой фигуры направо, а все
остальное направо.
stacker:
name: Virtual Stacker
description: Virtually stacks the right shape onto the left.
name: Виртуальный Объединитель
description: Виртуально помещает правый предмет поверх левого.
painter:
name: Virtual Painter
description: Virtually paints the shape from the bottom input with the shape on
the right input.
name: Виртуальный Покрасчик
description: Виртуально окрашивает фигуру из нижнего входа цветом из правого
входа.
item_producer:
default:
name: Item Producer
description: Available in sandbox mode only, outputs the given signal from the
wires layer on the regular layer.
name: Генератор Ресурсов
description: Доступен только в режиме песочницы, производит заданный на слое с
проводами сигнал на обычном слое.
transistor:
default:
name: Транзистор
description: Пропускает предметы только если вход сбоку имеет истинноре значение (фигура,
цвет или "1").
mirrored:
name: Транзистор
description: Пропускает предметы только если вход сбоку имеет истинноре значение (фигура,
цвет или "1").
storyRewards:
reward_cutter_and_trash:
title: Разрезание Фигур
desc: You just unlocked the <strong>cutter</strong>, which cuts shapes in half
from top to bottom <strong>regardless of its
orientation</strong>!<br><br>Be sure to get rid of the waste, or
otherwise <strong>it will clog and stall</strong> - For this purpose
I have given you the <strong>trash</strong>, which destroys
everything you put into it!
desc: Разблокирован <strong>резак</strong>, который разрезает фигуры пополам по
вертикали <strong>независимо от ориентации</strong>!<br><br>Не
забудьте избавляться от излишков, иначе <strong>он забьется и
остановится</strong> - для этого я также открыл для Вас
<strong>мусорку</strong>, которая уничтожает все, что в нее
попадает!
reward_rotater:
title: Вращение
desc: Разблокирован <strong>вращатель</strong>! Он поворачивает фигуры по
@ -586,9 +617,9 @@ storyRewards:
правого входа <strong>наложится</strong> на фигуру из левого!
reward_splitter:
title: Разделитель / Соединитель
desc: You have unlocked a <strong>splitter</strong> variant of the
<strong>balancer</strong> - It accepts one input and splits them
into two!
desc: Разблокирован <strong>разделитель</strong> один из вариантов
<strong>балансера</strong> - он принимает один вход и разделяет его
на два!
reward_tunnel:
title: Туннель
desc: Разблокирован <strong>туннель</strong>! Теперь вы можете транспортировать
@ -600,10 +631,10 @@ storyRewards:
<strong>нажмите 'T', чтобы переключить вариант</strong>!
reward_miner_chainable:
title: Цепной Экстрактор
desc: "You have unlocked the <strong>chained extractor</strong>! It can
<strong>forward its resources</strong> to other extractors so you
can more efficiently extract resources!<br><br> PS: The old
extractor has been replaced in your toolbar now!"
desc: "Разблокирован <strong>цепной экстрактор</strong>! Он может
<strong>передавать свои ресурсы</strong> другим экстракторам, чтобы
вы могли эффективнее извлекать ресурсы!<br><br> PS: Старый
экстрактор был заменен в панели инструментов!"
reward_underground_belt_tier_2:
title: Туннель II
desc: Разблокирован новый вариант <strong>туннеля</strong> с <strong>большей
@ -619,18 +650,19 @@ storyRewards:
одновременно</strong>, потребляя только один краситель вместо двух!
reward_storage:
title: Буферное Хранилище
desc: You have unlocked the <strong>storage</strong> building - It allows you to
store items up to a given capacity!<br><br> It priorities the left
output, so you can also use it as an <strong>overflow gate</strong>!
desc: Разблокировано <strong>буферное хранилище</strong> - оно позволяет хранить
в нем ресурсы пока есть место! <br><br> Левый выход в приоритете,
может быть использован как <strong>буфер</strong>!
reward_freeplay:
title: Свободная игра
desc: You did it! You unlocked the <strong>free-play mode</strong>! This means
that shapes are now <strong>randomly</strong> generated!<br><br>
Since the hub will require a <strong>throughput</strong> from now
on, I highly recommend to build a machine which automatically
delivers the requested shape!<br><br> The HUB outputs the requested
shape on the wires layer, so all you have to do is to analyze it and
automatically configure your factory based on that.
desc: У Вас получилось! Разблокирован <strong>свободный режим</strong>! Это
означает что теперь фигуры будут генерироваться
<strong>случайно</strong>!<br><br> Так как ХАБ отныне будет
требовать определенную <strong>пропускную способность</strong>, я
настоятельно рекомендую построить механизм, автоматически
доставляющий запрашиваемую фигуру!<br><br> ХАБ выводит запрашиваемую
фигуру на слое с проводами, так что все, что необходимо сделать, -
это проанализировать ее и автоматически настроить вашу фабрику.
reward_blueprints:
title: Чертежи
desc: Теперь вы можете <strong>копировать и вставлять</strong> части вашей
@ -648,70 +680,71 @@ storyRewards:
title: Следующий уровень
desc: Поздравляем! Кстати, больше контента планируется для полной версии!
reward_balancer:
title: Balancer
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!
title: Балансер
desc: Многофункциональный <strong>банансер</strong> разблокирован - Он используется для <strong>разделения и обьединения
потора предметов</strong> на несколько конвейеров!
reward_merger:
title: Compact Merger
desc: You have unlocked a <strong>merger</strong> variant of the
<strong>balancer</strong> - It accepts two inputs and merges them
into one belt!
title: Компактный Соединитель
desc: Разблокирован <strong>соединитель</strong> - вариант
<strong>балансера</strong> - он принимает два входа и объединяет их
в один конвейер.
reward_belt_reader:
title: Belt reader
desc: You have now unlocked the <strong>belt reader</strong>! It allows you to
measure the throughput of a belt.<br><br>And wait until you unlock
wires - then it gets really useful!
title: Измеритель
desc: Разблокирован <strong>измеритель</strong>! Он позволяет измерять
пропускную способность конвейера.<br><br>А как полезен он будет,
когда вы разблокируете провода!
reward_rotater_180:
title: Rotater (180 degrees)
desc: You just unlocked the 180 degress <strong>rotater</strong>! - It allows
you to rotate a shape by 180 degress (Surprise! :D)
title: Вращатель (180 градусов)
desc: Разблокирован <strong>вращатель</strong> на 180 градусов! - Он позволяет
вращать фигур на 180 градусов (Сюрприз! :D)
reward_display:
title: Display
desc: "You have unlocked the <strong>Display</strong> - Connect a signal on the
wires layer to visualize it!<br><br> PS: Did you notice the belt
reader and storage output their last read item? Try showing it on a
display!"
title: Экран
desc: "Разблокирован <strong>Экран</strong> - Подключите сигнал на слое с
проводами чтобы отобразить его!<br><br> PS: Заметили ли вы, что
измеритель и буферное хранилище отображают последний ресурс,
прошедший через них? Попробуйте отобразить его на экране!"
reward_constant_signal:
title: Constant Signal
desc: You unlocked the <strong>constant signal</strong> building on the wires
layer! This is useful to connect it to <strong>item filters</strong>
for example.<br><br> The constant signal can emit a
<strong>shape</strong>, <strong>color</strong> or
<strong>boolean</strong> (1 / 0).
title: Постоянный Сигнал
desc: Разблокирован <strong>постоянный сигнал</strong> на слое с проводами! Он
полезен для подключения к <strong>фильтрам</strong>,
например.<br><br> Постоянный сигнал может издавать
<strong>фигуру</strong>, <strong>цвет</strong> или
<strong>логическое значение</strong> (1 / 0).
reward_logic_gates:
title: Logic Gates
desc: You unlocked <strong>logic gates</strong>! You don't have to be excited
about this, but it's actually super cool!<br><br> With those gates
you can now compute AND, OR, XOR and NOT operations.<br><br> As a
bonus on top I also just gave you a <strong>transistor</strong>!
title: Логические Элементы
desc: Разблокированы <strong>логические элементы</strong>! Вы не обязаны
радоваться по этому поводу, но вообще это очень круто!<br><br> С
этими элементами теперь вы можете производить И, ИЛИ, исключающее
ИЛИ и НЕ операции.<br><br> Как бонус, я также дал вам
<strong>транзистор</strong>!
reward_virtual_processing:
title: Virtual Processing
desc: I just gave a whole bunch of new buildings which allow you to
<strong>simulate the processing of shapes</strong>!<br><br> You can
now simulate a cutter, rotater, stacker and more on the wires layer!
With this you now have three options to continue the game:<br><br> -
Build an <strong>automated machine</strong> to create any possible
shape requested by the HUB (I recommend to try it!).<br><br> - Build
something cool with wires.<br><br> - Continue to play
regulary.<br><br> Whatever you choose, remember to have fun!
title: Виртуальное Производство
desc: Только что я открыл вам множество новых построек, которые позволят
<strong>симулировать производство фигур</strong>!<br><br> Теперь вы
можете симулировать резак, вращатель, объединитель и др. на слое с
проводами! Теперь у вас есть три варианта продолжения игры:<br><br>
- Построить <strong>автоматический механизм</strong> для
производства любой фигуры, запрашиваемой ХАБ (рекомендую
попробовать!).<br><br> - Построить что-то клевое, используя
провода.<br><br> - Продолжить обычную игру. <br><br> Что бы вы не
выбрали, не забывайте хорошо проводить время!
reward_wires_painter_and_levers:
title: Wires & Quad Painter
desc: "You just unlocked the <strong>Wires Layer</strong>: It is a separate
layer on top of the regular layer and introduces a lot of new
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
title: Провода & Покрасчик (4 входа)
desc: "Вы разблокировали <strong>Слой проводов</strong>: Это отдельный
слой выше обычного слоя и он предоставляет много новых
механик!<br><br> Для начала я разблокировал тебе <strong>Покрасчик на 4 входа
</strong> - Соедини слоты которые нужно покрасить на слое проводов!<br><br> Для переключения видимости слоя проводов, нажми
<strong>E</strong>. <br><br> PS: <strong>Включи подсказки</strong> в
настройках что бы активировать обучение по проводам!"
reward_filter:
title: Item Filter
desc: You unlocked the <strong>Item Filter</strong>! It will route items either
to the top or the right output depending on whether they match the
signal from the wires layer or not.<br><br> You can also pass in a
boolean signal (1 / 0) to entirely activate or disable it.
title: Фильтр
desc: Разблокирован <strong>Фильтр</strong>! Он направит ресурсы наверх или
направо в зависмости от того, совпадают ли они с установленным
сигналом. <br><br> Вы также можете передавать логические значения (1
/ 0), чтобы полностью отключить или включить его.
reward_demo_end:
title: End of Demo
desc: You have reached the end of the demo version!
title: Конец Демо
desc: Вы достигли конца демоверсии игры!
settings:
title: Настройки
categories:
@ -805,9 +838,9 @@ settings:
description: Включает виньетирование, которое затемняет углы экрана и облегчает
чтение текста.
autosaveInterval:
title: Интервал авто-сохранения
title: Интервал автосохранения
description: Управляет тем, как часто игра автоматически сохраняется. Также
здесь можно полностью отключить авто-сохранение.
здесь можно полностью отключить автосохранение.
intervals:
one_minute: 1 Минута
two_minutes: 2 Минуты
@ -834,51 +867,53 @@ settings:
установлен. С этой настройкой может быть удобнее, при частом
переключении между различными типами зданий.
soundVolume:
title: Sound Volume
description: Set the volume for sound effects
title: Громкость Звука
description: Задает громкость звуковых эффектов.
musicVolume:
title: Music Volume
description: Set the volume for music
description: Задает громкость музыки.
lowQualityMapResources:
title: Low Quality Map Resources
description: Simplifies the rendering of resources on the map when zoomed in to
improve performance. It even looks cleaner, so be sure to try it
out!
title: Низкое качество ресурсов на карте
description: Упрощает отображение ресурсов на карте при приближении для
улучшения производительности. Оно даже выглядит аккуратнее,
поэтому обязательно попробуйте!
disableTileGrid:
title: Disable Grid
description: Disabling the tile grid can help with the performance. This also
makes the game look cleaner!
title: Отключить Сетку
description: Отключение разделительной сетки может помочь улучшить
производительность. Кроме того, делает игру визуально проще!
clearCursorOnDeleteWhilePlacing:
title: Clear Cursor on Right Click
description: Enabled by default, clears the cursor whenever you right click
while you have a building selected for placement. If disabled,
you can delete buildings by right-clicking while placing a
building.
title: Очистить Курсор на ПКМ
description: Включено по умолчанию, очищает курсор от выбранной постройки при
нажатии на ПКМ. Если отключено, вы можете удалять постройки при
нажатии на ПКМ во время строительства.
lowQualityTextures:
title: Low quality textures (Ugly)
description: Uses low quality textures to save performance. This will make the
game look very ugly!
title: Низкое качество текстур (Некрасиво)
description: Использует низкое качество текстур, чтобы улучшить
производительность. Это сделает игру очень некрасивой!
displayChunkBorders:
title: Display Chunk Borders
description: The game is divided into chunks of 16x16 tiles, if this setting is
enabled the borders of each chunk are displayed.
title: Отображать границы чанков
description: Эта игра разделена на чанки, состоящие из 16x16 ячеек, если эта
настройка включена, границы чанков будут отображаться.
pickMinerOnPatch:
title: Pick miner on resource patch
description: Enabled by default, selects the miner if you use the pipette when
hovering a resource patch.
title: Выбрать Экстрактор над Жилой
description: Включено по умолчанию, выбирает экстрактор, если использовать
пипетку над жилой с ресурсами.
simplifiedBelts:
title: Simplified Belts (Ugly)
description: Does not render belt items except when hovering the belt to save
performance. I do not recommend to play with this setting if you
do not absolutely need the performance.
title: Упрощенные Конвейеры (Некрасиво)
description: Не отображает ресурсы, находящиеся на конвейере, если не навести
курсор для улучшения производительности. Не рекомендую играть с
этой настройкой, если вас устраивает производительность.
enableMousePan:
title: Enable Mouse Pan
description: Allows to move the map by moving the cursor to the edges of the
screen. The speed depends on the Movement Speed setting.
title: Включить Перемещение Мышкой
description: Позволяет двигать карту, перемещая курсор к краям экрана. Скорость
зависит от настройки Скорости движения.
zoomToCursor:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
title: Приближение в точку курсора
description: Если включено, приближение будет в направлении курсора мыши,
иначе в центр экрана.
mapResourcesScale:
title: Размер ресурсов на карте
description: Устанавливает размер фигур на карте (когда вид достаточно отдалён).
rangeSliderPercentage: <amount> %
keybindings:
title: Настройки управления
@ -924,9 +959,9 @@ keybindings:
massSelectStart: Модификатор для выделения области
massSelectSelectMultiple: Выбрать несколько областей
massSelectCopy: Копировать область
placementDisableAutoOrientation: Отключить авто-определение направления
placementDisableAutoOrientation: Отключить автоопределение направления
placeMultiple: Оставаться в режиме размещения
placeInverse: Инвертировать авто-определение направления конвейеров
placeInverse: Инвертировать автоопределение направления конвейеров
pasteLastBlueprint: Вставить последний чертеж
massSelectCut: Вырезать область
exportScreenshot: Экспорт всей Базы в виде Изображения
@ -937,21 +972,21 @@ keybindings:
menuClose: Закрыть меню
switchLayers: Переключить слои
wire: Энергетический провод
balancer: Balancer
storage: Storage
constant_signal: Constant Signal
logic_gate: Logic Gate
lever: Switch (regular)
filter: Filter
wire_tunnel: Wire Crossing
display: Display
reader: Belt Reader
virtual_processor: Virtual Cutter
transistor: Transistor
analyzer: Shape Analyzer
comparator: Compare
item_producer: Item Producer (Sandbox)
copyWireValue: "Wires: Copy value below cursor"
balancer: Балансер
storage: Буферное Хранилище
constant_signal: Постоянный Сигнал
logic_gate: Логический Элемент
lever: Переключатель (обычный)
filter: Фильтр
wire_tunnel: Пересечение Проводов
display: Экран
reader: Измеритель
virtual_processor: Виртуальный Резак
transistor: Транзистор
analyzer: Анализатор Фигур
comparator: Сравнить
item_producer: Генератор Ресурсов (Песочница)
copyWireValue: "Провода: скопировать значение под курсором"
backwardsModifier: "Modifier: Cycle backwards"
about:
title: Об игре
@ -976,65 +1011,67 @@ demo:
oneGameLimit: Ограниченность одним сохранением игры
customizeKeybindings: Пользовательская настройка Управления
exportingBase: Экспорт всей Базы в виде Изображения
settingNotAvailable: Не доступно в демо-версии.
settingNotAvailable: Недоступно в демоверсии.
tips:
- The hub accepts input of any kind, not just the current shape!
- Make sure your factories are modular - it will pay out!
- Don't build too close to the hub, or it will be a huge chaos!
- If stacking does not work, try switching the inputs.
- You can toggle the belt planner direction by pressing <b>R</b>.
- Holding <b>CTRL</b> allows dragging of belts without auto-orientation.
- Ratios stay the same, as long as all upgrades are on the same Tier.
- Serial execution is more efficient than parallel.
- You will unlock more variants of buildings later in the game!
- You can use <b>T</b> to switch between different variants.
- Symmetry is key!
- You can weave different tiers of tunnels.
- Try to build compact factories - it will pay out!
- The painter has a mirrored variant which you can select with <b>T</b>
- Having the right building ratios will maximize efficiency.
- At maximum level, 5 extractors will fill a single belt.
- Don't forget about tunnels!
- You don't need to divide up items evenly for full efficiency.
- Holding <b>SHIFT</b> will activate the belt planner, letting you place
long lines of belts easily.
- Cutters always cut vertically, regardless of their orientation.
- To get white mix all three colors.
- The storage buffer priorities the first output.
- Invest time to build repeatable designs - it's worth it!
- Holding <b>CTRL</b> allows to place multiple buildings.
- You can hold <b>ALT</b> to invert the direction of placed belts.
- Efficiency is key!
- Shape patches that are further away from the hub are more complex.
- Machines have a limited speed, divide them up for maximum efficiency.
- Use balancers to maximize your efficiency.
- Organization is important. Try not to cross conveyors too much.
- Plan in advance, or it will be a huge chaos!
- Don't remove your old factories! You'll need them to unlock upgrades.
- Try beating level 20 on your own before seeking for help!
- Don't complicate things, try to stay simple and you'll go far.
- You may need to re-use factories later in the game. Plan your factories to
be re-usable.
- Sometimes, you can find a needed shape in the map without creating it with
stackers.
- Full windmills / pinwheels can never spawn naturally.
- Color your shapes before cutting for maximum efficiency.
- ХАБ принимает любые ресурсы, не только текущую фигуру!
- Старайтесь создавать модульные фабрики - вы не пожалеете!
- Не стройте слишком близко к ХАБ-у, иначе начнется ужасный хаос!
- Если не получается объединить фигуры, попробуйте поменять входы местами!
- Вы можете изменить направление конвейера при строительстве, нажав <b>R</b>.
- Удерживая <b>CTRL</b>, вы можете перемещать конвейеры без авто ориентации.
- Соотношения всегда одинаковы, если уровни улучшений равны.
- Последовательное выполнение эффективнее, чем параллельное.
- Вам будут открываться новые варианты построек по мере прохождения!
- Нажмите <b>T</b>, чтобы переключаться между различными вариантами.
- Симметрия - ключ к успеху!
- Вы можете переплетать между собой туннели разных уровней.
- Попробуйте строить компактные фабрики - вы не пожалеете!
- Покрасчик имеет зеркальный вариант, который может быть выбран, нажав
<b>T</b>.
- Правильные соотношения построек позволяет улучшить эффективность фабрики.
- На максимальном уровне, 5 экстракторов заполняют один конвейер.
- Резаки всегда разрезают пополам по вертикали вне зависимости от ориентации.
- Чтобы получить белый цвет, смешайте все три цвета.
- Удерживание <b>SHIFT</b> активирует планировщик конвейеров, что упрощает простройку длинных конвейеров.
- Вкладывайте время в строительство повторяемых механизмов - оно того стоит!
- Смешайте все три цвета для получения булого.
- Буффер хранилища с большим приоритетом выдаёт на левый выход.
- Эффективность - ключ к успеху!
- Удерживание <b>CTRL</b> даёт возможность размещения нескольких построек.
- Можно зажать <b>ALT</b> для инвертирования направления размещаемых конвейеров.
- Используйте балансеры, чтобы максимизировать эффективность.
- Организация очень важна, старайтесь не пересекать конвейеры слишком часто.
- Планируйте заранее, иначе начнется ужасный хаос!
- Не удаляйте свои старые фабрики! Они понадобятся вам, чтобы открывать
улучшения.
- Попробуйте пройти 20-ый уровень самостоятельно, прежде чем искать помощи!
- Не усложняйте себе жизнь, старайтесь думать проще и вы достигните больших
высот.
- Вам может снова понадобиться ваша старая фабрика позже в игре. Старайтесь
планировать фабрику, чтобы она могла быть повторно использована.
- Иногда, вы можете найти необходимую фигуру на карте, вместо того, чтобы
создавать ее самостоятельно.
- Полноценные мельницы/вертушки никогда не генерируются натурально.
- Окрашивайте свои фигуры, прежде чем разрезать для максимальной
эффективности.
- С модулями теряется восприятие пространства; забота смертных.
- Создайте отдельную фабрику чертежей. Они очень важны для модулей.
- Взгляните внимательнее на смешиватель и вы найдете ответы на свои вопросы.
- With modules, space is merely a perception; a concern for mortal men.
- Make a separate blueprint factory. They're important for modules.
- Have a closer look on the color mixer, and your questions will be answered.
- Use <b>CTRL</b> + Click to select an area.
- Building too close to the hub can get in the way of later projects.
- The pin icon next to each shape in the upgrade list pins it to the screen.
- Mix all primary colors together to make white!
- You have an infinite map, don't cramp your factory, expand!
- Also try Factorio! It's my favorite game.
- The quad cutter cuts clockwise starting from the top right!
- You can download your savegames in the main menu!
- This game has a lot of useful keybindings! Be sure to check out the
settings page.
- This game has a lot of settings, be sure to check them out!
- The marker to your hub has a small compass to indicate its direction!
- To clear belts, cut the area and then paste it at the same location.
- 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.
- Строительство вблизи ХАБ-а может помешать будущим проектам.
- Иконка булавки на каждой фигуре закрепляет ее на экране.
- Используйте <b>CTRL</b> + ЛКМ для выбора области.
- В вашем распоряжении бесконечная карта! Не загромождайте вашу фабрику,
расширяйтесь!
- Также попробуйте Factorio. Это моя любимая игра.
- Резак(4 входа) разрезает по часовой стрелке, начиная с правой верхней
части!
- Вы можете скачать свои сохранения в главном меню!
- В этой игре множество полезных комбинаций клавиш. Загляните в настройки,
чтобы ознакомиться с ними.
- В этой игре множество настроек, не забудьте с ними ознакомиться.
- Маркер ХАБ-а имеет небольшой компас, указывающий его направление.
- Нажмите F4, чтобы показать FPS и Частоту Обновления.
- Нажмите F4 дважды, чтобы показать координаты курсора и камеры.
- Вы можете нажать на закрепленную фигуру слева, чтобы открепить ее.
- Для очистки конвейеров, вырежьте область и вставьте её в то же место.

View File

@ -199,6 +199,14 @@ dialogs:
renameSavegame:
title: Rename Savegame
desc: You can rename your savegame here.
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: Move
@ -307,6 +315,30 @@ ingame:
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."
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
connectedMiners:
one_miner: 1 Miner
n_miners: <amount> Miners
@ -697,7 +729,8 @@ storyRewards:
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Item Filter
desc: You unlocked the <strong>Item Filter</strong>! It will route items either
@ -867,6 +900,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: Keybindings

View File

@ -199,6 +199,14 @@ dialogs:
renameSavegame:
title: Rename Savegame
desc: You can rename your savegame here.
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: Kretanje
@ -307,6 +315,30 @@ ingame:
pokretnih traka će ubrzati napredak do cilja.<br><br>Savet: Drži
<strong>SHIFT</strong> za postavljanje više rudara istovremeno,
a pritisni <strong>R</strong> za okretanje."
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
connectedMiners:
one_miner: 1 Miner
n_miners: <amount> Miners
@ -695,7 +727,8 @@ storyRewards:
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Item Filter
desc: You unlocked the <strong>Item Filter</strong>! It will route items either
@ -865,6 +898,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: Tasteri

View File

@ -203,6 +203,14 @@ dialogs:
renameSavegame:
title: Byt namn på sparfil
desc: Du kan byta namn på din sparfil här.
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: Flytta
@ -297,6 +305,30 @@ ingame:
för att klara målet snabbare.<br><br>Tips: Håll
<strong>SKIFT</strong> för att placera flera extraktörer, och
använd <strong>R</strong> för att rotera dem."
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
colors:
red: Röd
green: Grön
@ -637,7 +669,7 @@ storyRewards:
title: Ritningar
desc: Du kan nu <strong>kopiera och klistra in</strong> delar av din fabrik!
Välj ett område (håll in CTRL, dra sedan med musen), och tryck 'C'
för att kopiera det. <br><br>Att klistra in är<strong>inte
för att kopiera det. <br><br>Att klistra in är <strong>inte
gratis</strong>, du behöver producera
<strong>ritningsformer</strong> för att ha råd med det! (De du just
levererade).
@ -706,7 +738,8 @@ storyRewards:
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Item Filter
desc: You unlocked the <strong>Item Filter</strong>! It will route items either
@ -877,6 +910,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: Snabbtangenter

View File

@ -201,6 +201,14 @@ dialogs:
renameSavegame:
title: Oyun Kaydının Yeniden Adlandır
desc: Oyun kaydını buradan adlandırabilirsiniz.
tutorialVideoAvailable:
title: Eğitim Mevcut
desc: Bu seviye için eğitim vidyosu mevcut! İzlemek
ister misin?
tutorialVideoAvailableForeignLanguage:
title: Eğitim Mevcut
desc: Bu seviye için eğitim vidyosu mevcut, ama İngilizce dilinde.
İzlemek ister misin?
ingame:
keybindingsOverlay:
moveMap: Hareket Et
@ -261,9 +269,9 @@ ingame:
description: Merkez binanıza giden bütün şekilleri gösterir.
noShapesProduced: Henüz hiçbir şekil üretilmedi.
shapesDisplayUnits:
second: <shapes> / s
minute: <shapes> / m
hour: <shapes> / h
second: <shapes> / sn
minute: <shapes> / dk
hour: <shapes> / sa
settingsMenu:
playtime: Oynama zamanı
buildingsPlaced: Yapılar
@ -294,6 +302,30 @@ ingame:
yerleştir.<br><br>İpucu: Birden fazla üretici yerleştirmek için
<strong>SHIFT</strong> tuşuna basılı tut, ve <strong>R</strong>
tuşuyla taşıma bandının yönünü döndür."
2_1_place_cutter: "Şimdi daireleri yarıya bölmek için bir <strong>Kesici</strong> yerleştir!<br><br>
Not: Kesici şekilleri yönünden bağımsız olarak her zaman <strong>yukarıdan aşağıya</strong>
keser."
2_2_place_trash: Kesicinin çıkış hatları doluysa <strong>durabilir</strong>!<br><br>
Bunun için kullanılmayan çıktılara <strong>çöp</strong>
yerleştirin.
2_3_more_cutters: "İyi iş çıkardın! Şimdi işleri hızlandırmak için <strong>iki kesici daha</strong>
yerleştir.<br><br> Not: <strong>0-9 tuşlarını</strong> kullanarak yapılara
daha hızlı ulaşabilirsin!"
3_1_rectangles: "Şimdi biraz dikdörtgen üretelim! <strong>4 Üretici yerleştir</strong> ve
bunları merkeze bağla.<br><br> Not: <strong>SHIFT tuşuna</strong>
basılı tutarak bant planlayıcıyı
etkinleştir!"
21_1_place_quad_painter: <strong>Dörtlü boyayıcıyı</strong> yerleştirin ve <strong>daireyi</strong>,
<strong>beyaz</strong> ve <strong>kırmızı</strong> renkleri
elde edin!
21_2_switch_to_wires: Kablo katmanına <strong>E tuşuna</strong> basarak geçiş yapın!<br><br>
Sonra boyayıcının <strong>dört girişini kablolara
bağlayın</strong>!
21_3_place_button: Harika! Şimdi bir <strong>Anahtar</strong> yerleştirin ve onu
kablolarla bağlayın!
21_4_press_button: "Anahtara basarak <strong>gerçekçi sinyal(1) gönderin</strong> ve bununla
boyayıcıyı aktifleştirin.<br><br> Not: Bütün girişleri bağlamanıza gerek yok!
Sadece iki tanesini kabloyla bağlamayı deneyin."
colors:
red: Kırmızı
green: Yeşil
@ -562,7 +594,7 @@ storyRewards:
eden <strong>çöpü</strong> de verdim!
reward_rotater:
title: Döndürme
desc: <strong>Döndürücü</strong> açıldı! Döndürücü şekilleri saat yönüne 90
desc: <strong>Döndürücü</strong> açıldı! Döndürücü şekilleri saat yönünde 90
derece döndürür.
reward_painter:
title: Boyama
@ -653,9 +685,9 @@ storyRewards:
desc: Deneme sürümünün sonuna geldin!
reward_balancer:
title: Dengeleyici
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!
desc: Çok fonksiyonlu <strong>dengeleyici</strong> açıldı. - <strong>Eşyaları
bantlara ayırarak ve bantları birleştirerek</strong> daha büyük
fabrikalar kurmak için kullanılabilir!
reward_merger:
title: Tekil Birleştirici
desc: <strong>Birleştiriciyi</strong> açtın ! <strong>dengeleyecinin</strong>
@ -671,17 +703,17 @@ storyRewards:
döndürür (Süpriz! :D)
reward_display:
title: Ekran
desc: "You have unlocked the <strong>Display</strong> - Connect a signal on the
wires layer to visualize it!<br><br> PS: Did you notice the belt
reader and storage output their last read item? Try showing it on a
display!"
desc: "<strong>Ekranı</strong> açtın. - Kablo katmanında bir sinyal bağla ve onu
ekranda göster! <br><br> Not: Bant okuyucunun ve deponun son
okudukları eşyayı çıkardığını fark ettin mi? Bunu ekranda göstermeyi
dene!"
reward_constant_signal:
title: Sabit Sinyal
desc: You unlocked the <strong>constant signal</strong> building on the wires
layer! This is useful to connect it to <strong>item filters</strong>
for example.<br><br> The constant signal can emit a
<strong>shape</strong>, <strong>color</strong> or
<strong>boolean</strong> (1 or 0).
desc: Kablo katmanında inşa edilebilen <strong>sabit sinyal'i</strong> açtın!
Bu yapı örneğin <strong>eşya filtrelerine</strong> bağlanabilir.<br><br>
Sabit sinyal <strong>şekil</strong>, <strong>renk</strong> veya
<strong>ikili değer</strong> (1 veya 0)
gönderelebilir.
reward_logic_gates:
title: Mantık Kapıları
desc: <strong>Mantık kapıları</strong> açıldı! Çok heyecanlanmana gerek yok, ama
@ -706,7 +738,8 @@ storyRewards:
vardır!<br><br> Başlangıç olarak senin için <strong>Dörtlü
Boyayıcıyı</strong> açıyorum. - Kablo katmanında boyamak için
istediğin hatları bağla! <br><br> Kablo katmanına geçiş yapmak için
<strong>E</strong> tuşunu kullan."
<strong>E tuşunu </strong> kullan. <br><br> Not: İpuçlarını kablo eğitimlerini
görmek için ayarlarda aktifleştirmeyi unutma."
reward_filter:
title: Eşya Filtresi
desc: <strong>Eşya filtresini</strong> açtın! Kablo katmanından gelen sinyalle
@ -725,6 +758,7 @@ settings:
staging: Yükseltme
prod: Üretim
buildDate: <at-date> derlendi
rangeSliderPercentage: <amount> %
labels:
uiScale:
title: Arayüz Ölçeğİ
@ -872,10 +906,14 @@ settings:
title: Fare Kaydırarak Hareket Etme
description: Fareyi ekranın köşelerine getirerek hareket ettirmeyi sağlar.
zoomToCursor:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
rangeSliderPercentage: <amount> %
title: Farenin Konumuna Yakınlaştırma
description: Eğer etkinleştirilirse zaman ekran yakınlaştırılması fare imlecinin
bulunduğu yere doğru olur. Etkinleştirilmezse yakınlaştırma
ekranın ortasına doğru olur.
mapResourcesScale:
title: Uzak Bakışta Kaynakların Büyüklüğü
description: Haritaya uzaktan bakıldığında, haritadaki şekillerin büyüklüğünü
ayarlar.
keybindings:
title: Tuş Atamaları
hint: "İpucu: CTRL, SHIFT ve ALT tuşlarından yararlanın! Farklı yerleştirme

View File

@ -202,6 +202,14 @@ dialogs:
renameSavegame:
title: Rename Savegame
desc: You can rename your savegame here.
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: Рухатися
@ -311,6 +319,30 @@ ingame:
швидше.<br><br>Підказка: Утримуйте <strong>SHIFT</strong>, щоб
розмістити багато екстракторів, і використовуйте
<strong>R</strong>, щоб обертати їх."
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
connectedMiners:
one_miner: 1 Miner
n_miners: <amount> Miners
@ -705,7 +737,8 @@ storyRewards:
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Item Filter
desc: You unlocked the <strong>Item Filter</strong>! It will route items either
@ -878,6 +911,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: Гарячі клавіши

View File

@ -176,6 +176,14 @@ dialogs:
renameSavegame:
title: 重命名存档
desc: 您可以在此重命名存档。
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: 移动地图
@ -262,6 +270,30 @@ ingame:
1_2_conveyor: 用<strong>传送带</strong>将你的开采机连接到基地上!<br><br>提示:用你的鼠标<strong>按下并拖动</strong>传送带!
1_3_expand: 这<strong>不是</strong>一个挂机游戏!建造更多的开采机和传送带来更快地完成目标。<br><br> 提示:按住
<strong>SHIFT</strong> 键来放置多个开采机,用 <strong>R</strong> 键旋转它们。
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
colors:
red: 红色
green: 绿色
@ -638,7 +670,8 @@ storyRewards:
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Item Filter
desc: You unlocked the <strong>Item Filter</strong>! It will route items either
@ -791,6 +824,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: 按键设置

View File

@ -18,7 +18,7 @@ steamPage:
- 無限存檔
- 無限標記
- 支持我! ❤️
title_future: Planned Content
title_future: 未來計劃
planned:
- 藍圖圖庫(單機版獨有)
- Steam 成就
@ -79,8 +79,8 @@ mainMenu:
openSourceHint: 本遊戲已開源!
discordLink: 官方 Discord 伺服器
helpTranslate: 幫助我們翻譯!
browserWarning: 很抱歉, 本遊戲在當前瀏覽器上可能運行緩慢! 使用chrome或者獲取獨立版以得到更好的體驗。
savegameLevel: Level <x>
browserWarning: 很抱歉, 本遊戲在當前瀏覽器上可能運行緩慢! 使用chrome或者獲取單機版以得到更好的體驗。
savegameLevel: <x>
savegameLevelUnknown: 未知關卡
continue: 繼續
newGame: 新遊戲
@ -95,7 +95,7 @@ dialogs:
later: 之後
restart: 重啟
reset: 重置
getStandalone: 獲得獨立
getStandalone: 獲得單機
deleteGame: 我知道我在做什麼
viewUpdate: 查看更新
showUpgrades: 顯示建築升級
@ -129,10 +129,10 @@ dialogs:
desc: 成功重置了所有按鍵!
featureRestriction:
title: 演示版
desc: 你嘗試使用了 <feature> 功能。該功能在演示版中不可用。請考慮購買獨立版以獲得更好的體驗。
desc: 你嘗試使用了 <feature> 功能。該功能在演示版中不可用。請考慮購買單機版以獲得更好的體驗。
oneSavegameLimit:
title: 存檔數量限制
desc: 演示版中只能保存一份存檔。請刪除舊存檔或者獲取獨立版!
desc: 演示版中只能保存一份存檔。請刪除舊存檔或者獲取單機版!
updateSummary:
title: 更新了!
desc: "以下為自上次遊戲以來更新的內容:"
@ -153,9 +153,9 @@ dialogs:
class='keybinding'>ALT</code>: 反向放置傳送帶。 <br>"
createMarker:
title: 創建標記
desc: Give it a meaningful name, you can also include a <strong>short
key</strong> of a shape (Which you can generate <link>here</link>)
titleEdit: Edit Marker
desc: 給地圖標記起一個的名字。 你可以在名字中加入一個<strong>短代碼</strong>以加入圖形。 (你可以在 <link>here</link>
生成短代碼。)
titleEdit: 修改標記
markerDemoLimit:
desc: 在演示版中你只能創建兩個地圖標記。請獲取單機版以創建更多標記。
massCutConfirm:
@ -175,6 +175,14 @@ dialogs:
renameSavegame:
title: 重新命名存檔
desc: 你可以在這裡重新命名存檔
tutorialVideoAvailable:
title: Tutorial Available
desc: There is a tutorial video available for this level! Would you like to
watch it?
tutorialVideoAvailableForeignLanguage:
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?
ingame:
keybindingsOverlay:
moveMap: 移動
@ -262,6 +270,30 @@ ingame:
<br><br>提示:用你的游標<strong>按下並拖動</strong>傳送帶!
1_3_expand: 這<strong>不是</strong>一個放置型遊戲!建造更多的開採機和傳送帶來更快地完成目標。 <br><br>
提示:按住<strong>SHIFT</strong>鍵來放置多個開採機,用<strong>R</strong>鍵旋轉它們。
2_1_place_cutter: "Now place a <strong>Cutter</strong> to cut the circles in two
halves!<br><br> PS: The cutter always cuts from <strong>top to
bottom</strong> regardless of its orientation."
2_2_place_trash: The cutter can <strong>clog and stall</strong>!<br><br> Use a
<strong>trash</strong> to get rid of the currently (!) not
needed waste.
2_3_more_cutters: "Good job! Now place <strong>2 more cutters</strong> to speed
up this slow process!<br><br> PS: Use the <strong>0-9
hotkeys</strong> to access buildings faster!"
3_1_rectangles: "Now let's extract some rectangles! <strong>Build 4
extractors</strong> and connect them to the hub.<br><br> PS:
Hold <strong>SHIFT</strong> while dragging a belt to activate
the belt planner!"
21_1_place_quad_painter: Place the <strong>quad painter</strong> and get some
<strong>circles</strong>, <strong>white</strong> and
<strong>red</strong> color!
21_2_switch_to_wires: Switch to the wires layer by pressing
<strong>E</strong>!<br><br> Then <strong>connect all four
inputs</strong> of the painter with cables!
21_3_place_button: Awesome! Now place a <strong>Switch</strong> and connect it
with wires!
21_4_press_button: "Press the switch to make it <strong>emit a truthy
signal</strong> and thus activate the painter.<br><br> PS: You
don't have to connect all inputs! Try wiring only two."
colors:
red:
green:
@ -277,13 +309,13 @@ ingame:
empty:
copyKey: Copy Key
connectedMiners:
one_miner: 1 Miner
n_miners: <amount> Miners
one_miner: 1 個開採機
n_miners: <amount> 個開採機
limited_items: Limited to <max_throughput>
watermark:
title: Demo version
desc: Click here to see the Steam version advantages!
get_on_steam: Get on steam
get_on_steam: 在 Steam 上取得
standaloneAdvantages:
title: 取得單機版!
no_thanks: 不用了,謝謝!
@ -296,7 +328,7 @@ ingame:
desc: 邁向完全自動化!
savegames:
title: ∞ 個存檔
desc: As many as your heart desires!
desc: 隨心所欲!
upgrades:
title: 20 個等級
desc: 試玩版只有 5 個。
@ -401,7 +433,7 @@ buildings:
balancer:
default:
name: 平衡機
description: Multifunctional - Evenly distributes all inputs onto all outputs.
description: 多功能——將所有輸入平均分配到所有輸出。
merger:
name: 合流機(右)
description: 將兩個傳送帶整合成一個。
@ -429,35 +461,31 @@ buildings:
boolean (1 / 0).
lever:
default:
name: Switch
name: 信號切換器
description: Can be toggled to emit a boolean signal (1 / 0) on the wires layer,
which can then be used to control for example an item filter.
logic_gate:
default:
name: AND Gate
description: Emits a boolean "1" if both inputs are truthy. (Truthy means shape,
color or boolean "1")
name: AND 邏輯閘
description: 當輸入均為「真」時輸出才為1。 「真」值代表形狀正確、顏色正確或布林值為1
not:
name: NOT Gate
description: Emits a boolean "1" if the input is not truthy. (Truthy means
shape, color or boolean "1")
name: NOT 邏輯閘
description: 當輸入之ㄧ為「假」時輸出才為1。 「假」值代表形狀不正確、顏色不正確或布林值為0
xor:
name: XOR Gate
description: Emits a boolean "1" if one of the inputs is truthy, but not both.
(Truthy means shape, color or boolean "1")
name: XOR 邏輯閘
description: 當輸入均為「假」時輸出才為1。 「假」值代表形狀不正確、顏色不正確或布林值為0
or:
name: OR Gate
description: Emits a boolean "1" if one of the inputs is truthy. (Truthy means
shape, color or boolean "1")
name: OR 邏輯閘
description: 當輸入之ㄧ為「真」時輸出才為1。 「真」值代表形狀正確、顏色正確或布林值為1
transistor:
default:
name: Transistor
description: Forwards the bottom input if the side input is truthy (a shape,
color or "1").
name: 電晶體
description: 如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。
「真」值代表形狀正確、顏色正確或布林值為1
mirrored:
name: Transistor
description: Forwards the bottom input if the side input is truthy (a shape,
color or "1").
name: 電晶體
description: 如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。
「真」值代表形狀正確、顏色正確或布林值為1
filter:
default:
name: Filter
@ -471,54 +499,48 @@ buildings:
color or boolean.
reader:
default:
name: Belt Reader
name: 傳送帶讀取機
description: Allows to measure the average belt throughput. Outputs the last
read item on the wires layer (once unlocked).
analyzer:
default:
name: Shape Analyzer
name: 形狀分析機
description: Analyzes the top right quadrant of the lowest layer of the shape
and returns its shape and color.
comparator:
default:
name: Compare
name: 比較機
description: Returns boolean "1" if both signals are exactly equal. Can compare
shapes, items and booleans.
virtual_processor:
default:
name: Virtual Cutter
description: Virtually cuts the shape into two halves.
name: 虛擬切割機
description: 虛擬地將圖形從上到下切開並輸出。
rotater:
name: Virtual Rotater
description: Virtually rotates the shape, both clockwise and counter-clockwise.
name: 虛擬旋轉機
description: 虛擬地將圖形順時針或逆時針旋轉。
unstacker:
name: Virtual Unstacker
description: Virtually extracts the topmost layer to the right output and the
remaining ones to the left.
name: 虛擬提取機
description: 虛擬地提取最上層的圖形到右方輸出,剩下的圖形由左方輸出。
stacker:
name: Virtual Stacker
description: Virtually stacks the right shape onto the left.
name: 虛擬堆疊機
description: 虛擬地將輸入的圖形拼貼在一起。如果不能被直接拼貼,右邊的圖形會被疊在左邊的圖形上面。
painter:
name: Virtual Painter
description: Virtually paints the shape from the bottom input with the shape on
the right input.
name: 虛擬上色機
description: 虛擬地將整個圖形塗上輸入的顏色。
item_producer:
default:
name: Item Producer
description: Available in sandbox mode only, outputs the given signal from the
wires layer on the regular layer.
name: 物品製造機
description: 沙盒模式專有,將電路層的輸入轉化成一般層的輸出。
storyRewards:
reward_cutter_and_trash:
title: 切割圖形
desc: You just unlocked the <strong>cutter</strong>, which cuts shapes in half
from top to bottom <strong>regardless of its
orientation</strong>!<br><br>Be sure to get rid of the waste, or
otherwise <strong>it will clog and stall</strong> - For this purpose
I have given you the <strong>trash</strong>, which destroys
everything you put into it!
desc: <strong>切割機</strong>已解鎖。不論切割機的方向,它都會把圖形<strong>垂直地</strong>切成兩半。
<br><br>記得把不需要的部分處理掉,否則這個這個建築會<strong>停止運作</strong>。
為此我給你準備了<strong>垃圾桶</strong>,它會把所有放進去的物品銷毀掉。
reward_rotater:
title: 順時針旋轉
desc: <strong>旋轉機</strong>已解鎖。它會順時針旋轉輸入的圖形90度。
desc: <strong>順時針旋轉機</strong>已解鎖。它會順時針旋轉輸入的圖形90度。
reward_painter:
title: 上色
desc: <strong>上色機</strong>已解鎖。開採一些顏色,用上色機把顏色和圖形混合,就可以為圖形著色。<br><br>備註:如果你是色盲,設置中有<strong>色盲模式</strong>可以選。
@ -529,7 +551,7 @@ storyRewards:
title: 混合
desc: <strong>混合機</strong>已解鎖。如果沒有重疊的部分,混合機會嘗試把兩個輸入的圖形<strong>拼貼</strong>在一起。如果有重疊的部分,右邊的輸入會被<strong>疊</strong>到左邊的輸入上方!
reward_splitter:
title: 離/合併
title:
desc: You have unlocked a <strong>splitter</strong> variant of the
<strong>balancer</strong> - It accepts one input and splits them
into two!
@ -538,28 +560,24 @@ storyRewards:
desc: <strong>隧道</strong>已解鎖。你現在可以從其他傳送帶或建築底下運送物品了!
reward_rotater_ccw:
title: 逆時針旋轉
desc: You have unlocked a variant of the <strong>rotater</strong> - It allows
you to rotate shapes counter-clockwise! To build it, select the
rotater and <strong>press 'T' to cycle through its
variants</strong>!
desc: <strong>逆時針旋轉機</strong>已解鎖。它會逆時針旋轉輸入的圖形90度。
逆時針旋轉機是順時針旋轉機的變體。選擇「順時針旋轉機」並<strong>按「T」來切換變體</strong>就能創建。
reward_miner_chainable:
title: 鏈式開採機
desc: "You have unlocked the <strong>chained extractor</strong>! It can
<strong>forward its resources</strong> to other extractors so you
can more efficiently extract resources!<br><br> PS: The old
extractor has been replaced in your toolbar now!"
title: 鏈式開採
desc: "<strong>鏈式開採機</strong>變體已解鎖。它是開採機的一個變體。
它可以將開採出來的資源<strong>傳遞</strong>給其他的開採機,使得資源提取更加高效!<br><br> PS:
工具列中舊的開採機已被取代。"
reward_underground_belt_tier_2:
title: 貳級隧道
desc: <strong>貳級隧道</strong>變體已解鎖。這個隧道有<strong>更長的傳輸距離</strong>。你還可以混用不同的隧道變體!
reward_cutter_quad:
title: 四分切割
desc: You have unlocked a variant of the <strong>cutter</strong> - It allows you
to cut shapes in <strong>four parts</strong> instead of just two!
title: 四分切割
desc: 您已解鎖了<strong>切割機</strong>的變體:四分切割機。
它允許您將形狀直接切割為<strong>四個部分</strong>,而不是兩個!
reward_painter_double:
title: 雙倍上色機
desc: You have unlocked a variant of the <strong>painter</strong> - It works
similar to the regular painter but processes <strong>two shapes at
once</strong>, consuming just one color instead of two!
title: 雙倍上色
desc: 您已經解鎖了<strong>上色機</strong>的變體:雙倍上色機。
它的運作方式跟上色機類似,但一次能處理<strong>兩個形狀</strong>,而且只消耗一種顏色而不是兩種顏色!
reward_storage:
title: 倉庫
desc: <strong>倉庫</strong> 已解鎖:
@ -582,14 +600,12 @@ storyRewards:
你生產過的<strong>所有</strong>圖形都會被用來<strong>升級建築</strong>。"
no_reward_freeplay:
title: 下一關
desc: 恭喜你!另外,我們已經計劃在獨立版中加入更多內容!
desc: 恭喜你!另外,我們已經計劃在單機版中加入更多內容!
reward_balancer:
title: Balancer
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!
title: 平衡物流
desc: <strong>平衡機</strong>已解鎖。在大型工廠中,平衡機負責<strong>合流或分流</strong>多個傳送帶上的物品。
reward_merger:
title: Compact Merger
title: 合流
desc: You have unlocked a <strong>merger</strong> variant of the
<strong>balancer</strong> - It accepts two inputs and merges them
into one belt!
@ -638,7 +654,8 @@ storyRewards:
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
Painter</strong> - Connect the slots you would like to paint with on
the wires layer!<br><br> To switch to the wires layer, press
<strong>E</strong>."
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
the settings to activate the wires tutorial!"
reward_filter:
title: Item Filter
desc: You unlocked the <strong>Item Filter</strong>! It will route items either
@ -684,7 +701,7 @@ settings:
description: 改變語言。所有的翻譯皆由玩家提供,且有可能正在施工中!
fullscreen:
title: 全螢幕
description: 全螢幕以獲得更好的遊戲體驗。僅在獨立版中可用。
description: 全螢幕以獲得更好的遊戲體驗。僅在單機版中可用。
soundsMuted:
title: 關閉音效
description: 關閉所有音效。
@ -747,11 +764,11 @@ settings:
title: 依建築類型旋轉
description: 每個建築類型,將會分別記住您最後一次使用的旋轉方向。 如果您常常切換不同類型的建築,這樣可能會更方便。
soundVolume:
title: Sound Volume
description: Set the volume for sound effects
title: 音效
description: 音效設定
musicVolume:
title: Music Volume
description: Set the volume for music
title: 音樂
description: 音樂設定
lowQualityMapResources:
title: Low Quality Map Resources
description: Simplifies the rendering of resources on the map when zoomed in to
@ -792,6 +809,10 @@ settings:
title: Zoom towards Cursor
description: If activated the zoom will happen in the direction of your mouse
position, otherwise in the middle of the screen.
mapResourcesScale:
title: Map Resources Size
description: Controls the size of the shapes on the map overview (when zooming
out).
rangeSliderPercentage: <amount> %
keybindings:
title: 按鍵設置
@ -847,12 +868,12 @@ keybindings:
switchDirectionLockSide: 規劃器:換邊
pipette: Pipette
menuClose: Close Menu
switchLayers: Switch layers
wire: Energy Wire
balancer: Balancer
switchLayers: 更換層
wire: 電線
balancer: 平衡機
storage: Storage
constant_signal: Constant Signal
logic_gate: Logic Gate
logic_gate: 邏輯閘
lever: Switch (regular)
filter: Filter
wire_tunnel: Wire Crossing
@ -860,9 +881,9 @@ keybindings:
reader: Belt Reader
virtual_processor: Virtual Cutter
transistor: Transistor
analyzer: Shape Analyzer
comparator: Compare
item_producer: Item Producer (Sandbox)
analyzer: 形狀分析機
comparator: 比對機
item_producer: 物品生產機(沙盒模式)
copyWireValue: "Wires: Copy value below cursor"
backwardsModifier: "Modifier: Cycle backwards"
about:
@ -873,7 +894,7 @@ about:
如果你想參與開發,請查看<a href="<githublink>" target="_blank">shapez.io on github</a>。 <br><br>
這個遊戲的開發少不了熱情的Discord社區。請加入我們的<a href="<discordlink>" target="_blank">Discord 服器</a> <br><br>
這個遊戲的開發少不了熱情的 Discord 社區。請加入我們的<a href="<discordlink>" target="_blank">Discord 服器</a> <br><br>
本遊戲的音樂由<a href="https://soundcloud.com/pettersumelius" target="_blank">Peppsen</a>製作——他是個很棒的伙伴。 <br><br>
@ -889,63 +910,59 @@ demo:
exportingBase: 匯出工廠截圖
settingNotAvailable: 在演示版中不可用。
tips:
- The hub accepts input of any kind, not just the current shape!
- Make sure your factories are modular - it will pay out!
- Don't build too close to the hub, or it will be a huge chaos!
- If stacking does not work, try switching the inputs.
- You can toggle the belt planner direction by pressing <b>R</b>.
- Holding <b>CTRL</b> allows dragging of belts without auto-orientation.
- Ratios stay the same, as long as all upgrades are on the same Tier.
- Serial execution is more efficient than parallel.
- You will unlock more variants of buildings later in the game!
- You can use <b>T</b> to switch between different variants.
- Symmetry is key!
- You can weave different tiers of tunnels.
- Try to build compact factories - it will pay out!
- The painter has a mirrored variant which you can select with <b>T</b>
- Having the right building ratios will maximize efficiency.
- At maximum level, 5 extractors will fill a single belt.
- Don't forget about tunnels!
- You don't need to divide up items evenly for full efficiency.
- Holding <b>SHIFT</b> will activate the belt planner, letting you place
long lines of belts easily.
- Cutters always cut vertically, regardless of their orientation.
- To get white mix all three colors.
- The storage buffer priorities the first output.
- Invest time to build repeatable designs - it's worth it!
- Holding <b>CTRL</b> allows to place multiple buildings.
- You can hold <b>ALT</b> to invert the direction of placed belts.
- Efficiency is key!
- Shape patches that are further away from the hub are more complex.
- Machines have a limited speed, divide them up for maximum efficiency.
- Use balancers to maximize your efficiency.
- Organization is important. Try not to cross conveyors too much.
- Plan in advance, or it will be a huge chaos!
- Don't remove your old factories! You'll need them to unlock upgrades.
- Try beating level 20 on your own before seeking for help!
- Don't complicate things, try to stay simple and you'll go far.
- You may need to re-use factories later in the game. Plan your factories to
be re-usable.
- Sometimes, you can find a needed shape in the map without creating it with
stackers.
- Full windmills / pinwheels can never spawn naturally.
- Color your shapes before cutting for maximum efficiency.
- With modules, space is merely a perception; a concern for mortal men.
- Make a separate blueprint factory. They're important for modules.
- Have a closer look on the color mixer, and your questions will be answered.
- Use <b>CTRL</b> + Click to select an area.
- Building too close to the hub can get in the way of later projects.
- The pin icon next to each shape in the upgrade list pins it to the screen.
- Mix all primary colors together to make white!
- You have an infinite map, don't cramp your factory, expand!
- Also try Factorio! It's my favorite game.
- The quad cutter cuts clockwise starting from the top right!
- You can download your savegames in the main menu!
- This game has a lot of useful keybindings! Be sure to check out the
settings page.
- This game has a lot of settings, be sure to check them out!
- The marker to your hub has a small compass to indicate its direction!
- To clear belts, cut the area and then paste it at the same location.
- 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.
- 基地接受任何輸入,不只是當前要求的圖形!
- 盡量讓工廠模組化,會有回報的!
- 建築不要距離基地太近,否則容易混亂!
- 如果堆疊不如預期,嘗試將輸入端互換。
- 輸送帶的方向可以按 <b>R</b> 更換。
- 按住 <b>CTRL</b> 來防止輸送帶自動轉向。
- 同等級的生產比例會是一樣的。
- 串聯比並聯更有效率。
- 遊戲後期可以解鎖更多建築變體!
- 玩家可以按 <b>T</b> 來選擇不同變體。
- 對稱是關鍵!
- 不同等級的隧道可以相互交織。
- 盡量讓工廠保持緊密,會有回報的!
- 上色機有對稱的變體。按 <b>T</b> 來選擇不同變體。
- 正確的建築比例可以將效率最大化。
- 最高級時,五個開採機可填滿一個輸送帶。
- 別忘記使用隧道!
- 最高效率不一定來自均勻切割。
- 按住 <b>SHIFT</b> 輕鬆規劃長距離輸送帶。
- 不論擺放方向,切割機永遠做垂直切割。
- 白 = 紅 + 綠 + 藍。
- 倉庫優先從左側輸出。
- 花點時間研究可以重複利用的設計,會有回報的!
- 按住 <b>CTRL</b> 可以一次放置多個建築。
- 按住 <b>ALT</b> 以反轉輸送帶的放置方向。
- 效率是關鍵!
- 離基地越遠得圖形叢越複雜。
- 機器的運作速度有上限,多放幾個增加生產效率。
- 用平衡機讓效率最大化。
- 規劃很重要,盡量別讓輸送帶錯綜複雜。
- 預先規劃,不然會混亂不堪!
- 不要刪除舊的工廠,解鎖更新能會需要它們。
- 先試著靠自己破第20關再去尋求幫助。
- 不要讓東西複雜化,保持簡單則行的遠。
- 遊戲中有時需要重複利用工廠,設計時記得考量重複利用性。
- 有些圖形地圖上就找的到,不必自行堆疊。
- 地圖永遠部會自然生成完整的風車圖形。
- 先上色再切割會比較有效率。
- 有了模組,空間淪為假議題、凡夫俗子的憂思。
- 創建一個藍圖工廠,這對模組化很有幫助。
- 靠近一點看混色機,你會找到解答。
- 按 <b>CTRL</b> + 點選想選取的區域。
- 離基地太近的建築可能在未來會礙事。
- 更新目錄的每個圖形旁都有圖釘,點選即可把圖形釘在螢幕上(目標圖形旁)。
- 混合所有基本色就會得到白色!
- 地圖是無限延展的,別執著,擴張吧!
- Factorio 是我最喜歡的遊戲,非常推薦!
- 四分切割機從右上角順時鐘地輸出圖形的四個區塊。
- 你可以從主畫面下載存檔。
- 去設定頁看看,有很多有用的按鍵組合!
- 有很多東西都可以設定,有空的話去設定頁看看。
- 看不見基地時,基地的標示左側有個小指南針會提醒你它的方位。
- 清除輸送帶有個方法:複製它再原地貼上。
- 按 F4 來顯示螢幕的幀數(FPS)與刷新率(Tick Rate)。
- 按 F4 兩次來顯示相機和游標的絕對位置。
- 在已標記的圖形上按左鍵去除標記。

View File

@ -1 +1 @@
1.2.0
1.2.1