mirror of
https://github.com/tobspr/shapez.io.git
synced 2025-06-13 13:04:03 +00:00
Merge branch 'master' into fix-typescript-errors
This commit is contained in:
commit
4155bbfd58
@ -290,11 +290,7 @@ gulp.task(
|
|||||||
// Bundling (pre upload)
|
// Bundling (pre upload)
|
||||||
gulp.task(
|
gulp.task(
|
||||||
"bundle.steam.from-darwin",
|
"bundle.steam.from-darwin",
|
||||||
gulp.series(
|
gulp.series("utils.cleanBuildOutputFolder", "bundle.standalone-steam.from-darwin")
|
||||||
"utils.cleanBuildOutputFolder",
|
|
||||||
"bundle.standalone-steam.from-darwin",
|
|
||||||
"bundle.standalone-steam-china.from-darwin"
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
gulp.task(
|
gulp.task(
|
||||||
"bundle.steam.from-windows",
|
"bundle.steam.from-windows",
|
||||||
|
@ -28,8 +28,6 @@
|
|||||||
"@babel/plugin-transform-classes": "^7.5.5",
|
"@babel/plugin-transform-classes": "^7.5.5",
|
||||||
"@babel/preset-env": "^7.5.4",
|
"@babel/preset-env": "^7.5.4",
|
||||||
"@nastyox/rando.js": "^2.0.5",
|
"@nastyox/rando.js": "^2.0.5",
|
||||||
"@openreplay/tracker": "^3.5.12",
|
|
||||||
"@openreplay/tracker-fetch": "^3.5.3",
|
|
||||||
"@types/cordova": "^0.0.34",
|
"@types/cordova": "^0.0.34",
|
||||||
"@types/filesystem": "^0.0.32",
|
"@types/filesystem": "^0.0.32",
|
||||||
"ajv": "^6.10.2",
|
"ajv": "^6.10.2",
|
||||||
|
BIN
res/ui/vignette-strong.lossless.png
Normal file
BIN
res/ui/vignette-strong.lossless.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.8 KiB |
@ -83,7 +83,7 @@ body {
|
|||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
background: rgba(50, 60, 70, 0.8);
|
background: rgba(50, 60, 70, 0.8);
|
||||||
z-index: 9999;
|
z-index: 999999;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
@ -142,22 +142,25 @@
|
|||||||
|
|
||||||
> .discount {
|
> .discount {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@include S(top, -7px);
|
@include S(top, -12px);
|
||||||
@include S(right, -5px);
|
@include S(right, -15px);
|
||||||
background: #4c6b22;
|
background: #4c6b22;
|
||||||
color: #c5ea3f;
|
color: #c5ea3f;
|
||||||
@include S(border-radius, $globalBorderRadius);
|
@include S(border-radius, $globalBorderRadius);
|
||||||
@include S(padding, 1px, 3px, 1px, 4px);
|
@include S(padding, 1px, 3px, 1px, 4px);
|
||||||
@include SuperSmallText;
|
@include PlainText;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
transform: rotate(1deg);
|
transform: rotate(3deg);
|
||||||
@include InlineAnimation(1.3s ease-in-out infinite) {
|
|
||||||
50% {
|
|
||||||
transform: rotate(4deg) scale(1.1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.specialOffer {
|
||||||
|
color: #000000;
|
||||||
|
@include PlainText;
|
||||||
|
align-self: center;
|
||||||
|
text-align: center;
|
||||||
|
@include S(margin-top, 5px);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.point {
|
.point {
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
|
|
||||||
.exitAppButton {
|
.exitAppButton {
|
||||||
background-image: uiResource("icons/main_menu_exit.png");
|
background-image: uiResource("icons/main_menu_exit.png");
|
||||||
|
background-size: 56%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.languageChoose {
|
.languageChoose {
|
||||||
@ -51,14 +52,13 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&::before,
|
|
||||||
&::after {
|
&::after {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
background: uiResource("vignette.lossless.png") center center / cover no-repeat;
|
background: uiResource("vignette-strong.lossless.png") center center / cover no-repeat;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
content: "";
|
content: "";
|
||||||
@ -185,6 +185,23 @@
|
|||||||
transition: transform 0.5s ease-in-out;
|
transition: transform 0.5s ease-in-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.close {
|
||||||
|
position: absolute;
|
||||||
|
pointer-events: all;
|
||||||
|
background: uiResource("icons/main_menu_exit.png") center center / 50% no-repeat;
|
||||||
|
display: inline-flex;
|
||||||
|
@include S(width, 15px);
|
||||||
|
@include S(height, 15px);
|
||||||
|
@include S(top, 2px);
|
||||||
|
opacity: 0.3;
|
||||||
|
@include S(right, 2px);
|
||||||
|
z-index: 200;
|
||||||
|
transition: opacity 0.12s ease-in-out;
|
||||||
|
&:hover {
|
||||||
|
opacity: 0.7;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
&:hover::before {
|
&:hover::before {
|
||||||
transform: translate(0, -51%);
|
transform: translate(0, -51%);
|
||||||
}
|
}
|
||||||
@ -309,13 +326,20 @@
|
|||||||
color: #c5ea3f;
|
color: #c5ea3f;
|
||||||
@include S(border-radius, $globalBorderRadius);
|
@include S(border-radius, $globalBorderRadius);
|
||||||
@include S(padding, 1px, 3px, 1px, 4px);
|
@include S(padding, 1px, 3px, 1px, 4px);
|
||||||
@include SuperSmallText;
|
@include PlainText;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
transform: rotate(1deg);
|
transform: rotate(5deg);
|
||||||
@include InlineAnimation(1.3s ease-in-out infinite) {
|
}
|
||||||
50% {
|
}
|
||||||
transform: rotate(4deg) scale(1.1);
|
.specialOffer {
|
||||||
}
|
color: #000000;
|
||||||
|
@include PlainText;
|
||||||
|
align-self: center;
|
||||||
|
text-align: center;
|
||||||
|
@include S(margin-top, 5px);
|
||||||
|
@include InlineAnimation(1s ease-in-out infinite) {
|
||||||
|
50% {
|
||||||
|
transform: scale(1.02, 1.03) translateY(2%);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -788,6 +812,9 @@
|
|||||||
.description {
|
.description {
|
||||||
@include SuperSmallText;
|
@include SuperSmallText;
|
||||||
color: rgba(0, 10, 20, 0.5);
|
color: rgba(0, 10, 20, 0.5);
|
||||||
|
@include DarkThemeOverride {
|
||||||
|
color: rgba(#fff, 0.7);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// &:hover {
|
// &:hover {
|
||||||
// .tooltip {
|
// .tooltip {
|
||||||
@ -854,6 +881,10 @@
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
@include S(padding, 0, 20px);
|
@include S(padding, 0, 20px);
|
||||||
opacity: 0.5;
|
opacity: 0.5;
|
||||||
|
|
||||||
|
@include DarkThemeOverride {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.savegames {
|
.savegames {
|
||||||
@ -1233,22 +1264,5 @@
|
|||||||
color: $accentColorBright;
|
color: $accentColorBright;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer {
|
|
||||||
> a,
|
|
||||||
.sidelinks > a {
|
|
||||||
background-color: rgba($darkModeControlsBackground, 0.3);
|
|
||||||
color: #333538;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
background-color: rgba(darken($darkModeControlsBackground, 5), 0.4);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.thirdpartyLogo.githubLogo {
|
|
||||||
// filter: invert(1);
|
|
||||||
opacity: 0.7;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -134,6 +134,9 @@ export class Application {
|
|||||||
/** @type {TypedTrackedState<boolean>} */
|
/** @type {TypedTrackedState<boolean>} */
|
||||||
this.trackedIsRenderable = new TrackedState(this.onAppRenderableStateChanged, this);
|
this.trackedIsRenderable = new TrackedState(this.onAppRenderableStateChanged, this);
|
||||||
|
|
||||||
|
/** @type {TypedTrackedState<boolean>} */
|
||||||
|
this.trackedIsPlaying = new TrackedState(this.onAppPlayingStateChanged, this);
|
||||||
|
|
||||||
// Dimensions
|
// Dimensions
|
||||||
this.screenWidth = 0;
|
this.screenWidth = 0;
|
||||||
this.screenHeight = 0;
|
this.screenHeight = 0;
|
||||||
@ -330,6 +333,14 @@ export class Application {
|
|||||||
this.sound.onPageRenderableStateChanged(renderable);
|
this.sound.onPageRenderableStateChanged(renderable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onAppPlayingStateChanged(playing) {
|
||||||
|
try {
|
||||||
|
this.adProvider.setPlayStatus(playing);
|
||||||
|
} catch (ex) {
|
||||||
|
console.warn("Play status changed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal before-unload handler
|
* Internal before-unload handler
|
||||||
*/
|
*/
|
||||||
@ -386,6 +397,7 @@ export class Application {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const currentState = this.stateMgr.getCurrentState();
|
const currentState = this.stateMgr.getCurrentState();
|
||||||
|
this.trackedIsPlaying.set(currentState && currentState.getIsIngame());
|
||||||
if (currentState) {
|
if (currentState) {
|
||||||
currentState.onRender(dt);
|
currentState.onRender(dt);
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,11 @@ const INGAME_ASSETS = {
|
|||||||
css: ["async-resources.css"],
|
css: ["async-resources.css"],
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (G_IS_STANDALONE) {
|
||||||
|
MAIN_MENU_ASSETS.sounds = [...Array.from(Object.values(MUSIC)), ...Array.from(Object.values(SOUNDS))];
|
||||||
|
INGAME_ASSETS.sounds = [];
|
||||||
|
}
|
||||||
|
|
||||||
const LOADER_TIMEOUT_PER_RESOURCE = 180000;
|
const LOADER_TIMEOUT_PER_RESOURCE = 180000;
|
||||||
|
|
||||||
// Cloudflare does not send content-length headers with brotli compression,
|
// Cloudflare does not send content-length headers with brotli compression,
|
||||||
|
@ -22,9 +22,7 @@ export const THIRDPARTY_URLS = {
|
|||||||
twitter: "https://twitter.com/tobspr",
|
twitter: "https://twitter.com/tobspr",
|
||||||
privacyPolicy: "https://tobspr.io/privacy.html",
|
privacyPolicy: "https://tobspr.io/privacy.html",
|
||||||
|
|
||||||
standaloneCampaignLink: G_IS_STANDALONE
|
standaloneCampaignLink: "https://get.shapez.io/bundle/$campaign",
|
||||||
? "https://get.shapez.io/bundle/$campaign"
|
|
||||||
: "https://get.shapez.io/$campaign",
|
|
||||||
puzzleDlcStorePage: "https://get.shapez.io/mm_puzzle_dlc?target=dlc",
|
puzzleDlcStorePage: "https://get.shapez.io/mm_puzzle_dlc?target=dlc",
|
||||||
|
|
||||||
levelTutorialVideos: {
|
levelTutorialVideos: {
|
||||||
|
@ -229,6 +229,14 @@ export class GameState {
|
|||||||
return MUSIC.menu;
|
return MUSIC.menu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Should return true if the player is currently ingame
|
||||||
|
* @returns {boolean}
|
||||||
|
*/
|
||||||
|
getIsIngame() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Should return whether to clear the whole body content before entering the state.
|
* Should return whether to clear the whole body content before entering the state.
|
||||||
* @returns {boolean}
|
* @returns {boolean}
|
||||||
|
@ -4,6 +4,9 @@ const options = queryString.parse(location.search);
|
|||||||
export let queryParamOptions = {
|
export let queryParamOptions = {
|
||||||
embedProvider: null,
|
embedProvider: null,
|
||||||
abtVariant: null,
|
abtVariant: null,
|
||||||
|
campaign: null,
|
||||||
|
fbclid: null,
|
||||||
|
gclid: null,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (options.embed) {
|
if (options.embed) {
|
||||||
@ -13,3 +16,14 @@ if (options.embed) {
|
|||||||
if (options.abtVariant) {
|
if (options.abtVariant) {
|
||||||
queryParamOptions.abtVariant = options.abtVariant;
|
queryParamOptions.abtVariant = options.abtVariant;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (options.fbclid) {
|
||||||
|
queryParamOptions.fbclid = options.fbclid;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.gclid) {
|
||||||
|
queryParamOptions.gclid = options.gclid;
|
||||||
|
}
|
||||||
|
if (options.utm_campaign) {
|
||||||
|
queryParamOptions.campaign = options.utm_campaign;
|
||||||
|
}
|
||||||
|
@ -168,7 +168,11 @@ export class Camera extends BasicSerializableObject {
|
|||||||
* Finds a good initial zoom level
|
* Finds a good initial zoom level
|
||||||
*/
|
*/
|
||||||
findInitialZoom() {
|
findInitialZoom() {
|
||||||
const desiredWorldSpaceWidth = 18 * globalConfig.tileSize;
|
let desiredWorldSpaceWidth = 18 * globalConfig.tileSize;
|
||||||
|
if (window.innerWidth < 1000) {
|
||||||
|
desiredWorldSpaceWidth = 12 * globalConfig.tileSize;
|
||||||
|
}
|
||||||
|
|
||||||
const zoomLevelX = this.root.gameWidth / desiredWorldSpaceWidth;
|
const zoomLevelX = this.root.gameWidth / desiredWorldSpaceWidth;
|
||||||
const zoomLevelY = this.root.gameHeight / desiredWorldSpaceWidth;
|
const zoomLevelY = this.root.gameHeight / desiredWorldSpaceWidth;
|
||||||
|
|
||||||
|
@ -61,7 +61,9 @@ export class HUDSettingsMenu extends BaseHUDPart {
|
|||||||
}
|
}
|
||||||
|
|
||||||
returnToMenu() {
|
returnToMenu() {
|
||||||
this.root.gameState.goBackToMenu();
|
this.root.app.adProvider.showVideoAd().then(() => {
|
||||||
|
this.root.gameState.goBackToMenu();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
goToSettings() {
|
goToSettings() {
|
||||||
|
@ -42,10 +42,14 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
|
|||||||
<button class="steamLinkButton steam_dlbtn_0">
|
<button class="steamLinkButton steam_dlbtn_0">
|
||||||
${
|
${
|
||||||
globalConfig.currentDiscount > 0
|
globalConfig.currentDiscount > 0
|
||||||
? `<span class='discount'>-${globalConfig.currentDiscount}%!</span>`
|
? `<span class='discount'>${T.global.discount.replace(
|
||||||
|
"<percentage>",
|
||||||
|
String(globalConfig.currentDiscount)
|
||||||
|
)}</span>`
|
||||||
: ""
|
: ""
|
||||||
}
|
}
|
||||||
</button>
|
</button>
|
||||||
|
${!G_IS_STEAM_DEMO ? `<span class="specialOffer">${T.global.discountSummerSale}</span>` : ""}
|
||||||
<button class="otherCloseButton" data-btn-variant="${G_IS_STEAM_DEMO ? "steam-demo" : "prod"}">${
|
<button class="otherCloseButton" data-btn-variant="${G_IS_STEAM_DEMO ? "steam-demo" : "prod"}">${
|
||||||
T.ingame.standaloneAdvantages.no_thanks
|
T.ingame.standaloneAdvantages.no_thanks
|
||||||
}</button>
|
}</button>
|
||||||
@ -121,15 +125,16 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
|
|||||||
this.root.app.gameAnalytics.noteMinor("game.std_advg.show");
|
this.root.app.gameAnalytics.noteMinor("game.std_advg.show");
|
||||||
this.root.app.gameAnalytics.noteMinor("game.std_advg.show-" + (final ? "final" : "nonfinal"));
|
this.root.app.gameAnalytics.noteMinor("game.std_advg.show-" + (final ? "final" : "nonfinal"));
|
||||||
}
|
}
|
||||||
|
|
||||||
this.lastShown = this.root.time.now();
|
this.lastShown = this.root.time.now();
|
||||||
this.visible = true;
|
this.visible = true;
|
||||||
this.final = final;
|
this.final = final;
|
||||||
this.root.app.inputMgr.makeSureAttachedAndOnTop(this.inputReciever);
|
this.root.app.inputMgr.makeSureAttachedAndOnTop(this.inputReciever);
|
||||||
|
|
||||||
if (this.root.time.now() < 120) {
|
if (this.final) {
|
||||||
this.title.innerText = "";
|
|
||||||
} else if (this.final) {
|
|
||||||
this.title.innerText = T.ingame.standaloneAdvantages.titleExpiredV2;
|
this.title.innerText = T.ingame.standaloneAdvantages.titleExpiredV2;
|
||||||
|
} else if (this.root.time.now() < 120) {
|
||||||
|
this.title.innerText = "";
|
||||||
} else {
|
} else {
|
||||||
this.title.innerText = T.ingame.standaloneAdvantages.titleEnjoyingDemo;
|
this.title.innerText = T.ingame.standaloneAdvantages.titleEnjoyingDemo;
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,10 @@ export class HUDUnlockNotification extends BaseHUDPart {
|
|||||||
this.root.app.gameAnalytics.noteMinor("game.started");
|
this.root.app.gameAnalytics.noteMinor("game.started");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
shouldPauseGame() {
|
||||||
|
return !G_IS_STANDALONE && this.visible;
|
||||||
|
}
|
||||||
|
|
||||||
createElements(parent) {
|
createElements(parent) {
|
||||||
this.inputReciever = new InputReceiver("unlock-notification");
|
this.inputReciever = new InputReceiver("unlock-notification");
|
||||||
|
|
||||||
|
@ -13,7 +13,10 @@ export class HUDWatermark extends BaseHUDPart {
|
|||||||
globalConfig.currentDiscount > 0 ? ["withDiscount"] : [],
|
globalConfig.currentDiscount > 0 ? ["withDiscount"] : [],
|
||||||
linkText +
|
linkText +
|
||||||
(globalConfig.currentDiscount > 0
|
(globalConfig.currentDiscount > 0
|
||||||
? `<span class='discount'>-${globalConfig.currentDiscount}%!</span>`
|
? `<span class='discount'>${T.global.discount.replace(
|
||||||
|
"<percentage>",
|
||||||
|
String(globalConfig.currentDiscount)
|
||||||
|
)}</span>`
|
||||||
: "")
|
: "")
|
||||||
);
|
);
|
||||||
this.trackClicks(this.linkElement, () => {
|
this.trackClicks(this.linkElement, () => {
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
/* typehints:start */
|
||||||
|
import { Application } from "../../application";
|
||||||
|
/* typehints:end */
|
||||||
import { WEB_STEAM_SSO_AUTHENTICATED } from "../../core/steam_sso";
|
import { WEB_STEAM_SSO_AUTHENTICATED } from "../../core/steam_sso";
|
||||||
import { enumHubGoalRewards } from "../tutorial_goals";
|
import { enumHubGoalRewards } from "../tutorial_goals";
|
||||||
|
|
||||||
@ -7,73 +10,82 @@ const chinaShapes = G_WEGAME_VERSION || G_CHINA_VERSION;
|
|||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
const WEB_DEMO_LEVELS = () => [
|
/**
|
||||||
// 1
|
*
|
||||||
// Circle
|
* @param {Application} app
|
||||||
{
|
* @returns
|
||||||
shape: "CuCuCuCu", // belts t1
|
*/
|
||||||
required: 10,
|
const WEB_DEMO_LEVELS = app => {
|
||||||
reward: enumHubGoalRewards.reward_cutter_and_trash,
|
const levels = [
|
||||||
},
|
// 1
|
||||||
|
// Circle
|
||||||
|
{
|
||||||
|
shape: "CuCuCuCu", // belts t1
|
||||||
|
required: 10,
|
||||||
|
reward: enumHubGoalRewards.reward_cutter_and_trash,
|
||||||
|
},
|
||||||
|
|
||||||
// 2
|
// 2
|
||||||
// Cutter
|
// Cutter
|
||||||
{
|
{
|
||||||
shape: "----CuCu", //
|
shape: "----CuCu", //
|
||||||
required: 20,
|
required: 20,
|
||||||
reward: enumHubGoalRewards.no_reward,
|
reward: enumHubGoalRewards.no_reward,
|
||||||
},
|
},
|
||||||
|
|
||||||
// 3
|
// 3
|
||||||
// Rectangle
|
// Rectangle
|
||||||
{
|
{
|
||||||
shape: "RuRuRuRu", // miners t1
|
shape: "RuRuRuRu", // miners t1
|
||||||
required: 50,
|
required: 30,
|
||||||
reward: enumHubGoalRewards.reward_balancer,
|
reward: enumHubGoalRewards.reward_balancer,
|
||||||
},
|
},
|
||||||
|
|
||||||
// 4
|
// 4
|
||||||
{
|
{
|
||||||
shape: "RuRu----", // processors t2
|
shape: "RuRu----", // processors t2
|
||||||
required: 30,
|
required: 30,
|
||||||
reward: enumHubGoalRewards.reward_rotater,
|
reward: enumHubGoalRewards.reward_rotater,
|
||||||
},
|
},
|
||||||
|
|
||||||
// 5
|
// 5
|
||||||
// Rotater
|
// Rotater
|
||||||
{
|
{
|
||||||
shape: "Cu----Cu", // belts t2
|
shape: "Cu----Cu", // belts t2
|
||||||
required: 75,
|
required: 75,
|
||||||
reward: enumHubGoalRewards.reward_tunnel,
|
reward: enumHubGoalRewards.reward_tunnel,
|
||||||
},
|
},
|
||||||
|
|
||||||
// 6
|
// 6
|
||||||
{
|
// Painter
|
||||||
shape: "Cu------", // miners t2
|
{
|
||||||
required: 75,
|
shape: "Cu------", // miners t2
|
||||||
reward: enumHubGoalRewards.reward_painter,
|
required: 50,
|
||||||
},
|
reward: enumHubGoalRewards.reward_painter,
|
||||||
|
},
|
||||||
|
|
||||||
// 7
|
// 7
|
||||||
// Painter
|
{
|
||||||
{
|
shape: "CrCrCrCr", // unused
|
||||||
shape: "CrCrCrCr", // unused
|
required: 85,
|
||||||
required: 120,
|
reward: enumHubGoalRewards.reward_rotater_ccw,
|
||||||
reward: enumHubGoalRewards.reward_rotater_ccw,
|
},
|
||||||
},
|
|
||||||
// 8
|
// 8
|
||||||
{
|
{
|
||||||
shape: "RbRb----", // painter t2
|
shape: "RbRb----", // painter t2
|
||||||
required: 170,
|
required: 100,
|
||||||
reward: enumHubGoalRewards.reward_mixer,
|
reward: enumHubGoalRewards.reward_mixer,
|
||||||
},
|
},
|
||||||
// End of demo
|
{
|
||||||
{
|
shape: "RpRp----",
|
||||||
shape: "RbRb----",
|
required: 0,
|
||||||
required: 0,
|
reward: enumHubGoalRewards.reward_demo_end,
|
||||||
reward: enumHubGoalRewards.reward_demo_end,
|
},
|
||||||
},
|
];
|
||||||
];
|
|
||||||
|
return levels;
|
||||||
|
};
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
@ -140,7 +152,7 @@ const STEAM_DEMO_LEVELS = () => [
|
|||||||
},
|
},
|
||||||
// End of demo
|
// End of demo
|
||||||
{
|
{
|
||||||
shape: "RbRb----",
|
shape: "CpCpCpCp",
|
||||||
required: 0,
|
required: 0,
|
||||||
reward: enumHubGoalRewards.reward_demo_end,
|
reward: enumHubGoalRewards.reward_demo_end,
|
||||||
},
|
},
|
||||||
@ -354,11 +366,11 @@ const STANDALONE_LEVELS = () => [
|
|||||||
/**
|
/**
|
||||||
* Generates the level definitions
|
* Generates the level definitions
|
||||||
*/
|
*/
|
||||||
export function generateLevelsForVariant() {
|
export function generateLevelsForVariant(app) {
|
||||||
if (G_IS_STEAM_DEMO) {
|
if (G_IS_STEAM_DEMO) {
|
||||||
return STEAM_DEMO_LEVELS();
|
return STEAM_DEMO_LEVELS();
|
||||||
} else if (G_IS_STANDALONE || WEB_STEAM_SSO_AUTHENTICATED) {
|
} else if (G_IS_STANDALONE || WEB_STEAM_SSO_AUTHENTICATED) {
|
||||||
return STANDALONE_LEVELS();
|
return STANDALONE_LEVELS();
|
||||||
}
|
}
|
||||||
return WEB_DEMO_LEVELS();
|
return WEB_DEMO_LEVELS(app);
|
||||||
}
|
}
|
||||||
|
@ -299,11 +299,11 @@ let levelDefinitionsCache = null;
|
|||||||
/**
|
/**
|
||||||
* Generates the level definitions
|
* Generates the level definitions
|
||||||
*/
|
*/
|
||||||
export function generateLevelDefinitions() {
|
export function generateLevelDefinitions(app) {
|
||||||
if (levelDefinitionsCache) {
|
if (levelDefinitionsCache) {
|
||||||
return levelDefinitionsCache;
|
return levelDefinitionsCache;
|
||||||
}
|
}
|
||||||
const levelDefinitions = generateLevelsForVariant();
|
const levelDefinitions = generateLevelsForVariant(app);
|
||||||
MOD_SIGNALS.modifyLevelDefinitions.dispatch(levelDefinitions);
|
MOD_SIGNALS.modifyLevelDefinitions.dispatch(levelDefinitions);
|
||||||
if (G_IS_DEV) {
|
if (G_IS_DEV) {
|
||||||
levelDefinitions.forEach(({ shape }) => {
|
levelDefinitions.forEach(({ shape }) => {
|
||||||
@ -403,7 +403,7 @@ export class RegularGameMode extends GameMode {
|
|||||||
* @returns {Array<LevelDefinition>}
|
* @returns {Array<LevelDefinition>}
|
||||||
*/
|
*/
|
||||||
getLevelDefinitions() {
|
getLevelDefinitions() {
|
||||||
return generateLevelDefinitions();
|
return generateLevelDefinitions(this.root.app);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
1
src/js/globals.d.ts
vendored
1
src/js/globals.d.ts
vendored
@ -93,6 +93,7 @@ declare interface Window {
|
|||||||
grecaptcha: any;
|
grecaptcha: any;
|
||||||
gtag: any;
|
gtag: any;
|
||||||
cpmstarAPI: any;
|
cpmstarAPI: any;
|
||||||
|
CrazyGames: any;
|
||||||
|
|
||||||
// Mods
|
// Mods
|
||||||
$shapez_registerMod: any;
|
$shapez_registerMod: any;
|
||||||
|
@ -39,7 +39,7 @@ if (G_IS_DEV && IS_DEBUG) {
|
|||||||
|
|
||||||
/* typehints:start */
|
/* typehints:start */
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
assert(false, "typehints built in, this should never be the case!");
|
throw new Error("typehints built in, this should never be the case!");
|
||||||
/* typehints:end */
|
/* typehints:end */
|
||||||
|
|
||||||
/* dev:start */
|
/* dev:start */
|
||||||
|
@ -44,4 +44,6 @@ export class AdProviderInterface {
|
|||||||
showVideoAd() {
|
showVideoAd() {
|
||||||
return Promise.resolve();
|
return Promise.resolve();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setPlayStatus(playing) {}
|
||||||
}
|
}
|
||||||
|
99
src/js/platform/ad_providers/crazygames.js
Normal file
99
src/js/platform/ad_providers/crazygames.js
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
import { AdProviderInterface } from "../ad_provider";
|
||||||
|
import { createLogger } from "../../core/logging";
|
||||||
|
import { timeoutPromise } from "../../core/utils";
|
||||||
|
|
||||||
|
const logger = createLogger("crazygames");
|
||||||
|
|
||||||
|
export class CrazygamesAdProvider extends AdProviderInterface {
|
||||||
|
getHasAds() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
getCanShowVideoAd() {
|
||||||
|
return this.getHasAds() && this.sdkInstance;
|
||||||
|
}
|
||||||
|
|
||||||
|
get sdkInstance() {
|
||||||
|
try {
|
||||||
|
return window.CrazyGames.CrazySDK.getInstance();
|
||||||
|
} catch (ex) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
initialize() {
|
||||||
|
if (!this.getHasAds()) {
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.log("🎬 Initializing crazygames SDK");
|
||||||
|
|
||||||
|
const scriptTag = document.createElement("script");
|
||||||
|
scriptTag.type = "text/javascript";
|
||||||
|
|
||||||
|
return timeoutPromise(
|
||||||
|
new Promise((resolve, reject) => {
|
||||||
|
scriptTag.onload = resolve;
|
||||||
|
scriptTag.onerror = reject;
|
||||||
|
scriptTag.src = "https://sdk.crazygames.com/crazygames-sdk-v1.js";
|
||||||
|
document.head.appendChild(scriptTag);
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
logger.log("🎬 Crazygames SDK loaded, now initializing");
|
||||||
|
this.sdkInstance.init();
|
||||||
|
})
|
||||||
|
.catch(ex => {
|
||||||
|
console.warn("Failed to init crazygames SDK:", ex);
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
showVideoAd() {
|
||||||
|
const instance = this.sdkInstance;
|
||||||
|
if (!instance) {
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.log("Set sound volume to 0");
|
||||||
|
this.app.sound.setMusicVolume(0);
|
||||||
|
this.app.sound.setSoundVolume(0);
|
||||||
|
|
||||||
|
return timeoutPromise(
|
||||||
|
new Promise(resolve => {
|
||||||
|
console.log("🎬 crazygames: Start ad");
|
||||||
|
document.body.classList.add("externalAdOpen");
|
||||||
|
|
||||||
|
const finish = () => {
|
||||||
|
instance.removeEventListener("adError", finish);
|
||||||
|
instance.removeEventListener("adFinished", finish);
|
||||||
|
resolve();
|
||||||
|
};
|
||||||
|
|
||||||
|
instance.addEventListener("adError", finish);
|
||||||
|
instance.addEventListener("adFinished", finish);
|
||||||
|
|
||||||
|
instance.requestAd();
|
||||||
|
}),
|
||||||
|
60000
|
||||||
|
)
|
||||||
|
.catch(ex => {
|
||||||
|
console.warn("Error while resolving video ad:", ex);
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
document.body.classList.remove("externalAdOpen");
|
||||||
|
|
||||||
|
logger.log("Restored sound volume");
|
||||||
|
|
||||||
|
this.app.sound.setMusicVolume(this.app.settings.getSetting("musicVolume"));
|
||||||
|
this.app.sound.setSoundVolume(this.app.settings.getSetting("soundVolume"));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
setPlayStatus(playing) {
|
||||||
|
console.log("crazygames::playing:", playing);
|
||||||
|
if (playing) {
|
||||||
|
this.sdkInstance.gameplayStart();
|
||||||
|
} else {
|
||||||
|
this.sdkInstance.gameplayStop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -32,8 +32,6 @@ export class GamedistributionAdProvider extends AdProviderInterface {
|
|||||||
* When we showed the last video ad
|
* When we showed the last video ad
|
||||||
*/
|
*/
|
||||||
this.lastVideoAdShowTime = -1e20;
|
this.lastVideoAdShowTime = -1e20;
|
||||||
|
|
||||||
console.error("X");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getHasAds() {
|
getHasAds() {
|
||||||
|
@ -35,4 +35,7 @@ export class AnalyticsInterface {
|
|||||||
* @param {string} name
|
* @param {string} name
|
||||||
*/
|
*/
|
||||||
trackDecision(name) {}
|
trackDecision(name) {}
|
||||||
|
|
||||||
|
// LEGACY 1.5.3
|
||||||
|
trackUiClick() {}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { globalConfig, THIRDPARTY_URLS } from "../../core/config";
|
import { globalConfig } from "../../core/config";
|
||||||
import { createLogger } from "../../core/logging";
|
import { createLogger } from "../../core/logging";
|
||||||
import { queryParamOptions } from "../../core/query_parameters";
|
import { queryParamOptions } from "../../core/query_parameters";
|
||||||
import { randomInt } from "../../core/utils";
|
import { randomInt } from "../../core/utils";
|
||||||
@ -10,26 +10,8 @@ import { InGameState } from "../../states/ingame";
|
|||||||
import { SteamAchievementProvider } from "../electron/steam_achievement_provider";
|
import { SteamAchievementProvider } from "../electron/steam_achievement_provider";
|
||||||
import { GameAnalyticsInterface } from "../game_analytics";
|
import { GameAnalyticsInterface } from "../game_analytics";
|
||||||
import { FILE_NOT_FOUND } from "../storage";
|
import { FILE_NOT_FOUND } from "../storage";
|
||||||
|
|
||||||
import OR from "@openreplay/tracker";
|
|
||||||
import OR_fetch from "@openreplay/tracker-fetch";
|
|
||||||
import { WEB_STEAM_SSO_AUTHENTICATED } from "../../core/steam_sso";
|
import { WEB_STEAM_SSO_AUTHENTICATED } from "../../core/steam_sso";
|
||||||
|
|
||||||
let eventConnector;
|
|
||||||
if (!G_IS_STANDALONE && !G_IS_DEV) {
|
|
||||||
eventConnector = new OR({
|
|
||||||
projectKey: "mhZgUFQBI6QAtt3PRLer",
|
|
||||||
respectDoNotTrack: true,
|
|
||||||
revID: G_BUILD_COMMIT_HASH,
|
|
||||||
// @ts-ignore
|
|
||||||
heatmaps: false,
|
|
||||||
verbose: false,
|
|
||||||
captureIFrames: false,
|
|
||||||
});
|
|
||||||
eventConnector.start({});
|
|
||||||
eventConnector.use(OR_fetch({ overrideGlobal: true }));
|
|
||||||
}
|
|
||||||
|
|
||||||
const logger = createLogger("game_analytics");
|
const logger = createLogger("game_analytics");
|
||||||
|
|
||||||
const analyticsUrl = G_IS_DEV ? "http://localhost:8001" : "https://analytics.shapez.io";
|
const analyticsUrl = G_IS_DEV ? "http://localhost:8001" : "https://analytics.shapez.io";
|
||||||
@ -37,7 +19,7 @@ const analyticsUrl = G_IS_DEV ? "http://localhost:8001" : "https://analytics.sha
|
|||||||
// Be sure to increment the ID whenever it changes
|
// Be sure to increment the ID whenever it changes
|
||||||
const analyticsLocalFile = G_IS_STEAM_DEMO ? "shapez_token_steamdemo.bin" : "shapez_token_123.bin";
|
const analyticsLocalFile = G_IS_STEAM_DEMO ? "shapez_token_steamdemo.bin" : "shapez_token_123.bin";
|
||||||
|
|
||||||
const CURRENT_ABT = "abt_mmnd";
|
const CURRENT_ABT = "abt_bsl2";
|
||||||
const CURRENT_ABT_COUNT = 1;
|
const CURRENT_ABT_COUNT = 1;
|
||||||
|
|
||||||
export class ShapezGameAnalytics extends GameAnalyticsInterface {
|
export class ShapezGameAnalytics extends GameAnalyticsInterface {
|
||||||
@ -124,15 +106,7 @@ export class ShapezGameAnalytics extends GameAnalyticsInterface {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
noteMinor(action, payload = "") {
|
noteMinor(action, payload = "") {}
|
||||||
if (eventConnector) {
|
|
||||||
try {
|
|
||||||
eventConnector.event(action, payload);
|
|
||||||
} catch (ex) {
|
|
||||||
console.warn("Failed to note event:", ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @returns {Promise<void>}
|
* @returns {Promise<void>}
|
||||||
@ -176,9 +150,6 @@ export class ShapezGameAnalytics extends GameAnalyticsInterface {
|
|||||||
syncKey => {
|
syncKey => {
|
||||||
this.syncKey = syncKey;
|
this.syncKey = syncKey;
|
||||||
logger.log("Player sync key read:", this.syncKey);
|
logger.log("Player sync key read:", this.syncKey);
|
||||||
if (eventConnector) {
|
|
||||||
eventConnector.setUserID(syncKey);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
// File was not found, retrieve new key
|
// File was not found, retrieve new key
|
||||||
@ -218,9 +189,6 @@ export class ShapezGameAnalytics extends GameAnalyticsInterface {
|
|||||||
this.syncKey = res.key;
|
this.syncKey = res.key;
|
||||||
logger.log("Key retrieved:", this.syncKey);
|
logger.log("Key retrieved:", this.syncKey);
|
||||||
this.app.storage.writeFileAsync(analyticsLocalFile, res.key);
|
this.app.storage.writeFileAsync(analyticsLocalFile, res.key);
|
||||||
if (eventConnector) {
|
|
||||||
eventConnector.setUserID(eventConnector);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
throw new Error("Bad response from analytics server: " + res);
|
throw new Error("Bad response from analytics server: " + res);
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ import { createLogger } from "../../core/logging";
|
|||||||
import { queryParamOptions } from "../../core/query_parameters";
|
import { queryParamOptions } from "../../core/query_parameters";
|
||||||
import { WEB_STEAM_SSO_AUTHENTICATED } from "../../core/steam_sso";
|
import { WEB_STEAM_SSO_AUTHENTICATED } from "../../core/steam_sso";
|
||||||
import { clamp } from "../../core/utils";
|
import { clamp } from "../../core/utils";
|
||||||
|
import { CrazygamesAdProvider } from "../ad_providers/crazygames";
|
||||||
import { GamedistributionAdProvider } from "../ad_providers/gamedistribution";
|
import { GamedistributionAdProvider } from "../ad_providers/gamedistribution";
|
||||||
import { NoAdProvider } from "../ad_providers/no_ad_provider";
|
import { NoAdProvider } from "../ad_providers/no_ad_provider";
|
||||||
import { SteamAchievementProvider } from "../electron/steam_achievement_provider";
|
import { SteamAchievementProvider } from "../electron/steam_achievement_provider";
|
||||||
@ -22,13 +23,11 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface {
|
|||||||
adProvider: NoAdProvider,
|
adProvider: NoAdProvider,
|
||||||
iframed: false,
|
iframed: false,
|
||||||
externalLinks: true,
|
externalLinks: true,
|
||||||
iogLink: true,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!G_IS_STANDALONE && !WEB_STEAM_SSO_AUTHENTICATED && queryParamOptions.embedProvider) {
|
if (!G_IS_STANDALONE && !WEB_STEAM_SSO_AUTHENTICATED && queryParamOptions.embedProvider) {
|
||||||
const providerId = queryParamOptions.embedProvider;
|
const providerId = queryParamOptions.embedProvider;
|
||||||
this.embedProvider.iframed = true;
|
this.embedProvider.iframed = true;
|
||||||
this.embedProvider.iogLink = false;
|
|
||||||
|
|
||||||
switch (providerId) {
|
switch (providerId) {
|
||||||
case "armorgames": {
|
case "armorgames": {
|
||||||
@ -38,7 +37,6 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface {
|
|||||||
|
|
||||||
case "iogames.space": {
|
case "iogames.space": {
|
||||||
this.embedProvider.id = "iogames.space";
|
this.embedProvider.id = "iogames.space";
|
||||||
this.embedProvider.iogLink = true;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,6 +59,7 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface {
|
|||||||
|
|
||||||
case "crazygames": {
|
case "crazygames": {
|
||||||
this.embedProvider.id = "crazygames";
|
this.embedProvider.id = "crazygames";
|
||||||
|
this.embedProvider.adProvider = CrazygamesAdProvider;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,7 +140,7 @@ function initializeSettings() {
|
|||||||
options: Object.keys(LANGUAGES),
|
options: Object.keys(LANGUAGES),
|
||||||
valueGetter: key => key,
|
valueGetter: key => key,
|
||||||
textGetter: key => LANGUAGES[key].name,
|
textGetter: key => LANGUAGES[key].name,
|
||||||
category: enumCategories.general,
|
category: G_CHINA_VERSION || G_WEGAME_VERSION ? null : enumCategories.general,
|
||||||
restartRequired: true,
|
restartRequired: true,
|
||||||
changeCb: (app, id) => null,
|
changeCb: (app, id) => null,
|
||||||
magicValue: "auto-detect",
|
magicValue: "auto-detect",
|
||||||
@ -286,7 +286,10 @@ function initializeSettings() {
|
|||||||
new BoolSetting("lowQualityMapResources", enumCategories.performance, (app, value) => {}),
|
new BoolSetting("lowQualityMapResources", enumCategories.performance, (app, value) => {}),
|
||||||
new BoolSetting("disableTileGrid", enumCategories.performance, (app, value) => {}),
|
new BoolSetting("disableTileGrid", enumCategories.performance, (app, value) => {}),
|
||||||
new BoolSetting("lowQualityTextures", enumCategories.performance, (app, value) => {}),
|
new BoolSetting("lowQualityTextures", enumCategories.performance, (app, value) => {}),
|
||||||
|
|
||||||
new BoolSetting("simplifiedBelts", enumCategories.performance, (app, value) => {}),
|
new BoolSetting("simplifiedBelts", enumCategories.performance, (app, value) => {}),
|
||||||
|
|
||||||
|
new BoolSetting("showKiwiClicker", null, (app, value) => {}),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -331,6 +334,8 @@ class SettingsStorage {
|
|||||||
* @type {Object.<string, number>}
|
* @type {Object.<string, number>}
|
||||||
*/
|
*/
|
||||||
this.keybindingOverrides = {};
|
this.keybindingOverrides = {};
|
||||||
|
|
||||||
|
this.showKiwiClicker = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -547,7 +552,7 @@ export class ApplicationSettings extends ReadWriteProxy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getCurrentVersion() {
|
getCurrentVersion() {
|
||||||
return 31;
|
return 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @param {{settings: SettingsStorage, version: number}} data */
|
/** @param {{settings: SettingsStorage, version: number}} data */
|
||||||
@ -699,6 +704,11 @@ export class ApplicationSettings extends ReadWriteProxy {
|
|||||||
data.version = 31;
|
data.version = 31;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (data.version < 32) {
|
||||||
|
data.settings.showKiwiClicker = true;
|
||||||
|
data.version = 32;
|
||||||
|
}
|
||||||
|
|
||||||
// MODS
|
// MODS
|
||||||
if (!THEMES[data.settings.theme] || !this.app.restrictionMgr.getHasExtendedSettings()) {
|
if (!THEMES[data.settings.theme] || !this.app.restrictionMgr.getHasExtendedSettings()) {
|
||||||
console.log("Resetting theme because its no longer available: " + data.settings.theme);
|
console.log("Resetting theme because its no longer available: " + data.settings.theme);
|
||||||
|
@ -203,6 +203,14 @@ export class InGameState extends GameState {
|
|||||||
// do nothing
|
// do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getIsIngame() {
|
||||||
|
return (
|
||||||
|
this.stage === GAME_LOADING_STATES.s10_gameRunning &&
|
||||||
|
this.core &&
|
||||||
|
!this.core.root.hud.shouldPauseGame()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when the game somehow failed to initialize. Resets everything to basic state and
|
* Called when the game somehow failed to initialize. Resets everything to basic state and
|
||||||
* then goes to the main menu, showing the error
|
* then goes to the main menu, showing the error
|
||||||
|
@ -30,11 +30,6 @@ export class LoginState extends GameState {
|
|||||||
throw new Error("No next state id");
|
throw new Error("No next state id");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.app.clientApi.isLoggedIn()) {
|
|
||||||
this.finishLoading();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.dialogs = new HUDModalDialogs(null, this.app);
|
this.dialogs = new HUDModalDialogs(null, this.app);
|
||||||
const dialogsElement = document.body.querySelector(".modalDialogParent");
|
const dialogsElement = document.body.querySelector(".modalDialogParent");
|
||||||
this.dialogs.initializeToElement(dialogsElement);
|
this.dialogs.initializeToElement(dialogsElement);
|
||||||
|
@ -4,6 +4,7 @@ import { GameState } from "../core/game_state";
|
|||||||
import { DialogWithForm } from "../core/modal_dialog_elements";
|
import { DialogWithForm } from "../core/modal_dialog_elements";
|
||||||
import { FormElementInput } from "../core/modal_dialog_forms";
|
import { FormElementInput } from "../core/modal_dialog_forms";
|
||||||
import { ReadWriteProxy } from "../core/read_write_proxy";
|
import { ReadWriteProxy } from "../core/read_write_proxy";
|
||||||
|
import { STOP_PROPAGATION } from "../core/signal";
|
||||||
import { WEB_STEAM_SSO_AUTHENTICATED } from "../core/steam_sso";
|
import { WEB_STEAM_SSO_AUTHENTICATED } from "../core/steam_sso";
|
||||||
import {
|
import {
|
||||||
formatSecondsToTimeAgo,
|
formatSecondsToTimeAgo,
|
||||||
@ -41,8 +42,7 @@ export class MainMenuState extends GameState {
|
|||||||
const showLanguageIcon = !G_CHINA_VERSION && !G_WEGAME_VERSION;
|
const showLanguageIcon = !G_CHINA_VERSION && !G_WEGAME_VERSION;
|
||||||
const showExitAppButton = G_IS_STANDALONE;
|
const showExitAppButton = G_IS_STANDALONE;
|
||||||
const showPuzzleDLC =
|
const showPuzzleDLC =
|
||||||
G_IS_DEV ||
|
!G_WEGAME_VERSION && (G_IS_STANDALONE || WEB_STEAM_SSO_AUTHENTICATED) && !G_IS_STEAM_DEMO;
|
||||||
(!G_WEGAME_VERSION && (G_IS_STANDALONE || WEB_STEAM_SSO_AUTHENTICATED) && !G_IS_STEAM_DEMO);
|
|
||||||
const showWegameFooter = G_WEGAME_VERSION;
|
const showWegameFooter = G_WEGAME_VERSION;
|
||||||
const hasMods = MODS.anyModsActive();
|
const hasMods = MODS.anyModsActive();
|
||||||
|
|
||||||
@ -65,7 +65,8 @@ export class MainMenuState extends GameState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const showDemoAdvertisement =
|
const showDemoAdvertisement =
|
||||||
showExternalLinks && this.app.restrictionMgr.getIsStandaloneMarketingActive();
|
(showExternalLinks || G_CHINA_VERSION) &&
|
||||||
|
this.app.restrictionMgr.getIsStandaloneMarketingActive();
|
||||||
|
|
||||||
const ownsPuzzleDLC =
|
const ownsPuzzleDLC =
|
||||||
WEB_STEAM_SSO_AUTHENTICATED ||
|
WEB_STEAM_SSO_AUTHENTICATED ||
|
||||||
@ -73,6 +74,8 @@ export class MainMenuState extends GameState {
|
|||||||
!G_IS_STEAM_DEMO &&
|
!G_IS_STEAM_DEMO &&
|
||||||
/** @type { PlatformWrapperImplElectron}*/ (this.app.platformWrapper).dlcs.puzzle);
|
/** @type { PlatformWrapperImplElectron}*/ (this.app.platformWrapper).dlcs.puzzle);
|
||||||
|
|
||||||
|
const showKiwiClicker = this.app.settings.getSetting("showKiwiClicker") && MODS.mods.length === 0;
|
||||||
|
|
||||||
const bannerHtml = `
|
const bannerHtml = `
|
||||||
<h3>${T.demoBanners.titleV2}</h3>
|
<h3>${T.demoBanners.titleV2}</h3>
|
||||||
|
|
||||||
@ -99,11 +102,15 @@ export class MainMenuState extends GameState {
|
|||||||
<a href="#" class="steamLink steam_dlbtn_0" target="_blank">
|
<a href="#" class="steamLink steam_dlbtn_0" target="_blank">
|
||||||
${
|
${
|
||||||
globalConfig.currentDiscount > 0
|
globalConfig.currentDiscount > 0
|
||||||
? `<span class='discount'>-${globalConfig.currentDiscount}%!</span>`
|
? `<span class='discount'>${T.global.discount.replace(
|
||||||
|
"<percentage>",
|
||||||
|
String(globalConfig.currentDiscount)
|
||||||
|
)}</span>`
|
||||||
: ""
|
: ""
|
||||||
}
|
}
|
||||||
Play shapez on Steam
|
Play shapez on Steam
|
||||||
</a>
|
</a>
|
||||||
|
${!G_IS_STEAM_DEMO ? `<span class="specialOffer">${T.global.discountSummerSale}</span>` : ""}
|
||||||
${!G_IS_STEAM_DEMO ? `<div class="onlinePlayerCount"></div>` : ""}
|
${!G_IS_STEAM_DEMO ? `<div class="onlinePlayerCount"></div>` : ""}
|
||||||
|
|
||||||
`;
|
`;
|
||||||
@ -138,14 +145,18 @@ export class MainMenuState extends GameState {
|
|||||||
<div class="buttons"></div>
|
<div class="buttons"></div>
|
||||||
<div class="savegamesMount"></div>
|
<div class="savegamesMount"></div>
|
||||||
${
|
${
|
||||||
G_IS_STANDALONE || WEB_STEAM_SSO_AUTHENTICATED
|
G_IS_STANDALONE || !WEB_STEAM_SSO_AUTHENTICATED
|
||||||
? ""
|
? `<div class="steamSso">
|
||||||
: `<div class="steamSso">
|
<span class="description">${
|
||||||
<span class="description">${T.mainMenu.playFullVersionV2}</span>
|
G_IS_STANDALONE
|
||||||
<a class="ssoSignIn" href="${
|
? T.mainMenu.playFullVersionStandalone
|
||||||
|
: T.mainMenu.playFullVersionV2
|
||||||
|
}</span>
|
||||||
|
<a class="ssoSignIn" target="_blank" href="${
|
||||||
this.app.clientApi.getEndpoint() + "/v1/noauth/steam-sso"
|
this.app.clientApi.getEndpoint() + "/v1/noauth/steam-sso"
|
||||||
}">Sign in</a>
|
}">Sign in</a>
|
||||||
</div>`
|
</div>`
|
||||||
|
: ""
|
||||||
}
|
}
|
||||||
${
|
${
|
||||||
WEB_STEAM_SSO_AUTHENTICATED
|
WEB_STEAM_SSO_AUTHENTICATED
|
||||||
@ -191,10 +202,15 @@ export class MainMenuState extends GameState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
<div class="mainNews kiwiClicker">
|
${
|
||||||
|
showKiwiClicker
|
||||||
|
? `<div class="mainNews kiwiClicker">
|
||||||
<div class="text">Check out this small side project I am working on right now!</div>
|
<div class="text">Check out this small side project I am working on right now!</div>
|
||||||
|
<div class="close"></div>
|
||||||
|
|
||||||
</div>
|
</div>`
|
||||||
|
: ""
|
||||||
|
}
|
||||||
`
|
`
|
||||||
: ""
|
: ""
|
||||||
}
|
}
|
||||||
@ -258,7 +274,7 @@ export class MainMenuState extends GameState {
|
|||||||
<div class="socialLinks">
|
<div class="socialLinks">
|
||||||
|
|
||||||
${
|
${
|
||||||
showExternalLinks
|
showExternalLinks && (!G_IS_STANDALONE || G_IS_STEAM_DEMO)
|
||||||
? `<a class="steamLinkSocial boxLink" target="_blank">
|
? `<a class="steamLinkSocial boxLink" target="_blank">
|
||||||
<span class="thirdpartyLogo steamLogo"></span>
|
<span class="thirdpartyLogo steamLogo"></span>
|
||||||
<span class="label">steam</span>
|
<span class="label">steam</span>
|
||||||
@ -447,6 +463,7 @@ export class MainMenuState extends GameState {
|
|||||||
".steamLink": this.onSteamLinkClicked,
|
".steamLink": this.onSteamLinkClicked,
|
||||||
".steamLinkSocial": this.onSteamLinkClickedSocial,
|
".steamLinkSocial": this.onSteamLinkClickedSocial,
|
||||||
".kiwiClicker": this.onKiwiClickerClicked,
|
".kiwiClicker": this.onKiwiClickerClicked,
|
||||||
|
".kiwiClicker .close": this.hideKiwiClicker,
|
||||||
".discordLink": () => {
|
".discordLink": () => {
|
||||||
this.app.platformWrapper.openExternalLink(THIRDPARTY_URLS.discord);
|
this.app.platformWrapper.openExternalLink(THIRDPARTY_URLS.discord);
|
||||||
},
|
},
|
||||||
@ -568,6 +585,13 @@ export class MainMenuState extends GameState {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hideKiwiClicker() {
|
||||||
|
this.app.settings.updateSetting("showKiwiClicker", false);
|
||||||
|
this.app.settings.save();
|
||||||
|
this.htmlElement.querySelector(".kiwiClicker").remove();
|
||||||
|
return STOP_PROPAGATION;
|
||||||
|
}
|
||||||
|
|
||||||
onBackButtonClicked() {
|
onBackButtonClicked() {
|
||||||
this.renderMainMenu();
|
this.renderMainMenu();
|
||||||
this.renderSavegames();
|
this.renderSavegames();
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import { CHANGELOG } from "../changelog";
|
import { CHANGELOG } from "../changelog";
|
||||||
import { cachebust } from "../core/cachebust";
|
import { cachebust } from "../core/cachebust";
|
||||||
import { globalConfig } from "../core/config";
|
import { globalConfig, THIRDPARTY_URLS } from "../core/config";
|
||||||
import { GameState } from "../core/game_state";
|
import { GameState } from "../core/game_state";
|
||||||
import { createLogger } from "../core/logging";
|
import { createLogger } from "../core/logging";
|
||||||
|
import { queryParamOptions } from "../core/query_parameters";
|
||||||
import { authorizeViaSSOToken } from "../core/steam_sso";
|
import { authorizeViaSSOToken } from "../core/steam_sso";
|
||||||
import { getLogoSprite, timeoutPromise } from "../core/utils";
|
import { getLogoSprite, timeoutPromise } from "../core/utils";
|
||||||
import { getRandomHint } from "../game/hints";
|
import { getRandomHint } from "../game/hints";
|
||||||
@ -48,19 +49,48 @@ export class PreloadState extends GameState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fetchDiscounts() {
|
async fetchDiscounts() {
|
||||||
await timeoutPromise(
|
// Summer sale specific
|
||||||
fetch("https://analytics.shapez.io/v1/discounts")
|
globalConfig.currentDiscount = 60;
|
||||||
.then(res => res.json())
|
|
||||||
.then(data => {
|
// Regular
|
||||||
globalConfig.currentDiscount = Number(
|
// await timeoutPromise(
|
||||||
data["1318690"].data.price_overview.discount_percent
|
// fetch("https://analytics.shapez.io/v1/discounts")
|
||||||
);
|
// .then(res => res.json())
|
||||||
logger.log("Fetched current discount:", globalConfig.currentDiscount);
|
// .then(data => {
|
||||||
}),
|
// globalConfig.currentDiscount = Number(data["1318690"].data.price_overview.discount_percent);
|
||||||
2000
|
// logger.log("Fetched current discount:", globalConfig.currentDiscount);
|
||||||
).catch(err => {
|
// }),
|
||||||
logger.warn("Failed to fetch current discount:", err);
|
// 2000
|
||||||
});
|
// ).catch(err => {
|
||||||
|
// logger.warn("Failed to fetch current discount:", err);
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
|
||||||
|
async sendBeacon() {
|
||||||
|
if (G_IS_STANDALONE && !G_IS_STEAM_DEMO) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (queryParamOptions.campaign) {
|
||||||
|
fetch(
|
||||||
|
"https://analytics.shapez.io/campaign/" +
|
||||||
|
queryParamOptions.campaign +
|
||||||
|
"?lpurl=nocontent&fbclid=" +
|
||||||
|
(queryParamOptions.fbclid || "") +
|
||||||
|
"&gclid=" +
|
||||||
|
(queryParamOptions.gclid || "")
|
||||||
|
).catch(err => {
|
||||||
|
console.warn("Failed to send beacon:", err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (queryParamOptions.embedProvider) {
|
||||||
|
fetch(
|
||||||
|
"https://analytics.shapez.io/campaign/embed_" +
|
||||||
|
queryParamOptions.embedProvider +
|
||||||
|
"?lpurl=nocontent"
|
||||||
|
).catch(err => {
|
||||||
|
console.warn("Failed to send beacon:", err);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
onLeave() {
|
onLeave() {
|
||||||
@ -69,8 +99,18 @@ export class PreloadState extends GameState {
|
|||||||
|
|
||||||
startLoading() {
|
startLoading() {
|
||||||
this.setStatus("Booting", 0)
|
this.setStatus("Booting", 0)
|
||||||
|
.then(() => {
|
||||||
|
try {
|
||||||
|
window.localStorage.setItem("local_storage_feature_detection", "1");
|
||||||
|
} catch (ex) {
|
||||||
|
throw new Error(
|
||||||
|
"Could not access local storage. Make sure you are not playing in incognito mode and allow thirdparty cookies!"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
})
|
||||||
.then(() => this.setStatus("Creating platform wrapper", 3))
|
.then(() => this.setStatus("Creating platform wrapper", 3))
|
||||||
|
|
||||||
|
.then(() => this.sendBeacon())
|
||||||
.then(() => authorizeViaSSOToken(this.app, this.dialogs))
|
.then(() => authorizeViaSSOToken(this.app, this.dialogs))
|
||||||
|
|
||||||
.then(() => this.app.platformWrapper.initialize())
|
.then(() => this.app.platformWrapper.initialize())
|
||||||
@ -317,12 +357,6 @@ export class PreloadState extends GameState {
|
|||||||
${this.currentStatus} failed:<br/>
|
${this.currentStatus} failed:<br/>
|
||||||
${text}
|
${text}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="supportHelp">
|
|
||||||
Please send me an email with steps to reproduce and what you did before this happened:
|
|
||||||
<br /><a class="email" href="mailto:${email}?subject=App%20does%20not%20launch">${email}</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="lower">
|
<div class="lower">
|
||||||
<button class="resetApp styledButton">Reset App</button>
|
<button class="resetApp styledButton">Reset App</button>
|
||||||
<i>Build ${G_BUILD_VERSION} @ ${G_BUILD_COMMIT_HASH}</i>
|
<i>Build ${G_BUILD_VERSION} @ ${G_BUILD_COMMIT_HASH}</i>
|
||||||
|
@ -88,8 +88,7 @@ export class SettingsState extends TextualGameState {
|
|||||||
|
|
||||||
for (let i = 0; i < this.app.settings.settingHandles.length; ++i) {
|
for (let i = 0; i < this.app.settings.settingHandles.length; ++i) {
|
||||||
const setting = this.app.settings.settingHandles[i];
|
const setting = this.app.settings.settingHandles[i];
|
||||||
|
if (!setting.categoryId) {
|
||||||
if ((G_CHINA_VERSION || G_WEGAME_VERSION) && setting.id === "language") {
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -170,7 +169,7 @@ export class SettingsState extends TextualGameState {
|
|||||||
|
|
||||||
initSettings() {
|
initSettings() {
|
||||||
this.app.settings.settingHandles.forEach(setting => {
|
this.app.settings.settingHandles.forEach(setting => {
|
||||||
if ((G_CHINA_VERSION || G_WEGAME_VERSION) && setting.id === "language") {
|
if (!setting.categoryId) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,6 +52,8 @@ global:
|
|||||||
space: SPACE
|
space: SPACE
|
||||||
loggingIn: Logging in
|
loggingIn: Logging in
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Demo Version
|
title: Demo Version
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -99,6 +101,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
@ -55,6 +55,8 @@ global:
|
|||||||
space: ESPAI
|
space: ESPAI
|
||||||
loggingIn: Logging in
|
loggingIn: Logging in
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Demo - Versió de prova
|
title: Demo - Versió de prova
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -103,6 +105,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
@ -51,6 +51,8 @@ global:
|
|||||||
space: SPACE
|
space: SPACE
|
||||||
loggingIn: Přihlašuji
|
loggingIn: Přihlašuji
|
||||||
loadingResources: Stahování dalších zdrojů (<percentage> %)
|
loadingResources: Stahování dalších zdrojů (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Demo verze
|
title: Demo verze
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -99,6 +101,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
@ -53,6 +53,8 @@ global:
|
|||||||
space: MELLEMRUM
|
space: MELLEMRUM
|
||||||
loggingIn: Logging in
|
loggingIn: Logging in
|
||||||
loadingResources: Downloader yderligere ressourcer (<percentage> %)
|
loadingResources: Downloader yderligere ressourcer (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Demoversion
|
title: Demoversion
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -100,6 +102,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
@ -55,6 +55,8 @@ global:
|
|||||||
shift: UMSCH
|
shift: UMSCH
|
||||||
space: LEER
|
space: LEER
|
||||||
loadingResources: Lade zusätzliche Ressourcen (<percentage> %)
|
loadingResources: Lade zusätzliche Ressourcen (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SONDERANGEBOT! Angebot endet am 7. Juli
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Demoversion
|
title: Demoversion
|
||||||
titleV2: "Spiele jetzt die Vollversion für:"
|
titleV2: "Spiele jetzt die Vollversion für:"
|
||||||
@ -103,7 +105,9 @@ mainMenu:
|
|||||||
Vollversion im Browser!
|
Vollversion im Browser!
|
||||||
playingFullVersion: Du spielst jetzt die Vollversion!
|
playingFullVersion: Du spielst jetzt die Vollversion!
|
||||||
logout: Ausloggen
|
logout: Ausloggen
|
||||||
noActiveSavegames: Keine Speicherstände gefunden - Klicke Spielen um ein neues Spiel zu starten!
|
noActiveSavegames: Keine Speicherstände gefunden - Klicke Spielen um ein neues
|
||||||
|
Spiel zu starten!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
puzzleMenu:
|
puzzleMenu:
|
||||||
play: Spielen
|
play: Spielen
|
||||||
edit: Bearbeiten
|
edit: Bearbeiten
|
||||||
|
@ -55,6 +55,8 @@ global:
|
|||||||
space: SPACE
|
space: SPACE
|
||||||
loggingIn: Logging in
|
loggingIn: Logging in
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Demo Version
|
title: Demo Version
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -103,6 +105,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
@ -58,6 +58,9 @@ global:
|
|||||||
# What symbol to use to separate the integer part from the fractional part of a number, e.g. "0.4"
|
# What symbol to use to separate the integer part from the fractional part of a number, e.g. "0.4"
|
||||||
decimalSeparator: "."
|
decimalSeparator: "."
|
||||||
|
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: "SPECIAL PROMOTION! Offer ends 7 July"
|
||||||
|
|
||||||
# The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
|
# The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
|
||||||
suffix:
|
suffix:
|
||||||
thousands: k
|
thousands: k
|
||||||
@ -133,6 +136,7 @@ mainMenu:
|
|||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
|
|
||||||
playFullVersionV2: Bought shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bought shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
playingFullVersion: You are now playing the full version!
|
playingFullVersion: You are now playing the full version!
|
||||||
logout: Logout
|
logout: Logout
|
||||||
|
|
||||||
|
@ -54,7 +54,9 @@ global:
|
|||||||
shift: SHIFT
|
shift: SHIFT
|
||||||
space: ESPACIO
|
space: ESPACIO
|
||||||
loggingIn: Iniciando sesión
|
loggingIn: Iniciando sesión
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Descargando recursos adicionales (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Versión de prueba
|
title: Versión de prueba
|
||||||
intro: >-
|
intro: >-
|
||||||
@ -97,15 +99,18 @@ mainMenu:
|
|||||||
puzzleDlcText: ¿Disfrutas compactando y optimizando fábricas? ¡Consigue ahora el
|
puzzleDlcText: ¿Disfrutas compactando y optimizando fábricas? ¡Consigue ahora el
|
||||||
DLC de Puzles en Steam para aún más diversión!
|
DLC de Puzles en Steam para aún más diversión!
|
||||||
puzzleDlcWishlist: ¡Añádelo ahora a tu lista de deseos!
|
puzzleDlcWishlist: ¡Añádelo ahora a tu lista de deseos!
|
||||||
puzzleDlcViewNow: Ver Dlc
|
puzzleDlcViewNow: Ver DLC
|
||||||
mods:
|
mods:
|
||||||
title: Active Mods
|
title: Mods Activos
|
||||||
warningPuzzleDLC: Playing the Puzzle DLC is not possible with mods. Please
|
warningPuzzleDLC: No es posible jugar el DLC Puzzle con mods. Por favor
|
||||||
disable all mods to play the DLC.
|
desactiva todos los mods para jugar el DLC.
|
||||||
playingFullVersion: You are now playing the full version!
|
playingFullVersion: ¡Estás jugando la versión completa!
|
||||||
logout: Logout
|
logout: Cerrar Sesión
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No se encontraron partidas guardadas activas - ¡Haz click en
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
Jugar para empezar una nueva partida!
|
||||||
|
playFullVersionV2: Has comprado shapez en Steam? ¡Juega la versión completa
|
||||||
|
desde tu navegador!
|
||||||
|
playFullVersionStandalone: ¡Ahora puedes jugar la versión completa desde tu navegador!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
@ -230,7 +235,7 @@ dialogs:
|
|||||||
title: Fallo al cargar los Puzles
|
title: Fallo al cargar los Puzles
|
||||||
desc: Desafortunadamente, no se pudieron cargar los puzles.
|
desc: Desafortunadamente, no se pudieron cargar los puzles.
|
||||||
submitPuzzle:
|
submitPuzzle:
|
||||||
title: Enviar Puzzle
|
title: Enviar Puzle
|
||||||
descName: "Nombra tu puzle:"
|
descName: "Nombra tu puzle:"
|
||||||
descIcon: "Por favor ingresa una clave única, que será el icono de tu puzle
|
descIcon: "Por favor ingresa una clave única, que será el icono de tu puzle
|
||||||
(Puedes generarlas <link>aquí</link>, o escoger una de las formas
|
(Puedes generarlas <link>aquí</link>, o escoger una de las formas
|
||||||
@ -291,36 +296,38 @@ dialogs:
|
|||||||
title: ¿Eliminar Puzle?
|
title: ¿Eliminar Puzle?
|
||||||
desc: ¿Estas seguro de querer eliminar '<title>'? ¡Esto no se puede deshacer!
|
desc: ¿Estas seguro de querer eliminar '<title>'? ¡Esto no se puede deshacer!
|
||||||
modsDifference:
|
modsDifference:
|
||||||
title: Mod Warning
|
title: Advertencia por Mod
|
||||||
desc: The currently installed mods differ from the mods the savegame was created
|
desc: Los mods instalados actualmente difieren a los mods de la partida guardada
|
||||||
with. This might cause the savegame to break or not load at all. Are
|
en el momento de la creación. Esto puede causar que la partida
|
||||||
you sure you want to continue?
|
guardada se corrompa o no funcione. ¿Estás seguro de querer
|
||||||
missingMods: Missing Mods
|
consitnuar?
|
||||||
newMods: Newly installed Mods
|
missingMods: Mods Faltantes
|
||||||
|
newMods: Mods Nuevos Instalados
|
||||||
resourceLoadFailed:
|
resourceLoadFailed:
|
||||||
title: Resources failed to load
|
title: Recursos fallaron en cargar
|
||||||
demoLinkText: shapez demo on Steam
|
demoLinkText: Demo de shapez en Steam
|
||||||
descWeb: "One ore more resources could not be loaded. Make sure you have a
|
descWeb: "Uno o más recrusos no pudieron cargar. Asegurate de tener una conexión
|
||||||
stable internet connection and try again. If this still doesn't
|
estable de internet y vuelve a intentar. Si todavía no funciona,
|
||||||
work, make sure to also disable any browser extensions (including
|
asegurate de tambien desactivar extensiones del navegador
|
||||||
adblockers).<br><br> As an alternative, you can also play the
|
(incluyendo adblockers).<br><br> Como alternativa, puedes tambien
|
||||||
<demoOnSteamLinkText>. <br><br> Error Message:"
|
jugar el <demoOnSteamLinkText>. <br><br> Mensaje de Error:"
|
||||||
descSteamDemo: "One ore more resources could not be loaded. Try restarting the
|
descSteamDemo: "Uno o más recursos no puedieron cargar. Intenta reiniciar el
|
||||||
game - If that does not help, try reinstalling and verifying the
|
juego - Si eso no ayuda, intenta reinstalar y verificar los archivos
|
||||||
game files via Steam. <br><br> Error Message:"
|
del juego en Steam. <br><br> Mensaje de Error:"
|
||||||
steamSsoError:
|
steamSsoError:
|
||||||
title: Full Version Logout
|
title: Cierre de sesión de versión completa
|
||||||
desc: You have been logged out from the Full Browser Version since either your
|
desc: Se te ha cerrado sesión desde la versión completa por navegaador debido a
|
||||||
network connection is unstable or you are playing on another
|
que tu conexión de internet es inestable o estás jugando desde otro
|
||||||
device.<br><br> Please make sure you don't have shapez open in any
|
dispositivo.<br><br> Por favor asegurate de que no tienes shapez
|
||||||
other browser tab or another computer with the same Steam
|
abierto en otra pestaña del navegador o en otra computadora con la
|
||||||
account.<br><br> You can login again in the main menu.
|
misma cuenta de Steam.<br><br> Puedes iniciar sesión nuevamente
|
||||||
|
desde el menú principal.
|
||||||
steamSsoNoOwnership:
|
steamSsoNoOwnership:
|
||||||
title: Full Edition not owned
|
title: No eres dueño de la Edición completa
|
||||||
desc: In order to play the Full Edition in your Browser, you need to own both
|
desc: En orden de poder jugar la versión completa en tu nevagador, debes comprar
|
||||||
the base game and the Puzzle DLC on your Steam account.<br><br>
|
el juego base y el DLC Puzzle desde tu cuenta de Steam.<br><br> Por
|
||||||
Please make sure you own both, signed in with the correct Steam
|
favor asegurate de tener ambos, iniciendo sesión con la cuenta
|
||||||
account and then try again.
|
correcta de Steam y vuelve a intentar.
|
||||||
ingame:
|
ingame:
|
||||||
keybindingsOverlay:
|
keybindingsOverlay:
|
||||||
moveMap: Mover
|
moveMap: Mover
|
||||||
@ -468,7 +475,7 @@ ingame:
|
|||||||
desc: Presiona aquí para ver que tiene la versión de Steam!
|
desc: Presiona aquí para ver que tiene la versión de Steam!
|
||||||
get_on_steam: Consiguelo en Steam
|
get_on_steam: Consiguelo en Steam
|
||||||
standaloneAdvantages:
|
standaloneAdvantages:
|
||||||
no_thanks: ¡No grácias!
|
no_thanks: ¡No gracias!
|
||||||
points:
|
points:
|
||||||
levels:
|
levels:
|
||||||
title: 12 nuevos niveles
|
title: 12 nuevos niveles
|
||||||
@ -492,11 +499,11 @@ ingame:
|
|||||||
title: Logros
|
title: Logros
|
||||||
desc: Atrapalos a todos!
|
desc: Atrapalos a todos!
|
||||||
mods:
|
mods:
|
||||||
title: Modding support!
|
title: ¡Soporte de Modificaciones!
|
||||||
desc: Over 80 mods available!
|
desc: ¡Más de 80 modificaciones disponibles!
|
||||||
titleV2: "Get the full version now on Steam to unlock:"
|
titleV2: "Obten la versión completa en Steam para desbloquear:"
|
||||||
titleExpiredV2: Demo completed!
|
titleExpiredV2: ¡Demo completada!
|
||||||
titleEnjoyingDemo: Enjoy the demo?
|
titleEnjoyingDemo: ¿Estás disfrutando la demo?
|
||||||
puzzleEditorSettings:
|
puzzleEditorSettings:
|
||||||
zoneTitle: Área
|
zoneTitle: Área
|
||||||
zoneWidth: Anchura
|
zoneWidth: Anchura
|
||||||
@ -506,7 +513,7 @@ ingame:
|
|||||||
share: Compartir
|
share: Compartir
|
||||||
report: Reportar
|
report: Reportar
|
||||||
clearBuildings: Borrar Edificios
|
clearBuildings: Borrar Edificios
|
||||||
resetPuzzle: Reiniciar Puzzle
|
resetPuzzle: Reiniciar Puzle
|
||||||
puzzleEditorControls:
|
puzzleEditorControls:
|
||||||
title: Editor de Puzles
|
title: Editor de Puzles
|
||||||
instructions:
|
instructions:
|
||||||
@ -534,7 +541,7 @@ ingame:
|
|||||||
titleRatingDesc: Tu puntuación me ayudará a hacerte mejores sugerencias en el futuro
|
titleRatingDesc: Tu puntuación me ayudará a hacerte mejores sugerencias en el futuro
|
||||||
continueBtn: Continuar Jugando
|
continueBtn: Continuar Jugando
|
||||||
menuBtn: Menú
|
menuBtn: Menú
|
||||||
nextPuzzle: Siguiente Puzzle
|
nextPuzzle: Siguiente Puzle
|
||||||
puzzleMetadata:
|
puzzleMetadata:
|
||||||
author: Autor
|
author: Autor
|
||||||
shortKey: Clave
|
shortKey: Clave
|
||||||
@ -1128,7 +1135,7 @@ keybindings:
|
|||||||
massSelect: Selección masiva
|
massSelect: Selección masiva
|
||||||
buildings: Atajos de edificios
|
buildings: Atajos de edificios
|
||||||
placementModifiers: Modificadores de colocación
|
placementModifiers: Modificadores de colocación
|
||||||
mods: Provided by Mods
|
mods: Provisto por Mods
|
||||||
mappings:
|
mappings:
|
||||||
confirm: Confirmar
|
confirm: Confirmar
|
||||||
back: Atrás
|
back: Atrás
|
||||||
@ -1242,7 +1249,7 @@ tips:
|
|||||||
- Tener una buena proporción entre edificion maximizará su eficiencia
|
- Tener una buena proporción entre edificion maximizará su eficiencia
|
||||||
- A su máximo nivel, 5 extractores llenarán por completo una cinta
|
- A su máximo nivel, 5 extractores llenarán por completo una cinta
|
||||||
transportadora.
|
transportadora.
|
||||||
- ¡No te olvides de utilizár túneles!
|
- ¡No te olvides de utilizar túneles!
|
||||||
- No es necesario dividir los items de manera uniforme para conseguír la
|
- No es necesario dividir los items de manera uniforme para conseguír la
|
||||||
mayor eficiencia.
|
mayor eficiencia.
|
||||||
- Mantener apretado <b>SHIFT</b> activará el planeador de cintas,
|
- Mantener apretado <b>SHIFT</b> activará el planeador de cintas,
|
||||||
@ -1308,7 +1315,7 @@ puzzleMenu:
|
|||||||
loadPuzzle: Cargar
|
loadPuzzle: Cargar
|
||||||
reviewPuzzle: Revisar y Publicar
|
reviewPuzzle: Revisar y Publicar
|
||||||
validatingPuzzle: Validando Puzle
|
validatingPuzzle: Validando Puzle
|
||||||
submittingPuzzle: Enviando Puzzle
|
submittingPuzzle: Enviando Puzle
|
||||||
noPuzzles: Ahora mismo no hay puzles en esta sección.
|
noPuzzles: Ahora mismo no hay puzles en esta sección.
|
||||||
categories:
|
categories:
|
||||||
levels: Niveles
|
levels: Niveles
|
||||||
@ -1349,7 +1356,7 @@ puzzleMenu:
|
|||||||
derecho a shapez.io en tu biblioteca, selecionando propiedades > DLCs.
|
derecho a shapez.io en tu biblioteca, selecionando propiedades > DLCs.
|
||||||
search:
|
search:
|
||||||
action: Buscar
|
action: Buscar
|
||||||
placeholder: Escribe un nombre de puzzle o autor
|
placeholder: Escribe un nombre de puzle o autor
|
||||||
includeCompleted: Incluir completado
|
includeCompleted: Incluir completado
|
||||||
difficulties:
|
difficulties:
|
||||||
any: Cualquier dificultad
|
any: Cualquier dificultad
|
||||||
@ -1391,20 +1398,22 @@ backendErrors:
|
|||||||
no-permission: No tienes los permisos necesarios para llevar a cabo esta acción.
|
no-permission: No tienes los permisos necesarios para llevar a cabo esta acción.
|
||||||
mods:
|
mods:
|
||||||
title: Mods
|
title: Mods
|
||||||
author: Author
|
author: Autor
|
||||||
version: Version
|
version: Versión
|
||||||
modWebsite: Website
|
modWebsite: Pagina Web
|
||||||
openFolder: Open Mods Folder
|
openFolder: Abrir Carpeta de Mods
|
||||||
folderOnlyStandalone: Opening the mod folder is only possible when running the standalone.
|
folderOnlyStandalone: Solo es posible abrir la carpeta de mods corriendo la
|
||||||
browseMods: Browse Mods
|
versión de escritorio.
|
||||||
modsInfo: To install and manage mods, copy them to the mods folder within the
|
browseMods: Examinar Mods
|
||||||
game directory. You can also use the 'Open Mods Folder' button on the
|
modsInfo: Para instalar y manejar mods, copialos en la carpeta de mods dentro
|
||||||
top right.
|
del directorio del juego. Tambien puedes usar el boton 'Abrir Carpeta de
|
||||||
noModSupport: You need the standalone version on Steam to install mods.
|
Mods' en la esquina superior derecha.
|
||||||
|
noModSupport: Necesitas la versión de escritorio de Steam para instalar mods.
|
||||||
togglingComingSoon:
|
togglingComingSoon:
|
||||||
title: Coming Soon
|
title: Proximamente
|
||||||
description: Enabling or disabling mods is currently only possible by copying
|
description: Solo es posible activar o desactivar mods copiando o removiendo el
|
||||||
the mod file from or to the mods/ folder. However, being able to
|
archivo del mod desde o en la carpeta mods/. Sin embargo, la
|
||||||
toggle them here is planned for a future update!
|
posibilidad de activarlos o desactivarlos aquí está planeada para
|
||||||
browserNoSupport: Due to browser restrictions it is currently only possible to
|
una actualización futura!
|
||||||
install mods in the Steam version - Sorry!
|
browserNoSupport: Debido a restricciones del navegador, solo es posible instalar
|
||||||
|
mods en la versión de Steam - Disculpas!
|
||||||
|
@ -55,6 +55,8 @@ global:
|
|||||||
space: VÄLILYÖNTI
|
space: VÄLILYÖNTI
|
||||||
loggingIn: Logging in
|
loggingIn: Logging in
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Demoversio
|
title: Demoversio
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -89,20 +91,22 @@ mainMenu:
|
|||||||
savegameLevel: Taso <x>
|
savegameLevel: Taso <x>
|
||||||
savegameLevelUnknown: Tuntematon taso
|
savegameLevelUnknown: Tuntematon taso
|
||||||
savegameUnnamed: Nimetön
|
savegameUnnamed: Nimetön
|
||||||
puzzleMode: Puzzle Mode
|
puzzleMode: Pulmatila
|
||||||
back: Back
|
back: Takaisin
|
||||||
puzzleDlcText: Do you enjoy compacting and optimizing factories? Get the Puzzle
|
puzzleDlcText: Nautitko tehtaiden pienentämisestä ja optimoinnista? Hanki pulma
|
||||||
DLC now on Steam for even more fun!
|
DLC nyt Steamista lisähuviksi!
|
||||||
puzzleDlcWishlist: Wishlist now!
|
puzzleDlcWishlist: Lisää nyt toivelistallesi!
|
||||||
puzzleDlcViewNow: View Dlc
|
puzzleDlcViewNow: Katso DLC
|
||||||
mods:
|
mods:
|
||||||
title: Active Mods
|
title: Aktiiviset modit
|
||||||
warningPuzzleDLC: Playing the Puzzle DLC is not possible with mods. Please
|
warningPuzzleDLC: Pulma DLC:n pelaaminen ei ole mahdollista modien kanssa. kytke
|
||||||
disable all mods to play the DLC.
|
kaikki modit pois päältä pelataksesi DLC:tä.
|
||||||
playingFullVersion: You are now playing the full version!
|
playingFullVersion: Pelaat nyt täyttä versiota!
|
||||||
logout: Logout
|
logout: Kirjaudu ulos
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: Aktiivisia pelitallennuksia ei löytynyt - Klikkaa pelaa
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
aloittaaksesi uuden pelin!
|
||||||
|
playFullVersionV2: Ostitko Shapezin Steamista? Pelaa täyttä versiota selaimellasi!
|
||||||
|
playFullVersionStandalone: Voit nyt myös pelatatäyttä versiota selaimellasi!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
@ -116,9 +120,9 @@ dialogs:
|
|||||||
viewUpdate: Näytä päivitys
|
viewUpdate: Näytä päivitys
|
||||||
showUpgrades: Näytä päivitykset
|
showUpgrades: Näytä päivitykset
|
||||||
showKeybindings: Näytä pikanäppäimet
|
showKeybindings: Näytä pikanäppäimet
|
||||||
retry: Retry
|
retry: Yritä uudelleen
|
||||||
continue: Continue
|
continue: Jatka
|
||||||
playOffline: Play Offline
|
playOffline: Pelaa Offline-tilassa
|
||||||
importSavegameError:
|
importSavegameError:
|
||||||
title: Tuontivirhe
|
title: Tuontivirhe
|
||||||
text: "Tallennuksen tuonti epäonnistui:"
|
text: "Tallennuksen tuonti epäonnistui:"
|
||||||
@ -215,51 +219,51 @@ dialogs:
|
|||||||
title: Ohjevideo saatavilla
|
title: Ohjevideo saatavilla
|
||||||
desc: Tästä tasosta on saatavilla ohjevideo! Haluaisitko katsoa sen?
|
desc: Tästä tasosta on saatavilla ohjevideo! Haluaisitko katsoa sen?
|
||||||
editConstantProducer:
|
editConstantProducer:
|
||||||
title: Set Item
|
title: Aseta Muoto
|
||||||
puzzleLoadFailed:
|
puzzleLoadFailed:
|
||||||
title: Puzzles failed to load
|
title: Pulman lataus epäonnistui
|
||||||
desc: "Unfortunately the puzzles could not be loaded:"
|
desc: "Valitettavasti pulmaa ei pystytty lataamaan:"
|
||||||
submitPuzzle:
|
submitPuzzle:
|
||||||
title: Submit Puzzle
|
title: Toimita Pulma
|
||||||
descName: "Give your puzzle a name:"
|
descName: "Anna pulmallesi nimi:"
|
||||||
descIcon: "Please enter a unique short key, which will be shown as the icon of
|
descIcon: "Syötä yksilöllinen lyhyt avain, joka tulee olemaan pulmasi kuvake
|
||||||
your puzzle (You can generate them <link>here</link>, or choose one
|
(Voit generoida sen <link>täällä</link>, tai valitse yksi
|
||||||
of the randomly suggested shapes below):"
|
satunnaisesti ehdotetuista muodoista alta):"
|
||||||
placeholderName: Puzzle Title
|
placeholderName: Pulman Nimi
|
||||||
puzzleResizeBadBuildings:
|
puzzleResizeBadBuildings:
|
||||||
title: Resize not possible
|
title: Koon muuttaminen ei ole mahdollista
|
||||||
desc: You can't make the zone any smaller, because then some buildings would be
|
desc: Et voi tehdä alueesta pienempää, koska jotkin rakennukset jäisivät alueen
|
||||||
outside the zone.
|
ulkopuolelle.
|
||||||
puzzleLoadError:
|
puzzleLoadError:
|
||||||
title: Bad Puzzle
|
title: Huono Pulma
|
||||||
desc: "The puzzle failed to load:"
|
desc: "Pulman lataus epäonnistui:"
|
||||||
offlineMode:
|
offlineMode:
|
||||||
title: Offline Mode
|
title: Offline tila
|
||||||
desc: We couldn't reach the servers, so the game has to run in offline mode.
|
desc: Emme pystyneet tavoittamaan palvelinta, joten pelin täytyy olla offline
|
||||||
Please make sure you have an active internet connection.
|
tilassa. Tarkista että sinulla on aktiivinen internet-yhteys.
|
||||||
puzzleDownloadError:
|
puzzleDownloadError:
|
||||||
title: Download Error
|
title: Latausvirhe
|
||||||
desc: "Failed to download the puzzle:"
|
desc: "Pulman lataus epäonnistui:"
|
||||||
puzzleSubmitError:
|
puzzleSubmitError:
|
||||||
title: Submission Error
|
title: Toimitusvirhe
|
||||||
desc: "Failed to submit your puzzle:"
|
desc: "Pulman toimitus epäonnistui:"
|
||||||
puzzleSubmitOk:
|
puzzleSubmitOk:
|
||||||
title: Puzzle Published
|
title: Pulma Julkaistu
|
||||||
desc: Congratulations! Your puzzle has been published and can now be played by
|
desc: Onnittelut! Pulmasi on nyt julkaistu ja muut voivat pelata sitä. Voit nyt
|
||||||
others. You can now find it in the "My puzzles" section.
|
löytää sen "Omat pulmani" osiosta.
|
||||||
puzzleCreateOffline:
|
puzzleCreateOffline:
|
||||||
title: Offline Mode
|
title: Offline Tila
|
||||||
desc: Since you are offline, you will not be able to save and/or publish your
|
desc: Koska olet offline-tilassa, et voi tallentaa ja/tai julkaista pulmaasi.
|
||||||
puzzle. Would you still like to continue?
|
Haluatko silti jatkaa?
|
||||||
puzzlePlayRegularRecommendation:
|
puzzlePlayRegularRecommendation:
|
||||||
title: Recommendation
|
title: Suositus
|
||||||
desc: I <strong>strongly</strong> recommend playing the normal game to level 12
|
desc: Suosittelen <strong>suuresti</strong> pelata tavallista peliä tasolle 12
|
||||||
before attempting the puzzle DLC, otherwise you may encounter
|
ennen pulma DLC:n yrittämistä, muuten voit kohdata mekaniikkoja
|
||||||
mechanics not yet introduced. Do you still want to continue?
|
joita ei ole esitelty. Haluatko silti jatkaa?
|
||||||
puzzleShare:
|
puzzleShare:
|
||||||
title: Short Key Copied
|
title: Lyhyt Avain Kopioitu
|
||||||
desc: The short key of the puzzle (<key>) has been copied to your clipboard! It
|
desc: Pulman lyhyt avain (<key>) on kopioitu leikepöydällesi! Se voidaan syöttää
|
||||||
can be entered in the puzzle menu to access the puzzle.
|
pulmavalikossa pulmaan pääsemiseksi.
|
||||||
puzzleReport:
|
puzzleReport:
|
||||||
title: Report Puzzle
|
title: Report Puzzle
|
||||||
options:
|
options:
|
||||||
|
@ -52,6 +52,8 @@ global:
|
|||||||
space: ESPACE
|
space: ESPACE
|
||||||
loggingIn: Se connecter
|
loggingIn: Se connecter
|
||||||
loadingResources: Chargement de ressources supplémentaires (<percentage> %)
|
loadingResources: Chargement de ressources supplémentaires (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Version de démo
|
title: Version de démo
|
||||||
intro: >-
|
intro: >-
|
||||||
@ -102,6 +104,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
@ -51,6 +51,8 @@ global:
|
|||||||
space: SPACE
|
space: SPACE
|
||||||
loggingIn: Logging in
|
loggingIn: Logging in
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: גרסאת דמו
|
title: גרסאת דמו
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -98,6 +100,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: אישור
|
ok: אישור
|
||||||
|
@ -54,6 +54,8 @@ global:
|
|||||||
space: SPACE
|
space: SPACE
|
||||||
loggingIn: Logging in
|
loggingIn: Logging in
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Demo Verzija
|
title: Demo Verzija
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -101,6 +103,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
@ -52,6 +52,8 @@ global:
|
|||||||
space: SZÓKÖZ
|
space: SZÓKÖZ
|
||||||
loggingIn: Bejelentkezés
|
loggingIn: Bejelentkezés
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Demó verzió
|
title: Demó verzió
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -100,6 +102,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
@ -52,6 +52,8 @@ global:
|
|||||||
space: SPACE
|
space: SPACE
|
||||||
loggingIn: Logging in
|
loggingIn: Logging in
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Versi Demo
|
title: Versi Demo
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -99,6 +101,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
@ -55,6 +55,8 @@ global:
|
|||||||
space: SPAZIO
|
space: SPAZIO
|
||||||
loggingIn: Logging in
|
loggingIn: Logging in
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Versione Demo
|
title: Versione Demo
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -104,6 +106,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
@ -47,6 +47,8 @@ global:
|
|||||||
space: SPACE
|
space: SPACE
|
||||||
loggingIn: Logging in
|
loggingIn: Logging in
|
||||||
loadingResources: 追加リソースのダウンロード(<percentage>%)
|
loadingResources: 追加リソースのダウンロード(<percentage>%)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: デモ版
|
title: デモ版
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -93,6 +95,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
@ -393,9 +396,11 @@ ingame:
|
|||||||
切断機はそれの向きに関わらず、<strong>縦の線</strong>で切断します。"
|
切断機はそれの向きに関わらず、<strong>縦の線</strong>で切断します。"
|
||||||
2_2_place_trash: 切断機は<strong>詰まる</strong>場合があります!<br><br>
|
2_2_place_trash: 切断機は<strong>詰まる</strong>場合があります!<br><br>
|
||||||
<strong>ゴミ箱</strong>を利用して、不必要な部品を廃棄できます。
|
<strong>ゴミ箱</strong>を利用して、不必要な部品を廃棄できます。
|
||||||
2_3_more_cutters: "いいですね! <strong>更に2つ以上の切断機</strong>を設置して処理をスピードアップさせましょう!<br>\
|
2_3_more_cutters:
|
||||||
|
"いいですね! <strong>更に2つ以上の切断機</strong>を設置して処理をスピードアップさせましょう!<br>\
|
||||||
<br> 追記: <strong>0から9 のホットキー</strong>を使用すると素早く部品にアクセスできます。"
|
<br> 追記: <strong>0から9 のホットキー</strong>を使用すると素早く部品にアクセスできます。"
|
||||||
3_1_rectangles: "それでは四角形を抽出しましょう! <strong>4つの抽出機を作成</strong>してそれをハブに接続します。<br><\
|
3_1_rectangles:
|
||||||
|
"それでは四角形を抽出しましょう! <strong>4つの抽出機を作成</strong>してそれをハブに接続します。<br><\
|
||||||
br> 追記: <strong>SHIFT</strong>を押しながらベルトを引くと ベルトプランナーが有効になります!"
|
br> 追記: <strong>SHIFT</strong>を押しながらベルトを引くと ベルトプランナーが有効になります!"
|
||||||
21_1_place_quad_painter: <strong>四色着色機</strong>を設置して、
|
21_1_place_quad_painter: <strong>四色着色機</strong>を設置して、
|
||||||
<strong>円</strong>、<strong>白</strong>そして
|
<strong>円</strong>、<strong>白</strong>そして
|
||||||
@ -681,14 +686,16 @@ buildings:
|
|||||||
storyRewards:
|
storyRewards:
|
||||||
reward_cutter_and_trash:
|
reward_cutter_and_trash:
|
||||||
title: 形の切断
|
title: 形の切断
|
||||||
desc: <strong>切断機</strong>が利用可能になりました。これは入力された形を、<strong>向きを考慮せず上下の直線で</strong>半分に切断します! <br><br>利用しない側の出力に注意しましょう、破棄しなければ<strong>詰まって停止してしまいます。</strong>
|
desc:
|
||||||
|
<strong>切断機</strong>が利用可能になりました。これは入力された形を、<strong>向きを考慮せず上下の直線で</strong>半分に切断します! <br><br>利用しない側の出力に注意しましょう、破棄しなければ<strong>詰まって停止してしまいます。</strong>
|
||||||
- このために<strong>ゴミ箱</strong>も用意しました。入力アイテムをすべて破棄できます!
|
- このために<strong>ゴミ箱</strong>も用意しました。入力アイテムをすべて破棄できます!
|
||||||
reward_rotater:
|
reward_rotater:
|
||||||
title: 回転
|
title: 回転
|
||||||
desc: <strong>回転機</strong>が利用可能になりました! 形を時計回り方向に90度回転させます。
|
desc: <strong>回転機</strong>が利用可能になりました! 形を時計回り方向に90度回転させます。
|
||||||
reward_painter:
|
reward_painter:
|
||||||
title: 着色
|
title: 着色
|
||||||
desc: "<strong>着色機</strong>が利用可能になりました。(今まで形状でやってきた方法で)色を抽出し、形状と合成することで着色します! <\
|
desc:
|
||||||
|
"<strong>着色機</strong>が利用可能になりました。(今まで形状でやってきた方法で)色を抽出し、形状と合成することで着色します! <\
|
||||||
br><br>追伸: もし色覚特性をお持ちでしたら、 設定に<strong>色覚特性モード</strong>があります!"
|
br><br>追伸: もし色覚特性をお持ちでしたら、 設定に<strong>色覚特性モード</strong>があります!"
|
||||||
reward_mixer:
|
reward_mixer:
|
||||||
title: 混色
|
title: 混色
|
||||||
@ -707,7 +714,8 @@ storyRewards:
|
|||||||
desc: <strong>回転機</strong>のバリエーションが利用可能になりました。反時計回りの回転ができるようになります! 回転機を選択し、<strong>'T'キーを押すことで方向の切り替えができます。</strong>
|
desc: <strong>回転機</strong>のバリエーションが利用可能になりました。反時計回りの回転ができるようになります! 回転機を選択し、<strong>'T'キーを押すことで方向の切り替えができます。</strong>
|
||||||
reward_miner_chainable:
|
reward_miner_chainable:
|
||||||
title: 連鎖抽出機
|
title: 連鎖抽出機
|
||||||
desc: "<strong>連鎖抽出機</strong>が利用可能になりました! 他の抽出機に<strong>出力を渡す</strong>ことができるので、
|
desc:
|
||||||
|
"<strong>連鎖抽出機</strong>が利用可能になりました! 他の抽出機に<strong>出力を渡す</strong>ことができるので、
|
||||||
資源の抽出がより効率的になります!<br><br> 補足: ツールバーの 旧い抽出機が置き換えられました!"
|
資源の抽出がより効率的になります!<br><br> 補足: ツールバーの 旧い抽出機が置き換えられました!"
|
||||||
reward_underground_belt_tier_2:
|
reward_underground_belt_tier_2:
|
||||||
title: トンネル レベルII
|
title: トンネル レベルII
|
||||||
@ -732,7 +740,8 @@ storyRewards:
|
|||||||
通常の着色機と同様に機能しますが、ひとつの色の消費で<strong>一度に2つの形</strong>を着色処理できます!
|
通常の着色機と同様に機能しますが、ひとつの色の消費で<strong>一度に2つの形</strong>を着色処理できます!
|
||||||
reward_storage:
|
reward_storage:
|
||||||
title: ストレージ
|
title: ストレージ
|
||||||
desc: <strong>ストレージ</strong>が利用可能になりました。 - 容量上限までアイテムを格納できます!<br><br>
|
desc:
|
||||||
|
<strong>ストレージ</strong>が利用可能になりました。 - 容量上限までアイテムを格納できます!<br><br>
|
||||||
左側の出力を優先するため、<strong>オーバーフローゲート</strong>としても使用できます!
|
左側の出力を優先するため、<strong>オーバーフローゲート</strong>としても使用できます!
|
||||||
reward_blueprints:
|
reward_blueprints:
|
||||||
title: ブループリント
|
title: ブループリント
|
||||||
@ -751,7 +760,8 @@ storyRewards:
|
|||||||
設定で<strong>ヒントを有効にする</strong>と、 ワイヤのチュートリアルが有効になります。"
|
設定で<strong>ヒントを有効にする</strong>と、 ワイヤのチュートリアルが有効になります。"
|
||||||
reward_filter:
|
reward_filter:
|
||||||
title: アイテムフィルタ
|
title: アイテムフィルタ
|
||||||
desc: <strong>アイテムフィルタ</strong>が利用可能になりました! ワイヤレイヤの信号と一致するかどうかに応じて、アイテムを上側または右側の出力に分離します。<br><br>
|
desc:
|
||||||
|
<strong>アイテムフィルタ</strong>が利用可能になりました! ワイヤレイヤの信号と一致するかどうかに応じて、アイテムを上側または右側の出力に分離します。<br><br>
|
||||||
また、真偽値(0/1)信号を入力すれば全てのアイテムの通過・非通過を制御できます。
|
また、真偽値(0/1)信号を入力すれば全てのアイテムの通過・非通過を制御できます。
|
||||||
reward_display:
|
reward_display:
|
||||||
title: ディスプレイ
|
title: ディスプレイ
|
||||||
@ -760,11 +770,13 @@ storyRewards:
|
|||||||
ベルトリーダーとストレージが最後に通過したアイテムを出力していることに気づきましたか? それをディスプレイに表示してみてください!"
|
ベルトリーダーとストレージが最後に通過したアイテムを出力していることに気づきましたか? それをディスプレイに表示してみてください!"
|
||||||
reward_constant_signal:
|
reward_constant_signal:
|
||||||
title: 定数信号
|
title: 定数信号
|
||||||
desc: <strong>定数信号</strong>がワイヤレイヤで利用可能になりました! これは例えば<strong>アイテムフィルタ</strong>に接続すると便利です。<br><br>
|
desc:
|
||||||
|
<strong>定数信号</strong>がワイヤレイヤで利用可能になりました! これは例えば<strong>アイテムフィルタ</strong>に接続すると便利です。<br><br>
|
||||||
発信できる信号は<strong>形状</strong>、<strong>色</strong>、<strong>真偽値</strong>(1か0)です。
|
発信できる信号は<strong>形状</strong>、<strong>色</strong>、<strong>真偽値</strong>(1か0)です。
|
||||||
reward_logic_gates:
|
reward_logic_gates:
|
||||||
title: 論理ゲート
|
title: 論理ゲート
|
||||||
desc: <strong>論理ゲート</strong>が利用可能になりました! 興奮する必要はありませんが、これは非常に優秀なんですよ!<br><br>
|
desc:
|
||||||
|
<strong>論理ゲート</strong>が利用可能になりました! 興奮する必要はありませんが、これは非常に優秀なんですよ!<br><br>
|
||||||
これでAND, OR, XOR, NOTを計算できます。<br><br>
|
これでAND, OR, XOR, NOTを計算できます。<br><br>
|
||||||
ボーナスとして<strong>トランジスタ</strong>も追加しました!
|
ボーナスとして<strong>トランジスタ</strong>も追加しました!
|
||||||
reward_virtual_processing:
|
reward_virtual_processing:
|
||||||
@ -776,7 +788,8 @@ storyRewards:
|
|||||||
- ワイヤでイカしたものを作る。<br><br> - 今までのように工場を建設する。<br><br> いずれにしても、楽しんでください!
|
- ワイヤでイカしたものを作る。<br><br> - 今までのように工場を建設する。<br><br> いずれにしても、楽しんでください!
|
||||||
no_reward:
|
no_reward:
|
||||||
title: 次のレベル
|
title: 次のレベル
|
||||||
desc: "このレベルには報酬はありません。次はきっとありますよ! <br><br> 補足: すでに作った生産ラインは削除しないようにしましょう。 -
|
desc:
|
||||||
|
"このレベルには報酬はありません。次はきっとありますよ! <br><br> 補足: すでに作った生産ラインは削除しないようにしましょう。 -
|
||||||
生産された形は<strong>すべて</strong>、後で<strong>アップグレードの解除</strong>に必要になります!"
|
生産された形は<strong>すべて</strong>、後で<strong>アップグレードの解除</strong>に必要になります!"
|
||||||
no_reward_freeplay:
|
no_reward_freeplay:
|
||||||
title: 次のレベル
|
title: 次のレベル
|
||||||
@ -902,7 +915,8 @@ settings:
|
|||||||
description: 配置用のグリッドを無効にして、パフォーマンスを向上させます。 これにより、ゲームの見た目もすっきりします。
|
description: 配置用のグリッドを無効にして、パフォーマンスを向上させます。 これにより、ゲームの見た目もすっきりします。
|
||||||
clearCursorOnDeleteWhilePlacing:
|
clearCursorOnDeleteWhilePlacing:
|
||||||
title: 右クリックで配置をキャンセル
|
title: 右クリックで配置をキャンセル
|
||||||
description: デフォルトで有効です。建物を設置しているときに右クリックすると、選択中の建物がキャンセルされます。
|
description:
|
||||||
|
デフォルトで有効です。建物を設置しているときに右クリックすると、選択中の建物がキャンセルされます。
|
||||||
無効にすると、建物の設置中に右クリックで建物を削除できます。
|
無効にすると、建物の設置中に右クリックで建物を削除できます。
|
||||||
lowQualityTextures:
|
lowQualityTextures:
|
||||||
title: 低品質のテクスチャ(視認性低下)
|
title: 低品質のテクスチャ(視認性低下)
|
||||||
|
@ -49,6 +49,8 @@ global:
|
|||||||
space: SPACE
|
space: SPACE
|
||||||
loggingIn: 로그인 중
|
loggingIn: 로그인 중
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: 체험판 버전
|
title: 체험판 버전
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -72,7 +74,8 @@ mainMenu:
|
|||||||
openSourceHint: 이 게임은 오픈 소스입니다!
|
openSourceHint: 이 게임은 오픈 소스입니다!
|
||||||
discordLink: 공식 디스코드 서버
|
discordLink: 공식 디스코드 서버
|
||||||
helpTranslate: 번역을 도와주세요!
|
helpTranslate: 번역을 도와주세요!
|
||||||
browserWarning: 이 게임은 현재 브라우저에서 느리게 작동하는 것으로 알려져 있습니다! 더 좋은 성능을 위해 정식 버전을 구매하거나
|
browserWarning:
|
||||||
|
이 게임은 현재 브라우저에서 느리게 작동하는 것으로 알려져 있습니다! 더 좋은 성능을 위해 정식 버전을 구매하거나
|
||||||
Google Chrome 브라우저를 다운로드하세요.
|
Google Chrome 브라우저를 다운로드하세요.
|
||||||
savegameLevel: 레벨 <x>
|
savegameLevel: 레벨 <x>
|
||||||
savegameLevelUnknown: 미확인 레벨
|
savegameLevelUnknown: 미확인 레벨
|
||||||
@ -93,6 +96,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: 확인
|
ok: 확인
|
||||||
@ -148,7 +152,8 @@ dialogs:
|
|||||||
desc: 지난번 플레이 이후 변경 사항은 다음과 같습니다.
|
desc: 지난번 플레이 이후 변경 사항은 다음과 같습니다.
|
||||||
upgradesIntroduction:
|
upgradesIntroduction:
|
||||||
title: 업그레이드 하기
|
title: 업그레이드 하기
|
||||||
desc: <strong>기존의 공장을 허물지 마세요!</strong> 여러분이 그동안 만들어 수집한 모든 도형은 업그레이드에 사용됩니다.
|
desc:
|
||||||
|
<strong>기존의 공장을 허물지 마세요!</strong> 여러분이 그동안 만들어 수집한 모든 도형은 업그레이드에 사용됩니다.
|
||||||
업그레이드 버튼은 화면의 오른쪽 위에 있습니다.
|
업그레이드 버튼은 화면의 오른쪽 위에 있습니다.
|
||||||
massDeleteConfirm:
|
massDeleteConfirm:
|
||||||
title: 삭제 확인
|
title: 삭제 확인
|
||||||
@ -161,7 +166,8 @@ dialogs:
|
|||||||
desc: 12 레벨부터 청사진 기능이 해금됩니다!
|
desc: 12 레벨부터 청사진 기능이 해금됩니다!
|
||||||
keybindingsIntroduction:
|
keybindingsIntroduction:
|
||||||
title: 유용한 조작법
|
title: 유용한 조작법
|
||||||
desc: "이 게임에는 거대한 공장을 수월하게 세우기 위한 많은 조작법이 있습니다. 아래는 그 대표적인 것이며, 자세한 조작법은
|
desc:
|
||||||
|
"이 게임에는 거대한 공장을 수월하게 세우기 위한 많은 조작법이 있습니다. 아래는 그 대표적인 것이며, 자세한 조작법은
|
||||||
<strong>조작법 설정</strong>을 참고해주세요!<br><br> <code
|
<strong>조작법 설정</strong>을 참고해주세요!<br><br> <code
|
||||||
class='keybinding'>CTRL</code> + 드래그: 영역을 선택합니다.<br> <code
|
class='keybinding'>CTRL</code> + 드래그: 영역을 선택합니다.<br> <code
|
||||||
class='keybinding'>SHIFT</code>: 누르는 동안 같은 건물을 여러개 배치할 수 있습니다.<br>
|
class='keybinding'>SHIFT</code>: 누르는 동안 같은 건물을 여러개 배치할 수 있습니다.<br>
|
||||||
@ -175,7 +181,8 @@ dialogs:
|
|||||||
desc: 체험판 버전에서는 마커를 2개 까지만 배치할 수 있습니다. 정식 버전을 구입하면 마커를 무제한으로 배치할 수 있습니다!
|
desc: 체험판 버전에서는 마커를 2개 까지만 배치할 수 있습니다. 정식 버전을 구입하면 마커를 무제한으로 배치할 수 있습니다!
|
||||||
exportScreenshotWarning:
|
exportScreenshotWarning:
|
||||||
title: 스크린샷 내보내기
|
title: 스크린샷 내보내기
|
||||||
desc: 당신의 공장을 스크린샷으로 내보내려 합니다. 매우 거대한 크기의 공장이라면 그 처리 시간이 상당히 오래 걸릴 것이며, 최악의 경우
|
desc:
|
||||||
|
당신의 공장을 스크린샷으로 내보내려 합니다. 매우 거대한 크기의 공장이라면 그 처리 시간이 상당히 오래 걸릴 것이며, 최악의 경우
|
||||||
게임이 중단될 수 있습니다!
|
게임이 중단될 수 있습니다!
|
||||||
massCutInsufficientConfirm:
|
massCutInsufficientConfirm:
|
||||||
title: 자르기 확인
|
title: 자르기 확인
|
||||||
@ -201,7 +208,8 @@ dialogs:
|
|||||||
submitPuzzle:
|
submitPuzzle:
|
||||||
title: 퍼즐 보내기
|
title: 퍼즐 보내기
|
||||||
descName: "퍼즐에 이름을 지어 주세요:"
|
descName: "퍼즐에 이름을 지어 주세요:"
|
||||||
descIcon: "퍼즐의 아이콘으로 보여지게 될 짧은 단어를 지정해 주세요. (<link>이곳</link>에서 생성하시거나, 아래 랜덤한 도형
|
descIcon:
|
||||||
|
"퍼즐의 아이콘으로 보여지게 될 짧은 단어를 지정해 주세요. (<link>이곳</link>에서 생성하시거나, 아래 랜덤한 도형
|
||||||
중 하나를 선택하세요):"
|
중 하나를 선택하세요):"
|
||||||
placeholderName: 퍼즐 제목
|
placeholderName: 퍼즐 제목
|
||||||
puzzleResizeBadBuildings:
|
puzzleResizeBadBuildings:
|
||||||
@ -227,7 +235,8 @@ dialogs:
|
|||||||
desc: 오프라인 모드임으로 퍼즐을 저장하거나 업로드할 수 없습니다. 그래도 계속하시겠습니까?
|
desc: 오프라인 모드임으로 퍼즐을 저장하거나 업로드할 수 없습니다. 그래도 계속하시겠습니까?
|
||||||
puzzlePlayRegularRecommendation:
|
puzzlePlayRegularRecommendation:
|
||||||
title: 권장 사항
|
title: 권장 사항
|
||||||
desc: 퍼즐 DLC 플레이시 소개되지 않은 요소를 접하시게 될 수 있으므로, 적어도 일반 게임을 12레벨까지 플레이하시는것을
|
desc:
|
||||||
|
퍼즐 DLC 플레이시 소개되지 않은 요소를 접하시게 될 수 있으므로, 적어도 일반 게임을 12레벨까지 플레이하시는것을
|
||||||
<strong>강력히</strong> 권장드립니다. 그래도 계속하시겠습니까?
|
<strong>강력히</strong> 권장드립니다. 그래도 계속하시겠습니까?
|
||||||
puzzleShare:
|
puzzleShare:
|
||||||
title: 짧은 키 복사됨
|
title: 짧은 키 복사됨
|
||||||
@ -358,25 +367,31 @@ ingame:
|
|||||||
waypoints:
|
waypoints:
|
||||||
waypoints: 마커
|
waypoints: 마커
|
||||||
hub: 허브
|
hub: 허브
|
||||||
description: 마커를 좌클릭하여 그곳으로 이동하고, 우클릭으로 삭제할 수 있습니다.<br><br>마커를 배치하기 위해
|
description:
|
||||||
|
마커를 좌클릭하여 그곳으로 이동하고, 우클릭으로 삭제할 수 있습니다.<br><br>마커를 배치하기 위해
|
||||||
<keybinding> 키로 지금 있는 위치에, 또는 <strong>우클릭</strong>하여 원하는 위치에 배치할 수
|
<keybinding> 키로 지금 있는 위치에, 또는 <strong>우클릭</strong>하여 원하는 위치에 배치할 수
|
||||||
있습니다.
|
있습니다.
|
||||||
creationSuccessNotification: 마커가 성공적으로 생성되었습니다.
|
creationSuccessNotification: 마커가 성공적으로 생성되었습니다.
|
||||||
interactiveTutorial:
|
interactiveTutorial:
|
||||||
title: 튜토리얼
|
title: 튜토리얼
|
||||||
hints:
|
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>하세요!"
|
마우스로 <strong>클릭한 뒤 드래그</strong>하세요!"
|
||||||
1_3_expand: "이 게임은 방치형 게임이 <strong>아닙니다</strong>! 더 많은 추출기와 벨트를 만들어 지정된 목표를 빨리
|
1_3_expand:
|
||||||
|
"이 게임은 방치형 게임이 <strong>아닙니다</strong>! 더 많은 추출기와 벨트를 만들어 지정된 목표를 빨리
|
||||||
달성하세요.<br><br> 팁: <strong>SHIFT</strong> 키를 누른 상태에서는 빠르게 배치할 수
|
달성하세요.<br><br> 팁: <strong>SHIFT</strong> 키를 누른 상태에서는 빠르게 배치할 수
|
||||||
있고, <strong>R</strong> 키를 눌러 회전할 수 있습니다."
|
있고, <strong>R</strong> 키를 눌러 회전할 수 있습니다."
|
||||||
2_1_place_cutter: "이제 <strong>절단기</strong>를 배치해 원형 도형을 반으로 잘라보세요!<br><br> 참고:
|
2_1_place_cutter:
|
||||||
|
"이제 <strong>절단기</strong>를 배치해 원형 도형을 반으로 잘라보세요!<br><br> 참고:
|
||||||
절단기는 놓는 방향에 상관없이 항상 <strong>위에서 아래로만</strong> 자릅니다."
|
절단기는 놓는 방향에 상관없이 항상 <strong>위에서 아래로만</strong> 자릅니다."
|
||||||
2_2_place_trash: 절단기가 <strong>막히거나 멈출 수 있습니다</strong>!<br><br>
|
2_2_place_trash: 절단기가 <strong>막히거나 멈출 수 있습니다</strong>!<br><br>
|
||||||
<strong>휴지통</strong>을 사용하여 현재 필요없는 쓰레기 도형 (!)을 제거하세요.
|
<strong>휴지통</strong>을 사용하여 현재 필요없는 쓰레기 도형 (!)을 제거하세요.
|
||||||
2_3_more_cutters: "잘하셨습니다! 느린 처리 속도를 보완하기 위해 <strong>절단기를 두 개</strong> 이상
|
2_3_more_cutters:
|
||||||
|
"잘하셨습니다! 느린 처리 속도를 보완하기 위해 <strong>절단기를 두 개</strong> 이상
|
||||||
배치해보세요!<br><br> 추신: <strong>상단 숫자 단축키 (0~9)</strong>를 사용하여 건물을
|
배치해보세요!<br><br> 추신: <strong>상단 숫자 단축키 (0~9)</strong>를 사용하여 건물을
|
||||||
빠르게 선택할 수 있습니다!"
|
빠르게 선택할 수 있습니다!"
|
||||||
3_1_rectangles: "이제 사각형 도형을 추출해 볼까요! <strong>추출기 네 개를 배치</strong>하고 허브와
|
3_1_rectangles: "이제 사각형 도형을 추출해 볼까요! <strong>추출기 네 개를 배치</strong>하고 허브와
|
||||||
@ -384,10 +399,12 @@ ingame:
|
|||||||
누른 채 드래그하세요!"
|
누른 채 드래그하세요!"
|
||||||
21_1_place_quad_painter: <strong>4단 색칠기</strong>를 배치하여 <strong>흰색</strong>과
|
21_1_place_quad_painter: <strong>4단 색칠기</strong>를 배치하여 <strong>흰색</strong>과
|
||||||
<strong>빨간색</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>을 모두 케이블로 연결하세요!
|
<strong>네 입력 부분</strong>을 모두 케이블로 연결하세요!
|
||||||
21_3_place_button: 훌륭해요! 이제 <strong>스위치</strong>를 배치하고 전선으로 연결하세요!
|
21_3_place_button: 훌륭해요! 이제 <strong>스위치</strong>를 배치하고 전선으로 연결하세요!
|
||||||
21_4_press_button: "스위치를 눌러서 색칠기에 <strong>참 신호를 보내</strong> 활성화해보세요.<br><br> 추신:
|
21_4_press_button:
|
||||||
|
"스위치를 눌러서 색칠기에 <strong>참 신호를 보내</strong> 활성화해보세요.<br><br> 추신:
|
||||||
모든 입력을 연결할 필요는 없습니다! 두개만 연결해 보세요."
|
모든 입력을 연결할 필요는 없습니다! 두개만 연결해 보세요."
|
||||||
1_2_hold_and_drag: 잡고 드래그Przytrzymaj i przeciągnij
|
1_2_hold_and_drag: 잡고 드래그Przytrzymaj i przeciągnij
|
||||||
colors:
|
colors:
|
||||||
@ -517,11 +534,13 @@ buildings:
|
|||||||
cutter:
|
cutter:
|
||||||
default:
|
default:
|
||||||
name: 절단기
|
name: 절단기
|
||||||
description: 도형을 수직으로 잘라 두 가지 도형으로 나눕니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우
|
description:
|
||||||
|
도형을 수직으로 잘라 두 가지 도형으로 나눕니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우
|
||||||
절단기가 막혀 멈추게 됩니다!</strong>
|
절단기가 막혀 멈추게 됩니다!</strong>
|
||||||
quad:
|
quad:
|
||||||
name: 4단 절단기
|
name: 4단 절단기
|
||||||
description: 도형을 즉시 네 개로 자릅니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우 절단기가 막혀
|
description:
|
||||||
|
도형을 즉시 네 개로 자릅니다. <strong>한쪽만 사용할 경우라면 다른 부분을 파괴하지 않을 경우 절단기가 막혀
|
||||||
멈추게 됩니다!</strong>
|
멈추게 됩니다!</strong>
|
||||||
rotater:
|
rotater:
|
||||||
default:
|
default:
|
||||||
@ -536,7 +555,8 @@ buildings:
|
|||||||
stacker:
|
stacker:
|
||||||
default:
|
default:
|
||||||
name: 결합기
|
name: 결합기
|
||||||
description: 도형을 서로 결합하고 쌓습니다. 서로 결합할 수 있다면 두 도형을 붙여 하나로 만들고, 그렇지 않으면 오른쪽 도형이 왼쪽
|
description:
|
||||||
|
도형을 서로 결합하고 쌓습니다. 서로 결합할 수 있다면 두 도형을 붙여 하나로 만들고, 그렇지 않으면 오른쪽 도형이 왼쪽
|
||||||
도형 위에 쌓이게 됩니다.
|
도형 위에 쌓이게 됩니다.
|
||||||
mixer:
|
mixer:
|
||||||
default:
|
default:
|
||||||
@ -551,7 +571,8 @@ buildings:
|
|||||||
description: 색소를 이용해 도형을 색칠합니다. 위쪽에서 받는 색소로 왼쪽에서 받는 도형 전체를 색칠합니다.
|
description: 색소를 이용해 도형을 색칠합니다. 위쪽에서 받는 색소로 왼쪽에서 받는 도형 전체를 색칠합니다.
|
||||||
quad:
|
quad:
|
||||||
name: 4단 색칠기
|
name: 4단 색칠기
|
||||||
description: 도형의 각 사분면에 개별적으로 색상을 칠할 수 있습니다. 전선 레이어를 통해 <strong>참 신호</strong>가
|
description:
|
||||||
|
도형의 각 사분면에 개별적으로 색상을 칠할 수 있습니다. 전선 레이어를 통해 <strong>참 신호</strong>가
|
||||||
있는 슬롯만 칠해집니다!
|
있는 슬롯만 칠해집니다!
|
||||||
mirrored:
|
mirrored:
|
||||||
name: 색칠기
|
name: 색칠기
|
||||||
@ -598,7 +619,8 @@ buildings:
|
|||||||
lever:
|
lever:
|
||||||
default:
|
default:
|
||||||
name: 스위치
|
name: 스위치
|
||||||
description: 전선 레이어에서 불 값 (1 또는 0)을 방출하도록 전환할 수 있으며, 그 후 아이템 선별같은 구성 요소를 제어하는 데
|
description:
|
||||||
|
전선 레이어에서 불 값 (1 또는 0)을 방출하도록 전환할 수 있으며, 그 후 아이템 선별같은 구성 요소를 제어하는 데
|
||||||
사용될 수 있습니다.
|
사용될 수 있습니다.
|
||||||
logic_gate:
|
logic_gate:
|
||||||
default:
|
default:
|
||||||
@ -609,7 +631,8 @@ buildings:
|
|||||||
description: 입력이 거짓일 경우 불 값 "1"을 내보냅니다 (참은 도형, 색상, 불 값 "1"을 의미합니다).
|
description: 입력이 거짓일 경우 불 값 "1"을 내보냅니다 (참은 도형, 색상, 불 값 "1"을 의미합니다).
|
||||||
xor:
|
xor:
|
||||||
name: XOR 회로
|
name: XOR 회로
|
||||||
description: 입력 중 하나만 참이고 둘 다 같지 않을 경우 불 값 "1"을 내보냅니다 (참은 도형, 색상, 불 값 "1"을
|
description:
|
||||||
|
입력 중 하나만 참이고 둘 다 같지 않을 경우 불 값 "1"을 내보냅니다 (참은 도형, 색상, 불 값 "1"을
|
||||||
의미합니다).
|
의미합니다).
|
||||||
or:
|
or:
|
||||||
name: OR 회로
|
name: OR 회로
|
||||||
@ -676,7 +699,8 @@ buildings:
|
|||||||
storyRewards:
|
storyRewards:
|
||||||
reward_cutter_and_trash:
|
reward_cutter_and_trash:
|
||||||
title: 절단기
|
title: 절단기
|
||||||
desc: <strong>절단기</strong>가 잠금 해제되었습니다! 절단기는 들어오는 도형이 어떤 도형을 하고 있던 수직으로 잘라
|
desc:
|
||||||
|
<strong>절단기</strong>가 잠금 해제되었습니다! 절단기는 들어오는 도형이 어떤 도형을 하고 있던 수직으로 잘라
|
||||||
<strong>반으로 나눕니다</strong>!<br><br> 쓰지 않는 도형은 쓰레기로 처리하세요, 그렇지 않으면
|
<strong>반으로 나눕니다</strong>!<br><br> 쓰지 않는 도형은 쓰레기로 처리하세요, 그렇지 않으면
|
||||||
<strong>작동을 멈출 것입니다</strong>! 이러한 목적을 위해 <strong>휴지통</strong>도 함께
|
<strong>작동을 멈출 것입니다</strong>! 이러한 목적을 위해 <strong>휴지통</strong>도 함께
|
||||||
지급되었습니다. 휴지통에 들어간 것은 모두 파괴됩니다!
|
지급되었습니다. 휴지통에 들어간 것은 모두 파괴됩니다!
|
||||||
@ -685,7 +709,8 @@ storyRewards:
|
|||||||
desc: <strong>회전기</strong>가 잠금 해제되었습니다! 회전기는 들어오는 도형을 시계 방향으로 90도 회전시켜줍니다.
|
desc: <strong>회전기</strong>가 잠금 해제되었습니다! 회전기는 들어오는 도형을 시계 방향으로 90도 회전시켜줍니다.
|
||||||
reward_painter:
|
reward_painter:
|
||||||
title: 색칠기
|
title: 색칠기
|
||||||
desc: "<strong>색칠기</strong>가 잠금 해제되었습니다! 도형과 마찬가지로 색소를 추출하고 색칠기에 넣거 도형과 결합하여 색칠된
|
desc:
|
||||||
|
"<strong>색칠기</strong>가 잠금 해제되었습니다! 도형과 마찬가지로 색소를 추출하고 색칠기에 넣거 도형과 결합하여 색칠된
|
||||||
도형을 만들도록 하세요!<br><br>추신: 만약 당신이 색맹이라면, 설정에서 <strong>색맹 모드</strong>를
|
도형을 만들도록 하세요!<br><br>추신: 만약 당신이 색맹이라면, 설정에서 <strong>색맹 모드</strong>를
|
||||||
활성화하세요!"
|
활성화하세요!"
|
||||||
reward_mixer:
|
reward_mixer:
|
||||||
@ -694,24 +719,28 @@ storyRewards:
|
|||||||
색소</strong>를 얻을 수 있습니다!
|
색소</strong>를 얻을 수 있습니다!
|
||||||
reward_stacker:
|
reward_stacker:
|
||||||
title: 결합기
|
title: 결합기
|
||||||
desc: <strong>결합기</strong>가 잠금 해제되었습니다! 이제 결합기를 통해 여러 도형을 붙이고 결합할 수 있습니다! 들어오는 두
|
desc:
|
||||||
|
<strong>결합기</strong>가 잠금 해제되었습니다! 이제 결합기를 통해 여러 도형을 붙이고 결합할 수 있습니다! 들어오는 두
|
||||||
도형의 도형이 서로 나란히 붙일 수 있다면, 하나의 도형으로 <strong>결합</strong>됩니다. 만약 서로
|
도형의 도형이 서로 나란히 붙일 수 있다면, 하나의 도형으로 <strong>결합</strong>됩니다. 만약 서로
|
||||||
겹쳐진다면, 오른쪽 도형이 왼쪽 도형의 <strong>위에 쌓이게</strong> 됩니다!
|
겹쳐진다면, 오른쪽 도형이 왼쪽 도형의 <strong>위에 쌓이게</strong> 됩니다!
|
||||||
reward_splitter:
|
reward_splitter:
|
||||||
title: 압축형 분배기
|
title: 압축형 분배기
|
||||||
desc: <strong>밸런서</strong>의 새로운 형태인 <strong>분배기</strong>가 잠금 해제되었습니다! 이제 벨트 한 줄을
|
desc:
|
||||||
|
<strong>밸런서</strong>의 새로운 형태인 <strong>분배기</strong>가 잠금 해제되었습니다! 이제 벨트 한 줄을
|
||||||
즉시 두 줄로 분배합니다!
|
즉시 두 줄로 분배합니다!
|
||||||
reward_tunnel:
|
reward_tunnel:
|
||||||
title: 터널
|
title: 터널
|
||||||
desc: <strong>터널</strong>이 잠금 해제되었습니다! 이제 벨트와 건물 아래로 공간을 만들어내 옮길 수 있습니다!
|
desc: <strong>터널</strong>이 잠금 해제되었습니다! 이제 벨트와 건물 아래로 공간을 만들어내 옮길 수 있습니다!
|
||||||
reward_rotater_ccw:
|
reward_rotater_ccw:
|
||||||
title: 반시계 방향 회전기
|
title: 반시계 방향 회전기
|
||||||
desc: <strong>반시계 방향 회전기</strong>가 잠금 해제되었습니다! 반시계 방향 회전기는 회전기의 다른 형태로, 이름처럼
|
desc:
|
||||||
|
<strong>반시계 방향 회전기</strong>가 잠금 해제되었습니다! 반시계 방향 회전기는 회전기의 다른 형태로, 이름처럼
|
||||||
들어오는 도형을 반시계 방향으로 90도만큼 회전시킵니다! 제작하려면 회전기를 선택한 후 <strong>'T' 키를 눌러
|
들어오는 도형을 반시계 방향으로 90도만큼 회전시킵니다! 제작하려면 회전기를 선택한 후 <strong>'T' 키를 눌러
|
||||||
다른 형태로 전환</strong>하세요!
|
다른 형태로 전환</strong>하세요!
|
||||||
reward_miner_chainable:
|
reward_miner_chainable:
|
||||||
title: 연쇄 추출기
|
title: 연쇄 추출기
|
||||||
desc: "<strong>연쇄 추출기</strong>가 잠금 해제되었습니다! 자원을 보다 더욱 효율적으로 추출할 수 있도록 <strong>앞에
|
desc:
|
||||||
|
"<strong>연쇄 추출기</strong>가 잠금 해제되었습니다! 자원을 보다 더욱 효율적으로 추출할 수 있도록 <strong>앞에
|
||||||
있는 추출기로 자원을 보낼 수 있습니다</strong>!<br><br> 추신: 이제 툴바에 있는 기존 추출기는 연쇄
|
있는 추출기로 자원을 보낼 수 있습니다</strong>!<br><br> 추신: 이제 툴바에 있는 기존 추출기는 연쇄
|
||||||
추출기로 대체되었습니다!"
|
추출기로 대체되었습니다!"
|
||||||
reward_underground_belt_tier_2:
|
reward_underground_belt_tier_2:
|
||||||
@ -720,15 +749,18 @@ storyRewards:
|
|||||||
거리</strong>를 운송할 수 있고 기존 터널과 겹쳐지지 않고도 자원을 보낼 수 있습니다!
|
거리</strong>를 운송할 수 있고 기존 터널과 겹쳐지지 않고도 자원을 보낼 수 있습니다!
|
||||||
reward_cutter_quad:
|
reward_cutter_quad:
|
||||||
title: 4단 절단기
|
title: 4단 절단기
|
||||||
desc: 새로운 종류의 <strong>절단기</strong>가 잠금 해제되었습니다! 4단 절단기는 도형을 두 조각이 아닌 <strong>네
|
desc:
|
||||||
|
새로운 종류의 <strong>절단기</strong>가 잠금 해제되었습니다! 4단 절단기는 도형을 두 조각이 아닌 <strong>네
|
||||||
조각</strong>으로 자를 수 있습니다!
|
조각</strong>으로 자를 수 있습니다!
|
||||||
reward_painter_double:
|
reward_painter_double:
|
||||||
title: 2단 색칠기
|
title: 2단 색칠기
|
||||||
desc: 새로운 종류의 <strong>절단기</strong>가 잠금 해제되었습니다! 일반적인 색칠기와 거의 동일하지만, 하나의 색소를 사용하여
|
desc:
|
||||||
|
새로운 종류의 <strong>절단기</strong>가 잠금 해제되었습니다! 일반적인 색칠기와 거의 동일하지만, 하나의 색소를 사용하여
|
||||||
<strong>동시에 두 개의 도형을 색칠</strong>할 수 있습니다!
|
<strong>동시에 두 개의 도형을 색칠</strong>할 수 있습니다!
|
||||||
reward_storage:
|
reward_storage:
|
||||||
title: 저장고
|
title: 저장고
|
||||||
desc: <strong>저장고</strong>가 잠금 해제되었습니다! 저장고는 최대 용량까지 도형을 저장할 수 있습니다!<br><br> 왼쪽
|
desc:
|
||||||
|
<strong>저장고</strong>가 잠금 해제되었습니다! 저장고는 최대 용량까지 도형을 저장할 수 있습니다!<br><br> 왼쪽
|
||||||
출력이 우선되므로 <strong>오버플로 회로</strong>로도 활용될 수 있습니다!
|
출력이 우선되므로 <strong>오버플로 회로</strong>로도 활용될 수 있습니다!
|
||||||
reward_freeplay:
|
reward_freeplay:
|
||||||
title: 자유플레이
|
title: 자유플레이
|
||||||
@ -738,32 +770,38 @@ storyRewards:
|
|||||||
레이어를 통해 내보내므로 이를 분석하는 구조를 기반으로 하여 공장을 자동으로 구성하기만 하면 됩니다.
|
레이어를 통해 내보내므로 이를 분석하는 구조를 기반으로 하여 공장을 자동으로 구성하기만 하면 됩니다.
|
||||||
reward_blueprints:
|
reward_blueprints:
|
||||||
title: 청사진
|
title: 청사진
|
||||||
desc: 이제 공장의 일부를 <strong>복사하고 붙여넣는 기능</strong>을 사용할 수 있습니다! 영역을 선택 (CTRL 키를 누른 채
|
desc:
|
||||||
|
이제 공장의 일부를 <strong>복사하고 붙여넣는 기능</strong>을 사용할 수 있습니다! 영역을 선택 (CTRL 키를 누른 채
|
||||||
마우스로 드래그)한 뒤 'C' 키를 눌러 복사할 수 있습니다.<br><br>하지만 <strong>공짜는
|
마우스로 드래그)한 뒤 'C' 키를 눌러 복사할 수 있습니다.<br><br>하지만 <strong>공짜는
|
||||||
아닙니다</strong>, <strong>청사진 도형 도형</strong>을 허브에 저장하고 그것을 일부 사용해 붙여넣기
|
아닙니다</strong>, <strong>청사진 도형 도형</strong>을 허브에 저장하고 그것을 일부 사용해 붙여넣기
|
||||||
기능을 사용할 수 있습니다! (방금 당신이 만든 것입니다.)
|
기능을 사용할 수 있습니다! (방금 당신이 만든 것입니다.)
|
||||||
no_reward:
|
no_reward:
|
||||||
title: 다음 레벨
|
title: 다음 레벨
|
||||||
desc: "이번 레벨의 보상은 없네요. 대신 다음 레벨에서 줄겁니다!<br><br> 추신: 기존 공장을 파괴하지는 마세요. 후에
|
desc:
|
||||||
|
"이번 레벨의 보상은 없네요. 대신 다음 레벨에서 줄겁니다!<br><br> 추신: 기존 공장을 파괴하지는 마세요. 후에
|
||||||
<strong>업그레이드 잠금 해제</strong>되면 <strong>기존의 모든</strong> 도형이 필요합니다!"
|
<strong>업그레이드 잠금 해제</strong>되면 <strong>기존의 모든</strong> 도형이 필요합니다!"
|
||||||
no_reward_freeplay:
|
no_reward_freeplay:
|
||||||
title: 다음 레벨
|
title: 다음 레벨
|
||||||
desc: 축하드립니다!
|
desc: 축하드립니다!
|
||||||
reward_balancer:
|
reward_balancer:
|
||||||
title: 밸런서
|
title: 밸런서
|
||||||
desc: <strong>밸런서</strong>가 잠금 해제되었습니다! 다목적 밸런서를 통해 여러 벨트의 아이템을 서로 <strong>다른
|
desc:
|
||||||
|
<strong>밸런서</strong>가 잠금 해제되었습니다! 다목적 밸런서를 통해 여러 벨트의 아이템을 서로 <strong>다른
|
||||||
벨트로 분할하거나 합침</strong>으로써 더욱 거대한 공장을 만들 수 있습니다!
|
벨트로 분할하거나 합침</strong>으로써 더욱 거대한 공장을 만들 수 있습니다!
|
||||||
reward_merger:
|
reward_merger:
|
||||||
title: 압축형 병합기
|
title: 압축형 병합기
|
||||||
desc: <strong>밸런서</strong>의 새로운 형태인 <strong>병합기</strong>가 잠금 해제되었습니다! 이제 벨트 두 줄을
|
desc:
|
||||||
|
<strong>밸런서</strong>의 새로운 형태인 <strong>병합기</strong>가 잠금 해제되었습니다! 이제 벨트 두 줄을
|
||||||
즉시 한 줄로 병합합니다!
|
즉시 한 줄로 병합합니다!
|
||||||
reward_belt_reader:
|
reward_belt_reader:
|
||||||
title: 벨트 판독기
|
title: 벨트 판독기
|
||||||
desc: <strong>벨트 판독기</strong>가 잠금 해제되었습니다! 이제 벨트의 처리량을 확인할 수 있습니다.<br><br>그리고,
|
desc:
|
||||||
|
<strong>벨트 판독기</strong>가 잠금 해제되었습니다! 이제 벨트의 처리량을 확인할 수 있습니다.<br><br>그리고,
|
||||||
전선이 잠금 해제될 때 까지 기다리신다면 정말 유용하게 사용할 수 있을 겁니다!
|
전선이 잠금 해제될 때 까지 기다리신다면 정말 유용하게 사용할 수 있을 겁니다!
|
||||||
reward_rotater_180:
|
reward_rotater_180:
|
||||||
title: 220도 회전기
|
title: 220도 회전기
|
||||||
desc: <strong>180도 회전기</strong>가 잠금 해제되었습니다! 이제 도형을 바로 180도로 회전시킬 수 있습니다. (짜잔!
|
desc:
|
||||||
|
<strong>180도 회전기</strong>가 잠금 해제되었습니다! 이제 도형을 바로 180도로 회전시킬 수 있습니다. (짜잔!
|
||||||
:D)
|
:D)
|
||||||
reward_display:
|
reward_display:
|
||||||
title: 디스플레이
|
title: 디스플레이
|
||||||
@ -771,32 +809,37 @@ storyRewards:
|
|||||||
있습니다.<br><br> 추신: 벨트 판독기와 저장고가 마지막으로 읽은 아이템을 출력했나요? 디스플레이로 한번 봐보세요!"
|
있습니다.<br><br> 추신: 벨트 판독기와 저장고가 마지막으로 읽은 아이템을 출력했나요? 디스플레이로 한번 봐보세요!"
|
||||||
reward_constant_signal:
|
reward_constant_signal:
|
||||||
title: 일정 신호기
|
title: 일정 신호기
|
||||||
desc: 전선 레이어에서 구축할 수 있는 <strong>일정 신호기</strong>가 잠금 해제되었습니다! 간단한 예시로,
|
desc:
|
||||||
|
전선 레이어에서 구축할 수 있는 <strong>일정 신호기</strong>가 잠금 해제되었습니다! 간단한 예시로,
|
||||||
<strong>아이템 선별</strong>에 연결하여 사용하는 데 유용합니다.<br><br> 일정 신호기는
|
<strong>아이템 선별</strong>에 연결하여 사용하는 데 유용합니다.<br><br> 일정 신호기는
|
||||||
<strong>도형</strong>, <strong>색상</strong>, 또는 <strong>불 값</strong> (1
|
<strong>도형</strong>, <strong>색상</strong>, 또는 <strong>불 값</strong> (1
|
||||||
또는 0)을 출력할 수 있습니다.
|
또는 0)을 출력할 수 있습니다.
|
||||||
reward_logic_gates:
|
reward_logic_gates:
|
||||||
title: 논리 회로
|
title: 논리 회로
|
||||||
desc: <strong>논리 회로</strong>가 잠금 해제되었습니다! 굳이 흥분할 필요는 없지만, 진짜 멋진 기술입니다!<br><br>
|
desc:
|
||||||
|
<strong>논리 회로</strong>가 잠금 해제되었습니다! 굳이 흥분할 필요는 없지만, 진짜 멋진 기술입니다!<br><br>
|
||||||
논리 회로를 통해 이제 AND, OR, XOR, NOT 논리 연산을 할 수 있습니다.<br><br> 보너스로,
|
논리 회로를 통해 이제 AND, OR, XOR, NOT 논리 연산을 할 수 있습니다.<br><br> 보너스로,
|
||||||
<strong>트랜지스터</strong>도 지급되었습니다!
|
<strong>트랜지스터</strong>도 지급되었습니다!
|
||||||
reward_virtual_processing:
|
reward_virtual_processing:
|
||||||
title: 가상 처리
|
title: 가상 처리
|
||||||
desc: <strong>도형의 처리를 시뮬레이션</strong>할 수 있는 다양한 새로운 건물이 잠금 해제되었습니다!<br><br> 이제 전선
|
desc:
|
||||||
|
<strong>도형의 처리를 시뮬레이션</strong>할 수 있는 다양한 새로운 건물이 잠금 해제되었습니다!<br><br> 이제 전선
|
||||||
레이어에서 도형에 대한 절단기, 회전기, 결합기 등을 가상으로 시뮬레이션할 수 있습니다! 이제 게임 진행에 있어 다음 세
|
레이어에서 도형에 대한 절단기, 회전기, 결합기 등을 가상으로 시뮬레이션할 수 있습니다! 이제 게임 진행에 있어 다음 세
|
||||||
가지의 방법이 존재합니다:<br><br> - <strong>완전 자동화된 기계</strong>를 구축하고 허브에서 요구되는
|
가지의 방법이 존재합니다:<br><br> - <strong>완전 자동화된 기계</strong>를 구축하고 허브에서 요구되는
|
||||||
도형을 제작합니다. (먼저 시도해볼 것을 권합니다!).<br><br> - 전선을 통해 멋진 것들 만듭니다.<br><br>
|
도형을 제작합니다. (먼저 시도해볼 것을 권합니다!).<br><br> - 전선을 통해 멋진 것들 만듭니다.<br><br>
|
||||||
- 평소처럼 게임을 진행합니다.<br><br> 어떤 방식으로든, 재미있게 게임을 플레이해주시길 바랍니다!
|
- 평소처럼 게임을 진행합니다.<br><br> 어떤 방식으로든, 재미있게 게임을 플레이해주시길 바랍니다!
|
||||||
reward_wires_painter_and_levers:
|
reward_wires_painter_and_levers:
|
||||||
title: 전선과 4단 색칠기
|
title: 전선과 4단 색칠기
|
||||||
desc: " 방금 <strong>전선 레이어</strong>를 활성화하셨습니다: 이것은 일반 레이어 위에 존재하는 별개의 레이어로 수많은
|
desc:
|
||||||
|
" 방금 <strong>전선 레이어</strong>를 활성화하셨습니다: 이것은 일반 레이어 위에 존재하는 별개의 레이어로 수많은
|
||||||
새로운 요소를 사용할 수 있습니다!<br><br> <strong>4단 색칠기</strong>를 활성화해 드리겠습니다 -
|
새로운 요소를 사용할 수 있습니다!<br><br> <strong>4단 색칠기</strong>를 활성화해 드리겠습니다 -
|
||||||
전선 레이어에서 색을 칠할 부분에 연결해 보세요!<br><br> 전선 레이어로 전환하시려면
|
전선 레이어에서 색을 칠할 부분에 연결해 보세요!<br><br> 전선 레이어로 전환하시려면
|
||||||
<strong>E</strong>키를 눌러주세요.<br><br> 추신: <strong>힌트를 활성화</strong>해서
|
<strong>E</strong>키를 눌러주세요.<br><br> 추신: <strong>힌트를 활성화</strong>해서
|
||||||
전선 튜토리얼을 활성화해 보세요!"
|
전선 튜토리얼을 활성화해 보세요!"
|
||||||
reward_filter:
|
reward_filter:
|
||||||
title: 아이템 선별기
|
title: 아이템 선별기
|
||||||
desc: <strong>아이템 선별기</strong>가 잠금 해제되었습니다! 전선 레이어의 신호와 일치하는지에 대한 여부로 아이템을 위쪽
|
desc:
|
||||||
|
<strong>아이템 선별기</strong>가 잠금 해제되었습니다! 전선 레이어의 신호와 일치하는지에 대한 여부로 아이템을 위쪽
|
||||||
출력이나 오른쪽 출력으로 보냅니다.<br><br> 불 값 (1 또는 0)을 전달하여 완전히 활성화과 비활성화를 전환할 수
|
출력이나 오른쪽 출력으로 보냅니다.<br><br> 불 값 (1 또는 0)을 전달하여 완전히 활성화과 비활성화를 전환할 수
|
||||||
있습니다.
|
있습니다.
|
||||||
reward_demo_end:
|
reward_demo_end:
|
||||||
@ -817,7 +860,8 @@ settings:
|
|||||||
labels:
|
labels:
|
||||||
uiScale:
|
uiScale:
|
||||||
title: UI 크기
|
title: UI 크기
|
||||||
description: 사용자 인터페이스의 크기를 변경합니다. 인터페이스는 당신의 해상도에 따라 확장되는데 이 설정은 그 확장의 정도를
|
description:
|
||||||
|
사용자 인터페이스의 크기를 변경합니다. 인터페이스는 당신의 해상도에 따라 확장되는데 이 설정은 그 확장의 정도를
|
||||||
제어합니다.
|
제어합니다.
|
||||||
scales:
|
scales:
|
||||||
super_small: 매우 작게
|
super_small: 매우 작게
|
||||||
@ -864,15 +908,18 @@ settings:
|
|||||||
light: 라이트
|
light: 라이트
|
||||||
refreshRate:
|
refreshRate:
|
||||||
title: 틱 빈도
|
title: 틱 빈도
|
||||||
description: 이것은 초당 발생하는 게임 틱 수를 결정합니다. 일반적으로 틱 속도가 높을수록 정밀도는 향상되나 성능은 낮아집니다. 낮은
|
description:
|
||||||
|
이것은 초당 발생하는 게임 틱 수를 결정합니다. 일반적으로 틱 속도가 높을수록 정밀도는 향상되나 성능은 낮아집니다. 낮은
|
||||||
틱 빈도에서는 처리량이 정확하지 않을 수 있습니다.
|
틱 빈도에서는 처리량이 정확하지 않을 수 있습니다.
|
||||||
alwaysMultiplace:
|
alwaysMultiplace:
|
||||||
title: 다수 배치 항시 켜기
|
title: 다수 배치 항시 켜기
|
||||||
description: 활성화할 경우 모든 건물은 배치한 후 취소할 때 까지 커서에 선택된 상태를 유지합니다. 이 기능은 SHIFT 키를 계속
|
description:
|
||||||
|
활성화할 경우 모든 건물은 배치한 후 취소할 때 까지 커서에 선택된 상태를 유지합니다. 이 기능은 SHIFT 키를 계속
|
||||||
누르는 것과 같습니다.
|
누르는 것과 같습니다.
|
||||||
offerHints:
|
offerHints:
|
||||||
title: 힌트와 튜토리얼
|
title: 힌트와 튜토리얼
|
||||||
description: 게임 플레이하는 동안 힌트와 튜토리얼을 보여줄 지를 결정합니다. 또한 게임에 더 쉽게 빠져들 수 있도록 특정 레벨까지
|
description:
|
||||||
|
게임 플레이하는 동안 힌트와 튜토리얼을 보여줄 지를 결정합니다. 또한 게임에 더 쉽게 빠져들 수 있도록 특정 레벨까지
|
||||||
특정한 UI 요소를 숨깁니다.
|
특정한 UI 요소를 숨깁니다.
|
||||||
enableTunnelSmartplace:
|
enableTunnelSmartplace:
|
||||||
title: 지능적인 터널 배치
|
title: 지능적인 터널 배치
|
||||||
@ -901,7 +948,8 @@ settings:
|
|||||||
description: 색맹 사용자를 위해 게임을 플레이하는 데 도움을 주는 다양한 도구를 활성화합니다.
|
description: 색맹 사용자를 위해 게임을 플레이하는 데 도움을 주는 다양한 도구를 활성화합니다.
|
||||||
rotationByBuilding:
|
rotationByBuilding:
|
||||||
title: 건물 유형에 따른 방향
|
title: 건물 유형에 따른 방향
|
||||||
description: 각 건물 유형마다 개별적으로 마지막으로 설정했던 방향을 기억하도록 합니다. 다른 건물 변형을 자주 전환하는 경우 이
|
description:
|
||||||
|
각 건물 유형마다 개별적으로 마지막으로 설정했던 방향을 기억하도록 합니다. 다른 건물 변형을 자주 전환하는 경우 이
|
||||||
방법이 더욱 편할 수 있습니다.
|
방법이 더욱 편할 수 있습니다.
|
||||||
soundVolume:
|
soundVolume:
|
||||||
title: 효과음 볼륨
|
title: 효과음 볼륨
|
||||||
@ -917,7 +965,8 @@ settings:
|
|||||||
description: 성능 향상을 위해 타일 그리드를 비활성화할 수 있습니다. 이 역시 게임을 더욱 깨끗하게 보여줍니다!
|
description: 성능 향상을 위해 타일 그리드를 비활성화할 수 있습니다. 이 역시 게임을 더욱 깨끗하게 보여줍니다!
|
||||||
clearCursorOnDeleteWhilePlacing:
|
clearCursorOnDeleteWhilePlacing:
|
||||||
title: 우클릭 시 커서 지우기
|
title: 우클릭 시 커서 지우기
|
||||||
description: 기본적으로 활성화되어 있으며, 배치할 건물을 선택한 상태에서 마우스 우클릭 시 커서를 지웁니다. 비활성화할 경우, 건물을
|
description:
|
||||||
|
기본적으로 활성화되어 있으며, 배치할 건물을 선택한 상태에서 마우스 우클릭 시 커서를 지웁니다. 비활성화할 경우, 건물을
|
||||||
커서에 선택한 채로 우클릭하면 바로 건물을 삭제할 수 있습니다.
|
커서에 선택한 채로 우클릭하면 바로 건물을 삭제할 수 있습니다.
|
||||||
lowQualityTextures:
|
lowQualityTextures:
|
||||||
title: 저품질 텍스처 (못생김)
|
title: 저품질 텍스처 (못생김)
|
||||||
@ -930,7 +979,8 @@ settings:
|
|||||||
description: 기본적으로 활성화되어 있으며, 자원 패치에서 피펫 기능을 사용 시 즉시 추출기를 선택합니다.
|
description: 기본적으로 활성화되어 있으며, 자원 패치에서 피펫 기능을 사용 시 즉시 추출기를 선택합니다.
|
||||||
simplifiedBelts:
|
simplifiedBelts:
|
||||||
title: 벨트 단순화 (못생김)
|
title: 벨트 단순화 (못생김)
|
||||||
description: 성능 향상을 위해 벨트를 가리킬 때를 제외한 모든 상황에서 벨트 아이템을 렌더링하지 않습니다. 이 기능을 사용할 정도로
|
description:
|
||||||
|
성능 향상을 위해 벨트를 가리킬 때를 제외한 모든 상황에서 벨트 아이템을 렌더링하지 않습니다. 이 기능을 사용할 정도로
|
||||||
심각한 성능 문제가 일어나지 않는 한, 이 설정을 사용할 필요는 없습니다.
|
심각한 성능 문제가 일어나지 않는 한, 이 설정을 사용할 필요는 없습니다.
|
||||||
enableMousePan:
|
enableMousePan:
|
||||||
title: 화면 가장자리 패닝
|
title: 화면 가장자리 패닝
|
||||||
@ -1148,7 +1198,8 @@ puzzleMenu:
|
|||||||
medium: 중간
|
medium: 중간
|
||||||
hard: 어려움
|
hard: 어려움
|
||||||
unknown: Unrated
|
unknown: Unrated
|
||||||
dlcHint: DLC를 이미 구입하셨나요? 라이브러리에서 shapez.io를 오른쪽 클릭한 다음 속성… > DLC 메뉴를 선택해서
|
dlcHint:
|
||||||
|
DLC를 이미 구입하셨나요? 라이브러리에서 shapez.io를 오른쪽 클릭한 다음 속성… > DLC 메뉴를 선택해서
|
||||||
활성화되었는지 확인해주세요.
|
활성화되었는지 확인해주세요.
|
||||||
search:
|
search:
|
||||||
action: Search
|
action: Search
|
||||||
@ -1198,7 +1249,8 @@ mods:
|
|||||||
noModSupport: 모드를 사용하기 위해 정식버전이 필요합니다.
|
noModSupport: 모드를 사용하기 위해 정식버전이 필요합니다.
|
||||||
togglingComingSoon:
|
togglingComingSoon:
|
||||||
title: 곧 업데이트 됩니다!
|
title: 곧 업데이트 됩니다!
|
||||||
description: 지금은 mods/ 폴더에 모드 파일을 넣고 빼는 방식으로만 모드를 활성화/비활성화할 수 있습니다. 모드를 이곳에서 켜고
|
description:
|
||||||
|
지금은 mods/ 폴더에 모드 파일을 넣고 빼는 방식으로만 모드를 활성화/비활성화할 수 있습니다. 모드를 이곳에서 켜고
|
||||||
끌수 있는 기능은 추후 업데이트될 예정입니다. 모드폴더에 넣고/빼는것으로 할수있습니다. 모드를 토글하는 기능은 곧 업데이트
|
끌수 있는 기능은 추후 업데이트될 예정입니다. 모드폴더에 넣고/빼는것으로 할수있습니다. 모드를 토글하는 기능은 곧 업데이트
|
||||||
됩니다!
|
됩니다!
|
||||||
browserNoSupport: Due to browser restrictions it is currently only possible to
|
browserNoSupport: Due to browser restrictions it is currently only possible to
|
||||||
|
@ -54,6 +54,8 @@ global:
|
|||||||
space: SPACE
|
space: SPACE
|
||||||
loggingIn: Prisijungiama
|
loggingIn: Prisijungiama
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Demo Versija
|
title: Demo Versija
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -102,6 +104,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
@ -55,6 +55,8 @@ global:
|
|||||||
space: SPATIE
|
space: SPATIE
|
||||||
loggingIn: Inloggen
|
loggingIn: Inloggen
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Demoversie
|
title: Demoversie
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -103,6 +105,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
@ -55,6 +55,8 @@ global:
|
|||||||
space: MELLOMROM
|
space: MELLOMROM
|
||||||
loggingIn: Logger inn
|
loggingIn: Logger inn
|
||||||
loadingResources: Laster ned tilleggsressurser (<percentage> %)
|
loadingResources: Laster ned tilleggsressurser (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Demo Versjon
|
title: Demo Versjon
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -103,6 +105,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
@ -55,6 +55,8 @@ global:
|
|||||||
space: SPACJA
|
space: SPACJA
|
||||||
loggingIn: Logowanie
|
loggingIn: Logowanie
|
||||||
loadingResources: Pobieranie dodatkowych zasobów (<percentage> %)
|
loadingResources: Pobieranie dodatkowych zasobów (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Wersja demonstracyjna
|
title: Wersja demonstracyjna
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -102,6 +104,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: Ok
|
ok: Ok
|
||||||
|
@ -54,6 +54,8 @@ global:
|
|||||||
space: Espaço
|
space: Espaço
|
||||||
loggingIn: Entrando
|
loggingIn: Entrando
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Versão Demo
|
title: Versão Demo
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -102,6 +104,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
@ -53,8 +53,10 @@ global:
|
|||||||
escape: ESC
|
escape: ESC
|
||||||
shift: SHIFT
|
shift: SHIFT
|
||||||
space: SPACE
|
space: SPACE
|
||||||
loggingIn: Logging in
|
loggingIn: A conectar
|
||||||
loadingResources: A Baixar recursos adicionais (<percentage> %)
|
loadingResources: A Baixar recursos adicionais (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Versão Demo
|
title: Versão Demo
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -101,8 +103,9 @@ mainMenu:
|
|||||||
desativa todos os modos antes de jogares o DLC
|
desativa todos os modos antes de jogares o DLC
|
||||||
playingFullVersion: Estás agora a jogar a versão completa!
|
playingFullVersion: Estás agora a jogar a versão completa!
|
||||||
logout: Desconectar
|
logout: Desconectar
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: Não foram encontrados savegames - Clica para começar um jogo novo!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Compraste o Shapez na Steam? Joga a versão completa no teu Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
@ -180,8 +183,8 @@ dialogs:
|
|||||||
desc: "Este jogo tem vários Atalhos que tornarão mais fácil a construção de
|
desc: "Este jogo tem vários Atalhos que tornarão mais fácil a construção de
|
||||||
grandes fábricas. Aqui estão alguns, mas <strong>verifica os
|
grandes fábricas. Aqui estão alguns, mas <strong>verifica os
|
||||||
restantes Atalhos</strong>!<br><br> <code
|
restantes Atalhos</strong>!<br><br> <code
|
||||||
class='keybinding'>CTRL</code> + Drag: Seleciona a área para copiar
|
class='keybinding'>CTRL</code> + Arrasta: Seleciona a área para
|
||||||
/ eliminar.<br> <code class='keybinding'>SHIFT</code>: Mantém
|
copiar / eliminar.<br> <code class='keybinding'>SHIFT</code>: Mantém
|
||||||
pressionado para colocar várias construções.<br> <code
|
pressionado para colocar várias construções.<br> <code
|
||||||
class='keybinding'>ALT</code>: Inverte as posições.<br>"
|
class='keybinding'>ALT</code>: Inverte as posições.<br>"
|
||||||
createMarker:
|
createMarker:
|
||||||
@ -362,7 +365,7 @@ ingame:
|
|||||||
notifications:
|
notifications:
|
||||||
newUpgrade: Está disponível um novo upgrade!
|
newUpgrade: Está disponível um novo upgrade!
|
||||||
gameSaved: O teu jogo foi guardado.
|
gameSaved: O teu jogo foi guardado.
|
||||||
freeplayLevelComplete: Level <level> has been completed!
|
freeplayLevelComplete: Nível <level> completo!
|
||||||
shop:
|
shop:
|
||||||
title: Upgrades
|
title: Upgrades
|
||||||
buttonUnlock: Upgrade
|
buttonUnlock: Upgrade
|
||||||
@ -1107,8 +1110,8 @@ settings:
|
|||||||
zoom out).
|
zoom out).
|
||||||
shapeTooltipAlwaysOn:
|
shapeTooltipAlwaysOn:
|
||||||
title: Shape Tooltip - Mostrar Sempre
|
title: Shape Tooltip - Mostrar Sempre
|
||||||
description: Whether to always show the shape tooltip when hovering buildings,
|
description: Mostrar sempre a shape tooltip quando passar sobre construções, em
|
||||||
instead of having to hold 'ALT'.
|
vez de pressionar 'ALT'.
|
||||||
rangeSliderPercentage: <amount> %
|
rangeSliderPercentage: <amount> %
|
||||||
tickrateHz: <amount> Hz
|
tickrateHz: <amount> Hz
|
||||||
newBadge: Novo!
|
newBadge: Novo!
|
||||||
@ -1186,10 +1189,10 @@ keybindings:
|
|||||||
comparator: Comparador
|
comparator: Comparador
|
||||||
item_producer: Produtor de Itens (Sandbox)
|
item_producer: Produtor de Itens (Sandbox)
|
||||||
copyWireValue: "Fios: Copia o valor debaixo do cursor"
|
copyWireValue: "Fios: Copia o valor debaixo do cursor"
|
||||||
rotateToUp: "Rotate: Point Up"
|
rotateToUp: "Rotação: Para cima"
|
||||||
rotateToDown: "Rotate: Point Down"
|
rotateToDown: "Rotação: Para baixo"
|
||||||
rotateToRight: "Rotate: Point Right"
|
rotateToRight: "Rotação: Para a diretia"
|
||||||
rotateToLeft: "Rotate: Point Left"
|
rotateToLeft: "Rotação: Para a esquerda"
|
||||||
constant_producer: Produtor Constante
|
constant_producer: Produtor Constante
|
||||||
goal_acceptor: Recetor de Objetivo
|
goal_acceptor: Recetor de Objetivo
|
||||||
block: Bloqueador
|
block: Bloqueador
|
||||||
|
@ -55,6 +55,8 @@ global:
|
|||||||
space: SPACE
|
space: SPACE
|
||||||
loggingIn: Logare
|
loggingIn: Logare
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Versiunea Demo
|
title: Versiunea Demo
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -104,6 +106,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -55,6 +55,8 @@ global:
|
|||||||
space: SPACE
|
space: SPACE
|
||||||
loggingIn: Logging in
|
loggingIn: Logging in
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Demo Version
|
title: Demo Version
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -102,6 +104,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
@ -53,6 +53,8 @@ global:
|
|||||||
space: SPACE
|
space: SPACE
|
||||||
loggingIn: Prijavljivanje
|
loggingIn: Prijavljivanje
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Probna Verzija
|
title: Probna Verzija
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -101,6 +103,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
@ -54,6 +54,8 @@ global:
|
|||||||
space: MELLANSLAG
|
space: MELLANSLAG
|
||||||
loggingIn: Loggar in
|
loggingIn: Loggar in
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Demo-version
|
title: Demo-version
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -103,6 +105,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
@ -52,7 +52,9 @@ global:
|
|||||||
shift: SHIFT
|
shift: SHIFT
|
||||||
space: SPACE
|
space: SPACE
|
||||||
loggingIn: Giriş yapılıyor
|
loggingIn: Giriş yapılıyor
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Ek kaynaklar indiriliyor... (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Deneme Sürümü
|
title: Deneme Sürümü
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -101,6 +103,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: OK
|
ok: OK
|
||||||
|
@ -54,6 +54,8 @@ global:
|
|||||||
space: SPACE
|
space: SPACE
|
||||||
loggingIn: Вхід у систему
|
loggingIn: Вхід у систему
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: Демо-версія
|
title: Демо-версія
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -102,6 +104,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: Гаразд
|
ok: Гаразд
|
||||||
@ -448,10 +451,10 @@ ingame:
|
|||||||
вводи</strong> фарбувальника за допомогою проводу!
|
вводи</strong> фарбувальника за допомогою проводу!
|
||||||
21_3_place_button: Неймовірно! Тепер розмістіть <strong>Вимикач</strong> Та
|
21_3_place_button: Неймовірно! Тепер розмістіть <strong>Вимикач</strong> Та
|
||||||
з'єднайте їх дротом!
|
з'єднайте їх дротом!
|
||||||
21_4_press_button: "Натисніть вимикач, аби він почав <strong>видавати сигнал
|
21_4_press_button: 'Натисніть вимикач, аби він почав <strong>видавати сигнал
|
||||||
\"Істина\" </strong> активувавши таким чином
|
"Істина" </strong> активувавши таким чином
|
||||||
фарбувальник.<br><br> PS: Не обов'язково підключати всі входи!
|
фарбувальник.<br><br> PS: Не обов''язково підключати всі входи!
|
||||||
Спробуйте підключити лише два."
|
Спробуйте підключити лише два.'
|
||||||
1_2_hold_and_drag: Утримуйте і перетягніть
|
1_2_hold_and_drag: Утримуйте і перетягніть
|
||||||
connectedMiners:
|
connectedMiners:
|
||||||
one_miner: 1 Екстрактор
|
one_miner: 1 Екстрактор
|
||||||
|
@ -51,6 +51,8 @@ global:
|
|||||||
space: 空格键
|
space: 空格键
|
||||||
loggingIn: 登录
|
loggingIn: 登录
|
||||||
loadingResources: Downloading additional resources (<percentage> %)
|
loadingResources: Downloading additional resources (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: 试玩版
|
title: 试玩版
|
||||||
intro: 购买完整版以解锁所有游戏内容!
|
intro: 购买完整版以解锁所有游戏内容!
|
||||||
@ -88,6 +90,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: 确认
|
ok: 确认
|
||||||
@ -151,13 +154,15 @@ dialogs:
|
|||||||
desc: 您还没有解锁蓝图功能!通过第12关的挑战后可解锁蓝图。
|
desc: 您还没有解锁蓝图功能!通过第12关的挑战后可解锁蓝图。
|
||||||
keybindingsIntroduction:
|
keybindingsIntroduction:
|
||||||
title: 实用快捷键
|
title: 实用快捷键
|
||||||
desc: "这个游戏有很多有用的快捷键设定。 以下是其中的一些介绍,记得在<strong>按键设置</strong>中查看其他按键设定!<br><br>
|
desc:
|
||||||
|
"这个游戏有很多有用的快捷键设定。 以下是其中的一些介绍,记得在<strong>按键设置</strong>中查看其他按键设定!<br><br>
|
||||||
<code class='keybinding'>CTRL键</code> + 拖动:选择区域以复制或删除。<br> <code
|
<code class='keybinding'>CTRL键</code> + 拖动:选择区域以复制或删除。<br> <code
|
||||||
class='keybinding'>SHIFT键</code>: 按住以放置多个同一种设施。<br> <code
|
class='keybinding'>SHIFT键</code>: 按住以放置多个同一种设施。<br> <code
|
||||||
class='keybinding'>ALT键</code>: 反向放置传送带。<br>"
|
class='keybinding'>ALT键</code>: 反向放置传送带。<br>"
|
||||||
createMarker:
|
createMarker:
|
||||||
title: 创建地图标记
|
title: 创建地图标记
|
||||||
desc: 填写一个有意义的名称, 还可以同时包含一个形状的 <strong>短代码</strong> (您可以 <link>点击这里</link>
|
desc:
|
||||||
|
填写一个有意义的名称, 还可以同时包含一个形状的 <strong>短代码</strong> (您可以 <link>点击这里</link>
|
||||||
生成短代码)
|
生成短代码)
|
||||||
titleEdit: 编辑地图标记
|
titleEdit: 编辑地图标记
|
||||||
markerDemoLimit:
|
markerDemoLimit:
|
||||||
@ -355,15 +360,18 @@ ingame:
|
|||||||
hints:
|
hints:
|
||||||
1_1_extractor: 在<strong>圆形</strong>上放置一个<strong>开采器</strong>来获取圆形!<br><br>提示:<strong>按下鼠标左键</strong>选中<strong>开采器</strong>
|
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_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>SHIFT</strong>
|
||||||
键可放置多个<strong>开采器</strong>,注意用<strong>R</strong>
|
键可放置多个<strong>开采器</strong>,注意用<strong>R</strong>
|
||||||
键可旋转<strong>开采器</strong>的出口方向,确保开采的图形可以顺利传送。
|
键可旋转<strong>开采器</strong>的出口方向,确保开采的图形可以顺利传送。
|
||||||
2_1_place_cutter: 现在放置一个<strong>切割器</strong>,这个设施可把<strong>圆形</strong>切成两半!<br><br>注意:无论如何放置,切割机总是<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</strong>可以快速选择各项设施!
|
2_3_more_cutters: 干的好!现在放置<strong>2个以上的切割机</strong>来加快当前缓慢的过程!<br><br>提示:用<strong>快捷键0-9</strong>可以快速选择各项设施!
|
||||||
3_1_rectangles: 现在让我们开采一些矩形!找到<strong>矩形地带</strong>并<strong>放置4个开采器</strong>并将它们用<strong>传送带</strong>连接到中心基地。<br><br>
|
3_1_rectangles:
|
||||||
|
现在让我们开采一些矩形!找到<strong>矩形地带</strong>并<strong>放置4个开采器</strong>并将它们用<strong>传送带</strong>连接到中心基地。<br><br>
|
||||||
提示:选中<strong>传送带</strong>后按住<strong>SHIFT键</strong>可快速准确地规划<strong>传送带路线!</strong>
|
提示:选中<strong>传送带</strong>后按住<strong>SHIFT键</strong>可快速准确地规划<strong>传送带路线!</strong>
|
||||||
21_1_place_quad_painter: 放置<strong>四口上色器</strong>并且获取一些<strong>圆形</strong>,<strong>白色</strong>和<strong>红色</strong>!
|
21_1_place_quad_painter: 放置<strong>四口上色器</strong>并且获取一些<strong>圆形</strong>,<strong>白色</strong>和<strong>红色</strong>!
|
||||||
21_2_switch_to_wires: 按 <strong>E</strong> 键选择<strong>电线层</strong>!<br><br>
|
21_2_switch_to_wires: 按 <strong>E</strong> 键选择<strong>电线层</strong>!<br><br>
|
||||||
@ -660,7 +668,8 @@ storyRewards:
|
|||||||
desc: 恭喜!您解锁了<strong>旋转机</strong>。它会顺时针将输入的<strong>图形旋转90度</strong>。
|
desc: 恭喜!您解锁了<strong>旋转机</strong>。它会顺时针将输入的<strong>图形旋转90度</strong>。
|
||||||
reward_painter:
|
reward_painter:
|
||||||
title: 上色
|
title: 上色
|
||||||
desc: 恭喜!您解锁了<strong>上色器</strong>。开采一些颜色 (就像您开采图形一样),将其在上色器中与图形结合来将图形上色!
|
desc:
|
||||||
|
恭喜!您解锁了<strong>上色器</strong>。开采一些颜色 (就像您开采图形一样),将其在上色器中与图形结合来将图形上色!
|
||||||
<br>注意:如果您不幸患有色盲,可以在设置中启用<strong>色盲模式</strong>
|
<br>注意:如果您不幸患有色盲,可以在设置中启用<strong>色盲模式</strong>
|
||||||
reward_mixer:
|
reward_mixer:
|
||||||
title: 混合颜色
|
title: 混合颜色
|
||||||
@ -677,11 +686,13 @@ storyRewards:
|
|||||||
desc: 恭喜!您解锁了<strong>隧道</strong>。它可放置在<strong>传送带</strong>或<strong>设施</strong>下方以运送物品。
|
desc: 恭喜!您解锁了<strong>隧道</strong>。它可放置在<strong>传送带</strong>或<strong>设施</strong>下方以运送物品。
|
||||||
reward_rotater_ccw:
|
reward_rotater_ccw:
|
||||||
title: 逆时针旋转
|
title: 逆时针旋转
|
||||||
desc: 恭喜!您解锁了<strong>旋转机</strong>的<strong>逆时针</strong>变体。它可以逆时针旋转<strong>图形</strong>。
|
desc:
|
||||||
|
恭喜!您解锁了<strong>旋转机</strong>的<strong>逆时针</strong>变体。它可以逆时针旋转<strong>图形</strong>。
|
||||||
<br>选择<strong>旋转机</strong>然后按"T"键来选取这个变体。
|
<br>选择<strong>旋转机</strong>然后按"T"键来选取这个变体。
|
||||||
reward_miner_chainable:
|
reward_miner_chainable:
|
||||||
title: 链式开采器
|
title: 链式开采器
|
||||||
desc: 您已经解锁了<strong>链式开采器</strong>!它能<strong>转发资源</strong>给其他的开采器,这样您就能更有效率的开采各类资源了!<br><br>
|
desc:
|
||||||
|
您已经解锁了<strong>链式开采器</strong>!它能<strong>转发资源</strong>给其他的开采器,这样您就能更有效率的开采各类资源了!<br><br>
|
||||||
注意:新的开采器已替换了工具栏里旧的开采器!
|
注意:新的开采器已替换了工具栏里旧的开采器!
|
||||||
reward_underground_belt_tier_2:
|
reward_underground_belt_tier_2:
|
||||||
title: 二级隧道
|
title: 二级隧道
|
||||||
@ -698,12 +709,14 @@ storyRewards:
|
|||||||
<br>它<strong>优先从左边</strong>输出,这样您就可以用它做一个<strong>溢流门</strong>了!
|
<br>它<strong>优先从左边</strong>输出,这样您就可以用它做一个<strong>溢流门</strong>了!
|
||||||
reward_freeplay:
|
reward_freeplay:
|
||||||
title: 自由模式
|
title: 自由模式
|
||||||
desc: 成功了!您解锁了<strong>自由模式</strong>!挑战升级!这意味着现在将<strong>随机</strong>生成图形!
|
desc:
|
||||||
|
成功了!您解锁了<strong>自由模式</strong>!挑战升级!这意味着现在将<strong>随机</strong>生成图形!
|
||||||
从现在起,中心基地最为需要的是<strong>产量</strong>,我强烈建议您去制造一台能够自动交付所需图形的机器!<br><br>
|
从现在起,中心基地最为需要的是<strong>产量</strong>,我强烈建议您去制造一台能够自动交付所需图形的机器!<br><br>
|
||||||
基地会在<strong>电线层</strong>输出需要的图形,您需要去分析图形并在此基础上自动配置您的工厂。
|
基地会在<strong>电线层</strong>输出需要的图形,您需要去分析图形并在此基础上自动配置您的工厂。
|
||||||
reward_blueprints:
|
reward_blueprints:
|
||||||
title: 蓝图
|
title: 蓝图
|
||||||
desc: 您现在可以<strong>复制粘贴</strong>您的工厂的一部分了!按住 CTRL键并拖动鼠标来选择一块区域,然后按C键复制。
|
desc:
|
||||||
|
您现在可以<strong>复制粘贴</strong>您的工厂的一部分了!按住 CTRL键并拖动鼠标来选择一块区域,然后按C键复制。
|
||||||
<br><br>粘贴并<strong>不是免费的</strong>,您需要制造<strong>蓝图图形</strong>来负担。蓝图图形是您刚刚交付的图形。
|
<br><br>粘贴并<strong>不是免费的</strong>,您需要制造<strong>蓝图图形</strong>来负担。蓝图图形是您刚刚交付的图形。
|
||||||
no_reward:
|
no_reward:
|
||||||
title: 下一关
|
title: 下一关
|
||||||
@ -731,7 +744,8 @@ storyRewards:
|
|||||||
<br>注意:您注意到<strong>传送读取器</strong>和<strong>存储器</strong>输出的他们最后读取的物品了吗?试着在显示屏上展示一下!"
|
<br>注意:您注意到<strong>传送读取器</strong>和<strong>存储器</strong>输出的他们最后读取的物品了吗?试着在显示屏上展示一下!"
|
||||||
reward_constant_signal:
|
reward_constant_signal:
|
||||||
title: 恒定信号
|
title: 恒定信号
|
||||||
desc: 恭喜!您解锁了生成于电线层之上的<strong>恒定信号</strong>,把它连接到<strong>过滤器</strong>时非常有用。
|
desc:
|
||||||
|
恭喜!您解锁了生成于电线层之上的<strong>恒定信号</strong>,把它连接到<strong>过滤器</strong>时非常有用。
|
||||||
<br>比如,它能发出图形、颜色、开关值(1 / 0)的固定信号。
|
<br>比如,它能发出图形、颜色、开关值(1 / 0)的固定信号。
|
||||||
reward_logic_gates:
|
reward_logic_gates:
|
||||||
title: 逻辑门
|
title: 逻辑门
|
||||||
@ -750,7 +764,8 @@ storyRewards:
|
|||||||
<strong>提示</strong>:可在设置中打开电线层教程!"
|
<strong>提示</strong>:可在设置中打开电线层教程!"
|
||||||
reward_filter:
|
reward_filter:
|
||||||
title: 物品过滤器
|
title: 物品过滤器
|
||||||
desc: 恭喜!您解锁了<strong>物品过滤器</strong>!它会根据在电线层上输入的信号决定是从上面还是右边输出物品。<br><br>
|
desc:
|
||||||
|
恭喜!您解锁了<strong>物品过滤器</strong>!它会根据在电线层上输入的信号决定是从上面还是右边输出物品。<br><br>
|
||||||
您也可以输入开关值(1 / 0)信号来激活或者禁用它。
|
您也可以输入开关值(1 / 0)信号来激活或者禁用它。
|
||||||
reward_demo_end:
|
reward_demo_end:
|
||||||
title: 试玩结束
|
title: 试玩结束
|
||||||
|
@ -51,6 +51,8 @@ global:
|
|||||||
space: 空格键
|
space: 空格键
|
||||||
loggingIn: 登录
|
loggingIn: 登录
|
||||||
loadingResources: 下载其他资源 (<percentage> %)
|
loadingResources: 下载其他资源 (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: 试玩版
|
title: 试玩版
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -84,7 +86,8 @@ mainMenu:
|
|||||||
savegameUnnamed: 存档未命名
|
savegameUnnamed: 存档未命名
|
||||||
puzzleMode: 谜题模式
|
puzzleMode: 谜题模式
|
||||||
back: 返回
|
back: 返回
|
||||||
puzzleDlcText: 持续优化,追求极致效率。在限定空间内使用有限的设施来创造图形!《异形工厂》(Shapez)的首个 DLC
|
puzzleDlcText:
|
||||||
|
持续优化,追求极致效率。在限定空间内使用有限的设施来创造图形!《异形工厂》(Shapez)的首个 DLC
|
||||||
“谜题挑战者”将会给大家带来更烧脑、更自由的全新挑战!
|
“谜题挑战者”将会给大家带来更烧脑、更自由的全新挑战!
|
||||||
puzzleDlcWishlist: 添加愿望单!
|
puzzleDlcWishlist: 添加愿望单!
|
||||||
puzzleDlcViewNow: 查看 DLC
|
puzzleDlcViewNow: 查看 DLC
|
||||||
@ -95,6 +98,7 @@ mainMenu:
|
|||||||
logout: 登出
|
logout: 登出
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: 确认
|
ok: 确认
|
||||||
@ -158,7 +162,8 @@ dialogs:
|
|||||||
desc: 您还没有解锁蓝图功能!通过第 12 关的挑战后可解锁蓝图。
|
desc: 您还没有解锁蓝图功能!通过第 12 关的挑战后可解锁蓝图。
|
||||||
keybindingsIntroduction:
|
keybindingsIntroduction:
|
||||||
title: 实用快捷键
|
title: 实用快捷键
|
||||||
desc: 这个游戏有很多有用的快捷键设定。以下是其中的一些介绍,记得在<strong>按键设置</strong>中查看其他按键设定!<br><br>
|
desc:
|
||||||
|
这个游戏有很多有用的快捷键设定。以下是其中的一些介绍,记得在<strong>按键设置</strong>中查看其他按键设定!<br><br>
|
||||||
<code class='keybinding'>CTRL 键</code> + 拖动:选择区域以复制或删除。<br> <code
|
<code class='keybinding'>CTRL 键</code> + 拖动:选择区域以复制或删除。<br> <code
|
||||||
class='keybinding'>SHIFT 键</code>: 按住以放置多个同一种设施。<br> <code
|
class='keybinding'>SHIFT 键</code>: 按住以放置多个同一种设施。<br> <code
|
||||||
class='keybinding'>ALT 键</code>:反向放置传送带。<br>
|
class='keybinding'>ALT 键</code>:反向放置传送带。<br>
|
||||||
@ -257,11 +262,13 @@ dialogs:
|
|||||||
descWeb: “一个或多个资源载入失败,请确认您的网络连接正常并再次尝试。如果仍然载入失败,
|
descWeb: “一个或多个资源载入失败,请确认您的网络连接正常并再次尝试。如果仍然载入失败,
|
||||||
请确认您已经关闭了所有浏览器插件(比如"广告屏蔽")。<br><br>或者,你也可以试玩
|
请确认您已经关闭了所有浏览器插件(比如"广告屏蔽")。<br><br>或者,你也可以试玩
|
||||||
<demoOnSteamLinkText>。<br><br> 错误提示:”
|
<demoOnSteamLinkText>。<br><br> 错误提示:”
|
||||||
descSteamDemo: “一个或多个资源载入失败,请重新启动游戏。 如果仍然存在问题,请重新安装游戏或者通过Steam验证游戏安装文件。 <br><br>
|
descSteamDemo:
|
||||||
|
“一个或多个资源载入失败,请重新启动游戏。 如果仍然存在问题,请重新安装游戏或者通过Steam验证游戏安装文件。 <br><br>
|
||||||
错误提示:”
|
错误提示:”
|
||||||
steamSsoError:
|
steamSsoError:
|
||||||
title: 从完整版登出
|
title: 从完整版登出
|
||||||
desc: 由于您的网络连接不稳定,或者您已在另一台设备上开始游戏。您已经从浏览器登出了完整版游戏。 <br><br>
|
desc:
|
||||||
|
由于您的网络连接不稳定,或者您已在另一台设备上开始游戏。您已经从浏览器登出了完整版游戏。 <br><br>
|
||||||
请确认您没有在其他浏览器或电脑用同一Steam账号登录《异形工厂》(Shapez)。<br><br> 您可以从主界面再次登录。
|
请确认您没有在其他浏览器或电脑用同一Steam账号登录《异形工厂》(Shapez)。<br><br> 您可以从主界面再次登录。
|
||||||
steamSsoNoOwnership:
|
steamSsoNoOwnership:
|
||||||
title: 尚未获得完整版
|
title: 尚未获得完整版
|
||||||
@ -351,11 +358,13 @@ ingame:
|
|||||||
hints:
|
hints:
|
||||||
1_1_extractor: 在<strong>圆形</strong>上放置一个<strong>开采器</strong>来获取圆形!<br><br>提示:<strong>按下鼠标左键</strong>选中<strong>开采器</strong>
|
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_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>SHIFT</strong> 键可放置多个<strong>开采器</strong>,注意用
|
||||||
<strong>R</strong> 键可旋转<strong>开采器</strong>的出口方向,确保开采的图形可以顺利传送。
|
<strong>R</strong> 键可旋转<strong>开采器</strong>的出口方向,确保开采的图形可以顺利传送。
|
||||||
2_1_place_cutter: 现在放置一个<strong>切割器</strong>,这个设施可把<strong>圆形</strong>切成两半!<br><br>注意:无论如何放置,切割机总是<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
|
2_3_more_cutters: 干的好!现在放置 <strong>2
|
||||||
个以上的切割机</strong>来加快当前缓慢的过程!<br><br>提示:用<strong>快捷键 0 - 9
|
个以上的切割机</strong>来加快当前缓慢的过程!<br><br>提示:用<strong>快捷键 0 - 9
|
||||||
@ -661,7 +670,8 @@ storyRewards:
|
|||||||
desc: 恭喜!您解锁了<strong>旋转机</strong>。它会顺时针将输入的<strong>图形旋转90度</strong>。
|
desc: 恭喜!您解锁了<strong>旋转机</strong>。它会顺时针将输入的<strong>图形旋转90度</strong>。
|
||||||
reward_painter:
|
reward_painter:
|
||||||
title: 上色
|
title: 上色
|
||||||
desc: 恭喜!您解锁了<strong>上色器</strong>。开采一些颜色(就像您开采图形一样),将其在上色器中与图形结合来将图形上色!
|
desc:
|
||||||
|
恭喜!您解锁了<strong>上色器</strong>。开采一些颜色(就像您开采图形一样),将其在上色器中与图形结合来将图形上色!
|
||||||
<br>注意:如果您不幸患有色盲,可以在设置中启用<strong>色盲模式</strong>
|
<br>注意:如果您不幸患有色盲,可以在设置中启用<strong>色盲模式</strong>
|
||||||
reward_mixer:
|
reward_mixer:
|
||||||
title: 混合颜色
|
title: 混合颜色
|
||||||
@ -678,11 +688,13 @@ storyRewards:
|
|||||||
desc: 恭喜!您解锁了<strong>隧道</strong>。它可放置在<strong>传送带</strong>或<strong>设施</strong>下方以运送物品。
|
desc: 恭喜!您解锁了<strong>隧道</strong>。它可放置在<strong>传送带</strong>或<strong>设施</strong>下方以运送物品。
|
||||||
reward_rotater_ccw:
|
reward_rotater_ccw:
|
||||||
title: 逆时针旋转
|
title: 逆时针旋转
|
||||||
desc: 恭喜!您解锁了<strong>旋转机</strong>的<strong>逆时针</strong>变体。它可以逆时针旋转<strong>图形</strong>。
|
desc:
|
||||||
|
恭喜!您解锁了<strong>旋转机</strong>的<strong>逆时针</strong>变体。它可以逆时针旋转<strong>图形</strong>。
|
||||||
<br>选择<strong>旋转机</strong>然后按 "T" 键来选取这个变体。
|
<br>选择<strong>旋转机</strong>然后按 "T" 键来选取这个变体。
|
||||||
reward_miner_chainable:
|
reward_miner_chainable:
|
||||||
title: 链式开采器
|
title: 链式开采器
|
||||||
desc: 您已经解锁了<strong>链式开采器</strong>!它能<strong>转发资源</strong>给其他的开采器,这样您就能更有效率的开采各类资源了!<br><br>
|
desc:
|
||||||
|
您已经解锁了<strong>链式开采器</strong>!它能<strong>转发资源</strong>给其他的开采器,这样您就能更有效率的开采各类资源了!<br><br>
|
||||||
注意:新的开采器已替换了工具栏里旧的开采器!
|
注意:新的开采器已替换了工具栏里旧的开采器!
|
||||||
reward_underground_belt_tier_2:
|
reward_underground_belt_tier_2:
|
||||||
title: 二级隧道
|
title: 二级隧道
|
||||||
@ -699,12 +711,14 @@ storyRewards:
|
|||||||
<br>它<strong>优先从左边</strong>输出,这样您就可以用它做一个<strong>溢流门</strong>了!
|
<br>它<strong>优先从左边</strong>输出,这样您就可以用它做一个<strong>溢流门</strong>了!
|
||||||
reward_freeplay:
|
reward_freeplay:
|
||||||
title: 自由模式
|
title: 自由模式
|
||||||
desc: 成功了!您解锁了<strong>自由模式</strong>!挑战升级!这意味着现在将<strong>随机</strong>生成图形!
|
desc:
|
||||||
|
成功了!您解锁了<strong>自由模式</strong>!挑战升级!这意味着现在将<strong>随机</strong>生成图形!
|
||||||
从现在起,中心基地最为需要的是<strong>产量</strong>,强烈建议您去制造一台能够自动交付所需图形的机器!<br><br>
|
从现在起,中心基地最为需要的是<strong>产量</strong>,强烈建议您去制造一台能够自动交付所需图形的机器!<br><br>
|
||||||
基地会在<strong>电线层</strong>输出需要的图形,您需要去分析图形并在此基础上自动配置您的工厂。
|
基地会在<strong>电线层</strong>输出需要的图形,您需要去分析图形并在此基础上自动配置您的工厂。
|
||||||
reward_blueprints:
|
reward_blueprints:
|
||||||
title: 蓝图
|
title: 蓝图
|
||||||
desc: 您现在可以<strong>复制粘贴</strong>您的工厂的一部分了!按住 CTRL 键并拖动鼠标来选择一块区域,然后按 C 键复制。
|
desc:
|
||||||
|
您现在可以<strong>复制粘贴</strong>您的工厂的一部分了!按住 CTRL 键并拖动鼠标来选择一块区域,然后按 C 键复制。
|
||||||
<br><br>粘贴并<strong>不是免费的</strong>,您需要制造<strong>蓝图图形</strong>来负担。蓝图图形是您刚刚交付的图形。
|
<br><br>粘贴并<strong>不是免费的</strong>,您需要制造<strong>蓝图图形</strong>来负担。蓝图图形是您刚刚交付的图形。
|
||||||
no_reward:
|
no_reward:
|
||||||
title: 下一关
|
title: 下一关
|
||||||
@ -732,7 +746,8 @@ storyRewards:
|
|||||||
<br>注意:您注意到<strong>传送读取器</strong>和<strong>存储器</strong>输出的他们最后读取的物品了吗?试着在显示屏上展示一下!
|
<br>注意:您注意到<strong>传送读取器</strong>和<strong>存储器</strong>输出的他们最后读取的物品了吗?试着在显示屏上展示一下!
|
||||||
reward_constant_signal:
|
reward_constant_signal:
|
||||||
title: 恒定信号
|
title: 恒定信号
|
||||||
desc: 恭喜!您解锁了生成于电线层之上的<strong>恒定信号</strong>,把它连接到<strong>过滤器</strong>时非常有用。
|
desc:
|
||||||
|
恭喜!您解锁了生成于电线层之上的<strong>恒定信号</strong>,把它连接到<strong>过滤器</strong>时非常有用。
|
||||||
<br>比如,它能发出图形、颜色、开关值(1 / 0)的固定信号。
|
<br>比如,它能发出图形、颜色、开关值(1 / 0)的固定信号。
|
||||||
reward_logic_gates:
|
reward_logic_gates:
|
||||||
title: 逻辑门
|
title: 逻辑门
|
||||||
@ -751,7 +766,8 @@ storyRewards:
|
|||||||
<strong>提示</strong>:可在设置中打开电线层教程!
|
<strong>提示</strong>:可在设置中打开电线层教程!
|
||||||
reward_filter:
|
reward_filter:
|
||||||
title: 物品过滤器
|
title: 物品过滤器
|
||||||
desc: 恭喜!您解锁了<strong>物品过滤器</strong>!它会根据在电线层上输入的信号决定是从上面还是右边输出物品。<br><br>
|
desc:
|
||||||
|
恭喜!您解锁了<strong>物品过滤器</strong>!它会根据在电线层上输入的信号决定是从上面还是右边输出物品。<br><br>
|
||||||
您也可以输入开关值(1 / 0)信号来激活或者禁用它。
|
您也可以输入开关值(1 / 0)信号来激活或者禁用它。
|
||||||
reward_demo_end:
|
reward_demo_end:
|
||||||
title: 试玩结束
|
title: 试玩结束
|
||||||
@ -807,7 +823,8 @@ settings:
|
|||||||
light: 浅色
|
light: 浅色
|
||||||
refreshRate:
|
refreshRate:
|
||||||
title: 模拟频率、刷新频率
|
title: 模拟频率、刷新频率
|
||||||
description: 在这里更改刷新频率,这样游戏可以正确地根据您的屏幕进行模拟。但是如果您的电脑性能不佳,提高刷新频率可能降低帧数。注意,60Hz
|
description:
|
||||||
|
在这里更改刷新频率,这样游戏可以正确地根据您的屏幕进行模拟。但是如果您的电脑性能不佳,提高刷新频率可能降低帧数。注意,60Hz
|
||||||
以上的任何频率都会导致游戏卡顿!
|
以上的任何频率都会导致游戏卡顿!
|
||||||
alwaysMultiplace:
|
alwaysMultiplace:
|
||||||
title: 多重放置
|
title: 多重放置
|
||||||
@ -1144,7 +1161,8 @@ mods:
|
|||||||
noModSupport: 您需要在 Steam 平台获得完整版才可以安装游戏模组(Mods)。
|
noModSupport: 您需要在 Steam 平台获得完整版才可以安装游戏模组(Mods)。
|
||||||
togglingComingSoon:
|
togglingComingSoon:
|
||||||
title: 即将开放
|
title: 即将开放
|
||||||
description: 当前只能通过将游戏模组(Mods)文件复制到 mods 文件夹或从 mods 文件夹移除来启用或禁用游戏模组(Mods)。
|
description:
|
||||||
|
当前只能通过将游戏模组(Mods)文件复制到 mods 文件夹或从 mods 文件夹移除来启用或禁用游戏模组(Mods)。
|
||||||
但是,可以切换游戏模组(Mods)已经计划在之后的更新中实现!
|
但是,可以切换游戏模组(Mods)已经计划在之后的更新中实现!
|
||||||
modWebsite: 模组网站
|
modWebsite: 模组网站
|
||||||
browserNoSupport: 由于浏览器功能限制,目前游戏模组(Mods)只能在Steam版本中安装进行。敬请理解!
|
browserNoSupport: 由于浏览器功能限制,目前游戏模组(Mods)只能在Steam版本中安装进行。敬请理解!
|
||||||
|
@ -49,6 +49,8 @@ global:
|
|||||||
space: 空白鍵
|
space: 空白鍵
|
||||||
loggingIn: Logging in
|
loggingIn: Logging in
|
||||||
loadingResources: 下載其他資源 (<percentage> %)
|
loadingResources: 下載其他資源 (<percentage> %)
|
||||||
|
discount: -<percentage>%
|
||||||
|
discountSummerSale: SPECIAL PROMOTION! Offer ends 7 July
|
||||||
demoBanners:
|
demoBanners:
|
||||||
title: 試玩版
|
title: 試玩版
|
||||||
intro: |-
|
intro: |-
|
||||||
@ -94,6 +96,7 @@ mainMenu:
|
|||||||
logout: Logout
|
logout: Logout
|
||||||
noActiveSavegames: No active savegames found - Click play to start a new game!
|
noActiveSavegames: No active savegames found - Click play to start a new game!
|
||||||
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
playFullVersionV2: Bough shapez on Steam? Play the full version in your Browser!
|
||||||
|
playFullVersionStandalone: You can now also play the full version in your Browser!
|
||||||
dialogs:
|
dialogs:
|
||||||
buttons:
|
buttons:
|
||||||
ok: 確認
|
ok: 確認
|
||||||
@ -157,13 +160,15 @@ dialogs:
|
|||||||
desc: 你還沒有解鎖藍圖功能!完成更多的關卡來解鎖藍圖。
|
desc: 你還沒有解鎖藍圖功能!完成更多的關卡來解鎖藍圖。
|
||||||
keybindingsIntroduction:
|
keybindingsIntroduction:
|
||||||
title: 實用按鍵
|
title: 實用按鍵
|
||||||
desc: "這個遊戲有很多能幫助搭建工廠的使用按鍵。 以下是其中的一些,記得在<strong>按鍵設定</strong>中查看其他的! <br><br>
|
desc:
|
||||||
|
"這個遊戲有很多能幫助搭建工廠的使用按鍵。 以下是其中的一些,記得在<strong>按鍵設定</strong>中查看其他的! <br><br>
|
||||||
<code class='keybinding'>CTRL</code> + 拖曳:選擇區域以複製或刪除。 <br> <code
|
<code class='keybinding'>CTRL</code> + 拖曳:選擇區域以複製或刪除。 <br> <code
|
||||||
class='keybinding'>SHIFT</code>: 按住以放置多個。 <br> <code
|
class='keybinding'>SHIFT</code>: 按住以放置多個。 <br> <code
|
||||||
class='keybinding'>ALT</code>: 反向放置輸送帶。 <br>"
|
class='keybinding'>ALT</code>: 反向放置輸送帶。 <br>"
|
||||||
createMarker:
|
createMarker:
|
||||||
title: 建立標記
|
title: 建立標記
|
||||||
desc: 給地圖標記取一個名字。你可以在名字中加入一個<strong>簡短代碼</strong>以加入圖形。(你可以在<link>這裡</link>
|
desc:
|
||||||
|
給地圖標記取一個名字。你可以在名字中加入一個<strong>簡短代碼</strong>以加入圖形。(你可以在<link>這裡</link>
|
||||||
建立簡短代碼。)
|
建立簡短代碼。)
|
||||||
titleEdit: 修改標記
|
titleEdit: 修改標記
|
||||||
markerDemoLimit:
|
markerDemoLimit:
|
||||||
@ -371,15 +376,18 @@ ingame:
|
|||||||
1_1_extractor: 在<strong>圓形礦脈</strong>上放一個<strong>開採機</strong>來採集圓形!
|
1_1_extractor: 在<strong>圓形礦脈</strong>上放一個<strong>開採機</strong>來採集圓形!
|
||||||
1_2_conveyor: 用<strong>輸送帶</strong>將你的開採機連接到基地上!
|
1_2_conveyor: 用<strong>輸送帶</strong>將你的開採機連接到基地上!
|
||||||
<br><br>提示:用你的游標<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>鍵旋轉它們。
|
提示:按住<strong>SHIFT</strong>鍵來放置多個開採機,用<strong>R</strong>鍵旋轉它們。
|
||||||
2_1_place_cutter: "現在放置一個<strong>切割機</strong>並利用它把圓圈切成兩半!<br><br> PS:
|
2_1_place_cutter: "現在放置一個<strong>切割機</strong>並利用它把圓圈切成兩半!<br><br> PS:
|
||||||
不論切割機的方向,它都會把圖形<strong>垂直地</strong>切成兩半。"
|
不論切割機的方向,它都會把圖形<strong>垂直地</strong>切成兩半。"
|
||||||
2_2_place_trash: 切割機可能會<strong>堵塞並停止運作</strong>!<br><br>
|
2_2_place_trash: 切割機可能會<strong>堵塞並停止運作</strong>!<br><br>
|
||||||
用<strong>垃圾桶</strong>把「目前」不需要的部分處理掉。
|
用<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>可以更快選取建築 !"
|
使用<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>並拖曳滑鼠可以計畫輸送帶位置!"
|
選擇輸送帶,按住<strong>SHIFT</strong>並拖曳滑鼠可以計畫輸送帶位置!"
|
||||||
21_1_place_quad_painter: 放置一個<strong>上色機(四向)</strong>並取得一些
|
21_1_place_quad_painter: 放置一個<strong>上色機(四向)</strong>並取得一些
|
||||||
<strong>圓形</strong>、<strong>白色</strong>和<strong>紅色</strong>!
|
<strong>圓形</strong>、<strong>白色</strong>和<strong>紅色</strong>!
|
||||||
@ -618,16 +626,19 @@ buildings:
|
|||||||
transistor:
|
transistor:
|
||||||
default:
|
default:
|
||||||
name: 電晶體
|
name: 電晶體
|
||||||
description: 如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。
|
description:
|
||||||
|
如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。
|
||||||
(「真」訊號代表:形狀訊號、顏色訊號或布林值為1)
|
(「真」訊號代表:形狀訊號、顏色訊號或布林值為1)
|
||||||
mirrored:
|
mirrored:
|
||||||
name: 電晶體
|
name: 電晶體
|
||||||
description: 如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。
|
description:
|
||||||
|
如果基極(側面)的輸入訊號為「真」,則把射極(底部)輸入的真假值複製到集極(頂部)的輸出。
|
||||||
(「真」訊號代表:形狀訊號、顏色訊號或布林值為1)
|
(「真」訊號代表:形狀訊號、顏色訊號或布林值為1)
|
||||||
filter:
|
filter:
|
||||||
default:
|
default:
|
||||||
name: 物件分類器
|
name: 物件分類器
|
||||||
description: 它會依據電路層收到的訊號,從分類器底部輸入的物件如符合輸入信號的會輸出到頂部,不符合的會從右方(交叉標記)排出。
|
description:
|
||||||
|
它會依據電路層收到的訊號,從分類器底部輸入的物件如符合輸入信號的會輸出到頂部,不符合的會從右方(交叉標記)排出。
|
||||||
它也可以被布林值訊號控制。
|
它也可以被布林值訊號控制。
|
||||||
display:
|
display:
|
||||||
default:
|
default:
|
||||||
@ -680,7 +691,8 @@ buildings:
|
|||||||
storyRewards:
|
storyRewards:
|
||||||
reward_cutter_and_trash:
|
reward_cutter_and_trash:
|
||||||
title: 切割圖形
|
title: 切割圖形
|
||||||
desc: <strong>切割機</strong>已解鎖!不論切割機的方向,它都會把圖形<strong>垂直地</strong>切成兩半。<br><br>
|
desc:
|
||||||
|
<strong>切割機</strong>已解鎖!不論切割機的方向,它都會把圖形<strong>垂直地</strong>切成兩半。<br><br>
|
||||||
記得把不需要的部分處理掉,否則切割機會<strong>因為堵塞而停止運作</strong>。
|
記得把不需要的部分處理掉,否則切割機會<strong>因為堵塞而停止運作</strong>。
|
||||||
為此我給你準備了<strong>垃圾桶</strong>,它會把所有放進去的物品銷毀掉。
|
為此我給你準備了<strong>垃圾桶</strong>,它會把所有放進去的物品銷毀掉。
|
||||||
reward_rotater:
|
reward_rotater:
|
||||||
@ -772,7 +784,8 @@ storyRewards:
|
|||||||
<strong>布林值</strong>(1或0)。
|
<strong>布林值</strong>(1或0)。
|
||||||
reward_logic_gates:
|
reward_logic_gates:
|
||||||
title: 邏輯閘
|
title: 邏輯閘
|
||||||
desc: <strong>邏輯閘</strong>已解鎖!你可能覺得無所謂,但其實邏輯閘其實超酷的!<br><br> 有了這些邏輯閘,你可以運算 AND,
|
desc:
|
||||||
|
<strong>邏輯閘</strong>已解鎖!你可能覺得無所謂,但其實邏輯閘其實超酷的!<br><br> 有了這些邏輯閘,你可以運算 AND,
|
||||||
OR, XOR 與 NOT 邏輯。<br><br> 錦上添花,我再送你<strong>電晶體</strong>!
|
OR, XOR 與 NOT 邏輯。<br><br> 錦上添花,我再送你<strong>電晶體</strong>!
|
||||||
reward_virtual_processing:
|
reward_virtual_processing:
|
||||||
title: 虛擬操作
|
title: 虛擬操作
|
||||||
|
24
yarn.lock
24
yarn.lock
@ -1102,18 +1102,6 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" ">= 8"
|
"@types/node" ">= 8"
|
||||||
|
|
||||||
"@openreplay/tracker-fetch@^3.5.3":
|
|
||||||
version "3.5.3"
|
|
||||||
resolved "https://registry.yarnpkg.com/@openreplay/tracker-fetch/-/tracker-fetch-3.5.3.tgz#f4a8308cfffc83918e8d34716bae771cb442b41b"
|
|
||||||
integrity sha512-09vcR1H8178uDpaA2U4u1GvzAQD94ASmvrWM8dVXY0SmZdQHTTmNdkb4xijhkUY99gtJdB8qFgnIr+dP3FsSbg==
|
|
||||||
|
|
||||||
"@openreplay/tracker@^3.5.12":
|
|
||||||
version "3.5.12"
|
|
||||||
resolved "https://registry.yarnpkg.com/@openreplay/tracker/-/tracker-3.5.12.tgz#141205bfefa42c767eaad1938cd206e3d551e171"
|
|
||||||
integrity sha512-R8s87HevJRzC/yujzswll+UyF0kybEax9UJr2eu7Y2nf1QhioD589HwDPlsXb1SxkMDd2yDQYfhbF0FXpCEfQA==
|
|
||||||
dependencies:
|
|
||||||
error-stack-parser "^2.0.6"
|
|
||||||
|
|
||||||
"@sindresorhus/is@^0.7.0":
|
"@sindresorhus/is@^0.7.0":
|
||||||
version "0.7.0"
|
version "0.7.0"
|
||||||
resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz"
|
resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz"
|
||||||
@ -3348,13 +3336,6 @@ error-ex@^1.2.0, error-ex@^1.3.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
is-arrayish "^0.2.1"
|
is-arrayish "^0.2.1"
|
||||||
|
|
||||||
error-stack-parser@^2.0.6:
|
|
||||||
version "2.1.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286"
|
|
||||||
integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==
|
|
||||||
dependencies:
|
|
||||||
stackframe "^1.3.4"
|
|
||||||
|
|
||||||
es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5:
|
es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.5:
|
||||||
version "1.17.5"
|
version "1.17.5"
|
||||||
resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz"
|
resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz"
|
||||||
@ -7819,11 +7800,6 @@ stable@^0.1.8:
|
|||||||
resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz"
|
resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz"
|
||||||
integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
|
integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
|
||||||
|
|
||||||
stackframe@^1.3.4:
|
|
||||||
version "1.3.4"
|
|
||||||
resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310"
|
|
||||||
integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==
|
|
||||||
|
|
||||||
static-extend@^0.1.1:
|
static-extend@^0.1.1:
|
||||||
version "0.1.2"
|
version "0.1.2"
|
||||||
resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz"
|
resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz"
|
||||||
|
Loading…
Reference in New Issue
Block a user