1
.gitignore
vendored
@ -115,3 +115,4 @@ tmp_standalone_files
|
||||
|
||||
# Local config
|
||||
config.local.js
|
||||
.DS_Store
|
||||
|
BIN
artwork/steam/announcement-cover.png
Normal file
After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 17 KiB |
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3c91adcd4e00006ffa4aed4db19d1530bf8c58935b1624d1640fc8e9465a2824
|
||||
size 176993
|
||||
oid sha256:ebde52e75e54d2f4add0cf498c85f059082a0745212a23c4de7328a7d78b00a5
|
||||
size 238170
|
||||
|
BIN
artwork/steam/devlog.png
Normal file
After Width: | Height: | Size: 16 KiB |
3
artwork/steam/devlog.psd
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:746c6cf3f0284798a78c08f77d7e9d0c28b02323081fda42b5fa876a7ade29a0
|
||||
size 205925
|
BIN
artwork/wires/prefab.png
Normal file
After Width: | Height: | Size: 132 KiB |
3
artwork/wires/prefab.psd
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:498dea7314b8720c40dcd8bdd64b1b4a7a35259b2ffe7e896fc3db22878d6414
|
||||
size 1954036
|
@ -269,7 +269,7 @@ gulp.task("build.prod", gulp.series("utils.cleanup", "step.prod.all", "step.post
|
||||
// Builds everything (standalone-beta)
|
||||
gulp.task(
|
||||
"step.standalone-beta.code",
|
||||
gulp.series("sounds.fullbuild", "translations.fullBuild", "js.standalone-beta")
|
||||
gulp.series("sounds.fullbuildHQ", "translations.fullBuild", "js.standalone-beta")
|
||||
);
|
||||
gulp.task("step.standalone-beta.mainbuild", gulp.parallel("step.baseResources", "step.standalone-beta.code"));
|
||||
gulp.task(
|
||||
@ -284,7 +284,7 @@ gulp.task(
|
||||
// Builds everything (standalone-prod)
|
||||
gulp.task(
|
||||
"step.standalone-prod.code",
|
||||
gulp.series("sounds.fullbuild", "translations.fullBuild", "js.standalone-prod")
|
||||
gulp.series("sounds.fullbuildHQ", "translations.fullBuild", "js.standalone-prod")
|
||||
);
|
||||
gulp.task("step.standalone-prod.mainbuild", gulp.parallel("step.baseResources", "step.standalone-prod.code"));
|
||||
gulp.task(
|
||||
|
@ -29,7 +29,7 @@ function gulptasksSounds($, gulp, buildFolder) {
|
||||
.audioChannels(1)
|
||||
.audioFrequency(22050)
|
||||
.audioCodec("libmp3lame")
|
||||
.audioFilters(["volume=0.3"]);
|
||||
.audioFilters(["volume=0.15"]);
|
||||
}),
|
||||
{
|
||||
name: "music",
|
||||
@ -40,6 +40,30 @@ function gulptasksSounds($, gulp, buildFolder) {
|
||||
.pipe(gulp.dest(path.join(builtSoundsDir, "music")));
|
||||
});
|
||||
|
||||
// Encodes the game music in high quality for the standalone
|
||||
gulp.task("sounds.musicHQ", () => {
|
||||
return gulp
|
||||
.src([path.join(soundsDir, "music", "**", "*.wav"), path.join(soundsDir, "music", "**", "*.mp3")])
|
||||
.pipe($.plumber())
|
||||
.pipe(
|
||||
$.cache(
|
||||
$.fluentFfmpeg("mp3", function (cmd) {
|
||||
return cmd
|
||||
.audioBitrate(256)
|
||||
.audioChannels(2)
|
||||
.audioFrequency(44100)
|
||||
.audioCodec("libmp3lame")
|
||||
.audioFilters(["volume=0.15"]);
|
||||
}),
|
||||
{
|
||||
name: "music-high-quality",
|
||||
fileCache,
|
||||
}
|
||||
)
|
||||
)
|
||||
.pipe(gulp.dest(path.join(builtSoundsDir, "music")));
|
||||
});
|
||||
|
||||
// Encodes the ui sounds
|
||||
gulp.task("sounds.sfxGenerateSprites", () => {
|
||||
return gulp
|
||||
@ -91,8 +115,10 @@ function gulptasksSounds($, gulp, buildFolder) {
|
||||
});
|
||||
|
||||
gulp.task("sounds.buildall", gulp.parallel("sounds.music", "sounds.sfx"));
|
||||
gulp.task("sounds.buildallHQ", gulp.parallel("sounds.musicHQ", "sounds.sfx"));
|
||||
|
||||
gulp.task("sounds.fullbuild", gulp.series("sounds.clear", "sounds.buildall", "sounds.copy"));
|
||||
gulp.task("sounds.fullbuildHQ", gulp.series("sounds.clear", "sounds.buildallHQ", "sounds.copy"));
|
||||
gulp.task("sounds.dev", gulp.series("sounds.buildall", "sounds.copy"));
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 111 KiB |
42
res/ui/languages/zh-CN.svg
Normal file
@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<path style="fill:#FF4B55;" d="M400,0H112C50.144,0,0,50.144,0,112v288c0,61.856,50.144,112,112,112h288 c61.856,0,112-50.144,112-112V112C512,50.144,461.856,0,400,0z"/>
|
||||
<g>
|
||||
<path style="fill:#FFE15A;" d="M114.021,87.182l12.722,38.146l40.21,0.312c5.206,0.04,7.365,6.684,3.177,9.777l-32.348,23.887 l12.129,38.339c1.57,4.964-4.081,9.07-8.317,6.042l-32.714-23.383l-32.714,23.383c-4.235,3.027-9.887-1.079-8.317-6.042 l12.129-38.339L47.63,135.417c-4.188-3.093-2.029-9.736,3.177-9.777l40.21-0.312l12.722-38.146 C105.388,82.243,112.374,82.243,114.021,87.182z"/>
|
||||
<path style="fill:#FFE15A;" d="M260.037,96.582l9.122,12.44l14.723-4.604c1.906-0.596,3.474,1.577,2.307,3.198l-9.012,12.52 l8.928,12.58c1.156,1.629-0.427,3.791-2.329,3.183l-14.692-4.702l-9.205,12.378c-1.192,1.603-3.738,0.766-3.746-1.231 l-0.068-15.426l-14.617-4.929c-1.893-0.638-1.883-3.318,0.013-3.944l14.65-4.831l0.171-15.425 C256.305,95.791,258.856,94.971,260.037,96.582z"/>
|
||||
<path style="fill:#FFE15A;" d="M204.496,59.501l15.336,1.667l6.542-13.97c0.847-1.809,3.509-1.499,3.917,0.457l3.154,15.1 l15.308,1.905c1.982,0.247,2.509,2.874,0.776,3.866l-13.387,7.665l2.919,15.147c0.378,1.961-1.958,3.275-3.437,1.933 l-11.427-10.363l-13.504,7.457c-1.748,0.965-3.719-0.85-2.901-2.672l6.324-14.07l-11.265-10.539 C201.393,61.721,202.511,59.285,204.496,59.501z"/>
|
||||
<path style="fill:#FFE15A;" d="M228.739,208.997l-9.122,12.44l-14.723-4.604c-1.906-0.596-3.474,1.577-2.307,3.198l9.012,12.52 l-8.928,12.58c-1.156,1.629,0.426,3.791,2.329,3.183l14.692-4.702l9.205,12.378c1.192,1.603,3.738,0.766,3.746-1.231l0.068-15.426 l14.617-4.929c1.892-0.638,1.883-3.318-0.013-3.943l-14.65-4.831l-0.171-15.425C232.472,208.206,229.92,207.386,228.739,208.997z"/>
|
||||
<path style="fill:#FFE15A;" d="M284.281,174.151l-15.336,1.667l-6.542-13.97c-0.847-1.809-3.509-1.499-3.917,0.456l-3.154,15.1 l-15.308,1.905c-1.982,0.247-2.509,2.874-0.776,3.866l13.387,7.665l-2.919,15.147c-0.378,1.961,1.958,3.275,3.437,1.933 l11.427-10.363l13.504,7.457c1.748,0.965,3.719-0.85,2.901-2.672l-6.324-14.07l11.265-10.539 C287.384,176.371,286.266,173.935,284.281,174.151z"/>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
<g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f61e851402fbc92d6909912fb203c63258fedbdea83e81f7ececb5091f4bee03
|
||||
size 3732550
|
3
res_raw/sounds/music/theme.wav
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8c334a9f100fce4647b4803d2a8270b30e26d53622b3717bdb81b3ea07f84aed
|
||||
size 150286082
|
@ -38,6 +38,10 @@ html {
|
||||
right: 0;
|
||||
|
||||
background: #dee1ea;
|
||||
|
||||
@include DarkThemeOverride {
|
||||
background: $darkModeGameBackground;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
@ -413,6 +417,10 @@ canvas {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
@include DarkThemeOverride {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
.prefab_LoadingTextWithAnimDelayed {
|
||||
|
@ -27,7 +27,7 @@ $icons: notification_saved, notification_success, notification_upgrade;
|
||||
}
|
||||
}
|
||||
|
||||
$languages: en, de, cs, da, et, es-419, fr, it, pt-BR, sv, tr, el, ru, uk, zh-TW, nb, mt-MT, ar, nl, vi, th,
|
||||
$languages: en, de, cs, da, et, es-419, fr, it, pt-BR, sv, tr, el, ru, uk, zh-TW, zh-CN, nb, mt-MT, ar, nl, vi, th,
|
||||
hu, pl, ja, kor, no, pt-PT;
|
||||
|
||||
@each $language in $languages {
|
||||
|
@ -75,6 +75,15 @@
|
||||
@include StyleBelowWidth(700px) {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
&.compact {
|
||||
width: unset !important;
|
||||
grid-template-columns: 1fr;
|
||||
.buildingImage,
|
||||
.description > .text {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ingame_HUD_PlacerVariants {
|
||||
@ -86,6 +95,10 @@
|
||||
flex-direction: column;
|
||||
align-items: flex-end;
|
||||
|
||||
&.compact {
|
||||
@include S(top, 150px);
|
||||
}
|
||||
|
||||
.explanation {
|
||||
text-transform: uppercase;
|
||||
grid-row: 1 / 2;
|
||||
|
@ -21,15 +21,32 @@
|
||||
}
|
||||
}
|
||||
|
||||
$darkModeDialogBg: darken($darkModeGameBackground, 10);
|
||||
|
||||
@include DarkThemeOverride {
|
||||
background: rgba(#33363d, 0.9);
|
||||
background: rgba($darkModeDialogBg, 0.9);
|
||||
@include InlineAnimation(0.12s ease-in-out) {
|
||||
0% {
|
||||
background-color: transparent;
|
||||
opacity: 0.5;
|
||||
}
|
||||
100% {
|
||||
background-color: rgba(#33363d, 0.9);
|
||||
background-color: rgba($darkModeDialogBg, 0.9);
|
||||
}
|
||||
}
|
||||
|
||||
> .dialogInner.optionChooserDialog .optionParent {
|
||||
.option {
|
||||
background: #3d3f42;
|
||||
|
||||
&:hover {
|
||||
background-color: #424348;
|
||||
}
|
||||
|
||||
&.active {
|
||||
background: $colorBlueBright;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -14,6 +14,10 @@
|
||||
}
|
||||
|
||||
> .binding {
|
||||
&:not(.visible) {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
display: inline-grid;
|
||||
@include PlainText;
|
||||
align-items: center;
|
||||
@ -57,50 +61,6 @@
|
||||
@include S(margin-left, 5px);
|
||||
}
|
||||
}
|
||||
|
||||
&:not(.placementActive) .binding.placementOnly,
|
||||
&.mapOverviewActive .binding.placementOnly {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&.placementActive:not(.mapOverviewActive) .noPlacementOnly {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&:not(.mapOverviewActive) .binding.overviewOnly {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&.mapOverviewActive .noOverviewOnly {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&:not(.hasDirectionLock) .binding.directionLock {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&.hasDirectionLock .noDirectionLock {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.binding.placementOnly,
|
||||
&:not(.placementActive) .binding.noPlacementOnly {
|
||||
transform-origin: 0% 50%;
|
||||
@include InlineAnimation(0.3s ease-in-out) {
|
||||
0% {
|
||||
color: $colorRedBright;
|
||||
transform: scale(1.2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.keybinding.builtinKey {
|
||||
transition: all 0.1s ease-in-out;
|
||||
transition-property: background-color, color, border-color;
|
||||
background: $colorRedBright;
|
||||
border-color: $colorRedBright;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
body.uiHidden #ingame_HUD_KeybindingOverlay .binding:not(.hudToggle) {
|
||||
|
@ -1,22 +0,0 @@
|
||||
#ingame_HUD_MassSelector {
|
||||
position: absolute;
|
||||
@include S(top, 50px);
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
background: $ingameHudBg;
|
||||
@include S(padding, 6px, 10px);
|
||||
@include SuperSmallText;
|
||||
color: #fff;
|
||||
// color: #f77;
|
||||
|
||||
.keybinding {
|
||||
vertical-align: middle;
|
||||
@include S(margin, 0, 1px);
|
||||
position: relative;
|
||||
top: unset;
|
||||
left: unset;
|
||||
right: unset;
|
||||
bottom: unset;
|
||||
@include S(margin-top, -2px);
|
||||
}
|
||||
}
|
@ -29,7 +29,7 @@
|
||||
#ingame_HUD_Waypoints {
|
||||
position: absolute;
|
||||
@include S(right, 10px);
|
||||
@include S(top, 60px);
|
||||
@include S(top, 45px);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@include DarkThemeInvert();
|
||||
|
@ -37,7 +37,6 @@
|
||||
@import "ingame_hud/shop";
|
||||
@import "ingame_hud/game_menu";
|
||||
@import "ingame_hud/dialogs";
|
||||
@import "ingame_hud/mass_selector";
|
||||
@import "ingame_hud/vignette_overlay";
|
||||
@import "ingame_hud/statistics";
|
||||
@import "ingame_hud/pinned_shapes";
|
||||
@ -67,7 +66,6 @@ ingame_HUD_PinnedShapes,
|
||||
ingame_HUD_GameMenu,
|
||||
ingame_HUD_KeybindingOverlay,
|
||||
ingame_HUD_Notifications,
|
||||
ingame_HUD_MassSelector,
|
||||
ingame_HUD_DebugInfo,
|
||||
ingame_HUD_EntityDebugger,
|
||||
ingame_HUD_InteractiveTutorial,
|
||||
@ -101,7 +99,6 @@ body.uiHidden {
|
||||
#ingame_HUD_buildings_toolbar,
|
||||
#ingame_HUD_PlacementHints,
|
||||
#ingame_HUD_GameMenu,
|
||||
#ingame_HUD_MassSelector,
|
||||
#ingame_HUD_PinnedShapes,
|
||||
#ingame_HUD_Notifications,
|
||||
#ingame_HUD_TutorialHints,
|
||||
@ -115,6 +112,6 @@ body.modalDialogActive,
|
||||
body.externalAdOpen,
|
||||
body.ingameDialogOpen {
|
||||
> *:not(.ingameDialog):not(.modalDialogParent):not(.loadingDialog):not(.gameLoadingOverlay):not(#ingame_HUD_ModalDialogs):not(.noBlur) {
|
||||
filter: blur(5px) !important;
|
||||
// filter: blur(5px) !important;
|
||||
}
|
||||
}
|
||||
|
@ -350,7 +350,7 @@ button,
|
||||
}
|
||||
|
||||
@mixin DarkThemeOverride {
|
||||
@at-root body[data-theme="dark"] &,
|
||||
@at-root html[data-theme="dark"] &,
|
||||
&[data-theme="dark"] {
|
||||
@content;
|
||||
}
|
||||
|
@ -28,4 +28,10 @@
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
@include DarkThemeOverride {
|
||||
.gameLoadingOverlay {
|
||||
background: $darkModeGameBackground;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -51,4 +51,21 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include DarkThemeOverride {
|
||||
.content {
|
||||
.hint {
|
||||
background: #3b3d40;
|
||||
}
|
||||
|
||||
.category .entry {
|
||||
color: #c0c4c8;
|
||||
border-bottom-color: #888;
|
||||
|
||||
button {
|
||||
filter: invert(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -401,4 +401,44 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include DarkThemeOverride {
|
||||
background: $darkModeGameBackground center center / cover !important;
|
||||
|
||||
.topButtons {
|
||||
filter: invert(1);
|
||||
|
||||
.languageChoose {
|
||||
filter: invert(1);
|
||||
}
|
||||
}
|
||||
|
||||
.mainContainer {
|
||||
background: darken($darkModeGameBackground, 10);
|
||||
|
||||
.savegames .savegame {
|
||||
background: darken($darkModeGameBackground, 15);
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
|
||||
.footer {
|
||||
> a {
|
||||
background: darken($darkModeGameBackground, 10);
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
.author {
|
||||
color: #bdbdbd;
|
||||
|
||||
> a {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
|
||||
.thirdpartyLogo.githubLogo {
|
||||
filter: invert(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -88,4 +88,26 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include DarkThemeOverride {
|
||||
.content {
|
||||
.setting {
|
||||
background: darken($darkModeGameBackground, 10);
|
||||
|
||||
.value.enum {
|
||||
// dirty but works
|
||||
filter: invert(0.85);
|
||||
color: #222;
|
||||
}
|
||||
|
||||
.value.checkbox {
|
||||
background-color: #74767b;
|
||||
|
||||
&.checked {
|
||||
background-color: $colorBlueBright;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -61,4 +61,21 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include DarkThemeOverride {
|
||||
.headerBar {
|
||||
h1 {
|
||||
color: #e2e0db;
|
||||
}
|
||||
|
||||
.backButton {
|
||||
filter: invert(1);
|
||||
}
|
||||
}
|
||||
|
||||
> .container > .content {
|
||||
background: darken($darkModeGameBackground, 3);
|
||||
color: #eee;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -38,6 +38,8 @@ $ingameHudBg: rgba(#333438, 0.9);
|
||||
|
||||
$text3dColor: #f4ffff;
|
||||
|
||||
$darkModeGameBackground: #5c606c;
|
||||
|
||||
// Dialog properties
|
||||
$modalDialogBg: rgba(160, 165, 180, 0.8);
|
||||
$dialogBgColor: lighten($mainBgColor, 10);
|
||||
|
@ -1,8 +1,39 @@
|
||||
export const CHANGELOG = [
|
||||
{
|
||||
version: "1.1.16",
|
||||
version: "1.1.17",
|
||||
date: "unreleased",
|
||||
entries: ["Fix belt planner not placing the last belt"],
|
||||
entries: [
|
||||
"Allow configuring autosave interval and disabling it in the settings",
|
||||
"The soundtrack now has a higher quality on the standalone version than the web version",
|
||||
"Add setting to disable cut/delete warnings (by hexy)",
|
||||
"Fix bug where belts in blueprints don't orient correctly (by hexy)",
|
||||
"Fix camera moving weird after dragging and holding (by hexy)",
|
||||
"Update tutorial image for tier 2 tunnels to explain mix/match (by jimmyshadow1)",
|
||||
"Prevent default actions on all keybindings in the web version so you don't accidentally use builtin browser shortcuts",
|
||||
],
|
||||
},
|
||||
{
|
||||
version: "1.1.16",
|
||||
date: "21.06.2020",
|
||||
entries: [
|
||||
"You can now pickup buildings below your cursor with 'Q'!",
|
||||
"The game soundtrack has been extended! There are now 4 songs with over 13 minutes of playtime from <a href='https://soundcloud.com/pettersumelius' target='blank'>Peppsen</a>!",
|
||||
"Refactor keybindings overlay to show more appropriate keybindings",
|
||||
"Show keybindings for area-select in the upper left instead",
|
||||
"Automatically deselect area when selecting a new building",
|
||||
"Raise markers limit from 14 characters to 71 (by Joker-vD)",
|
||||
"Optimize performance by caching extractor items (by Phlosioneer)",
|
||||
"Added setting to enable compact building infos, which only show ratios and hide the image / description",
|
||||
"Apply dark theme to menu as well (by dengr1065)",
|
||||
"Fix belt planner not placing the last belt",
|
||||
"Fix buildings getting deleted when right clicking while placing a blueprint",
|
||||
"Fix for exporting screenshots for huge bases (It was showing an empty file) (by xSparfuchs)",
|
||||
"Fix buttons not responding when using right click directly after left click (by davidburhans)",
|
||||
"Fix hub marker being hidden by building info panel",
|
||||
"Disable dialog background blur since it can cause performance issues",
|
||||
"Added simplified chinese translations",
|
||||
"Update translations (Thanks to all translators!)",
|
||||
],
|
||||
},
|
||||
{
|
||||
version: "1.1.15",
|
||||
|
@ -325,6 +325,7 @@ export class ClickDetector {
|
||||
// Ignore right clicks
|
||||
this.rightClick.dispatch(position, event);
|
||||
this.cancelled = true;
|
||||
this.clickDownPosition = null;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -191,17 +191,7 @@ export class InputDistributor {
|
||||
*/
|
||||
handleKeyMouseDown(event) {
|
||||
const keyCode = event instanceof MouseEvent ? event.button + 1 : event.keyCode;
|
||||
if (
|
||||
keyCode === 4 || // MB4
|
||||
keyCode === 5 || // MB5
|
||||
keyCode === 9 || // TAB
|
||||
keyCode === 16 || // SHIFT
|
||||
keyCode === 17 || // CTRL
|
||||
keyCode === 18 || // ALT
|
||||
(keyCode >= 112 && keyCode < 122) // F1 - F10
|
||||
) {
|
||||
event.preventDefault();
|
||||
}
|
||||
event.preventDefault();
|
||||
|
||||
const isInitial = !this.keysDown.has(keyCode);
|
||||
this.keysDown.add(keyCode);
|
||||
|
@ -47,10 +47,16 @@ export class AutomaticSave {
|
||||
return;
|
||||
}
|
||||
|
||||
const saveInterval = this.root.app.settings.getAutosaveIntervalSeconds();
|
||||
if (!saveInterval) {
|
||||
// Disabled
|
||||
return;
|
||||
}
|
||||
|
||||
// Check when the last save was, but make sure that if it fails, we don't spam
|
||||
const lastSaveTime = Math_max(this.lastSaveAttempt, this.root.savegame.getRealLastUpdate());
|
||||
|
||||
let secondsSinceLastSave = (Date.now() - lastSaveTime) / 1000.0;
|
||||
const secondsSinceLastSave = (Date.now() - lastSaveTime) / 1000.0;
|
||||
let shouldSave = false;
|
||||
|
||||
switch (this.saveImportance) {
|
||||
@ -61,7 +67,7 @@ export class AutomaticSave {
|
||||
|
||||
case enumSavePriority.regular:
|
||||
// Could determine if there is a good / bad point here
|
||||
shouldSave = secondsSinceLastSave > MIN_INTERVAL_SECS;
|
||||
shouldSave = secondsSinceLastSave > saveInterval;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -28,6 +28,7 @@ const velocitySmoothing = 0.5;
|
||||
const velocityFade = 0.98;
|
||||
const velocityStrength = 0.4;
|
||||
const velocityMax = 20;
|
||||
const ticksBeforeErasingVelocity = 10;
|
||||
|
||||
/**
|
||||
* @enum {string}
|
||||
@ -58,6 +59,8 @@ export class Camera extends BasicSerializableObject {
|
||||
// Input handling
|
||||
this.currentlyMoving = false;
|
||||
this.lastMovingPosition = null;
|
||||
this.lastMovingPositionLastTick = null;
|
||||
this.numTicksStandingStill = null;
|
||||
this.cameraUpdateTimeBucket = 0.0;
|
||||
this.didMoveSinceTouchStart = false;
|
||||
this.currentlyPinching = false;
|
||||
@ -667,6 +670,8 @@ export class Camera extends BasicSerializableObject {
|
||||
this.touchPostMoveVelocity = new Vector(0, 0);
|
||||
this.currentlyMoving = true;
|
||||
this.lastMovingPosition = pos;
|
||||
this.lastMovingPositionLastTick = null;
|
||||
this.numTicksStandingStill = 0;
|
||||
this.didMoveSinceTouchStart = false;
|
||||
}
|
||||
|
||||
@ -716,6 +721,8 @@ export class Camera extends BasicSerializableObject {
|
||||
this.currentlyMoving = false;
|
||||
this.currentlyPinching = false;
|
||||
this.lastMovingPosition = null;
|
||||
this.lastMovingPositionLastTick = null;
|
||||
this.numTicksStandingStill = 0;
|
||||
this.lastPinchPositions = null;
|
||||
this.userInteraction.dispatch(USER_INTERACT_TOUCHEND);
|
||||
this.didMoveSinceTouchStart = false;
|
||||
@ -813,6 +820,23 @@ export class Camera extends BasicSerializableObject {
|
||||
|
||||
this.touchPostMoveVelocity = this.touchPostMoveVelocity.multiplyScalar(velocityFade);
|
||||
|
||||
// Check if the camera is being dragged but standing still: if not, zero out `touchPostMoveVelocity`.
|
||||
if (this.currentlyMoving && this.desiredCenter === null) {
|
||||
if (
|
||||
this.lastMovingPositionLastTick !== null &&
|
||||
this.lastMovingPositionLastTick.equalsEpsilon(this.lastMovingPosition)
|
||||
) {
|
||||
this.numTicksStandingStill++;
|
||||
} else {
|
||||
this.numTicksStandingStill = 0;
|
||||
}
|
||||
this.lastMovingPositionLastTick = this.lastMovingPosition.copy();
|
||||
|
||||
if (this.numTicksStandingStill >= ticksBeforeErasingVelocity) {
|
||||
this.touchPostMoveVelocity.x = 0;
|
||||
this.touchPostMoveVelocity.y = 0;
|
||||
}
|
||||
}
|
||||
// Check influence of past points
|
||||
if (!this.currentlyMoving && !this.currentlyPinching) {
|
||||
const len = this.touchPostMoveVelocity.length();
|
||||
|
@ -1,70 +0,0 @@
|
||||
import { STOP_PROPAGATION } from "../core/signal";
|
||||
import { GameRoot } from "./root";
|
||||
import { ClickDetector } from "../core/click_detector";
|
||||
import { createLogger } from "../core/logging";
|
||||
|
||||
const logger = createLogger("canvas_click_interceptor");
|
||||
|
||||
export class CanvasClickInterceptor {
|
||||
/**
|
||||
* @param {GameRoot} root
|
||||
*/
|
||||
constructor(root) {
|
||||
this.root = root;
|
||||
|
||||
this.root.signals.postLoadHook.add(this.initialize, this);
|
||||
this.root.signals.aboutToDestruct.add(this.cleanup, this);
|
||||
|
||||
/** @type {Array<object>} */
|
||||
this.interceptors = [];
|
||||
}
|
||||
|
||||
initialize() {
|
||||
this.clickDetector = new ClickDetector(this.root.canvas, {
|
||||
applyCssClass: null,
|
||||
captureTouchmove: false,
|
||||
targetOnly: true,
|
||||
preventDefault: true,
|
||||
maxDistance: 13,
|
||||
clickSound: null,
|
||||
});
|
||||
this.clickDetector.click.add(this.onCanvasClick, this);
|
||||
this.clickDetector.rightClick.add(this.onCanvasRightClick, this);
|
||||
|
||||
if (this.root.hud.parts.buildingPlacer) {
|
||||
this.interceptors.push(this.root.hud.parts.buildingPlacer);
|
||||
}
|
||||
|
||||
logger.log("Registered", this.interceptors.length, "interceptors");
|
||||
}
|
||||
|
||||
cleanup() {
|
||||
if (this.clickDetector) {
|
||||
this.clickDetector.cleanup();
|
||||
}
|
||||
this.interceptors = [];
|
||||
}
|
||||
|
||||
onCanvasClick(position, event, cancelAction = false) {
|
||||
if (!this.root.gameInitialized) {
|
||||
logger.warn("Skipping click outside of game initiaization!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.root.hud.hasBlockingOverlayOpen()) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (let i = 0; i < this.interceptors.length; ++i) {
|
||||
const interceptor = this.interceptors[i];
|
||||
if (interceptor.onCanvasClick(position, cancelAction) === STOP_PROPAGATION) {
|
||||
// log(this, "Interceptor", interceptor.constructor.name, "catched click");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onCanvasRightClick(position, event) {
|
||||
this.onCanvasClick(position, event, true);
|
||||
}
|
||||
}
|
@ -12,6 +12,7 @@ export class MinerComponent extends Component {
|
||||
}
|
||||
|
||||
static getSchema() {
|
||||
// cachedMinedItem is not serialized.
|
||||
return {
|
||||
lastMiningTime: types.ufloat,
|
||||
chainable: types.bool,
|
||||
@ -25,8 +26,6 @@ export class MinerComponent extends Component {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
constructor({ chainable = false }) {
|
||||
super();
|
||||
this.lastMiningTime = 0;
|
||||
@ -38,6 +37,11 @@ export class MinerComponent extends Component {
|
||||
* @type {Array<BaseItem>}
|
||||
*/
|
||||
this.itemChainBuffer = [];
|
||||
|
||||
/**
|
||||
* @type {BaseItem}
|
||||
*/
|
||||
this.cachedMinedItem = null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -17,7 +17,6 @@ import { SavegameSerializer } from "../savegame/savegame_serializer";
|
||||
import { AutomaticSave } from "./automatic_save";
|
||||
import { MetaHubBuilding } from "./buildings/hub";
|
||||
import { Camera } from "./camera";
|
||||
import { CanvasClickInterceptor } from "./canvas_click_interceptor";
|
||||
import { EntityManager } from "./entity_manager";
|
||||
import { GameSystemManager } from "./game_system_manager";
|
||||
import { HubGoals } from "./hub_goals";
|
||||
@ -98,7 +97,6 @@ export class GameCore {
|
||||
root.logic = new GameLogic(root);
|
||||
root.hud = new GameHUD(root);
|
||||
root.time = new GameTime(root);
|
||||
root.canvasClickInterceptor = new CanvasClickInterceptor(root);
|
||||
root.automaticSave = new AutomaticSave(root);
|
||||
root.soundProxy = new SoundProxy(root);
|
||||
|
||||
|
@ -34,6 +34,7 @@ import { HUDPartTutorialHints } from "./parts/tutorial_hints";
|
||||
import { HUDWaypoints } from "./parts/waypoints";
|
||||
import { HUDInteractiveTutorial } from "./parts/interactive_tutorial";
|
||||
import { HUDScreenshotExporter } from "./parts/screenshot_exporter";
|
||||
import { Entity } from "../entity";
|
||||
|
||||
export class GameHUD {
|
||||
/**
|
||||
|
@ -176,6 +176,7 @@ export class Blueprint {
|
||||
tryPlace(root, tile) {
|
||||
return root.logic.performBulkOperation(() => {
|
||||
let anyPlaced = false;
|
||||
const beltsToRegisterLater = [];
|
||||
for (let i = 0; i < this.entities.length; ++i) {
|
||||
let placeable = true;
|
||||
const entity = this.entities[i];
|
||||
@ -202,10 +203,10 @@ export class Blueprint {
|
||||
"Can not delete entity for blueprint"
|
||||
);
|
||||
if (!root.logic.tryDeleteBuilding(contents)) {
|
||||
logger.error(
|
||||
assertAlways(
|
||||
false,
|
||||
"Building has replaceable component but is also unremovable in blueprint"
|
||||
);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -215,10 +216,22 @@ export class Blueprint {
|
||||
clone.components.StaticMapEntity.origin.addInplace(tile);
|
||||
|
||||
root.map.placeStaticEntity(clone);
|
||||
root.entityMgr.registerEntity(clone);
|
||||
|
||||
// Registering a belt immediately triggers a recalculation of surrounding belt
|
||||
// directions, which is no good when not all belts have been placed. To resolve
|
||||
// this, only register belts after all entities have been placed.
|
||||
if (!clone.components.Belt) {
|
||||
root.entityMgr.registerEntity(clone);
|
||||
} else {
|
||||
beltsToRegisterLater.push(clone);
|
||||
}
|
||||
anyPlaced = true;
|
||||
}
|
||||
}
|
||||
|
||||
for (let i = 0; i < beltsToRegisterLater.length; i++) {
|
||||
root.entityMgr.registerEntity(beltsToRegisterLater[i]);
|
||||
}
|
||||
return anyPlaced;
|
||||
});
|
||||
}
|
||||
|
@ -1,15 +1,15 @@
|
||||
import { DrawParameters } from "../../../core/draw_parameters";
|
||||
import { STOP_PROPAGATION } from "../../../core/signal";
|
||||
import { TrackedState } from "../../../core/tracked_state";
|
||||
import { makeDiv } from "../../../core/utils";
|
||||
import { Vector } from "../../../core/vector";
|
||||
import { T } from "../../../translations";
|
||||
import { enumMouseButton } from "../../camera";
|
||||
import { KEYMAPPINGS } from "../../key_action_mapper";
|
||||
import { BaseHUDPart } from "../base_hud_part";
|
||||
import { Blueprint } from "./blueprint";
|
||||
import { makeDiv } from "../../../core/utils";
|
||||
import { DynamicDomAttach } from "../dynamic_dom_attach";
|
||||
import { blueprintShape } from "../../upgrades";
|
||||
import { T } from "../../../translations";
|
||||
import { BaseHUDPart } from "../base_hud_part";
|
||||
import { DynamicDomAttach } from "../dynamic_dom_attach";
|
||||
import { Blueprint } from "./blueprint";
|
||||
|
||||
export class HUDBlueprintPlacer extends BaseHUDPart {
|
||||
createElements(parent) {
|
||||
@ -34,9 +34,7 @@ export class HUDBlueprintPlacer extends BaseHUDPart {
|
||||
|
||||
const keyActionMapper = this.root.keyMapper;
|
||||
keyActionMapper.getBinding(KEYMAPPINGS.general.back).add(this.abortPlacement, this);
|
||||
keyActionMapper
|
||||
.getBinding(KEYMAPPINGS.placement.abortBuildingPlacement)
|
||||
.add(this.abortPlacement, this);
|
||||
keyActionMapper.getBinding(KEYMAPPINGS.placement.pipette).add(this.abortPlacement, this);
|
||||
keyActionMapper.getBinding(KEYMAPPINGS.placement.rotateWhilePlacing).add(this.rotateBlueprint, this);
|
||||
keyActionMapper.getBinding(KEYMAPPINGS.massSelect.pasteLastBlueprint).add(this.pasteBlueprint, this);
|
||||
|
||||
@ -62,10 +60,9 @@ export class HUDBlueprintPlacer extends BaseHUDPart {
|
||||
}
|
||||
|
||||
update() {
|
||||
this.domAttach.update(this.currentBlueprint.get());
|
||||
this.trackedCanAfford.set(
|
||||
this.currentBlueprint.get() && this.currentBlueprint.get().canAfford(this.root)
|
||||
);
|
||||
const currentBlueprint = this.currentBlueprint.get();
|
||||
this.domAttach.update(currentBlueprint && currentBlueprint.getCost() > 0);
|
||||
this.trackedCanAfford.set(currentBlueprint && currentBlueprint.canAfford(this.root));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -38,6 +38,10 @@ export class HUDBuildingPlacer extends HUDBuildingPlacerLogic {
|
||||
this.buildingInfoElements.tutorialImage = makeDiv(this.element, null, ["buildingImage"]);
|
||||
|
||||
this.variantsElement = makeDiv(parent, "ingame_HUD_PlacerVariants");
|
||||
|
||||
const compact = this.root.app.settings.getAllSettings().compactBuildingInfo;
|
||||
this.element.classList.toggle("compact", compact);
|
||||
this.variantsElement.classList.toggle("compact", compact);
|
||||
}
|
||||
|
||||
initialize() {
|
||||
|
@ -1,5 +1,6 @@
|
||||
import { Math_abs, Math_degrees, Math_round } from "../../../core/builtins";
|
||||
import { globalConfig } from "../../../core/config";
|
||||
import { gMetaBuildingRegistry } from "../../../core/global_registries";
|
||||
import { Signal, STOP_PROPAGATION } from "../../../core/signal";
|
||||
import { TrackedState } from "../../../core/tracked_state";
|
||||
import { Vector } from "../../../core/vector";
|
||||
@ -9,7 +10,6 @@ import { Entity } from "../../entity";
|
||||
import { KEYMAPPINGS } from "../../key_action_mapper";
|
||||
import { defaultBuildingVariant, MetaBuilding } from "../../meta_building";
|
||||
import { BaseHUDPart } from "../base_hud_part";
|
||||
import { lerp } from "../../../core/utils";
|
||||
|
||||
/**
|
||||
* Contains all logic for the building placer - this doesn't include the rendering
|
||||
@ -97,10 +97,8 @@ export class HUDBuildingPlacerLogic extends BaseHUDPart {
|
||||
keyActionMapper
|
||||
.getBinding(KEYMAPPINGS.placement.switchDirectionLockSide)
|
||||
.add(this.switchDirectionLockSide, this);
|
||||
keyActionMapper
|
||||
.getBinding(KEYMAPPINGS.placement.abortBuildingPlacement)
|
||||
.add(this.abortPlacement, this);
|
||||
keyActionMapper.getBinding(KEYMAPPINGS.general.back).add(this.abortPlacement, this);
|
||||
keyActionMapper.getBinding(KEYMAPPINGS.placement.pipette).add(this.startPipette, this);
|
||||
this.root.gameState.inputReciever.keyup.add(this.checkForDirectionLockSwitch, this);
|
||||
|
||||
// BINDINGS TO GAME EVENTS
|
||||
@ -220,6 +218,125 @@ export class HUDBuildingPlacerLogic extends BaseHUDPart {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts the pipette function
|
||||
*/
|
||||
startPipette() {
|
||||
// Disable in overview
|
||||
if (this.root.camera.getIsMapOverlayActive()) {
|
||||
return;
|
||||
}
|
||||
|
||||
const mousePosition = this.root.app.mousePosition;
|
||||
if (!mousePosition) {
|
||||
// Not on screen
|
||||
return;
|
||||
}
|
||||
|
||||
const worldPos = this.root.camera.screenToWorld(mousePosition);
|
||||
const tile = worldPos.toTileSpace();
|
||||
const contents = this.root.map.getTileContent(tile);
|
||||
|
||||
if (!contents) {
|
||||
this.currentMetaBuilding.set(null);
|
||||
return;
|
||||
}
|
||||
|
||||
// Try to extract the building
|
||||
const extracted = this.hack_reconstructMetaBuildingAndVariantFromBuilding(contents);
|
||||
if (!extracted) {
|
||||
this.currentMetaBuilding.set(null);
|
||||
return;
|
||||
}
|
||||
|
||||
this.currentMetaBuilding.set(extracted.metaBuilding);
|
||||
this.currentVariant.set(extracted.variant);
|
||||
this.currentBaseRotation = contents.components.StaticMapEntity.rotation;
|
||||
|
||||
// Make sure we selected something, and also make sure it's not a special entity
|
||||
// if (contents && !contents.components.Unremovable) {
|
||||
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
* HACK!
|
||||
*
|
||||
* This attempts to reconstruct the meta building and its variant from a given entity
|
||||
* @param {Entity} entity
|
||||
* @returns {{ metaBuilding: MetaBuilding, variant: string }}
|
||||
*/
|
||||
hack_reconstructMetaBuildingAndVariantFromBuilding(entity) {
|
||||
if (entity.components.Hub) {
|
||||
// Hub is not copyable
|
||||
return null;
|
||||
}
|
||||
|
||||
const matches = [];
|
||||
const metaBuildings = gMetaBuildingRegistry.entries;
|
||||
for (let i = 0; i < metaBuildings.length; ++i) {
|
||||
const metaBuilding = metaBuildings[i];
|
||||
const availableVariants = metaBuilding.getAvailableVariants(this.root);
|
||||
checkVariant: for (let k = 0; k < availableVariants.length; ++k) {
|
||||
const variant = availableVariants[k];
|
||||
let unplaced = metaBuilding.createEntity({
|
||||
root: this.root,
|
||||
variant,
|
||||
origin: new Vector(0, 0),
|
||||
rotation: 0,
|
||||
originalRotation: 0,
|
||||
rotationVariant: 0,
|
||||
});
|
||||
|
||||
// Compare if both entities share the same components
|
||||
for (let component in entity.components) {
|
||||
if ((entity.components[component] == null) !== (unplaced.components[component] == null)) {
|
||||
continue checkVariant;
|
||||
}
|
||||
}
|
||||
|
||||
// Check for same item processor
|
||||
if (
|
||||
entity.components.ItemProcessor &&
|
||||
entity.components.ItemProcessor.type != unplaced.components.ItemProcessor.type
|
||||
) {
|
||||
continue checkVariant;
|
||||
}
|
||||
|
||||
// Check for underground belt
|
||||
if (
|
||||
entity.components.UndergroundBelt &&
|
||||
entity.components.UndergroundBelt.tier != unplaced.components.UndergroundBelt.tier
|
||||
) {
|
||||
continue checkVariant;
|
||||
}
|
||||
|
||||
// Check for same sprite key - except for underground belts
|
||||
// since the sprite may vary here
|
||||
if (
|
||||
!entity.components.UndergroundBelt &&
|
||||
entity.components.StaticMapEntity.spriteKey !=
|
||||
unplaced.components.StaticMapEntity.spriteKey
|
||||
) {
|
||||
continue checkVariant;
|
||||
}
|
||||
matches.push({ metaBuilding, variant });
|
||||
}
|
||||
}
|
||||
|
||||
if (matches.length == 1) {
|
||||
const staticEntity = entity.components.StaticMapEntity;
|
||||
const key = staticEntity.spriteKey || staticEntity.blueprintSpriteKey;
|
||||
assert(
|
||||
key &&
|
||||
key.includes(matches[0].metaBuilding.id) &&
|
||||
(matches[0].variant === defaultBuildingVariant || key.includes(matches[0].variant))
|
||||
);
|
||||
return matches[0];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
switchDirectionLockSide() {
|
||||
this.currentDirectionLockSide = 1 - this.currentDirectionLockSide;
|
||||
}
|
||||
@ -237,28 +354,6 @@ export class HUDBuildingPlacerLogic extends BaseHUDPart {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Canvas click handler
|
||||
* @param {Vector} mousePos
|
||||
* @param {boolean} cancelAction
|
||||
*/
|
||||
onCanvasClick(mousePos, cancelAction = false) {
|
||||
if (cancelAction) {
|
||||
if (this.currentMetaBuilding.get()) {
|
||||
this.currentMetaBuilding.set(null);
|
||||
} else {
|
||||
this.deleteBelowCursor();
|
||||
}
|
||||
return STOP_PROPAGATION;
|
||||
}
|
||||
|
||||
if (!this.currentMetaBuilding.get()) {
|
||||
return;
|
||||
}
|
||||
|
||||
return STOP_PROPAGATION;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tries to place the current building at the given tile
|
||||
* @param {Vector} tile
|
||||
@ -479,13 +574,18 @@ export class HUDBuildingPlacerLogic extends BaseHUDPart {
|
||||
}
|
||||
|
||||
// Deletion
|
||||
if (button === enumMouseButton.right && !this.currentMetaBuilding.get()) {
|
||||
if (button === enumMouseButton.right && !metaBuilding) {
|
||||
this.currentlyDragging = true;
|
||||
this.currentlyDeleting = true;
|
||||
this.lastDragTile = this.root.camera.screenToWorld(pos).toTileSpace();
|
||||
this.currentMetaBuilding.set(null);
|
||||
this.deleteBelowCursor();
|
||||
return STOP_PROPAGATION;
|
||||
}
|
||||
|
||||
// Cancel placement
|
||||
if (button === enumMouseButton.right && metaBuilding) {
|
||||
this.currentMetaBuilding.set(null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,123 +1,316 @@
|
||||
import { makeDiv } from "../../../core/utils";
|
||||
import { T } from "../../../translations";
|
||||
import { getStringForKeyCode, KEYMAPPINGS } from "../../key_action_mapper";
|
||||
import {
|
||||
getStringForKeyCode,
|
||||
KEYCODE_LMB,
|
||||
KEYCODE_MMB,
|
||||
KEYCODE_RMB,
|
||||
KEYMAPPINGS,
|
||||
} from "../../key_action_mapper";
|
||||
import { BaseHUDPart } from "../base_hud_part";
|
||||
import { TrackedState } from "../../../core/tracked_state";
|
||||
import { MetaBuilding } from "../../meta_building";
|
||||
import { DynamicDomAttach } from "../dynamic_dom_attach";
|
||||
|
||||
const DIVIDER_TOKEN = "/";
|
||||
const ADDER_TOKEN = "+";
|
||||
|
||||
/**
|
||||
* @typedef {{ keyCode: number }} KeyCode
|
||||
*/
|
||||
|
||||
/**
|
||||
* @typedef {{
|
||||
* condition: () => boolean,
|
||||
* keys: Array<KeyCode|number|string>,
|
||||
* label: string,
|
||||
* cachedElement?: HTMLElement,
|
||||
* cachedVisibility?: boolean
|
||||
* }} KeyBinding
|
||||
*/
|
||||
|
||||
export class HUDKeybindingOverlay extends BaseHUDPart {
|
||||
initialize() {
|
||||
this.root.hud.signals.selectedPlacementBuildingChanged.add(
|
||||
this.onSelectedBuildingForPlacementChanged,
|
||||
this
|
||||
);
|
||||
initialize() {}
|
||||
|
||||
this.trackedMapOverviewActive = new TrackedState(this.applyCssClasses, this);
|
||||
/**
|
||||
* HELPER / Returns if there is a building selected for placement
|
||||
* @returns {boolean}
|
||||
*/
|
||||
get buildingPlacementActive() {
|
||||
const placer = this.root.hud.parts.buildingPlacer;
|
||||
return !this.mapOverviewActive && placer && !!placer.currentMetaBuilding.get();
|
||||
}
|
||||
|
||||
createElements(parent) {
|
||||
const mapper = this.root.keyMapper;
|
||||
|
||||
const getKeycode = id => {
|
||||
return getStringForKeyCode(mapper.getBinding(id).keyCode);
|
||||
};
|
||||
|
||||
this.element = makeDiv(
|
||||
parent,
|
||||
"ingame_HUD_KeybindingOverlay",
|
||||
[],
|
||||
`
|
||||
|
||||
<div class="binding">
|
||||
<code class="keybinding leftMouse noPlacementOnly"></code><i class="noPlacementOnly"></i>
|
||||
<code class="keybinding">${getKeycode(KEYMAPPINGS.navigation.mapMoveUp)}</code>
|
||||
<code class="keybinding">${getKeycode(KEYMAPPINGS.navigation.mapMoveLeft)}</code>
|
||||
<code class="keybinding">${getKeycode(KEYMAPPINGS.navigation.mapMoveDown)}</code>
|
||||
<code class="keybinding">${getKeycode(KEYMAPPINGS.navigation.mapMoveRight)}</code>
|
||||
<label>${T.ingame.keybindingsOverlay.moveMap}</label>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="binding noPlacementOnly noOverviewOnly">
|
||||
<code class="keybinding rightMouse"></code>
|
||||
<label>${T.ingame.keybindingsOverlay.delete}</label>
|
||||
</div>
|
||||
|
||||
<div class="binding noPlacementOnly overviewOnly">
|
||||
<code class="keybinding rightMouse"></code>
|
||||
<label>${T.ingame.keybindingsOverlay.createMarker}</label>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="binding noPlacementOnly">
|
||||
<code class="keybinding builtinKey">${getKeycode(
|
||||
KEYMAPPINGS.massSelect.massSelectStart
|
||||
)}</code>+
|
||||
<code class="keybinding leftMouse"></code>
|
||||
<label>${T.ingame.keybindingsOverlay.selectBuildings}</label>
|
||||
</div>
|
||||
|
||||
<div class="binding placementOnly">
|
||||
<code class="keybinding leftMouse"></code>
|
||||
<label>${T.ingame.keybindingsOverlay.placeBuilding}</label>
|
||||
</div>
|
||||
|
||||
<div class="binding placementOnly">
|
||||
<code class="keybinding rightMouse"></code><i></i>
|
||||
<code class="keybinding">${getKeycode(KEYMAPPINGS.placement.abortBuildingPlacement)}</code>
|
||||
<label>${T.ingame.keybindingsOverlay.stopPlacement}</label>
|
||||
</div>
|
||||
|
||||
<div class="binding placementOnly">
|
||||
<code class="keybinding">${getKeycode(KEYMAPPINGS.placement.rotateWhilePlacing)}</code>
|
||||
<label>${T.ingame.keybindingsOverlay.rotateBuilding}</label>
|
||||
</div>
|
||||
|
||||
` +
|
||||
(this.root.app.settings.getAllSettings().alwaysMultiplace
|
||||
? ""
|
||||
: `
|
||||
<div class="binding placementOnly noDirectionLock">
|
||||
<code class="keybinding builtinKey shift">${getKeycode(
|
||||
KEYMAPPINGS.placementModifiers.placeMultiple
|
||||
)}</code>
|
||||
<label>${T.ingame.keybindingsOverlay.placeMultiple}</label>
|
||||
</div>`) +
|
||||
`
|
||||
|
||||
<div class="binding placementOnly directionLock">
|
||||
<code class="keybinding builtinKey shift">${getKeycode(
|
||||
KEYMAPPINGS.placementModifiers.lockBeltDirection
|
||||
)}</code>
|
||||
<label>${T.ingame.keybindingsOverlay.lockBeltDirection}</label>
|
||||
</div>
|
||||
|
||||
<div class="binding placementOnly directionLock">
|
||||
<code class="keybinding">${getKeycode(KEYMAPPINGS.placement.switchDirectionLockSide)}</code>
|
||||
<label>${T.ingame.keybindingsOverlay.plannerSwitchSide}</label>
|
||||
</div>
|
||||
`
|
||||
/**
|
||||
* HELPER / Returns if there is a building selected for placement and
|
||||
* it supports the belt planner
|
||||
* @returns {boolean}
|
||||
*/
|
||||
get buildingPlacementSupportsBeltPlanner() {
|
||||
const placer = this.root.hud.parts.buildingPlacer;
|
||||
return (
|
||||
!this.mapOverviewActive &&
|
||||
placer &&
|
||||
placer.currentMetaBuilding.get() &&
|
||||
placer.currentMetaBuilding.get().getHasDirectionLockAvailable()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {MetaBuilding} selectedMetaBuilding
|
||||
* HELPER / Returns if there is a building selected for placement and
|
||||
* it has multiplace enabled by default
|
||||
* @returns {boolean}
|
||||
*/
|
||||
onSelectedBuildingForPlacementChanged(selectedMetaBuilding) {
|
||||
this.element.classList.toggle("placementActive", !!selectedMetaBuilding);
|
||||
this.element.classList.toggle(
|
||||
"hasDirectionLock",
|
||||
selectedMetaBuilding && selectedMetaBuilding.getHasDirectionLockAvailable()
|
||||
get buildingPlacementStaysInPlacement() {
|
||||
const placer = this.root.hud.parts.buildingPlacer;
|
||||
return (
|
||||
!this.mapOverviewActive &&
|
||||
placer &&
|
||||
placer.currentMetaBuilding.get() &&
|
||||
placer.currentMetaBuilding.get().getStayInPlacementMode()
|
||||
);
|
||||
}
|
||||
|
||||
applyCssClasses() {
|
||||
this.element.classList.toggle("mapOverviewActive", this.root.camera.getIsMapOverlayActive());
|
||||
/**
|
||||
* HELPER / Returns if there is a blueprint selected for placement
|
||||
* @returns {boolean}
|
||||
*/
|
||||
get blueprintPlacementActive() {
|
||||
const placer = this.root.hud.parts.blueprintPlacer;
|
||||
return placer && !!placer.currentBlueprint.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* HELPER / Returns if the belt planner is currently active
|
||||
* @returns {boolean}
|
||||
*/
|
||||
get beltPlannerActive() {
|
||||
const placer = this.root.hud.parts.buildingPlacer;
|
||||
return !this.mapOverviewActive && placer && placer.isDirectionLockActive;
|
||||
}
|
||||
|
||||
/**
|
||||
* HELPER / Returns if there is a last blueprint available
|
||||
* @returns {boolean}
|
||||
*/
|
||||
get lastBlueprintAvailable() {
|
||||
const placer = this.root.hud.parts.blueprintPlacer;
|
||||
return placer && !!placer.lastBlueprintUsed;
|
||||
}
|
||||
|
||||
/**
|
||||
* HELPER / Returns if there is anything selected on the map
|
||||
* @returns {boolean}
|
||||
*/
|
||||
get anythingSelectedOnMap() {
|
||||
const selector = this.root.hud.parts.massSelector;
|
||||
return selector && selector.selectedUids.size > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* HELPER / Returns if there is a building or blueprint selected for placement
|
||||
* @returns {boolean}
|
||||
*/
|
||||
get anyPlacementActive() {
|
||||
return this.buildingPlacementActive || this.blueprintPlacementActive;
|
||||
}
|
||||
|
||||
/**
|
||||
* HELPER / Returns if the map overview is active
|
||||
* @returns {boolean}
|
||||
*/
|
||||
get mapOverviewActive() {
|
||||
return this.root.camera.getIsMapOverlayActive();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the element
|
||||
* @param {HTMLElement} parent
|
||||
*/
|
||||
createElements(parent) {
|
||||
const mapper = this.root.keyMapper;
|
||||
const k = KEYMAPPINGS;
|
||||
|
||||
/** @type {Array<KeyBinding>} */
|
||||
this.keybindings = [
|
||||
{
|
||||
// Move map - Including mouse
|
||||
label: T.ingame.keybindingsOverlay.moveMap,
|
||||
keys: [
|
||||
KEYCODE_LMB,
|
||||
DIVIDER_TOKEN,
|
||||
k.navigation.mapMoveUp,
|
||||
k.navigation.mapMoveLeft,
|
||||
k.navigation.mapMoveDown,
|
||||
k.navigation.mapMoveRight,
|
||||
],
|
||||
condition: () => !this.anyPlacementActive,
|
||||
},
|
||||
|
||||
{
|
||||
// Move map - No mouse
|
||||
label: T.ingame.keybindingsOverlay.moveMap,
|
||||
keys: [
|
||||
k.navigation.mapMoveUp,
|
||||
k.navigation.mapMoveLeft,
|
||||
k.navigation.mapMoveDown,
|
||||
k.navigation.mapMoveRight,
|
||||
],
|
||||
condition: () => this.anyPlacementActive,
|
||||
},
|
||||
|
||||
{
|
||||
// [OVERVIEW] Create marker with right click
|
||||
label: T.ingame.keybindingsOverlay.createMarker,
|
||||
keys: [KEYCODE_RMB],
|
||||
condition: () => this.mapOverviewActive && !this.blueprintPlacementActive,
|
||||
},
|
||||
|
||||
{
|
||||
// Pipette
|
||||
label: T.ingame.keybindingsOverlay.pipette,
|
||||
keys: [k.placement.pipette],
|
||||
condition: () => !this.mapOverviewActive,
|
||||
},
|
||||
|
||||
{
|
||||
// Cancel placement
|
||||
label: T.ingame.keybindingsOverlay.stopPlacement,
|
||||
keys: [KEYCODE_RMB],
|
||||
condition: () => this.anyPlacementActive,
|
||||
},
|
||||
|
||||
{
|
||||
// Delete with right click
|
||||
label: T.ingame.keybindingsOverlay.delete,
|
||||
keys: [KEYCODE_RMB],
|
||||
condition: () =>
|
||||
!this.anyPlacementActive && !this.mapOverviewActive && !this.anythingSelectedOnMap,
|
||||
},
|
||||
|
||||
{
|
||||
// Area select
|
||||
label: T.ingame.keybindingsOverlay.selectBuildings,
|
||||
keys: [k.massSelect.massSelectStart, ADDER_TOKEN, KEYCODE_LMB],
|
||||
condition: () => !this.anyPlacementActive && !this.anythingSelectedOnMap,
|
||||
},
|
||||
|
||||
{
|
||||
// Place building
|
||||
label: T.ingame.keybindingsOverlay.placeBuilding,
|
||||
keys: [KEYCODE_LMB],
|
||||
condition: () => this.anyPlacementActive,
|
||||
},
|
||||
|
||||
{
|
||||
// Rotate
|
||||
label: T.ingame.keybindingsOverlay.rotateBuilding,
|
||||
keys: [k.placement.rotateWhilePlacing],
|
||||
condition: () => this.anyPlacementActive && !this.beltPlannerActive,
|
||||
},
|
||||
|
||||
{
|
||||
// [BELT PLANNER] Flip Side
|
||||
label: T.ingame.keybindingsOverlay.plannerSwitchSide,
|
||||
keys: [k.placement.switchDirectionLockSide],
|
||||
condition: () => this.beltPlannerActive,
|
||||
},
|
||||
|
||||
{
|
||||
// Place last blueprint
|
||||
label: T.ingame.keybindingsOverlay.pasteLastBlueprint,
|
||||
keys: [k.massSelect.pasteLastBlueprint],
|
||||
condition: () => !this.blueprintPlacementActive && this.lastBlueprintAvailable,
|
||||
},
|
||||
|
||||
{
|
||||
// Belt planner
|
||||
label: T.ingame.keybindingsOverlay.lockBeltDirection,
|
||||
keys: [k.placementModifiers.lockBeltDirection],
|
||||
condition: () => this.buildingPlacementSupportsBeltPlanner && !this.beltPlannerActive,
|
||||
},
|
||||
|
||||
{
|
||||
// [SELECTION] Destroy
|
||||
label: T.ingame.keybindingsOverlay.delete,
|
||||
keys: [k.massSelect.confirmMassDelete],
|
||||
condition: () => this.anythingSelectedOnMap,
|
||||
},
|
||||
|
||||
{
|
||||
// [SELECTION] Cancel
|
||||
label: T.ingame.keybindingsOverlay.clearSelection,
|
||||
keys: [k.general.back],
|
||||
condition: () => this.anythingSelectedOnMap,
|
||||
},
|
||||
{
|
||||
// [SELECTION] Cut
|
||||
label: T.ingame.keybindingsOverlay.cutSelection,
|
||||
keys: [k.massSelect.massSelectCut],
|
||||
condition: () => this.anythingSelectedOnMap,
|
||||
},
|
||||
|
||||
{
|
||||
// [SELECTION] Copy
|
||||
label: T.ingame.keybindingsOverlay.copySelection,
|
||||
keys: [k.massSelect.massSelectCopy],
|
||||
condition: () => this.anythingSelectedOnMap,
|
||||
},
|
||||
];
|
||||
|
||||
if (!this.root.app.settings.getAllSettings().alwaysMultiplace) {
|
||||
this.keybindings.push({
|
||||
// Multiplace
|
||||
label: T.ingame.keybindingsOverlay.placeMultiple,
|
||||
keys: [k.placementModifiers.placeMultiple],
|
||||
condition: () => this.anyPlacementActive && !this.buildingPlacementStaysInPlacement,
|
||||
});
|
||||
}
|
||||
|
||||
this.element = makeDiv(parent, "ingame_HUD_KeybindingOverlay", []);
|
||||
|
||||
for (let i = 0; i < this.keybindings.length; ++i) {
|
||||
let html = "";
|
||||
const handle = this.keybindings[i];
|
||||
|
||||
for (let k = 0; k < handle.keys.length; ++k) {
|
||||
const key = handle.keys[k];
|
||||
|
||||
switch (key) {
|
||||
case KEYCODE_LMB:
|
||||
html += `<code class="keybinding leftMouse"></code>`;
|
||||
break;
|
||||
case KEYCODE_RMB:
|
||||
html += `<code class="keybinding rightMouse"></code>`;
|
||||
break;
|
||||
case KEYCODE_MMB:
|
||||
html += `<code class="keybinding middleMouse"></code>`;
|
||||
break;
|
||||
case DIVIDER_TOKEN:
|
||||
html += `<i></i>`;
|
||||
break;
|
||||
case ADDER_TOKEN:
|
||||
html += `+`;
|
||||
break;
|
||||
default:
|
||||
html += `<code class="keybinding">${getStringForKeyCode(
|
||||
mapper.getBinding(/** @type {KeyCode} */ (key)).keyCode
|
||||
)}</code>`;
|
||||
}
|
||||
}
|
||||
html += `<label>${handle.label}</label>`;
|
||||
|
||||
handle.cachedElement = makeDiv(this.element, null, ["binding"], html);
|
||||
handle.cachedVisibility = false;
|
||||
}
|
||||
}
|
||||
|
||||
update() {
|
||||
this.trackedMapOverviewActive.set(this.root.camera.getIsMapOverlayActive());
|
||||
for (let i = 0; i < this.keybindings.length; ++i) {
|
||||
const handle = this.keybindings[i];
|
||||
const visibility = handle.condition();
|
||||
if (visibility !== handle.cachedVisibility) {
|
||||
handle.cachedVisibility = visibility;
|
||||
handle.cachedElement.classList.toggle("visible", visibility);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17,29 +17,7 @@ import { enumHubGoalRewards } from "../../tutorial_goals";
|
||||
const logger = createLogger("hud/mass_selector");
|
||||
|
||||
export class HUDMassSelector extends BaseHUDPart {
|
||||
createElements(parent) {
|
||||
const removalKeybinding = this.root.keyMapper
|
||||
.getBinding(KEYMAPPINGS.massSelect.confirmMassDelete)
|
||||
.getKeyCodeString();
|
||||
const abortKeybinding = this.root.keyMapper.getBinding(KEYMAPPINGS.general.back).getKeyCodeString();
|
||||
const cutKeybinding = this.root.keyMapper
|
||||
.getBinding(KEYMAPPINGS.massSelect.massSelectCut)
|
||||
.getKeyCodeString();
|
||||
const copyKeybinding = this.root.keyMapper
|
||||
.getBinding(KEYMAPPINGS.massSelect.massSelectCopy)
|
||||
.getKeyCodeString();
|
||||
|
||||
this.element = makeDiv(
|
||||
parent,
|
||||
"ingame_HUD_MassSelector",
|
||||
[],
|
||||
T.ingame.massSelect.infoText
|
||||
.replace("<keyDelete>", `<code class='keybinding'>${removalKeybinding}</code>`)
|
||||
.replace("<keyCut>", `<code class='keybinding'>${cutKeybinding}</code>`)
|
||||
.replace("<keyCopy>", `<code class='keybinding'>${copyKeybinding}</code>`)
|
||||
.replace("<keyCancel>", `<code class='keybinding'>${abortKeybinding}</code>`)
|
||||
);
|
||||
}
|
||||
createElements(parent) {}
|
||||
|
||||
initialize() {
|
||||
this.deletionMarker = Loader.getSprite("sprites/misc/deletion_marker.png");
|
||||
@ -49,6 +27,7 @@ export class HUDMassSelector extends BaseHUDPart {
|
||||
this.selectedUids = new Set();
|
||||
|
||||
this.root.signals.entityQueuedForDestroy.add(this.onEntityDestroyed, this);
|
||||
this.root.hud.signals.pasteBlueprintRequested.add(this.clearSelection, this);
|
||||
|
||||
this.root.camera.downPreHandler.add(this.onMouseDown, this);
|
||||
this.root.camera.movePreHandler.add(this.onMouseMove, this);
|
||||
@ -61,7 +40,7 @@ export class HUDMassSelector extends BaseHUDPart {
|
||||
this.root.keyMapper.getBinding(KEYMAPPINGS.massSelect.massSelectCut).add(this.confirmCut, this);
|
||||
this.root.keyMapper.getBinding(KEYMAPPINGS.massSelect.massSelectCopy).add(this.startCopy, this);
|
||||
|
||||
this.domAttach = new DynamicDomAttach(this.root, this.element);
|
||||
this.root.hud.signals.selectedPlacementBuildingChanged.add(this.clearSelection, this);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -83,15 +62,25 @@ export class HUDMassSelector extends BaseHUDPart {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears the entire selection
|
||||
*/
|
||||
clearSelection() {
|
||||
this.selectedUids = new Set();
|
||||
}
|
||||
|
||||
confirmDelete() {
|
||||
if (this.selectedUids.size > 100) {
|
||||
if (
|
||||
!this.root.app.settings.getAllSettings().disableCutDeleteWarnings &&
|
||||
this.selectedUids.size > 100
|
||||
) {
|
||||
const { ok } = this.root.hud.parts.dialogs.showWarning(
|
||||
T.dialogs.massDeleteConfirm.title,
|
||||
T.dialogs.massDeleteConfirm.desc.replace(
|
||||
"<count>",
|
||||
"" + formatBigNumberFull(this.selectedUids.size)
|
||||
),
|
||||
["cancel:good", "ok:bad"]
|
||||
["cancel:good:escape", "ok:bad:enter"]
|
||||
);
|
||||
ok.add(() => this.doDelete());
|
||||
} else {
|
||||
@ -134,14 +123,17 @@ export class HUDMassSelector extends BaseHUDPart {
|
||||
T.dialogs.blueprintsNotUnlocked.title,
|
||||
T.dialogs.blueprintsNotUnlocked.desc
|
||||
);
|
||||
} else if (this.selectedUids.size > 100) {
|
||||
} else if (
|
||||
!this.root.app.settings.getAllSettings().disableCutDeleteWarnings &&
|
||||
this.selectedUids.size > 100
|
||||
) {
|
||||
const { ok } = this.root.hud.parts.dialogs.showWarning(
|
||||
T.dialogs.massCutConfirm.title,
|
||||
T.dialogs.massCutConfirm.desc.replace(
|
||||
"<count>",
|
||||
"" + formatBigNumberFull(this.selectedUids.size)
|
||||
),
|
||||
["cancel:good", "ok:bad"]
|
||||
["cancel:good:escape", "ok:bad:enter"]
|
||||
);
|
||||
ok.add(() => this.doCut());
|
||||
} else {
|
||||
@ -230,10 +222,6 @@ export class HUDMassSelector extends BaseHUDPart {
|
||||
}
|
||||
}
|
||||
|
||||
update() {
|
||||
this.domAttach.update(this.selectedUids.size > 0);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {DrawParameters} parameters
|
||||
|
@ -5,7 +5,7 @@ import { T } from "../../../translations";
|
||||
import { createLogger } from "../../../core/logging";
|
||||
import { StaticMapEntityComponent } from "../../components/static_map_entity";
|
||||
import { Vector } from "../../../core/vector";
|
||||
import { Math_max, Math_min } from "../../../core/builtins";
|
||||
import { Math_max, Math_min, Math_floor } from "../../../core/builtins";
|
||||
import { makeOffscreenBuffer } from "../../../core/buffer_utils";
|
||||
import { DrawParameters } from "../../../core/draw_parameters";
|
||||
import { Rectangle } from "../../../core/rectangle";
|
||||
@ -56,7 +56,14 @@ export class HUDScreenshotExporter extends BaseHUDPart {
|
||||
const dimensions = maxChunk.sub(minChunk);
|
||||
logger.log("Dimensions:", dimensions);
|
||||
|
||||
const chunkSizePixels = 128;
|
||||
let chunkSizePixels = 128;
|
||||
const maxDimensions = Math_max(dimensions.x, dimensions.y);
|
||||
|
||||
if (maxDimensions > 128) {
|
||||
chunkSizePixels = Math_max(1, Math_floor(128 * (128 / maxDimensions)));
|
||||
}
|
||||
logger.log("ChunkSizePixels:", chunkSizePixels);
|
||||
|
||||
const chunkScale = chunkSizePixels / (globalConfig.mapChunkSize * globalConfig.tileSize);
|
||||
logger.log("Scale:", chunkScale);
|
||||
|
||||
|
@ -28,6 +28,8 @@ import { ShapeDefinition } from "../../shape_definition";
|
||||
*/
|
||||
const SHAPE_LABEL_PLACEHOLDER = " ";
|
||||
|
||||
const MAX_LABEL_LENGTH = 71;
|
||||
|
||||
export class HUDWaypoints extends BaseHUDPart {
|
||||
/**
|
||||
* Creates the overview of waypoints
|
||||
@ -220,7 +222,8 @@ export class HUDWaypoints extends BaseHUDPart {
|
||||
id: "markerName",
|
||||
label: null,
|
||||
placeholder: "",
|
||||
validator: val => val.length > 0 && (val.length < 15 || ShapeDefinition.isValidShortKey(val)),
|
||||
validator: val =>
|
||||
val.length > 0 && (val.length < MAX_LABEL_LENGTH || ShapeDefinition.isValidShortKey(val)),
|
||||
});
|
||||
const dialog = new DialogWithForm({
|
||||
app: this.root.app,
|
||||
@ -270,8 +273,8 @@ export class HUDWaypoints extends BaseHUDPart {
|
||||
return 1;
|
||||
}
|
||||
return this.getWaypointLabel(a)
|
||||
.padEnd(20, "0")
|
||||
.localeCompare(this.getWaypointLabel(b).padEnd(20, "0"));
|
||||
.padEnd(MAX_LABEL_LENGTH, "0")
|
||||
.localeCompare(this.getWaypointLabel(b).padEnd(MAX_LABEL_LENGTH, "0"));
|
||||
});
|
||||
|
||||
// Show notification about creation
|
||||
|
@ -24,7 +24,7 @@ export const KEYMAPPINGS = {
|
||||
menuOpenStats: { keyCode: key("G") },
|
||||
|
||||
toggleHud: { keyCode: 113 }, // F2
|
||||
exportScreenshot: { keyCode: 114 }, // F3
|
||||
exportScreenshot: { keyCode: 114 }, // F3PS
|
||||
toggleFPSInfo: { keyCode: 115 }, // F4
|
||||
},
|
||||
|
||||
@ -56,7 +56,7 @@ export const KEYMAPPINGS = {
|
||||
},
|
||||
|
||||
placement: {
|
||||
abortBuildingPlacement: { keyCode: key("Q") },
|
||||
pipette: { keyCode: key("Q") },
|
||||
rotateWhilePlacing: { keyCode: key("R") },
|
||||
rotateInverseModifier: { keyCode: 16 }, // SHIFT
|
||||
cycleBuildingVariants: { keyCode: key("T") },
|
||||
@ -88,6 +88,10 @@ for (const categoryId in KEYMAPPINGS) {
|
||||
}
|
||||
}
|
||||
|
||||
export const KEYCODE_LMB = 1;
|
||||
export const KEYCODE_MMB = 2;
|
||||
export const KEYCODE_RMB = 3;
|
||||
|
||||
/**
|
||||
* Returns a keycode -> string
|
||||
* @param {number} code
|
||||
@ -95,11 +99,11 @@ for (const categoryId in KEYMAPPINGS) {
|
||||
*/
|
||||
export function getStringForKeyCode(code) {
|
||||
switch (code) {
|
||||
case 1:
|
||||
case KEYCODE_LMB:
|
||||
return "LMB";
|
||||
case 2:
|
||||
case KEYCODE_MMB:
|
||||
return "MMB";
|
||||
case 3:
|
||||
case KEYCODE_RMB:
|
||||
return "RMB";
|
||||
case 4:
|
||||
return "MB4";
|
||||
|
@ -147,10 +147,32 @@ export class MetaBuilding {
|
||||
* @param {string} param0.variant
|
||||
*/
|
||||
createAndPlaceEntity({ root, origin, rotation, originalRotation, rotationVariant, variant }) {
|
||||
const entity = this.createEntity({
|
||||
root,
|
||||
origin,
|
||||
rotation,
|
||||
originalRotation,
|
||||
rotationVariant,
|
||||
variant,
|
||||
});
|
||||
root.map.placeStaticEntity(entity);
|
||||
root.entityMgr.registerEntity(entity);
|
||||
return entity;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the entity without placing it
|
||||
* @param {object} param0
|
||||
* @param {GameRoot} param0.root
|
||||
* @param {Vector} param0.origin Origin tile
|
||||
* @param {number=} param0.rotation Rotation
|
||||
* @param {number} param0.originalRotation Original Rotation
|
||||
* @param {number} param0.rotationVariant Rotation variant
|
||||
* @param {string} param0.variant
|
||||
*/
|
||||
createEntity({ root, origin, rotation, originalRotation, rotationVariant, variant }) {
|
||||
const entity = new Entity(root);
|
||||
|
||||
const blueprintSprite = this.getBlueprintSprite(rotationVariant, variant);
|
||||
|
||||
entity.addComponent(
|
||||
new StaticMapEntityComponent({
|
||||
spriteKey:
|
||||
@ -166,12 +188,8 @@ export class MetaBuilding {
|
||||
blueprintSpriteKey: blueprintSprite ? blueprintSprite.spriteName : "",
|
||||
})
|
||||
);
|
||||
|
||||
this.setupEntityComponents(entity, root);
|
||||
this.updateVariants(entity, rotationVariant, variant);
|
||||
|
||||
root.map.placeStaticEntity(entity);
|
||||
root.entityMgr.registerEntity(entity);
|
||||
return entity;
|
||||
}
|
||||
|
||||
|
@ -19,7 +19,6 @@ import { SoundProxy } from "./sound_proxy";
|
||||
import { Savegame } from "../savegame/savegame";
|
||||
import { GameLogic } from "./logic";
|
||||
import { ShapeDefinitionManager } from "./shape_definition_manager";
|
||||
import { CanvasClickInterceptor } from "./canvas_click_interceptor";
|
||||
import { HubGoals } from "./hub_goals";
|
||||
import { BufferMaintainer } from "../core/buffer_maintainer";
|
||||
import { ProductionAnalytics } from "./production_analytics";
|
||||
@ -110,9 +109,6 @@ export class GameRoot {
|
||||
/** @type {BufferMaintainer} */
|
||||
this.buffers = null;
|
||||
|
||||
/** @type {CanvasClickInterceptor} */
|
||||
this.canvasClickInterceptor = null;
|
||||
|
||||
/** @type {AutomaticSave} */
|
||||
this.automaticSave = null;
|
||||
|
||||
|
@ -8,7 +8,7 @@ import { SOUNDS } from "../platform/sound";
|
||||
const avgSoundDurationSeconds = 0.25;
|
||||
const maxOngoingSounds = 2;
|
||||
|
||||
const maxOngoingUiSounds = 2;
|
||||
const maxOngoingUiSounds = 25;
|
||||
|
||||
// Proxy to the application sound instance
|
||||
export class SoundProxy {
|
||||
|
@ -24,11 +24,17 @@ export class MinerSystem extends GameSystemWithFilter {
|
||||
// Check if miner is above an actual tile
|
||||
|
||||
const minerComp = entity.components.Miner;
|
||||
const staticComp = entity.components.StaticMapEntity;
|
||||
|
||||
const tileBelow = this.root.map.getLowerLayerContentXY(staticComp.origin.x, staticComp.origin.y);
|
||||
if (!tileBelow) {
|
||||
continue;
|
||||
if (!minerComp.cachedMinedItem) {
|
||||
const staticComp = entity.components.StaticMapEntity;
|
||||
const tileBelow = this.root.map.getLowerLayerContentXY(
|
||||
staticComp.origin.x,
|
||||
staticComp.origin.y
|
||||
);
|
||||
if (!tileBelow) {
|
||||
continue;
|
||||
}
|
||||
minerComp.cachedMinedItem = tileBelow;
|
||||
}
|
||||
|
||||
// First, try to get rid of chained items
|
||||
@ -40,20 +46,9 @@ export class MinerSystem extends GameSystemWithFilter {
|
||||
}
|
||||
|
||||
if (this.root.time.isIngameTimerExpired(minerComp.lastMiningTime, 1 / miningSpeed)) {
|
||||
const lowerLayerItem = this.root.map.getLowerLayerContentXY(
|
||||
staticComp.origin.x,
|
||||
staticComp.origin.y
|
||||
);
|
||||
|
||||
// TODO: Should not be required actually
|
||||
if (!lowerLayerItem) {
|
||||
// Nothing below;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (this.tryPerformMinerEject(entity, lowerLayerItem)) {
|
||||
if (this.tryPerformMinerEject(entity, minerComp.cachedMinedItem)) {
|
||||
// Analytics hook
|
||||
this.root.signals.itemProduced.dispatch(lowerLayerItem);
|
||||
this.root.signals.itemProduced.dispatch(minerComp.cachedMinedItem);
|
||||
|
||||
// Actually mine
|
||||
minerComp.lastMiningTime = this.root.time.now();
|
||||
@ -114,18 +109,17 @@ export class MinerSystem extends GameSystemWithFilter {
|
||||
|
||||
if (entity && entity.components.Miner) {
|
||||
const staticComp = entity.components.StaticMapEntity;
|
||||
const minerComp = entity.components.Miner;
|
||||
if (!staticComp.shouldBeDrawn(parameters)) {
|
||||
continue;
|
||||
}
|
||||
if (!minerComp.cachedMinedItem) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const lowerLayerItem = this.root.map.getLowerLayerContentXY(
|
||||
staticComp.origin.x,
|
||||
staticComp.origin.y
|
||||
);
|
||||
|
||||
if (lowerLayerItem) {
|
||||
if (minerComp.cachedMinedItem) {
|
||||
const padding = 3;
|
||||
parameters.context.fillStyle = lowerLayerItem.getBackgroundColorAsResource();
|
||||
parameters.context.fillStyle = minerComp.cachedMinedItem.getBackgroundColorAsResource();
|
||||
parameters.context.fillRect(
|
||||
staticComp.origin.x * globalConfig.tileSize + padding,
|
||||
staticComp.origin.y * globalConfig.tileSize + padding,
|
||||
@ -134,8 +128,8 @@ export class MinerSystem extends GameSystemWithFilter {
|
||||
);
|
||||
}
|
||||
|
||||
if (lowerLayerItem) {
|
||||
lowerLayerItem.draw(
|
||||
if (minerComp.cachedMinedItem) {
|
||||
minerComp.cachedMinedItem.draw(
|
||||
(0.5 + staticComp.origin.x) * globalConfig.tileSize,
|
||||
(0.5 + staticComp.origin.y) * globalConfig.tileSize,
|
||||
parameters
|
||||
|
@ -80,4 +80,10 @@ export const LANGUAGES = {
|
||||
code: "no",
|
||||
region: "",
|
||||
},
|
||||
"zh-CN": {
|
||||
name: "简体中文",
|
||||
data: require("./built-temp/base-zh-CN.json"),
|
||||
code: "zh",
|
||||
region: "CN",
|
||||
},
|
||||
};
|
||||
|
@ -89,6 +89,33 @@ export const movementSpeeds = [
|
||||
},
|
||||
];
|
||||
|
||||
export const autosaveIntervals = [
|
||||
{
|
||||
id: "one_minute",
|
||||
seconds: 60,
|
||||
},
|
||||
{
|
||||
id: "two_minutes",
|
||||
seconds: 120,
|
||||
},
|
||||
{
|
||||
id: "five_minutes",
|
||||
seconds: 5 * 60,
|
||||
},
|
||||
{
|
||||
id: "ten_minutes",
|
||||
seconds: 10 * 60,
|
||||
},
|
||||
{
|
||||
id: "twenty_minutes",
|
||||
seconds: 20 * 60,
|
||||
},
|
||||
{
|
||||
id: "disabled",
|
||||
seconds: null,
|
||||
},
|
||||
];
|
||||
|
||||
/** @type {Array<BaseSetting>} */
|
||||
export const allApplicationSettings = [
|
||||
new EnumSetting("language", {
|
||||
@ -160,11 +187,24 @@ export const allApplicationSettings = [
|
||||
*/
|
||||
(app, id) => {
|
||||
applyGameTheme(id);
|
||||
document.body.setAttribute("data-theme", id);
|
||||
document.documentElement.setAttribute("data-theme", id);
|
||||
},
|
||||
enabled: !IS_DEMO,
|
||||
}),
|
||||
|
||||
new EnumSetting("autosaveInterval", {
|
||||
options: autosaveIntervals,
|
||||
valueGetter: interval => interval.id,
|
||||
textGetter: interval => T.settings.labels.autosaveInterval.intervals[interval.id],
|
||||
category: categoryGame,
|
||||
restartRequired: false,
|
||||
changeCb:
|
||||
/**
|
||||
* @param {Application} app
|
||||
*/
|
||||
(app, id) => null,
|
||||
}),
|
||||
|
||||
new EnumSetting("refreshRate", {
|
||||
options: ["60", "100", "144", "165", "250", "500"],
|
||||
valueGetter: rate => rate,
|
||||
@ -200,6 +240,8 @@ export const allApplicationSettings = [
|
||||
new BoolSetting("alwaysMultiplace", categoryGame, (app, value) => {}),
|
||||
new BoolSetting("enableTunnelSmartplace", categoryGame, (app, value) => {}),
|
||||
new BoolSetting("vignette", categoryGame, (app, value) => {}),
|
||||
new BoolSetting("compactBuildingInfo", categoryGame, (app, value) => {}),
|
||||
new BoolSetting("disableCutDeleteWarnings", categoryGame, (app, value) => {}),
|
||||
];
|
||||
|
||||
export function getApplicationSettingById(id) {
|
||||
@ -218,11 +260,14 @@ class SettingsStorage {
|
||||
this.scrollWheelSensitivity = "regular";
|
||||
this.movementSpeed = "regular";
|
||||
this.language = "auto-detect";
|
||||
this.autosaveInterval = "two_minutes";
|
||||
|
||||
this.alwaysMultiplace = false;
|
||||
this.offerHints = true;
|
||||
this.enableTunnelSmartplace = true;
|
||||
this.vignette = true;
|
||||
this.compactBuildingInfo = false;
|
||||
this.disableCutDeleteWarnings = false;
|
||||
|
||||
/**
|
||||
* @type {Object.<string, number>}
|
||||
@ -317,6 +362,17 @@ export class ApplicationSettings extends ReadWriteProxy {
|
||||
return 1;
|
||||
}
|
||||
|
||||
getAutosaveIntervalSeconds() {
|
||||
const id = this.getAllSettings().autosaveInterval;
|
||||
for (let i = 0; i < autosaveIntervals.length; ++i) {
|
||||
if (autosaveIntervals[i].id === id) {
|
||||
return autosaveIntervals[i].seconds;
|
||||
}
|
||||
}
|
||||
logger.error("Unknown autosave interval id:", id);
|
||||
return 120;
|
||||
}
|
||||
|
||||
getIsFullScreen() {
|
||||
return this.getAllSettings().fullscreen;
|
||||
}
|
||||
@ -412,7 +468,7 @@ export class ApplicationSettings extends ReadWriteProxy {
|
||||
}
|
||||
|
||||
getCurrentVersion() {
|
||||
return 12;
|
||||
return 15;
|
||||
}
|
||||
|
||||
/** @param {{settings: SettingsStorage, version: number}} data */
|
||||
@ -459,6 +515,21 @@ export class ApplicationSettings extends ReadWriteProxy {
|
||||
data.version = 12;
|
||||
}
|
||||
|
||||
if (data.version < 13) {
|
||||
data.settings.compactBuildingInfo = false;
|
||||
data.version = 13;
|
||||
}
|
||||
|
||||
if (data.version < 14) {
|
||||
data.settings.disableCutDeleteWarnings = false;
|
||||
data.version = 14;
|
||||
}
|
||||
|
||||
if (data.version < 15) {
|
||||
data.settings.autosaveInterval = "two_minutes";
|
||||
data.version = 15;
|
||||
}
|
||||
|
||||
return ExplainedResult.good();
|
||||
}
|
||||
}
|
||||
|
@ -26,6 +26,7 @@ The base translation is `base-en.yaml`. It will always contain the latest phrase
|
||||
- [Lithuanian](base-lt.yaml)
|
||||
- [Arabic](base-ar.yaml)
|
||||
- [Norwegian](base-no.yaml)
|
||||
- [Kroatian](base-hr.yaml)
|
||||
|
||||
(If you want to translate into a new language, see below!)
|
||||
|
||||
|
@ -287,6 +287,10 @@ ingame:
|
||||
pasteLastBlueprint: Paste last blueprint
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -322,11 +326,6 @@ ingame:
|
||||
newUpgrade: A new upgrade is available!
|
||||
gameSaved: Your game has been saved.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Upgrades
|
||||
@ -686,6 +685,32 @@ settings:
|
||||
description: >-
|
||||
Enables the vignette which darkens the screen corners and makes text easier
|
||||
to read.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Keybindings
|
||||
hint: >-
|
||||
@ -731,7 +756,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Abort Placement
|
||||
rotateWhilePlacing: Rotate
|
||||
rotateInverseModifier: >-
|
||||
Modifier: Rotate CCW instead
|
||||
@ -751,7 +775,8 @@ keybindings:
|
||||
exportScreenshot: Export whole Base as Image
|
||||
mapMoveFaster: Move Faster
|
||||
lockBeltDirection: Enable belt planner
|
||||
switchDirectionLockSide: 'Planner: Switch side'
|
||||
switchDirectionLockSide: "Planner: Switch side"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: About this Game
|
||||
|
@ -268,6 +268,10 @@ ingame:
|
||||
pasteLastBlueprint: Vložit poslední plán
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -303,11 +307,6 @@ ingame:
|
||||
newUpgrade: Nová aktualizace je k dispozici!
|
||||
gameSaved: Hra byla uložena.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Stiskni <keyCut> pro vyjmutí, <keyCopy> pro kopírování a <keyDelete> pro zbourání. <keyCancel> ruší výběr.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Vylepšení
|
||||
@ -669,6 +668,31 @@ settings:
|
||||
Enables the vignette which darkens the screen corners and makes text easier
|
||||
to read.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Klávesové zkratky
|
||||
hint: >-
|
||||
@ -715,7 +739,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Zrušit stavbu
|
||||
rotateWhilePlacing: Otočit
|
||||
rotateInverseModifier: >-
|
||||
Modifikátor: Otočit proti směru hodinových ručiček
|
||||
@ -734,7 +757,8 @@ keybindings:
|
||||
massSelectCut: Vyjmout oblast
|
||||
exportScreenshot: Exportovat celou základnu jako obrázek
|
||||
lockBeltDirection: Enable belt planner
|
||||
switchDirectionLockSide: 'Planner: Switch side'
|
||||
switchDirectionLockSide: "Planner: Switch side"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: O hře
|
||||
|
@ -239,7 +239,7 @@ dialogs:
|
||||
blueprintsNotUnlocked:
|
||||
title: Noch nicht freigeschaltet
|
||||
desc: >-
|
||||
Blueprints werden erst in Level 12 freigeschalten!
|
||||
Blueprints werden erst in Level 12 freigeschaltet!
|
||||
|
||||
keybindingsIntroduction:
|
||||
title: Nützliche Hotkeys
|
||||
@ -282,15 +282,19 @@ ingame:
|
||||
createMarker: Marker erstellen
|
||||
delete: Löschen
|
||||
pasteLastBlueprint: Letzte Blaupause einfügen
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
lockBeltDirection: Bandplaner aktivieren
|
||||
plannerSwitchSide: "Planer: Seite wechseln"
|
||||
cutSelection: Ausschneiden
|
||||
copySelection: Kopieren
|
||||
clearSelection: Leere Selektion
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
buildingPlacement:
|
||||
# Buildings can have different variants which are unlocked at later levels,
|
||||
# and this is the hint shown when there are multiple variants available.
|
||||
cycleBuildingVariants: Drücke <key> um zwischen den Varianten zu wählen.
|
||||
cycleBuildingVariants: Drücke <key>, um zwischen den Varianten zu wählen.
|
||||
|
||||
# Shows the hotkey in the ui, e.g. "Hotkey: Q"
|
||||
hotkeyLabel: >-
|
||||
@ -319,11 +323,6 @@ ingame:
|
||||
newUpgrade: Ein neues Upgrade ist verfügbar!
|
||||
gameSaved: Dein Spiel wurde gespeichert.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Drücke <keyCut> zum Ausschneiden, <keyCopy> zum Kopieren, <keyDelete> zum Entfernen und <keyCancel> um Abzubrechen.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Upgrades
|
||||
@ -538,7 +537,7 @@ storyRewards:
|
||||
desc: Der <strong>Tunnel</strong> wurde freigeschaltet! Du kannst Items nun unter Gebäuden oder Förderbändern hindurchleiten!
|
||||
|
||||
reward_rotater_ccw:
|
||||
title: gUZS Rotieren
|
||||
title: Gegen UZS Rotieren
|
||||
desc: Du hast eine zweite Variante des <strong>Rotierers</strong> freigeschaltet! Damit können Items gegen den Uhrzeigensinn gedreht werden. Wähle den Rotierer aus und <strong>drücke 'T', um auf verschiedene Varianten zuzugreifen</strong>!
|
||||
|
||||
reward_miner_chainable:
|
||||
@ -678,20 +677,45 @@ settings:
|
||||
super_fast: Sehr schnell
|
||||
extremely_fast: Extrem schnell
|
||||
enableTunnelSmartplace:
|
||||
title: Smart Tunnels
|
||||
title: Intelligente Tunnel
|
||||
description: >-
|
||||
When enabled, placing tunnels will automatically remove unnecessary belts.
|
||||
This also enables to drag tunnels and excess tunnels will get removed.
|
||||
Aktiviert das automatische Entfernen von überflüssigen Förderbändern bei der Platzierung von Tunneln.
|
||||
Außerdem funktioniert das Ziehen von Tunneln und überschüssige werden ebenfalls entfernt.
|
||||
vignette:
|
||||
title: Vignette
|
||||
description: >-
|
||||
Enables the vignette which darkens the screen corners and makes text easier
|
||||
to read.
|
||||
Aktiviert den Vignetteneffekt, der den Rand des Bildschirms zunehmend verdunkelt
|
||||
und das Lesen der Textfelder vereinfacht.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Tastenbelegung
|
||||
hint: >-
|
||||
Tipp: Benutze STRG, UMSCH and ALT! Sie aktivieren verschiedene Platzierungsoptionen!
|
||||
Tipp: Benutze STRG, UMSCH and ALT! Sie aktivieren verschiedene Platzierungsoptionen.
|
||||
|
||||
resetKeybindings: Tastenbelegung zurücksetzen.
|
||||
|
||||
@ -733,7 +757,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Platzieren abbrechen
|
||||
rotateWhilePlacing: Rotieren
|
||||
rotateInverseModifier: >-
|
||||
Modifier: stattdessen gegen UZS rotieren
|
||||
@ -741,7 +764,7 @@ keybindings:
|
||||
confirmMassDelete: Massenlöschung bestätigen
|
||||
cycleBuildings: Gebäude rotieren
|
||||
|
||||
massSelectStart: Halten und ziehen zum beginnen
|
||||
massSelectStart: Halten und ziehen zum Beginnen
|
||||
massSelectSelectMultiple: Mehrere Areale markieren
|
||||
massSelectCopy: Areal kopieren
|
||||
|
||||
@ -752,8 +775,9 @@ keybindings:
|
||||
massSelectCut: Areal ausschneiden
|
||||
exportScreenshot: Ganze Fabrik als Foto exportieren
|
||||
mapMoveFaster: Schneller bewegen
|
||||
lockBeltDirection: Enable belt planner
|
||||
switchDirectionLockSide: 'Planner: Switch side'
|
||||
lockBeltDirection: Bandplaner aktivieren
|
||||
switchDirectionLockSide: "Planer: Seite wechseln"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: Über dieses Spiel
|
||||
|
@ -287,6 +287,10 @@ ingame:
|
||||
pasteLastBlueprint: Paste last blueprint
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -322,11 +326,6 @@ ingame:
|
||||
newUpgrade: A new upgrade is available!
|
||||
gameSaved: Your game has been saved.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Upgrades
|
||||
@ -688,6 +687,31 @@ settings:
|
||||
Enables the vignette which darkens the screen corners and makes text easier
|
||||
to read.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Keybindings
|
||||
hint: >-
|
||||
@ -733,7 +757,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Abort Placement
|
||||
rotateWhilePlacing: Rotate
|
||||
rotateInverseModifier: >-
|
||||
Modifier: Rotate CCW instead
|
||||
@ -753,7 +776,8 @@ keybindings:
|
||||
exportScreenshot: Export whole Base as Image
|
||||
mapMoveFaster: Move Faster
|
||||
lockBeltDirection: Enable belt planner
|
||||
switchDirectionLockSide: 'Planner: Switch side'
|
||||
switchDirectionLockSide: "Planner: Switch side"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: About this Game
|
||||
|
@ -281,10 +281,14 @@ ingame:
|
||||
toggleHud: Toggle HUD
|
||||
placeBuilding: Place building
|
||||
createMarker: Create Marker
|
||||
delete: Destroy
|
||||
delete: Delete
|
||||
pasteLastBlueprint: Paste last blueprint
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -320,11 +324,6 @@ ingame:
|
||||
newUpgrade: A new upgrade is available!
|
||||
gameSaved: Your game has been saved.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Upgrades
|
||||
@ -612,6 +611,19 @@ settings:
|
||||
large: Large
|
||||
huge: Huge
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it entirely here.
|
||||
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
|
||||
scrollWheelSensitivity:
|
||||
title: Zoom sensitivity
|
||||
description: >-
|
||||
@ -688,6 +700,16 @@ settings:
|
||||
description: >-
|
||||
Enables the vignette which darkens the screen corners and makes text easier to read.
|
||||
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a description and image is shown.
|
||||
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100 entities.
|
||||
|
||||
keybindings:
|
||||
title: Keybindings
|
||||
hint: >-
|
||||
@ -735,12 +757,12 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Abort Placement
|
||||
pipette: Pipette
|
||||
rotateWhilePlacing: Rotate
|
||||
rotateInverseModifier: >-
|
||||
Modifier: Rotate CCW instead
|
||||
cycleBuildingVariants: Cycle Variants
|
||||
confirmMassDelete: Confirm Mass Delete
|
||||
confirmMassDelete: Delete area
|
||||
pasteLastBlueprint: Paste last blueprint
|
||||
cycleBuildings: Cycle Buildings
|
||||
lockBeltDirection: Enable belt planner
|
||||
|
@ -285,6 +285,10 @@ ingame:
|
||||
pasteLastBlueprint: Paste last blueprint
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -320,11 +324,6 @@ ingame:
|
||||
newUpgrade: ¡Una nueva mejora está disponible!
|
||||
gameSaved: Tu partida ha sido guardada.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Presiona <keyCut> para cortar, <keyCopy> para copiar, <keyDelete> para eliminar y <keyCancel> para cancelar.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Mejoras
|
||||
@ -680,6 +679,29 @@ settings:
|
||||
Enables the vignette which darkens the screen corners and makes text easier
|
||||
to read.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Atajos de Teclado
|
||||
hint: >-
|
||||
@ -724,7 +746,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Cancelar Colocación
|
||||
rotateWhilePlacing: Rotar
|
||||
rotateInverseModifier: >-
|
||||
Modificador: Rotar inversamente en su lugar
|
||||
@ -744,7 +765,8 @@ keybindings:
|
||||
massSelectCut: Cortar área
|
||||
exportScreenshot: Exportar toda la base como imagen
|
||||
mapMoveFaster: Mover más rápido
|
||||
switchDirectionLockSide: 'Planner: Switch side'
|
||||
switchDirectionLockSide: "Planner: Switch side"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: Sobre el Juego
|
||||
|
@ -275,7 +275,7 @@ ingame:
|
||||
# every situation
|
||||
keybindingsOverlay:
|
||||
moveMap: Déplacer
|
||||
selectBuildings: Sélection de la zone
|
||||
selectBuildings: Sélection d'une zone
|
||||
stopPlacement: Arrêter le placement
|
||||
rotateBuilding: Tourner le bâtiment
|
||||
placeMultiple: Placement multiple
|
||||
@ -286,8 +286,12 @@ ingame:
|
||||
createMarker: Créer une balise
|
||||
delete: Supprimer
|
||||
pasteLastBlueprint: Copier le dernier patron
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
lockBeltDirection: Utiliser le plannificateur de convoyeurs
|
||||
plannerSwitchSide: Échanger la direction du plannificateur
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -323,11 +327,6 @@ ingame:
|
||||
newUpgrade: Une nouvelle amélioration est disponible !
|
||||
gameSaved: Votre partie a été sauvegardée.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Apuyez sur <keyCut> pour couper, <keyCopy> pour copier, <keyDelete> pour effacer et <keyCancel> pour annuler.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Améliorations
|
||||
@ -682,15 +681,37 @@ settings:
|
||||
super_fast: Très rapide
|
||||
extremely_fast: Extrêmement rapide
|
||||
enableTunnelSmartplace:
|
||||
title: Smart Tunnels
|
||||
title: Tunnels intelligents
|
||||
description: >-
|
||||
When enabled, placing tunnels will automatically remove unnecessary belts.
|
||||
This also enables to drag tunnels and excess tunnels will get removed.
|
||||
Si cette option est sélectionnée, placer des tunnels effacera automatiquement les convoyeurs inutiles.
|
||||
Cela permet aussi d'étirer les tunnels et les tunnels en surnombre seront effacés.
|
||||
vignette:
|
||||
title: Vignette
|
||||
title: Effet de vignette
|
||||
description: >-
|
||||
Enables the vignette which darkens the screen corners and makes text easier
|
||||
to read.
|
||||
Permet l'affichage de l'effet de vignette qui assombrit les coins de l'écran afin de rendre le texte plus facile à lire.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Contrôles
|
||||
@ -737,7 +758,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Annuler le placement
|
||||
rotateWhilePlacing: Pivoter
|
||||
rotateInverseModifier: >-
|
||||
Variante: Pivote à gauche
|
||||
@ -756,8 +776,9 @@ keybindings:
|
||||
massSelectCut: Couper la sélection
|
||||
exportScreenshot: Exporter toute la base en tant qu'image.
|
||||
mapMoveFaster: Se déplacer plus vite
|
||||
lockBeltDirection: Enable belt planner
|
||||
switchDirectionLockSide: 'Planner: Switch side'
|
||||
lockBeltDirection: Utiliser le plannificateur de convoyeurs
|
||||
switchDirectionLockSide: "Plannificateur: changer de côté"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: À propos de ce jeu
|
||||
|
805
translations/base-hr.yaml
Normal file
@ -0,0 +1,805 @@
|
||||
#
|
||||
# GAME TRANSLATIONS
|
||||
#
|
||||
# Contributing:
|
||||
#
|
||||
# If you want to contribute, please make a pull request on this respository
|
||||
# and I will have a look.
|
||||
#
|
||||
# Placeholders:
|
||||
#
|
||||
# Do *not* replace placeholders! Placeholders have a special syntax like
|
||||
# `Hotkey: <key>`. They are encapsulated within angle brackets. The correct
|
||||
# translation for this one in German for example would be: `Taste: <key>` (notice
|
||||
# how the placeholder stayed '<key>' and was not replaced!)
|
||||
#
|
||||
# Adding a new language:
|
||||
#
|
||||
# If you want to add a new language, ask me in the discord and I will setup
|
||||
# the basic structure so the game also detects it.
|
||||
#
|
||||
|
||||
steamPage:
|
||||
# This is the short text appearing on the steam page
|
||||
shortText: shapez.io is a game about building factories to automate the creation and combination of increasingly complex shapes within an infinite map.
|
||||
|
||||
# This is the long description for the steam page - It is contained here so you can help to translate it, and I will regulary update the store page.
|
||||
# NOTICE:
|
||||
# - Do not translate the first line (This is the gif image at the start of the store)
|
||||
# - Please keep the markup (Stuff like [b], [list] etc) in the same format
|
||||
longText: >-
|
||||
[img]{STEAM_APP_IMAGE}/extras/store_page_gif.gif[/img]
|
||||
|
||||
shapez.io is a game about building factories to automate the creation and combination of shapes. Deliver the requested, increasingly complex shapes to progress within the game and unlock upgrades to speed up your factory.
|
||||
|
||||
Since the demand raises you will have to scale up your factory to fit the needs - Don't forget about resources though, you will have to expand in the [b]infinite map[/b]!
|
||||
|
||||
Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand.
|
||||
|
||||
This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned!
|
||||
|
||||
|
||||
[b]Standalone Advantages[/b]
|
||||
|
||||
[list]
|
||||
[*] Waypoints
|
||||
[*] Unlimited Savegames
|
||||
[*] Dark Mode
|
||||
[*] More settings
|
||||
[*] Allow me to further develop shapez.io ❤️
|
||||
[*] More features in the future!
|
||||
[/list]
|
||||
|
||||
[b]Planned features & Community suggestions[/b]
|
||||
|
||||
This game is open source - Anybody can contribute! Besides of that, I listen [b]a lot[/b] to the community! I try to read all suggestions and take as much feedback into account as possible.
|
||||
|
||||
[list]
|
||||
[*] Story mode where buildings cost shapes
|
||||
[*] More levels & buildings (standalone exclusive)
|
||||
[*] Different maps, and maybe map obstacles
|
||||
[*] Configurable map creation (Edit number and size of patches, seed, and more)
|
||||
[*] More types of shapes
|
||||
[*] More performance improvements (Although the game already runs pretty good!)
|
||||
[*] Color blind mode
|
||||
[*] And much more!
|
||||
[/list]
|
||||
|
||||
Be sure to check out my trello board for the full roadmap! https://trello.com/b/ISQncpJP/shapezio
|
||||
|
||||
global:
|
||||
loading: Loading
|
||||
error: Error
|
||||
|
||||
# How big numbers are rendered, e.g. "10,000"
|
||||
thousandsDivider: ","
|
||||
|
||||
# The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
|
||||
suffix:
|
||||
thousands: k
|
||||
millions: M
|
||||
billions: B
|
||||
trillions: T
|
||||
|
||||
# Shown for infinitely big numbers
|
||||
infinite: inf
|
||||
|
||||
time:
|
||||
# Used for formatting past time dates
|
||||
oneSecondAgo: one second ago
|
||||
xSecondsAgo: <x> seconds ago
|
||||
oneMinuteAgo: one minute ago
|
||||
xMinutesAgo: <x> minutes ago
|
||||
oneHourAgo: one hour ago
|
||||
xHoursAgo: <x> hours ago
|
||||
oneDayAgo: one day ago
|
||||
xDaysAgo: <x> days ago
|
||||
|
||||
# Short formats for times, e.g. '5h 23m'
|
||||
secondsShort: <seconds>s
|
||||
minutesAndSecondsShort: <minutes>m <seconds>s
|
||||
hoursAndMinutesShort: <hours>h <minutes>m
|
||||
|
||||
xMinutes: <x> minutes
|
||||
|
||||
keys:
|
||||
tab: TAB
|
||||
control: CTRL
|
||||
alt: ALT
|
||||
escape: ESC
|
||||
shift: SHIFT
|
||||
space: SPACE
|
||||
|
||||
demoBanners:
|
||||
# This is the "advertisement" shown in the main menu and other various places
|
||||
title: Demo Version
|
||||
intro: >-
|
||||
Get the standalone to unlock all features!
|
||||
|
||||
mainMenu:
|
||||
play: Play
|
||||
continue: Continue
|
||||
newGame: New Game
|
||||
changelog: Changelog
|
||||
importSavegame: Import
|
||||
openSourceHint: This game is open source!
|
||||
discordLink: Official Discord Server
|
||||
helpTranslate: Help translate!
|
||||
madeBy: Made by <author-link>
|
||||
|
||||
# This is shown when using firefox and other browsers which are not supported.
|
||||
browserWarning: >-
|
||||
Sorry, but the game is known to run slow on your browser! Get the standalone version or download chrome for the full experience.
|
||||
|
||||
savegameLevel: Level <x>
|
||||
savegameLevelUnknown: Unknown Level
|
||||
|
||||
contests:
|
||||
contest_01_03062020:
|
||||
title: "Contest #01"
|
||||
desc: Win <strong>$25</strong> for the coolest base!
|
||||
longDesc: >-
|
||||
To give something back to you, I thought it would be cool to make weekly contests!
|
||||
<br><br>
|
||||
<strong>This weeks topic:</strong> Build the coolest base!
|
||||
<br><br>
|
||||
Here's the deal:<br>
|
||||
<ul class="bucketList">
|
||||
<li>Submit a screenshot of your base to <strong>contest@shapez.io</strong></li>
|
||||
<li>Bonus points if you share it on social media!</li>
|
||||
<li>I will choose 5 screenshots and propose it to the <strong>discord</strong> community to vote.</li>
|
||||
<li>The winner gets <strong>$25</strong> (Paypal, Amazon Gift Card, whatever you prefer)</li>
|
||||
<li>Deadline: 07.06.2020 12:00 AM CEST</li>
|
||||
</ul>
|
||||
<br>
|
||||
I'm looking forward to seeing your awesome creations!
|
||||
|
||||
showInfo: View
|
||||
contestOver: This contest has ended - Join the discord to get noticed about new contests!
|
||||
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
delete: Delete
|
||||
cancel: Cancel
|
||||
later: Later
|
||||
restart: Restart
|
||||
reset: Reset
|
||||
getStandalone: Get Standalone
|
||||
deleteGame: I know what I do
|
||||
viewUpdate: View Update
|
||||
showUpgrades: Show Upgrades
|
||||
showKeybindings: Show Keybindings
|
||||
|
||||
importSavegameError:
|
||||
title: Import Error
|
||||
text: >-
|
||||
Failed to import your savegame:
|
||||
|
||||
importSavegameSuccess:
|
||||
title: Savegame Imported
|
||||
text: >-
|
||||
Your savegame has been successfully imported.
|
||||
|
||||
gameLoadFailure:
|
||||
title: Game is broken
|
||||
text: >-
|
||||
Failed to load your savegame:
|
||||
|
||||
confirmSavegameDelete:
|
||||
title: Confirm deletion
|
||||
text: >-
|
||||
Are you sure you want to delete the game?
|
||||
|
||||
savegameDeletionError:
|
||||
title: Failed to delete
|
||||
text: >-
|
||||
Failed to delete the savegame:
|
||||
|
||||
restartRequired:
|
||||
title: Restart required
|
||||
text: >-
|
||||
You need to restart the game to apply the settings.
|
||||
|
||||
editKeybinding:
|
||||
title: Change Keybinding
|
||||
desc: Press the key or mouse button you want to assign, or escape to cancel.
|
||||
|
||||
resetKeybindingsConfirmation:
|
||||
title: Reset keybindings
|
||||
desc: This will reset all keybindings to their default values. Please confirm.
|
||||
|
||||
keybindingsResetOk:
|
||||
title: Keybindings reset
|
||||
desc: The keybindings have been reset to their respective defaults!
|
||||
|
||||
featureRestriction:
|
||||
title: Demo Version
|
||||
desc: You tried to access a feature (<feature>) which is not available in the demo. Consider to get the standalone for the full experience!
|
||||
|
||||
oneSavegameLimit:
|
||||
title: Limited savegames
|
||||
desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone!
|
||||
|
||||
updateSummary:
|
||||
title: New update!
|
||||
desc: >-
|
||||
Here are the changes since you last played:
|
||||
|
||||
upgradesIntroduction:
|
||||
title: Unlock Upgrades
|
||||
desc: >-
|
||||
All shapes you produce can be used to unlock upgrades - <strong>Don't destroy your old factories!</strong>
|
||||
The upgrades tab can be found on the top right corner of the screen.
|
||||
|
||||
massDeleteConfirm:
|
||||
title: Confirm delete
|
||||
desc: >-
|
||||
You are deleting a lot of buildings (<count> to be exact)! Are you sure you want to do this?
|
||||
|
||||
massCutConfirm:
|
||||
title: Confirm cut
|
||||
desc: >-
|
||||
You are cutting a lot of buildings (<count> to be exact)! Are you sure you want to do this?
|
||||
|
||||
blueprintsNotUnlocked:
|
||||
title: Not unlocked yet
|
||||
desc: >-
|
||||
Complete level 12 to unlock Blueprints!
|
||||
|
||||
keybindingsIntroduction:
|
||||
title: Useful keybindings
|
||||
desc: >-
|
||||
This game has a lot of keybindings which make it easier to build big factories.
|
||||
Here are a few, but be sure to <strong>check out the keybindings</strong>!<br><br>
|
||||
<code class='keybinding'>CTRL</code> + Drag: Select an area.<br>
|
||||
<code class='keybinding'>SHIFT</code>: Hold to place multiple of one building.<br>
|
||||
<code class='keybinding'>ALT</code>: Invert orientation of placed belts.<br>
|
||||
|
||||
createMarker:
|
||||
title: New Marker
|
||||
desc: Give it a meaningful name, you can also include a <strong>short key</strong> of a shape (Which you can generate <a href="https://viewer.shapez.io" target="_blank">here</a>)
|
||||
|
||||
markerDemoLimit:
|
||||
desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers!
|
||||
|
||||
exportScreenshotWarning:
|
||||
title: Export screenshot
|
||||
desc: You requested to export your base as a screenshot. Please note that this can be quite slow for a big base and even crash your game!
|
||||
|
||||
ingame:
|
||||
# This is shown in the top left corner and displays useful keybindings in
|
||||
# every situation
|
||||
keybindingsOverlay:
|
||||
moveMap: Move
|
||||
selectBuildings: Select area
|
||||
stopPlacement: Stop placement
|
||||
rotateBuilding: Rotate building
|
||||
placeMultiple: Place multiple
|
||||
reverseOrientation: Reverse orientation
|
||||
disableAutoOrientation: Disable auto orientation
|
||||
toggleHud: Toggle HUD
|
||||
placeBuilding: Place building
|
||||
createMarker: Create Marker
|
||||
delete: Destroy
|
||||
pasteLastBlueprint: Paste last blueprint
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
buildingPlacement:
|
||||
# Buildings can have different variants which are unlocked at later levels,
|
||||
# and this is the hint shown when there are multiple variants available.
|
||||
cycleBuildingVariants: Press <key> to cycle variants.
|
||||
|
||||
# Shows the hotkey in the ui, e.g. "Hotkey: Q"
|
||||
hotkeyLabel: >-
|
||||
Hotkey: <key>
|
||||
|
||||
infoTexts:
|
||||
speed: Speed
|
||||
range: Range
|
||||
storage: Storage
|
||||
oneItemPerSecond: 1 item / second
|
||||
itemsPerSecond: <x> items / s
|
||||
itemsPerSecondDouble: (x2)
|
||||
|
||||
tiles: <x> tiles
|
||||
|
||||
# The notification when completing a level
|
||||
levelCompleteNotification:
|
||||
# <level> is replaced by the actual level, so this gets 'Level 03' for example.
|
||||
levelTitle: Level <level>
|
||||
completed: Completed
|
||||
unlockText: Unlocked <reward>!
|
||||
buttonNextLevel: Next Level
|
||||
|
||||
# Notifications on the lower right
|
||||
notifications:
|
||||
newUpgrade: A new upgrade is available!
|
||||
gameSaved: Your game has been saved.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Upgrades
|
||||
buttonUnlock: Upgrade
|
||||
|
||||
# Gets replaced to e.g. "Tier IX"
|
||||
tier: Tier <x>
|
||||
|
||||
# The roman number for each tier
|
||||
tierLabels: [I, II, III, IV, V, VI, VII, VIII, IX, X]
|
||||
|
||||
maximumLevel: MAXIMUM LEVEL (Speed x<currentMult>)
|
||||
|
||||
# The "Statistics" window
|
||||
statistics:
|
||||
title: Statistics
|
||||
dataSources:
|
||||
stored:
|
||||
title: Stored
|
||||
description: Displaying amount of stored shapes in your central building.
|
||||
produced:
|
||||
title: Produced
|
||||
description: Displaying all shapes your whole factory produces, including intermediate products.
|
||||
delivered:
|
||||
title: Delivered
|
||||
description: Displaying shapes which are delivered to your central building.
|
||||
noShapesProduced: No shapes have been produced so far.
|
||||
|
||||
# Displays the shapes per minute, e.g. '523 / m'
|
||||
shapesPerMinute: <shapes> / m
|
||||
|
||||
# Settings menu, when you press "ESC"
|
||||
settingsMenu:
|
||||
playtime: Playtime
|
||||
|
||||
buildingsPlaced: Buildings
|
||||
beltsPlaced: Belts
|
||||
|
||||
buttons:
|
||||
continue: Continue
|
||||
settings: Settings
|
||||
menu: Return to menu
|
||||
|
||||
# Bottom left tutorial hints
|
||||
tutorialHints:
|
||||
title: Need help?
|
||||
showHint: Show hint
|
||||
hideHint: Close
|
||||
|
||||
# When placing a blueprint
|
||||
blueprintPlacer:
|
||||
cost: Cost
|
||||
|
||||
# Map markers
|
||||
waypoints:
|
||||
waypoints: Markers
|
||||
hub: HUB
|
||||
description: Left-click a marker to jump to it, right-click to delete it.<br><br>Press <keybinding> to create a marker from the current view, or <strong>right-click</strong> to create a marker at the selected location.
|
||||
creationSuccessNotification: Marker has been created.
|
||||
|
||||
# Interactive tutorial
|
||||
interactiveTutorial:
|
||||
title: Tutorial
|
||||
hints:
|
||||
1_1_extractor: Place an <strong>extractor</strong> on top of a <strong>circle shape</strong> to extract it!
|
||||
1_2_conveyor: >-
|
||||
Connect the extractor with a <strong>conveyor belt</strong> to your hub!<br><br>Tip: <strong>Click and drag</strong> the belt with your mouse!
|
||||
|
||||
1_3_expand: >-
|
||||
This is <strong>NOT</strong> an idle game! Build more extractors and belts to finish the goal quicker.<br><br>Tip: Hold <strong>SHIFT</strong> to place multiple extractors, and use <strong>R</strong> to rotate them.
|
||||
|
||||
# All shop upgrades
|
||||
shopUpgrades:
|
||||
belt:
|
||||
name: Belts, Distributor & Tunnels
|
||||
description: Speed x<currentMult> → x<newMult>
|
||||
miner:
|
||||
name: Extraction
|
||||
description: Speed x<currentMult> → x<newMult>
|
||||
processors:
|
||||
name: Cutting, Rotating & Stacking
|
||||
description: Speed x<currentMult> → x<newMult>
|
||||
painting:
|
||||
name: Mixing & Painting
|
||||
description: Speed x<currentMult> → x<newMult>
|
||||
|
||||
# Buildings and their name / description
|
||||
buildings:
|
||||
hub:
|
||||
deliver: Deliver
|
||||
toUnlock: to unlock
|
||||
levelShortcut: LVL
|
||||
|
||||
belt:
|
||||
default:
|
||||
name: &belt Conveyor Belt
|
||||
description: Transports items, hold and drag to place multiple.
|
||||
|
||||
miner: # Internal name for the Extractor
|
||||
default:
|
||||
name: &miner Extractor
|
||||
description: Place over a shape or color to extract it.
|
||||
|
||||
chainable:
|
||||
name: Extractor (Chain)
|
||||
description: Place over a shape or color to extract it. Can be chained.
|
||||
|
||||
underground_belt: # Internal name for the Tunnel
|
||||
default:
|
||||
name: &underground_belt Tunnel
|
||||
description: Allows to tunnel resources under buildings and belts.
|
||||
|
||||
tier2:
|
||||
name: Tunnel Tier II
|
||||
description: Allows to tunnel resources under buildings and belts.
|
||||
|
||||
splitter: # Internal name for the Balancer
|
||||
default:
|
||||
name: &splitter Balancer
|
||||
description: Multifunctional - Evenly distributes all inputs onto all outputs.
|
||||
|
||||
compact:
|
||||
name: Merger (compact)
|
||||
description: Merges two conveyor belts into one.
|
||||
|
||||
compact-inverse:
|
||||
name: Merger (compact)
|
||||
description: Merges two conveyor belts into one.
|
||||
|
||||
cutter:
|
||||
default:
|
||||
name: &cutter Cutter
|
||||
description: Cuts shapes from top to bottom and outputs both halfs. <strong>If you use only one part, be sure to destroy the other part or it will stall!</strong>
|
||||
quad:
|
||||
name: Cutter (Quad)
|
||||
description: Cuts shapes into four parts. <strong>If you use only one part, be sure to destroy the other parts or it will stall!</strong>
|
||||
|
||||
rotater:
|
||||
default:
|
||||
name: &rotater Rotate
|
||||
description: Rotates shapes clockwise by 90 degrees.
|
||||
ccw:
|
||||
name: Rotate (CCW)
|
||||
description: Rotates shapes counter clockwise by 90 degrees.
|
||||
|
||||
stacker:
|
||||
default:
|
||||
name: &stacker Stacker
|
||||
description: Stacks both items. If they can not be merged, the right item is placed above the left item.
|
||||
|
||||
mixer:
|
||||
default:
|
||||
name: &mixer Color Mixer
|
||||
description: Mixes two colors using additive blending.
|
||||
|
||||
painter:
|
||||
default:
|
||||
name: &painter Painter
|
||||
description: &painter_desc Colors the whole shape on the left input with the color from the top input.
|
||||
|
||||
mirrored:
|
||||
name: *painter
|
||||
description: *painter_desc
|
||||
|
||||
double:
|
||||
name: Painter (Double)
|
||||
description: Colors the shapes on the left inputs with the color from the top input.
|
||||
quad:
|
||||
name: Painter (Quad)
|
||||
description: Allows to color each quadrant of the shape with a different color.
|
||||
|
||||
trash:
|
||||
default:
|
||||
name: &trash Trash
|
||||
description: Accepts inputs from all sides and destroys them. Forever.
|
||||
|
||||
storage:
|
||||
name: Storage
|
||||
description: Stores excess items, up to a given capacity. Can be used as an overflow gate.
|
||||
|
||||
storyRewards:
|
||||
# Those are the rewards gained from completing the store
|
||||
reward_cutter_and_trash:
|
||||
title: Cutting Shapes
|
||||
desc: You just unlocked the <strong>cutter</strong> - it cuts shapes half from <strong>top to bottom</strong> regardless of its orientation!<br><br>Be sure to get rid of the waste, or otherwise <strong>it will stall</strong> - For this purpose I gave you a trash, which destroys everything you put into it!
|
||||
|
||||
reward_rotater:
|
||||
title: Rotating
|
||||
desc: The <strong>rotater</strong> has been unlocked! It rotates shapes clockwise by 90 degrees.
|
||||
|
||||
reward_painter:
|
||||
title: Painting
|
||||
desc: >-
|
||||
The <strong>painter</strong> has been unlocked - Extract some color veins (just as you do with shapes) and combine it with a shape in the painter to color them!<br><br>PS: If you are colorblind, I'm working on a solution already!
|
||||
|
||||
reward_mixer:
|
||||
title: Color Mixing
|
||||
desc: The <strong>mixer</strong> has been unlocked - Combine two colors using <strong>additive blending</strong> with this building!
|
||||
|
||||
reward_stacker:
|
||||
title: Combiner
|
||||
desc: You can now combine shapes with the <strong>combiner</strong>! Both inputs are combined, and if they can be put next to each other, they will be <strong>fused</strong>. If not, the right input is <strong>stacked on top</strong> of the left input!
|
||||
|
||||
reward_splitter:
|
||||
title: Splitter/Merger
|
||||
desc: The multifunctional <strong>balancer</strong> has been unlocked - It can be used to build bigger factories by <strong>splitting and merging items</strong> onto multiple belts!<br><br>
|
||||
|
||||
reward_tunnel:
|
||||
title: Tunnel
|
||||
desc: The <strong>tunnel</strong> has been unlocked - You can now tunnel items through belts and buildings with it!
|
||||
|
||||
reward_rotater_ccw:
|
||||
title: CCW Rotating
|
||||
desc: You have unlocked a variant of the <strong>rotater</strong> - It allows to rotate counter clockwise! To build it, select the rotater and <strong>press 'T' to cycle its variants</strong>!
|
||||
|
||||
reward_miner_chainable:
|
||||
title: Chaining Extractor
|
||||
desc: You have unlocked the <strong>chaining extractor</strong>! It can <strong>forward its resources</strong> to other extractors so you can more efficiently extract resources!
|
||||
|
||||
reward_underground_belt_tier_2:
|
||||
title: Tunnel Tier II
|
||||
desc: You have unlocked a new variant of the <strong>tunnel</strong> - It has a <strong>bigger range</strong>, and you can also mix-n-match those tunnels now!
|
||||
|
||||
reward_splitter_compact:
|
||||
title: Compact Balancer
|
||||
desc: >-
|
||||
You have unlocked a compact variant of the <strong>balancer</strong> - It accepts two inputs and merges them into one!
|
||||
|
||||
reward_cutter_quad:
|
||||
title: Quad Cutting
|
||||
desc: You have unlocked a variant of the <strong>cutter</strong> - It allows you to cut shapes in <strong>four parts</strong> instead of just two!
|
||||
|
||||
reward_painter_double:
|
||||
title: Double Painting
|
||||
desc: You have unlocked a variant of the <strong>painter</strong> - It works as the regular painter but processes <strong>two shapes at once</strong> consuming just one color instead of two!
|
||||
|
||||
reward_painter_quad:
|
||||
title: Quad Painting
|
||||
desc: You have unlocked a variant of the <strong>painter</strong> - It allows to paint each part of the shape individually!
|
||||
|
||||
reward_storage:
|
||||
title: Storage Buffer
|
||||
desc: You have unlocked a variant of the <strong>trash</strong> - It allows to store items up to a given capacity!
|
||||
|
||||
reward_freeplay:
|
||||
title: Freeplay
|
||||
desc: You did it! You unlocked the <strong>free-play mode</strong>! This means that shapes are now randomly generated! (No worries, more content is planned for the standalone!)
|
||||
|
||||
reward_blueprints:
|
||||
title: Blueprints
|
||||
desc: You can now <strong>copy and paste</strong> parts of your factory! Select an area (Hold CTRL, then drag with your mouse), and press 'C' to copy it.<br><br>Pasting it is <strong>not free</strong>, you need to produce <strong>blueprint shapes</strong> to afford it! (Those you just delivered).
|
||||
|
||||
# Special reward, which is shown when there is no reward actually
|
||||
no_reward:
|
||||
title: Next level
|
||||
desc: >-
|
||||
This level gave you no reward, but the next one will! <br><br> PS: Better don't destroy your existing factory - You need <strong>all</strong> those shapes later again to <strong>unlock upgrades</strong>!
|
||||
|
||||
no_reward_freeplay:
|
||||
title: Next level
|
||||
desc: >-
|
||||
Congratulations! By the way, more content is planned for the standalone!
|
||||
|
||||
settings:
|
||||
title: Settings
|
||||
categories:
|
||||
game: Game
|
||||
app: Application
|
||||
|
||||
versionBadges:
|
||||
dev: Development
|
||||
staging: Staging
|
||||
prod: Production
|
||||
buildDate: Built <at-date>
|
||||
|
||||
labels:
|
||||
uiScale:
|
||||
title: Interface scale
|
||||
description: >-
|
||||
Changes the size of the user interface. The interface will still scale based on your device resolution, but this setting controls the amount of scale.
|
||||
scales:
|
||||
super_small: Super small
|
||||
small: Small
|
||||
regular: Regular
|
||||
large: Large
|
||||
huge: Huge
|
||||
|
||||
scrollWheelSensitivity:
|
||||
title: Zoom sensitivity
|
||||
description: >-
|
||||
Changes how sensitive the zoom is (Either mouse wheel or trackpad).
|
||||
sensitivity:
|
||||
super_slow: Super slow
|
||||
slow: Slow
|
||||
regular: Regular
|
||||
fast: Fast
|
||||
super_fast: Super fast
|
||||
|
||||
movementSpeed:
|
||||
title: Movement speed
|
||||
description: >-
|
||||
Changes how fast the view moves when using the keyboard.
|
||||
speeds:
|
||||
super_slow: Super slow
|
||||
slow: Slow
|
||||
regular: Regular
|
||||
fast: Fast
|
||||
super_fast: Super Fast
|
||||
extremely_fast: Extremely Fast
|
||||
|
||||
language:
|
||||
title: Language
|
||||
description: >-
|
||||
Change the language. All translations are user contributed and might be incomplete!
|
||||
|
||||
fullscreen:
|
||||
title: Fullscreen
|
||||
description: >-
|
||||
It is recommended to play the game in fullscreen to get the best experience. Only available in the standalone.
|
||||
|
||||
soundsMuted:
|
||||
title: Mute Sounds
|
||||
description: >-
|
||||
If enabled, mutes all sound effects.
|
||||
|
||||
musicMuted:
|
||||
title: Mute Music
|
||||
description: >-
|
||||
If enabled, mutes all music.
|
||||
|
||||
theme:
|
||||
title: Game theme
|
||||
description: >-
|
||||
Choose the game theme (light / dark).
|
||||
themes:
|
||||
dark: Dark
|
||||
light: Light
|
||||
|
||||
refreshRate:
|
||||
title: Simulation Target
|
||||
description: >-
|
||||
If you have a 144hz monitor, change the refresh rate here so the game will properly simulate at higher refresh rates. This might actually decrease the FPS if your computer is too slow.
|
||||
|
||||
alwaysMultiplace:
|
||||
title: Multiplace
|
||||
description: >-
|
||||
If enabled, all buildings will stay selected after placement until you cancel it. This is equivalent to holding SHIFT permanently.
|
||||
|
||||
offerHints:
|
||||
title: Hints & Tutorials
|
||||
description: >-
|
||||
Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game.
|
||||
|
||||
enableTunnelSmartplace:
|
||||
title: Smart Tunnels
|
||||
description: >-
|
||||
When enabled, placing tunnels will automatically remove unnecessary belts. This also enables to drag tunnels and excess tunnels will get removed.
|
||||
|
||||
vignette:
|
||||
title: Vignette
|
||||
description: >-
|
||||
Enables the vignette which darkens the screen corners and makes text easier to read.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Keybindings
|
||||
hint: >-
|
||||
Tip: Be sure to make use of CTRL, SHIFT and ALT! They enable different placement options.
|
||||
|
||||
resetKeybindings: Reset Keybindings
|
||||
|
||||
categoryLabels:
|
||||
general: Application
|
||||
ingame: Game
|
||||
navigation: Navigating
|
||||
placement: Placement
|
||||
massSelect: Mass Select
|
||||
buildings: Building Shortcuts
|
||||
placementModifiers: Placement Modifiers
|
||||
|
||||
mappings:
|
||||
confirm: Confirm
|
||||
back: Back
|
||||
mapMoveUp: Move Up
|
||||
mapMoveRight: Move Right
|
||||
mapMoveDown: Move Down
|
||||
mapMoveLeft: Move Left
|
||||
mapMoveFaster: Move Faster
|
||||
centerMap: Center Map
|
||||
|
||||
mapZoomIn: Zoom in
|
||||
mapZoomOut: Zoom out
|
||||
createMarker: Create Marker
|
||||
|
||||
menuOpenShop: Upgrades
|
||||
menuOpenStats: Statistics
|
||||
|
||||
toggleHud: Toggle HUD
|
||||
toggleFPSInfo: Toggle FPS and Debug Info
|
||||
exportScreenshot: Export whole Base as Image
|
||||
belt: *belt
|
||||
splitter: *splitter
|
||||
underground_belt: *underground_belt
|
||||
miner: *miner
|
||||
cutter: *cutter
|
||||
rotater: *rotater
|
||||
stacker: *stacker
|
||||
mixer: *mixer
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
rotateWhilePlacing: Rotate
|
||||
rotateInverseModifier: >-
|
||||
Modifier: Rotate CCW instead
|
||||
cycleBuildingVariants: Cycle Variants
|
||||
confirmMassDelete: Confirm Mass Delete
|
||||
pasteLastBlueprint: Paste last blueprint
|
||||
cycleBuildings: Cycle Buildings
|
||||
lockBeltDirection: Enable belt planner
|
||||
switchDirectionLockSide: >-
|
||||
Planner: Switch side
|
||||
|
||||
massSelectStart: Hold and drag to start
|
||||
massSelectSelectMultiple: Select multiple areas
|
||||
massSelectCopy: Copy area
|
||||
massSelectCut: Cut area
|
||||
|
||||
placementDisableAutoOrientation: Disable automatic orientation
|
||||
placeMultiple: Stay in placement mode
|
||||
placeInverse: Invert automatic belt orientation
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: About this Game
|
||||
body: >-
|
||||
This game is open source and developed by <a href="https://github.com/tobspr" target="_blank">Tobias Springer</a> (this is me).<br><br>
|
||||
|
||||
If you want to contribute, check out <a href="<githublink>" target="_blank">shapez.io on github</a>.<br><br>
|
||||
|
||||
This game wouldn't have been possible without the great discord community around my games - You should really join the <a href="<discordlink>" target="_blank">discord server</a>!<br><br>
|
||||
|
||||
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius" target="_blank">Peppsen</a> - He's awesome.<br><br>
|
||||
|
||||
Finally, huge thanks to my best friend <a href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our factorio sessions this game would never have existed.
|
||||
|
||||
changelog:
|
||||
title: Changelog
|
||||
|
||||
demo:
|
||||
features:
|
||||
restoringGames: Restoring savegames
|
||||
importingGames: Importing savegames
|
||||
oneGameLimit: Limited to one savegame
|
||||
customizeKeybindings: Customizing Keybindings
|
||||
exportingBase: Exporting whole Base as Image
|
||||
|
||||
settingNotAvailable: Not available in the demo.
|
@ -287,6 +287,10 @@ ingame:
|
||||
pasteLastBlueprint: Paste last blueprint
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -322,11 +326,6 @@ ingame:
|
||||
newUpgrade: Egy új fejlesztés elérhető!
|
||||
gameSaved: A játékod el lett mentve.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Fejlesztések
|
||||
@ -687,6 +686,29 @@ settings:
|
||||
Enables the vignette which darkens the screen corners and makes text easier
|
||||
to read.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Keybindings
|
||||
hint: >-
|
||||
@ -732,7 +754,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Abort Placement
|
||||
rotateWhilePlacing: Rotate
|
||||
rotateInverseModifier: >-
|
||||
Modifier: Rotate CCW instead
|
||||
@ -752,7 +773,8 @@ keybindings:
|
||||
exportScreenshot: Export whole Base as Image
|
||||
mapMoveFaster: Move Faster
|
||||
lockBeltDirection: Enable belt planner
|
||||
switchDirectionLockSide: 'Planner: Switch side'
|
||||
switchDirectionLockSide: "Planner: Switch side"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: A játékról
|
||||
|
@ -287,6 +287,10 @@ ingame:
|
||||
pasteLastBlueprint: Paste last blueprint
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -322,11 +326,6 @@ ingame:
|
||||
newUpgrade: A new upgrade is available!
|
||||
gameSaved: Your game has been saved.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Upgrades
|
||||
@ -688,6 +687,29 @@ settings:
|
||||
Enables the vignette which darkens the screen corners and makes text easier
|
||||
to read.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Keybindings
|
||||
hint: >-
|
||||
@ -733,7 +755,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Abort Placement
|
||||
rotateWhilePlacing: Rotate
|
||||
rotateInverseModifier: >-
|
||||
Modifier: Rotate CCW instead
|
||||
@ -753,7 +774,8 @@ keybindings:
|
||||
exportScreenshot: Export whole Base as Image
|
||||
mapMoveFaster: Move Faster
|
||||
lockBeltDirection: Enable belt planner
|
||||
switchDirectionLockSide: 'Planner: Switch side'
|
||||
switchDirectionLockSide: "Planner: Switch side"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: About this Game
|
||||
|
@ -286,6 +286,10 @@ ingame:
|
||||
pasteLastBlueprint: ブループリントの内容を設置
|
||||
lockBeltDirection: ベルトプランナーを有効化
|
||||
plannerSwitchSide: プランナーが通る側を反転
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -321,11 +325,6 @@ ingame:
|
||||
newUpgrade: 新しいアップグレードが利用可能です!
|
||||
gameSaved: ゲームをセーブしました。
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: <keyCut> キーでカット <keyCopy> キーでコピー <keyDelete> キーで削除 <keyCancel> キーでキャンセル
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: アップグレード
|
||||
@ -686,6 +685,29 @@ settings:
|
||||
description: >-
|
||||
画面の隅を暗くして文字を読みやすくするビネットを有効化します。
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: キー設定
|
||||
hint: >-
|
||||
@ -731,7 +753,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: 配置の中止
|
||||
rotateWhilePlacing: 回転
|
||||
rotateInverseModifier: >-
|
||||
Modifier: 逆時計回りにする
|
||||
@ -751,7 +772,8 @@ keybindings:
|
||||
exportScreenshot: 工場の全体像を画像出力
|
||||
mapMoveFaster: より速く移動
|
||||
lockBeltDirection: ベルトプランナーを有効化
|
||||
switchDirectionLockSide: 'プランナー: 通る側を切り替え'
|
||||
switchDirectionLockSide: "プランナー: 通る側を切り替え"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: このゲームについて
|
||||
|
@ -287,6 +287,10 @@ ingame:
|
||||
pasteLastBlueprint: Paste last blueprint
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -322,11 +326,6 @@ ingame:
|
||||
newUpgrade: 새로운 업그레이드를 할 수 있습니다!
|
||||
gameSaved: 게임이 저장되었습니다.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: 업그레이드
|
||||
@ -689,6 +688,29 @@ settings:
|
||||
Enables the vignette which darkens the screen corners and makes text easier
|
||||
to read.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: 키바인딩
|
||||
hint: >-
|
||||
@ -734,7 +756,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: 건물 배치 취소
|
||||
rotateWhilePlacing: 회전
|
||||
rotateInverseModifier: >-
|
||||
Modifier: 대신 반시계방향으로 회전
|
||||
@ -754,7 +775,8 @@ keybindings:
|
||||
exportScreenshot: Export whole Base as Image
|
||||
mapMoveFaster: Move Faster
|
||||
lockBeltDirection: Enable belt planner
|
||||
switchDirectionLockSide: 'Planner: Switch side'
|
||||
switchDirectionLockSide: "Planner: Switch side"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: 이 게임의 정보
|
||||
|
@ -287,6 +287,10 @@ ingame:
|
||||
pasteLastBlueprint: Paste last blueprint
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -322,11 +326,6 @@ ingame:
|
||||
newUpgrade: A new upgrade is available!
|
||||
gameSaved: Your game has been saved.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Upgrades
|
||||
@ -687,6 +686,29 @@ settings:
|
||||
Enables the vignette which darkens the screen corners and makes text easier
|
||||
to read.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Keybindings
|
||||
hint: >-
|
||||
@ -732,7 +754,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Abort Placement
|
||||
rotateWhilePlacing: Rotate
|
||||
rotateInverseModifier: >-
|
||||
Modifier: Rotate CCW instead
|
||||
@ -752,7 +773,8 @@ keybindings:
|
||||
exportScreenshot: Export whole Base as Image
|
||||
mapMoveFaster: Move Faster
|
||||
lockBeltDirection: Enable belt planner
|
||||
switchDirectionLockSide: 'Planner: Switch side'
|
||||
switchDirectionLockSide: "Planner: Switch side"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: About this Game
|
||||
|
@ -32,7 +32,7 @@ steamPage:
|
||||
|
||||
shapez.io is een spel dat draait om het bouwen van fabrieken om steeds complexere vormen te produceren en deze productie te automatiseren. Lever de gevraagde, steeds complexere vormen, om verder te komen in het spel en om upgrades voor je fabrieken te ontgrendelen.
|
||||
|
||||
De vraag naar vormen wordt steeds hoger, wat betekent dat je fabriek moet blijven uitbreiden om dit tegemoet te komen. Om de juiste grondstoffen te delven zul je steeds verder in het [b]oneindig grote speelveld[/b] moeten gaan werken!
|
||||
De vraag naar vormen wordt steeds groter, wat betekent dat je fabriek moet blijven uitbreiden om dit tegemoet te komen. Om de juiste grondstoffen te delven zul je steeds verder in het [b]oneindig grote speelveld[/b] moeten gaan werken!
|
||||
|
||||
Omdat simpele vormen snel saai worden, moet je kleuren mengen om de vormen te verven - combineer rode, groene en blauwe grondstoffen om verschillende kleuren te produceren en gebruik deze om de vormen te verven, zodat je de vraag hiernaar tegemoet kan komen.
|
||||
|
||||
@ -76,10 +76,10 @@ global:
|
||||
|
||||
# The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
|
||||
suffix:
|
||||
thousands: d
|
||||
thousands: k
|
||||
millions: M
|
||||
billions: MJ
|
||||
trillions: B
|
||||
billions: B
|
||||
trillions: T
|
||||
|
||||
# Shown for infinitely big numbers
|
||||
infinite: inf
|
||||
@ -154,7 +154,7 @@ mainMenu:
|
||||
showInfo: Laat zien
|
||||
contestOver: Deze competitie is voorbij - word lid van de discord (engelstalig) om berichten te krijgen van nieuwe competities!
|
||||
continue: Verder
|
||||
newGame: Niew Spel
|
||||
newGame: Nieuw Spel
|
||||
madeBy: Gemaakt door <author-link>
|
||||
|
||||
dialogs:
|
||||
@ -249,11 +249,11 @@ dialogs:
|
||||
Hier zijn er een aantal, maar zorg dat je <strong>kijkt naar de sneltoetsen</strong>!<br><br>
|
||||
<code class='keybinding'>CTRL</code> + slepen: selecteer een gebied om te kopiëren / verwijderen.<br>
|
||||
<code class='keybinding'>SHIFT</code>: Houd ingedrukt om meerdere van het zelfde gebouw te plaatsen.<br>
|
||||
<code class='keybinding'>ALT</code>: Draai de richting van geplaatste lopende banden om.<br>
|
||||
<code class='keybinding'>ALT</code>: Houd ingedrukt om de richting van lopende banden om te draaien wanneer je ze plaatst.<br>
|
||||
|
||||
createMarker:
|
||||
title: Nieuwe markering
|
||||
desc: Give it a meaningful name, you can also include a <strong>short key</strong> of a shape (Which you can generate <a href="https://viewer.shapez.io" target="_blank">here</a>)
|
||||
desc: Geef het een betekenisvolle naam. Je kunt ook een <strong>icoontje</strong> van een vorm toevoegen (die je <a href="https://viewer.shapez.io" target="_blank">hier</a> kunt maken)
|
||||
|
||||
markerDemoLimit:
|
||||
desc: Je kunt maar twee markeringen plaatsen in de demo. Koop de standalone voor een ongelimiteerde hoeveelheid markeringen!
|
||||
@ -263,10 +263,9 @@ dialogs:
|
||||
Je bent veel gebouwen aan het knippen (<count> om precies te zijn)! Weet je zeker dat je dit wil doen?
|
||||
|
||||
exportScreenshotWarning:
|
||||
title: Export screenshot
|
||||
title: Exporteer screenshot
|
||||
desc: >-
|
||||
You requested to export your base as a screenshot. Please note that this can
|
||||
be quite slow for a big base and even crash your game!
|
||||
Je hebt aangegeven dat je jouw basis wil exporteren als screenshot. Als je een grote basis hebt kan dit proces langzaam zijn en er zelfs voor zorgen dat je spel crasht!
|
||||
|
||||
ingame:
|
||||
# This is shown in the top left corner and displays useful keybindings in
|
||||
@ -275,7 +274,7 @@ ingame:
|
||||
moveMap: Beweeg speelveld
|
||||
selectBuildings: Selecteer gebied
|
||||
stopPlacement: Stop met plaatsen
|
||||
rotateBuilding: Draai een gebouw
|
||||
rotateBuilding: Draai gebouw
|
||||
placeMultiple: Plaats meerdere
|
||||
reverseOrientation: Omgekeerde oriëntatie
|
||||
disableAutoOrientation: Schakel auto-oriëntatie uit
|
||||
@ -286,6 +285,10 @@ ingame:
|
||||
pasteLastBlueprint: Plak de laatst gekopiëerde blauwdruk
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -302,8 +305,8 @@ ingame:
|
||||
speed: Snelheid
|
||||
range: Bereik
|
||||
storage: Opslag
|
||||
oneItemPerSecond: 1 item / seconde
|
||||
itemsPerSecond: <x> items / s
|
||||
oneItemPerSecond: 1 voorwerp / s
|
||||
itemsPerSecond: <x> voorwerpen / s
|
||||
itemsPerSecondDouble: (x2)
|
||||
|
||||
tiles: <x> tegels
|
||||
@ -321,11 +324,6 @@ ingame:
|
||||
newUpgrade: Er is een nieuwe upgrade beschikbaar!
|
||||
gameSaved: Je spel is opgeslagen.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Druk op <keyCut> om te knippen, <keyCopy> om te kopiëren, <keyDelete> om te verwijderen en <keyCancel> om de selectie te annuleren.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Upgrades
|
||||
@ -337,7 +335,7 @@ ingame:
|
||||
# The roman number for each tier
|
||||
tierLabels: [I, II, III, IV, V, VI, VII, VIII, IX, X]
|
||||
|
||||
maximumLevel: MAXIMUM LEVEL (Snelheid x<currentMult>)
|
||||
maximumLevel: MAXIMAAL NIVEAU (Snelheid x<currentMult>)
|
||||
|
||||
# The "Statistics" window
|
||||
statistics:
|
||||
@ -390,12 +388,12 @@ ingame:
|
||||
interactiveTutorial:
|
||||
title: Tutorial
|
||||
hints:
|
||||
1_1_extractor: Plaats een <strong>ontginner</strong> op een <strong>cirkelvorm</strong> om deze te ontginnen!
|
||||
1_1_extractor: Plaats een <strong>ontginner</strong> op een <strong>cirkelvorm</strong> om deze te onttrekken!
|
||||
1_2_conveyor: >-
|
||||
Verbind de extractor met een <strong>lopende band</strong> aan je hub!<br><br>Tip: <strong>Klik en sleep</strong> de lopende band met je muis!
|
||||
Verbind de ontginner met een <strong>lopende band</strong> aan je hub!<br><br>Tip: <strong>Klik en sleep</strong> de lopende band met je muis!
|
||||
|
||||
1_3_expand: >-
|
||||
Dit is <strong>GEEN</strong> nietsdoen-spel! bouw meer extractors en lopende banden om het doel sneller te behalen.<br><br>Tip: Houd <strong>SHIFT</strong> ingedrukt om meerdere extractors te plaatsen en gebruik <strong>R</strong> om ze te draaien.
|
||||
Dit is <strong>GEEN</strong> nietsdoen-spel! bouw meer ontginners en lopende banden om het doel sneller te behalen.<br><br>Tip: Houd <strong>SHIFT</strong> ingedrukt om meerdere ontginners te plaatsen en gebruik <strong>R</strong> om ze te draaien.
|
||||
|
||||
# All shop upgrades
|
||||
shopUpgrades:
|
||||
@ -422,11 +420,11 @@ buildings:
|
||||
miner: # Internal name for the Extractor
|
||||
default:
|
||||
name: &miner Ontginner
|
||||
description: Plaats op een vorm of kleur om deze te ontginnen.
|
||||
description: Plaats op een vorm of kleur om deze te onttrekken.
|
||||
|
||||
chainable:
|
||||
name: Ontginner (Ketting)
|
||||
description: Plaats op een vorm of kleur om deze te ontginnen. Kan achter elkaar worden geplaatst.
|
||||
description: Plaats op een vorm of kleur om deze te onttrekken. Kan achter elkaar worden geplaatst.
|
||||
|
||||
underground_belt: # Internal name for the Tunnel
|
||||
default:
|
||||
@ -512,12 +510,12 @@ storyRewards:
|
||||
|
||||
reward_rotater:
|
||||
title: Roteren
|
||||
desc: De <strong>roteerder</strong> is ontgrendeld - ! Het draait vormen 90 graden met de klok mee.
|
||||
desc: De <strong>roteerder</strong> is ontgrendeld - Het draait vormen 90 graden met de klok mee.
|
||||
|
||||
reward_painter:
|
||||
title: Verven
|
||||
desc: >-
|
||||
De <strong>verver</strong> is ontgrendeld - Onttrek wat kleurstoffen (net als met vormen) en combineer deze met een vorm in de verver om ze een kleur te geven!<br><br>PS: Ik werk aan een oplossing voor kleurenblinden!
|
||||
De <strong>verver</strong> is ontgrendeld - Onttrek wat kleurstoffen (net als met vormen) en combineer deze met een vorm in de verver om de vorm een kleur te geven!<br><br>PS: Ik werk aan een oplossing voor kleurenblinden!
|
||||
|
||||
reward_mixer:
|
||||
title: Kleuren mengen
|
||||
@ -537,11 +535,11 @@ storyRewards:
|
||||
|
||||
reward_rotater_ccw:
|
||||
title: Roteren (andersom)
|
||||
desc: Je hebt een variant van de <strong>rotater</strong> ontgrendeld - Het roteert voorwerpen tegen de klok in! Om het te bouwen selecteer je de roteerder en <strong>druk je op 'T' om tussen varianten te wisselen</strong>!
|
||||
desc: Je hebt een variant van de <strong>roteerder</strong> ontgrendeld - Het roteert voorwerpen tegen de klok in! Om het te bouwen selecteer je de roteerder en <strong>druk je op 'T' om tussen varianten te wisselen</strong>!
|
||||
|
||||
reward_miner_chainable:
|
||||
title: Ketting Extractor
|
||||
desc: Je hebt de <strong>Ketting extractor</strong> ontgrendeld! Deze kan <strong>grondstoffen doorsturen</strong> naar andere extractors, waardoor je efficiënter grondstoffen kan onttrekken!
|
||||
title: Ketting-ontginner
|
||||
desc: Je hebt de <strong>Ketting-ontginner</strong> ontgrendeld! Deze kan <strong>grondstoffen doorsturen</strong> naar andere ontginners, waardoor je efficiënter grondstoffen kan onttrekken!
|
||||
|
||||
reward_underground_belt_tier_2:
|
||||
title: Tunnel Niveau II
|
||||
@ -585,7 +583,7 @@ storyRewards:
|
||||
no_reward_freeplay:
|
||||
title: Volgende level
|
||||
desc: >-
|
||||
Gefeliciteerd! By the way, het spel wordt in de toekomst nog verder uitgebereid in de standalone!
|
||||
Gefeliciteerd! Even tussendoor, het spel wordt in de toekomst nog verder uitgebereid in de standalone!
|
||||
|
||||
settings:
|
||||
title: Opties
|
||||
@ -677,15 +675,37 @@ settings:
|
||||
super_fast: Super snel
|
||||
extremely_fast: Extreem snel
|
||||
enableTunnelSmartplace:
|
||||
title: Smart Tunnels
|
||||
title: Slimme Tunnels
|
||||
description: >-
|
||||
When enabled, placing tunnels will automatically remove unnecessary belts.
|
||||
This also enables to drag tunnels and excess tunnels will get removed.
|
||||
Wanneer dit aan staat zullen tunnels automatisch onnodige lopende banden verwijderen.
|
||||
Ook kun je dan tunnels slepen en onnodige tunnels worden ook verwijderd.
|
||||
vignette:
|
||||
title: Vignette
|
||||
description: >-
|
||||
Enables the vignette which darkens the screen corners and makes text easier
|
||||
to read.
|
||||
Schakelt de vignet in, wat de hoeken van het scherm donkerder maakt zodat de tekst makkelijker te lezen is.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Sneltoetsen
|
||||
@ -732,7 +752,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Cancel plaatsen
|
||||
rotateWhilePlacing: Roteren
|
||||
rotateInverseModifier: >-
|
||||
Aanpassing: Roteer tegen de klok in
|
||||
@ -749,30 +768,31 @@ keybindings:
|
||||
placeInverse: Omkeren richting lopende band
|
||||
pasteLastBlueprint: Plak laatst gekopiëerde blauwdruk
|
||||
massSelectCut: Knip geselecteerd gebied
|
||||
exportScreenshot: Export whole Base as Image
|
||||
mapMoveFaster: Move Faster
|
||||
lockBeltDirection: Enable belt planner
|
||||
switchDirectionLockSide: 'Planner: Switch side'
|
||||
exportScreenshot: Exporteer volledige basis als afbeelding
|
||||
mapMoveFaster: Beweeg sneller
|
||||
lockBeltDirection: Schakel lopende band-planner in
|
||||
switchDirectionLockSide: "Planner: Wissel van kant"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: Over dit spel
|
||||
body: >-
|
||||
This game is open source and developed by <a href="https://github.com/tobspr"
|
||||
target="_blank">Tobias Springer</a> (this is me).<br><br>
|
||||
Dit spel is open source en ontwikkeld door <a href="https://github.com/tobspr"
|
||||
target="_blank">Tobias Springer</a> (dit ben ik).<br><br>
|
||||
|
||||
If you want to contribute, check out <a href="<githublink>"
|
||||
target="_blank">shapez.io on github</a>.<br><br>
|
||||
Als je ook bij wil dragen, ga dan naar <a href="<githublink>"
|
||||
target="_blank">shapez.io op github</a>.<br><br>
|
||||
|
||||
This game wouldn't have been possible without the great discord community
|
||||
around my games - You should really join the <a href="<discordlink>"
|
||||
target="_blank">discord server</a>!<br><br>
|
||||
Dit spel was niet mogelijk geweest zonder de geweldige discord community
|
||||
rondom mijn spellen - Je zou eens lid moeten worden van de <a href="<discordlink>"
|
||||
target="_blank">discord server</a> (engelstalig)!<br><br>
|
||||
|
||||
The soundtrack was made by <a href="https://soundcloud.com/pettersumelius"
|
||||
target="_blank">Peppsen</a> - He's awesome.<br><br>
|
||||
De muziek is gemaakt door <a href="https://soundcloud.com/pettersumelius"
|
||||
target="_blank">Peppsen</a> - Hij is geweldig.<br><br>
|
||||
|
||||
Finally, huge thanks to my best friend <a
|
||||
href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Without our
|
||||
factorio sessions this game would never have existed.
|
||||
Tot slot wil ik mijn beste vriend <a
|
||||
href="https://github.com/niklas-dahl" target="_blank">Niklas</a> bedanken - Zonder onze
|
||||
factorio-sessies zou dit spel nooit bestaan hebben.
|
||||
|
||||
changelog:
|
||||
title: Changelog
|
||||
@ -783,6 +803,6 @@ demo:
|
||||
importingGames: Savegames importeren
|
||||
oneGameLimit: Gelimiteerd tot één savegame
|
||||
customizeKeybindings: Custom sneltoetsen
|
||||
exportingBase: Exporting whole Base as Image
|
||||
exportingBase: Exporteer volledige basis als afbeelding
|
||||
|
||||
settingNotAvailable: Niet beschikbaar in de demo.
|
||||
|
@ -285,6 +285,10 @@ ingame:
|
||||
pasteLastBlueprint: Lim inn forrige blåkopi
|
||||
lockBeltDirection: Aktiver båndplanleggeren
|
||||
plannerSwitchSide: Flipp båndplanleggeren
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -320,11 +324,6 @@ ingame:
|
||||
newUpgrade: En ny oppgradering er tilgjengelig!
|
||||
gameSaved: Spillet ditt er lagret.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Trykk <keyCut> for å klippe, <keyCopy> for å kopiere, <keyDelete> for å slette, og <keyCancel> for å avbryte.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Oppgraderinger
|
||||
@ -687,6 +686,29 @@ settings:
|
||||
Aktiverer vignett som gjør hjørnene på skjermen mørkere og teksten lettere
|
||||
å lese.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Hurtigtaster
|
||||
hint: >-
|
||||
@ -734,7 +756,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Avbryt Plassering
|
||||
rotateWhilePlacing: Roter
|
||||
rotateInverseModifier: >-
|
||||
Alternativ: Roter mot klokken isteden
|
||||
@ -752,7 +773,8 @@ keybindings:
|
||||
placeMultiple: Forbli i plasseringsmodus
|
||||
placeInverse: Inverter automatisk transportbånd orientering
|
||||
lockBeltDirection: Enable belt planner
|
||||
switchDirectionLockSide: 'Planner: Switch side'
|
||||
switchDirectionLockSide: "Planner: Switch side"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: Om dette spillet
|
||||
|
@ -21,7 +21,7 @@
|
||||
|
||||
steamPage:
|
||||
# This is the short text appearing on the steam page
|
||||
shortText: shapez.io to gra polegająca na budowaniu automatycznej fabryki różnych, z każdym poziomem bardziej skomplikowanych kształtów, na mapie która nie ma końca.
|
||||
shortText: shapez.io to gra polegająca na budowaniu fabryki automatyzującej tworzenie i łączenie ze sobą coraz bardziej skomplikowanych kształtów na mapie, która nie ma końca.
|
||||
|
||||
# This is the long description for the steam page - It is contained here so you can help to translate it, and I will regulary update the store page.
|
||||
# NOTICE:
|
||||
@ -30,13 +30,13 @@ steamPage:
|
||||
longText: >-
|
||||
[img]{STEAM_APP_IMAGE}/extras/store_page_gif.gif[/img]
|
||||
|
||||
shapez.io jest grą o budowaniu i automatyzacji fabryki różnych kształtów. Dostarczaj coraz bardziej skomplikowane kształty, żeby odblokować nowe ulepszenia żeby przyspieszyć produkcję w twojej fabryce.
|
||||
shapez.io jest grą o budowaniu i automatyzacji fabryki różnych kształtów. Dostarczaj coraz bardziej skomplikowane kształty, żeby odblokować nowe ulepszenia i przyspieszyć produkcję w twojej fabryce.
|
||||
|
||||
Będziesz potrzebował produkować coraz więcej elementów, więc potrzebujesz również sporo miejsca na powiększanie fabryki. [b]Nieskończona mapa[/b] to coś co ułatwi Ci ten proces!
|
||||
Będziesz potrzebował coraz więcej elementów, więc również sporo miejsca na powiększanie fabryki. [b]Nieskończona mapa[/b] to coś co ułatwi Ci ten proces!
|
||||
|
||||
Same kształty mogą z czasem być nudne, dlatego gra będzie wymagała od Ciebie malowania kształtów różnymi kolorami - Połącz czerwoną, zieloną i niebieską farbę, a powstanie farba o innym kolorze. Korzystaj z farb by postępować z kolejnymi poziomami.
|
||||
Same kształty mogą z czasem być nudne, dlatego gra będzie wymagała od Ciebie malowania ich różnymi kolorami - połącz czerwoną, zieloną i niebieską farbę, a powstanie nowa o innym kolorze. Korzystaj z farb, by móc ukończyć kolejne poziomy.
|
||||
|
||||
Na tą chwilę gra oferuje 18 poziomów (które powinny zagwarantować rozrywkę na conajmniej kilka godzin!) ale bez przerwy dodaję nowe - Jest naprawdę wiele do dodania!
|
||||
Na tę chwilę gra oferuje 18 poziomów (które powinny zagwarantować rozrywkę na co najmniej kilka godzin!), ale bez przerwy dodaję nowe - jest naprawdę wiele do dodania!
|
||||
|
||||
|
||||
[b]Zalety pełnej wersji[/b]
|
||||
@ -46,21 +46,21 @@ steamPage:
|
||||
[*] Nielimitowana ilość zapisanych gier
|
||||
[*] Ciemny motyw gry
|
||||
[*] Więcej ustawień
|
||||
[*] Pomóż mi w dalszym rozwijaniu shapez.io ❤️
|
||||
[*] Pomożesz mi w dalszym rozwijaniu shapez.io ❤️
|
||||
[*] Więcej zawartości niedługo!
|
||||
[/list]
|
||||
|
||||
[b]Zaplanowana zawartość & Sugestie społeczności[/b]
|
||||
|
||||
Ta gra jest open-source - Kaźdy może pomóc w rozwoju! Poza tym, słucham tego co społeczność ma do powiedenia w kwestii gry! Staram się czytać wszystkie sugestie i odbierać jak najwięcej informacji zwrotnych na temat gry.
|
||||
Ta gra jest open-source - Każdy może pomóc w rozwoju! Poza tym słucham tego, co społeczność ma do powiedzenia w kwestii gry! Staram się czytać wszystkie sugestie i odbierać jak najwięcej informacji zwrotnych na temat gry.
|
||||
|
||||
[list]
|
||||
[*] Kampania, gdzie do budowy potrzeba kształtów
|
||||
[*] Więcej poziomów i budynków (tylko w pełnej wersji)
|
||||
[*] Inne mapy, może z przeszkodami
|
||||
[*] Możliwość modyfikowania parametrów generowanjej mapy (Ilość i rozmiar surowców, ziarno świata, itd.)
|
||||
[*] Możliwość modyfikowania parametrów generowanej mapy (ilość i rozmiar surowców, ziarno świata, itd.)
|
||||
[*] Więcej rodzajów kształtów
|
||||
[*] Optymalizacja (Mimo wszystko gra już działa dośc płynnie!)
|
||||
[*] Optymalizacja (mimo wszystko gra już działa dość płynnie!)
|
||||
[*] Tryb dla ślepoty barw
|
||||
[*] I wiele więcej!
|
||||
[/list]
|
||||
@ -117,7 +117,7 @@ demoBanners:
|
||||
# This is the "advertisement" shown in the main menu and other various places
|
||||
title: Wersja demo
|
||||
intro: >-
|
||||
Kup pełną wersję gry, by odblokować więcej funckji!
|
||||
Kup pełną wersję gry, by odblokować więcej funkcji!
|
||||
|
||||
mainMenu:
|
||||
play: Rozpocznij
|
||||
@ -207,11 +207,11 @@ dialogs:
|
||||
|
||||
editKeybinding:
|
||||
title: Zmień klawiszologię
|
||||
desc: Naciśnij klawisz bądź przycisk myszy który chcesz przypisać, lub wciśnij Escape aby anulować.
|
||||
desc: Naciśnij klawisz bądź przycisk myszy, który chcesz przypisać lub wciśnij Escape, aby anulować.
|
||||
|
||||
resetKeybindingsConfirmation:
|
||||
title: Zresetuj klawiszologię
|
||||
desc: Ta akcja zresetuje wszystkie ustawienia klawiszologii do domyśnych wartości. Proszę potwierdzić.
|
||||
desc: Ta akcja zresetuje wszystkie ustawienia klawiszologii do domyślnych wartości. Proszę potwierdzić.
|
||||
|
||||
keybindingsResetOk:
|
||||
title: Reset Klawiszologii
|
||||
@ -233,7 +233,7 @@ dialogs:
|
||||
upgradesIntroduction:
|
||||
title: Ulepszenia
|
||||
desc: >-
|
||||
Wszystkie kształty które produkujesz mogą zostać użyte do ulepszeń - <strong>Nie niszcz starych fabryk!</strong>
|
||||
Wszystkie kształty, które produkujesz, mogą zostać użyte do ulepszeń - <strong>Nie niszcz starych fabryk!</strong>
|
||||
Zakładka "Ulepszenia" dostępna jest w prawym górnym rogu.
|
||||
|
||||
massDeleteConfirm:
|
||||
@ -253,7 +253,7 @@ dialogs:
|
||||
Oto kilka z nich, lecz nie zmienia to faktu iż <strong>warto sprawdzić dostępne kombinacje</strong>!<br><br>
|
||||
<code class='keybinding'>CTRL</code> + Przeciąganie: Zaznacz obszar do kopiowania/usuwania.<br>
|
||||
<code class='keybinding'>SHIFT</code>: Przytrzymaj, by wstawić więcej niż jeden budynek.<br>
|
||||
<code class='keybinding'>ALT</code>: Odwróć orientacje stawianych taśmociągów.<br>
|
||||
<code class='keybinding'>ALT</code>: Odwróć orientację stawianych taśmociągów.<br>
|
||||
|
||||
createMarker:
|
||||
title: Nowy Znacznik
|
||||
@ -271,7 +271,7 @@ dialogs:
|
||||
title: Tworzenie zrzutu fabryki
|
||||
desc: >-
|
||||
Zamierzasz wyeksportować swoją fabrykę jako zrzut ekranu. W przypadku dużej
|
||||
fabryki ta akja może być bardzo wolna, a nawet może spowodować zawieszenie się lub awarię gry!
|
||||
fabryki ta akcja może być bardzo wolna, a nawet może spowodować zawieszenie się lub awarię gry!
|
||||
Czy na pewno chcesz kontynuować?
|
||||
|
||||
ingame:
|
||||
@ -283,15 +283,19 @@ ingame:
|
||||
stopPlacement: Przestań stawiać
|
||||
rotateBuilding: Obróć budynek
|
||||
placeMultiple: Postaw więcej
|
||||
reverseOrientation: Odwróć orientacje
|
||||
disableAutoOrientation: Wyłącz orientacje automatyczną
|
||||
reverseOrientation: Odwróć orientację
|
||||
disableAutoOrientation: Wyłącz orientację automatyczną
|
||||
toggleHud: Przełącz widoczność interfejsu
|
||||
placeBuilding: Postaw budynek
|
||||
createMarker: Stwórz znacznik
|
||||
delete: Usuń
|
||||
pasteLastBlueprint: Wklej ostatnio skopiowany obszar
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
lockBeltDirection: Tryb planowania taśmociągu
|
||||
plannerSwitchSide: Obróć planowany taśmociąg
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -327,11 +331,6 @@ ingame:
|
||||
newUpgrade: Nowe ulepszenie dostępne!
|
||||
gameSaved: Postęp gry został zapisany.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Naciśnij <keyCut> by wyciąć, <keyCopy> by skopiować, <keyDelete> by usunąć lub <keyCancel> by anulować.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Ulepszenia
|
||||
@ -392,18 +391,18 @@ ingame:
|
||||
waypoints:
|
||||
waypoints: Znaczniki
|
||||
hub: Budynek Główny
|
||||
description: Kliknij znacznik lewym przyciskiem myszy, by się do niego przenieść lub prawym, by go usunąć.<br><br>Naciśnij <keybinding> by stworzyć marker na środku widoku lub <strong>prawy przycisk myszy</strong> by stworzyć na wskazanej lokacji.
|
||||
description: Kliknij znacznik lewym przyciskiem myszy, by się do niego przenieść lub prawym, by go usunąć.<br><br>Naciśnij <keybinding>, by stworzyć marker na środku widoku lub <strong>prawy przycisk myszy</strong>, by stworzyć na wskazanej lokacji.
|
||||
creationSuccessNotification: Utworzono znacznik.
|
||||
|
||||
# Interactive tutorial
|
||||
interactiveTutorial:
|
||||
title: Tutorial
|
||||
hints:
|
||||
1_1_extractor: Postaw <strong>ekstraktor</strong> na źródle <strong>kształtu koła</strong> aby go wydobyć!
|
||||
1_1_extractor: Postaw <strong>ekstraktor</strong> na źródle <strong>kształtu koła</strong>, aby go wydobyć!
|
||||
1_2_conveyor: >-
|
||||
Połącz ekstraktor <strong>taśmociągiem</strong> do głównego budynku!<br><br>Porada: <strong>Kliknij i przeciągnij</strong> taśmociąg myszką!
|
||||
1_3_expand: >-
|
||||
To <strong>NIE JEST</strong> gra "do poczekania"! Buduj więcej taśmociągów i ekstraktorów by wydobywać szybciej.<br><br>Porada: Przytrzymaj <strong>SHIFT</strong> by postawić wiele ekstratkorów. Naciśnij <strong>R</strong>, by je obracać.
|
||||
To <strong>NIE JEST</strong> gra "do poczekania"! Buduj więcej taśmociągów i ekstraktorów, by wydobywać szybciej.<br><br>Porada: Przytrzymaj <strong>SHIFT</strong>, by postawić wiele ekstraktorów. Naciśnij <strong>R</strong>, by je obracać.
|
||||
# All shop upgrades
|
||||
shopUpgrades:
|
||||
belt:
|
||||
@ -429,7 +428,7 @@ buildings:
|
||||
belt:
|
||||
default:
|
||||
name: &belt Taśmociąg
|
||||
description: Transportuje obiekty, przytrzymaj by postawić kilka.
|
||||
description: Transportuje obiekty, przytrzymaj i przeciągnij, by postawić kilka.
|
||||
|
||||
miner: # Internal name for the Extractor
|
||||
default:
|
||||
@ -497,10 +496,10 @@ buildings:
|
||||
description: &painter_desc Koloruje kształt za pomocą koloru dostarczonego od boku.
|
||||
double:
|
||||
name: Malarz (Podwójny)
|
||||
description: Koloruje kształt za pomocą koloru dostarczonych od boku. Koloruje 2 kształty używając 1 barwnika.
|
||||
description: Koloruje kształt za pomocą koloru dostarczonego od boku. Koloruje 2 kształty używając 1 barwnika.
|
||||
quad:
|
||||
name: Malarz (Poczwórny)
|
||||
description: Koloruje każdą ćwiarkę kształtu na inny kolor, używając dostarczonych kolorów.
|
||||
description: Koloruje każdą ćwiartkę kształtu na inny kolor, używając dostarczonych kolorów.
|
||||
mirrored:
|
||||
name: *painter
|
||||
description: *painter_desc
|
||||
@ -519,18 +518,18 @@ storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
title: Przecinanie Kształtów
|
||||
desc: >-
|
||||
Odblokowano nową maszynę: <strong>przecinak</strong> - tnie kształt na pół <strong>pionowo - od góry do dołu</strong>, niezależnie od orientacji!<br><br>Upewnij się że zniszczysz nichciane kawałki, ponieważ <strong>może się zatkać</strong> - Na potrzeby tego otrzymujesz też kosz - niszczy wszystko co do niego przekierujesz!
|
||||
Odblokowano nową maszynę: <strong>Przecinak</strong> - tnie kształt na pół <strong>pionowo - od góry do dołu</strong>, niezależnie od orientacji!<br><br>Upewnij się, że zniszczysz niechciane kawałki, ponieważ <strong>może się zatkać</strong> - Na potrzeby tego otrzymujesz też kosz - niszczy wszystko co do niego przekierujesz!
|
||||
|
||||
reward_rotater:
|
||||
title: Obracanie
|
||||
desc: >-
|
||||
Odblokowano nową maszynę: <strong>Obracacz</strong>! Obraca wejście o 90 stopni zgodnie z wskazówkami zegara.
|
||||
Odblokowano nową maszynę: <strong>Obracacz</strong>! Obraca wejście o 90 stopni zgodnie ze wskazówkami zegara.
|
||||
|
||||
#2nd translator's note: "Color objects" should be translated as "dye"
|
||||
reward_painter:
|
||||
title: Malowanie
|
||||
desc: >-
|
||||
Odblokowano nową maszynę: <strong>Malarz</strong> - Wydobądź barwniki (tak jak w przypadku kształtów) i połącz z kształtem by go pomalować!<br><br>PS: Jeśli cierpisz na ślepotę barw, pracuje nad tym!
|
||||
Odblokowano nową maszynę: <strong>Malarz</strong> - Wydobądź barwniki (tak jak w przypadku kształtów) i połącz z kształtem, by go pomalować!<br><br>PS: Jeśli cierpisz na ślepotę barw, pracuję nad tym!
|
||||
|
||||
reward_mixer:
|
||||
title: Mieszanie
|
||||
@ -544,7 +543,7 @@ storyRewards:
|
||||
|
||||
reward_splitter:
|
||||
title: Rozdzielacz/Łącznik
|
||||
desc: Wielofunkcyjne urządzenie <strong>balansujące</strong> zostało odblokowane - Może zostać wykorzystane do tworzenia większych fabryk poprzez <strong>rozdzielanie i łaczenie taśmociągów</strong>!<br><br>
|
||||
desc: Wielofunkcyjne urządzenie <strong>balansujące</strong> zostało odblokowane - Może zostać wykorzystane do tworzenia większych fabryk poprzez <strong>rozdzielanie i łączenie taśmociągów</strong>!<br><br>
|
||||
|
||||
reward_tunnel:
|
||||
title: Tunel
|
||||
@ -552,11 +551,11 @@ storyRewards:
|
||||
|
||||
reward_rotater_ccw:
|
||||
title: Obracanie odwrotne
|
||||
desc: Odblokowano nowy wariant <strong>Obracacza</strong> - Pozwala odwracać przeciwnie do wskazówek zegara! Aby zbudować, zaznacz Obracacz i <strong>naciśnij 'T' by zmieniać warianty</strong>!
|
||||
desc: Odblokowano nowy wariant <strong>Obracacza</strong> - Pozwala odwracać przeciwnie do wskazówek zegara! Aby zbudować, zaznacz Obracacz i <strong>naciśnij 'T', by zmieniać warianty</strong>!
|
||||
|
||||
reward_miner_chainable:
|
||||
title: Wydobycie Łańcuchowe
|
||||
desc: Odblokowano nowy wariant <strong>ekstraktora</strong>! Może <strong>przekierować obiekty</strong> do ekstraktorów przed nim zwiększając efektywność wydbobycia!
|
||||
desc: Odblokowano nowy wariant <strong>ekstraktora</strong>! Może <strong>przekierować obiekty</strong> do ekstraktorów przed nim, zwiększając efektywność wydobycia!
|
||||
|
||||
reward_underground_belt_tier_2:
|
||||
title: Tunel Poziomu II
|
||||
@ -574,11 +573,11 @@ storyRewards:
|
||||
|
||||
reward_painter_double:
|
||||
title: Podwójne Malowanie
|
||||
desc: Odblokowano nowy wariant <strong>Malarza</strong> - Działa jak zwykły malarz, z tą różnicą że maluje <strong>dwa kształty na raz</strong> pobierając wyłącznie jeden barwnik!
|
||||
desc: Odblokowano nowy wariant <strong>Malarza</strong> - Działa jak zwykły malarz, z tą różnicą, że maluje <strong>dwa kształty na raz</strong>, pobierając wyłącznie jeden barwnik!
|
||||
|
||||
reward_painter_quad:
|
||||
title: Poczwórne malowanie
|
||||
desc: Odblokowano nowy wariant <strong>Malarza</strong> - Pozwala malować każdą ćwiarkę kształtu na inny kolor!
|
||||
desc: Odblokowano nowy wariant <strong>Malarza</strong> - Pozwala malować każdą ćwiartkę kształtu na inny kolor!
|
||||
|
||||
reward_storage:
|
||||
title: Magazyn
|
||||
@ -601,7 +600,7 @@ storyRewards:
|
||||
no_reward:
|
||||
title: Następny Poziom
|
||||
desc: >-
|
||||
Ten poziom nie daje nagrody, lecz kolejny już tak! <br><br> PS: Lepiej nie niszczyć istniejących fabryk - Potrzebujesz <strong>wszystkich</strong> kształtów w późniejszych etapach by <strong>odblokować ulepszenia</strong>!
|
||||
Ten poziom nie daje nagrody, lecz kolejny już tak! <br><br> PS: Lepiej nie niszczyć istniejących fabryk - Potrzebujesz <strong>wszystkich</strong> kształtów w późniejszych etapach, by <strong>odblokować ulepszenia</strong>!
|
||||
|
||||
no_reward_freeplay:
|
||||
title: Następny Poziom
|
||||
@ -686,7 +685,7 @@ settings:
|
||||
refreshRate:
|
||||
title: Częstość Odświeżania
|
||||
description: >-
|
||||
Jeśli posiadasz monitor z częstotliwością odświeżania 144hz, zmień tę opcje na poprawną częstotliwość odświeżania ekranu. To może wpłynąć na FPS jeśli masz za wolny komputer.
|
||||
Jeśli posiadasz monitor z częstotliwością odświeżania 144hz, zmień tę opcje na poprawną częstotliwość odświeżania ekranu. Może to wpłynąć na FPS jeśli masz za wolny komputer.
|
||||
|
||||
alwaysMultiplace:
|
||||
title: Wielokrotne budowanie
|
||||
@ -696,18 +695,40 @@ settings:
|
||||
offerHints:
|
||||
title: Porady i Tutoriale
|
||||
description: >-
|
||||
Oferuje porady i tutoriale podczas gry. Dodatkowo, chowa pewne elementy interfejsu by ułatwić poznanie gry.
|
||||
Oferuje porady i tutoriale podczas gry. Dodatkowo chowa pewne elementy interfejsu, by ułatwić poznanie gry.
|
||||
|
||||
enableTunnelSmartplace:
|
||||
title: Smart Tunnels
|
||||
description: >-
|
||||
When enabled, placing tunnels will automatically remove unnecessary belts.
|
||||
This also enables to drag tunnels and excess tunnels will get removed.
|
||||
Gdy włączone, umieszczenie tunelu automatycznie usuwa zbędny taśmociąg.
|
||||
Pozwala również budować tunele przez przeciąganie i nadmiarowe tunele zostają usunięte.
|
||||
vignette:
|
||||
title: Vignette
|
||||
description: >-
|
||||
Enables the vignette which darkens the screen corners and makes text easier
|
||||
to read.
|
||||
Włącza winietowanie, które przyciemnia rogi ekranu i poprawia czytelność tekstu.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Klawiszologia
|
||||
@ -742,7 +763,7 @@ keybindings:
|
||||
menuOpenStats: Statystyki
|
||||
|
||||
toggleHud: Przełącz widoczność interfejsu
|
||||
toggleFPSInfo: Pokaż Licznik FPS i infomacje do debugowania
|
||||
toggleFPSInfo: Pokaż Licznik FPS i informacje do debugowania
|
||||
belt: *belt
|
||||
splitter: *splitter
|
||||
underground_belt: *underground_belt
|
||||
@ -754,26 +775,26 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Anuluj Stawianie
|
||||
rotateWhilePlacing: Obróć
|
||||
rotateInverseModifier: >-
|
||||
Modyfikator: Obróć Odrwotnie
|
||||
Modyfikator: Obróć Odwrotnie
|
||||
cycleBuildingVariants: Zmień Wariant
|
||||
confirmMassDelete: Potwierdź usuwanie
|
||||
cycleBuildings: Zmień Budynek
|
||||
|
||||
massSelectStart: Przytrzymaj i przeciągnij by zaznaczyć
|
||||
massSelectStart: Przytrzymaj i przeciągnij, by zaznaczyć
|
||||
massSelectSelectMultiple: Zaznacz kilka obszarów
|
||||
massSelectCopy: Skopiuj obszar
|
||||
|
||||
placementDisableAutoOrientation: Wyłącz automatyczną orientacje
|
||||
placementDisableAutoOrientation: Wyłącz automatyczną orientację
|
||||
placeMultiple: Pozostań w trybie stawiania
|
||||
placeInverse: Odwróć automatyczną orientacje pasów
|
||||
placeInverse: Odwróć automatyczną orientację pasów
|
||||
pasteLastBlueprint: Wklej ostatnio skopiowany obszar
|
||||
massSelectCut: Wytnij obszar
|
||||
exportScreenshot: Wyeksportuj całą fabrykę jako zrzut ekranu
|
||||
lockBeltDirection: Enable belt planner
|
||||
switchDirectionLockSide: 'Planner: Switch side'
|
||||
lockBeltDirection: Tryb planowania taśmociągu
|
||||
switchDirectionLockSide: "Planowanie taśmociągu: Zmień stronę"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: O Grze
|
||||
@ -782,7 +803,7 @@ about:
|
||||
Jeżeli chcesz pomóc w rozwoju gry, sprawdź <a href="<githublink>" target="_blank">repozytorium shapez.io na Githubie</a>.<br><br>
|
||||
Ta gra nie byłaby możliwa bez wspaniałej społeczności Discord skupionej na moich grach - Naprawdę powinieneś dołączyć do <a href="<discordlink>" target="_blank">mojego serwera Discord</a>!<br><br>
|
||||
Ścieżka dźwiękowa tej gry została stworzona przez <a href="https://soundcloud.com/pettersumelius" target="_blank">Peppsena</a> - Jest niesamowity.<br><br>
|
||||
Na koniec, wielkie dzięki mojemu najlepszemu przyjacielowi: <a href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Bez naszego wspólnego grania w Factorio, ta gra nigdy by nie powstała.
|
||||
Na koniec, wielkie dzięki mojemu najlepszemu przyjacielowi: <a href="https://github.com/niklas-dahl" target="_blank">Niklas</a> - Bez naszego wspólnego grania w Factorio ta gra nigdy by nie powstała.
|
||||
|
||||
changelog:
|
||||
title: Dziennik zmian
|
||||
|
@ -287,6 +287,10 @@ ingame:
|
||||
pasteLastBlueprint: Colar último projeto
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -322,11 +326,6 @@ ingame:
|
||||
newUpgrade: Nova melhoria disponível!
|
||||
gameSaved: Seu jogo foi salvo.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Pressione <keyCut> para cortar, <keyCopy> para copiar, <keyDelete> para destruir e <keyCancel> para cancelar.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Melhorias
|
||||
@ -688,6 +687,29 @@ settings:
|
||||
Enables the vignette which darkens the screen corners and makes text easier
|
||||
to read.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Controles
|
||||
hint: >-
|
||||
@ -733,7 +755,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Cancelar
|
||||
rotateWhilePlacing: Rotacionar
|
||||
rotateInverseModifier: >-
|
||||
Modifier: Rotação anti-horária
|
||||
@ -753,7 +774,8 @@ keybindings:
|
||||
exportScreenshot: Exportar base inteira como imagem
|
||||
mapMoveFaster: Move Faster
|
||||
lockBeltDirection: Enable belt planner
|
||||
switchDirectionLockSide: 'Planner: Switch side'
|
||||
switchDirectionLockSide: "Planner: Switch side"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: Sobre o jogo
|
||||
|
@ -286,6 +286,10 @@ ingame:
|
||||
pasteLastBlueprint: Colar o último blueprint
|
||||
lockBeltDirection: Ativa o planeamento de tapetes
|
||||
plannerSwitchSide: Lado de rotação do planeamento
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -321,11 +325,6 @@ ingame:
|
||||
newUpgrade: Está disponível um novo upgrade!
|
||||
gameSaved: O teu jogo foi gravado.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Clica <keyCut> para cortar, <keyCopy> para copiar, <keyDelete> para remover e <keyCancel> para cancelar.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Upgrades
|
||||
@ -686,6 +685,29 @@ settings:
|
||||
Ativa a vinheta, que escurece os cantos do ecrã e torna a leitura do texto
|
||||
mais fácil.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Atalhos
|
||||
hint: >-
|
||||
@ -731,7 +753,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Cancelar posicionamento
|
||||
rotateWhilePlacing: Rotação
|
||||
rotateInverseModifier: >-
|
||||
Modifier: Rotação CCW
|
||||
@ -751,7 +772,8 @@ keybindings:
|
||||
exportScreenshot: Exportar a base como uma imagem
|
||||
mapMoveFaster: Mover rapidamente
|
||||
lockBeltDirection: Ativa o planeamento de tapetes
|
||||
switchDirectionLockSide: 'Planeador: Troca o lado'
|
||||
switchDirectionLockSide: "Planeador: Troca o lado"
|
||||
pipette: Pipette
|
||||
about:
|
||||
title: Sobre o jogo
|
||||
body: >-
|
||||
|
@ -287,6 +287,10 @@ ingame:
|
||||
pasteLastBlueprint: Paste last blueprint
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -322,11 +326,6 @@ ingame:
|
||||
newUpgrade: A new upgrade is available!
|
||||
gameSaved: Your game has been saved.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Upgrades
|
||||
@ -687,6 +686,29 @@ settings:
|
||||
Enables the vignette which darkens the screen corners and makes text easier
|
||||
to read.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Keybindings
|
||||
hint: >-
|
||||
@ -732,7 +754,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Abort Placement
|
||||
rotateWhilePlacing: Rotate
|
||||
rotateInverseModifier: >-
|
||||
Modifier: Rotate CCW instead
|
||||
@ -752,7 +773,8 @@ keybindings:
|
||||
exportScreenshot: Export whole Base as Image
|
||||
mapMoveFaster: Move Faster
|
||||
lockBeltDirection: Enable belt planner
|
||||
switchDirectionLockSide: 'Planner: Switch side'
|
||||
switchDirectionLockSide: "Planner: Switch side"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: About this Game
|
||||
|
@ -76,10 +76,10 @@ global:
|
||||
|
||||
# The suffix for large numbers, e.g. 1.3k, 400.2M, etc.
|
||||
suffix:
|
||||
thousands: тыс.
|
||||
millions: млн
|
||||
billions: млрд
|
||||
trillions: трлн
|
||||
thousands: k
|
||||
millions: M
|
||||
billions: B
|
||||
trillions: T
|
||||
|
||||
# Shown for infinitely big numbers
|
||||
infinite: ∞
|
||||
@ -120,7 +120,7 @@ demoBanners:
|
||||
mainMenu:
|
||||
play: Играть
|
||||
changelog: Список изменений
|
||||
importSavegame: Импортировать сохраненную игру
|
||||
importSavegame: Импорт
|
||||
openSourceHint: Это игра с открытым исходным кодом!
|
||||
discordLink: Оффициальный Дискорд Сервер
|
||||
helpTranslate: Помоги с переводом!
|
||||
@ -156,7 +156,7 @@ mainMenu:
|
||||
contestOver: Этот конкурс закончился - присоединяйтесь в дискорде, чтобы получать уведомления о новых конкурсах!
|
||||
continue: Продолжить
|
||||
newGame: Новая Игра
|
||||
madeBy: Создано <author-link>
|
||||
madeBy: Создал <author-link>
|
||||
|
||||
dialogs:
|
||||
buttons:
|
||||
@ -289,6 +289,10 @@ ingame:
|
||||
pasteLastBlueprint: Вставить последний чертеж
|
||||
lockBeltDirection: Включить конвейерный планировщик
|
||||
plannerSwitchSide: Поменять местами стороны планировщика
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -324,11 +328,6 @@ ingame:
|
||||
newUpgrade: Новое улучшение доступно!
|
||||
gameSaved: Игра сохранена.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: <keyCut> - Вырезать; <keyCopy> - Копировать; <keyDelete> - Удалить; <keyCancel> - Отменить.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Улучшения
|
||||
@ -340,7 +339,7 @@ ingame:
|
||||
# The roman number for each tier
|
||||
tierLabels: [I, II, III, IV, V, VI, VII, VIII, IX, X]
|
||||
|
||||
maximumLevel: МАКСИМАЛЬНЫЙ УРОВЕНЬ (Скорость x<currentMult>)
|
||||
maximumLevel: Скорость x<currentMult> (макс.)
|
||||
|
||||
# The "Statistics" window
|
||||
statistics:
|
||||
@ -476,8 +475,8 @@ buildings:
|
||||
|
||||
mixer:
|
||||
default:
|
||||
name: &mixer Смеситель
|
||||
description: Смешивает два цвета с помощью аддитивного смешивания.
|
||||
name: &mixer Смешиватель
|
||||
description: Аддитивно смешивает цвета двух красителей.
|
||||
|
||||
painter:
|
||||
default:
|
||||
@ -523,7 +522,7 @@ storyRewards:
|
||||
|
||||
reward_mixer:
|
||||
title: Смешивание Цветов
|
||||
desc: Разблокирован <strong>смеситель</strong>! Объедините два цвета в этом здании, используя <strong>аддитивное смешивание</strong>!
|
||||
desc: Разблокирован <strong>смешиватель</strong>! Объедините два цвета в этом здании, используя <strong>аддитивное смешивание</strong>!
|
||||
|
||||
reward_stacker:
|
||||
title: Объединитель
|
||||
@ -688,6 +687,29 @@ settings:
|
||||
description: >-
|
||||
Включает виньетирование, которое затемняет углы экрана и облегчает чтение текста.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Настройки управления
|
||||
hint: >-
|
||||
@ -733,7 +755,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Прекратить размещение
|
||||
rotateWhilePlacing: Вращать
|
||||
rotateInverseModifier: >-
|
||||
Модификатор: Вращать против часовой стрелки
|
||||
@ -753,7 +774,8 @@ keybindings:
|
||||
exportScreenshot: Экспорт всей Базы в виде Изображения
|
||||
mapMoveFaster: Ускорение передвижения
|
||||
lockBeltDirection: Включает конвейерный планировщик
|
||||
switchDirectionLockSide: 'Планировщик: Переключение сторон'
|
||||
switchDirectionLockSide: "Планировщик: Переключение сторон"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: Об игре
|
||||
|
@ -287,6 +287,10 @@ ingame:
|
||||
pasteLastBlueprint: Paste last blueprint
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -322,11 +326,6 @@ ingame:
|
||||
newUpgrade: A new upgrade is available!
|
||||
gameSaved: Your game has been saved.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Upgrades
|
||||
@ -687,6 +686,29 @@ settings:
|
||||
Enables the vignette which darkens the screen corners and makes text easier
|
||||
to read.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Keybindings
|
||||
hint: >-
|
||||
@ -732,7 +754,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Abort Placement
|
||||
rotateWhilePlacing: Rotate
|
||||
rotateInverseModifier: >-
|
||||
Modifier: Rotate CCW instead
|
||||
@ -752,7 +773,8 @@ keybindings:
|
||||
exportScreenshot: Export whole Base as Image
|
||||
mapMoveFaster: Move Faster
|
||||
lockBeltDirection: Enable belt planner
|
||||
switchDirectionLockSide: 'Planner: Switch side'
|
||||
switchDirectionLockSide: "Planner: Switch side"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: About this Game
|
||||
|
@ -287,6 +287,10 @@ ingame:
|
||||
pasteLastBlueprint: Paste last blueprint
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -322,11 +326,6 @@ ingame:
|
||||
newUpgrade: A new upgrade is available!
|
||||
gameSaved: Your game has been saved.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Upgrades
|
||||
@ -688,6 +687,29 @@ settings:
|
||||
Enables the vignette which darkens the screen corners and makes text easier
|
||||
to read.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Keybindings
|
||||
hint: >-
|
||||
@ -733,7 +755,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Abort Placement
|
||||
rotateWhilePlacing: Rotate
|
||||
rotateInverseModifier: >-
|
||||
Modifier: Rotate CCW instead
|
||||
@ -753,7 +774,8 @@ keybindings:
|
||||
exportScreenshot: Export whole Base as Image
|
||||
mapMoveFaster: Move Faster
|
||||
lockBeltDirection: Enable belt planner
|
||||
switchDirectionLockSide: 'Planner: Switch side'
|
||||
switchDirectionLockSide: "Planner: Switch side"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: About this Game
|
||||
|
@ -287,6 +287,10 @@ ingame:
|
||||
pasteLastBlueprint: Paste last blueprint
|
||||
lockBeltDirection: Enable belt planner
|
||||
plannerSwitchSide: Flip planner side
|
||||
cutSelection: Cut
|
||||
copySelection: Copy
|
||||
clearSelection: Clear Selection
|
||||
pipette: Pipette
|
||||
|
||||
# Everything related to placing buildings (I.e. as soon as you selected a building
|
||||
# from the toolbar)
|
||||
@ -322,11 +326,6 @@ ingame:
|
||||
newUpgrade: A new upgrade is available!
|
||||
gameSaved: Your game has been saved.
|
||||
|
||||
# Mass select information, this is when you hold CTRL and then drag with your mouse
|
||||
# to select multiple buildings
|
||||
massSelect:
|
||||
infoText: Press <keyCut> to cut, <keyCopy> to copy, <keyDelete> to remove and <keyCancel> to cancel.
|
||||
|
||||
# The "Upgrades" window
|
||||
shop:
|
||||
title: Upgrades
|
||||
@ -687,6 +686,29 @@ settings:
|
||||
Enables the vignette which darkens the screen corners and makes text easier
|
||||
to read.
|
||||
|
||||
autosaveInterval:
|
||||
title: Autosave Interval
|
||||
description: >-
|
||||
Controls how often the game saves automatically. You can also disable it
|
||||
entirely here.
|
||||
intervals:
|
||||
one_minute: 1 Minute
|
||||
two_minutes: 2 Minutes
|
||||
five_minutes: 5 Minutes
|
||||
ten_minutes: 10 Minutes
|
||||
twenty_minutes: 20 Minutes
|
||||
disabled: Disabled
|
||||
compactBuildingInfo:
|
||||
title: Compact Building Infos
|
||||
description: >-
|
||||
Shortens info boxes for buildings by only showing their ratios. Otherwise a
|
||||
description and image is shown.
|
||||
disableCutDeleteWarnings:
|
||||
title: Disable Cut/Delete Warnings
|
||||
description: >-
|
||||
Disable the warning dialogs brought up when cutting/deleting more than 100
|
||||
entities.
|
||||
|
||||
keybindings:
|
||||
title: Keybindings
|
||||
hint: >-
|
||||
@ -732,7 +754,6 @@ keybindings:
|
||||
painter: *painter
|
||||
trash: *trash
|
||||
|
||||
abortBuildingPlacement: Abort Placement
|
||||
rotateWhilePlacing: Rotate
|
||||
rotateInverseModifier: >-
|
||||
Modifier: Rotate CCW instead
|
||||
@ -752,7 +773,8 @@ keybindings:
|
||||
exportScreenshot: Export whole Base as Image
|
||||
mapMoveFaster: Move Faster
|
||||
lockBeltDirection: Enable belt planner
|
||||
switchDirectionLockSide: 'Planner: Switch side'
|
||||
switchDirectionLockSide: "Planner: Switch side"
|
||||
pipette: Pipette
|
||||
|
||||
about:
|
||||
title: About this Game
|
||||
|