Merge remote-tracking branch 'origin/master' into patch-4
4
.gitpod.Dockerfile
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
FROM gitpod/workspace-full
|
||||
|
||||
RUN sudo apt-get update \
|
||||
&& sudo apt install ffmpeg -yq
|
10
.gitpod.yml
Normal 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
|
10
README.md
@ -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.
|
||||
|
||||
[](https://gitpod.io/from-referrer/)
|
||||
|
||||
## Helping translate
|
||||
|
||||
Please checkout the [Translations readme](translations/).
|
||||
|
@ -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
|
||||
|
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 132 KiB |
BIN
res/ui/interactive_tutorial.noinline/21_1_place_quad_painter.gif
Normal file
After Width: | Height: | Size: 809 KiB |
BIN
res/ui/interactive_tutorial.noinline/21_2_switch_to_wires.gif
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
res/ui/interactive_tutorial.noinline/21_3_place_button.gif
Normal file
After Width: | Height: | Size: 531 KiB |
BIN
res/ui/interactive_tutorial.noinline/21_4_press_button.gif
Normal file
After Width: | Height: | Size: 1.4 MiB |
BIN
res/ui/interactive_tutorial.noinline/2_1_place_cutter.gif
Normal file
After Width: | Height: | Size: 502 KiB |
BIN
res/ui/interactive_tutorial.noinline/2_2_place_trash.gif
Normal file
After Width: | Height: | Size: 575 KiB |
BIN
res/ui/interactive_tutorial.noinline/2_3_more_cutters.gif
Normal file
After Width: | Height: | Size: 776 KiB |
BIN
res/ui/interactive_tutorial.noinline/3_1_rectangles.gif
Normal file
After Width: | Height: | Size: 1.1 MiB |
@ -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 |
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 8.9 KiB |
@ -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 {
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -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",
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -44,7 +44,6 @@ export class RestrictionManager extends ReadWriteProxy {
|
||||
* @param {any} data
|
||||
*/
|
||||
migrate(data) {
|
||||
// Todo
|
||||
return ExplainedResult.good();
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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() {
|
||||
|
@ -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;
|
||||
|
@ -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,
|
||||
|
@ -31,7 +31,7 @@ export class WiredPinsComponent extends Component {
|
||||
|
||||
static getSchema() {
|
||||
return {
|
||||
slots: types.array(
|
||||
slots: types.fixedSizeArray(
|
||||
types.structured({
|
||||
value: types.nullable(typeItemSingleton),
|
||||
})
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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 {
|
||||
|
34
src/js/game/hud/parts/tutorial_video_offer.js
Normal 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);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -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";
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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,
|
||||
},
|
||||
|
@ -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]);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -32,7 +32,8 @@
|
||||
},
|
||||
"chunkOverview": {
|
||||
"empty": "#444856",
|
||||
"filled": "#646b7d"
|
||||
"filled": "#646b7d",
|
||||
"beltColor": "#9096a3"
|
||||
},
|
||||
|
||||
"wires": {
|
||||
|
@ -33,7 +33,8 @@
|
||||
|
||||
"chunkOverview": {
|
||||
"empty": "#a6afbb",
|
||||
"filled": "#c5ccd6"
|
||||
"filled": "#c5ccd6",
|
||||
"beltColor": "#777"
|
||||
},
|
||||
|
||||
"wires": {
|
||||
|
@ -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],
|
||||
|
@ -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: "",
|
||||
},
|
||||
};
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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 {
|
||||
/**
|
||||
*
|
||||
|
@ -41,7 +41,7 @@ export class SavegameManager extends ReadWriteProxy {
|
||||
}
|
||||
|
||||
verify(data) {
|
||||
// TODO / FIXME!!!!
|
||||
// @TODO
|
||||
return ExplainedResult.good();
|
||||
}
|
||||
|
||||
|
@ -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,
|
||||
};
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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: Συνδιασμοί πλήκτρων
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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を利用するようにしてください。これらはそれぞれ建造物配置の際の機能があります。"
|
||||
|
@ -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>키를 누르면 벨트 계획기가 활성화되어 긴 길이의 벨트 한 줄을 쉽게 배치할 수 있습니다.
|
||||
- 절단기는 들어오는 도형과 배치된 절단기의 방향에 관계 없이, 언제나 수직으로 자릅니다.
|
||||
- 흰색은 세 가지의 색소를 혼합해야 합니다.
|
||||
- 저장고의 양쪽 출력 중 왼쪽 출력이 가장 우선됩니다.
|
||||
|
@ -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
|
||||
|
@ -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:
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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 дважды, чтобы показать координаты курсора и камеры.
|
||||
- Вы можете нажать на закрепленную фигуру слева, чтобы открепить ее.
|
||||
- Для очистки конвейеров, вырежьте область и вставьте её в то же место.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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: Гарячі клавіши
|
||||
|
@ -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: 按键设置
|
||||
|
@ -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 兩次來顯示相機和游標的絕對位置。
|
||||
- 在已標記的圖形上按左鍵去除標記。
|
||||
|