mirror of
				https://github.com/tobspr/shapez.io.git
				synced 2025-06-13 13:04:03 +00:00 
			
		
		
		
	Merge branch 'master' of git://github.com/tobspr/shapez.io
This commit is contained in:
		
						commit
						1756740947
					
				
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 18 KiB  | 
@ -1,3 +1,3 @@
 | 
			
		||||
version https://git-lfs.github.com/spec/v1
 | 
			
		||||
oid sha256:ebde52e75e54d2f4add0cf498c85f059082a0745212a23c4de7328a7d78b00a5
 | 
			
		||||
size 238170
 | 
			
		||||
oid sha256:ae83b8805191eeba13016e40216fc4781ac3958e6886769ce8677ea28370d13e
 | 
			
		||||
size 239706
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								res/ui/icons/info_button.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								res/ui/icons/info_button.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 577 B  | 
							
								
								
									
										2
									
								
								res/ui/main_menu/changelog.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								res/ui/main_menu/changelog.svg
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
<?xml version="1.0"?>
 | 
			
		||||
<svg xmlns="http://www.w3.org/2000/svg" id="Capa_1" enable-background="new 0 0 512 512" height="512px" viewBox="0 0 512 512" width="512px" class=""><g><path d="m106 512h300c24.814 0 45-20.186 45-45v-317h-105c-24.814 0-45-20.186-45-45v-105h-195c-24.814 0-45 20.186-45 45v422c0 24.814 20.186 45 45 45zm60-301h180c8.291 0 15 6.709 15 15s-6.709 15-15 15h-180c-8.291 0-15-6.709-15-15s6.709-15 15-15zm0 60h180c8.291 0 15 6.709 15 15s-6.709 15-15 15h-180c-8.291 0-15-6.709-15-15s6.709-15 15-15zm0 60h180c8.291 0 15 6.709 15 15s-6.709 15-15 15h-180c-8.291 0-15-6.709-15-15s6.709-15 15-15zm0 60h120c8.291 0 15 6.709 15 15s-6.709 15-15 15h-120c-8.291 0-15-6.709-15-15s6.709-15 15-15z" data-original="#000000" class="active-path" data-old_color="#000000" fill="#00AF80"/><path d="m346 120h96.211l-111.211-111.211v96.211c0 8.276 6.724 15 15 15z" data-original="#000000" class="active-path" data-old_color="#000000" fill="#00AF80"/></g> </svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 953 B  | 
							
								
								
									
										1
									
								
								res/ui/main_menu/reddit.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								res/ui/main_menu/reddit.svg
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
<svg enable-background="new 0 0 24 24" height="512" viewBox="0 0 24 24" width="512" xmlns="http://www.w3.org/2000/svg"><path d="m21.325 9.308c-.758 0-1.425.319-1.916.816-1.805-1.268-4.239-2.084-6.936-2.171l1.401-6.406 4.461 1.016c0 1.108.89 2.013 1.982 2.013 1.113 0 2.008-.929 2.008-2.038s-.889-2.038-2.007-2.038c-.779 0-1.451.477-1.786 1.129l-4.927-1.108c-.248-.067-.491.113-.557.365l-1.538 7.062c-2.676.113-5.084.928-6.895 2.197-.491-.518-1.184-.837-1.942-.837-2.812 0-3.733 3.829-1.158 5.138-.091.405-.132.837-.132 1.268 0 4.301 4.775 7.786 10.638 7.786 5.888 0 10.663-3.485 10.663-7.786 0-.431-.045-.883-.156-1.289 2.523-1.314 1.594-5.115-1.203-5.117zm-15.724 5.41c0-1.129.89-2.038 2.008-2.038 1.092 0 1.983.903 1.983 2.038 0 1.109-.89 2.013-1.983 2.013-1.113.005-2.008-.904-2.008-2.013zm10.839 4.798c-1.841 1.868-7.036 1.868-8.878 0-.203-.18-.203-.498 0-.703.177-.18.491-.18.668 0 1.406 1.463 6.07 1.488 7.537 0 .177-.18.491-.18.668 0 .207.206.207.524.005.703zm-.041-2.781c-1.092 0-1.982-.903-1.982-2.011 0-1.129.89-2.038 1.982-2.038 1.113 0 2.008.903 2.008 2.038-.005 1.103-.895 2.011-2.008 2.011z" fill="#ff5722"/></svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 1.1 KiB  | 
							
								
								
									
										2
									
								
								res/ui/main_menu/translate.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								res/ui/main_menu/translate.svg
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,2 @@
 | 
			
		||||
<?xml version="1.0"?>
 | 
			
		||||
<svg xmlns="http://www.w3.org/2000/svg" id="Capa_1" enable-background="new 0 0 512 512" height="512px" viewBox="0 0 512 512" width="512px"><g><g><g><path d="m496 0h-210c-8.284 0-15 6.716-15 15v260c0 8.284 6.716 15 15 15h143.787l55.606 55.606c2.869 2.87 6.706 4.394 10.609 4.394 1.933 0 3.882-.374 5.737-1.142 5.605-2.322 9.26-7.792 9.26-13.858v-320c.001-8.284-6.715-15-14.999-15zm-40 130h-10.978c-3.123 23.867-13.59 45.455-29.054 62.414 10.691 4.857 22.545 7.586 35.032 7.586 8.284 0 15 6.716 15 15s-6.716 15-15 15c-21.972 0-42.521-6.198-60-16.931-17.478 10.733-38.028 16.931-60 16.931-8.284 0-15-6.716-15-15s6.716-15 15-15c12.487 0 24.342-2.729 35.032-7.586-15.464-16.959-25.932-38.547-29.054-62.414h-10.978c-8.284 0-15-6.716-15-15s6.716-15 15-15h50v-25c0-8.284 6.716-15 15-15s15 6.716 15 15v25h50c8.284 0 15 6.716 15 15s-6.716 15-15 15z" data-original="#000000" class="active-path" data-old_color="#000000" fill="#4949E7"/><path d="m391 175.148c12.068-12.039 20.523-27.681 23.648-45.148h-47.295c3.124 17.467 11.579 33.11 23.647 45.148z" data-original="#000000" class="active-path" data-old_color="#000000" fill="#4949E7"/></g><g><path d="m100.59 327.624h41.01l-20.411-54.086z" data-original="#000000" class="active-path" data-old_color="#000000" fill="#4949E7"/><path d="m226 162h-210c-8.284 0-15 6.716-15 15v320c0 6.067 3.654 11.537 9.26 13.858 1.855.769 3.805 1.142 5.737 1.142 3.903 0 7.74-1.524 10.609-4.394l55.607-55.606h143.787c8.284 0 15-6.716 15-15v-260c0-8.284-6.716-15-15-15zm-44.438 229.034c-1.743.658-3.534.97-5.293.97-6.062 0-11.77-3.701-14.037-9.708l-9.311-24.673h-63.757l-9.413 24.715c-2.948 7.741-11.61 11.628-19.356 8.679-7.741-2.948-11.627-11.615-8.679-19.356l52.569-138.028c.043-.114.088-.228.135-.34 2.803-6.852 9.397-11.284 16.8-11.292h.021c7.396 0 13.99 4.416 16.806 11.256.057.137.11.275.163.413l52.092 138.034c2.924 7.751-.989 16.405-8.74 19.33z" data-original="#000000" class="active-path" data-old_color="#000000" fill="#4949E7"/></g></g></g> </svg>
 | 
			
		||||
| 
		 After Width: | Height: | Size: 2.0 KiB  | 
							
								
								
									
										3
									
								
								res_raw/sounds/sfx/destroy_building.wav
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								res_raw/sounds/sfx/destroy_building.wav
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
version https://git-lfs.github.com/spec/v1
 | 
			
		||||
oid sha256:1dc8775fdf5155097d6e1d60a436f48916af56eec14fb9034e71b32ad3b6f1b0
 | 
			
		||||
size 358896
 | 
			
		||||
							
								
								
									
										18
									
								
								src/css/ingame_hud/color_blind_helper.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/css/ingame_hud/color_blind_helper.scss
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,18 @@
 | 
			
		||||
#ingame_HUD_ColorBlindBelowTileHelper {
 | 
			
		||||
    position: absolute;
 | 
			
		||||
 | 
			
		||||
    @include SuperSmallText;
 | 
			
		||||
    color: #fff;
 | 
			
		||||
    background: $ingameHudBg;
 | 
			
		||||
    @include S(padding, 5px);
 | 
			
		||||
    @include S(top, 20px);
 | 
			
		||||
    left: 50%;
 | 
			
		||||
    transform: translateX(-50%);
 | 
			
		||||
    text-transform: uppercase;
 | 
			
		||||
 | 
			
		||||
    &:not(.visible) {
 | 
			
		||||
        display: none;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @include DarkThemeInvert;
 | 
			
		||||
}
 | 
			
		||||
@ -72,6 +72,24 @@
 | 
			
		||||
            grid-row: 1 / 2;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        > .infoButton {
 | 
			
		||||
            @include S(width, 8px);
 | 
			
		||||
            @include S(height, 8px);
 | 
			
		||||
            background: uiResource("icons/info_button.png") center center / 95% no-repeat;
 | 
			
		||||
            position: absolute;
 | 
			
		||||
            opacity: 0.7;
 | 
			
		||||
            @include S(top, 13px);
 | 
			
		||||
            @include S(left, -7px);
 | 
			
		||||
            @include DarkThemeInvert;
 | 
			
		||||
            @include IncreasedClickArea(2px);
 | 
			
		||||
            transition: opacity 0.12s ease-in-out;
 | 
			
		||||
            z-index: 100;
 | 
			
		||||
 | 
			
		||||
            &:hover {
 | 
			
		||||
                opacity: 0.8;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        &.goal,
 | 
			
		||||
        &.blueprint {
 | 
			
		||||
            .amountLabel::after {
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										131
									
								
								src/css/ingame_hud/shape_viewer.scss
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										131
									
								
								src/css/ingame_hud/shape_viewer.scss
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,131 @@
 | 
			
		||||
#ingame_HUD_ShapeViewer {
 | 
			
		||||
    .dialogInner {
 | 
			
		||||
        @include S(width, 160px);
 | 
			
		||||
    }
 | 
			
		||||
    .content {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        flex-direction: column;
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        align-items: center;
 | 
			
		||||
        justify-items: center;
 | 
			
		||||
 | 
			
		||||
        .seperator {
 | 
			
		||||
            display: flex;
 | 
			
		||||
            align-items: center;
 | 
			
		||||
            justify-content: center;
 | 
			
		||||
            width: 100%;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .layer {
 | 
			
		||||
            position: relative;
 | 
			
		||||
            background: #eee;
 | 
			
		||||
 | 
			
		||||
            @include DarkThemeOverride {
 | 
			
		||||
                background: rgba(0, 10, 20, 0.2);
 | 
			
		||||
            }
 | 
			
		||||
            @include S(width, 150px);
 | 
			
		||||
            @include S(height, 100px);
 | 
			
		||||
            display: flex;
 | 
			
		||||
            align-items: center;
 | 
			
		||||
            justify-content: center;
 | 
			
		||||
 | 
			
		||||
            > canvas {
 | 
			
		||||
                @include S(width, 50px);
 | 
			
		||||
                @include S(height, 50px);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            .quad {
 | 
			
		||||
                position: absolute;
 | 
			
		||||
                width: 50%;
 | 
			
		||||
                height: 50%;
 | 
			
		||||
                display: flex;
 | 
			
		||||
                justify-content: center;
 | 
			
		||||
                align-items: center;
 | 
			
		||||
                box-sizing: border-box;
 | 
			
		||||
 | 
			
		||||
                $arrowDims: 23px;
 | 
			
		||||
                $spacing: 9px;
 | 
			
		||||
                @include S(padding, 6px);
 | 
			
		||||
 | 
			
		||||
                .colorLabel {
 | 
			
		||||
                    text-transform: uppercase;
 | 
			
		||||
                    @include SuperSmallText;
 | 
			
		||||
                    @include S(font-size, 9px);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                .emptyLabel {
 | 
			
		||||
                    text-transform: uppercase;
 | 
			
		||||
                    @include SuperSmallText;
 | 
			
		||||
                    @include S(font-size, 9px);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                &::after {
 | 
			
		||||
                    content: " ";
 | 
			
		||||
                    background: rgba(0, 10, 20, 0.5);
 | 
			
		||||
                    @include S(width, $arrowDims);
 | 
			
		||||
                    @include S(height, 1px);
 | 
			
		||||
                    position: absolute;
 | 
			
		||||
                    transform: rotate(45deg);
 | 
			
		||||
                    transform-origin: 50% 50%;
 | 
			
		||||
                }
 | 
			
		||||
                @include DarkThemeOverride {
 | 
			
		||||
                    &::after {
 | 
			
		||||
                        background: rgba(255, 255, 255, 0.5);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                &.quad-0 {
 | 
			
		||||
                    right: 0;
 | 
			
		||||
                    top: 0;
 | 
			
		||||
                    align-items: flex-start;
 | 
			
		||||
                    justify-content: flex-end;
 | 
			
		||||
 | 
			
		||||
                    &::after {
 | 
			
		||||
                        @include S(left, $spacing);
 | 
			
		||||
                        @include S(bottom, $arrowDims / 2 + $spacing);
 | 
			
		||||
                        transform: rotate(-45deg);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                &.quad-1 {
 | 
			
		||||
                    bottom: 0;
 | 
			
		||||
                    right: 0;
 | 
			
		||||
 | 
			
		||||
                    align-items: flex-end;
 | 
			
		||||
                    justify-content: flex-end;
 | 
			
		||||
 | 
			
		||||
                    &::after {
 | 
			
		||||
                        @include S(left, $spacing);
 | 
			
		||||
                        @include S(top, $arrowDims / 2 + $spacing);
 | 
			
		||||
                        transform: rotate(45deg);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                &.quad-2 {
 | 
			
		||||
                    bottom: 0;
 | 
			
		||||
                    left: 0;
 | 
			
		||||
 | 
			
		||||
                    align-items: flex-end;
 | 
			
		||||
                    justify-content: flex-start;
 | 
			
		||||
 | 
			
		||||
                    &::after {
 | 
			
		||||
                        @include S(right, $spacing);
 | 
			
		||||
                        @include S(top, $arrowDims / 2 + $spacing);
 | 
			
		||||
                        transform: rotate(135deg);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                &.quad-3 {
 | 
			
		||||
                    top: 0;
 | 
			
		||||
                    left: 0;
 | 
			
		||||
 | 
			
		||||
                    align-items: flex-start;
 | 
			
		||||
                    justify-content: flex-start;
 | 
			
		||||
 | 
			
		||||
                    &::after {
 | 
			
		||||
                        @include S(right, $spacing);
 | 
			
		||||
                        @include S(bottom, $arrowDims / 2 + $spacing);
 | 
			
		||||
                        transform: rotate(225deg);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -195,6 +195,25 @@
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    button.showInfo {
 | 
			
		||||
                        @include S(width, 11px);
 | 
			
		||||
                        @include S(height, 11px);
 | 
			
		||||
                        background: uiResource("icons/info_button.png") center center / 95% no-repeat;
 | 
			
		||||
                        position: absolute;
 | 
			
		||||
                        @include S(top, 17px);
 | 
			
		||||
                        @include S(right, 2.5px);
 | 
			
		||||
                        opacity: 0.5;
 | 
			
		||||
                        cursor: pointer;
 | 
			
		||||
                        pointer-events: all;
 | 
			
		||||
                        @include IncreasedClickArea(5px);
 | 
			
		||||
                        transition: opacity 0.12s ease-in-out;
 | 
			
		||||
                        @include DarkThemeInvert;
 | 
			
		||||
 | 
			
		||||
                        &:hover {
 | 
			
		||||
                            opacity: 0.6;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    canvas {
 | 
			
		||||
                        @include S(width, 40px);
 | 
			
		||||
                        @include S(height, 40px);
 | 
			
		||||
@ -241,7 +260,7 @@
 | 
			
		||||
 | 
			
		||||
                            &.complete {
 | 
			
		||||
                                background-color: $colorGreenBright;
 | 
			
		||||
                                
 | 
			
		||||
 | 
			
		||||
                                @include DarkThemeOverride {
 | 
			
		||||
                                    background-color: $colorGreenBright;
 | 
			
		||||
                                }
 | 
			
		||||
 | 
			
		||||
@ -49,6 +49,8 @@
 | 
			
		||||
@import "ingame_hud/blueprint_placer";
 | 
			
		||||
@import "ingame_hud/waypoints";
 | 
			
		||||
@import "ingame_hud/interactive_tutorial";
 | 
			
		||||
@import "ingame_hud/color_blind_helper";
 | 
			
		||||
@import "ingame_hud/shape_viewer";
 | 
			
		||||
 | 
			
		||||
// prettier-ignore
 | 
			
		||||
$elements: 
 | 
			
		||||
@ -74,6 +76,7 @@ ingame_HUD_buildings_toolbar,
 | 
			
		||||
ingame_HUD_BlueprintPlacer,
 | 
			
		||||
ingame_HUD_Waypoints_Hint,
 | 
			
		||||
ingame_HUD_Watermark,
 | 
			
		||||
ingame_HUD_ColorBlindBelowTileHelper,
 | 
			
		||||
 | 
			
		||||
// Overlays
 | 
			
		||||
ingame_HUD_BetaOverlay,
 | 
			
		||||
@ -81,6 +84,7 @@ ingame_HUD_BetaOverlay,
 | 
			
		||||
// Dialogs
 | 
			
		||||
ingame_HUD_Shop,
 | 
			
		||||
ingame_HUD_Statistics,
 | 
			
		||||
ingame_HUD_ShapeViewer,
 | 
			
		||||
ingame_HUD_UnlockNotification,
 | 
			
		||||
ingame_HUD_SettingsMenu,
 | 
			
		||||
ingame_HUD_ModalDialogs;
 | 
			
		||||
 | 
			
		||||
@ -224,6 +224,12 @@
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        box-sizing: border-box;
 | 
			
		||||
 | 
			
		||||
        .buttons {
 | 
			
		||||
            display: flex;
 | 
			
		||||
            flex-direction: column;
 | 
			
		||||
            align-items: center;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .browserWarning {
 | 
			
		||||
            @include S(margin-bottom, 10px);
 | 
			
		||||
            background-color: $colorRedBright;
 | 
			
		||||
@ -337,33 +343,42 @@
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    .footer {
 | 
			
		||||
        display: flex;
 | 
			
		||||
        display: grid;
 | 
			
		||||
        flex-grow: 1;
 | 
			
		||||
        justify-content: center;
 | 
			
		||||
        align-items: flex-end;
 | 
			
		||||
        width: 100%;
 | 
			
		||||
        grid-template-columns: auto auto auto 1fr;
 | 
			
		||||
        @include S(padding, 10px);
 | 
			
		||||
        box-sizing: border-box;
 | 
			
		||||
        @include S(grid-gap, 5px);
 | 
			
		||||
 | 
			
		||||
        .author {
 | 
			
		||||
            flex-grow: 1;
 | 
			
		||||
            text-align: right;
 | 
			
		||||
            @include S(padding-right, 10px);
 | 
			
		||||
            @include PlainText;
 | 
			
		||||
            color: #888a8f;
 | 
			
		||||
            a {
 | 
			
		||||
                color: #333438;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        @include S(padding, 15px);
 | 
			
		||||
        > a {
 | 
			
		||||
 | 
			
		||||
        > .boxLink {
 | 
			
		||||
            display: grid;
 | 
			
		||||
            align-items: center;
 | 
			
		||||
            grid-template-columns: 1fr auto;
 | 
			
		||||
 | 
			
		||||
            justify-content: center;
 | 
			
		||||
            background: #fafafa;
 | 
			
		||||
            background: #fdfdfd;
 | 
			
		||||
            @include S(padding, 5px);
 | 
			
		||||
            @include S(padding-left, 10px);
 | 
			
		||||
            @include S(border-radius, $globalBorderRadius);
 | 
			
		||||
            @include S(margin-left, 10px);
 | 
			
		||||
            @include SuperSmallText();
 | 
			
		||||
 | 
			
		||||
            font-weight: bold;
 | 
			
		||||
            box-sizing: border-box;
 | 
			
		||||
            text-transform: uppercase;
 | 
			
		||||
            color: #616266;
 | 
			
		||||
 | 
			
		||||
@ -371,19 +386,11 @@
 | 
			
		||||
            transition-property: background-color, transform;
 | 
			
		||||
            pointer-events: all;
 | 
			
		||||
            @include S(width, 120px);
 | 
			
		||||
            @include S(height, 50px);
 | 
			
		||||
            @include S(height, 60px);
 | 
			
		||||
 | 
			
		||||
            cursor: pointer;
 | 
			
		||||
            &:hover {
 | 
			
		||||
                background-color: #fff;
 | 
			
		||||
                transform: scale(1.01);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            &:not(.boxLink) {
 | 
			
		||||
                align-self: flex-end;
 | 
			
		||||
                justify-self: flex-end;
 | 
			
		||||
                height: unset;
 | 
			
		||||
                width: unset;
 | 
			
		||||
                @include S(padding, 3px);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            .thirdpartyLogo {
 | 
			
		||||
@ -400,6 +407,49 @@
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        > .sidelinks {
 | 
			
		||||
            display: grid;
 | 
			
		||||
            align-items: flex-start;
 | 
			
		||||
            justify-content: flex-start;
 | 
			
		||||
            grid-template-rows: 1fr 1fr 1fr;
 | 
			
		||||
            @include S(grid-gap, 2px);
 | 
			
		||||
            @include S(height, 60px);
 | 
			
		||||
 | 
			
		||||
            > a {
 | 
			
		||||
                color: #616266;
 | 
			
		||||
                background: #fdfdfd;
 | 
			
		||||
                height: 100%;
 | 
			
		||||
 | 
			
		||||
                &:hover {
 | 
			
		||||
                    background-color: #fff;
 | 
			
		||||
                }
 | 
			
		||||
                @include SuperSmallText;
 | 
			
		||||
                text-transform: uppercase;
 | 
			
		||||
                width: 100%;
 | 
			
		||||
                @include S(padding, 2px, 10px);
 | 
			
		||||
                display: flex;
 | 
			
		||||
                align-items: center;
 | 
			
		||||
                justify-content: flex-start;
 | 
			
		||||
 | 
			
		||||
                @include S(padding-left, 25px);
 | 
			
		||||
                box-sizing: border-box;
 | 
			
		||||
                font-weight: bold;
 | 
			
		||||
                background-position: #{D(5px)} center;
 | 
			
		||||
                background-size: #{D(12px)};
 | 
			
		||||
                background-repeat: no-repeat;
 | 
			
		||||
 | 
			
		||||
                &.redditLink {
 | 
			
		||||
                    background-image: uiResource("main_menu/reddit.svg");
 | 
			
		||||
                }
 | 
			
		||||
                &.changelog {
 | 
			
		||||
                    background-image: uiResource("main_menu/changelog.svg");
 | 
			
		||||
                }
 | 
			
		||||
                &.helpTranslate {
 | 
			
		||||
                    background-image: uiResource("main_menu/translate.svg");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @include DarkThemeOverride {
 | 
			
		||||
@ -423,9 +473,14 @@
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        .footer {
 | 
			
		||||
            > a {
 | 
			
		||||
                background: darken($darkModeGameBackground, 10);
 | 
			
		||||
            > a,
 | 
			
		||||
            .sidelinks > a {
 | 
			
		||||
                background-color: darken($darkModeGameBackground, 10);
 | 
			
		||||
                color: #eee;
 | 
			
		||||
 | 
			
		||||
                &:hover {
 | 
			
		||||
                    background-color: darken($darkModeGameBackground, 8);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            .author {
 | 
			
		||||
 | 
			
		||||
@ -1,15 +1,21 @@
 | 
			
		||||
export const CHANGELOG = [
 | 
			
		||||
    {
 | 
			
		||||
        version: "1.1.17",
 | 
			
		||||
        date: "unreleased",
 | 
			
		||||
        date: "22.06.2020",
 | 
			
		||||
        entries: [
 | 
			
		||||
            "Color blind mode! You can now activate it in the settings and it will show you which color is below your cursor (Either resource or on the belt)",
 | 
			
		||||
            "Add info buttons to all shapes so you can figure out how they are built! (And also, which colors they have)",
 | 
			
		||||
            "Allow configuring autosave interval and disabling it in the settings",
 | 
			
		||||
            "The smart-tunnel placement has been reworked to properly replace belts. Thus the setting has been turned on again by default",
 | 
			
		||||
            "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)",
 | 
			
		||||
            "Fix keybinding for pipette showing while pasting blueprints",
 | 
			
		||||
            "Improve visibility of shape background in dark mode",
 | 
			
		||||
            "Added sound when destroying a building",
 | 
			
		||||
            "Added swedish translation",
 | 
			
		||||
            "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",
 | 
			
		||||
        ],
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
@ -19,6 +19,7 @@ const smoothCanvas = true;
 | 
			
		||||
export const THIRDPARTY_URLS = {
 | 
			
		||||
    discord: "https://discord.gg/HN7EVzV",
 | 
			
		||||
    github: "https://github.com/tobspr/shapez.io",
 | 
			
		||||
    reddit: "https://www.reddit.com/r/shapezio",
 | 
			
		||||
 | 
			
		||||
    standaloneStorePage: "https://store.steampowered.com/app/1318690/shapezio/",
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -191,7 +191,17 @@ export class InputDistributor {
 | 
			
		||||
     */
 | 
			
		||||
    handleKeyMouseDown(event) {
 | 
			
		||||
        const keyCode = event instanceof MouseEvent ? event.button + 1 : event.keyCode;
 | 
			
		||||
        event.preventDefault();
 | 
			
		||||
        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();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const isInitial = !this.keysDown.has(keyCode);
 | 
			
		||||
        this.keysDown.add(keyCode);
 | 
			
		||||
 | 
			
		||||
@ -275,7 +275,7 @@ export class HubGoals extends BasicSerializableObject {
 | 
			
		||||
     * @param {string} upgradeId
 | 
			
		||||
     * @returns {boolean}
 | 
			
		||||
     */
 | 
			
		||||
    tryUnlockUgprade(upgradeId) {
 | 
			
		||||
    tryUnlockUpgrade(upgradeId) {
 | 
			
		||||
        if (!this.canUnlockUpgrade(upgradeId)) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -34,7 +34,8 @@ 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";
 | 
			
		||||
import { HUDColorBlindHelper } from "./parts/color_blind_helper";
 | 
			
		||||
import { HUDShapeViewer } from "./parts/shape_viewer";
 | 
			
		||||
 | 
			
		||||
export class GameHUD {
 | 
			
		||||
    /**
 | 
			
		||||
@ -68,6 +69,7 @@ export class GameHUD {
 | 
			
		||||
            debugInfo: new HUDDebugInfo(this.root),
 | 
			
		||||
            dialogs: new HUDModalDialogs(this.root),
 | 
			
		||||
            screenshotExporter: new HUDScreenshotExporter(this.root),
 | 
			
		||||
            shapeViewer: new HUDShapeViewer(this.root),
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        this.signals = {
 | 
			
		||||
@ -76,7 +78,8 @@ export class GameHUD {
 | 
			
		||||
            shapeUnpinRequested: /** @type {TypedSignal<[string]>} */ (new Signal()),
 | 
			
		||||
            notification: /** @type {TypedSignal<[string, enumNotificationType]>} */ (new Signal()),
 | 
			
		||||
            buildingsSelectedForCopy: /** @type {TypedSignal<[Array<number>]>} */ (new Signal()),
 | 
			
		||||
            pasteBlueprintRequested: new Signal(),
 | 
			
		||||
            pasteBlueprintRequested: /** @type {TypedSignal<[]>} */ (new Signal()),
 | 
			
		||||
            viewShapeDetailsRequested: /** @type {TypedSignal<[ShapeDefinition]>} */ (new Signal()),
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        if (!IS_MOBILE) {
 | 
			
		||||
@ -100,6 +103,10 @@ export class GameHUD {
 | 
			
		||||
            this.parts.vignetteOverlay = new HUDVignetteOverlay(this.root);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (this.root.app.settings.getAllSettings().enableColorBlindHelper) {
 | 
			
		||||
            this.parts.colorBlindHelper = new HUDColorBlindHelper(this.root);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const frag = document.createDocumentFragment();
 | 
			
		||||
        for (const key in this.parts) {
 | 
			
		||||
            this.parts[key].createElements(frag);
 | 
			
		||||
@ -208,7 +215,13 @@ export class GameHUD {
 | 
			
		||||
     * @param {DrawParameters} parameters
 | 
			
		||||
     */
 | 
			
		||||
    draw(parameters) {
 | 
			
		||||
        const partsOrder = ["waypoints", "massSelector", "buildingPlacer", "blueprintPlacer"];
 | 
			
		||||
        const partsOrder = [
 | 
			
		||||
            "waypoints",
 | 
			
		||||
            "massSelector",
 | 
			
		||||
            "buildingPlacer",
 | 
			
		||||
            "blueprintPlacer",
 | 
			
		||||
            "colorBlindHelper",
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
        for (let i = 0; i < partsOrder.length; ++i) {
 | 
			
		||||
            if (this.parts[partsOrder[i]]) {
 | 
			
		||||
 | 
			
		||||
@ -10,6 +10,7 @@ import { blueprintShape } from "../../upgrades";
 | 
			
		||||
import { BaseHUDPart } from "../base_hud_part";
 | 
			
		||||
import { DynamicDomAttach } from "../dynamic_dom_attach";
 | 
			
		||||
import { Blueprint } from "./blueprint";
 | 
			
		||||
import { SOUNDS } from "../../../platform/sound";
 | 
			
		||||
 | 
			
		||||
export class HUDBlueprintPlacer extends BaseHUDPart {
 | 
			
		||||
    createElements(parent) {
 | 
			
		||||
@ -103,7 +104,7 @@ export class HUDBlueprintPlacer extends BaseHUDPart {
 | 
			
		||||
        if (blueprint.tryPlace(this.root, tile)) {
 | 
			
		||||
            const cost = blueprint.getCost();
 | 
			
		||||
            this.root.hubGoals.takeShapeByKey(blueprintShape, cost);
 | 
			
		||||
 | 
			
		||||
            this.root.soundProxy.playUi(SOUNDS.placeBuilding);
 | 
			
		||||
            // This actually feels weird
 | 
			
		||||
            // if (!this.root.keyMapper.getBinding(KEYMAPPINGS.placementModifiers.placeMultiple).pressed) {
 | 
			
		||||
            //     this.currentBlueprint.set(null);
 | 
			
		||||
 | 
			
		||||
@ -10,6 +10,7 @@ import { Entity } from "../../entity";
 | 
			
		||||
import { KEYMAPPINGS } from "../../key_action_mapper";
 | 
			
		||||
import { defaultBuildingVariant, MetaBuilding } from "../../meta_building";
 | 
			
		||||
import { BaseHUDPart } from "../base_hud_part";
 | 
			
		||||
import { SOUNDS } from "../../../platform/sound";
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Contains all logic for the building placer - this doesn't include the rendering
 | 
			
		||||
@ -183,6 +184,13 @@ export class HUDBuildingPlacerLogic extends BaseHUDPart {
 | 
			
		||||
        if (mousePos) {
 | 
			
		||||
            this.onMouseMove(mousePos);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Make sure we have nothing selected while in overview mode
 | 
			
		||||
        if (this.root.camera.getIsMapOverlayActive()) {
 | 
			
		||||
            if (this.currentMetaBuilding.get()) {
 | 
			
		||||
                this.currentMetaBuilding.set(null);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@ -215,6 +223,7 @@ export class HUDBuildingPlacerLogic extends BaseHUDPart {
 | 
			
		||||
        const contents = this.root.map.getTileContent(tile);
 | 
			
		||||
        if (contents) {
 | 
			
		||||
            this.root.logic.tryDeleteBuilding(contents);
 | 
			
		||||
            this.root.soundProxy.playUi(SOUNDS.destroyBuilding);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -650,6 +659,7 @@ export class HUDBuildingPlacerLogic extends BaseHUDPart {
 | 
			
		||||
                        const contents = this.root.map.getTileContentXY(x0, y0);
 | 
			
		||||
                        if (contents && !contents.queuedForDestroy && !contents.destroyed) {
 | 
			
		||||
                            this.root.logic.tryDeleteBuilding(contents);
 | 
			
		||||
                            this.root.soundProxy.playUi(SOUNDS.destroyBuilding);
 | 
			
		||||
                        }
 | 
			
		||||
                    } else {
 | 
			
		||||
                        this.tryPlaceCurrentBuildingAt(new Vector(x0, y0));
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										106
									
								
								src/js/game/hud/parts/color_blind_helper.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								src/js/game/hud/parts/color_blind_helper.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,106 @@
 | 
			
		||||
import { BaseHUDPart } from "../base_hud_part";
 | 
			
		||||
import { makeDiv } from "../../../core/utils";
 | 
			
		||||
import { TrackedState } from "../../../core/tracked_state";
 | 
			
		||||
import { enumColors } from "../../colors";
 | 
			
		||||
import { ColorItem } from "../../items/color_item";
 | 
			
		||||
import { DrawParameters } from "../../../core/draw_parameters";
 | 
			
		||||
import { THEME } from "../../theme";
 | 
			
		||||
import { globalConfig } from "../../../core/config";
 | 
			
		||||
import { T } from "../../../translations";
 | 
			
		||||
 | 
			
		||||
export class HUDColorBlindHelper extends BaseHUDPart {
 | 
			
		||||
    createElements(parent) {
 | 
			
		||||
        this.belowTileIndicator = makeDiv(parent, "ingame_HUD_ColorBlindBelowTileHelper", []);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    initialize() {
 | 
			
		||||
        this.trackedColorBelowTile = new TrackedState(this.onColorBelowTileChanged, this);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Called when the color below the current tile changed
 | 
			
		||||
     * @param {enumColors|null} color
 | 
			
		||||
     */
 | 
			
		||||
    onColorBelowTileChanged(color) {
 | 
			
		||||
        this.belowTileIndicator.classList.toggle("visible", !!color);
 | 
			
		||||
        if (color) {
 | 
			
		||||
            this.belowTileIndicator.innerText = T.ingame.colors[color];
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Computes the color below the current tile
 | 
			
		||||
     * @returns {enumColors}
 | 
			
		||||
     */
 | 
			
		||||
    computeColorBelowTile() {
 | 
			
		||||
        const mousePosition = this.root.app.mousePosition;
 | 
			
		||||
        if (!mousePosition) {
 | 
			
		||||
            // Not on screen
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const worldPos = this.root.camera.screenToWorld(mousePosition);
 | 
			
		||||
        const tile = worldPos.toTileSpace();
 | 
			
		||||
        const contents = this.root.map.getTileContent(tile);
 | 
			
		||||
 | 
			
		||||
        if (contents && !contents.components.Miner) {
 | 
			
		||||
            const beltComp = contents.components.Belt;
 | 
			
		||||
 | 
			
		||||
            // Check if the belt has a color item
 | 
			
		||||
            if (beltComp) {
 | 
			
		||||
                const firstItem = beltComp.sortedItems[0];
 | 
			
		||||
                if (firstItem && firstItem[1] instanceof ColorItem) {
 | 
			
		||||
                    return firstItem[1].color;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Check if we are ejecting an item, if so use that color
 | 
			
		||||
            const ejectorComp = contents.components.ItemEjector;
 | 
			
		||||
            if (ejectorComp) {
 | 
			
		||||
                for (let i = 0; i < ejectorComp.slots.length; ++i) {
 | 
			
		||||
                    const slot = ejectorComp.slots[i];
 | 
			
		||||
                    if (slot.item && slot.item instanceof ColorItem) {
 | 
			
		||||
                        return slot.item.color;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            // We hovered a lower layer, show the color there
 | 
			
		||||
            const lowerLayer = this.root.map.getLowerLayerContentXY(tile.x, tile.y);
 | 
			
		||||
            if (lowerLayer && lowerLayer instanceof ColorItem) {
 | 
			
		||||
                return lowerLayer.color;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    update() {
 | 
			
		||||
        this.trackedColorBelowTile.set(this.computeColorBelowTile());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Draws the currently selected tile
 | 
			
		||||
     * @param {DrawParameters} parameters
 | 
			
		||||
     */
 | 
			
		||||
    draw(parameters) {
 | 
			
		||||
        const mousePosition = this.root.app.mousePosition;
 | 
			
		||||
        if (!mousePosition) {
 | 
			
		||||
            // Not on screen
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const below = this.computeColorBelowTile();
 | 
			
		||||
        if (below) {
 | 
			
		||||
            // We have something below our tile
 | 
			
		||||
            const worldPos = this.root.camera.screenToWorld(mousePosition);
 | 
			
		||||
            const tile = worldPos.toTileSpace().toWorldSpace();
 | 
			
		||||
 | 
			
		||||
            parameters.context.strokeStyle = THEME.map.colorBlindPickerTile;
 | 
			
		||||
            parameters.context.lineWidth = 1;
 | 
			
		||||
            parameters.context.beginPath();
 | 
			
		||||
            parameters.context.rect(tile.x, tile.y, globalConfig.tileSize, globalConfig.tileSize);
 | 
			
		||||
            parameters.context.stroke();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -168,7 +168,7 @@ export class HUDKeybindingOverlay extends BaseHUDPart {
 | 
			
		||||
                // Pipette
 | 
			
		||||
                label: T.ingame.keybindingsOverlay.pipette,
 | 
			
		||||
                keys: [k.placement.pipette],
 | 
			
		||||
                condition: () => !this.mapOverviewActive,
 | 
			
		||||
                condition: () => !this.mapOverviewActive && !this.blueprintPlacementActive,
 | 
			
		||||
            },
 | 
			
		||||
 | 
			
		||||
            {
 | 
			
		||||
 | 
			
		||||
@ -26,7 +26,8 @@ export class HUDPinnedShapes extends BaseHUDPart {
 | 
			
		||||
         *  amountLabel: HTMLElement,
 | 
			
		||||
         *  lastRenderedValue: string,
 | 
			
		||||
         *  element: HTMLElement,
 | 
			
		||||
         *  detector?: ClickDetector
 | 
			
		||||
         *  detector?: ClickDetector,
 | 
			
		||||
         *  infoDetector?: ClickDetector
 | 
			
		||||
         * }>}
 | 
			
		||||
         */
 | 
			
		||||
        this.handles = [];
 | 
			
		||||
@ -155,6 +156,10 @@ export class HUDPinnedShapes extends BaseHUDPart {
 | 
			
		||||
            if (detector) {
 | 
			
		||||
                detector.cleanup();
 | 
			
		||||
            }
 | 
			
		||||
            const infoDetector = this.handles[i].infoDetector;
 | 
			
		||||
            if (infoDetector) {
 | 
			
		||||
                infoDetector.cleanup();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        this.handles = [];
 | 
			
		||||
 | 
			
		||||
@ -198,12 +203,24 @@ export class HUDPinnedShapes extends BaseHUDPart {
 | 
			
		||||
            detector = new ClickDetector(element, {
 | 
			
		||||
                consumeEvents: true,
 | 
			
		||||
                preventDefault: true,
 | 
			
		||||
                targetOnly: true,
 | 
			
		||||
            });
 | 
			
		||||
            detector.click.add(() => this.unpinShape(key));
 | 
			
		||||
        } else {
 | 
			
		||||
            element.classList.add("marked");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Show small info icon
 | 
			
		||||
        const infoButton = document.createElement("button");
 | 
			
		||||
        infoButton.classList.add("infoButton");
 | 
			
		||||
        element.appendChild(infoButton);
 | 
			
		||||
        const infoDetector = new ClickDetector(infoButton, {
 | 
			
		||||
            consumeEvents: true,
 | 
			
		||||
            preventDefault: true,
 | 
			
		||||
            targetOnly: true,
 | 
			
		||||
        });
 | 
			
		||||
        infoDetector.click.add(() => this.root.hud.signals.viewShapeDetailsRequested.dispatch(definition));
 | 
			
		||||
 | 
			
		||||
        const amountLabel = makeDiv(element, null, ["amountLabel"], "");
 | 
			
		||||
 | 
			
		||||
        const goal = this.findGoalValueForShape(key);
 | 
			
		||||
@ -216,6 +233,8 @@ export class HUDPinnedShapes extends BaseHUDPart {
 | 
			
		||||
            element,
 | 
			
		||||
            amountLabel,
 | 
			
		||||
            lastRenderedValue: "",
 | 
			
		||||
            detector,
 | 
			
		||||
            infoDetector,
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										109
									
								
								src/js/game/hud/parts/shape_viewer.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								src/js/game/hud/parts/shape_viewer.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,109 @@
 | 
			
		||||
import { BaseHUDPart } from "../base_hud_part";
 | 
			
		||||
import { makeDiv, removeAllChildren } from "../../../core/utils";
 | 
			
		||||
import { T } from "../../../translations";
 | 
			
		||||
import { defaultBuildingVariant } from "../../meta_building";
 | 
			
		||||
import { ShapeDefinition } from "../../shape_definition";
 | 
			
		||||
import { KEYMAPPINGS, KeyActionMapper } from "../../key_action_mapper";
 | 
			
		||||
import { InputReceiver } from "../../../core/input_receiver";
 | 
			
		||||
import { DynamicDomAttach } from "../dynamic_dom_attach";
 | 
			
		||||
 | 
			
		||||
export class HUDShapeViewer extends BaseHUDPart {
 | 
			
		||||
    createElements(parent) {
 | 
			
		||||
        this.background = makeDiv(parent, "ingame_HUD_ShapeViewer", ["ingameDialog"]);
 | 
			
		||||
 | 
			
		||||
        // DIALOG Inner / Wrapper
 | 
			
		||||
        this.dialogInner = makeDiv(this.background, null, ["dialogInner"]);
 | 
			
		||||
        this.title = makeDiv(this.dialogInner, null, ["title"], T.ingame.shapeViewer.title);
 | 
			
		||||
        this.closeButton = makeDiv(this.title, null, ["closeButton"]);
 | 
			
		||||
        this.trackClicks(this.closeButton, this.close);
 | 
			
		||||
        this.contentDiv = makeDiv(this.dialogInner, null, ["content"]);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    initialize() {
 | 
			
		||||
        this.root.hud.signals.viewShapeDetailsRequested.add(this.renderForShape, this);
 | 
			
		||||
 | 
			
		||||
        this.domAttach = new DynamicDomAttach(this.root, this.background, {
 | 
			
		||||
            attachClass: "visible",
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        this.inputReciever = new InputReceiver("shape_viewer");
 | 
			
		||||
        this.keyActionMapper = new KeyActionMapper(this.root, this.inputReciever);
 | 
			
		||||
 | 
			
		||||
        this.keyActionMapper.getBinding(KEYMAPPINGS.general.back).add(this.close, this);
 | 
			
		||||
 | 
			
		||||
        this.close();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Closes the dialog
 | 
			
		||||
     */
 | 
			
		||||
    close() {
 | 
			
		||||
        this.visible = false;
 | 
			
		||||
        document.body.classList.remove("ingameDialogOpen");
 | 
			
		||||
        this.root.app.inputMgr.makeSureDetached(this.inputReciever);
 | 
			
		||||
        this.update();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Shows the viewer for a given definition
 | 
			
		||||
     * @param {ShapeDefinition} definition
 | 
			
		||||
     */
 | 
			
		||||
    renderForShape(definition) {
 | 
			
		||||
        this.visible = true;
 | 
			
		||||
        document.body.classList.add("ingameDialogOpen");
 | 
			
		||||
        this.root.app.inputMgr.makeSureAttachedAndOnTop(this.inputReciever);
 | 
			
		||||
 | 
			
		||||
        removeAllChildren(this.contentDiv);
 | 
			
		||||
 | 
			
		||||
        const layers = definition.layers;
 | 
			
		||||
        for (let i = 0; i < layers.length; ++i) {
 | 
			
		||||
            const layerElem = makeDiv(this.contentDiv, null, ["layer", "layer-" + i]);
 | 
			
		||||
 | 
			
		||||
            let fakeLayers = [];
 | 
			
		||||
            for (let k = 0; k < i; ++k) {
 | 
			
		||||
                fakeLayers.push([null, null, null, null]);
 | 
			
		||||
            }
 | 
			
		||||
            fakeLayers.push(layers[i]);
 | 
			
		||||
 | 
			
		||||
            const thisLayerOnly = new ShapeDefinition({ layers: fakeLayers });
 | 
			
		||||
            const thisLayerCanvas = thisLayerOnly.generateAsCanvas(160);
 | 
			
		||||
            layerElem.appendChild(thisLayerCanvas);
 | 
			
		||||
 | 
			
		||||
            for (let quad = 0; quad < 4; ++quad) {
 | 
			
		||||
                const quadElem = makeDiv(layerElem, null, ["quad", "quad-" + quad]);
 | 
			
		||||
 | 
			
		||||
                const contents = layers[i][quad];
 | 
			
		||||
                if (contents) {
 | 
			
		||||
                    const colorLabelElem = makeDiv(
 | 
			
		||||
                        quadElem,
 | 
			
		||||
                        null,
 | 
			
		||||
                        ["colorLabel"],
 | 
			
		||||
                        T.ingame.colors[contents.color]
 | 
			
		||||
                    );
 | 
			
		||||
                } else {
 | 
			
		||||
                    const emptyLabelElem = makeDiv(
 | 
			
		||||
                        quadElem,
 | 
			
		||||
                        null,
 | 
			
		||||
                        ["emptyLabel"],
 | 
			
		||||
                        T.ingame.shapeViewer.empty
 | 
			
		||||
                    );
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (i < layers.length - 1) {
 | 
			
		||||
                makeDiv(this.contentDiv, null, ["seperator"], "+");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Cleans up everything
 | 
			
		||||
     */
 | 
			
		||||
    cleanup() {
 | 
			
		||||
        document.body.classList.remove("ingameDialogOpen");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    update() {
 | 
			
		||||
        this.domAttach.update(this.visible);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -79,6 +79,7 @@ export class HUDShop extends BaseHUDPart {
 | 
			
		||||
                const requiredHandle = handle.requireIndexToElement[i];
 | 
			
		||||
                requiredHandle.container.remove();
 | 
			
		||||
                requiredHandle.pinDetector.cleanup();
 | 
			
		||||
                requiredHandle.infoDetector.cleanup();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Cleanup
 | 
			
		||||
@ -122,6 +123,10 @@ export class HUDShop extends BaseHUDPart {
 | 
			
		||||
                pinButton.classList.add("pin");
 | 
			
		||||
                container.appendChild(pinButton);
 | 
			
		||||
 | 
			
		||||
                const viewInfoButton = document.createElement("button");
 | 
			
		||||
                viewInfoButton.classList.add("showInfo");
 | 
			
		||||
                container.appendChild(viewInfoButton);
 | 
			
		||||
 | 
			
		||||
                const currentGoalShape = this.root.hubGoals.currentGoal.definition.getHash();
 | 
			
		||||
                if (shape === currentGoalShape) {
 | 
			
		||||
                    pinButton.classList.add("isGoal");
 | 
			
		||||
@ -145,6 +150,14 @@ export class HUDShop extends BaseHUDPart {
 | 
			
		||||
                    }
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
                const infoDetector = new ClickDetector(viewInfoButton, {
 | 
			
		||||
                    consumeEvents: true,
 | 
			
		||||
                    preventDefault: true,
 | 
			
		||||
                });
 | 
			
		||||
                infoDetector.click.add(() =>
 | 
			
		||||
                    this.root.hud.signals.viewShapeDetailsRequested.dispatch(shapeDef)
 | 
			
		||||
                );
 | 
			
		||||
 | 
			
		||||
                handle.requireIndexToElement.push({
 | 
			
		||||
                    container,
 | 
			
		||||
                    progressLabel,
 | 
			
		||||
@ -152,6 +165,7 @@ export class HUDShop extends BaseHUDPart {
 | 
			
		||||
                    definition: shapeDef,
 | 
			
		||||
                    required: amount,
 | 
			
		||||
                    pinDetector,
 | 
			
		||||
                    infoDetector,
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
@ -202,6 +216,7 @@ export class HUDShop extends BaseHUDPart {
 | 
			
		||||
                const requiredHandle = handle.requireIndexToElement[i];
 | 
			
		||||
                requiredHandle.container.remove();
 | 
			
		||||
                requiredHandle.pinDetector.cleanup();
 | 
			
		||||
                requiredHandle.infoDetector.cleanup();
 | 
			
		||||
            }
 | 
			
		||||
            handle.requireIndexToElement = [];
 | 
			
		||||
        }
 | 
			
		||||
@ -231,6 +246,6 @@ export class HUDShop extends BaseHUDPart {
 | 
			
		||||
 | 
			
		||||
    tryUnlockNextTier(upgradeId) {
 | 
			
		||||
        // Nothing
 | 
			
		||||
        this.root.hubGoals.tryUnlockUgprade(upgradeId);
 | 
			
		||||
        this.root.hubGoals.tryUnlockUpgrade(upgradeId);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -333,7 +333,7 @@ export class ShapeDefinition extends BasicSerializableObject {
 | 
			
		||||
        const quadrantSize = 10;
 | 
			
		||||
        const quadrantHalfSize = quadrantSize / 2;
 | 
			
		||||
 | 
			
		||||
        context.fillStyle = "rgba(40, 50, 65, 0.1)";
 | 
			
		||||
        context.fillStyle = THEME.items.circleBackground;
 | 
			
		||||
        context.beginCircle(0, 0, quadrantSize * 1.15);
 | 
			
		||||
        context.fill();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -8,7 +8,7 @@ import { SOUNDS } from "../platform/sound";
 | 
			
		||||
const avgSoundDurationSeconds = 0.25;
 | 
			
		||||
const maxOngoingSounds = 2;
 | 
			
		||||
 | 
			
		||||
const maxOngoingUiSounds = 25;
 | 
			
		||||
const maxOngoingUiSounds = 10;
 | 
			
		||||
 | 
			
		||||
// Proxy to the application sound instance
 | 
			
		||||
export class SoundProxy {
 | 
			
		||||
 | 
			
		||||
@ -77,6 +77,7 @@ export class UndergroundBeltSystem extends GameSystemWithFilter {
 | 
			
		||||
            const tier = undergroundComp.tier;
 | 
			
		||||
            const range = globalConfig.undergroundBeltMaxTilesByTier[tier];
 | 
			
		||||
 | 
			
		||||
            // FIND ENTRANCE
 | 
			
		||||
            // Search for the entrance which is furthes apart (this is why we can't reuse logic here)
 | 
			
		||||
            let matchingEntrance = null;
 | 
			
		||||
            for (let i = 0; i < range; ++i) {
 | 
			
		||||
@ -104,31 +105,49 @@ export class UndergroundBeltSystem extends GameSystemWithFilter {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Remove any belts between entrance and exit which have the same direction
 | 
			
		||||
            // DETECT OBSOLETE BELTS BETWEEN
 | 
			
		||||
            // Remove any belts between entrance and exit which have the same direction,
 | 
			
		||||
            // but only if they *all* have the right direction
 | 
			
		||||
            currentPos = tile.copy();
 | 
			
		||||
            let allBeltsMatch = true;
 | 
			
		||||
            for (let i = 0; i < matchingEntrance.range; ++i) {
 | 
			
		||||
                currentPos.addInplace(offset);
 | 
			
		||||
 | 
			
		||||
                const contents = this.root.map.getTileContent(currentPos);
 | 
			
		||||
                if (!contents) {
 | 
			
		||||
                    continue;
 | 
			
		||||
                    allBeltsMatch = false;
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                const contentsStaticComp = contents.components.StaticMapEntity;
 | 
			
		||||
                const contentsBeltComp = contents.components.Belt;
 | 
			
		||||
                if (!contentsBeltComp) {
 | 
			
		||||
                    allBeltsMatch = false;
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (contentsBeltComp) {
 | 
			
		||||
                    // It's a belt
 | 
			
		||||
                    if (
 | 
			
		||||
                        contentsBeltComp.direction === enumDirection.top &&
 | 
			
		||||
                        enumAngleToDirection[contentsStaticComp.rotation] === direction
 | 
			
		||||
                    ) {
 | 
			
		||||
                        // It's same rotation, drop it
 | 
			
		||||
                        this.root.logic.tryDeleteBuilding(contents);
 | 
			
		||||
                    }
 | 
			
		||||
                // It's a belt
 | 
			
		||||
                if (
 | 
			
		||||
                    contentsBeltComp.direction !== enumDirection.top ||
 | 
			
		||||
                    enumAngleToDirection[contentsStaticComp.rotation] !== direction
 | 
			
		||||
                ) {
 | 
			
		||||
                    allBeltsMatch = false;
 | 
			
		||||
                    break;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            currentPos = tile.copy();
 | 
			
		||||
            if (allBeltsMatch) {
 | 
			
		||||
                // All belts between this are obsolete, so drop them
 | 
			
		||||
                for (let i = 0; i < matchingEntrance.range; ++i) {
 | 
			
		||||
                    currentPos.addInplace(offset);
 | 
			
		||||
                    const contents = this.root.map.getTileContent(currentPos);
 | 
			
		||||
                    assert(contents, "Invalid smart underground belt logic");
 | 
			
		||||
                    this.root.logic.tryDeleteBuilding(contents);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // REMOVE OBSOLETE TUNNELS
 | 
			
		||||
            // Remove any double tunnels, by checking the tile plus the tile above
 | 
			
		||||
            currentPos = tile.copy().add(offset);
 | 
			
		||||
            for (let i = 0; i < matchingEntrance.range - 1; ++i) {
 | 
			
		||||
 | 
			
		||||
@ -12,6 +12,8 @@
 | 
			
		||||
        "directionLock": "rgb(74, 237, 134)",
 | 
			
		||||
        "directionLockTrack": "rgba(74, 237, 134, 0.2)",
 | 
			
		||||
 | 
			
		||||
        "colorBlindPickerTile": "rgba(255, 255, 255, 0.5)",
 | 
			
		||||
 | 
			
		||||
        "resources": {
 | 
			
		||||
            "shape": "#3d3f4a",
 | 
			
		||||
            "red": "#4a3d3f",
 | 
			
		||||
@ -26,6 +28,7 @@
 | 
			
		||||
 | 
			
		||||
    "items": {
 | 
			
		||||
        "outline": "#111418",
 | 
			
		||||
        "outlineWidth": 0.75
 | 
			
		||||
        "outlineWidth": 0.75,
 | 
			
		||||
        "circleBackground": "rgba(20, 30, 40, 0.3)"
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -12,6 +12,8 @@
 | 
			
		||||
        "directionLock": "rgb(74, 237, 134)",
 | 
			
		||||
        "directionLockTrack": "rgba(74, 237, 134, 0.2)",
 | 
			
		||||
 | 
			
		||||
        "colorBlindPickerTile": "rgba(50, 50, 50, 0.4)",
 | 
			
		||||
 | 
			
		||||
        "resources": {
 | 
			
		||||
            "shape": "#eaebec",
 | 
			
		||||
            "red": "#ffbfc1",
 | 
			
		||||
@ -27,6 +29,7 @@
 | 
			
		||||
 | 
			
		||||
    "items": {
 | 
			
		||||
        "outline": "#55575a",
 | 
			
		||||
        "outlineWidth": 0.75
 | 
			
		||||
        "outlineWidth": 0.75,
 | 
			
		||||
        "circleBackground": "rgba(40, 50, 65, 0.1)"
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -86,4 +86,10 @@ export const LANGUAGES = {
 | 
			
		||||
        code: "zh",
 | 
			
		||||
        region: "CN",
 | 
			
		||||
    },
 | 
			
		||||
    "sv": {
 | 
			
		||||
        name: "Svenska",
 | 
			
		||||
        data: require("./built-temp/base-sv.json"),
 | 
			
		||||
        code: "sv",
 | 
			
		||||
        region: "",
 | 
			
		||||
    },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -22,6 +22,7 @@ export const SOUNDS = {
 | 
			
		||||
 | 
			
		||||
    levelComplete: "level_complete",
 | 
			
		||||
 | 
			
		||||
    destroyBuilding: "destroy_building",
 | 
			
		||||
    placeBuilding: "place_building",
 | 
			
		||||
    placeBelt: "place_belt",
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -172,6 +172,15 @@ export const allApplicationSettings = [
 | 
			
		||||
        (app, value) => app.sound.setMusicMuted(value)
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    new BoolSetting(
 | 
			
		||||
        "enableColorBlindHelper",
 | 
			
		||||
        categoryApp,
 | 
			
		||||
        /**
 | 
			
		||||
         * @param {Application} app
 | 
			
		||||
         */
 | 
			
		||||
        (app, value) => null
 | 
			
		||||
    ),
 | 
			
		||||
 | 
			
		||||
    // GAME
 | 
			
		||||
    new BoolSetting("offerHints", categoryGame, (app, value) => {}),
 | 
			
		||||
 | 
			
		||||
@ -269,6 +278,8 @@ class SettingsStorage {
 | 
			
		||||
        this.compactBuildingInfo = false;
 | 
			
		||||
        this.disableCutDeleteWarnings = false;
 | 
			
		||||
 | 
			
		||||
        this.enableColorBlindHelper = false;
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * @type {Object.<string, number>}
 | 
			
		||||
         */
 | 
			
		||||
@ -468,7 +479,7 @@ export class ApplicationSettings extends ReadWriteProxy {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    getCurrentVersion() {
 | 
			
		||||
        return 15;
 | 
			
		||||
        return 17;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /** @param {{settings: SettingsStorage, version: number}} data */
 | 
			
		||||
@ -530,6 +541,17 @@ export class ApplicationSettings extends ReadWriteProxy {
 | 
			
		||||
            data.version = 15;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (data.version < 16) {
 | 
			
		||||
            // RE-ENABLE this setting, it already existed
 | 
			
		||||
            data.settings.enableTunnelSmartplace = true;
 | 
			
		||||
            data.version = 16;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (data.version < 17) {
 | 
			
		||||
            data.settings.enableColorBlindHelper = false;
 | 
			
		||||
            data.version = 17;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return ExplainedResult.good();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -9,6 +9,7 @@ import {
 | 
			
		||||
    waitNextFrame,
 | 
			
		||||
    isSupportedBrowser,
 | 
			
		||||
    makeButton,
 | 
			
		||||
    removeAllChildren,
 | 
			
		||||
} from "../core/utils";
 | 
			
		||||
import { ReadWriteProxy } from "../core/read_write_proxy";
 | 
			
		||||
import { HUDModalDialogs } from "../game/hud/parts/modal_dialogs";
 | 
			
		||||
@ -72,6 +73,7 @@ export class MainMenuState extends GameState {
 | 
			
		||||
                            ? ""
 | 
			
		||||
                            : `<div class="browserWarning">${T.mainMenu.browserWarning}</div>`
 | 
			
		||||
                    }
 | 
			
		||||
                    <div class="buttons"></div>
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -89,10 +91,14 @@ export class MainMenuState extends GameState {
 | 
			
		||||
                    <span class="thirdpartyLogo  discordLogo"></span>
 | 
			
		||||
                </a>
 | 
			
		||||
 | 
			
		||||
                <a class="changelog">${T.changelog.title}</a>
 | 
			
		||||
 | 
			
		||||
                <a class="helpTranslate">${T.mainMenu.helpTranslate}</a>
 | 
			
		||||
                <div class="sidelinks">
 | 
			
		||||
                    <a class="redditLink">${T.mainMenu.subreddit}</a>
 | 
			
		||||
 | 
			
		||||
                    <a class="changelog">${T.changelog.title}</a>
 | 
			
		||||
                
 | 
			
		||||
                    <a class="helpTranslate">${T.mainMenu.helpTranslate}</a>
 | 
			
		||||
                </div>
 | 
			
		||||
            
 | 
			
		||||
                <div class="author">${T.mainMenu.madeBy.replace(
 | 
			
		||||
                    "<author-link>",
 | 
			
		||||
                    '<a class="producerLink" target="_blank">Tobias Springer</a>'
 | 
			
		||||
@ -148,6 +154,7 @@ export class MainMenuState extends GameState {
 | 
			
		||||
                                    T.dialogs.importSavegameSuccess.text
 | 
			
		||||
                                );
 | 
			
		||||
 | 
			
		||||
                                this.renderMainMenu();
 | 
			
		||||
                                this.renderSavegames();
 | 
			
		||||
                            },
 | 
			
		||||
                            err => {
 | 
			
		||||
@ -212,6 +219,7 @@ export class MainMenuState extends GameState {
 | 
			
		||||
 | 
			
		||||
        this.trackClicks(qs(".settingsButton"), this.onSettingsButtonClicked);
 | 
			
		||||
        this.trackClicks(qs(".changelog"), this.onChangelogClicked);
 | 
			
		||||
        this.trackClicks(qs(".redditLink"), this.onRedditClicked);
 | 
			
		||||
        this.trackClicks(qs(".languageChoose"), this.onLanguageChooseClicked);
 | 
			
		||||
        this.trackClicks(qs(".helpTranslate"), this.onTranslationHelpLinkClicked);
 | 
			
		||||
 | 
			
		||||
@ -255,6 +263,10 @@ export class MainMenuState extends GameState {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    renderMainMenu() {
 | 
			
		||||
        const buttonContainer = this.htmlElement.querySelector(".mainContainer .buttons");
 | 
			
		||||
        removeAllChildren(buttonContainer);
 | 
			
		||||
 | 
			
		||||
        // Import button
 | 
			
		||||
        const importButtonElement = makeButtonElement(
 | 
			
		||||
            ["importButton", "styledButton"],
 | 
			
		||||
            T.mainMenu.importSavegame
 | 
			
		||||
@ -262,14 +274,15 @@ export class MainMenuState extends GameState {
 | 
			
		||||
        this.trackClicks(importButtonElement, this.requestImportSavegame);
 | 
			
		||||
 | 
			
		||||
        if (this.savedGames.length > 0) {
 | 
			
		||||
            // Continue game
 | 
			
		||||
            const continueButton = makeButton(
 | 
			
		||||
                this.htmlElement.querySelector(".mainContainer"),
 | 
			
		||||
                buttonContainer,
 | 
			
		||||
                ["continueButton", "styledButton"],
 | 
			
		||||
                T.mainMenu.continue
 | 
			
		||||
            );
 | 
			
		||||
            this.trackClicks(continueButton, this.onContinueButtonClicked);
 | 
			
		||||
 | 
			
		||||
            const outerDiv = makeDiv(this.htmlElement.querySelector(".mainContainer"), null, ["outer"], null);
 | 
			
		||||
            const outerDiv = makeDiv(buttonContainer, null, ["outer"], null);
 | 
			
		||||
            outerDiv.appendChild(importButtonElement);
 | 
			
		||||
            const newGameButton = makeButton(
 | 
			
		||||
                this.htmlElement.querySelector(".mainContainer .outer"),
 | 
			
		||||
@ -277,24 +290,11 @@ export class MainMenuState extends GameState {
 | 
			
		||||
                T.mainMenu.newGame
 | 
			
		||||
            );
 | 
			
		||||
            this.trackClicks(newGameButton, this.onPlayButtonClicked);
 | 
			
		||||
 | 
			
		||||
            const oldPlayButton = this.htmlElement.querySelector(".mainContainer .playButton");
 | 
			
		||||
            if (oldPlayButton) oldPlayButton.remove();
 | 
			
		||||
        } else {
 | 
			
		||||
            const playBtn = makeButton(
 | 
			
		||||
                this.htmlElement.querySelector(".mainContainer"),
 | 
			
		||||
                ["playButton", "styledButton"],
 | 
			
		||||
                T.mainMenu.play
 | 
			
		||||
            );
 | 
			
		||||
            // New game
 | 
			
		||||
            const playBtn = makeButton(buttonContainer, ["playButton", "styledButton"], T.mainMenu.play);
 | 
			
		||||
            this.trackClicks(playBtn, this.onPlayButtonClicked);
 | 
			
		||||
 | 
			
		||||
            this.htmlElement.querySelector(".mainContainer").appendChild(importButtonElement);
 | 
			
		||||
 | 
			
		||||
            const outerDiv = this.htmlElement.querySelector(".mainContainer .outer");
 | 
			
		||||
            if (outerDiv) {
 | 
			
		||||
                outerDiv.remove();
 | 
			
		||||
                this.htmlElement.querySelector(".mainContainer .continueButton").remove();
 | 
			
		||||
            }
 | 
			
		||||
            buttonContainer.appendChild(importButtonElement);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -312,6 +312,11 @@ export class MainMenuState extends GameState {
 | 
			
		||||
        this.moveToState("ChangelogState");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    onRedditClicked() {
 | 
			
		||||
        this.app.analytics.trackUiClick("main_menu_reddit_link");
 | 
			
		||||
        this.app.platformWrapper.openExternalLink(THIRDPARTY_URLS.reddit);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    onContestClicked() {
 | 
			
		||||
        this.app.analytics.trackUiClick("contest_click");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -156,6 +156,7 @@ mainMenu:
 | 
			
		||||
    continue: Continue
 | 
			
		||||
    newGame: New Game
 | 
			
		||||
    madeBy: Made by <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -397,6 +398,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                This is <strong>NOT</strong> an idle game! Build more extractors and belts to finish the goal quicker.<br><br>Tip: Hold <strong>SHIFT</strong> to place multiple extractors, and use <strong>R</strong> to rotate them.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Red
 | 
			
		||||
        green: Green
 | 
			
		||||
        blue: Blue
 | 
			
		||||
        yellow: Yellow
 | 
			
		||||
        purple: Purple
 | 
			
		||||
        cyan: Cyan
 | 
			
		||||
        white: White
 | 
			
		||||
        uncolored: No color
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Layers
 | 
			
		||||
        empty: Empty
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -711,6 +725,10 @@ settings:
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Color Blind Mode
 | 
			
		||||
            description: Enables various tools which allow to play the game if you are color blind.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Keybindings
 | 
			
		||||
    hint: >-
 | 
			
		||||
 | 
			
		||||
@ -134,9 +134,10 @@ mainMenu:
 | 
			
		||||
 | 
			
		||||
        showInfo: Zobrazit
 | 
			
		||||
        contestOver: Tato soutěž skončila - Připojte se na Discord a získejte informace o nových soutěžích!
 | 
			
		||||
    continue: Continue
 | 
			
		||||
    newGame: New Game
 | 
			
		||||
    madeBy: Made by <author-link>
 | 
			
		||||
    continue: Pokračovat
 | 
			
		||||
    newGame: Nová hra
 | 
			
		||||
    madeBy: Vytvořil <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -266,12 +267,12 @@ ingame:
 | 
			
		||||
        createMarker: Vytvořit značku
 | 
			
		||||
        delete: Zničit
 | 
			
		||||
        pasteLastBlueprint: Vložit poslední plán
 | 
			
		||||
        lockBeltDirection: Enable belt planner
 | 
			
		||||
        plannerSwitchSide: Flip planner side
 | 
			
		||||
        cutSelection: Cut
 | 
			
		||||
        copySelection: Copy
 | 
			
		||||
        clearSelection: Clear Selection
 | 
			
		||||
        pipette: Pipette
 | 
			
		||||
        lockBeltDirection: Zamknout směr pásu
 | 
			
		||||
        plannerSwitchSide: Otočit strany plánovače
 | 
			
		||||
        cutSelection: Vyjmout
 | 
			
		||||
        copySelection: Kopířovat
 | 
			
		||||
        clearSelection: Zrušit výběr
 | 
			
		||||
        pipette: Kapátko
 | 
			
		||||
 | 
			
		||||
    # Everything related to placing buildings (I.e. as soon as you selected a building
 | 
			
		||||
    # from the toolbar)
 | 
			
		||||
@ -378,6 +379,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                Toto <strong>NENÍ</strong> hra o čekání! Sestavte další extraktory a pásy, abyste dosáhli cíle rychleji.<br><br>Tip: Chcete-li umístit více extraktorů, podržte <strong>SHIFT</strong>. Pomocí <strong>R</strong> je můžete otočit.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Červená
 | 
			
		||||
        green: Zelená
 | 
			
		||||
        blue: Modrá
 | 
			
		||||
        yellow: Žlutá
 | 
			
		||||
        purple: Fialová
 | 
			
		||||
        cyan: Tyrkysová
 | 
			
		||||
        white: Bílá
 | 
			
		||||
        uncolored: Bez barvy
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Vrstvy
 | 
			
		||||
        empty: Prázdné
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -582,7 +596,7 @@ settings:
 | 
			
		||||
 | 
			
		||||
    labels:
 | 
			
		||||
        uiScale:
 | 
			
		||||
            title: Škála UI
 | 
			
		||||
            title: Škálování UI
 | 
			
		||||
            description: >-
 | 
			
		||||
                Změní velikost uživatelského rozhraní. Rozhraní se bude stále přizpůsobovoat rozlišení vaší obrazovky, toto nastavení pouze mění jeho škálu.
 | 
			
		||||
            scales:
 | 
			
		||||
@ -658,40 +672,42 @@ settings:
 | 
			
		||||
                super_fast: Hodně Rychlá
 | 
			
		||||
                extremely_fast: Extrémně Rychlá
 | 
			
		||||
        enableTunnelSmartplace:
 | 
			
		||||
            title: Smart Tunnels
 | 
			
		||||
            title: Chytré tunely
 | 
			
		||||
            description: >-
 | 
			
		||||
                When enabled, placing tunnels will automatically remove unnecessary belts.
 | 
			
		||||
                This also enables to drag tunnels and excess tunnels will get removed.
 | 
			
		||||
                Pokládání tunelů po zapnutí bude samo odstraňovat nepotřebné pásy.
 | 
			
		||||
                Umožňuje také potahování tunelů a nadbytečné tunely budou odstraněny.
 | 
			
		||||
        vignette:
 | 
			
		||||
            title: Vignette
 | 
			
		||||
            title: Viněta
 | 
			
		||||
            description: >-
 | 
			
		||||
                Enables the vignette which darkens the screen corners and makes text easier
 | 
			
		||||
                to read.
 | 
			
		||||
                Zapne vinětu, která ztmaví rohy obrazovky, což umožňuje lepší čtení textu.
 | 
			
		||||
 | 
			
		||||
        autosaveInterval:
 | 
			
		||||
            title: Autosave Interval
 | 
			
		||||
            title: Interval automatického ukládání
 | 
			
		||||
            description: >-
 | 
			
		||||
                Controls how often the game saves automatically. You can also disable it
 | 
			
		||||
                entirely here.
 | 
			
		||||
                Určuje jak často se hra automaticky ukládá. Lze ji zde také úplně zakázat.
 | 
			
		||||
            intervals:
 | 
			
		||||
                one_minute: 1 Minute
 | 
			
		||||
                two_minutes: 2 Minutes
 | 
			
		||||
                five_minutes: 5 Minutes
 | 
			
		||||
                ten_minutes: 10 Minutes
 | 
			
		||||
                twenty_minutes: 20 Minutes
 | 
			
		||||
                disabled: Disabled
 | 
			
		||||
                one_minute: 1 minuta
 | 
			
		||||
                two_minutes: 2 minuty
 | 
			
		||||
                five_minutes: 5 minut
 | 
			
		||||
                ten_minutes: 10 minut
 | 
			
		||||
                twenty_minutes: 20 minut
 | 
			
		||||
                disabled: Zrušeno
 | 
			
		||||
 | 
			
		||||
        compactBuildingInfo:
 | 
			
		||||
            title: Compact Building Infos
 | 
			
		||||
            title: Kompaktní informace o stavbách
 | 
			
		||||
            description: >-
 | 
			
		||||
                Shortens info boxes for buildings by only showing their ratios. Otherwise a
 | 
			
		||||
                description and image is shown.
 | 
			
		||||
                Zkrátí informační políčka pro budovy tím, že pouze ukáže jejich koeficient.
 | 
			
		||||
                V opačném případě zobrazí popis a obrázek.
 | 
			
		||||
 | 
			
		||||
        disableCutDeleteWarnings:
 | 
			
		||||
            title: Disable Cut/Delete Warnings
 | 
			
		||||
            title: Zakázat upozornění o vyjmutí nebo odstranění
 | 
			
		||||
            description: >-
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
                Deaktivujte varovná dialogová okna vyvolaná při vymutí/mazání více než 100
 | 
			
		||||
                entit.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Režim pro barvoslepé
 | 
			
		||||
            description: Zapné různé nástroje, které vám umožní hrát hru i pokud jste barvoslepí.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Klávesové zkratky
 | 
			
		||||
@ -756,9 +772,9 @@ keybindings:
 | 
			
		||||
        pasteLastBlueprint: Vložit poslední plán
 | 
			
		||||
        massSelectCut: Vyjmout oblast
 | 
			
		||||
        exportScreenshot: Exportovat celou základnu jako obrázek
 | 
			
		||||
        lockBeltDirection: Enable belt planner
 | 
			
		||||
        switchDirectionLockSide: "Planner: Switch side"
 | 
			
		||||
        pipette: Pipette
 | 
			
		||||
        lockBeltDirection: Zamknout směr pásu
 | 
			
		||||
        switchDirectionLockSide: Otočit strany zámku plánovače
 | 
			
		||||
        pipette: Kapátko
 | 
			
		||||
 | 
			
		||||
about:
 | 
			
		||||
    title: O hře
 | 
			
		||||
 | 
			
		||||
@ -155,6 +155,7 @@ mainMenu:
 | 
			
		||||
    continue: Fortsetzen
 | 
			
		||||
    newGame: Neues Spiel
 | 
			
		||||
    madeBy: Ein Spiel von <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -286,7 +287,7 @@ ingame:
 | 
			
		||||
        plannerSwitchSide: "Planer: Seite wechseln"
 | 
			
		||||
        cutSelection: Ausschneiden
 | 
			
		||||
        copySelection: Kopieren
 | 
			
		||||
        clearSelection: Leere Selektion
 | 
			
		||||
        clearSelection: Auswahl aufheben
 | 
			
		||||
        pipette: Pipette
 | 
			
		||||
 | 
			
		||||
    # Everything related to placing buildings (I.e. as soon as you selected a building
 | 
			
		||||
@ -294,7 +295,7 @@ ingame:
 | 
			
		||||
    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: <key> Wechsle Variante
 | 
			
		||||
 | 
			
		||||
        # Shows the hotkey in the ui, e.g. "Hotkey: Q"
 | 
			
		||||
        hotkeyLabel: >-
 | 
			
		||||
@ -394,6 +395,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                Dies ist <strong>KEIN</strong> Idle-Game! Baue mehr Extrahierer und Förderbänder, um das Ziel schneller zu erreichen.<br><br>Tipp: Halte <strong>UMSCH</strong>, um mehrere Gebäude zu platzieren und nutze <strong>R</strong> um sie zu rotieren.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Rot
 | 
			
		||||
        green: Grün
 | 
			
		||||
        blue: Blau
 | 
			
		||||
        yellow: Gelb
 | 
			
		||||
        purple: Violett
 | 
			
		||||
        cyan: Cyan
 | 
			
		||||
        white: Weiß
 | 
			
		||||
        uncolored: Farblos
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Ebenen
 | 
			
		||||
        empty: Leer
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -688,29 +702,32 @@ settings:
 | 
			
		||||
                und das Lesen der Textfelder vereinfacht.
 | 
			
		||||
 | 
			
		||||
        autosaveInterval:
 | 
			
		||||
            title: Autosave Interval
 | 
			
		||||
            title: Intervall für automatisches Speichern
 | 
			
		||||
            description: >-
 | 
			
		||||
                Controls how often the game saves automatically. You can also disable it
 | 
			
		||||
                entirely here.
 | 
			
		||||
                Ändert das Intervall, in dem der Spielstand automatisch gespeichert wird.
 | 
			
		||||
                Die Funktion kann hier auch deaktiviert werden.
 | 
			
		||||
            intervals:
 | 
			
		||||
                one_minute: 1 Minute
 | 
			
		||||
                two_minutes: 2 Minutes
 | 
			
		||||
                five_minutes: 5 Minutes
 | 
			
		||||
                ten_minutes: 10 Minutes
 | 
			
		||||
                twenty_minutes: 20 Minutes
 | 
			
		||||
                disabled: Disabled
 | 
			
		||||
                two_minutes: 2 Minuten
 | 
			
		||||
                five_minutes: 5 Minuten
 | 
			
		||||
                ten_minutes: 10 Minuten
 | 
			
		||||
                twenty_minutes: 20 Minuten
 | 
			
		||||
                disabled: Deaktiviert
 | 
			
		||||
 | 
			
		||||
        compactBuildingInfo:
 | 
			
		||||
            title: Compact Building Infos
 | 
			
		||||
            title: Kompakte Gebäudeinformationen
 | 
			
		||||
            description: >-
 | 
			
		||||
                Shortens info boxes for buildings by only showing their ratios. Otherwise a
 | 
			
		||||
                description and image is shown.
 | 
			
		||||
                Reduziert die Infoboxen der Gebäude auf ihre Arbeitsgeschwindigkeit. Anderenfalls wird ein
 | 
			
		||||
                Bild mit Beschreibung angezeigt.
 | 
			
		||||
 | 
			
		||||
        disableCutDeleteWarnings:
 | 
			
		||||
            title: Disable Cut/Delete Warnings
 | 
			
		||||
            title: Deaktiviere Warnungsdialog beim Löschen
 | 
			
		||||
            description: >-
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
                Deaktiviert die Warnung, die beim Löschen und Ausschneiden von mehr als 100 Feldern angezeigt wird.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Modus für Farbenblinde
 | 
			
		||||
            description: Aktiviert verschiedene Werkzeuge, die dir das Spielen trotz Farbenblindheit ermöglichen.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Tastenbelegung
 | 
			
		||||
@ -739,7 +756,7 @@ keybindings:
 | 
			
		||||
 | 
			
		||||
        mapZoomIn: Hineinzoomen
 | 
			
		||||
        mapZoomOut: Herauszoomen
 | 
			
		||||
        createMarker: Markeirung erstellen
 | 
			
		||||
        createMarker: Markierung erstellen
 | 
			
		||||
 | 
			
		||||
        menuOpenShop: Upgrades
 | 
			
		||||
        menuOpenStats: Statistiken
 | 
			
		||||
@ -759,7 +776,7 @@ keybindings:
 | 
			
		||||
 | 
			
		||||
        rotateWhilePlacing: Rotieren
 | 
			
		||||
        rotateInverseModifier: >-
 | 
			
		||||
            Modifier: stattdessen gegen UZS rotieren
 | 
			
		||||
            Modifikator: stattdessen gegen UZS rotieren
 | 
			
		||||
        cycleBuildingVariants: Variante wählen
 | 
			
		||||
        confirmMassDelete: Massenlöschung bestätigen
 | 
			
		||||
        cycleBuildings: Gebäude rotieren
 | 
			
		||||
@ -782,22 +799,22 @@ keybindings:
 | 
			
		||||
about:
 | 
			
		||||
    title: Über dieses Spiel
 | 
			
		||||
    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>
 | 
			
		||||
        Dieses Spiel hat einen offenen Quellcode (Open Source) und wurde von <a href="https://github.com/tobspr"
 | 
			
		||||
        target="_blank">Tobias Springer</a> (das bin ich!) entwickelt.<br><br>
 | 
			
		||||
 | 
			
		||||
        If you want to contribute, check out <a href="<githublink>"
 | 
			
		||||
        target="_blank">shapez.io on github</a>.<br><br>
 | 
			
		||||
        Wenn du etwas zum Spiel beitragen möchtest, dann schaue dir <a href="<githublink>"
 | 
			
		||||
        target="_blank">shapez.io auf GitHub</a> an.<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>
 | 
			
		||||
        Das Spiel wurde erst durch die großartige Discord-Community
 | 
			
		||||
        um meine Spiele möglich gemacht. Komm doch einfach mal auf dem <a href="<discordlink>"
 | 
			
		||||
        target="_blank">Discord-Server</a> vorbei!<br><br>
 | 
			
		||||
 | 
			
		||||
        The soundtrack was made by <a href="https://soundcloud.com/pettersumelius"
 | 
			
		||||
        target="_blank">Peppsen</a> - He's awesome.<br><br>
 | 
			
		||||
        Der Soundtrack wurde von <a href="https://soundcloud.com/pettersumelius"
 | 
			
		||||
        target="_blank">Peppsen</a> komponiert! Klasse Typ.<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.
 | 
			
		||||
        Abschließend möchte ich meinem Kumpel <a
 | 
			
		||||
        href="https://github.com/niklas-dahl" target="_blank">Niklas</a> danken! Ohne unsere
 | 
			
		||||
        etlichen gemeinsamen Stunden in Factorio wäre dieses Projekt nie zustande gekommen.
 | 
			
		||||
 | 
			
		||||
changelog:
 | 
			
		||||
    title: Änderungen
 | 
			
		||||
 | 
			
		||||
@ -156,6 +156,7 @@ mainMenu:
 | 
			
		||||
    continue: Continue
 | 
			
		||||
    newGame: New Game
 | 
			
		||||
    madeBy: Made by <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -397,6 +398,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                This is <strong>NOT</strong> an idle game! Build more extractors and belts to finish the goal quicker.<br><br>Tip: Hold <strong>SHIFT</strong> to place multiple extractors, and use <strong>R</strong> to rotate them.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Red
 | 
			
		||||
        green: Green
 | 
			
		||||
        blue: Blue
 | 
			
		||||
        yellow: Yellow
 | 
			
		||||
        purple: Purple
 | 
			
		||||
        cyan: Cyan
 | 
			
		||||
        white: White
 | 
			
		||||
        uncolored: No color
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Layers
 | 
			
		||||
        empty: Empty
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -712,6 +726,10 @@ settings:
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Color Blind Mode
 | 
			
		||||
            description: Enables various tools which allow to play the game if you are color blind.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Keybindings
 | 
			
		||||
    hint: >-
 | 
			
		||||
 | 
			
		||||
@ -121,6 +121,7 @@ mainMenu:
 | 
			
		||||
    continue: Continue
 | 
			
		||||
    newGame: New Game
 | 
			
		||||
    changelog: Changelog
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
    importSavegame: Import
 | 
			
		||||
    openSourceHint: This game is open source!
 | 
			
		||||
    discordLink: Official Discord Server
 | 
			
		||||
@ -290,6 +291,17 @@ ingame:
 | 
			
		||||
        clearSelection: Clear Selection
 | 
			
		||||
        pipette: Pipette
 | 
			
		||||
 | 
			
		||||
    # Names of the colors, used for the color blind mode
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Red
 | 
			
		||||
        green: Green
 | 
			
		||||
        blue: Blue
 | 
			
		||||
        yellow: Yellow
 | 
			
		||||
        purple: Purple
 | 
			
		||||
        cyan: Cyan
 | 
			
		||||
        white: White
 | 
			
		||||
        uncolored: No color
 | 
			
		||||
 | 
			
		||||
    # Everything related to placing buildings (I.e. as soon as you selected a building
 | 
			
		||||
    # from the toolbar)
 | 
			
		||||
    buildingPlacement:
 | 
			
		||||
@ -384,6 +396,11 @@ ingame:
 | 
			
		||||
        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.
 | 
			
		||||
 | 
			
		||||
    # Shape viewer
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Layers
 | 
			
		||||
        empty: Empty
 | 
			
		||||
 | 
			
		||||
    # Interactive tutorial
 | 
			
		||||
    interactiveTutorial:
 | 
			
		||||
        title: Tutorial
 | 
			
		||||
@ -652,6 +669,11 @@ settings:
 | 
			
		||||
            description: >-
 | 
			
		||||
                Change the language. All translations are user contributed and might be incomplete!
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Color Blind Mode
 | 
			
		||||
            description: >-
 | 
			
		||||
                Enables various tools which allow to play the game if you are color blind.
 | 
			
		||||
 | 
			
		||||
        fullscreen:
 | 
			
		||||
            title: Fullscreen
 | 
			
		||||
            description: >-
 | 
			
		||||
 | 
			
		||||
@ -57,7 +57,7 @@ steamPage:
 | 
			
		||||
            [*] Modo historia en el que los edificios cuesten figuras
 | 
			
		||||
            [*] Más niveles y edificios (exclusivos del juego completo)
 | 
			
		||||
            [*] Mapas diferentes y tal vez obstáculos en el mapa
 | 
			
		||||
            [*] Configuración en la cración del mapa (Editar el número y tamaño de los recursos, la semilla, y más)
 | 
			
		||||
            [*] Configuración en la creación del mapa (Editar el número y tamaño de los recursos, la semilla, y más)
 | 
			
		||||
            [*] Más tipos de formas
 | 
			
		||||
            [*] Mejoras de rendimiento (Aunque el juego ya funciona muy bien!)
 | 
			
		||||
            [*] Modo para daltónicos
 | 
			
		||||
@ -155,6 +155,7 @@ mainMenu:
 | 
			
		||||
 | 
			
		||||
        showInfo: Ver
 | 
			
		||||
        contestOver: El concurso ha terminado - Únete al discord para enterarte sobre nuevos concursos!
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -282,12 +283,12 @@ ingame:
 | 
			
		||||
        placeBuilding: Colocar edificio
 | 
			
		||||
        createMarker: Crear marca
 | 
			
		||||
        delete: Destruir
 | 
			
		||||
        pasteLastBlueprint: Paste last blueprint
 | 
			
		||||
        lockBeltDirection: Enable belt planner
 | 
			
		||||
        plannerSwitchSide: Flip planner side
 | 
			
		||||
        cutSelection: Cut
 | 
			
		||||
        copySelection: Copy
 | 
			
		||||
        clearSelection: Clear Selection
 | 
			
		||||
        pasteLastBlueprint: Pegar último plano
 | 
			
		||||
        lockBeltDirection: Activar planificador de cintas transportadoras
 | 
			
		||||
        plannerSwitchSide: Invertir giro del planificador
 | 
			
		||||
        cutSelection: Cortar
 | 
			
		||||
        copySelection: Copiar
 | 
			
		||||
        clearSelection: Limpiar Selección
 | 
			
		||||
        pipette: Pipette
 | 
			
		||||
 | 
			
		||||
    # Everything related to placing buildings (I.e. as soon as you selected a building
 | 
			
		||||
@ -393,6 +394,20 @@ ingame:
 | 
			
		||||
                ¡Conecta el extractor con una <strong>cinta transportadora</strong> a tu edificio central!<br><br> Pista: <strong>Pulsa y arrastra</strong> la cinta transportadora con el ratón!
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                ¡Esto <strong>NO</strong> es un "juego de esperar"! Construye más extractores y cintas transportadoras para completar el objetivo más rápido.<br><br> Pista: Mantén pulsado <strong>SHIFT</strong> para colocar varios extractores y usa <strong>R</strong> para rotarlos.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Rojo
 | 
			
		||||
        green: Verde
 | 
			
		||||
        blue: Azul
 | 
			
		||||
        yellow: Amarillo
 | 
			
		||||
        purple: Morado
 | 
			
		||||
        cyan: Cian
 | 
			
		||||
        white: Blanco
 | 
			
		||||
        uncolored: Sin color
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Capas
 | 
			
		||||
        empty: Vacio
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -439,7 +454,7 @@ buildings:
 | 
			
		||||
            description: Multifuncional - Distribuye equitativamente todas las entradas a todas las salidas.
 | 
			
		||||
 | 
			
		||||
        compact:
 | 
			
		||||
            name: fusionador (compacto)
 | 
			
		||||
            name: Fusionador (compacto)
 | 
			
		||||
            description: Junta dos cintas transportadoras en una.
 | 
			
		||||
 | 
			
		||||
        compact-inverse:
 | 
			
		||||
@ -605,7 +620,7 @@ settings:
 | 
			
		||||
                huge: Enorme
 | 
			
		||||
 | 
			
		||||
        scrollWheelSensitivity:
 | 
			
		||||
            title: Sensitividad del zoom
 | 
			
		||||
            title: Sensibilidad del zoom
 | 
			
		||||
            description: >-
 | 
			
		||||
                Cambia como de sensible es el zoom (Tanto la ruedo del ratón como el trackpad)
 | 
			
		||||
            sensitivity:
 | 
			
		||||
@ -674,33 +689,33 @@ settings:
 | 
			
		||||
                Si está activado, colocar túneles automáticamente removerá las cintas transportadoras innecesarias. Esto también permite arrastrar con el ratón y los túneles excedentes serán removidos.
 | 
			
		||||
 | 
			
		||||
        vignette:
 | 
			
		||||
            title: Vignette
 | 
			
		||||
            title: Viñeta
 | 
			
		||||
            description: >-
 | 
			
		||||
                Enables the vignette which darkens the screen corners and makes text easier
 | 
			
		||||
                to read.
 | 
			
		||||
                Activa el efecto viñeta que oscurece loas esquinas de la pantalla y hace el texto mas fácil de leer.
 | 
			
		||||
 | 
			
		||||
        autosaveInterval:
 | 
			
		||||
            title: Autosave Interval
 | 
			
		||||
            title: Intervalo de Autoguardado
 | 
			
		||||
            description: >-
 | 
			
		||||
                Controls how often the game saves automatically. You can also disable it
 | 
			
		||||
                entirely here.
 | 
			
		||||
                Controla cada cuanto tiempo se guarda el juego automaticamente. Aquí tambien puedes deshabilitarlo por completo.
 | 
			
		||||
            intervals:
 | 
			
		||||
                one_minute: 1 Minute
 | 
			
		||||
                two_minutes: 2 Minutes
 | 
			
		||||
                five_minutes: 5 Minutes
 | 
			
		||||
                ten_minutes: 10 Minutes
 | 
			
		||||
                twenty_minutes: 20 Minutes
 | 
			
		||||
                disabled: Disabled
 | 
			
		||||
                one_minute: 1 Minuto
 | 
			
		||||
                two_minutes: 2 Minutos
 | 
			
		||||
                five_minutes: 5 Minutos
 | 
			
		||||
                ten_minutes: 10 Minutos
 | 
			
		||||
                twenty_minutes: 20 Minutos
 | 
			
		||||
                disabled: Deshabilitado
 | 
			
		||||
        compactBuildingInfo:
 | 
			
		||||
            title: Compact Building Infos
 | 
			
		||||
            title: Información Compacta de Edificios
 | 
			
		||||
            description: >-
 | 
			
		||||
                Shortens info boxes for buildings by only showing their ratios. Otherwise a
 | 
			
		||||
                description and image is shown.
 | 
			
		||||
                Acorta la caja de información mostrando solo sus ratios. Si no, se mostrara una descripción y una imagen.
 | 
			
		||||
        disableCutDeleteWarnings:
 | 
			
		||||
            title: Disable Cut/Delete Warnings
 | 
			
		||||
            title: Deshabilitar las advertencias de Cortar/Eliminar
 | 
			
		||||
            description: >-
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
                Deshabilita los dialogos de advertencia que se muestran cuando se cortan/eliminan mas de 100 elementos.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Modo para Daltonicos
 | 
			
		||||
            description: Activa varias herramientas que permiten jugar si eres daltonico.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Atajos de Teclado
 | 
			
		||||
 | 
			
		||||
@ -157,6 +157,7 @@ mainMenu:
 | 
			
		||||
    continue: Continuer
 | 
			
		||||
    newGame: Nouvelle partie
 | 
			
		||||
    madeBy: Créé par <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -212,7 +213,7 @@ dialogs:
 | 
			
		||||
 | 
			
		||||
    keybindingsResetOk:
 | 
			
		||||
        title: Réinitialisation des contrôles
 | 
			
		||||
        desc: Les contrôles ont été réinitialisés par leur état par défaut respectifs !
 | 
			
		||||
        desc: Les contrôles ont été réinitialisés dans leur état par défaut respectifs !
 | 
			
		||||
 | 
			
		||||
    featureRestriction:
 | 
			
		||||
        title: Version démo
 | 
			
		||||
@ -236,7 +237,7 @@ dialogs:
 | 
			
		||||
    massDeleteConfirm:
 | 
			
		||||
        title: Confirmation de suppression
 | 
			
		||||
        desc: >-
 | 
			
		||||
            Vous allez supprimer pas mal de bâtiments (<count> pour être exact) ! Etes vous certains de vouloir faire cela ?
 | 
			
		||||
            Vous allez supprimer pas mal de bâtiments (<count> pour être exact) ! Êtes vous certains de vouloir faire cela ?
 | 
			
		||||
 | 
			
		||||
    massCutConfirm:
 | 
			
		||||
        title: Confirmer la coupure
 | 
			
		||||
@ -247,7 +248,7 @@ dialogs:
 | 
			
		||||
    blueprintsNotUnlocked:
 | 
			
		||||
        title: Pas encore débloqué
 | 
			
		||||
        desc: >-
 | 
			
		||||
            Les patrons n'ont pas encore étés débloqués ! Terminez encore quelques niveaux pour les débloquer.
 | 
			
		||||
            Les patrons n'ont pas encore étés débloqués ! Terminez encore quelques niveaux pour y avoir accès.
 | 
			
		||||
 | 
			
		||||
    keybindingsIntroduction:
 | 
			
		||||
        title: Raccourcis utiles
 | 
			
		||||
@ -288,9 +289,9 @@ ingame:
 | 
			
		||||
        pasteLastBlueprint: Copier le dernier patron
 | 
			
		||||
        lockBeltDirection: Utiliser le plannificateur de convoyeurs
 | 
			
		||||
        plannerSwitchSide: Échanger la direction du plannificateur
 | 
			
		||||
        cutSelection: Cut
 | 
			
		||||
        copySelection: Copy
 | 
			
		||||
        clearSelection: Clear Selection
 | 
			
		||||
        cutSelection: Couper
 | 
			
		||||
        copySelection: Copier
 | 
			
		||||
        clearSelection: Effacer la sélection
 | 
			
		||||
        pipette: Pipette
 | 
			
		||||
 | 
			
		||||
    # Everything related to placing buildings (I.e. as soon as you selected a building
 | 
			
		||||
@ -397,6 +398,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                Ceci n'est <strong>PAS</strong> un jeu incrémental et inactif ! Construisez plus d'extracteurs et de convoyeurs pour atteindre plus vite votre votre but.<br><br>Astuce: Gardez <strong>SHIFT</strong> enfoncé pour placer plusieurs extracteurs, et utilisez <strong>R</strong> pour les faire pivoter.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Rouge
 | 
			
		||||
        green: Vert
 | 
			
		||||
        blue: Bleu
 | 
			
		||||
        yellow: Jaune
 | 
			
		||||
        purple: Violet
 | 
			
		||||
        cyan: Cyan
 | 
			
		||||
        white: Blanc
 | 
			
		||||
        uncolored: Non coloré
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Calques
 | 
			
		||||
        empty: Vide
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -691,27 +705,28 @@ settings:
 | 
			
		||||
                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
 | 
			
		||||
            title: Fréquence des sauvegardes automatiques
 | 
			
		||||
            description: >-
 | 
			
		||||
                Controls how often the game saves automatically. You can also disable it
 | 
			
		||||
                entirely here.
 | 
			
		||||
                Contrôle avec quelle fréquence le jeu sera sauvegardé automatiquement. Vous pouvez aussi entièrement désactiver cette fonctionnalité ici.
 | 
			
		||||
            intervals:
 | 
			
		||||
                one_minute: 1 Minute
 | 
			
		||||
                two_minutes: 2 Minutes
 | 
			
		||||
                five_minutes: 5 Minutes
 | 
			
		||||
                ten_minutes: 10 Minutes
 | 
			
		||||
                twenty_minutes: 20 Minutes
 | 
			
		||||
                disabled: Disabled
 | 
			
		||||
                disabled: Désactivé
 | 
			
		||||
        compactBuildingInfo:
 | 
			
		||||
            title: Compact Building Infos
 | 
			
		||||
            title: Informations réduites sur les bâtiments
 | 
			
		||||
            description: >-
 | 
			
		||||
                Shortens info boxes for buildings by only showing their ratios. Otherwise a
 | 
			
		||||
                description and image is shown.
 | 
			
		||||
                Raccourcit les panneaux d'information sur les bâtiments en n'affichant que les ratios. Dans le cas contraire, une description et une imagine sont présentés.
 | 
			
		||||
        disableCutDeleteWarnings:
 | 
			
		||||
            title: Disable Cut/Delete Warnings
 | 
			
		||||
            title: Désactive les avertissement pour Couper/Effacer
 | 
			
		||||
            description: >-
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
                Désactive la boîte de dialogue qui s'affiche lorsque vous vous apprêtez à couper/effacer plus de 100 entités.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Mode Daltonien
 | 
			
		||||
            description: Active divers outils qui permettent de jouer à ce jeu si vous êtes daltonien.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Contrôles
 | 
			
		||||
 | 
			
		||||
@ -156,6 +156,7 @@ mainMenu:
 | 
			
		||||
 | 
			
		||||
        showInfo: View
 | 
			
		||||
        contestOver: This contest has ended - Join the discord to get noticed about new contests!
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -395,6 +396,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                This is <strong>NOT</strong> an idle game! Build more extractors and belts to finish the goal quicker.<br><br>Tip: Hold <strong>SHIFT</strong> to place multiple extractors, and use <strong>R</strong> to rotate them.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Red
 | 
			
		||||
        green: Green
 | 
			
		||||
        blue: Blue
 | 
			
		||||
        yellow: Yellow
 | 
			
		||||
        purple: Purple
 | 
			
		||||
        cyan: Cyan
 | 
			
		||||
        white: White
 | 
			
		||||
        uncolored: No color
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Layers
 | 
			
		||||
        empty: Empty
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -710,6 +724,10 @@ settings:
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Color Blind Mode
 | 
			
		||||
            description: Enables various tools which allow to play the game if you are color blind.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Keybindings
 | 
			
		||||
    hint: >-
 | 
			
		||||
 | 
			
		||||
@ -156,6 +156,7 @@ mainMenu:
 | 
			
		||||
    continue: Continue
 | 
			
		||||
    newGame: New Game
 | 
			
		||||
    madeBy: Made by <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -397,6 +398,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                This is <strong>NOT</strong> an idle game! Build more extractors and belts to finish the goal quicker.<br><br>Tip: Hold <strong>SHIFT</strong> to place multiple extractors, and use <strong>R</strong> to rotate them.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Red
 | 
			
		||||
        green: Green
 | 
			
		||||
        blue: Blue
 | 
			
		||||
        yellow: Yellow
 | 
			
		||||
        purple: Purple
 | 
			
		||||
        cyan: Cyan
 | 
			
		||||
        white: White
 | 
			
		||||
        uncolored: No color
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Layers
 | 
			
		||||
        empty: Empty
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -709,6 +723,10 @@ settings:
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Color Blind Mode
 | 
			
		||||
            description: Enables various tools which allow to play the game if you are color blind.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Keybindings
 | 
			
		||||
    hint: >-
 | 
			
		||||
 | 
			
		||||
@ -156,6 +156,7 @@ mainMenu:
 | 
			
		||||
    continue: Continue
 | 
			
		||||
    newGame: New Game
 | 
			
		||||
    madeBy: Made by <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -397,6 +398,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                This is <strong>NOT</strong> an idle game! Build more extractors and belts to finish the goal quicker.<br><br>Tip: Hold <strong>SHIFT</strong> to place multiple extractors, and use <strong>R</strong> to rotate them.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Red
 | 
			
		||||
        green: Green
 | 
			
		||||
        blue: Blue
 | 
			
		||||
        yellow: Yellow
 | 
			
		||||
        purple: Purple
 | 
			
		||||
        cyan: Cyan
 | 
			
		||||
        white: White
 | 
			
		||||
        uncolored: No color
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Layers
 | 
			
		||||
        empty: Empty
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -710,6 +724,10 @@ settings:
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Color Blind Mode
 | 
			
		||||
            description: Enables various tools which allow to play the game if you are color blind.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Keybindings
 | 
			
		||||
    hint: >-
 | 
			
		||||
 | 
			
		||||
@ -156,6 +156,7 @@ mainMenu:
 | 
			
		||||
    continue: 続きから
 | 
			
		||||
    newGame: 新規ゲーム
 | 
			
		||||
    madeBy: Made by <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -286,10 +287,10 @@ ingame:
 | 
			
		||||
        pasteLastBlueprint: ブループリントの内容を設置
 | 
			
		||||
        lockBeltDirection: ベルトプランナーを有効化
 | 
			
		||||
        plannerSwitchSide: プランナーが通る側を反転
 | 
			
		||||
        cutSelection: Cut
 | 
			
		||||
        copySelection: Copy
 | 
			
		||||
        clearSelection: Clear Selection
 | 
			
		||||
        pipette: Pipette
 | 
			
		||||
        cutSelection: カット
 | 
			
		||||
        copySelection: コピー
 | 
			
		||||
        clearSelection: 選択範囲をクリア
 | 
			
		||||
        pipette: ピペット
 | 
			
		||||
 | 
			
		||||
    # Everything related to placing buildings (I.e. as soon as you selected a building
 | 
			
		||||
    # from the toolbar)
 | 
			
		||||
@ -396,6 +397,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                このゲームは放置系のゲームでは<strong>ありません</strong>! もっと早く要件を満たせるように、追加の抽出機とベルトを設置しましょう。<br><br>Tip: <strong>SHIFT</strong> キーを押し続けると抽出機を連続配置できます。<strong>R</strong>キーで設置方向を回転できます。
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: 赤
 | 
			
		||||
        green: 緑
 | 
			
		||||
        blue: 青
 | 
			
		||||
        yellow: 黄
 | 
			
		||||
        purple: 紫
 | 
			
		||||
        cyan: シアン
 | 
			
		||||
        white: 白
 | 
			
		||||
        uncolored: 無色
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: レイヤー
 | 
			
		||||
        empty: 空
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -686,27 +700,28 @@ settings:
 | 
			
		||||
                画面の隅を暗くして文字を読みやすくするビネットを有効化します。
 | 
			
		||||
 | 
			
		||||
        autosaveInterval:
 | 
			
		||||
            title: Autosave Interval
 | 
			
		||||
            title: オートセーブ間隔
 | 
			
		||||
            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
 | 
			
		||||
                one_minute: 1 分
 | 
			
		||||
                two_minutes: 2 分
 | 
			
		||||
                five_minutes: 5 分
 | 
			
		||||
                ten_minutes: 10 分
 | 
			
		||||
                twenty_minutes: 20 分
 | 
			
		||||
                disabled: 無効
 | 
			
		||||
        compactBuildingInfo:
 | 
			
		||||
            title: Compact Building Infos
 | 
			
		||||
            title: コンパクトな建造物情報
 | 
			
		||||
            description: >-
 | 
			
		||||
                Shortens info boxes for buildings by only showing their ratios. Otherwise a
 | 
			
		||||
                description and image is shown.
 | 
			
		||||
                レートのみを表示することで、建造物の情報ボックスを短くします。選択しない場合は、説明文と画像も表示されます。
 | 
			
		||||
        disableCutDeleteWarnings:
 | 
			
		||||
            title: Disable Cut/Delete Warnings
 | 
			
		||||
            title: カット/削除の警告を無効化
 | 
			
		||||
            description: >-
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
                100個以上のエンティティをカット/削除する際に表示される警告ダイアログを無効にします。
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: 色覚モード
 | 
			
		||||
            description: 色覚異常を持っていてもゲームがプレイできるようにするための各種ツールを有効化します。
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: キー設定
 | 
			
		||||
@ -773,7 +788,7 @@ keybindings:
 | 
			
		||||
        mapMoveFaster: より速く移動
 | 
			
		||||
        lockBeltDirection: ベルトプランナーを有効化
 | 
			
		||||
        switchDirectionLockSide: "プランナー: 通る側を切り替え"
 | 
			
		||||
        pipette: Pipette
 | 
			
		||||
        pipette: ピペット
 | 
			
		||||
 | 
			
		||||
about:
 | 
			
		||||
    title: このゲームについて
 | 
			
		||||
 | 
			
		||||
@ -156,6 +156,7 @@ mainMenu:
 | 
			
		||||
    continue: Continue
 | 
			
		||||
    newGame: New Game
 | 
			
		||||
    madeBy: Made by <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -397,6 +398,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                이것은 방치형 게임이 <strong>아닙니다!</strong> 추출기를 더 놓아 목표를 빨리 달성하세요.<br><br>팁: <strong>SHIFT</strong>를 눌러 여러 개의 추출기를 놓고 <strong>R</strong>로 회전 시키세요.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Red
 | 
			
		||||
        green: Green
 | 
			
		||||
        blue: Blue
 | 
			
		||||
        yellow: Yellow
 | 
			
		||||
        purple: Purple
 | 
			
		||||
        cyan: Cyan
 | 
			
		||||
        white: White
 | 
			
		||||
        uncolored: No color
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Layers
 | 
			
		||||
        empty: Empty
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -711,6 +725,10 @@ settings:
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Color Blind Mode
 | 
			
		||||
            description: Enables various tools which allow to play the game if you are color blind.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: 키바인딩
 | 
			
		||||
    hint: >-
 | 
			
		||||
 | 
			
		||||
@ -156,6 +156,7 @@ mainMenu:
 | 
			
		||||
    continue: Continue
 | 
			
		||||
    newGame: New Game
 | 
			
		||||
    madeBy: Made by <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -397,6 +398,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                This is <strong>NOT</strong> an idle game! Build more extractors and belts to finish the goal quicker.<br><br>Tip: Hold <strong>SHIFT</strong> to place multiple extractors, and use <strong>R</strong> to rotate them.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Red
 | 
			
		||||
        green: Green
 | 
			
		||||
        blue: Blue
 | 
			
		||||
        yellow: Yellow
 | 
			
		||||
        purple: Purple
 | 
			
		||||
        cyan: Cyan
 | 
			
		||||
        white: White
 | 
			
		||||
        uncolored: No color
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Layers
 | 
			
		||||
        empty: Empty
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -709,6 +723,10 @@ settings:
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Color Blind Mode
 | 
			
		||||
            description: Enables various tools which allow to play the game if you are color blind.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Keybindings
 | 
			
		||||
    hint: >-
 | 
			
		||||
 | 
			
		||||
@ -156,6 +156,7 @@ mainMenu:
 | 
			
		||||
    continue: Verder
 | 
			
		||||
    newGame: Nieuw Spel
 | 
			
		||||
    madeBy: Gemaakt door <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -283,12 +284,12 @@ ingame:
 | 
			
		||||
        createMarker: Plaats markering
 | 
			
		||||
        delete: Vernietig
 | 
			
		||||
        pasteLastBlueprint: Plak de laatst gekopiëerde blauwdruk
 | 
			
		||||
        lockBeltDirection: Enable belt planner
 | 
			
		||||
        plannerSwitchSide: Flip planner side
 | 
			
		||||
        cutSelection: Cut
 | 
			
		||||
        copySelection: Copy
 | 
			
		||||
        clearSelection: Clear Selection
 | 
			
		||||
        pipette: Pipette
 | 
			
		||||
        lockBeltDirection: Maak gebruik van de lopende band planner
 | 
			
		||||
        plannerSwitchSide: Draai de richting van de planner
 | 
			
		||||
        cutSelection: Knip
 | 
			
		||||
        copySelection: Kopieer
 | 
			
		||||
        clearSelection: Cancel selectie
 | 
			
		||||
        pipette: Pipet
 | 
			
		||||
 | 
			
		||||
    # Everything related to placing buildings (I.e. as soon as you selected a building
 | 
			
		||||
    # from the toolbar)
 | 
			
		||||
@ -395,6 +396,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                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.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Rood
 | 
			
		||||
        green: Groen
 | 
			
		||||
        blue: Blauw
 | 
			
		||||
        yellow: Geel
 | 
			
		||||
        purple: Paars
 | 
			
		||||
        cyan: Cyaan
 | 
			
		||||
        white: Wit
 | 
			
		||||
        uncolored: Geen kleur
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Lagen
 | 
			
		||||
        empty: Leeg
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -519,7 +533,7 @@ storyRewards:
 | 
			
		||||
 | 
			
		||||
    reward_mixer:
 | 
			
		||||
        title: Kleuren mengen
 | 
			
		||||
        desc: The <strong>mixer</strong> has been unlocked - Combine two colors using <strong>additive blending</strong> with this building!
 | 
			
		||||
        desc: De <strong>menger</strong> is ontgrendeld - gebruik dit gebouw om twee kleuren te mengen via <strong>'additive blending'</strong>!
 | 
			
		||||
 | 
			
		||||
    reward_stacker:
 | 
			
		||||
        title: Stapelaar
 | 
			
		||||
@ -687,25 +701,29 @@ settings:
 | 
			
		||||
        autosaveInterval:
 | 
			
		||||
            title: Autosave Interval
 | 
			
		||||
            description: >-
 | 
			
		||||
                Controls how often the game saves automatically. You can also disable it
 | 
			
		||||
                entirely here.
 | 
			
		||||
                Bepaalt hoe vaak het spel automatisch opslaat. Je kan het hier ook volledig 
 | 
			
		||||
                mee uitschakelen.
 | 
			
		||||
         
 | 
			
		||||
            intervals:
 | 
			
		||||
                one_minute: 1 Minute
 | 
			
		||||
                two_minutes: 2 Minutes
 | 
			
		||||
                five_minutes: 5 Minutes
 | 
			
		||||
                ten_minutes: 10 Minutes
 | 
			
		||||
                twenty_minutes: 20 Minutes
 | 
			
		||||
                disabled: Disabled
 | 
			
		||||
                one_minute: 1 Minuut
 | 
			
		||||
                two_minutes: 2 Minuten
 | 
			
		||||
                five_minutes: 5 Minuten
 | 
			
		||||
                ten_minutes: 10 Minuten
 | 
			
		||||
                twenty_minutes: 20 Minuten
 | 
			
		||||
                disabled: Uitgeschakeld
 | 
			
		||||
        compactBuildingInfo:
 | 
			
		||||
            title: Compact Building Infos
 | 
			
		||||
            title: Combacte gebouwinformatie
 | 
			
		||||
            description: >-
 | 
			
		||||
                Shortens info boxes for buildings by only showing their ratios. Otherwise a
 | 
			
		||||
                description and image is shown.
 | 
			
		||||
                Informatie weergeven bij gebouwen wordt beperkt tot alleen hun 'ratios'. Anders
 | 
			
		||||
                zie je een beschrijving en een afbeelding. 
 | 
			
		||||
        disableCutDeleteWarnings:
 | 
			
		||||
            title: Disable Cut/Delete Warnings
 | 
			
		||||
            title: Schakel knip/delete waarschuwingen uit.
 | 
			
		||||
            description: >-
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
                Schakelt de waarschuwing uit die wordt weergegeven wanneer je meer dan 100 dingen probeert te
 | 
			
		||||
                knippen/deleten.
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Kleurenblindmodus
 | 
			
		||||
            description: Schakelt verschillende hulpmiddelen in zodat je het spel alsnog kunt spelen wanneer je kleurenblind bent.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Sneltoetsen
 | 
			
		||||
@ -771,8 +789,8 @@ keybindings:
 | 
			
		||||
        exportScreenshot: Exporteer volledige basis als afbeelding
 | 
			
		||||
        mapMoveFaster: Beweeg sneller
 | 
			
		||||
        lockBeltDirection: Schakel lopende band-planner in
 | 
			
		||||
        switchDirectionLockSide: "Planner: Wissel van kant"
 | 
			
		||||
        pipette: Pipette
 | 
			
		||||
        switchDirectionLockSide: "Planner: Wissel van richting"
 | 
			
		||||
        pipette: Pipet
 | 
			
		||||
 | 
			
		||||
about:
 | 
			
		||||
    title: Over dit spel
 | 
			
		||||
 | 
			
		||||
@ -156,6 +156,7 @@ mainMenu:
 | 
			
		||||
    continue: Fortsett
 | 
			
		||||
    newGame: Nytt Spill
 | 
			
		||||
    madeBy: Laget av <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -285,9 +286,9 @@ ingame:
 | 
			
		||||
        pasteLastBlueprint: Lim inn forrige blåkopi
 | 
			
		||||
        lockBeltDirection: Aktiver båndplanleggeren
 | 
			
		||||
        plannerSwitchSide: Flipp båndplanleggeren
 | 
			
		||||
        cutSelection: Cut
 | 
			
		||||
        copySelection: Copy
 | 
			
		||||
        clearSelection: Clear Selection
 | 
			
		||||
        cutSelection: Klipp Ut
 | 
			
		||||
        copySelection: Kopier
 | 
			
		||||
        clearSelection: Fjern Valgte
 | 
			
		||||
        pipette: Pipette
 | 
			
		||||
 | 
			
		||||
    # Everything related to placing buildings (I.e. as soon as you selected a building
 | 
			
		||||
@ -395,6 +396,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                Dette er <strong>IKKE</strong> et idle-spill! Bygg flere utdragere og belter for å nå målet raskere.<br><br>Tips: Hold <strong>SHIFT</strong> for å plassere flere utdragere, og bruk <strong>R</strong> for å rotere dem.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Rød
 | 
			
		||||
        green: Grønn
 | 
			
		||||
        blue: Blå
 | 
			
		||||
        yellow: Gul
 | 
			
		||||
        purple: Lilla
 | 
			
		||||
        cyan: Cyan
 | 
			
		||||
        white: Hvit
 | 
			
		||||
        uncolored: Ingen farge
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Lag
 | 
			
		||||
        empty: Tom
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -572,7 +586,7 @@ storyRewards:
 | 
			
		||||
 | 
			
		||||
    reward_blueprints:
 | 
			
		||||
        title: Blåkopier
 | 
			
		||||
        desc: Du kan nå <strong>kopiere og lime inn</strong> deler av fabrikken din! Velg et område (Hold inne CTRL, så dra med musa), trykk så 'C' for å kopiere det.<br><br>Lime det inn er <strong>ikke graits</strong>, du må produsere <strong>blåkopi objekter</strong> for å få råd til det! (Det du nettop leverte).
 | 
			
		||||
        desc: Du kan nå <strong>kopiere og lime inn</strong> deler av fabrikken din! Velg et område (Hold inne CTRL, så dra med musa), trykk så 'C' for å kopiere det.<br><br>Lime det inn er <strong>ikke gratis</strong>, du må produsere <strong>blåkopi objekter</strong> for å få råd til det! (Det du nettop leverte).
 | 
			
		||||
 | 
			
		||||
    # Special reward, which is shown when there is no reward actually
 | 
			
		||||
    no_reward:
 | 
			
		||||
@ -687,27 +701,31 @@ settings:
 | 
			
		||||
                å lese.
 | 
			
		||||
 | 
			
		||||
        autosaveInterval:
 | 
			
		||||
            title: Autosave Interval
 | 
			
		||||
            title: Autolagringsintervall
 | 
			
		||||
            description: >-
 | 
			
		||||
                Controls how often the game saves automatically. You can also disable it
 | 
			
		||||
                entirely here.
 | 
			
		||||
                Jsuter hvor ofte spillet lagres automatisk. Du kan også
 | 
			
		||||
                deaktivere det fullstendig.
 | 
			
		||||
            intervals:
 | 
			
		||||
                one_minute: 1 Minute
 | 
			
		||||
                two_minutes: 2 Minutes
 | 
			
		||||
                five_minutes: 5 Minutes
 | 
			
		||||
                ten_minutes: 10 Minutes
 | 
			
		||||
                twenty_minutes: 20 Minutes
 | 
			
		||||
                disabled: Disabled
 | 
			
		||||
                one_minute: 1 Minutt
 | 
			
		||||
                two_minutes: 2 Minutter
 | 
			
		||||
                five_minutes: 5 Minutter
 | 
			
		||||
                ten_minutes: 10 Minutter
 | 
			
		||||
                twenty_minutes: 20 Minutter
 | 
			
		||||
                disabled: Deaktivert
 | 
			
		||||
        compactBuildingInfo:
 | 
			
		||||
            title: Compact Building Infos
 | 
			
		||||
            title: Kompakt Bygningsinformasjon
 | 
			
		||||
            description: >-
 | 
			
		||||
                Shortens info boxes for buildings by only showing their ratios. Otherwise a
 | 
			
		||||
                description and image is shown.
 | 
			
		||||
                Forkorter informasjonsboksen for bygninger ved å bare vise dems forhold. Ellers
 | 
			
		||||
                vises en beskrivelse og bilde er vist.
 | 
			
		||||
        disableCutDeleteWarnings:
 | 
			
		||||
            title: Disable Cut/Delete Warnings
 | 
			
		||||
            title: Deaktiverer Kutt/Slette Advarsler
 | 
			
		||||
            description: >-
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
                Deaktiverer advarselsdialogen som kommer frem når du kutter/sletter mer enn 100
 | 
			
		||||
                bygninger.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Fargeblind Modus
 | 
			
		||||
            description: Aktiverer forskjellige verktøy som lar deg spille spillet om du er fargeblind.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Hurtigtaster
 | 
			
		||||
@ -773,7 +791,7 @@ keybindings:
 | 
			
		||||
        placeMultiple: Forbli i plasseringsmodus
 | 
			
		||||
        placeInverse: Inverter automatisk transportbånd orientering
 | 
			
		||||
        lockBeltDirection: Enable belt planner
 | 
			
		||||
        switchDirectionLockSide: "Planner: Switch side"
 | 
			
		||||
        switchDirectionLockSide: "Planlegger: Bytt side"
 | 
			
		||||
        pipette: Pipette
 | 
			
		||||
 | 
			
		||||
about:
 | 
			
		||||
 | 
			
		||||
@ -159,7 +159,8 @@ mainMenu:
 | 
			
		||||
 | 
			
		||||
        showInfo: Wyświetl
 | 
			
		||||
        contestOver: Ten konkurs już się skończył - Dołącz do serwera Discord by nie przegapić kolejnych!
 | 
			
		||||
    madeBy: Made by <author-link>
 | 
			
		||||
    madeBy: Gra wykonana przez <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -292,10 +293,21 @@ ingame:
 | 
			
		||||
        pasteLastBlueprint: Wklej ostatnio skopiowany obszar
 | 
			
		||||
        lockBeltDirection: Tryb planowania taśmociągu
 | 
			
		||||
        plannerSwitchSide: Obróć planowany taśmociąg
 | 
			
		||||
        cutSelection: Cut
 | 
			
		||||
        copySelection: Copy
 | 
			
		||||
        clearSelection: Clear Selection
 | 
			
		||||
        pipette: Pipette
 | 
			
		||||
        cutSelection: Wytnij
 | 
			
		||||
        copySelection: Skopiuj
 | 
			
		||||
        clearSelection: Wyczyść zaznaczenie
 | 
			
		||||
        pipette: Wybierz obiekt z mapy
 | 
			
		||||
 | 
			
		||||
    # Names of the colors, used for the color blind mode
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Czerwony
 | 
			
		||||
        green: Zielony
 | 
			
		||||
        blue: Niebieski
 | 
			
		||||
        yellow: Żółty
 | 
			
		||||
        purple: Fioletowy
 | 
			
		||||
        cyan: Cyjanowy
 | 
			
		||||
        white: Biały
 | 
			
		||||
        uncolored: Brak koloru
 | 
			
		||||
 | 
			
		||||
    # Everything related to placing buildings (I.e. as soon as you selected a building
 | 
			
		||||
    # from the toolbar)
 | 
			
		||||
@ -394,6 +406,11 @@ ingame:
 | 
			
		||||
        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.
 | 
			
		||||
 | 
			
		||||
    # Shape viewer
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Poziomy
 | 
			
		||||
        empty: Puste
 | 
			
		||||
 | 
			
		||||
    # Interactive tutorial
 | 
			
		||||
    interactiveTutorial:
 | 
			
		||||
        title: Tutorial
 | 
			
		||||
@ -698,37 +715,43 @@ settings:
 | 
			
		||||
                Oferuje porady i tutoriale podczas gry. Dodatkowo chowa pewne elementy interfejsu, by ułatwić poznanie gry.
 | 
			
		||||
 | 
			
		||||
        enableTunnelSmartplace:
 | 
			
		||||
            title: Smart Tunnels
 | 
			
		||||
            title: Inteligentne taśmociągi i tunele
 | 
			
		||||
            description: >-
 | 
			
		||||
                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.
 | 
			
		||||
                Pozwala również budować tunele przez przeciąganie, gdyż niepotrzebne tunele zostają usunięte.
 | 
			
		||||
        vignette:
 | 
			
		||||
            title: Vignette
 | 
			
		||||
            title: Winieta
 | 
			
		||||
            description: >-
 | 
			
		||||
                Włącza winietowanie, które przyciemnia rogi ekranu i poprawia czytelność tekstu.
 | 
			
		||||
                Włącza winietę - przyciemnia rogi ekranu, poprawiając czytelność tekstu.
 | 
			
		||||
 | 
			
		||||
        autosaveInterval:
 | 
			
		||||
            title: Autosave Interval
 | 
			
		||||
            title: Częstość auto-zapisu
 | 
			
		||||
            description: >-
 | 
			
		||||
                Controls how often the game saves automatically. You can also disable it
 | 
			
		||||
                entirely here.
 | 
			
		||||
                Zmienia, jak często gra automatycznie zapisuje fabrykę.
 | 
			
		||||
                Można tą funkcję również całkowicie wyłączyć.
 | 
			
		||||
            intervals:
 | 
			
		||||
                one_minute: 1 Minute
 | 
			
		||||
                two_minutes: 2 Minutes
 | 
			
		||||
                five_minutes: 5 Minutes
 | 
			
		||||
                ten_minutes: 10 Minutes
 | 
			
		||||
                twenty_minutes: 20 Minutes
 | 
			
		||||
                disabled: Disabled
 | 
			
		||||
                one_minute: Co minutę
 | 
			
		||||
                two_minutes: Co 2 minuty
 | 
			
		||||
                five_minutes: Co 5 minut
 | 
			
		||||
                ten_minutes: Co 10 minut
 | 
			
		||||
                twenty_minutes: Co 20 minut
 | 
			
		||||
                disabled: Wyłączone
 | 
			
		||||
 | 
			
		||||
        compactBuildingInfo:
 | 
			
		||||
            title: Compact Building Infos
 | 
			
		||||
            title: Wyłącz opis budynków
 | 
			
		||||
            description: >-
 | 
			
		||||
                Shortens info boxes for buildings by only showing their ratios. Otherwise a
 | 
			
		||||
                description and image is shown.
 | 
			
		||||
                Ukrywa opis i zdjęcie budynków w obszarze informacyjnym, pokazując jedynie
 | 
			
		||||
                ich tytuł i specyfikacje techniczne.
 | 
			
		||||
 | 
			
		||||
        disableCutDeleteWarnings:
 | 
			
		||||
            title: Disable Cut/Delete Warnings
 | 
			
		||||
            title: Wyłącz ostrzeżenia usuwania/wycinania
 | 
			
		||||
            description: >-
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
                Wyłącza ostrzeżenia wyświetlające się przy usuwaniu lub wycinaniu więcej niż
 | 
			
		||||
                100 budynków.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Color Blind Mode
 | 
			
		||||
            description: Enables various tools which allow to play the game if you are color blind.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Klawiszologia
 | 
			
		||||
@ -793,8 +816,9 @@ keybindings:
 | 
			
		||||
        massSelectCut: Wytnij obszar
 | 
			
		||||
        exportScreenshot: Wyeksportuj całą fabrykę jako zrzut ekranu
 | 
			
		||||
        lockBeltDirection: Tryb planowania taśmociągu
 | 
			
		||||
        switchDirectionLockSide: "Planowanie taśmociągu: Zmień stronę"
 | 
			
		||||
        pipette: Pipette
 | 
			
		||||
        switchDirectionLockSide: >-
 | 
			
		||||
            Planowanie taśmociągu: Zmień stronę
 | 
			
		||||
        pipette: Wybieranie obiektów z mapy
 | 
			
		||||
 | 
			
		||||
about:
 | 
			
		||||
    title: O Grze
 | 
			
		||||
 | 
			
		||||
@ -156,6 +156,7 @@ mainMenu:
 | 
			
		||||
    continue: Continue
 | 
			
		||||
    newGame: New Game
 | 
			
		||||
    madeBy: Made by <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -396,6 +397,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                Este <strong> NÃO </strong> é um jogo inativo! Construa mais extratores e esteiras para concluir o objetivo mais rapidamente.<br><br>Dica, segure <strong> SHIFT </strong> para colocar vários extratores e use <strong> R </strong> para girá-los.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Red
 | 
			
		||||
        green: Green
 | 
			
		||||
        blue: Blue
 | 
			
		||||
        yellow: Yellow
 | 
			
		||||
        purple: Purple
 | 
			
		||||
        cyan: Cyan
 | 
			
		||||
        white: White
 | 
			
		||||
        uncolored: No color
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Layers
 | 
			
		||||
        empty: Empty
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -710,6 +724,10 @@ settings:
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Color Blind Mode
 | 
			
		||||
            description: Enables various tools which allow to play the game if you are color blind.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Controles
 | 
			
		||||
    hint: >-
 | 
			
		||||
 | 
			
		||||
@ -156,6 +156,7 @@ mainMenu:
 | 
			
		||||
    continue: Continuar
 | 
			
		||||
    newGame: Novo Jogo
 | 
			
		||||
    madeBy: Criado por <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -396,6 +397,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                Isto <strong>NÃO</strong> é um jogo idle! Constrói mais extratores e tapetes para atingir o objetivo mais rapidamente.<br><br>Dica: Pressiona <strong>SHIFT</strong> para colocar vários extratores, e usa <strong>R</strong> para os rodar.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Red
 | 
			
		||||
        green: Green
 | 
			
		||||
        blue: Blue
 | 
			
		||||
        yellow: Yellow
 | 
			
		||||
        purple: Purple
 | 
			
		||||
        cyan: Cyan
 | 
			
		||||
        white: White
 | 
			
		||||
        uncolored: No color
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Layers
 | 
			
		||||
        empty: Empty
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -708,6 +722,10 @@ settings:
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Color Blind Mode
 | 
			
		||||
            description: Enables various tools which allow to play the game if you are color blind.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Atalhos
 | 
			
		||||
    hint: >-
 | 
			
		||||
 | 
			
		||||
@ -156,6 +156,7 @@ mainMenu:
 | 
			
		||||
    continue: Continue
 | 
			
		||||
    newGame: New Game
 | 
			
		||||
    madeBy: Made by <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -397,6 +398,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                This is <strong>NOT</strong> an idle game! Build more extractors and belts to finish the goal quicker.<br><br>Tip: Hold <strong>SHIFT</strong> to place multiple extractors, and use <strong>R</strong> to rotate them.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Red
 | 
			
		||||
        green: Green
 | 
			
		||||
        blue: Blue
 | 
			
		||||
        yellow: Yellow
 | 
			
		||||
        purple: Purple
 | 
			
		||||
        cyan: Cyan
 | 
			
		||||
        white: White
 | 
			
		||||
        uncolored: No color
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Layers
 | 
			
		||||
        empty: Empty
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -709,6 +723,10 @@ settings:
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Color Blind Mode
 | 
			
		||||
            description: Enables various tools which allow to play the game if you are color blind.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Keybindings
 | 
			
		||||
    hint: >-
 | 
			
		||||
 | 
			
		||||
@ -157,6 +157,7 @@ mainMenu:
 | 
			
		||||
    continue: Продолжить
 | 
			
		||||
    newGame: Новая Игра
 | 
			
		||||
    madeBy: Создал <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -289,10 +290,10 @@ ingame:
 | 
			
		||||
        pasteLastBlueprint: Вставить последний чертеж
 | 
			
		||||
        lockBeltDirection: Включить конвейерный планировщик
 | 
			
		||||
        plannerSwitchSide: Поменять местами стороны планировщика
 | 
			
		||||
        cutSelection: Cut
 | 
			
		||||
        copySelection: Copy
 | 
			
		||||
        clearSelection: Clear Selection
 | 
			
		||||
        pipette: Pipette
 | 
			
		||||
        cutSelection: Вырезать
 | 
			
		||||
        copySelection: Копировать
 | 
			
		||||
        clearSelection: Отменить
 | 
			
		||||
        pipette: Пипетка
 | 
			
		||||
 | 
			
		||||
    # Everything related to placing buildings (I.e. as soon as you selected a building
 | 
			
		||||
    # from the toolbar)
 | 
			
		||||
@ -399,6 +400,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                Это <strong>НЕ</strong> idle-игра! Постройте больше экстракторов и конвейеров, чтобы достичь цели быстрее.<br><br>Подсказка: Удерживайте <strong>SHIFT</strong> чтобы разместить несколько экстракторов, а <strong>R</strong> чтобы вращать их.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Красный
 | 
			
		||||
        green: Зеленый
 | 
			
		||||
        blue: Синий
 | 
			
		||||
        yellow: Желтый
 | 
			
		||||
        purple: Фиолетовый
 | 
			
		||||
        cyan: Бирюзовый
 | 
			
		||||
        white: Белый
 | 
			
		||||
        uncolored: Бесцветный
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Слои
 | 
			
		||||
        empty: Пусто
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -688,27 +702,31 @@ settings:
 | 
			
		||||
                Включает виньетирование, которое затемняет углы экрана и облегчает чтение текста.
 | 
			
		||||
 | 
			
		||||
        autosaveInterval:
 | 
			
		||||
            title: Autosave Interval
 | 
			
		||||
            title: Интервал авто-сохранения
 | 
			
		||||
            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
 | 
			
		||||
                one_minute: 1 Минута
 | 
			
		||||
                two_minutes: 2 Минуты
 | 
			
		||||
                five_minutes: 5 Минут
 | 
			
		||||
                ten_minutes: 10 Минут
 | 
			
		||||
                twenty_minutes: 20 Минут
 | 
			
		||||
                disabled: Отключено
 | 
			
		||||
        compactBuildingInfo:
 | 
			
		||||
            title: Compact Building Infos
 | 
			
		||||
            title: Компактная Информация о Зданиях
 | 
			
		||||
            description: >-
 | 
			
		||||
                Shortens info boxes for buildings by only showing their ratios. Otherwise a
 | 
			
		||||
                description and image is shown.
 | 
			
		||||
                Сокращает отображаемую информацию о зданиях, показывая только их множители.
 | 
			
		||||
                Иначе информация отображается с описанием и изображением.
 | 
			
		||||
        disableCutDeleteWarnings:
 | 
			
		||||
            title: Disable Cut/Delete Warnings
 | 
			
		||||
            title: Отключить Предупреждение о Вырезании\Удалении
 | 
			
		||||
            description: >-
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
                Отключает диалоговые окна с предупреждениями, появляющиеся при
 | 
			
		||||
                вырезании/удалении более 100 объектов.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Режим Дальтоника
 | 
			
		||||
            description: Включает различные инструменты, которые позволяют играть в игру дальтоникам.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Настройки управления
 | 
			
		||||
@ -775,7 +793,7 @@ keybindings:
 | 
			
		||||
        mapMoveFaster: Ускорение передвижения
 | 
			
		||||
        lockBeltDirection: Включает конвейерный планировщик
 | 
			
		||||
        switchDirectionLockSide: "Планировщик: Переключение сторон"
 | 
			
		||||
        pipette: Pipette
 | 
			
		||||
        pipette: Пипетка
 | 
			
		||||
 | 
			
		||||
about:
 | 
			
		||||
    title: Об игре
 | 
			
		||||
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -156,6 +156,7 @@ mainMenu:
 | 
			
		||||
    continue: Continue
 | 
			
		||||
    newGame: New Game
 | 
			
		||||
    madeBy: Made by <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -397,6 +398,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                This is <strong>NOT</strong> an idle game! Build more extractors and belts to finish the goal quicker.<br><br>Tip: Hold <strong>SHIFT</strong> to place multiple extractors, and use <strong>R</strong> to rotate them.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Red
 | 
			
		||||
        green: Green
 | 
			
		||||
        blue: Blue
 | 
			
		||||
        yellow: Yellow
 | 
			
		||||
        purple: Purple
 | 
			
		||||
        cyan: Cyan
 | 
			
		||||
        white: White
 | 
			
		||||
        uncolored: No color
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Layers
 | 
			
		||||
        empty: Empty
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -710,6 +724,10 @@ settings:
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Color Blind Mode
 | 
			
		||||
            description: Enables various tools which allow to play the game if you are color blind.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Keybindings
 | 
			
		||||
    hint: >-
 | 
			
		||||
 | 
			
		||||
@ -187,6 +187,7 @@ mainMenu:
 | 
			
		||||
    continue: 继续游戏
 | 
			
		||||
    newGame: 新游戏
 | 
			
		||||
    madeBy: 作者:<author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -283,12 +284,6 @@ dialogs:
 | 
			
		||||
            <code class='keybinding'>CTRL</code> + 拖动:选择区域以复制或删除。<br>
 | 
			
		||||
            <code class='keybinding'>SHIFT</code>: 按住以放置多个。<br>
 | 
			
		||||
            <code class='keybinding'>ALT</code>: 反向放置传送带。<br>
 | 
			
		||||
        # 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 area to copy / delete.<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: 创建地图标记
 | 
			
		||||
@ -436,6 +431,19 @@ ingame:
 | 
			
		||||
                这<strong>不是</strong>一个挂机游戏!建造更多的开采机和传送带来更快地完成目标。<br><br>
 | 
			
		||||
                提示:按住<strong>SHIFT</strong>键来放置多个开采机,用<strong>R</strong>键旋转它们。
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Red
 | 
			
		||||
        green: Green
 | 
			
		||||
        blue: Blue
 | 
			
		||||
        yellow: Yellow
 | 
			
		||||
        purple: Purple
 | 
			
		||||
        cyan: Cyan
 | 
			
		||||
        white: White
 | 
			
		||||
        uncolored: No color
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Layers
 | 
			
		||||
        empty: Empty
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -754,6 +762,10 @@ settings:
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Color Blind Mode
 | 
			
		||||
            description: Enables various tools which allow to play the game if you are color blind.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: 按键设置
 | 
			
		||||
    hint: >-
 | 
			
		||||
@ -812,10 +824,8 @@ keybindings:
 | 
			
		||||
        rotateInverseModifier: >-
 | 
			
		||||
            修饰键: 改为逆时针旋转
 | 
			
		||||
        cycleBuildingVariants: 选择建筑变体
 | 
			
		||||
        # cycleBuildingVariants: Cycle Variants
 | 
			
		||||
        confirmMassDelete: 确认批量删除
 | 
			
		||||
        cycleBuildings: 选择建筑
 | 
			
		||||
        # cycleBuildings: Cycle Buildings
 | 
			
		||||
        massSelectStart: 开始批量选择
 | 
			
		||||
        massSelectSelectMultiple: 选择多个区域
 | 
			
		||||
        massSelectCopy: 复制
 | 
			
		||||
@ -850,6 +860,7 @@ about:
 | 
			
		||||
 | 
			
		||||
        最后,我想感谢我最好的朋友<a
 | 
			
		||||
        href="https://github.com/niklas-dahl" target="_blank">Niklas</a>——如果没有与他的异星工厂(factorio)的游戏体验,shapez.io将不会存在。
 | 
			
		||||
 | 
			
		||||
changelog:
 | 
			
		||||
    title: 版本日志
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -156,6 +156,7 @@ mainMenu:
 | 
			
		||||
    continue: Continue
 | 
			
		||||
    newGame: New Game
 | 
			
		||||
    madeBy: Made by <author-link>
 | 
			
		||||
    subreddit: Reddit
 | 
			
		||||
 | 
			
		||||
dialogs:
 | 
			
		||||
    buttons:
 | 
			
		||||
@ -397,6 +398,19 @@ ingame:
 | 
			
		||||
            1_3_expand: >-
 | 
			
		||||
                This is <strong>NOT</strong> an idle game! Build more extractors and belts to finish the goal quicker.<br><br>Tip: Hold <strong>SHIFT</strong> to place multiple extractors, and use <strong>R</strong> to rotate them.
 | 
			
		||||
 | 
			
		||||
    colors:
 | 
			
		||||
        red: Red
 | 
			
		||||
        green: Green
 | 
			
		||||
        blue: Blue
 | 
			
		||||
        yellow: Yellow
 | 
			
		||||
        purple: Purple
 | 
			
		||||
        cyan: Cyan
 | 
			
		||||
        white: White
 | 
			
		||||
        uncolored: No color
 | 
			
		||||
    shapeViewer:
 | 
			
		||||
        title: Layers
 | 
			
		||||
        empty: Empty
 | 
			
		||||
 | 
			
		||||
# All shop upgrades
 | 
			
		||||
shopUpgrades:
 | 
			
		||||
    belt:
 | 
			
		||||
@ -709,6 +723,10 @@ settings:
 | 
			
		||||
                Disable the warning dialogs brought up when cutting/deleting more than 100
 | 
			
		||||
                entities.
 | 
			
		||||
 | 
			
		||||
        enableColorBlindHelper:
 | 
			
		||||
            title: Color Blind Mode
 | 
			
		||||
            description: Enables various tools which allow to play the game if you are color blind.
 | 
			
		||||
 | 
			
		||||
keybindings:
 | 
			
		||||
    title: Keybindings
 | 
			
		||||
    hint: >-
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user