mirror of
https://github.com/tobspr/shapez.io.git
synced 2024-10-27 20:34:29 +00:00
1.5.4 update (polishing + minor rebalancing)
This commit is contained in:
parent
6a8e519c0a
commit
3ab5ca99fd
29
gulp/html.js
29
gulp/html.js
@ -118,6 +118,10 @@ function gulptasksHTML($, gulp, buildFolder) {
|
||||
style.textContent = loadingCss;
|
||||
document.head.appendChild(style);
|
||||
|
||||
let bodyContent = fs
|
||||
.readFileSync(path.join(__dirname, "preloader", "preloader.html"))
|
||||
.toString();
|
||||
|
||||
// Append loader, but not in standalone (directly include bundle there)
|
||||
if (standalone) {
|
||||
const bundleScript = document.createElement("script");
|
||||
@ -135,19 +139,12 @@ function gulptasksHTML($, gulp, buildFolder) {
|
||||
loadJs.type = "text/javascript";
|
||||
let scriptContent = "";
|
||||
scriptContent += `var bundleSrc = '${cachebust("bundle.js")}';\n`;
|
||||
// scriptContent += `var bundleSrcTranspiled = '${cachebust(
|
||||
// "bundle-transpiled.js"
|
||||
// )}';\n`;
|
||||
|
||||
if (integrity) {
|
||||
scriptContent +=
|
||||
"var bundleIntegrity = '" +
|
||||
computeIntegrityHash(path.join(buildFolder, "bundle.js")) +
|
||||
"';\n";
|
||||
// scriptContent +=
|
||||
// "var bundleIntegrityTranspiled = '" +
|
||||
// computeIntegrityHash(path.join(buildFolder, "bundle-transpiled.js")) +
|
||||
// "';\n";
|
||||
} else {
|
||||
scriptContent += "var bundleIntegrity = null;\n";
|
||||
scriptContent += "var bundleIntegrityTranspiled = null;\n";
|
||||
@ -158,11 +155,21 @@ function gulptasksHTML($, gulp, buildFolder) {
|
||||
.toString();
|
||||
loadJs.textContent = scriptContent;
|
||||
document.head.appendChild(loadJs);
|
||||
}
|
||||
|
||||
const bodyContent = fs
|
||||
.readFileSync(path.join(__dirname, "preloader", "preloader.html"))
|
||||
.toString();
|
||||
// Click fraud prevention
|
||||
bodyContent =
|
||||
`
|
||||
<script type="text/javascript">
|
||||
var script = document.createElement("script");
|
||||
script.async = true;
|
||||
script.type = "text/javascript";
|
||||
var target = "https://www.clickcease.com/monitor/stat.js";
|
||||
script.src = target;
|
||||
var elem = document.head;
|
||||
elem.appendChild(script);
|
||||
</script>
|
||||
` + bodyContent;
|
||||
}
|
||||
|
||||
document.body.innerHTML = bodyContent;
|
||||
}
|
||||
|
BIN
res_raw/sounds/sfx/unlock_upgrade.wav
Normal file
BIN
res_raw/sounds/sfx/unlock_upgrade.wav
Normal file
Binary file not shown.
@ -1,28 +0,0 @@
|
||||
#ingame_HUD_DemoTimer {
|
||||
position: absolute;
|
||||
@include S(top, 10px);
|
||||
left: 50%;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
transform: translateX(-50%);
|
||||
color: rgb(248, 40, 106);
|
||||
|
||||
.timer {
|
||||
@include Heading;
|
||||
@include S(font-size, 40px);
|
||||
}
|
||||
|
||||
&.expired .timer {
|
||||
@include InlineAnimation(1s ease-in-out infinite) {
|
||||
50% {
|
||||
transform: scale(1.05);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.description {
|
||||
@include SuperSmallText;
|
||||
@include S(margin-top, 10px);
|
||||
text-transform: uppercase;
|
||||
}
|
||||
}
|
@ -311,6 +311,7 @@
|
||||
|
||||
50% {
|
||||
background-color: lighten($colorGreenBright, 10);
|
||||
transform: scale(1.02);
|
||||
}
|
||||
100% {
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
#ingame_HUD_StandaloneAdvantages {
|
||||
.content {
|
||||
@include S(width, 440px);
|
||||
@include S(width, 500px);
|
||||
@include S(min-height, 300px);
|
||||
}
|
||||
p {
|
||||
@ -10,14 +10,10 @@
|
||||
.points {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
@include S(grid-column-gap, 10px);
|
||||
@include S(grid-row-gap, 20px);
|
||||
@include S(margin, 10px, 0, 20px);
|
||||
grid-template-rows: #{D(30px)};
|
||||
@include S(grid-column-gap, 5px);
|
||||
@include S(grid-row-gap, 5px);
|
||||
@include S(margin, 10px, 0, 10px);
|
||||
align-items: center;
|
||||
background: #eef1f4;
|
||||
@include S(border-radius, $globalBorderRadius);
|
||||
@include S(padding, 15px, 4px);
|
||||
}
|
||||
|
||||
.title {
|
||||
@ -90,20 +86,15 @@
|
||||
|
||||
.playtimeDisclaimerDownload {
|
||||
@include SuperSmallText;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
background: #b3f2c5;
|
||||
@include S(border-radius, $globalBorderRadius);
|
||||
@include S(padding, 7px, 10px);
|
||||
@include S(padding, 4px, 4px);
|
||||
@include S(margin-bottom, 15px);
|
||||
pointer-events: all;
|
||||
transition: background-color 0.12s ease-in-out;
|
||||
color: rgba(#000, 0.5);
|
||||
|
||||
&:hover {
|
||||
background: darken(#b3f2c5, 3);
|
||||
}
|
||||
cursor: pointer;
|
||||
|
||||
strong {
|
||||
@ -121,6 +112,12 @@
|
||||
overflow: visible;
|
||||
@include S(border-radius, $globalBorderRadius);
|
||||
|
||||
@include InlineAnimation(1s ease-in-out infinite) {
|
||||
50% {
|
||||
transform: scale(1.02, 1.03);
|
||||
}
|
||||
}
|
||||
|
||||
> .discount {
|
||||
position: absolute;
|
||||
@include S(top, -7px);
|
||||
@ -143,8 +140,13 @@
|
||||
|
||||
.point {
|
||||
display: grid;
|
||||
grid-template-columns: #{D(55px)} auto;
|
||||
grid-template-columns: #{D(50px)} auto;
|
||||
grid-template-rows: D(20px) D(20px);
|
||||
background: #eff2f4 #{D(12px)} center / #{D(30px)} no-repeat;
|
||||
|
||||
@include S(border-radius, $globalBorderRadius);
|
||||
@include S(padding, 10px, 4px, 4px);
|
||||
@include S(height, 40px);
|
||||
|
||||
> strong {
|
||||
grid-column: 2 / 3;
|
||||
@ -161,8 +163,6 @@
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
background: transparent #{D(10px)} center / #{D(30px)} no-repeat;
|
||||
|
||||
&.levels {
|
||||
& {
|
||||
/* @load-async */
|
||||
|
@ -49,7 +49,6 @@
|
||||
@import "ingame_hud/entity_debugger";
|
||||
@import "ingame_hud/tutorial_hints";
|
||||
@import "ingame_hud/watermark";
|
||||
@import "ingame_hud/demo_timer";
|
||||
@import "ingame_hud/blueprint_placer";
|
||||
@import "ingame_hud/waypoints";
|
||||
@import "ingame_hud/interactive_tutorial";
|
||||
@ -113,7 +112,6 @@ ingame_HUD_BetaOverlay,
|
||||
ingame_HUD_Shop,
|
||||
ingame_HUD_Statistics,
|
||||
ingame_HUD_ShapeViewer,
|
||||
ingame_HUD_DemoTimer,
|
||||
ingame_HUD_StandaloneAdvantages,
|
||||
ingame_HUD_UnlockNotification,
|
||||
ingame_HUD_PuzzleCompleteNotification,
|
||||
|
@ -58,7 +58,7 @@ export class BackgroundResourcesLoader {
|
||||
return this.mainMenuPromise;
|
||||
}
|
||||
|
||||
logger.warn("⏰ Loading main menu assets");
|
||||
logger.log("⏰ Loading main menu assets");
|
||||
return (this.mainMenuPromise = this.loadAssets(MAIN_MENU_ASSETS));
|
||||
}
|
||||
|
||||
@ -66,7 +66,7 @@ export class BackgroundResourcesLoader {
|
||||
if (this.ingamePromise) {
|
||||
return this.ingamePromise;
|
||||
}
|
||||
logger.warn("⏰ Loading ingame assets");
|
||||
logger.log("⏰ Loading ingame assets");
|
||||
const promise = this.loadAssets(INGAME_ASSETS).then(() => initSpriteCache());
|
||||
return (this.ingamePromise = promise);
|
||||
}
|
||||
|
@ -79,8 +79,8 @@ export class StaleAreaDetector {
|
||||
*/
|
||||
update() {
|
||||
if (this.staleArea) {
|
||||
logger.log(this.name, "is recomputing", this.staleArea.toString());
|
||||
if (G_IS_DEV && globalConfig.debug.renderChanges) {
|
||||
logger.log(this.name, "is recomputing", this.staleArea.toString());
|
||||
this.root.hud.parts.changesDebugger.renderChange(this.name, this.staleArea, "#fd145b");
|
||||
}
|
||||
this.recomputeMethod(this.staleArea);
|
||||
|
@ -13,7 +13,6 @@ import { HUDBuildingPlacer } from "./parts/building_placer";
|
||||
import { HUDColorBlindHelper } from "./parts/color_blind_helper";
|
||||
import { HUDChangesDebugger } from "./parts/debug_changes";
|
||||
import { HUDDebugInfo } from "./parts/debug_info";
|
||||
import { HUDDemoTimer } from "./parts/demo_timer";
|
||||
import { HUDEntityDebugger } from "./parts/entity_debugger";
|
||||
import { HUDModalDialogs } from "./parts/modal_dialogs";
|
||||
import { enumNotificationType } from "./parts/notifications";
|
||||
@ -86,10 +85,6 @@ export class GameHUD {
|
||||
this.parts.betaOverlay = new HUDBetaOverlay(this.root);
|
||||
}
|
||||
|
||||
if (this.root.app.restrictionMgr.getIsStandaloneMarketingActive()) {
|
||||
this.parts.demoTimer = new HUDDemoTimer(this.root);
|
||||
}
|
||||
|
||||
const additionalParts = this.root.gameMode.additionalHudParts;
|
||||
for (const [partId, part] of Object.entries(additionalParts)) {
|
||||
this.parts[partId] = new part(this.root);
|
||||
@ -217,7 +212,7 @@ export class GameHUD {
|
||||
* @param {DrawParameters} parameters
|
||||
*/
|
||||
drawOverlays(parameters) {
|
||||
const partsOrder = ["waypoints", "wireInfo"];
|
||||
const partsOrder = ["waypoints", "watermark", "wireInfo"];
|
||||
|
||||
for (let i = 0; i < partsOrder.length; ++i) {
|
||||
if (this.parts[partsOrder[i]]) {
|
||||
|
@ -1,43 +0,0 @@
|
||||
import { makeDiv } from "../../../core/utils";
|
||||
import { T } from "../../../translations";
|
||||
import { BaseHUDPart } from "../base_hud_part";
|
||||
|
||||
export class HUDDemoTimer extends BaseHUDPart {
|
||||
createElements(parent) {
|
||||
this.mainElement = makeDiv(parent, "ingame_HUD_DemoTimer", [], "");
|
||||
|
||||
this.timerElement = makeDiv(this.mainElement, null, ["timer"], "12:00");
|
||||
this.descElement = makeDiv(this.mainElement, null, ["description"], T.demoBanners.untilEndOfDemo);
|
||||
|
||||
this.currentValue = "";
|
||||
}
|
||||
|
||||
get totalTime() {
|
||||
return G_IS_STEAM_DEMO ? 15 : 30;
|
||||
}
|
||||
|
||||
initialize() {}
|
||||
|
||||
update() {
|
||||
const time = Math.max(0, this.totalTime * 60 - this.root.time.now());
|
||||
|
||||
let minutes = Math.floor(time / 60);
|
||||
let seconds = Math.floor(time % 60);
|
||||
let displayString = String(minutes).padStart(2, "0") + ":" + String(seconds).padStart(2, "0");
|
||||
|
||||
if (displayString !== this.currentValue) {
|
||||
this.currentValue = displayString;
|
||||
this.timerElement.innerText = displayString;
|
||||
if (time === 0) {
|
||||
this.mainElement.classList.add("expired");
|
||||
}
|
||||
}
|
||||
|
||||
if (time === 0) {
|
||||
const advantages = this.root.hud.parts.standaloneAdvantages;
|
||||
if (advantages && !advantages.visible) {
|
||||
advantages.show(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
import { ClickDetector } from "../../../core/click_detector";
|
||||
import { InputReceiver } from "../../../core/input_receiver";
|
||||
import { formatBigNumber, getRomanNumber, makeDiv } from "../../../core/utils";
|
||||
import { SOUNDS } from "../../../platform/sound";
|
||||
import { T } from "../../../translations";
|
||||
import { KeyActionMapper, KEYMAPPINGS } from "../../key_action_mapper";
|
||||
import { BaseHUDPart } from "../base_hud_part";
|
||||
@ -243,8 +244,9 @@ export class HUDShop extends BaseHUDPart {
|
||||
}
|
||||
|
||||
tryUnlockNextTier(upgradeId) {
|
||||
// Nothing
|
||||
this.root.hubGoals.tryUnlockUpgrade(upgradeId);
|
||||
if (this.root.hubGoals.tryUnlockUpgrade(upgradeId)) {
|
||||
this.root.app.sound.playUiSound(SOUNDS.unlockUpgrade);
|
||||
}
|
||||
}
|
||||
|
||||
isBlockingOverlay() {
|
||||
|
@ -12,8 +12,8 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
|
||||
|
||||
// DIALOG Inner / Wrapper
|
||||
this.dialogInner = makeDiv(this.background, null, ["dialogInner"]);
|
||||
this.title = makeDiv(this.dialogInner, null, ["title"], T.ingame.standaloneAdvantages.title_expired);
|
||||
this.subTitle = makeDiv(this.dialogInner, null, ["subTitle"], T.ingame.standaloneAdvantages.title);
|
||||
this.title = makeDiv(this.dialogInner, null, ["title"], "");
|
||||
this.subTitle = makeDiv(this.dialogInner, null, ["subTitle"], T.ingame.standaloneAdvantages.titleV2);
|
||||
|
||||
this.contentDiv = makeDiv(
|
||||
this.dialogInner,
|
||||
@ -34,7 +34,6 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
|
||||
</div>
|
||||
|
||||
<div class="lowerBar">
|
||||
<div class="playtimeDisclaimer">${T.demoBanners.playtimeDisclaimer}</div>
|
||||
|
||||
<div class="playtimeDisclaimerDownload">${T.demoBanners.playtimeDisclaimerDownload}</div>
|
||||
|
||||
@ -75,6 +74,18 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
|
||||
return 15 * 60;
|
||||
}
|
||||
|
||||
shouldPauseGame() {
|
||||
return this.visible;
|
||||
}
|
||||
|
||||
shouldPauseRendering() {
|
||||
return this.visible;
|
||||
}
|
||||
|
||||
hasBlockingOverlayOpen() {
|
||||
return this.visible;
|
||||
}
|
||||
|
||||
initialize() {
|
||||
this.domAttach = new DynamicDomAttach(this.root, this.background, {
|
||||
attachClass: "visible",
|
||||
@ -83,7 +94,8 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
|
||||
this.inputReciever = new InputReceiver("standalone-advantages");
|
||||
this.close();
|
||||
|
||||
// On standalone, show popup instant - but don't do so on web
|
||||
// On standalone, show popup instant - but don't do so on web, since it increases
|
||||
// the amount of clicks to get into the game
|
||||
if (G_IS_STEAM_DEMO) {
|
||||
// show instant
|
||||
this.lastShown = -1e10;
|
||||
@ -91,6 +103,15 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
|
||||
// wait for next interval
|
||||
this.lastShown = 0;
|
||||
}
|
||||
|
||||
this.root.signals.gameRestored.add(() => {
|
||||
if (
|
||||
this.root.hubGoals.level >= this.root.gameMode.getLevelDefinitions().length - 1 &&
|
||||
this.root.app.restrictionMgr.getIsStandaloneMarketingActive()
|
||||
) {
|
||||
this.show(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
show(final = false) {
|
||||
@ -98,6 +119,12 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
|
||||
this.visible = true;
|
||||
this.final = final;
|
||||
this.root.app.inputMgr.makeSureAttachedAndOnTop(this.inputReciever);
|
||||
|
||||
if (this.final) {
|
||||
this.title.innerText = T.ingame.standaloneAdvantages.titleExpiredV2;
|
||||
} else {
|
||||
this.title.innerText = T.ingame.standaloneAdvantages.titleEnjoyingDemo;
|
||||
}
|
||||
}
|
||||
|
||||
close() {
|
||||
@ -112,6 +139,10 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
|
||||
}
|
||||
|
||||
update() {
|
||||
if (!this.visible && this.root.time.now() - this.lastShown > this.showIntervalSeconds) {
|
||||
this.show();
|
||||
}
|
||||
|
||||
this.domAttach.update(this.visible);
|
||||
}
|
||||
}
|
||||
|
@ -31,10 +31,6 @@ export class HUDUnlockNotification extends BaseHUDPart {
|
||||
|
||||
this.element = makeDiv(parent, "ingame_HUD_UnlockNotification", ["noBlur"]);
|
||||
|
||||
if (G_IS_STEAM_DEMO || !G_IS_STANDALONE) {
|
||||
this.element.classList.add("withinDemo");
|
||||
}
|
||||
|
||||
const dialog = makeDiv(this.element, null, ["dialog"]);
|
||||
|
||||
this.elemTitle = makeDiv(dialog, null, ["title"]);
|
||||
@ -135,6 +131,13 @@ export class HUDUnlockNotification extends BaseHUDPart {
|
||||
|
||||
this.root.hud.signals.unlockNotificationFinished.dispatch();
|
||||
|
||||
if (
|
||||
this.root.hubGoals.level > this.root.gameMode.getLevelDefinitions().length - 1 &&
|
||||
this.root.app.restrictionMgr.getIsStandaloneMarketingActive()
|
||||
) {
|
||||
this.root.hud.parts.standaloneAdvantages.show(true);
|
||||
}
|
||||
|
||||
if (!this.root.app.settings.getAllSettings().offerHints) {
|
||||
return;
|
||||
}
|
||||
|
@ -5,23 +5,6 @@ import { BaseHUDPart } from "../base_hud_part";
|
||||
|
||||
export class HUDWatermark extends BaseHUDPart {
|
||||
createElements(parent) {
|
||||
// To be continued later
|
||||
// let linkText = "";
|
||||
// switch (this.root.app.gameAnalytics.abtVariant) {
|
||||
// case "0": {
|
||||
// linkText = "Get on Steam";
|
||||
// break;
|
||||
// }
|
||||
// case "1": {
|
||||
// linkText = "Play on Steam";
|
||||
// break;
|
||||
// }
|
||||
// case "2": {
|
||||
// linkText = T.ingame.watermark.get_on_steam;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
|
||||
let linkText = T.ingame.watermark.get_on_steam;
|
||||
|
||||
this.linkElement = makeDiv(
|
||||
@ -41,4 +24,23 @@ export class HUDWatermark extends BaseHUDPart {
|
||||
initialize() {}
|
||||
|
||||
update() {}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {import("../../../core/draw_utils").DrawParameters} parameters
|
||||
*/
|
||||
drawOverlays(parameters) {
|
||||
const w = this.root.gameWidth;
|
||||
|
||||
parameters.context.fillStyle = "rgba(20, 30, 40, 0.25)";
|
||||
parameters.context.font = "bold " + this.root.app.getEffectiveUiScale() * 40 + "px GameFont";
|
||||
parameters.context.textAlign = "center";
|
||||
parameters.context.fillText(
|
||||
T.demoBanners.title.toUpperCase(),
|
||||
w / 2,
|
||||
this.root.app.getEffectiveUiScale() * 50
|
||||
);
|
||||
|
||||
parameters.context.textAlign = "left";
|
||||
}
|
||||
}
|
||||
|
@ -22,8 +22,12 @@ export class MapView extends BaseMap {
|
||||
|
||||
/**
|
||||
* The cached background sprite, containing the flat background
|
||||
* @type {HTMLCanvasElement} */
|
||||
this.cachedBackgroundCanvas = null;
|
||||
* @type {Object<string, HTMLCanvasElement | null>}
|
||||
*/
|
||||
this.cachedBackgroundCanvases = {
|
||||
regular: null,
|
||||
placing: null,
|
||||
};
|
||||
|
||||
/** @type {CanvasRenderingContext2D} */
|
||||
this.cachedBackgroundContext = null;
|
||||
@ -36,8 +40,10 @@ export class MapView extends BaseMap {
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
freeCanvas(this.cachedBackgroundCanvas);
|
||||
this.cachedBackgroundCanvas = null;
|
||||
for (const key in this.cachedBackgroundCanvases) {
|
||||
freeCanvas(this.cachedBackgroundCanvases[key]);
|
||||
this.cachedBackgroundCanvases[key] = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -99,28 +105,29 @@ export class MapView extends BaseMap {
|
||||
* Initializes all canvases used for background rendering
|
||||
*/
|
||||
internalInitializeCachedBackgroundCanvases() {
|
||||
// Background canvas
|
||||
const dims = globalConfig.tileSize;
|
||||
const dpi = this.backgroundCacheDPI;
|
||||
const [canvas, context] = makeOffscreenBuffer(dims * dpi, dims * dpi, {
|
||||
smooth: false,
|
||||
label: "map-cached-bg",
|
||||
});
|
||||
context.scale(dpi, dpi);
|
||||
for (const key in this.cachedBackgroundCanvases) {
|
||||
// Background canvas
|
||||
const dims = globalConfig.tileSize;
|
||||
const dpi = this.backgroundCacheDPI;
|
||||
const [canvas, context] = makeOffscreenBuffer(dims * dpi, dims * dpi, {
|
||||
smooth: false,
|
||||
label: "map-cached-bg",
|
||||
});
|
||||
context.scale(dpi, dpi);
|
||||
|
||||
context.fillStyle = THEME.map.background;
|
||||
context.fillRect(0, 0, dims, dims);
|
||||
context.fillStyle = THEME.map.background;
|
||||
context.fillRect(0, 0, dims, dims);
|
||||
|
||||
const borderWidth = THEME.map.gridLineWidth;
|
||||
context.fillStyle = THEME.map.grid;
|
||||
context.fillRect(0, 0, dims, borderWidth);
|
||||
context.fillRect(0, borderWidth, borderWidth, dims);
|
||||
const borderWidth = THEME.map.gridLineWidth;
|
||||
context.fillStyle = THEME.map["grid" + key[0].toUpperCase() + key.substring(1)] || "red";
|
||||
context.fillRect(0, 0, dims, borderWidth);
|
||||
context.fillRect(0, borderWidth, borderWidth, dims);
|
||||
|
||||
context.fillRect(dims - borderWidth, borderWidth, borderWidth, dims - 2 * borderWidth);
|
||||
context.fillRect(borderWidth, dims - borderWidth, dims, borderWidth);
|
||||
context.fillRect(dims - borderWidth, borderWidth, borderWidth, dims - 2 * borderWidth);
|
||||
context.fillRect(borderWidth, dims - borderWidth, dims, borderWidth);
|
||||
|
||||
this.cachedBackgroundCanvas = canvas;
|
||||
this.cachedBackgroundContext = context;
|
||||
this.cachedBackgroundCanvases[key] = canvas;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -225,14 +232,19 @@ export class MapView extends BaseMap {
|
||||
const dpi = this.backgroundCacheDPI;
|
||||
parameters.context.scale(1 / dpi, 1 / dpi);
|
||||
|
||||
// @ts-ignore
|
||||
if (this.cachedBackgroundCanvas._contextLost) {
|
||||
freeCanvas(this.cachedBackgroundCanvas);
|
||||
let key = "regular";
|
||||
if (this.root.hud.parts.buildingPlacer.currentMetaBuilding.get()) {
|
||||
key = "placing";
|
||||
}
|
||||
|
||||
// @ts-ignore`
|
||||
if (this.cachedBackgroundCanvases[key]._contextLost) {
|
||||
freeCanvas(this.cachedBackgroundCanvases[key]);
|
||||
this.internalInitializeCachedBackgroundCanvases();
|
||||
}
|
||||
|
||||
parameters.context.fillStyle = parameters.context.createPattern(
|
||||
this.cachedBackgroundCanvas,
|
||||
this.cachedBackgroundCanvases[key],
|
||||
"repeat"
|
||||
);
|
||||
parameters.context.fillRect(
|
||||
|
@ -1,249 +1,363 @@
|
||||
import { enumHubGoalRewards } from "../tutorial_goals";
|
||||
|
||||
export const LevelSetVariant = {
|
||||
NoRestrictions: "NoRestrictions",
|
||||
LimitedLevel8: "LimitedLevel8",
|
||||
LimitedLevelBlueprints: "LimitedLevelBlueprints",
|
||||
};
|
||||
|
||||
export const finalGameShape = "RuCw--Cw:----Ru--";
|
||||
const chinaShapes = G_WEGAME_VERSION || G_CHINA_VERSION;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const WEB_DEMO_LEVELS = () => [
|
||||
// 1
|
||||
// Circle
|
||||
{
|
||||
shape: "CuCuCuCu", // belts t1
|
||||
required: 10,
|
||||
reward: enumHubGoalRewards.reward_cutter_and_trash,
|
||||
},
|
||||
|
||||
// 2
|
||||
// Cutter
|
||||
{
|
||||
shape: "----CuCu", //
|
||||
required: 20,
|
||||
reward: enumHubGoalRewards.no_reward,
|
||||
},
|
||||
|
||||
// 3
|
||||
// Rectangle
|
||||
{
|
||||
shape: "RuRuRuRu", // miners t1
|
||||
required: 50,
|
||||
reward: enumHubGoalRewards.reward_balancer,
|
||||
},
|
||||
|
||||
// 4
|
||||
{
|
||||
shape: "RuRu----", // processors t2
|
||||
required: 30,
|
||||
reward: enumHubGoalRewards.reward_rotater,
|
||||
},
|
||||
|
||||
// 5
|
||||
// Rotater
|
||||
{
|
||||
shape: "Cu----Cu", // belts t2
|
||||
required: 75,
|
||||
reward: enumHubGoalRewards.reward_tunnel,
|
||||
},
|
||||
|
||||
// 6
|
||||
{
|
||||
shape: "Cu------", // miners t2
|
||||
required: 75,
|
||||
reward: enumHubGoalRewards.reward_painter,
|
||||
},
|
||||
|
||||
// 7
|
||||
// Painter
|
||||
{
|
||||
shape: "CrCrCrCr", // unused
|
||||
required: 120,
|
||||
reward: enumHubGoalRewards.reward_rotater_ccw,
|
||||
},
|
||||
// 8
|
||||
{
|
||||
shape: "RbRb----", // painter t2
|
||||
required: 170,
|
||||
reward: enumHubGoalRewards.reward_mixer,
|
||||
},
|
||||
// End of demo
|
||||
{
|
||||
shape: "RbRb----",
|
||||
required: 0,
|
||||
reward: enumHubGoalRewards.reward_demo_end,
|
||||
},
|
||||
];
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const STEAM_DEMO_LEVELS = () => [
|
||||
// 1
|
||||
// Circle
|
||||
{
|
||||
shape: "CuCuCuCu", // belts t1
|
||||
required: 35,
|
||||
reward: enumHubGoalRewards.reward_cutter_and_trash,
|
||||
},
|
||||
|
||||
// 2
|
||||
// Cutter
|
||||
{
|
||||
shape: "----CuCu", //
|
||||
required: 45,
|
||||
reward: enumHubGoalRewards.no_reward,
|
||||
},
|
||||
|
||||
// 3
|
||||
// Rectangle
|
||||
{
|
||||
shape: "RuRuRuRu", // miners t1
|
||||
required: 90,
|
||||
reward: enumHubGoalRewards.reward_balancer,
|
||||
},
|
||||
|
||||
// 4
|
||||
{
|
||||
shape: "RuRu----", // processors t2
|
||||
required: 70,
|
||||
reward: enumHubGoalRewards.reward_rotater,
|
||||
},
|
||||
|
||||
// 5
|
||||
// Rotater
|
||||
{
|
||||
shape: "Cu----Cu", // belts t2
|
||||
required: 160,
|
||||
reward: enumHubGoalRewards.reward_tunnel,
|
||||
},
|
||||
|
||||
// 6
|
||||
{
|
||||
shape: "Cu------", // miners t2
|
||||
required: 160,
|
||||
reward: enumHubGoalRewards.reward_painter,
|
||||
},
|
||||
|
||||
// 7
|
||||
// Painter
|
||||
{
|
||||
shape: "CrCrCrCr", // unused
|
||||
required: 140,
|
||||
reward: enumHubGoalRewards.reward_rotater_ccw,
|
||||
},
|
||||
// 8
|
||||
{
|
||||
shape: "RbRb----", // painter t2
|
||||
required: 225,
|
||||
reward: enumHubGoalRewards.reward_mixer,
|
||||
},
|
||||
// End of demo
|
||||
{
|
||||
shape: "RbRb----",
|
||||
required: 0,
|
||||
reward: enumHubGoalRewards.reward_demo_end,
|
||||
},
|
||||
];
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
const STANDALONE_LEVELS = () => [
|
||||
// 1
|
||||
// Circle
|
||||
{
|
||||
shape: "CuCuCuCu", // belts t1
|
||||
required: 30,
|
||||
reward: enumHubGoalRewards.reward_cutter_and_trash,
|
||||
},
|
||||
|
||||
// 2
|
||||
// Cutter
|
||||
{
|
||||
shape: "----CuCu", //
|
||||
required: 40,
|
||||
reward: enumHubGoalRewards.no_reward,
|
||||
},
|
||||
|
||||
// 3
|
||||
// Rectangle
|
||||
{
|
||||
shape: "RuRuRuRu", // miners t1
|
||||
required: 70,
|
||||
reward: enumHubGoalRewards.reward_balancer,
|
||||
},
|
||||
|
||||
// 4
|
||||
{
|
||||
shape: "RuRu----", // processors t2
|
||||
required: 70,
|
||||
reward: enumHubGoalRewards.reward_rotater,
|
||||
},
|
||||
|
||||
// 5
|
||||
// Rotater
|
||||
{
|
||||
shape: "Cu----Cu", // belts t2
|
||||
required: 170,
|
||||
reward: enumHubGoalRewards.reward_tunnel,
|
||||
},
|
||||
|
||||
// 6
|
||||
{
|
||||
shape: "Cu------", // miners t2
|
||||
required: 270,
|
||||
reward: enumHubGoalRewards.reward_painter,
|
||||
},
|
||||
|
||||
// 7
|
||||
// Painter
|
||||
{
|
||||
shape: "CrCrCrCr", // unused
|
||||
required: 300,
|
||||
reward: enumHubGoalRewards.reward_rotater_ccw,
|
||||
},
|
||||
// 8
|
||||
{
|
||||
shape: "RbRb----", // painter t2
|
||||
required: 480,
|
||||
reward: enumHubGoalRewards.reward_mixer,
|
||||
},
|
||||
// 9
|
||||
// Mixing (purple)
|
||||
{
|
||||
shape: "CpCpCpCp", // belts t3
|
||||
required: 600,
|
||||
reward: enumHubGoalRewards.reward_merger,
|
||||
},
|
||||
|
||||
// 10
|
||||
// STACKER: Star shape + cyan
|
||||
{
|
||||
shape: "ScScScSc", // miners t3
|
||||
required: 800,
|
||||
reward: enumHubGoalRewards.reward_stacker,
|
||||
},
|
||||
|
||||
// 11
|
||||
// Chainable miner
|
||||
{
|
||||
shape: "CgScScCg", // processors t3
|
||||
required: 1000,
|
||||
reward: enumHubGoalRewards.reward_miner_chainable,
|
||||
},
|
||||
|
||||
// 12
|
||||
// Blueprints
|
||||
{
|
||||
shape: "CbCbCbRb:CwCwCwCw",
|
||||
required: 1000,
|
||||
reward: enumHubGoalRewards.reward_blueprints,
|
||||
},
|
||||
// 13
|
||||
// Tunnel Tier 2
|
||||
{
|
||||
shape: chinaShapes ? "CuCuCuCu:CwCwCwCw:Sb--Sr--" : "RpRpRpRp:CwCwCwCw", // painting t3
|
||||
required: 3800,
|
||||
reward: enumHubGoalRewards.reward_underground_belt_tier_2,
|
||||
},
|
||||
|
||||
// 14
|
||||
// Belt reader
|
||||
{
|
||||
shape: "--Cg----:--Cr----", // unused
|
||||
required: 8, // Per second!
|
||||
reward: enumHubGoalRewards.reward_belt_reader,
|
||||
throughputOnly: true,
|
||||
},
|
||||
|
||||
// 15
|
||||
// Storage
|
||||
{
|
||||
shape: "SrSrSrSr:CyCyCyCy", // unused
|
||||
required: 10000,
|
||||
reward: enumHubGoalRewards.reward_storage,
|
||||
},
|
||||
|
||||
// 16
|
||||
// Quad Cutter
|
||||
{
|
||||
shape: "SrSrSrSr:CyCyCyCy:SwSwSwSw", // belts t4 (two variants)
|
||||
required: 6000,
|
||||
reward: enumHubGoalRewards.reward_cutter_quad,
|
||||
},
|
||||
|
||||
// 17
|
||||
// Double painter
|
||||
{
|
||||
shape: chinaShapes ? "CyCyCyCy:CyCyCyCy:RyRyRyRy:RuRuRuRu" : "CbRbRbCb:CwCwCwCw:WbWbWbWb", // miner t4 (two variants)
|
||||
required: 20000,
|
||||
reward: enumHubGoalRewards.reward_painter_double,
|
||||
},
|
||||
|
||||
// 18
|
||||
// Rotater (180deg)
|
||||
{
|
||||
shape: "Sg----Sg:CgCgCgCg:--CyCy--", // unused
|
||||
required: 20000,
|
||||
reward: enumHubGoalRewards.reward_rotater_180,
|
||||
},
|
||||
|
||||
// 19
|
||||
// Compact splitter
|
||||
{
|
||||
shape: "CpRpCp--:SwSwSwSw",
|
||||
required: 25000,
|
||||
reward: enumHubGoalRewards.reward_splitter,
|
||||
},
|
||||
|
||||
// 20
|
||||
// WIRES
|
||||
{
|
||||
shape: finalGameShape,
|
||||
required: 25000,
|
||||
reward: enumHubGoalRewards.reward_wires_painter_and_levers,
|
||||
},
|
||||
|
||||
// 21
|
||||
// Filter
|
||||
{
|
||||
shape: "CrCwCrCw:CwCrCwCr:CrCwCrCw:CwCrCwCr",
|
||||
required: 25000,
|
||||
reward: enumHubGoalRewards.reward_filter,
|
||||
},
|
||||
|
||||
// 22
|
||||
// Constant signal
|
||||
{
|
||||
shape: chinaShapes ? "RrSySrSy:RyCrCwCr:CyCyRyCy" : "Cg----Cr:Cw----Cw:Sy------:Cy----Cy",
|
||||
required: 25000,
|
||||
reward: enumHubGoalRewards.reward_constant_signal,
|
||||
},
|
||||
|
||||
// 23
|
||||
// Display
|
||||
{
|
||||
shape: chinaShapes ? "CrCrCrCr:CwCwCwCw:WwWwWwWw:CrCrCrCr" : "CcSyCcSy:SyCcSyCc:CcSyCcSy",
|
||||
required: 25000,
|
||||
reward: enumHubGoalRewards.reward_display,
|
||||
},
|
||||
|
||||
// 24 Logic gates
|
||||
{
|
||||
shape: chinaShapes ? "Su----Su:RwRwRwRw:Cu----Cu:CwCwCwCw" : "CcRcCcRc:RwCwRwCw:Sr--Sw--:CyCyCyCy",
|
||||
required: 25000,
|
||||
reward: enumHubGoalRewards.reward_logic_gates,
|
||||
},
|
||||
|
||||
// 25 Virtual Processing
|
||||
{
|
||||
shape: "Rg--Rg--:CwRwCwRw:--Rg--Rg",
|
||||
required: 25000,
|
||||
reward: enumHubGoalRewards.reward_virtual_processing,
|
||||
},
|
||||
|
||||
// 26 Freeplay
|
||||
{
|
||||
shape: "CbCuCbCu:Sr------:--CrSrCr:CwCwCwCw",
|
||||
required: 50000,
|
||||
reward: enumHubGoalRewards.reward_freeplay,
|
||||
},
|
||||
];
|
||||
|
||||
/**
|
||||
* Generates the level definitions
|
||||
* @param {keyof typeof LevelSetVariant} variant
|
||||
*/
|
||||
export function generateLevelsForVariant(variant) {
|
||||
const levelDefinitions = [
|
||||
// 1
|
||||
// Circle
|
||||
{
|
||||
shape: "CuCuCuCu", // belts t1
|
||||
required: 30,
|
||||
reward: enumHubGoalRewards.reward_cutter_and_trash,
|
||||
},
|
||||
|
||||
// 2
|
||||
// Cutter
|
||||
{
|
||||
shape: "----CuCu", //
|
||||
required: 40,
|
||||
reward: enumHubGoalRewards.no_reward,
|
||||
},
|
||||
|
||||
// 3
|
||||
// Rectangle
|
||||
{
|
||||
shape: "RuRuRuRu", // miners t1
|
||||
required: 70,
|
||||
reward: enumHubGoalRewards.reward_balancer,
|
||||
},
|
||||
|
||||
// 4
|
||||
{
|
||||
shape: "RuRu----", // processors t2
|
||||
required: 70,
|
||||
reward: enumHubGoalRewards.reward_rotater,
|
||||
},
|
||||
|
||||
// 5
|
||||
// Rotater
|
||||
{
|
||||
shape: "Cu----Cu", // belts t2
|
||||
required: 170,
|
||||
reward: enumHubGoalRewards.reward_tunnel,
|
||||
},
|
||||
|
||||
// 6
|
||||
{
|
||||
shape: "Cu------", // miners t2
|
||||
required: 270,
|
||||
reward: enumHubGoalRewards.reward_painter,
|
||||
},
|
||||
|
||||
// 7
|
||||
// Painter
|
||||
{
|
||||
shape: "CrCrCrCr", // unused
|
||||
required: 300,
|
||||
reward: enumHubGoalRewards.reward_rotater_ccw,
|
||||
},
|
||||
];
|
||||
|
||||
if (variant === LevelSetVariant.LimitedLevel8) {
|
||||
// Variant: End of Demo (level 8)
|
||||
levelDefinitions.push({
|
||||
shape: "CrCrCrCr",
|
||||
required: 0,
|
||||
reward: enumHubGoalRewards.reward_demo_end,
|
||||
});
|
||||
return levelDefinitions;
|
||||
export function generateLevelsForVariant() {
|
||||
if (G_IS_STEAM_DEMO) {
|
||||
return STEAM_DEMO_LEVELS();
|
||||
} else if (G_IS_STANDALONE) {
|
||||
return STANDALONE_LEVELS();
|
||||
}
|
||||
|
||||
levelDefinitions.push(
|
||||
// 8
|
||||
{
|
||||
shape: "RbRb----", // painter t2
|
||||
required: 480,
|
||||
reward: enumHubGoalRewards.reward_mixer,
|
||||
},
|
||||
|
||||
// 9
|
||||
// Mixing (purple)
|
||||
{
|
||||
shape: "CpCpCpCp", // belts t3
|
||||
required: 600,
|
||||
reward: enumHubGoalRewards.reward_merger,
|
||||
},
|
||||
|
||||
// 10
|
||||
// STACKER: Star shape + cyan
|
||||
{
|
||||
shape: "ScScScSc", // miners t3
|
||||
required: 800,
|
||||
reward: enumHubGoalRewards.reward_stacker,
|
||||
},
|
||||
|
||||
// 11
|
||||
// Chainable miner
|
||||
{
|
||||
shape: "CgScScCg", // processors t3
|
||||
required: 1000,
|
||||
reward: enumHubGoalRewards.reward_miner_chainable,
|
||||
},
|
||||
|
||||
// 12
|
||||
// Blueprints
|
||||
{
|
||||
shape: "CbCbCbRb:CwCwCwCw",
|
||||
required: 1000,
|
||||
reward: enumHubGoalRewards.reward_blueprints,
|
||||
}
|
||||
);
|
||||
|
||||
if (variant === LevelSetVariant.LimitedLevelBlueprints) {
|
||||
// Variant: End of Demo (before blueprints)
|
||||
levelDefinitions.push({
|
||||
shape: "CbCbCbRb:CwCwCwCw",
|
||||
required: 0,
|
||||
reward: enumHubGoalRewards.reward_demo_end,
|
||||
});
|
||||
return levelDefinitions;
|
||||
}
|
||||
|
||||
levelDefinitions.push(
|
||||
// 13
|
||||
// Tunnel Tier 2
|
||||
{
|
||||
shape: chinaShapes ? "CuCuCuCu:CwCwCwCw:Sb--Sr--" : "RpRpRpRp:CwCwCwCw", // painting t3
|
||||
required: 3800,
|
||||
reward: enumHubGoalRewards.reward_underground_belt_tier_2,
|
||||
},
|
||||
|
||||
// 14
|
||||
// Belt reader
|
||||
{
|
||||
shape: "--Cg----:--Cr----", // unused
|
||||
required: 8, // Per second!
|
||||
reward: enumHubGoalRewards.reward_belt_reader,
|
||||
throughputOnly: true,
|
||||
},
|
||||
|
||||
// 15
|
||||
// Storage
|
||||
{
|
||||
shape: "SrSrSrSr:CyCyCyCy", // unused
|
||||
required: 10000,
|
||||
reward: enumHubGoalRewards.reward_storage,
|
||||
},
|
||||
|
||||
// 16
|
||||
// Quad Cutter
|
||||
{
|
||||
shape: "SrSrSrSr:CyCyCyCy:SwSwSwSw", // belts t4 (two variants)
|
||||
required: 6000,
|
||||
reward: enumHubGoalRewards.reward_cutter_quad,
|
||||
},
|
||||
|
||||
// 17
|
||||
// Double painter
|
||||
{
|
||||
shape: chinaShapes ? "CyCyCyCy:CyCyCyCy:RyRyRyRy:RuRuRuRu" : "CbRbRbCb:CwCwCwCw:WbWbWbWb", // miner t4 (two variants)
|
||||
required: 20000,
|
||||
reward: enumHubGoalRewards.reward_painter_double,
|
||||
},
|
||||
|
||||
// 18
|
||||
// Rotater (180deg)
|
||||
{
|
||||
shape: "Sg----Sg:CgCgCgCg:--CyCy--", // unused
|
||||
required: 20000,
|
||||
reward: enumHubGoalRewards.reward_rotater_180,
|
||||
},
|
||||
|
||||
// 19
|
||||
// Compact splitter
|
||||
{
|
||||
shape: "CpRpCp--:SwSwSwSw",
|
||||
required: 25000,
|
||||
reward: enumHubGoalRewards.reward_splitter,
|
||||
},
|
||||
|
||||
// 20
|
||||
// WIRES
|
||||
{
|
||||
shape: finalGameShape,
|
||||
required: 25000,
|
||||
reward: enumHubGoalRewards.reward_wires_painter_and_levers,
|
||||
},
|
||||
|
||||
// 21
|
||||
// Filter
|
||||
{
|
||||
shape: "CrCwCrCw:CwCrCwCr:CrCwCrCw:CwCrCwCr",
|
||||
required: 25000,
|
||||
reward: enumHubGoalRewards.reward_filter,
|
||||
},
|
||||
|
||||
// 22
|
||||
// Constant signal
|
||||
{
|
||||
shape: chinaShapes ? "RrSySrSy:RyCrCwCr:CyCyRyCy" : "Cg----Cr:Cw----Cw:Sy------:Cy----Cy",
|
||||
required: 25000,
|
||||
reward: enumHubGoalRewards.reward_constant_signal,
|
||||
},
|
||||
|
||||
// 23
|
||||
// Display
|
||||
{
|
||||
shape: chinaShapes ? "CrCrCrCr:CwCwCwCw:WwWwWwWw:CrCrCrCr" : "CcSyCcSy:SyCcSyCc:CcSyCcSy",
|
||||
required: 25000,
|
||||
reward: enumHubGoalRewards.reward_display,
|
||||
},
|
||||
|
||||
// 24 Logic gates
|
||||
{
|
||||
shape: chinaShapes
|
||||
? "Su----Su:RwRwRwRw:Cu----Cu:CwCwCwCw"
|
||||
: "CcRcCcRc:RwCwRwCw:Sr--Sw--:CyCyCyCy",
|
||||
required: 25000,
|
||||
reward: enumHubGoalRewards.reward_logic_gates,
|
||||
},
|
||||
|
||||
// 25 Virtual Processing
|
||||
{
|
||||
shape: "Rg--Rg--:CwRwCwRw:--Rg--Rg",
|
||||
required: 25000,
|
||||
reward: enumHubGoalRewards.reward_virtual_processing,
|
||||
},
|
||||
|
||||
// 26 Freeplay
|
||||
{
|
||||
shape: "CbCuCbCu:Sr------:--CrSrCr:CwCwCwCw",
|
||||
required: 50000,
|
||||
reward: enumHubGoalRewards.reward_freeplay,
|
||||
}
|
||||
);
|
||||
|
||||
return levelDefinitions;
|
||||
return WEB_DEMO_LEVELS();
|
||||
}
|
||||
|
@ -293,21 +293,17 @@ function generateUpgrades(limitedVersion = false, difficulty = 1) {
|
||||
return upgrades;
|
||||
}
|
||||
|
||||
const levelDefinitionsCache = {};
|
||||
let levelDefinitionsCache = null;
|
||||
|
||||
/**
|
||||
* Generates the level definitions
|
||||
* @param {keyof typeof LevelSetVariant} variant
|
||||
*/
|
||||
export function generateLevelDefinitions(variant, difficulty = 1) {
|
||||
if (levelDefinitionsCache[variant]) {
|
||||
return levelDefinitionsCache[variant];
|
||||
export function generateLevelDefinitions() {
|
||||
if (levelDefinitionsCache) {
|
||||
return levelDefinitionsCache;
|
||||
}
|
||||
|
||||
const levelDefinitions = generateLevelsForVariant(variant);
|
||||
|
||||
const levelDefinitions = generateLevelsForVariant();
|
||||
MOD_SIGNALS.modifyLevelDefinitions.dispatch(levelDefinitions);
|
||||
|
||||
if (G_IS_DEV) {
|
||||
levelDefinitions.forEach(({ shape }) => {
|
||||
try {
|
||||
@ -317,13 +313,7 @@ export function generateLevelDefinitions(variant, difficulty = 1) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
levelDefinitions.forEach(definition => {
|
||||
definition.required = Math.round(definition.required * difficulty);
|
||||
});
|
||||
|
||||
levelDefinitionsCache[variant] = levelDefinitions;
|
||||
|
||||
levelDefinitionsCache = levelDefinitions;
|
||||
return levelDefinitions;
|
||||
}
|
||||
|
||||
@ -412,14 +402,7 @@ export class RegularGameMode extends GameMode {
|
||||
* @returns {Array<LevelDefinition>}
|
||||
*/
|
||||
getLevelDefinitions() {
|
||||
if (this.root.app.restrictionMgr.isLimitedVersion()) {
|
||||
return generateLevelDefinitions(
|
||||
this.root.app.gameAnalytics.abtVariant === "0" ? "LimitedLevel8" : "LimitedLevelBlueprints",
|
||||
this.difficultyMultiplicator
|
||||
);
|
||||
} else {
|
||||
return generateLevelDefinitions("NoRestrictions", this.difficultyMultiplicator);
|
||||
}
|
||||
return generateLevelDefinitions();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,7 +1,9 @@
|
||||
{
|
||||
"map": {
|
||||
"background": "#3e3f47",
|
||||
"grid": "rgba(255, 255, 255, 0.02)",
|
||||
"gridRegular": "rgba(255, 255, 255, 0.02)",
|
||||
"gridPlacing": "rgba(255, 255, 255, 0.06)",
|
||||
|
||||
"gridLineWidth": 0.5,
|
||||
|
||||
"selectionOverlay": "rgba(74, 163, 223, 0.7)",
|
||||
|
@ -1,8 +1,11 @@
|
||||
{
|
||||
"map": {
|
||||
"background": "#fff",
|
||||
"grid": "#fafafa",
|
||||
"gridLineWidth": 1,
|
||||
"background": "#eceef6",
|
||||
|
||||
"gridRegular": "#e3e7f4",
|
||||
"gridPlacing": "#dadff0",
|
||||
|
||||
"gridLineWidth": 0.5,
|
||||
|
||||
"selectionOverlay": "rgba(74, 163, 223, 0.7)",
|
||||
"selectionOutline": "rgba(74, 163, 223, 0.5)",
|
||||
@ -29,9 +32,9 @@
|
||||
|
||||
"resources": {
|
||||
"shape": "#eaebec",
|
||||
"red": "#ffbfc1",
|
||||
"green": "#cbffc4",
|
||||
"blue": "#bfdaff"
|
||||
"red": "#f3bcb6",
|
||||
"green": "#ccf7a7",
|
||||
"blue": "#b2e0fa"
|
||||
},
|
||||
|
||||
"chunkOverview": {
|
||||
|
@ -28,8 +28,8 @@ const analyticsUrl = G_IS_DEV ? "http://localhost:8001" : "https://analytics.sha
|
||||
// Be sure to increment the ID whenever it changes
|
||||
const analyticsLocalFile = G_IS_STEAM_DEMO ? "shapez_token_steamdemo.bin" : "shapez_token_123.bin";
|
||||
|
||||
const CURRENT_ABT = "abt_unl";
|
||||
const CURRENT_ABT_COUNT = 2;
|
||||
const CURRENT_ABT = "abt_bsln";
|
||||
const CURRENT_ABT_COUNT = 1;
|
||||
|
||||
export class ShapezGameAnalytics extends GameAnalyticsInterface {
|
||||
constructor(app) {
|
||||
|
@ -26,6 +26,7 @@ export const SOUNDS = {
|
||||
placeBuilding: "place_building",
|
||||
placeBelt: "place_belt",
|
||||
copy: "copy",
|
||||
unlockUpgrade: "unlock_upgrade",
|
||||
};
|
||||
|
||||
export const MUSIC = {
|
||||
@ -150,6 +151,9 @@ export class SoundInterface {
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
loadSound(key) {
|
||||
if (!key) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
if (this.sounds[key]) {
|
||||
return this.sounds[key].load();
|
||||
} else if (this.music[key]) {
|
||||
@ -271,7 +275,7 @@ export class SoundInterface {
|
||||
*/
|
||||
playThemeMusic(key) {
|
||||
const music = this.music[key];
|
||||
if (key !== null && !music) {
|
||||
if (key && !music) {
|
||||
logger.warn("Music", key, "not found");
|
||||
}
|
||||
if (this.currentMusic !== music) {
|
||||
|
@ -513,12 +513,6 @@ export class ApplicationSettings extends ReadWriteProxy {
|
||||
|
||||
const settings = data.settings;
|
||||
|
||||
// MODS
|
||||
if (!THEMES[settings.theme] || !this.app.restrictionMgr.getHasExtendedSettings()) {
|
||||
console.warn("Resetting theme because its no longer available: " + settings.theme);
|
||||
settings.theme = "light";
|
||||
}
|
||||
|
||||
for (let i = 0; i < this.settingHandles.length; ++i) {
|
||||
const setting = this.settingHandles[i];
|
||||
const storedValue = settings[setting.id];
|
||||
@ -701,7 +695,7 @@ export class ApplicationSettings extends ReadWriteProxy {
|
||||
|
||||
// MODS
|
||||
if (!THEMES[data.settings.theme] || !this.app.restrictionMgr.getHasExtendedSettings()) {
|
||||
console.warn("Resetting theme because its no longer available: " + data.settings.theme);
|
||||
console.log("Resetting theme because its no longer available: " + data.settings.theme);
|
||||
data.settings.theme = "light";
|
||||
}
|
||||
|
||||
|
@ -431,7 +431,6 @@ ingame:
|
||||
desc: Click here to see the Steam version advantages!
|
||||
get_on_steam: Get on steam
|
||||
standaloneAdvantages:
|
||||
title: Get the full version!
|
||||
no_thanks: No, thanks!
|
||||
points:
|
||||
levels:
|
||||
@ -458,7 +457,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Demo Time Expired
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
|
@ -441,7 +441,6 @@ ingame:
|
||||
desc: Premeu aquí per veure les avantatges d'Steam!
|
||||
get_on_steam: Comprar a Steam
|
||||
standaloneAdvantages:
|
||||
title: Aconsegueix la versió completa!
|
||||
no_thanks: No, gràcies!
|
||||
points:
|
||||
levels:
|
||||
@ -468,7 +467,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Demo Time Expired
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
|
@ -65,8 +65,8 @@ demoBanners:
|
||||
playtimeDisclaimer: Plná verze obsahuje více než <strong>20 hodin obsahu</strong>.
|
||||
playerCount: <playerCount> hráči jako vy právě hrají shapez ve službě Steam
|
||||
untilEndOfDemo: do konce ukázky
|
||||
playtimeDisclaimerDownload: Ve hře můžete pokračovat v plné verzi!
|
||||
Klikněte <strong>sem</strong> a stáhněte si uloženou hru.
|
||||
playtimeDisclaimerDownload: Ve hře můžete pokračovat v plné verzi! Klikněte
|
||||
<strong>sem</strong> a stáhněte si uloženou hru.
|
||||
mainMenu:
|
||||
play: Hrát
|
||||
continue: Pokračovat
|
||||
@ -432,7 +432,6 @@ ingame:
|
||||
desc: Kliknutím sem zobrazíte výhody Steam verze!
|
||||
get_on_steam: Získejte na steamu
|
||||
standaloneAdvantages:
|
||||
title: Získejte plnou verzi!
|
||||
no_thanks: Ne, děkuji!
|
||||
points:
|
||||
levels:
|
||||
@ -459,7 +458,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Čas demoverze vypršel
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zóna
|
||||
zoneWidth: Šířka
|
||||
|
@ -433,7 +433,6 @@ ingame:
|
||||
desc: Click here to see the Steam version advantages!
|
||||
get_on_steam: Få på steam
|
||||
standaloneAdvantages:
|
||||
title: Få den fulde version!
|
||||
no_thanks: Nej tak!
|
||||
points:
|
||||
levels:
|
||||
@ -460,7 +459,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Demo tid er udløbet
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
|
@ -69,10 +69,8 @@ demoBanners:
|
||||
playtimeDisclaimer: Die Vollversion bietet mehr als <strong>20 Stunden Spielspaß</strong>.
|
||||
playerCount: <playerCount> Spieler wie du spielen shapez gerade auf Steam
|
||||
untilEndOfDemo: Bis zum Ende der Demo
|
||||
playtimeDisclaimerDownload: >-
|
||||
Du kannst deinen Speicherstand in der Vollversion fortsetzen!
|
||||
Klicke <strong>hier</strong> um ihn herunterzuladen.
|
||||
|
||||
playtimeDisclaimerDownload: Du kannst deinen Speicherstand in der Vollversion
|
||||
fortsetzen! Klicke <strong>hier</strong> um ihn herunterzuladen.
|
||||
mainMenu:
|
||||
play: Spielen
|
||||
continue: Fortsetzen
|
||||
@ -508,34 +506,35 @@ ingame:
|
||||
desc: Klicke hier, um die Vorteile der Vollversion zu sehen!
|
||||
get_on_steam: Zur Vollversion
|
||||
standaloneAdvantages:
|
||||
title: "Vorteile der Vollversion:"
|
||||
no_thanks: Nein, danke!
|
||||
points:
|
||||
levels:
|
||||
title: 12 Neue Level
|
||||
desc: Für insgesamt 26 Level!
|
||||
buildings:
|
||||
title: 22 Neue Gebäude
|
||||
desc: Automatisiere deine Fabrik!
|
||||
achievements:
|
||||
title: Errungenschaften
|
||||
desc: Hol sie dir alle!
|
||||
markers:
|
||||
title: ∞ Markierungen
|
||||
desc: Verliere nie den Überblick!
|
||||
title: 19 Neue Level
|
||||
desc: Über 20 Stunden weitere Inhalte!
|
||||
wires:
|
||||
title: Wires-Ebene
|
||||
desc: Eine ganz neue Dimension!
|
||||
darkmode:
|
||||
title: Dark-Mode
|
||||
desc: Gönn deinen Augen eine Auszeit!
|
||||
buildings:
|
||||
title: 22 Neue Gebäude
|
||||
desc: Automatisiere deine Fabrik!
|
||||
achievements:
|
||||
title: 45 Errungenschaften
|
||||
desc: Hol sie dir alle!
|
||||
markers:
|
||||
title: ∞ Markierungen
|
||||
desc: Verliere nie den Überblick!
|
||||
support:
|
||||
title: Unterstütze Mich
|
||||
desc: Ich entwickle das Spiel in meiner Freizeit!
|
||||
mods:
|
||||
title: Mod-Support!
|
||||
desc: Über 80 Mods verfügbar!
|
||||
title_expired: Demo Zeit abgelaufen
|
||||
titleV2: "Hol dir jetzt die Vollversion auf Steam für:"
|
||||
titleExpiredV2: Demo abgeschlossen!
|
||||
titleEnjoyingDemo: Gefällt dir die Demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Breite
|
||||
|
@ -447,7 +447,6 @@ ingame:
|
||||
desc: Click here to see the Steam version advantages!
|
||||
get_on_steam: Get on steam
|
||||
standaloneAdvantages:
|
||||
title: Get the full version!
|
||||
no_thanks: No, thanks!
|
||||
points:
|
||||
levels:
|
||||
@ -474,7 +473,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Demo Time Expired
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
|
@ -107,7 +107,7 @@ demoBanners:
|
||||
<li>... and a lot more!</li>
|
||||
</ul>
|
||||
playtimeDisclaimer: >-
|
||||
The full version contains more than <strong>20 hours of content</strong>.
|
||||
The full version contains more than <strong>20 hours of additional content</strong>!
|
||||
|
||||
playtimeDisclaimerDownload: >-
|
||||
You can continue your savegame in the full version! Click <strong>here</strong> to download your savegame.
|
||||
@ -654,22 +654,32 @@ ingame:
|
||||
get_on_steam: Get on Steam
|
||||
|
||||
standaloneAdvantages:
|
||||
title: >-
|
||||
Advantages of the full version:
|
||||
title_expired: Demo Time Expired
|
||||
titleV2: >-
|
||||
Get the full version now on Steam to unlock:
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoying the demo?
|
||||
|
||||
no_thanks: No, thanks!
|
||||
|
||||
points:
|
||||
levels:
|
||||
title: 19 New Levels
|
||||
desc: For a total of 26 levels!
|
||||
desc: >-
|
||||
Over 20 hours of additional content!
|
||||
wires:
|
||||
title: Wires
|
||||
desc: An entirely new dimension!
|
||||
|
||||
darkmode:
|
||||
title: Dark Mode
|
||||
desc: Stop hurting your eyes!
|
||||
|
||||
buildings:
|
||||
title: 22 New Buildings
|
||||
desc: Fully automate your factory!
|
||||
|
||||
achievements:
|
||||
title: Achievements
|
||||
title: 45 Achievements
|
||||
desc: Hunt them all!
|
||||
|
||||
mods:
|
||||
@ -680,14 +690,6 @@ ingame:
|
||||
title: ∞ Markers
|
||||
desc: Never get lost in your factory!
|
||||
|
||||
wires:
|
||||
title: Wires
|
||||
desc: An entirely new dimension!
|
||||
|
||||
darkmode:
|
||||
title: Dark Mode
|
||||
desc: Stop hurting your eyes!
|
||||
|
||||
support:
|
||||
title: Support me
|
||||
desc: I develop shapez in my spare time!
|
||||
|
@ -72,8 +72,9 @@ demoBanners:
|
||||
playerCount: <playerCount> jugadores como tú están jugando actualmente a shapez
|
||||
en Steam
|
||||
untilEndOfDemo: Hasta el final de la demo
|
||||
playtimeDisclaimerDownload: ¡Puedes continuar con tu partida guardada en la versión completa!
|
||||
Haz clic <strong>aquí</strong> para descargar tu partida guardada.
|
||||
playtimeDisclaimerDownload: ¡Puedes continuar con tu partida guardada en la
|
||||
versión completa! Haz clic <strong>aquí</strong> para descargar tu
|
||||
partida guardada.
|
||||
mainMenu:
|
||||
play: Jugar
|
||||
continue: Continuar
|
||||
@ -448,7 +449,6 @@ ingame:
|
||||
desc: Presiona aquí para ver que tiene la versión de Steam!
|
||||
get_on_steam: Consiguelo en Steam
|
||||
standaloneAdvantages:
|
||||
title: ¡Consigue la versión completa!
|
||||
no_thanks: ¡No grácias!
|
||||
points:
|
||||
levels:
|
||||
@ -475,7 +475,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: El tiempo de demostración ha expirado
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Área
|
||||
zoneWidth: Anchura
|
||||
|
@ -70,8 +70,8 @@ demoBanners:
|
||||
playerCount: <playerCount> kaltaisesi pelaajat pelaavat parhaillaan shapezia
|
||||
Steamissa.
|
||||
untilEndOfDemo: Demon loppuun asti
|
||||
playtimeDisclaimerDownload: Voit jatkaa tallentamistasi täysversiossa!
|
||||
Lataa tallennettava peli napsauttamalla <strong>tätä</strong>.
|
||||
playtimeDisclaimerDownload: Voit jatkaa tallentamistasi täysversiossa! Lataa
|
||||
tallennettava peli napsauttamalla <strong>tätä</strong>.
|
||||
mainMenu:
|
||||
play: Pelaa
|
||||
continue: Jatka
|
||||
@ -434,7 +434,6 @@ ingame:
|
||||
desc: Napsauta tästä nähdäksesi Steam version edut!
|
||||
get_on_steam: Hanki Steamista
|
||||
standaloneAdvantages:
|
||||
title: Hanki täysversio!
|
||||
no_thanks: Ei kiitos!
|
||||
points:
|
||||
levels:
|
||||
@ -461,7 +460,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Demon aika päättynyt
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
|
@ -67,8 +67,9 @@ demoBanners:
|
||||
playtimeDisclaimer: La version complète offre plus de <strong>20 heures de contenu</strong>.
|
||||
playerCount: <playerCount> joueurs comme vous jouent actuellement à shapez sur Steam
|
||||
untilEndOfDemo: Jusqu'à la fin de la démo
|
||||
playtimeDisclaimerDownload: Vous pouvez continuer votre sauvegarde dans la version complète !
|
||||
Cliquez <strong>ici</strong> pour télécharger votre sauvegarde.
|
||||
playtimeDisclaimerDownload: Vous pouvez continuer votre sauvegarde dans la
|
||||
version complète ! Cliquez <strong>ici</strong> pour télécharger votre
|
||||
sauvegarde.
|
||||
mainMenu:
|
||||
play: Jouer
|
||||
continue: Continuer
|
||||
@ -446,7 +447,6 @@ ingame:
|
||||
desc: Cliquez ici pour voir les avantages de la version Steam !
|
||||
get_on_steam: Acheter sur Steam
|
||||
standaloneAdvantages:
|
||||
title: Obtenir la version complète
|
||||
no_thanks: Non merci !
|
||||
points:
|
||||
levels:
|
||||
@ -473,7 +473,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Temps de démo écoulé
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Largeur
|
||||
|
@ -419,7 +419,6 @@ ingame:
|
||||
desc: לחץ פה בשביל לראות את היתרונות של הגרסה להורדה!
|
||||
get_on_steam: Steamהשג ב
|
||||
standaloneAdvantages:
|
||||
title: "!השג את הגרסה המלאה"
|
||||
no_thanks: "!לא, תודה"
|
||||
points:
|
||||
levels:
|
||||
@ -446,7 +445,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Demo Time Expired
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
|
@ -433,7 +433,6 @@ ingame:
|
||||
desc: Click here to see the Steam version advantages!
|
||||
get_on_steam: Get on steam
|
||||
standaloneAdvantages:
|
||||
title: Get the full version!
|
||||
no_thanks: No, thanks!
|
||||
points:
|
||||
levels:
|
||||
@ -460,7 +459,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Demo Time Expired
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
|
@ -438,7 +438,6 @@ ingame:
|
||||
desc: Kattints ide, hogy megnézd az Önálló Verzió előnyeit!
|
||||
get_on_steam: Megvásárlás Steamen
|
||||
standaloneAdvantages:
|
||||
title: Vásárold meg a Teljes Verziót!
|
||||
no_thanks: Nem, köszönöm!
|
||||
points:
|
||||
levels:
|
||||
@ -465,7 +464,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Demo idő lejárt
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zóna
|
||||
zoneWidth: Szélesség
|
||||
|
@ -442,7 +442,6 @@ ingame:
|
||||
desc: Klik disini untuk melihat keunggulan pada versi Steam!
|
||||
get_on_steam: Dapatkan di Steam
|
||||
standaloneAdvantages:
|
||||
title: Dapatkan versi lengkap!
|
||||
no_thanks: Tidak, terima kasih!
|
||||
points:
|
||||
levels:
|
||||
@ -469,7 +468,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Demo Time Expired
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
|
@ -70,8 +70,9 @@ demoBanners:
|
||||
playerCount: <playerCount> giocatori come te stanno attualmente giocando a
|
||||
shapez su Steam
|
||||
untilEndOfDemo: Fino alla fine della demo
|
||||
playtimeDisclaimerDownload: Puoi continuare il tuo salvataggio nella versione completa!
|
||||
Fai clic <strong>qui</strong> per scaricare il tuo salvataggio.
|
||||
playtimeDisclaimerDownload: Puoi continuare il tuo salvataggio nella versione
|
||||
completa! Fai clic <strong>qui</strong> per scaricare il tuo
|
||||
salvataggio.
|
||||
mainMenu:
|
||||
play: Gioca
|
||||
changelog: Registro modifiche
|
||||
@ -449,7 +450,6 @@ ingame:
|
||||
desc: Clicca qui per vedere i vantaggi della versione Completa!
|
||||
get_on_steam: Ottieni su Steam
|
||||
standaloneAdvantages:
|
||||
title: Ottieni la versione completa!
|
||||
no_thanks: No, grazie!
|
||||
points:
|
||||
levels:
|
||||
@ -476,7 +476,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Tempo di dimostrazione scaduto
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zona
|
||||
zoneWidth: Larghezza
|
||||
|
@ -375,11 +375,9 @@ ingame:
|
||||
切断機はそれの向きに関わらず、<strong>縦の線</strong>で切断します。"
|
||||
2_2_place_trash: 切断機は<strong>詰まる</strong>場合があります!<br><br>
|
||||
<strong>ゴミ箱</strong>を利用して、不必要な部品を廃棄できます。
|
||||
2_3_more_cutters:
|
||||
"いいですね! <strong>更に2つ以上の切断機</strong>を設置して処理をスピードアップさせましょう!<br>\
|
||||
2_3_more_cutters: "いいですね! <strong>更に2つ以上の切断機</strong>を設置して処理をスピードアップさせましょう!<br>\
|
||||
<br> 追記: <strong>0から9 のホットキー</strong>を使用すると素早く部品にアクセスできます。"
|
||||
3_1_rectangles:
|
||||
"それでは四角形を抽出しましょう! <strong>4つの抽出機を作成</strong>してそれをハブに接続します。<br><\
|
||||
3_1_rectangles: "それでは四角形を抽出しましょう! <strong>4つの抽出機を作成</strong>してそれをハブに接続します。<br><\
|
||||
br> 追記: <strong>SHIFT</strong>を押しながらベルトを引くと ベルトプランナーが有効になります!"
|
||||
21_1_place_quad_painter: <strong>四色着色機</strong>を設置して、
|
||||
<strong>円</strong>、<strong>白</strong>そして
|
||||
@ -399,7 +397,6 @@ ingame:
|
||||
desc: Steamバージョンの特典を確認するには、ここをクリックしてください!
|
||||
get_on_steam: steamで購入
|
||||
standaloneAdvantages:
|
||||
title: フルバージョンを購入
|
||||
no_thanks: いいえ、結構です
|
||||
points:
|
||||
levels:
|
||||
@ -426,7 +423,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: デモ時間終了
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
@ -663,16 +662,14 @@ buildings:
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: 形の切断
|
||||
desc:
|
||||
<strong>切断機</strong>が利用可能になりました。これは入力された形を、<strong>向きを考慮せず上下の直線で</strong>半分に切断します! <br><br>利用しない側の出力に注意しましょう、破棄しなければ<strong>詰まって停止してしまいます。</strong>
|
||||
desc: <strong>切断機</strong>が利用可能になりました。これは入力された形を、<strong>向きを考慮せず上下の直線で</strong>半分に切断します! <br><br>利用しない側の出力に注意しましょう、破棄しなければ<strong>詰まって停止してしまいます。</strong>
|
||||
- このために<strong>ゴミ箱</strong>も用意しました。入力アイテムをすべて破棄できます!
|
||||
reward_rotater:
|
||||
title: 回転
|
||||
desc: <strong>回転機</strong>が利用可能になりました! 形を時計回り方向に90度回転させます。
|
||||
reward_painter:
|
||||
title: 着色
|
||||
desc:
|
||||
"<strong>着色機</strong>が利用可能になりました。(今まで形状でやってきた方法で)色を抽出し、形状と合成することで着色します! <\
|
||||
desc: "<strong>着色機</strong>が利用可能になりました。(今まで形状でやってきた方法で)色を抽出し、形状と合成することで着色します! <\
|
||||
br><br>追伸: もし色覚特性をお持ちでしたら、 設定に<strong>色覚特性モード</strong>があります!"
|
||||
reward_mixer:
|
||||
title: 混色
|
||||
@ -691,8 +688,7 @@ storyRewards:
|
||||
desc: <strong>回転機</strong>のバリエーションが利用可能になりました。反時計回りの回転ができるようになります! 回転機を選択し、<strong>'T'キーを押すことで方向の切り替えができます。</strong>
|
||||
reward_miner_chainable:
|
||||
title: 連鎖抽出機
|
||||
desc:
|
||||
"<strong>連鎖抽出機</strong>が利用可能になりました! 他の抽出機に<strong>出力を渡す</strong>ことができるので、
|
||||
desc: "<strong>連鎖抽出機</strong>が利用可能になりました! 他の抽出機に<strong>出力を渡す</strong>ことができるので、
|
||||
資源の抽出がより効率的になります!<br><br> 補足: ツールバーの 旧い抽出機が置き換えられました!"
|
||||
reward_underground_belt_tier_2:
|
||||
title: トンネル レベルII
|
||||
@ -717,8 +713,7 @@ storyRewards:
|
||||
通常の着色機と同様に機能しますが、ひとつの色の消費で<strong>一度に2つの形</strong>を着色処理できます!
|
||||
reward_storage:
|
||||
title: ストレージ
|
||||
desc:
|
||||
<strong>ストレージ</strong>が利用可能になりました。 - 容量上限までアイテムを格納できます!<br><br>
|
||||
desc: <strong>ストレージ</strong>が利用可能になりました。 - 容量上限までアイテムを格納できます!<br><br>
|
||||
左側の出力を優先するため、<strong>オーバーフローゲート</strong>としても使用できます!
|
||||
reward_blueprints:
|
||||
title: ブループリント
|
||||
@ -737,8 +732,7 @@ storyRewards:
|
||||
設定で<strong>ヒントを有効にする</strong>と、 ワイヤのチュートリアルが有効になります。"
|
||||
reward_filter:
|
||||
title: アイテムフィルタ
|
||||
desc:
|
||||
<strong>アイテムフィルタ</strong>が利用可能になりました! ワイヤレイヤの信号と一致するかどうかに応じて、アイテムを上側または右側の出力に分離します。<br><br>
|
||||
desc: <strong>アイテムフィルタ</strong>が利用可能になりました! ワイヤレイヤの信号と一致するかどうかに応じて、アイテムを上側または右側の出力に分離します。<br><br>
|
||||
また、真偽値(0/1)信号を入力すれば全てのアイテムの通過・非通過を制御できます。
|
||||
reward_display:
|
||||
title: ディスプレイ
|
||||
@ -747,13 +741,11 @@ storyRewards:
|
||||
ベルトリーダーとストレージが最後に通過したアイテムを出力していることに気づきましたか? それをディスプレイに表示してみてください!"
|
||||
reward_constant_signal:
|
||||
title: 定数信号
|
||||
desc:
|
||||
<strong>定数信号</strong>がワイヤレイヤで利用可能になりました! これは例えば<strong>アイテムフィルタ</strong>に接続すると便利です。<br><br>
|
||||
desc: <strong>定数信号</strong>がワイヤレイヤで利用可能になりました! これは例えば<strong>アイテムフィルタ</strong>に接続すると便利です。<br><br>
|
||||
発信できる信号は<strong>形状</strong>、<strong>色</strong>、<strong>真偽値</strong>(1か0)です。
|
||||
reward_logic_gates:
|
||||
title: 論理ゲート
|
||||
desc:
|
||||
<strong>論理ゲート</strong>が利用可能になりました! 興奮する必要はありませんが、これは非常に優秀なんですよ!<br><br>
|
||||
desc: <strong>論理ゲート</strong>が利用可能になりました! 興奮する必要はありませんが、これは非常に優秀なんですよ!<br><br>
|
||||
これでAND, OR, XOR, NOTを計算できます。<br><br>
|
||||
ボーナスとして<strong>トランジスタ</strong>も追加しました!
|
||||
reward_virtual_processing:
|
||||
@ -765,8 +757,7 @@ storyRewards:
|
||||
- ワイヤでイカしたものを作る。<br><br> - 今までのように工場を建設する。<br><br> いずれにしても、楽しんでください!
|
||||
no_reward:
|
||||
title: 次のレベル
|
||||
desc:
|
||||
"このレベルには報酬はありません。次はきっとありますよ! <br><br> 補足: すでに作った生産ラインは削除しないようにしましょう。 -
|
||||
desc: "このレベルには報酬はありません。次はきっとありますよ! <br><br> 補足: すでに作った生産ラインは削除しないようにしましょう。 -
|
||||
生産された形は<strong>すべて</strong>、後で<strong>アップグレードの解除</strong>に必要になります!"
|
||||
no_reward_freeplay:
|
||||
title: 次のレベル
|
||||
@ -892,8 +883,7 @@ settings:
|
||||
description: 配置用のグリッドを無効にして、パフォーマンスを向上させます。 これにより、ゲームの見た目もすっきりします。
|
||||
clearCursorOnDeleteWhilePlacing:
|
||||
title: 右クリックで配置をキャンセル
|
||||
description:
|
||||
デフォルトで有効です。建物を設置しているときに右クリックすると、選択中の建物がキャンセルされます。
|
||||
description: デフォルトで有効です。建物を設置しているときに右クリックすると、選択中の建物がキャンセルされます。
|
||||
無効にすると、建物の設置中に右クリックで建物を削除できます。
|
||||
lowQualityTextures:
|
||||
title: 低品質のテクスチャ(視認性低下)
|
||||
|
@ -63,8 +63,7 @@ demoBanners:
|
||||
playtimeDisclaimer: 정식 버전에는 <strong>20시간 이상의 콘텐츠</strong>가 포함되어 있습니다.
|
||||
playerCount: <playerCount>명의 플레이어가 현재 Steam에서 shapez를 플레이하고 있습니다.
|
||||
untilEndOfDemo: 데모가 끝날 때까지
|
||||
playtimeDisclaimerDownload: 정식 버전에서 저장 게임을 계속할 수 있습니다!
|
||||
<strong>여기</strong>를 클릭하여 저장 게임을 다운로드하세요.
|
||||
playtimeDisclaimerDownload: 정식 버전에서 저장 게임을 계속할 수 있습니다! <strong>여기</strong>를 클릭하여 저장 게임을 다운로드하세요.
|
||||
mainMenu:
|
||||
play: 시작
|
||||
changelog: 버전 기록
|
||||
@ -72,8 +71,7 @@ mainMenu:
|
||||
openSourceHint: 이 게임은 오픈 소스입니다!
|
||||
discordLink: 공식 디스코드 서버
|
||||
helpTranslate: 번역을 도와주세요!
|
||||
browserWarning:
|
||||
이 게임은 현재 브라우저에서 느리게 작동하는 것으로 알려져 있습니다! 더 좋은 성능을 위해 정식 버전을 구매하거나
|
||||
browserWarning: 이 게임은 현재 브라우저에서 느리게 작동하는 것으로 알려져 있습니다! 더 좋은 성능을 위해 정식 버전을 구매하거나
|
||||
Google Chrome 브라우저를 다운로드하세요.
|
||||
savegameLevel: 레벨 <x>
|
||||
savegameLevelUnknown: 미확인 레벨
|
||||
@ -145,8 +143,7 @@ dialogs:
|
||||
desc: 지난번 플레이 이후 변경 사항은 다음과 같습니다.
|
||||
upgradesIntroduction:
|
||||
title: 업그레이드 하기
|
||||
desc:
|
||||
<strong>기존의 공장을 허물지 마세요!</strong> 여러분이 그동안 만들어 수집한 모든 도형은 업그레이드에 사용됩니다.
|
||||
desc: <strong>기존의 공장을 허물지 마세요!</strong> 여러분이 그동안 만들어 수집한 모든 도형은 업그레이드에 사용됩니다.
|
||||
업그레이드 버튼은 화면의 오른쪽 위에 있습니다.
|
||||
massDeleteConfirm:
|
||||
title: 삭제 확인
|
||||
@ -159,8 +156,7 @@ dialogs:
|
||||
desc: 12 레벨부터 청사진 기능이 해금됩니다!
|
||||
keybindingsIntroduction:
|
||||
title: 유용한 조작법
|
||||
desc:
|
||||
"이 게임에는 거대한 공장을 수월하게 세우기 위한 많은 조작법이 있습니다. 아래는 그 대표적인 것이며, 자세한 조작법은
|
||||
desc: "이 게임에는 거대한 공장을 수월하게 세우기 위한 많은 조작법이 있습니다. 아래는 그 대표적인 것이며, 자세한 조작법은
|
||||
<strong>조작법 설정</strong>을 참고해주세요!<br><br> <code
|
||||
class='keybinding'>CTRL</code> + 드래그: 영역을 선택합니다.<br> <code
|
||||
class='keybinding'>SHIFT</code>: 누르는 동안 같은 건물을 여러개 배치할 수 있습니다.<br>
|
||||
@ -174,8 +170,7 @@ dialogs:
|
||||
desc: 체험판 버전에서는 마커를 2개 까지만 배치할 수 있습니다. 정식 버전을 구입하면 마커를 무제한으로 배치할 수 있습니다!
|
||||
exportScreenshotWarning:
|
||||
title: 스크린샷 내보내기
|
||||
desc:
|
||||
당신의 공장을 스크린샷으로 내보내려 합니다. 매우 거대한 크기의 공장이라면 그 처리 시간이 상당히 오래 걸릴 것이며, 최악의 경우
|
||||
desc: 당신의 공장을 스크린샷으로 내보내려 합니다. 매우 거대한 크기의 공장이라면 그 처리 시간이 상당히 오래 걸릴 것이며, 최악의 경우
|
||||
게임이 중단될 수 있습니다!
|
||||
massCutInsufficientConfirm:
|
||||
title: 자르기 확인
|
||||
@ -201,8 +196,7 @@ dialogs:
|
||||
submitPuzzle:
|
||||
title: 퍼즐 보내기
|
||||
descName: "퍼즐에 이름을 지어 주세요:"
|
||||
descIcon:
|
||||
"퍼즐의 아이콘으로 보여지게 될 짧은 단어를 지정해 주세요. (<link>이곳</link>에서 생성하시거나, 아래 랜덤한 도형
|
||||
descIcon: "퍼즐의 아이콘으로 보여지게 될 짧은 단어를 지정해 주세요. (<link>이곳</link>에서 생성하시거나, 아래 랜덤한 도형
|
||||
중 하나를 선택하세요):"
|
||||
placeholderName: 퍼즐 제목
|
||||
puzzleResizeBadBuildings:
|
||||
@ -228,8 +222,7 @@ dialogs:
|
||||
desc: 오프라인 모드임으로 퍼즐을 저장하거나 업로드할 수 없습니다. 그래도 계속하시겠습니까?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: 권장 사항
|
||||
desc:
|
||||
퍼즐 DLC 플레이시 소개되지 않은 요소를 접하시게 될 수 있으므로, 적어도 일반 게임을 12레벨까지 플레이하시는것을
|
||||
desc: 퍼즐 DLC 플레이시 소개되지 않은 요소를 접하시게 될 수 있으므로, 적어도 일반 게임을 12레벨까지 플레이하시는것을
|
||||
<strong>강력히</strong> 권장드립니다. 그래도 계속하시겠습니까?
|
||||
puzzleShare:
|
||||
title: 짧은 키 복사됨
|
||||
@ -347,31 +340,25 @@ ingame:
|
||||
waypoints:
|
||||
waypoints: 마커
|
||||
hub: 허브
|
||||
description:
|
||||
마커를 좌클릭하여 그곳으로 이동하고, 우클릭으로 삭제할 수 있습니다.<br><br>마커를 배치하기 위해
|
||||
description: 마커를 좌클릭하여 그곳으로 이동하고, 우클릭으로 삭제할 수 있습니다.<br><br>마커를 배치하기 위해
|
||||
<keybinding> 키로 지금 있는 위치에, 또는 <strong>우클릭</strong>하여 원하는 위치에 배치할 수
|
||||
있습니다.
|
||||
creationSuccessNotification: 마커가 성공적으로 생성되었습니다.
|
||||
interactiveTutorial:
|
||||
title: 튜토리얼
|
||||
hints:
|
||||
1_1_extractor:
|
||||
<strong>원형 도형</strong>을 추출하기 위해 그 위에 <strong>추출기</strong>를 선택한 뒤
|
||||
1_1_extractor: <strong>원형 도형</strong>을 추출하기 위해 그 위에 <strong>추출기</strong>를 선택한 뒤
|
||||
배치하여 추출하세요!
|
||||
1_2_conveyor:
|
||||
"이제 <strong>컨베이어 벨트</strong>를 추출기와 허브를 서로 연결하세요!<br><br> 팁: 벨트를
|
||||
1_2_conveyor: "이제 <strong>컨베이어 벨트</strong>를 추출기와 허브를 서로 연결하세요!<br><br> 팁: 벨트를
|
||||
마우스로 <strong>클릭한 뒤 드래그</strong>하세요!"
|
||||
1_3_expand:
|
||||
"이 게임은 방치형 게임이 <strong>아닙니다</strong>! 더 많은 추출기와 벨트를 만들어 지정된 목표를 빨리
|
||||
1_3_expand: "이 게임은 방치형 게임이 <strong>아닙니다</strong>! 더 많은 추출기와 벨트를 만들어 지정된 목표를 빨리
|
||||
달성하세요.<br><br> 팁: <strong>SHIFT</strong> 키를 누른 상태에서는 빠르게 배치할 수
|
||||
있고, <strong>R</strong> 키를 눌러 회전할 수 있습니다."
|
||||
2_1_place_cutter:
|
||||
"이제 <strong>절단기</strong>를 배치해 원형 도형을 반으로 잘라보세요!<br><br> 참고:
|
||||
2_1_place_cutter: "이제 <strong>절단기</strong>를 배치해 원형 도형을 반으로 잘라보세요!<br><br> 참고:
|
||||
절단기는 놓는 방향에 상관없이 항상 <strong>위에서 아래로만</strong> 자릅니다."
|
||||
2_2_place_trash: 절단기가 <strong>막히거나 멈출 수 있습니다</strong>!<br><br>
|
||||
<strong>휴지통</strong>을 사용하여 현재 필요없는 쓰레기 도형 (!)을 제거하세요.
|
||||
2_3_more_cutters:
|
||||
"잘하셨습니다! 느린 처리 속도를 보완하기 위해 <strong>절단기를 두 개</strong> 이상
|
||||
2_3_more_cutters: "잘하셨습니다! 느린 처리 속도를 보완하기 위해 <strong>절단기를 두 개</strong> 이상
|
||||
배치해보세요!<br><br> 추신: <strong>상단 숫자 단축키 (0~9)</strong>를 사용하여 건물을
|
||||
빠르게 선택할 수 있습니다!"
|
||||
3_1_rectangles: "이제 사각형 도형을 추출해 볼까요! <strong>추출기 네 개를 배치</strong>하고 허브와
|
||||
@ -379,12 +366,10 @@ ingame:
|
||||
누른 채 드래그하세요!"
|
||||
21_1_place_quad_painter: <strong>4단 색칠기</strong>를 배치하여 <strong>흰색</strong>과
|
||||
<strong>빨간색</strong>이 칠해진 <strong>원형 도형</strong>을 만들어보세요!
|
||||
21_2_switch_to_wires:
|
||||
<strong>E 키</strong>를 눌러 전선 레이어 로 전환하세요!<br><br> 그 후 색칠기의
|
||||
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> 추신:
|
||||
21_4_press_button: "스위치를 눌러서 색칠기에 <strong>참 신호를 보내</strong> 활성화해보세요.<br><br> 추신:
|
||||
모든 입력을 연결할 필요는 없습니다! 두개만 연결해 보세요."
|
||||
colors:
|
||||
red: 빨간색
|
||||
@ -409,7 +394,6 @@ ingame:
|
||||
desc: 정식 버전의 장점을 보려면 여기를 클릭하세요!
|
||||
get_on_steam: Steam으로 가기
|
||||
standaloneAdvantages:
|
||||
title: 정식 버전을 구매하세요!
|
||||
no_thanks: 괜찮아요!
|
||||
points:
|
||||
levels:
|
||||
@ -436,7 +420,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Demo Time Expired
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: 구역
|
||||
zoneWidth: 너비
|
||||
@ -512,13 +498,11 @@ buildings:
|
||||
cutter:
|
||||
default:
|
||||
name: 절단기
|
||||
description:
|
||||
도형을 수직으로 잘라 두 가지 도형으로 나눕니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우
|
||||
description: 도형을 수직으로 잘라 두 가지 도형으로 나눕니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우
|
||||
절단기가 막혀 멈추게 됩니다!</strong>
|
||||
quad:
|
||||
name: 4단 절단기
|
||||
description:
|
||||
도형을 즉시 네 개로 자릅니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우 절단기가 막혀
|
||||
description: 도형을 즉시 네 개로 자릅니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우 절단기가 막혀
|
||||
멈추게 됩니다!</strong>
|
||||
rotater:
|
||||
default:
|
||||
@ -533,8 +517,7 @@ buildings:
|
||||
stacker:
|
||||
default:
|
||||
name: 결합기
|
||||
description:
|
||||
도형을 서로 결합하고 쌓습니다. 서로 결합할 수 있다면 두 도형을 붙여 하나로 만들고, 그렇지 않으면 오른쪽 도형이 왼쪽
|
||||
description: 도형을 서로 결합하고 쌓습니다. 서로 결합할 수 있다면 두 도형을 붙여 하나로 만들고, 그렇지 않으면 오른쪽 도형이 왼쪽
|
||||
도형 위에 쌓이게 됩니다.
|
||||
mixer:
|
||||
default:
|
||||
@ -549,8 +532,7 @@ buildings:
|
||||
description: 색소를 이용해 도형을 색칠합니다. 위쪽에서 받는 색소로 왼쪽에서 받는 도형 전체를 색칠합니다.
|
||||
quad:
|
||||
name: 4단 색칠기
|
||||
description:
|
||||
도형의 각 사분면에 개별적으로 색상을 칠할 수 있습니다. 전선 레이어를 통해 <strong>참 신호</strong>가
|
||||
description: 도형의 각 사분면에 개별적으로 색상을 칠할 수 있습니다. 전선 레이어를 통해 <strong>참 신호</strong>가
|
||||
있는 슬롯만 칠해집니다!
|
||||
mirrored:
|
||||
name: 색칠기
|
||||
@ -597,8 +579,7 @@ buildings:
|
||||
lever:
|
||||
default:
|
||||
name: 스위치
|
||||
description:
|
||||
전선 레이어에서 불 값 (1 또는 0)을 방출하도록 전환할 수 있으며, 그 후 아이템 선별같은 구성 요소를 제어하는 데
|
||||
description: 전선 레이어에서 불 값 (1 또는 0)을 방출하도록 전환할 수 있으며, 그 후 아이템 선별같은 구성 요소를 제어하는 데
|
||||
사용될 수 있습니다.
|
||||
logic_gate:
|
||||
default:
|
||||
@ -609,8 +590,7 @@ buildings:
|
||||
description: 입력이 거짓일 경우 불 값 "1"을 내보냅니다 (참은 도형, 색상, 불 값 "1"을 의미합니다).
|
||||
xor:
|
||||
name: XOR 회로
|
||||
description:
|
||||
입력 중 하나만 참이고 둘 다 같지 않을 경우 불 값 "1"을 내보냅니다 (참은 도형, 색상, 불 값 "1"을
|
||||
description: 입력 중 하나만 참이고 둘 다 같지 않을 경우 불 값 "1"을 내보냅니다 (참은 도형, 색상, 불 값 "1"을
|
||||
의미합니다).
|
||||
or:
|
||||
name: OR 회로
|
||||
@ -677,8 +657,7 @@ buildings:
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: 절단기
|
||||
desc:
|
||||
<strong>절단기</strong>가 잠금 해제되었습니다! 절단기는 들어오는 도형이 어떤 도형을 하고 있던 수직으로 잘라
|
||||
desc: <strong>절단기</strong>가 잠금 해제되었습니다! 절단기는 들어오는 도형이 어떤 도형을 하고 있던 수직으로 잘라
|
||||
<strong>반으로 나눕니다</strong>!<br><br> 쓰지 않는 도형은 쓰레기로 처리하세요, 그렇지 않으면
|
||||
<strong>작동을 멈출 것입니다</strong>! 이러한 목적을 위해 <strong>휴지통</strong>도 함께
|
||||
지급되었습니다. 휴지통에 들어간 것은 모두 파괴됩니다!
|
||||
@ -687,8 +666,7 @@ storyRewards:
|
||||
desc: <strong>회전기</strong>가 잠금 해제되었습니다! 회전기는 들어오는 도형을 시계 방향으로 90도 회전시켜줍니다.
|
||||
reward_painter:
|
||||
title: 색칠기
|
||||
desc:
|
||||
"<strong>색칠기</strong>가 잠금 해제되었습니다! 도형과 마찬가지로 색소를 추출하고 색칠기에 넣거 도형과 결합하여 색칠된
|
||||
desc: "<strong>색칠기</strong>가 잠금 해제되었습니다! 도형과 마찬가지로 색소를 추출하고 색칠기에 넣거 도형과 결합하여 색칠된
|
||||
도형을 만들도록 하세요!<br><br>추신: 만약 당신이 색맹이라면, 설정에서 <strong>색맹 모드</strong>를
|
||||
활성화하세요!"
|
||||
reward_mixer:
|
||||
@ -697,28 +675,24 @@ storyRewards:
|
||||
색소</strong>를 얻을 수 있습니다!
|
||||
reward_stacker:
|
||||
title: 결합기
|
||||
desc:
|
||||
<strong>결합기</strong>가 잠금 해제되었습니다! 이제 결합기를 통해 여러 도형을 붙이고 결합할 수 있습니다! 들어오는 두
|
||||
desc: <strong>결합기</strong>가 잠금 해제되었습니다! 이제 결합기를 통해 여러 도형을 붙이고 결합할 수 있습니다! 들어오는 두
|
||||
도형의 도형이 서로 나란히 붙일 수 있다면, 하나의 도형으로 <strong>결합</strong>됩니다. 만약 서로
|
||||
겹쳐진다면, 오른쪽 도형이 왼쪽 도형의 <strong>위에 쌓이게</strong> 됩니다!
|
||||
reward_splitter:
|
||||
title: 압축형 분배기
|
||||
desc:
|
||||
<strong>밸런서</strong>의 새로운 형태인 <strong>분배기</strong>가 잠금 해제되었습니다! 이제 벨트 한 줄을
|
||||
desc: <strong>밸런서</strong>의 새로운 형태인 <strong>분배기</strong>가 잠금 해제되었습니다! 이제 벨트 한 줄을
|
||||
즉시 두 줄로 분배합니다!
|
||||
reward_tunnel:
|
||||
title: 터널
|
||||
desc: <strong>터널</strong>이 잠금 해제되었습니다! 이제 벨트와 건물 아래로 공간을 만들어내 옮길 수 있습니다!
|
||||
reward_rotater_ccw:
|
||||
title: 반시계 방향 회전기
|
||||
desc:
|
||||
<strong>반시계 방향 회전기</strong>가 잠금 해제되었습니다! 반시계 방향 회전기는 회전기의 다른 형태로, 이름처럼
|
||||
desc: <strong>반시계 방향 회전기</strong>가 잠금 해제되었습니다! 반시계 방향 회전기는 회전기의 다른 형태로, 이름처럼
|
||||
들어오는 도형을 반시계 방향으로 90도만큼 회전시킵니다! 제작하려면 회전기를 선택한 후 <strong>'T' 키를 눌러
|
||||
다른 형태로 전환</strong>하세요!
|
||||
reward_miner_chainable:
|
||||
title: 연쇄 추출기
|
||||
desc:
|
||||
"<strong>연쇄 추출기</strong>가 잠금 해제되었습니다! 자원을 보다 더욱 효율적으로 추출할 수 있도록 <strong>앞에
|
||||
desc: "<strong>연쇄 추출기</strong>가 잠금 해제되었습니다! 자원을 보다 더욱 효율적으로 추출할 수 있도록 <strong>앞에
|
||||
있는 추출기로 자원을 보낼 수 있습니다</strong>!<br><br> 추신: 이제 툴바에 있는 기존 추출기는 연쇄
|
||||
추출기로 대체되었습니다!"
|
||||
reward_underground_belt_tier_2:
|
||||
@ -727,18 +701,15 @@ storyRewards:
|
||||
거리</strong>를 운송할 수 있고 기존 터널과 겹쳐지지 않고도 자원을 보낼 수 있습니다!
|
||||
reward_cutter_quad:
|
||||
title: 4단 절단기
|
||||
desc:
|
||||
새로운 종류의 <strong>절단기</strong>가 잠금 해제되었습니다! 4단 절단기는 도형을 두 조각이 아닌 <strong>네
|
||||
desc: 새로운 종류의 <strong>절단기</strong>가 잠금 해제되었습니다! 4단 절단기는 도형을 두 조각이 아닌 <strong>네
|
||||
조각</strong>으로 자를 수 있습니다!
|
||||
reward_painter_double:
|
||||
title: 2단 색칠기
|
||||
desc:
|
||||
새로운 종류의 <strong>절단기</strong>가 잠금 해제되었습니다! 일반적인 색칠기와 거의 동일하지만, 하나의 색소를 사용하여
|
||||
desc: 새로운 종류의 <strong>절단기</strong>가 잠금 해제되었습니다! 일반적인 색칠기와 거의 동일하지만, 하나의 색소를 사용하여
|
||||
<strong>동시에 두 개의 도형을 색칠</strong>할 수 있습니다!
|
||||
reward_storage:
|
||||
title: 저장고
|
||||
desc:
|
||||
<strong>저장고</strong>가 잠금 해제되었습니다! 저장고는 최대 용량까지 도형을 저장할 수 있습니다!<br><br> 왼쪽
|
||||
desc: <strong>저장고</strong>가 잠금 해제되었습니다! 저장고는 최대 용량까지 도형을 저장할 수 있습니다!<br><br> 왼쪽
|
||||
출력이 우선되므로 <strong>오버플로 회로</strong>로도 활용될 수 있습니다!
|
||||
reward_freeplay:
|
||||
title: 자유플레이
|
||||
@ -748,38 +719,32 @@ storyRewards:
|
||||
레이어를 통해 내보내므로 이를 분석하는 구조를 기반으로 하여 공장을 자동으로 구성하기만 하면 됩니다.
|
||||
reward_blueprints:
|
||||
title: 청사진
|
||||
desc:
|
||||
이제 공장의 일부를 <strong>복사하고 붙여넣는 기능</strong>을 사용할 수 있습니다! 영역을 선택 (CTRL 키를 누른 채
|
||||
desc: 이제 공장의 일부를 <strong>복사하고 붙여넣는 기능</strong>을 사용할 수 있습니다! 영역을 선택 (CTRL 키를 누른 채
|
||||
마우스로 드래그)한 뒤 'C' 키를 눌러 복사할 수 있습니다.<br><br>하지만 <strong>공짜는
|
||||
아닙니다</strong>, <strong>청사진 도형 도형</strong>을 허브에 저장하고 그것을 일부 사용해 붙여넣기
|
||||
기능을 사용할 수 있습니다! (방금 당신이 만든 것입니다.)
|
||||
no_reward:
|
||||
title: 다음 레벨
|
||||
desc:
|
||||
"이번 레벨의 보상은 없네요. 대신 다음 레벨에서 줄겁니다!<br><br> 추신: 기존 공장을 파괴하지는 마세요. 후에
|
||||
desc: "이번 레벨의 보상은 없네요. 대신 다음 레벨에서 줄겁니다!<br><br> 추신: 기존 공장을 파괴하지는 마세요. 후에
|
||||
<strong>업그레이드 잠금 해제</strong>되면 <strong>기존의 모든</strong> 도형이 필요합니다!"
|
||||
no_reward_freeplay:
|
||||
title: 다음 레벨
|
||||
desc: 축하드립니다!
|
||||
reward_balancer:
|
||||
title: 밸런서
|
||||
desc:
|
||||
<strong>밸런서</strong>가 잠금 해제되었습니다! 다목적 밸런서를 통해 여러 벨트의 아이템을 서로 <strong>다른
|
||||
desc: <strong>밸런서</strong>가 잠금 해제되었습니다! 다목적 밸런서를 통해 여러 벨트의 아이템을 서로 <strong>다른
|
||||
벨트로 분할하거나 합침</strong>으로써 더욱 거대한 공장을 만들 수 있습니다!
|
||||
reward_merger:
|
||||
title: 압축형 병합기
|
||||
desc:
|
||||
<strong>밸런서</strong>의 새로운 형태인 <strong>병합기</strong>가 잠금 해제되었습니다! 이제 벨트 두 줄을
|
||||
desc: <strong>밸런서</strong>의 새로운 형태인 <strong>병합기</strong>가 잠금 해제되었습니다! 이제 벨트 두 줄을
|
||||
즉시 한 줄로 병합합니다!
|
||||
reward_belt_reader:
|
||||
title: 벨트 판독기
|
||||
desc:
|
||||
<strong>벨트 판독기</strong>가 잠금 해제되었습니다! 이제 벨트의 처리량을 확인할 수 있습니다.<br><br>그리고,
|
||||
desc: <strong>벨트 판독기</strong>가 잠금 해제되었습니다! 이제 벨트의 처리량을 확인할 수 있습니다.<br><br>그리고,
|
||||
전선이 잠금 해제될 때 까지 기다리신다면 정말 유용하게 사용할 수 있을 겁니다!
|
||||
reward_rotater_180:
|
||||
title: 220도 회전기
|
||||
desc:
|
||||
<strong>180도 회전기</strong>가 잠금 해제되었습니다! 이제 도형을 바로 180도로 회전시킬 수 있습니다. (짜잔!
|
||||
desc: <strong>180도 회전기</strong>가 잠금 해제되었습니다! 이제 도형을 바로 180도로 회전시킬 수 있습니다. (짜잔!
|
||||
:D)
|
||||
reward_display:
|
||||
title: 디스플레이
|
||||
@ -787,37 +752,32 @@ storyRewards:
|
||||
있습니다.<br><br> 추신: 벨트 판독기와 저장고가 마지막으로 읽은 아이템을 출력했나요? 디스플레이로 한번 봐보세요!"
|
||||
reward_constant_signal:
|
||||
title: 일정 신호기
|
||||
desc:
|
||||
전선 레이어에서 구축할 수 있는 <strong>일정 신호기</strong>가 잠금 해제되었습니다! 간단한 예시로,
|
||||
desc: 전선 레이어에서 구축할 수 있는 <strong>일정 신호기</strong>가 잠금 해제되었습니다! 간단한 예시로,
|
||||
<strong>아이템 선별</strong>에 연결하여 사용하는 데 유용합니다.<br><br> 일정 신호기는
|
||||
<strong>도형</strong>, <strong>색상</strong>, 또는 <strong>불 값</strong> (1
|
||||
또는 0)을 출력할 수 있습니다.
|
||||
reward_logic_gates:
|
||||
title: 논리 회로
|
||||
desc:
|
||||
<strong>논리 회로</strong>가 잠금 해제되었습니다! 굳이 흥분할 필요는 없지만, 진짜 멋진 기술입니다!<br><br>
|
||||
desc: <strong>논리 회로</strong>가 잠금 해제되었습니다! 굳이 흥분할 필요는 없지만, 진짜 멋진 기술입니다!<br><br>
|
||||
논리 회로를 통해 이제 AND, OR, XOR, NOT 논리 연산을 할 수 있습니다.<br><br> 보너스로,
|
||||
<strong>트랜지스터</strong>도 지급되었습니다!
|
||||
reward_virtual_processing:
|
||||
title: 가상 처리
|
||||
desc:
|
||||
<strong>도형의 처리를 시뮬레이션</strong>할 수 있는 다양한 새로운 건물이 잠금 해제되었습니다!<br><br> 이제 전선
|
||||
desc: <strong>도형의 처리를 시뮬레이션</strong>할 수 있는 다양한 새로운 건물이 잠금 해제되었습니다!<br><br> 이제 전선
|
||||
레이어에서 도형에 대한 절단기, 회전기, 결합기 등을 가상으로 시뮬레이션할 수 있습니다! 이제 게임 진행에 있어 다음 세
|
||||
가지의 방법이 존재합니다:<br><br> - <strong>완전 자동화된 기계</strong>를 구축하고 허브에서 요구되는
|
||||
도형을 제작합니다. (먼저 시도해볼 것을 권합니다!).<br><br> - 전선을 통해 멋진 것들 만듭니다.<br><br>
|
||||
- 평소처럼 게임을 진행합니다.<br><br> 어떤 방식으로든, 재미있게 게임을 플레이해주시길 바랍니다!
|
||||
reward_wires_painter_and_levers:
|
||||
title: 전선과 4단 색칠기
|
||||
desc:
|
||||
" 방금 <strong>전선 레이어</strong>를 활성화하셨습니다: 이것은 일반 레이어 위에 존재하는 별개의 레이어로 수많은
|
||||
desc: " 방금 <strong>전선 레이어</strong>를 활성화하셨습니다: 이것은 일반 레이어 위에 존재하는 별개의 레이어로 수많은
|
||||
새로운 요소를 사용할 수 있습니다!<br><br> <strong>4단 색칠기</strong>를 활성화해 드리겠습니다 -
|
||||
전선 레이어에서 색을 칠할 부분에 연결해 보세요!<br><br> 전선 레이어로 전환하시려면
|
||||
<strong>E</strong>키를 눌러주세요.<br><br> 추신: <strong>힌트를 활성화</strong>해서
|
||||
전선 튜토리얼을 활성화해 보세요!"
|
||||
reward_filter:
|
||||
title: 아이템 선별기
|
||||
desc:
|
||||
<strong>아이템 선별기</strong>가 잠금 해제되었습니다! 전선 레이어의 신호와 일치하는지에 대한 여부로 아이템을 위쪽
|
||||
desc: <strong>아이템 선별기</strong>가 잠금 해제되었습니다! 전선 레이어의 신호와 일치하는지에 대한 여부로 아이템을 위쪽
|
||||
출력이나 오른쪽 출력으로 보냅니다.<br><br> 불 값 (1 또는 0)을 전달하여 완전히 활성화과 비활성화를 전환할 수
|
||||
있습니다.
|
||||
reward_demo_end:
|
||||
@ -838,8 +798,7 @@ settings:
|
||||
labels:
|
||||
uiScale:
|
||||
title: UI 크기
|
||||
description:
|
||||
사용자 인터페이스의 크기를 변경합니다. 인터페이스는 당신의 해상도에 따라 확장되는데 이 설정은 그 확장의 정도를
|
||||
description: 사용자 인터페이스의 크기를 변경합니다. 인터페이스는 당신의 해상도에 따라 확장되는데 이 설정은 그 확장의 정도를
|
||||
제어합니다.
|
||||
scales:
|
||||
super_small: 매우 작게
|
||||
@ -886,18 +845,15 @@ settings:
|
||||
light: 라이트
|
||||
refreshRate:
|
||||
title: 틱 빈도
|
||||
description:
|
||||
이것은 초당 발생하는 게임 틱 수를 결정합니다. 일반적으로 틱 속도가 높을수록 정밀도는 향상되나 성능은 낮아집니다. 낮은
|
||||
description: 이것은 초당 발생하는 게임 틱 수를 결정합니다. 일반적으로 틱 속도가 높을수록 정밀도는 향상되나 성능은 낮아집니다. 낮은
|
||||
틱 빈도에서는 처리량이 정확하지 않을 수 있습니다.
|
||||
alwaysMultiplace:
|
||||
title: 다수 배치 항시 켜기
|
||||
description:
|
||||
활성화할 경우 모든 건물은 배치한 후 취소할 때 까지 커서에 선택된 상태를 유지합니다. 이 기능은 SHIFT 키를 계속
|
||||
description: 활성화할 경우 모든 건물은 배치한 후 취소할 때 까지 커서에 선택된 상태를 유지합니다. 이 기능은 SHIFT 키를 계속
|
||||
누르는 것과 같습니다.
|
||||
offerHints:
|
||||
title: 힌트와 튜토리얼
|
||||
description:
|
||||
게임 플레이하는 동안 힌트와 튜토리얼을 보여줄 지를 결정합니다. 또한 게임에 더 쉽게 빠져들 수 있도록 특정 레벨까지
|
||||
description: 게임 플레이하는 동안 힌트와 튜토리얼을 보여줄 지를 결정합니다. 또한 게임에 더 쉽게 빠져들 수 있도록 특정 레벨까지
|
||||
특정한 UI 요소를 숨깁니다.
|
||||
enableTunnelSmartplace:
|
||||
title: 지능적인 터널 배치
|
||||
@ -926,8 +882,7 @@ settings:
|
||||
description: 색맹 사용자를 위해 게임을 플레이하는 데 도움을 주는 다양한 도구를 활성화합니다.
|
||||
rotationByBuilding:
|
||||
title: 건물 유형에 따른 방향
|
||||
description:
|
||||
각 건물 유형마다 개별적으로 마지막으로 설정했던 방향을 기억하도록 합니다. 다른 건물 변형을 자주 전환하는 경우 이
|
||||
description: 각 건물 유형마다 개별적으로 마지막으로 설정했던 방향을 기억하도록 합니다. 다른 건물 변형을 자주 전환하는 경우 이
|
||||
방법이 더욱 편할 수 있습니다.
|
||||
soundVolume:
|
||||
title: 효과음 볼륨
|
||||
@ -943,8 +898,7 @@ settings:
|
||||
description: 성능 향상을 위해 타일 그리드를 비활성화할 수 있습니다. 이 역시 게임을 더욱 깨끗하게 보여줍니다!
|
||||
clearCursorOnDeleteWhilePlacing:
|
||||
title: 우클릭 시 커서 지우기
|
||||
description:
|
||||
기본적으로 활성화되어 있으며, 배치할 건물을 선택한 상태에서 마우스 우클릭 시 커서를 지웁니다. 비활성화할 경우, 건물을
|
||||
description: 기본적으로 활성화되어 있으며, 배치할 건물을 선택한 상태에서 마우스 우클릭 시 커서를 지웁니다. 비활성화할 경우, 건물을
|
||||
커서에 선택한 채로 우클릭하면 바로 건물을 삭제할 수 있습니다.
|
||||
lowQualityTextures:
|
||||
title: 저품질 텍스처 (못생김)
|
||||
@ -957,8 +911,7 @@ settings:
|
||||
description: 기본적으로 활성화되어 있으며, 자원 패치에서 피펫 기능을 사용 시 즉시 추출기를 선택합니다.
|
||||
simplifiedBelts:
|
||||
title: 벨트 단순화 (못생김)
|
||||
description:
|
||||
성능 향상을 위해 벨트를 가리킬 때를 제외한 모든 상황에서 벨트 아이템을 렌더링하지 않습니다. 이 기능을 사용할 정도로
|
||||
description: 성능 향상을 위해 벨트를 가리킬 때를 제외한 모든 상황에서 벨트 아이템을 렌더링하지 않습니다. 이 기능을 사용할 정도로
|
||||
심각한 성능 문제가 일어나지 않는 한, 이 설정을 사용할 필요는 없습니다.
|
||||
enableMousePan:
|
||||
title: 화면 가장자리 패닝
|
||||
@ -1176,8 +1129,7 @@ puzzleMenu:
|
||||
medium: 중간
|
||||
hard: 어려움
|
||||
unknown: Unrated
|
||||
dlcHint:
|
||||
DLC를 이미 구입하셨나요? 라이브러리에서 shapez.io를 오른쪽 클릭한 다음 속성… > DLC 메뉴를 선택해서
|
||||
dlcHint: DLC를 이미 구입하셨나요? 라이브러리에서 shapez.io를 오른쪽 클릭한 다음 속성… > DLC 메뉴를 선택해서
|
||||
활성화되었는지 확인해주세요.
|
||||
search:
|
||||
action: Search
|
||||
@ -1227,7 +1179,6 @@ mods:
|
||||
noModSupport: 모드를 사용하기 위해 정식버전이 필요합니다.
|
||||
togglingComingSoon:
|
||||
title: 곧 업데이트 됩니다!
|
||||
description:
|
||||
지금은 mods/ 폴더에 모드 파일을 넣고 빼는 방식으로만 모드를 활성화/비활성화할 수 있습니다. 모드를 이곳에서 켜고
|
||||
description: 지금은 mods/ 폴더에 모드 파일을 넣고 빼는 방식으로만 모드를 활성화/비활성화할 수 있습니다. 모드를 이곳에서 켜고
|
||||
끌수 있는 기능은 추후 업데이트될 예정입니다. 모드폴더에 넣고/빼는것으로 할수있습니다. 모드를 토글하는 기능은 곧 업데이트
|
||||
됩니다!
|
||||
|
@ -433,7 +433,6 @@ ingame:
|
||||
desc: Click here to see the Steam version advantages!
|
||||
get_on_steam: Get on steam
|
||||
standaloneAdvantages:
|
||||
title: Get the full version!
|
||||
no_thanks: No, thanks!
|
||||
points:
|
||||
levels:
|
||||
@ -460,7 +459,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Demo Time Expired
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
|
@ -69,8 +69,8 @@ demoBanners:
|
||||
playtimeDisclaimer: De volledige versie bevat meer dan <strong>20 uur aan inhoud</strong>.
|
||||
playerCount: <playerCount> spelers zoals jij spelen op dit moment shapez op Steam
|
||||
untilEndOfDemo: Tot het einde van de demo
|
||||
playtimeDisclaimerDownload: Je kunt doorgaan met je savegame in de volledige versie!
|
||||
Klik <strong>hier</strong> om je savegame te downloaden.
|
||||
playtimeDisclaimerDownload: Je kunt doorgaan met je savegame in de volledige
|
||||
versie! Klik <strong>hier</strong> om je savegame te downloaden.
|
||||
mainMenu:
|
||||
play: Spelen
|
||||
changelog: Wijzigingenlijst
|
||||
@ -446,7 +446,6 @@ ingame:
|
||||
desc: Klik hier om het spel op Steam te kopen!
|
||||
get_on_steam: Krijg het op Steam
|
||||
standaloneAdvantages:
|
||||
title: Koop de volledige versie!
|
||||
no_thanks: Nee, dankjewel!
|
||||
points:
|
||||
levels:
|
||||
@ -473,7 +472,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Demo tijd verlopen
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Gebied
|
||||
zoneWidth: Breedte
|
||||
|
@ -438,7 +438,6 @@ ingame:
|
||||
desc: Trykk her for å se fordelene med Steam verjsonen!
|
||||
get_on_steam: Få på Steam
|
||||
standaloneAdvantages:
|
||||
title: Få fullversjonen!
|
||||
no_thanks: Nei takk!
|
||||
points:
|
||||
levels:
|
||||
@ -465,7 +464,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Demotiden er utløpt
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Sone
|
||||
zoneWidth: Bredde
|
||||
|
@ -441,7 +441,6 @@ ingame:
|
||||
desc: Kliknij tutaj, aby zobaczyć co potrafi wersja Steam!
|
||||
get_on_steam: Kup na Steam
|
||||
standaloneAdvantages:
|
||||
title: Kup pełną wersję!
|
||||
no_thanks: Nie, dziękuję!
|
||||
points:
|
||||
levels:
|
||||
@ -468,7 +467,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Czas demonstracyjny wygasł
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Obszar
|
||||
zoneWidth: Wysokość
|
||||
|
@ -69,8 +69,8 @@ demoBanners:
|
||||
playerCount: <playerCount> Jogadores como você está jogando shapez on Steam
|
||||
agora mesmo.
|
||||
untilEndOfDemo: Até o final da demo
|
||||
playtimeDisclaimerDownload: Você pode continuar seu jogo salvo na versão completa!
|
||||
Clique <strong>aqui</strong> para baixar seu jogo salvo.
|
||||
playtimeDisclaimerDownload: Você pode continuar seu jogo salvo na versão
|
||||
completa! Clique <strong>aqui</strong> para baixar seu jogo salvo.
|
||||
mainMenu:
|
||||
play: Jogar
|
||||
continue: Continuar
|
||||
@ -440,7 +440,6 @@ ingame:
|
||||
desc: Clique aqui para ver as vantagens da versão completa!
|
||||
get_on_steam: Adquira na Steam
|
||||
standaloneAdvantages:
|
||||
title: Adquira a versão completa!
|
||||
no_thanks: Não, obrigado!
|
||||
points:
|
||||
levels:
|
||||
@ -467,7 +466,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: O tempo de demonstração expirou
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zona
|
||||
zoneWidth: Largura
|
||||
|
@ -69,8 +69,8 @@ demoBanners:
|
||||
playtimeDisclaimer: A versão completa contém mais de <strong>20 horas de conteúdo</strong>.
|
||||
playerCount: <playerCount> jogadores como você estão jogando shapez no Steam
|
||||
untilEndOfDemo: Até o final da demo
|
||||
playtimeDisclaimerDownload: Você pode continuar seu jogo salvo na versão completa!
|
||||
Clique <strong>aqui</strong> para baixar seu jogo salvo.
|
||||
playtimeDisclaimerDownload: Você pode continuar seu jogo salvo na versão
|
||||
completa! Clique <strong>aqui</strong> para baixar seu jogo salvo.
|
||||
mainMenu:
|
||||
play: Jogar
|
||||
changelog: Changelog
|
||||
@ -448,7 +448,6 @@ ingame:
|
||||
desc: Clica aqui para veres as vantagens da versão na Steam!
|
||||
get_on_steam: Compra na Steam
|
||||
standaloneAdvantages:
|
||||
title: Obtém a versão completa!
|
||||
no_thanks: Não, obrigado!
|
||||
points:
|
||||
levels:
|
||||
@ -475,7 +474,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: O tempo de demonstração expirou
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zona
|
||||
zoneWidth: Largura
|
||||
|
@ -446,7 +446,6 @@ ingame:
|
||||
desc: Apasă aici pentru a vedea avantajele versiunii Steam!
|
||||
get_on_steam: Ia pe Steam
|
||||
standaloneAdvantages:
|
||||
title: Ia versiunea completă!
|
||||
no_thanks: Nu, mersi!
|
||||
points:
|
||||
levels:
|
||||
@ -473,7 +472,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Timpul demo a expirat
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zonă
|
||||
zoneWidth: Lățime
|
||||
|
@ -443,7 +443,6 @@ ingame:
|
||||
desc: Нажмите сюда, чтобы узнать о преимуществах Steam версии!
|
||||
get_on_steam: Приобрести в Steam
|
||||
standaloneAdvantages:
|
||||
title: Приобретите полную версию!
|
||||
no_thanks: Нет, спасибо!
|
||||
points:
|
||||
levels:
|
||||
@ -470,7 +469,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Истекло время демонстрации
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Область
|
||||
zoneWidth: Ширина
|
||||
|
@ -434,7 +434,6 @@ ingame:
|
||||
desc: Click here to see the Steam version advantages!
|
||||
get_on_steam: Get on steam
|
||||
standaloneAdvantages:
|
||||
title: Get the full version!
|
||||
no_thanks: No, thanks!
|
||||
points:
|
||||
levels:
|
||||
@ -461,7 +460,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Demo Time Expired
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
|
@ -435,7 +435,6 @@ ingame:
|
||||
desc: Kliknite ovde da pogledate prednosti Steam verzije!
|
||||
get_on_steam: Nabavite na Steam-u
|
||||
standaloneAdvantages:
|
||||
title: Nabavite punu verziju!
|
||||
no_thanks: Neka, hvala!
|
||||
points:
|
||||
levels:
|
||||
@ -462,7 +461,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Demo Time Expired
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Širina
|
||||
|
@ -69,8 +69,8 @@ demoBanners:
|
||||
timmars innehåll</strong>.
|
||||
playerCount: <playerCount> spelare som du spelar just nu shapez på Steam
|
||||
untilEndOfDemo: Till slutet av demonstrationen
|
||||
playtimeDisclaimerDownload: Du kan fortsätta ditt savegame i den fullständiga versionen!
|
||||
Klicka <strong>här</strong> för att ladda ner ditt savegame.
|
||||
playtimeDisclaimerDownload: Du kan fortsätta ditt savegame i den fullständiga
|
||||
versionen! Klicka <strong>här</strong> för att ladda ner ditt savegame.
|
||||
mainMenu:
|
||||
play: Spela
|
||||
changelog: Ändringslogg
|
||||
@ -439,7 +439,6 @@ ingame:
|
||||
desc: Klicka här för att se fördelarna med Steam-versionen!
|
||||
get_on_steam: Skaffa på Steam
|
||||
standaloneAdvantages:
|
||||
title: Skaffa den fulla versionen!
|
||||
no_thanks: Nej tack!
|
||||
points:
|
||||
levels:
|
||||
@ -466,7 +465,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Demotiden har löpt ut
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
|
@ -439,7 +439,6 @@ ingame:
|
||||
desc: Steam sürümü avantajlarını görmek için buraya tıklayın!
|
||||
get_on_steam: Steam'de al
|
||||
standaloneAdvantages:
|
||||
title: Tam versiyonu al!
|
||||
no_thanks: Hayır, teşekkürler!
|
||||
points:
|
||||
levels:
|
||||
@ -466,7 +465,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Demo süresi sona erdi
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Alan
|
||||
zoneWidth: Genişlik
|
||||
|
@ -68,8 +68,8 @@ demoBanners:
|
||||
playtimeDisclaimer: Повна версія містить понад <strong>20 години вмісту</strong>.
|
||||
playerCount: <playerCount> гравців як ви зараз грають у shapez на Steam
|
||||
untilEndOfDemo: До кінця демонстрації
|
||||
playtimeDisclaimerDownload: Ви можете продовжити свою збережену гру в повній версії!
|
||||
Натисніть <strong>тут</strong>, щоб завантажити збережену гру.
|
||||
playtimeDisclaimerDownload: Ви можете продовжити свою збережену гру в повній
|
||||
версії! Натисніть <strong>тут</strong>, щоб завантажити збережену гру.
|
||||
mainMenu:
|
||||
play: Грати
|
||||
continue: Продовжити
|
||||
@ -430,10 +430,10 @@ ingame:
|
||||
вводи</strong> фарбувальника за допомогою проводу!
|
||||
21_3_place_button: Неймовірно! Тепер розмістіть <strong>Вимикач</strong> Та
|
||||
з'єднайте їх дротом!
|
||||
21_4_press_button: 'Натисніть вимикач, аби він почав <strong>видавати сигнал
|
||||
"Істина" </strong> активувавши таким чином
|
||||
фарбувальник.<br><br> PS: Не обов''язково підключати всі входи!
|
||||
Спробуйте підключити лише два.'
|
||||
21_4_press_button: "Натисніть вимикач, аби він почав <strong>видавати сигнал
|
||||
\"Істина\" </strong> активувавши таким чином
|
||||
фарбувальник.<br><br> PS: Не обов'язково підключати всі входи!
|
||||
Спробуйте підключити лише два."
|
||||
connectedMiners:
|
||||
one_miner: 1 Екстрактор
|
||||
n_miners: <amount> Екстракторів
|
||||
@ -443,7 +443,6 @@ ingame:
|
||||
desc: Натисніть сюди аби переглянути переваги Steam версії!
|
||||
get_on_steam: Отримати в Steam
|
||||
standaloneAdvantages:
|
||||
title: Отримати повну версію!
|
||||
no_thanks: Ні, дякую!
|
||||
points:
|
||||
levels:
|
||||
@ -470,7 +469,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Час демонстрації закінчився
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Зона
|
||||
zoneWidth: Ширина
|
||||
|
@ -375,7 +375,6 @@ ingame:
|
||||
desc: 点击这里了解完整版内容
|
||||
get_on_steam: 在Steam商城购买
|
||||
standaloneAdvantages:
|
||||
title: 购买完整版!
|
||||
no_thanks: 不需要,谢谢
|
||||
points:
|
||||
levels:
|
||||
@ -402,7 +401,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: Demo Time Expired
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: 区域
|
||||
zoneWidth: 宽度
|
||||
|
@ -65,8 +65,7 @@ demoBanners:
|
||||
playtimeDisclaimer: 完整版包括多达 <strong>20 小时的新内容</strong>
|
||||
playerCount: <playerCount> 个像你一样的玩家目前正在 Steam 上玩 shapez
|
||||
untilEndOfDemo: 直到演示结束
|
||||
playtimeDisclaimerDownload: 您可以在完整版中继续您的存档游戏!
|
||||
点击<strong>此处</strong>下载您的存档游戏。
|
||||
playtimeDisclaimerDownload: 您可以在完整版中继续您的存档游戏! 点击<strong>此处</strong>下载您的存档游戏。
|
||||
mainMenu:
|
||||
play: 开始游戏
|
||||
changelog: 更新日志
|
||||
@ -84,8 +83,7 @@ mainMenu:
|
||||
savegameUnnamed: 存档未命名
|
||||
puzzleMode: 谜题模式
|
||||
back: 返回
|
||||
puzzleDlcText:
|
||||
持续优化,追求极致效率。在限定空间内使用有限的设施来创造图形!《异形工厂》(Shapez)的首个 DLC
|
||||
puzzleDlcText: 持续优化,追求极致效率。在限定空间内使用有限的设施来创造图形!《异形工厂》(Shapez)的首个 DLC
|
||||
“谜题挑战者”将会给大家带来更烧脑、更自由的全新挑战!
|
||||
puzzleDlcWishlist: 添加愿望单!
|
||||
puzzleDlcViewNow: 查看 DLC
|
||||
@ -155,8 +153,7 @@ dialogs:
|
||||
desc: 您还没有解锁蓝图功能!通过第 12 关的挑战后可解锁蓝图。
|
||||
keybindingsIntroduction:
|
||||
title: 实用快捷键
|
||||
desc:
|
||||
这个游戏有很多有用的快捷键设定。以下是其中的一些介绍,记得在<strong>按键设置</strong>中查看其他按键设定!<br><br>
|
||||
desc: 这个游戏有很多有用的快捷键设定。以下是其中的一些介绍,记得在<strong>按键设置</strong>中查看其他按键设定!<br><br>
|
||||
<code class='keybinding'>CTRL 键</code> + 拖动:选择区域以复制或删除。<br> <code
|
||||
class='keybinding'>SHIFT 键</code>: 按住以放置多个同一种设施。<br> <code
|
||||
class='keybinding'>ALT 键</code>:反向放置传送带。<br>
|
||||
@ -345,13 +342,11 @@ ingame:
|
||||
hints:
|
||||
1_1_extractor: 在<strong>圆形</strong>上放置一个<strong>开采器</strong>来获取圆形!<br><br>提示:<strong>按下鼠标左键</strong>选中<strong>开采器</strong>
|
||||
1_2_conveyor: 用<strong>传送带</strong>将您的开采器连接到中心基地上!<br><br>提示:选中<strong>传送带</strong>后<strong>按下鼠标左键可拖动</strong>布置传送带!
|
||||
1_3_expand:
|
||||
您可以放置更多的<strong>开采器</strong>和<strong>传送带</strong>来更有效率地完成关卡目标。<br><br>
|
||||
1_3_expand: 您可以放置更多的<strong>开采器</strong>和<strong>传送带</strong>来更有效率地完成关卡目标。<br><br>
|
||||
提示:按住 <strong>SHIFT</strong> 键可放置多个<strong>开采器</strong>,注意用
|
||||
<strong>R</strong> 键可旋转<strong>开采器</strong>的出口方向,确保开采的图形可以顺利传送。
|
||||
2_1_place_cutter: 现在放置一个<strong>切割器</strong>,这个设施可把<strong>圆形</strong>切成两半!<br><br>注意:无论如何放置,切割机总是<strong>从上到下</strong>切割。
|
||||
2_2_place_trash:
|
||||
使用切割机后产生的废弃图形会导致<strong>堵塞</strong>。<br><br>注意使用<strong>垃圾桶</strong>清除当前
|
||||
2_2_place_trash: 使用切割机后产生的废弃图形会导致<strong>堵塞</strong>。<br><br>注意使用<strong>垃圾桶</strong>清除当前
|
||||
(!) 不需要的废物。
|
||||
2_3_more_cutters: 干的好!现在放置 <strong>2
|
||||
个以上的切割机</strong>来加快当前缓慢的过程!<br><br>提示:用<strong>快捷键 0 - 9
|
||||
@ -388,7 +383,6 @@ ingame:
|
||||
desc: 点击这里了解完整版内容
|
||||
get_on_steam: 在 Steam 商城购买
|
||||
standaloneAdvantages:
|
||||
title: 购买完整版!
|
||||
no_thanks: 不需要,谢谢
|
||||
points:
|
||||
levels:
|
||||
@ -415,7 +409,9 @@ ingame:
|
||||
achievements:
|
||||
title: 成就
|
||||
desc: 挑战全成就解锁!
|
||||
title_expired: 演示时间已过
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: 区域
|
||||
zoneWidth: 宽度
|
||||
@ -655,8 +651,7 @@ storyRewards:
|
||||
desc: 恭喜!您解锁了<strong>旋转机</strong>。它会顺时针将输入的<strong>图形旋转90度</strong>。
|
||||
reward_painter:
|
||||
title: 上色
|
||||
desc:
|
||||
恭喜!您解锁了<strong>上色器</strong>。开采一些颜色(就像您开采图形一样),将其在上色器中与图形结合来将图形上色!
|
||||
desc: 恭喜!您解锁了<strong>上色器</strong>。开采一些颜色(就像您开采图形一样),将其在上色器中与图形结合来将图形上色!
|
||||
<br>注意:如果您不幸患有色盲,可以在设置中启用<strong>色盲模式</strong>
|
||||
reward_mixer:
|
||||
title: 混合颜色
|
||||
@ -673,13 +668,11 @@ storyRewards:
|
||||
desc: 恭喜!您解锁了<strong>隧道</strong>。它可放置在<strong>传送带</strong>或<strong>设施</strong>下方以运送物品。
|
||||
reward_rotater_ccw:
|
||||
title: 逆时针旋转
|
||||
desc:
|
||||
恭喜!您解锁了<strong>旋转机</strong>的<strong>逆时针</strong>变体。它可以逆时针旋转<strong>图形</strong>。
|
||||
desc: 恭喜!您解锁了<strong>旋转机</strong>的<strong>逆时针</strong>变体。它可以逆时针旋转<strong>图形</strong>。
|
||||
<br>选择<strong>旋转机</strong>然后按 "T" 键来选取这个变体。
|
||||
reward_miner_chainable:
|
||||
title: 链式开采器
|
||||
desc:
|
||||
您已经解锁了<strong>链式开采器</strong>!它能<strong>转发资源</strong>给其他的开采器,这样您就能更有效率的开采各类资源了!<br><br>
|
||||
desc: 您已经解锁了<strong>链式开采器</strong>!它能<strong>转发资源</strong>给其他的开采器,这样您就能更有效率的开采各类资源了!<br><br>
|
||||
注意:新的开采器已替换了工具栏里旧的开采器!
|
||||
reward_underground_belt_tier_2:
|
||||
title: 二级隧道
|
||||
@ -696,14 +689,12 @@ storyRewards:
|
||||
<br>它<strong>优先从左边</strong>输出,这样您就可以用它做一个<strong>溢流门</strong>了!
|
||||
reward_freeplay:
|
||||
title: 自由模式
|
||||
desc:
|
||||
成功了!您解锁了<strong>自由模式</strong>!挑战升级!这意味着现在将<strong>随机</strong>生成图形!
|
||||
desc: 成功了!您解锁了<strong>自由模式</strong>!挑战升级!这意味着现在将<strong>随机</strong>生成图形!
|
||||
从现在起,中心基地最为需要的是<strong>产量</strong>,强烈建议您去制造一台能够自动交付所需图形的机器!<br><br>
|
||||
基地会在<strong>电线层</strong>输出需要的图形,您需要去分析图形并在此基础上自动配置您的工厂。
|
||||
reward_blueprints:
|
||||
title: 蓝图
|
||||
desc:
|
||||
您现在可以<strong>复制粘贴</strong>您的工厂的一部分了!按住 CTRL 键并拖动鼠标来选择一块区域,然后按 C 键复制。
|
||||
desc: 您现在可以<strong>复制粘贴</strong>您的工厂的一部分了!按住 CTRL 键并拖动鼠标来选择一块区域,然后按 C 键复制。
|
||||
<br><br>粘贴并<strong>不是免费的</strong>,您需要制造<strong>蓝图图形</strong>来负担。蓝图图形是您刚刚交付的图形。
|
||||
no_reward:
|
||||
title: 下一关
|
||||
@ -731,8 +722,7 @@ storyRewards:
|
||||
<br>注意:您注意到<strong>传送读取器</strong>和<strong>存储器</strong>输出的他们最后读取的物品了吗?试着在显示屏上展示一下!
|
||||
reward_constant_signal:
|
||||
title: 恒定信号
|
||||
desc:
|
||||
恭喜!您解锁了生成于电线层之上的<strong>恒定信号</strong>,把它连接到<strong>过滤器</strong>时非常有用。
|
||||
desc: 恭喜!您解锁了生成于电线层之上的<strong>恒定信号</strong>,把它连接到<strong>过滤器</strong>时非常有用。
|
||||
<br>比如,它能发出图形、颜色、开关值(1 / 0)的固定信号。
|
||||
reward_logic_gates:
|
||||
title: 逻辑门
|
||||
@ -751,8 +741,7 @@ storyRewards:
|
||||
<strong>提示</strong>:可在设置中打开电线层教程!
|
||||
reward_filter:
|
||||
title: 物品过滤器
|
||||
desc:
|
||||
恭喜!您解锁了<strong>物品过滤器</strong>!它会根据在电线层上输入的信号决定是从上面还是右边输出物品。<br><br>
|
||||
desc: 恭喜!您解锁了<strong>物品过滤器</strong>!它会根据在电线层上输入的信号决定是从上面还是右边输出物品。<br><br>
|
||||
您也可以输入开关值(1 / 0)信号来激活或者禁用它。
|
||||
reward_demo_end:
|
||||
title: 试玩结束
|
||||
@ -808,8 +797,7 @@ settings:
|
||||
light: 浅色
|
||||
refreshRate:
|
||||
title: 模拟频率、刷新频率
|
||||
description:
|
||||
在这里更改刷新频率,这样游戏可以正确地根据您的屏幕进行模拟。但是如果您的电脑性能不佳,提高刷新频率可能降低帧数。注意,60Hz
|
||||
description: 在这里更改刷新频率,这样游戏可以正确地根据您的屏幕进行模拟。但是如果您的电脑性能不佳,提高刷新频率可能降低帧数。注意,60Hz
|
||||
以上的任何频率都会导致游戏卡顿!
|
||||
alwaysMultiplace:
|
||||
title: 多重放置
|
||||
@ -1146,7 +1134,6 @@ mods:
|
||||
noModSupport: 您需要在 Steam 平台获得完整版才可以安装游戏模组(Mods)。
|
||||
togglingComingSoon:
|
||||
title: 即将开放
|
||||
description:
|
||||
当前只能通过将游戏模组(Mods)文件复制到 mods 文件夹或从 mods 文件夹移除来启用或禁用游戏模组(Mods)。
|
||||
description: 当前只能通过将游戏模组(Mods)文件复制到 mods 文件夹或从 mods 文件夹移除来启用或禁用游戏模组(Mods)。
|
||||
但是,可以切换游戏模组(Mods)已经计划在之后的更新中实现!
|
||||
modWebsite: 模组网站
|
||||
|
@ -63,8 +63,7 @@ demoBanners:
|
||||
playtimeDisclaimer: 完整版包含超過 <strong>20 小時的內容</strong>。
|
||||
playerCount: <playerCount> 個像你一樣的玩家目前正在 Steam 上玩 shapez
|
||||
untilEndOfDemo: 直到演示結束
|
||||
playtimeDisclaimerDownload: 您可以在完整版中繼續您的存檔遊戲!
|
||||
點擊<strong>此處</strong>下載您的存檔遊戲。
|
||||
playtimeDisclaimerDownload: 您可以在完整版中繼續您的存檔遊戲! 點擊<strong>此處</strong>下載您的存檔遊戲。
|
||||
mainMenu:
|
||||
play: 開始遊戲
|
||||
changelog: 更新日誌
|
||||
@ -153,15 +152,13 @@ dialogs:
|
||||
desc: 你還沒有解鎖藍圖功能!完成更多的關卡來解鎖藍圖。
|
||||
keybindingsIntroduction:
|
||||
title: 實用按鍵
|
||||
desc:
|
||||
"這個遊戲有很多能幫助搭建工廠的使用按鍵。 以下是其中的一些,記得在<strong>按鍵設定</strong>中查看其他的! <br><br>
|
||||
desc: "這個遊戲有很多能幫助搭建工廠的使用按鍵。 以下是其中的一些,記得在<strong>按鍵設定</strong>中查看其他的! <br><br>
|
||||
<code class='keybinding'>CTRL</code> + 拖曳:選擇區域以複製或刪除。 <br> <code
|
||||
class='keybinding'>SHIFT</code>: 按住以放置多個。 <br> <code
|
||||
class='keybinding'>ALT</code>: 反向放置輸送帶。 <br>"
|
||||
createMarker:
|
||||
title: 建立標記
|
||||
desc:
|
||||
給地圖標記取一個名字。你可以在名字中加入一個<strong>簡短代碼</strong>以加入圖形。(你可以在<link>這裡</link>
|
||||
desc: 給地圖標記取一個名字。你可以在名字中加入一個<strong>簡短代碼</strong>以加入圖形。(你可以在<link>這裡</link>
|
||||
建立簡短代碼。)
|
||||
titleEdit: 修改標記
|
||||
markerDemoLimit:
|
||||
@ -356,18 +353,15 @@ ingame:
|
||||
1_1_extractor: 在<strong>圓形礦脈</strong>上放一個<strong>開採機</strong>來採集圓形!
|
||||
1_2_conveyor: 用<strong>輸送帶</strong>將你的開採機連接到基地上!
|
||||
<br><br>提示:用你的游標<strong>按下並拖曳</strong>輸送帶!
|
||||
1_3_expand:
|
||||
這<strong>不是</strong>一個放置型遊戲!建造更多的開採機和輸送帶來更快地完成目標。 <br><br>
|
||||
1_3_expand: 這<strong>不是</strong>一個放置型遊戲!建造更多的開採機和輸送帶來更快地完成目標。 <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:
|
||||
2_3_more_cutters: "做得好! 現在,再放<strong>2個切割機</strong>來加速這個緩慢的生產線!<br><br> PS:
|
||||
使用<strong>0-9快捷鍵</strong>可以更快選取建築 !"
|
||||
3_1_rectangles:
|
||||
"現在來開採一些方形吧!<strong>蓋4座開採機</strong>,把形狀收集到基地。<br><br> PS:
|
||||
3_1_rectangles: "現在來開採一些方形吧!<strong>蓋4座開採機</strong>,把形狀收集到基地。<br><br> PS:
|
||||
選擇輸送帶,按住<strong>SHIFT</strong>並拖曳滑鼠可以計畫輸送帶位置!"
|
||||
21_1_place_quad_painter: 放置一個<strong>上色機(四向)</strong>並取得一些
|
||||
<strong>圓形</strong>、<strong>白色</strong>和<strong>紅色</strong>!
|
||||
@ -400,7 +394,6 @@ ingame:
|
||||
desc: 按這裡看 Steam 版的優勢!
|
||||
get_on_steam: 在 Steam 上取得
|
||||
standaloneAdvantages:
|
||||
title: 取得單機版!
|
||||
no_thanks: 不用了,謝謝!
|
||||
points:
|
||||
levels:
|
||||
@ -427,7 +420,9 @@ ingame:
|
||||
mods:
|
||||
title: Modding support!
|
||||
desc: Over 80 mods available!
|
||||
title_expired: 演示時間已過
|
||||
titleV2: "Get the full version now on Steam to unlock:"
|
||||
titleExpiredV2: Demo completed!
|
||||
titleEnjoyingDemo: Enjoy the demo?
|
||||
puzzleEditorSettings:
|
||||
zoneTitle: Zone
|
||||
zoneWidth: Width
|
||||
@ -604,19 +599,16 @@ buildings:
|
||||
transistor:
|
||||
default:
|
||||
name: 電晶體
|
||||
description:
|
||||
如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。
|
||||
description: 如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。
|
||||
(「真」訊號代表:形狀訊號、顏色訊號或布林值為1)
|
||||
mirrored:
|
||||
name: 電晶體
|
||||
description:
|
||||
如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。
|
||||
description: 如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。
|
||||
(「真」訊號代表:形狀訊號、顏色訊號或布林值為1)
|
||||
filter:
|
||||
default:
|
||||
name: 物件分類器
|
||||
description:
|
||||
它會依據電路層收到的訊號,從分類器底部輸入的物件如符合輸入信號的會輸出到頂部,不符合的會從右方(交叉標記)排出。
|
||||
description: 它會依據電路層收到的訊號,從分類器底部輸入的物件如符合輸入信號的會輸出到頂部,不符合的會從右方(交叉標記)排出。
|
||||
它也可以被布林值訊號控制。
|
||||
display:
|
||||
default:
|
||||
@ -669,8 +661,7 @@ buildings:
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: 切割圖形
|
||||
desc:
|
||||
<strong>切割機</strong>已解鎖!不論切割機的方向,它都會把圖形<strong>垂直地</strong>切成兩半。<br><br>
|
||||
desc: <strong>切割機</strong>已解鎖!不論切割機的方向,它都會把圖形<strong>垂直地</strong>切成兩半。<br><br>
|
||||
記得把不需要的部分處理掉,否則切割機會<strong>因為堵塞而停止運作</strong>。
|
||||
為此我給你準備了<strong>垃圾桶</strong>,它會把所有放進去的物品銷毀掉。
|
||||
reward_rotater:
|
||||
@ -762,8 +753,7 @@ storyRewards:
|
||||
<strong>布林值</strong>(1或0)。
|
||||
reward_logic_gates:
|
||||
title: 邏輯閘
|
||||
desc:
|
||||
<strong>邏輯閘</strong>已解鎖!你可能覺得無所謂,但其實邏輯閘其實超酷的!<br><br> 有了這些邏輯閘,你可以運算 AND,
|
||||
desc: <strong>邏輯閘</strong>已解鎖!你可能覺得無所謂,但其實邏輯閘其實超酷的!<br><br> 有了這些邏輯閘,你可以運算 AND,
|
||||
OR, XOR 與 NOT 邏輯。<br><br> 錦上添花,我再送你<strong>電晶體</strong>!
|
||||
reward_virtual_processing:
|
||||
title: 虛擬操作
|
||||
|
Loading…
Reference in New Issue
Block a user