diff --git a/artwork/steam/announcement.png b/artwork/steam/announcement.png index 1aacc62e..cc0861db 100644 Binary files a/artwork/steam/announcement.png and b/artwork/steam/announcement.png differ diff --git a/artwork/steam/announcement.psd b/artwork/steam/announcement.psd index 30dce1e6..518a49ac 100644 --- a/artwork/steam/announcement.psd +++ b/artwork/steam/announcement.psd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ebde52e75e54d2f4add0cf498c85f059082a0745212a23c4de7328a7d78b00a5 -size 238170 +oid sha256:ae83b8805191eeba13016e40216fc4781ac3958e6886769ce8677ea28370d13e +size 239706 diff --git a/res/ui/icons/info_button.png b/res/ui/icons/info_button.png new file mode 100644 index 00000000..abdf2af9 Binary files /dev/null and b/res/ui/icons/info_button.png differ diff --git a/res/ui/main_menu/changelog.svg b/res/ui/main_menu/changelog.svg new file mode 100644 index 00000000..f12bff7b --- /dev/null +++ b/res/ui/main_menu/changelog.svg @@ -0,0 +1,2 @@ + + diff --git a/res/ui/main_menu/reddit.svg b/res/ui/main_menu/reddit.svg new file mode 100644 index 00000000..46310cbf --- /dev/null +++ b/res/ui/main_menu/reddit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/res/ui/main_menu/translate.svg b/res/ui/main_menu/translate.svg new file mode 100644 index 00000000..e38b3392 --- /dev/null +++ b/res/ui/main_menu/translate.svg @@ -0,0 +1,2 @@ + + diff --git a/res_raw/sounds/sfx/destroy_building.wav b/res_raw/sounds/sfx/destroy_building.wav new file mode 100644 index 00000000..ffb38158 --- /dev/null +++ b/res_raw/sounds/sfx/destroy_building.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1dc8775fdf5155097d6e1d60a436f48916af56eec14fb9034e71b32ad3b6f1b0 +size 358896 diff --git a/src/css/ingame_hud/color_blind_helper.scss b/src/css/ingame_hud/color_blind_helper.scss new file mode 100644 index 00000000..027b781b --- /dev/null +++ b/src/css/ingame_hud/color_blind_helper.scss @@ -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; +} diff --git a/src/css/ingame_hud/pinned_shapes.scss b/src/css/ingame_hud/pinned_shapes.scss index 68cf7e16..60e9159e 100644 --- a/src/css/ingame_hud/pinned_shapes.scss +++ b/src/css/ingame_hud/pinned_shapes.scss @@ -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 { diff --git a/src/css/ingame_hud/shape_viewer.scss b/src/css/ingame_hud/shape_viewer.scss new file mode 100644 index 00000000..5d2484f0 --- /dev/null +++ b/src/css/ingame_hud/shape_viewer.scss @@ -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); + } + } + } + } + } +} diff --git a/src/css/ingame_hud/shop.scss b/src/css/ingame_hud/shop.scss index 26f5d759..d8cc8a86 100644 --- a/src/css/ingame_hud/shop.scss +++ b/src/css/ingame_hud/shop.scss @@ -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; } diff --git a/src/css/main.scss b/src/css/main.scss index 178f398b..6b758e80 100644 --- a/src/css/main.scss +++ b/src/css/main.scss @@ -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; diff --git a/src/css/states/main_menu.scss b/src/css/states/main_menu.scss index fa9d430c..be3bcce4 100644 --- a/src/css/states/main_menu.scss +++ b/src/css/states/main_menu.scss @@ -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 { diff --git a/src/js/changelog.js b/src/js/changelog.js index 36ac0ab4..9da13e2c 100644 --- a/src/js/changelog.js +++ b/src/js/changelog.js @@ -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", ], }, { diff --git a/src/js/core/config.js b/src/js/core/config.js index aad3d245..62e5d87d 100644 --- a/src/js/core/config.js +++ b/src/js/core/config.js @@ -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/", }; diff --git a/src/js/core/input_distributor.js b/src/js/core/input_distributor.js index a59f4fbc..03ad8e0c 100644 --- a/src/js/core/input_distributor.js +++ b/src/js/core/input_distributor.js @@ -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); diff --git a/src/js/game/hub_goals.js b/src/js/game/hub_goals.js index ef7797a9..9f65dc4c 100644 --- a/src/js/game/hub_goals.js +++ b/src/js/game/hub_goals.js @@ -275,7 +275,7 @@ export class HubGoals extends BasicSerializableObject { * @param {string} upgradeId * @returns {boolean} */ - tryUnlockUgprade(upgradeId) { + tryUnlockUpgrade(upgradeId) { if (!this.canUnlockUpgrade(upgradeId)) { return false; } diff --git a/src/js/game/hud/hud.js b/src/js/game/hud/hud.js index c322c707..efbde2ab 100644 --- a/src/js/game/hud/hud.js +++ b/src/js/game/hud/hud.js @@ -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]>} */ (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]]) { diff --git a/src/js/game/hud/parts/blueprint_placer.js b/src/js/game/hud/parts/blueprint_placer.js index ef46f101..c98fbf2d 100644 --- a/src/js/game/hud/parts/blueprint_placer.js +++ b/src/js/game/hud/parts/blueprint_placer.js @@ -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); diff --git a/src/js/game/hud/parts/building_placer_logic.js b/src/js/game/hud/parts/building_placer_logic.js index 0da81d4a..6aee65b6 100644 --- a/src/js/game/hud/parts/building_placer_logic.js +++ b/src/js/game/hud/parts/building_placer_logic.js @@ -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)); diff --git a/src/js/game/hud/parts/color_blind_helper.js b/src/js/game/hud/parts/color_blind_helper.js new file mode 100644 index 00000000..4e6a0229 --- /dev/null +++ b/src/js/game/hud/parts/color_blind_helper.js @@ -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(); + } + } +} diff --git a/src/js/game/hud/parts/keybinding_overlay.js b/src/js/game/hud/parts/keybinding_overlay.js index 5b7f4a9d..63208b19 100644 --- a/src/js/game/hud/parts/keybinding_overlay.js +++ b/src/js/game/hud/parts/keybinding_overlay.js @@ -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, }, { diff --git a/src/js/game/hud/parts/pinned_shapes.js b/src/js/game/hud/parts/pinned_shapes.js index 62afff25..3f935a0b 100644 --- a/src/js/game/hud/parts/pinned_shapes.js +++ b/src/js/game/hud/parts/pinned_shapes.js @@ -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, }); } diff --git a/src/js/game/hud/parts/shape_viewer.js b/src/js/game/hud/parts/shape_viewer.js new file mode 100644 index 00000000..fa083793 --- /dev/null +++ b/src/js/game/hud/parts/shape_viewer.js @@ -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); + } +} diff --git a/src/js/game/hud/parts/shop.js b/src/js/game/hud/parts/shop.js index 912fb3f1..f83cb89b 100644 --- a/src/js/game/hud/parts/shop.js +++ b/src/js/game/hud/parts/shop.js @@ -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); } } diff --git a/src/js/game/shape_definition.js b/src/js/game/shape_definition.js index d785f6ab..8644e353 100644 --- a/src/js/game/shape_definition.js +++ b/src/js/game/shape_definition.js @@ -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(); diff --git a/src/js/game/sound_proxy.js b/src/js/game/sound_proxy.js index d0f4c660..0408586d 100644 --- a/src/js/game/sound_proxy.js +++ b/src/js/game/sound_proxy.js @@ -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 { diff --git a/src/js/game/systems/underground_belt.js b/src/js/game/systems/underground_belt.js index 5b308e25..0456638a 100644 --- a/src/js/game/systems/underground_belt.js +++ b/src/js/game/systems/underground_belt.js @@ -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) { diff --git a/src/js/game/themes/dark.json b/src/js/game/themes/dark.json index ef707663..a544b399 100644 --- a/src/js/game/themes/dark.json +++ b/src/js/game/themes/dark.json @@ -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)" } } diff --git a/src/js/game/themes/light.json b/src/js/game/themes/light.json index c5eead32..58231fa0 100644 --- a/src/js/game/themes/light.json +++ b/src/js/game/themes/light.json @@ -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)" } } diff --git a/src/js/languages.js b/src/js/languages.js index 2d40037b..2747c24e 100644 --- a/src/js/languages.js +++ b/src/js/languages.js @@ -86,4 +86,10 @@ export const LANGUAGES = { code: "zh", region: "CN", }, + "sv": { + name: "Svenska", + data: require("./built-temp/base-sv.json"), + code: "sv", + region: "", + }, }; diff --git a/src/js/platform/sound.js b/src/js/platform/sound.js index dc6b073f..60d472f8 100644 --- a/src/js/platform/sound.js +++ b/src/js/platform/sound.js @@ -22,6 +22,7 @@ export const SOUNDS = { levelComplete: "level_complete", + destroyBuilding: "destroy_building", placeBuilding: "place_building", placeBelt: "place_belt", }; diff --git a/src/js/profile/application_settings.js b/src/js/profile/application_settings.js index 1aa2b604..16ec4cbd 100644 --- a/src/js/profile/application_settings.js +++ b/src/js/profile/application_settings.js @@ -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.} */ @@ -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(); } } diff --git a/src/js/states/main_menu.js b/src/js/states/main_menu.js index 8665b80e..8f7d4a93 100644 --- a/src/js/states/main_menu.js +++ b/src/js/states/main_menu.js @@ -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 { ? "" : `
${T.mainMenu.browserWarning}
` } +
@@ -89,10 +91,14 @@ export class MainMenuState extends GameState { - ${T.changelog.title} - - ${T.mainMenu.helpTranslate} + +
${T.mainMenu.madeBy.replace( "", 'Tobias Springer' @@ -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"); diff --git a/translations/base-ar.yaml b/translations/base-ar.yaml index 10a2e7e9..9edce612 100644 --- a/translations/base-ar.yaml +++ b/translations/base-ar.yaml @@ -156,6 +156,7 @@ mainMenu: continue: Continue newGame: New Game madeBy: Made by + subreddit: Reddit dialogs: buttons: @@ -397,6 +398,19 @@ ingame: 1_3_expand: >- This is NOT an idle game! Build more extractors and belts to finish the goal quicker.

Tip: Hold SHIFT to place multiple extractors, and use R 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: >- diff --git a/translations/base-cz.yaml b/translations/base-cz.yaml index 3eb2bccd..a79d5a66 100644 --- a/translations/base-cz.yaml +++ b/translations/base-cz.yaml @@ -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 + continue: Pokračovat + newGame: Nová hra + madeBy: Vytvořil + 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 NENÍ hra o čekání! Sestavte další extraktory a pásy, abyste dosáhli cíle rychleji.

Tip: Chcete-li umístit více extraktorů, podržte SHIFT. Pomocí R 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 diff --git a/translations/base-de.yaml b/translations/base-de.yaml index fee20525..08bc12e4 100644 --- a/translations/base-de.yaml +++ b/translations/base-de.yaml @@ -155,6 +155,7 @@ mainMenu: continue: Fortsetzen newGame: Neues Spiel madeBy: Ein Spiel von + 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 , um zwischen den Varianten zu wählen. + cycleBuildingVariants: Wechsle Variante # Shows the hotkey in the ui, e.g. "Hotkey: Q" hotkeyLabel: >- @@ -394,6 +395,19 @@ ingame: 1_3_expand: >- Dies ist KEIN Idle-Game! Baue mehr Extrahierer und Förderbänder, um das Ziel schneller zu erreichen.

Tipp: Halte UMSCH, um mehrere Gebäude zu platzieren und nutze R 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 Tobias Springer (this is me).

+ Dieses Spiel hat einen offenen Quellcode (Open Source) und wurde von Tobias Springer (das bin ich!) entwickelt.

- If you want to contribute, check out shapez.io on github.

+ Wenn du etwas zum Spiel beitragen möchtest, dann schaue dir shapez.io auf GitHub an.

- This game wouldn't have been possible without the great discord community - around my games - You should really join the discord server!

+ Das Spiel wurde erst durch die großartige Discord-Community + um meine Spiele möglich gemacht. Komm doch einfach mal auf dem Discord-Server vorbei!

- The soundtrack was made by Peppsen - He's awesome.

+ Der Soundtrack wurde von Peppsen komponiert! Klasse Typ.

- Finally, huge thanks to my best friend Niklas - Without our - factorio sessions this game would never have existed. + Abschließend möchte ich meinem Kumpel Niklas danken! Ohne unsere + etlichen gemeinsamen Stunden in Factorio wäre dieses Projekt nie zustande gekommen. changelog: title: Änderungen diff --git a/translations/base-el.yaml b/translations/base-el.yaml index d35810b2..19ab5a83 100644 --- a/translations/base-el.yaml +++ b/translations/base-el.yaml @@ -156,6 +156,7 @@ mainMenu: continue: Continue newGame: New Game madeBy: Made by + subreddit: Reddit dialogs: buttons: @@ -397,6 +398,19 @@ ingame: 1_3_expand: >- This is NOT an idle game! Build more extractors and belts to finish the goal quicker.

Tip: Hold SHIFT to place multiple extractors, and use R 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: >- diff --git a/translations/base-en.yaml b/translations/base-en.yaml index a3d73ddf..2ad5ef07 100644 --- a/translations/base-en.yaml +++ b/translations/base-en.yaml @@ -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.

Press to create a marker from the current view, or right-click 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: >- diff --git a/translations/base-es.yaml b/translations/base-es.yaml index 8b5566a6..f7381e13 100644 --- a/translations/base-es.yaml +++ b/translations/base-es.yaml @@ -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 cinta transportadora a tu edificio central!

Pista: Pulsa y arrastra la cinta transportadora con el ratón! 1_3_expand: >- ¡Esto NO es un "juego de esperar"! Construye más extractores y cintas transportadoras para completar el objetivo más rápido.

Pista: Mantén pulsado SHIFT para colocar varios extractores y usa R 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 diff --git a/translations/base-fr.yaml b/translations/base-fr.yaml index e9e37720..716f3c78 100644 --- a/translations/base-fr.yaml +++ b/translations/base-fr.yaml @@ -157,6 +157,7 @@ mainMenu: continue: Continuer newGame: Nouvelle partie madeBy: Créé par + 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 ( pour être exact) ! Etes vous certains de vouloir faire cela ? + Vous allez supprimer pas mal de bâtiments ( 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 PAS un jeu incrémental et inactif ! Construisez plus d'extracteurs et de convoyeurs pour atteindre plus vite votre votre but.

Astuce: Gardez SHIFT enfoncé pour placer plusieurs extracteurs, et utilisez R 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 diff --git a/translations/base-hr.yaml b/translations/base-hr.yaml index 2e510a82..3ff34010 100644 --- a/translations/base-hr.yaml +++ b/translations/base-hr.yaml @@ -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 NOT an idle game! Build more extractors and belts to finish the goal quicker.

Tip: Hold SHIFT to place multiple extractors, and use R 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: >- diff --git a/translations/base-hu.yaml b/translations/base-hu.yaml index f2cd8013..7d1bbc9e 100644 --- a/translations/base-hu.yaml +++ b/translations/base-hu.yaml @@ -156,6 +156,7 @@ mainMenu: continue: Continue newGame: New Game madeBy: Made by + subreddit: Reddit dialogs: buttons: @@ -397,6 +398,19 @@ ingame: 1_3_expand: >- This is NOT an idle game! Build more extractors and belts to finish the goal quicker.

Tip: Hold SHIFT to place multiple extractors, and use R 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: >- diff --git a/translations/base-it.yaml b/translations/base-it.yaml index 8f3573e2..c434af7a 100644 --- a/translations/base-it.yaml +++ b/translations/base-it.yaml @@ -156,6 +156,7 @@ mainMenu: continue: Continue newGame: New Game madeBy: Made by + subreddit: Reddit dialogs: buttons: @@ -397,6 +398,19 @@ ingame: 1_3_expand: >- This is NOT an idle game! Build more extractors and belts to finish the goal quicker.

Tip: Hold SHIFT to place multiple extractors, and use R 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: >- diff --git a/translations/base-ja.yaml b/translations/base-ja.yaml index 0e685752..c4cb3536 100644 --- a/translations/base-ja.yaml +++ b/translations/base-ja.yaml @@ -156,6 +156,7 @@ mainMenu: continue: 続きから newGame: 新規ゲーム madeBy: Made by + 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: >- このゲームは放置系のゲームではありません! もっと早く要件を満たせるように、追加の抽出機とベルトを設置しましょう。

Tip: SHIFT キーを押し続けると抽出機を連続配置できます。Rキーで設置方向を回転できます。 + 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: このゲームについて diff --git a/translations/base-kor.yaml b/translations/base-kor.yaml index be220a41..a39225b1 100644 --- a/translations/base-kor.yaml +++ b/translations/base-kor.yaml @@ -156,6 +156,7 @@ mainMenu: continue: Continue newGame: New Game madeBy: Made by + subreddit: Reddit dialogs: buttons: @@ -397,6 +398,19 @@ ingame: 1_3_expand: >- 이것은 방치형 게임이 아닙니다! 추출기를 더 놓아 목표를 빨리 달성하세요.

팁: SHIFT를 눌러 여러 개의 추출기를 놓고 R로 회전 시키세요. + 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: >- diff --git a/translations/base-lt.yaml b/translations/base-lt.yaml index f5686b97..6792283b 100644 --- a/translations/base-lt.yaml +++ b/translations/base-lt.yaml @@ -156,6 +156,7 @@ mainMenu: continue: Continue newGame: New Game madeBy: Made by + subreddit: Reddit dialogs: buttons: @@ -397,6 +398,19 @@ ingame: 1_3_expand: >- This is NOT an idle game! Build more extractors and belts to finish the goal quicker.

Tip: Hold SHIFT to place multiple extractors, and use R 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: >- diff --git a/translations/base-nl.yaml b/translations/base-nl.yaml index ffec9737..d8917721 100644 --- a/translations/base-nl.yaml +++ b/translations/base-nl.yaml @@ -156,6 +156,7 @@ mainMenu: continue: Verder newGame: Nieuw Spel madeBy: Gemaakt door + 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 GEEN nietsdoen-spel! bouw meer ontginners en lopende banden om het doel sneller te behalen.

Tip: Houd SHIFT ingedrukt om meerdere ontginners te plaatsen en gebruik R 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 mixer has been unlocked - Combine two colors using additive blending with this building! + desc: De menger is ontgrendeld - gebruik dit gebouw om twee kleuren te mengen via 'additive blending'! 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 diff --git a/translations/base-no.yaml b/translations/base-no.yaml index cc12dc52..f730a2bd 100644 --- a/translations/base-no.yaml +++ b/translations/base-no.yaml @@ -156,6 +156,7 @@ mainMenu: continue: Fortsett newGame: Nytt Spill madeBy: Laget av + 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 IKKE et idle-spill! Bygg flere utdragere og belter for å nå målet raskere.

Tips: Hold SHIFT for å plassere flere utdragere, og bruk R 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å kopiere og lime inn deler av fabrikken din! Velg et område (Hold inne CTRL, så dra med musa), trykk så 'C' for å kopiere det.

Lime det inn er ikke graits, du må produsere blåkopi objekter for å få råd til det! (Det du nettop leverte). + desc: Du kan nå kopiere og lime inn deler av fabrikken din! Velg et område (Hold inne CTRL, så dra med musa), trykk så 'C' for å kopiere det.

Lime det inn er ikke gratis, du må produsere blåkopi objekter 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: diff --git a/translations/base-pl.yaml b/translations/base-pl.yaml index cce4ec57..815799a4 100644 --- a/translations/base-pl.yaml +++ b/translations/base-pl.yaml @@ -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 + madeBy: Gra wykonana przez + 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ąć.

Naciśnij , by stworzyć marker na środku widoku lub prawy przycisk myszy, 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 diff --git a/translations/base-pt-BR.yaml b/translations/base-pt-BR.yaml index 86d29a07..30e9c30c 100644 --- a/translations/base-pt-BR.yaml +++ b/translations/base-pt-BR.yaml @@ -156,6 +156,7 @@ mainMenu: continue: Continue newGame: New Game madeBy: Made by + subreddit: Reddit dialogs: buttons: @@ -396,6 +397,19 @@ ingame: 1_3_expand: >- Este NÃO é um jogo inativo! Construa mais extratores e esteiras para concluir o objetivo mais rapidamente.

Dica, segure SHIFT para colocar vários extratores e use R 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: >- diff --git a/translations/base-pt-PT.yaml b/translations/base-pt-PT.yaml index b11e1bf2..253dc37c 100644 --- a/translations/base-pt-PT.yaml +++ b/translations/base-pt-PT.yaml @@ -156,6 +156,7 @@ mainMenu: continue: Continuar newGame: Novo Jogo madeBy: Criado por + subreddit: Reddit dialogs: buttons: @@ -396,6 +397,19 @@ ingame: 1_3_expand: >- Isto NÃO é um jogo idle! Constrói mais extratores e tapetes para atingir o objetivo mais rapidamente.

Dica: Pressiona SHIFT para colocar vários extratores, e usa R 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: >- diff --git a/translations/base-ro.yaml b/translations/base-ro.yaml index e383ce2c..aac39324 100644 --- a/translations/base-ro.yaml +++ b/translations/base-ro.yaml @@ -156,6 +156,7 @@ mainMenu: continue: Continue newGame: New Game madeBy: Made by + subreddit: Reddit dialogs: buttons: @@ -397,6 +398,19 @@ ingame: 1_3_expand: >- This is NOT an idle game! Build more extractors and belts to finish the goal quicker.

Tip: Hold SHIFT to place multiple extractors, and use R 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: >- diff --git a/translations/base-ru.yaml b/translations/base-ru.yaml index 53c83519..732f0fc2 100644 --- a/translations/base-ru.yaml +++ b/translations/base-ru.yaml @@ -157,6 +157,7 @@ mainMenu: continue: Продолжить newGame: Новая Игра madeBy: Создал + 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: >- Это НЕ idle-игра! Постройте больше экстракторов и конвейеров, чтобы достичь цели быстрее.

Подсказка: Удерживайте SHIFT чтобы разместить несколько экстракторов, а R чтобы вращать их. + 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: Об игре diff --git a/translations/base-sv.yaml b/translations/base-sv.yaml index e383ce2c..e7c88eea 100644 --- a/translations/base-sv.yaml +++ b/translations/base-sv.yaml @@ -21,7 +21,7 @@ steamPage: # This is the short text appearing on the steam page - shortText: shapez.io is a game about building factories to automate the creation and combination of increasingly complex shapes within an infinite map. + shortText: shapez.io är ett spel som går ut på att automatisera skapandet av former med ökande komplexitet inom den oändligt stora världen. # This is the long description for the steam page - It is contained here so you can help to translate it, and I will regulary update the store page. # NOTICE: @@ -30,49 +30,49 @@ steamPage: longText: >- [img]{STEAM_APP_IMAGE}/extras/store_page_gif.gif[/img] - shapez.io is a game about building factories to automate the creation and combination of shapes. Deliver the requested, increasingly complex shapes to progress within the game and unlock upgrades to speed up your factory. + shapez.io är ett spel som går ut på att automatisera skapandet av former. Leverera de efterfrågade, alltmer komplexa formerna för att utvecklas genom spelet och skaffa uppgraderingar för att öka hastigheten i fabriken. - Since the demand raises you will have to scale up your factory to fit the needs - Don't forget about resources though, you will have to expand in the [b]infinite map[/b]! + Eftersom efterfrågan ökar behöver du bygga ut fabriken för att möta behoven - Glöm bara inte bort resurserna, du kommer behöva expadera fabriken över den [b]oändligt stora världen[/b]! - Since shapes can get boring soon you need to mix colors and paint your shapes with it - Combine red, green and blue color resources to produce different colors and paint shapes with it to satisfy the demand. + Eftersom former kan bli tråkiga kommer du behöva blanda färger och måla dina former med dem - Kombinera röd, grön, och blå för att producera olika färger och måla former med dem för att tillfredställa efterfrågan. - This game features 18 levels (Which should keep you busy for hours already!) but I'm constantly adding new content - There is a lot planned! + Detta spel innehåller just nu 18 nivåer (Vilket borde hålla dig upptagen i några timmar!) men jag lägger konstant till fler saker - Det finns mycket planerat! - [b]Standalone Advantages[/b] + [b]Fristående Fördelar[/b] [list] [*] Waypoints - [*] Unlimited Savegames - [*] Dark Mode - [*] More settings - [*] Allow me to further develop shapez.io ❤️ - [*] More features in the future! + [*] Oändligt antal sparfiler + [*] Mörkt tema + [*] Fler inställningar + [*] Tillåter mig att vidare utveckla shapez.io ❤️ + [*] Fler funktioner i framtiden! [/list] - [b]Planned features & Community suggestions[/b] + [b]Planerade tillägg & Gruppförslag[/b] - This game is open source - Anybody can contribute! Besides of that, I listen [b]a lot[/b] to the community! I try to read all suggestions and take as much feedback into account as possible. + Detta spel är open source - Vem som helst kan hjälpa! Förutom det lyssnar jag [b]ofta[/b] på min community! Jag försöker läsa alla förslag och ta till mig så mycket feedback som möjligt. [list] - [*] Story mode where buildings cost shapes - [*] More levels & buildings (standalone exclusive) - [*] Different maps, and maybe map obstacles - [*] Configurable map creation (Edit number and size of patches, seed, and more) - [*] More types of shapes - [*] More performance improvements (Although the game already runs pretty good!) - [*] Color blind mode - [*] And much more! + [*] Story mode däri byggnader kostar former + [*] Fler nivåer & och byggnader (exklusivt för den fristående versionen) + [*] Olika världar, och kanske världshinder + [*] Konfigurerbar världskapande (Ändra antal och storlek på resursfläckar, seed, med mera) + [*] Fler sorters former + [*] Fler prestandaförbättringar (Även om spelet redan spelar ganska väl!) + [*] Färgblint läge + [*] Och mycket mer! [/list] - Be sure to check out my trello board for the full roadmap! https://trello.com/b/ISQncpJP/shapezio + Se till att kolla min trello för en full framtidskarta! https://trello.com/b/ISQncpJP/shapezio global: - loading: Loading + loading: Laddar error: Error # How big numbers are rendered, e.g. "10,000" - thousandsDivider: "," + thousandsDivider: "." # The suffix for large numbers, e.g. 1.3k, 400.2M, etc. suffix: @@ -86,250 +86,251 @@ global: time: # Used for formatting past time dates - oneSecondAgo: one second ago - xSecondsAgo: seconds ago - oneMinuteAgo: one minute ago - xMinutesAgo: minutes ago - oneHourAgo: one hour ago - xHoursAgo: hours ago - oneDayAgo: one day ago - xDaysAgo: days ago + oneSecondAgo: för en sekund sedan + xSecondsAgo: för sekunder sedan + oneMinuteAgo: för en minut sedan + xMinutesAgo: för minuter sedan + oneHourAgo: för en timme sedan + xHoursAgo: för timmar sedan + oneDayAgo: för en dag sedan + xDaysAgo: för dagar sedan # Short formats for times, e.g. '5h 23m' secondsShort: s minutesAndSecondsShort: m s - hoursAndMinutesShort: h s + hoursAndMinutesShort: t s - xMinutes: minutes + xMinutes: minuter keys: tab: TAB control: CTRL alt: ALT escape: ESC - shift: SHIFT - space: SPACE + shift: SKIFT + space: MELLANSLAG demoBanners: # This is the "advertisement" shown in the main menu and other various places title: Demo Version intro: >- - Get the standalone to unlock all features! + Skaffa den fristående versionen för att låsa upp alla funktioner! mainMenu: - play: Play + play: Spela changelog: Changelog - importSavegame: Import - openSourceHint: This game is open source! - discordLink: Official Discord Server - helpTranslate: Help translate! + importSavegame: Importera + openSourceHint: Detta spel är open source! + discordLink: Officiell Discord Server + helpTranslate: Hjälp till att översätta! # This is shown when using firefox and other browsers which are not supported. browserWarning: >- - Sorry, but the game is known to run slow on your browser! Get the standalone version or download chrome for the full experience. + Förlåt, men det är känt att spelet spelar långsamt på din browser! Skaffa den fristående versionen eller ladda ner chrome för den fulla upplevelsen. - savegameLevel: Level - savegameLevelUnknown: Unknown Level + savegameLevel: Nivå + savegameLevelUnknown: Okänd Nivå contests: contest_01_03062020: - title: "Contest #01" - desc: Win $25 for the coolest base! + title: "Tävling #01" + desc: Vinn $25 för den coolaste fabriken! longDesc: >- - To give something back to you, I thought it would be cool to make weekly contests! + För att ge något åter till dig, tänkte jag att det skulle vara coolt att skapa veckovisa tävlingar!

- This weeks topic: Build the coolest base! + Denna veckas tema: Bygg den coolaste fabriken!

- Here's the deal:
+ Så här går det till:
    -
  • Submit a screenshot of your base to contest@shapez.io
  • -
  • Bonus points if you share it on social media!
  • -
  • I will choose 5 screenshots and propose it to the discord community to vote.
  • -
  • The winner gets $25 (Paypal, Amazon Gift Card, whatever you prefer)
  • +
  • Skicka in en skärmdump av din fabrik till contest@shapez.io
  • +
  • Bonuspoäng om du delar den på sociala medier!
  • +
  • Jag kommer välja 5 skärmdumpar och framföra dem tilldiscordgruppen och låta dem rösta.
  • +
  • Vinnaren får $25 (Paypal, Amazon Gift Card, Vilket du än föredrar)
  • Deadline: 07.06.2020 12:00 AM CEST

- I'm looking forward to seeing your awesome creations! + Jag ser fram emot att se era grymma skapelser! - showInfo: View - contestOver: This contest has ended - Join the discord to get noticed about new contests! - continue: Continue - newGame: New Game - madeBy: Made by + showInfo: Se + contestOver: Tävlingen är avslutad - Gå med i discordservern för att bli notifierad kring nya tävlingar! + continue: Fortsätt + newGame: Nytt spel + madeBy: Skapad av + subreddit: Reddit dialogs: buttons: ok: OK - delete: Delete - cancel: Cancel - later: Later - restart: Restart - reset: Reset - getStandalone: Get Standalone - deleteGame: I know what I do - viewUpdate: View Update - showUpgrades: Show Upgrades - showKeybindings: Show Keybindings + delete: Radera + cancel: Avbryt + later: Senare + restart: Starta om + reset: Återställ + getStandalone: Skaffa fristående + deleteGame: Jag vet vad jag måste göra + viewUpdate: Se uppdateringar + showUpgrades: Visa uppgraderingar + showKeybindings: Visa tangentbindingar importSavegameError: - title: Import Error + title: Importfel text: >- - Failed to import your savegame: + Kunde inte importera sparfil: importSavegameSuccess: - title: Savegame Imported + title: Sparfil importerad text: >- - Your savegame has been successfully imported. + Din sparfil har blivit importerad. gameLoadFailure: - title: Game is broken + title: Spel är brutet text: >- - Failed to load your savegame: + Kunde inte ladda sparfil: confirmSavegameDelete: - title: Confirm deletion + title: Bekräfta radering text: >- - Are you sure you want to delete the game? + Är du säker på att du vill radera spelet? savegameDeletionError: - title: Failed to delete + title: Kunde inte radera text: >- - Failed to delete the savegame: + Kunde inte radera sparfil: restartRequired: - title: Restart required + title: Omstart krävs text: >- - You need to restart the game to apply the settings. + Du behöver starta om spelet för att applicera inställningar. editKeybinding: - title: Change Keybinding - desc: Press the key or mouse button you want to assign, or escape to cancel. + title: Ändra tangentbindningar + desc: Tryck ned tangenten eller musknappen du vill tillsätta, eller escape för att avbryta. resetKeybindingsConfirmation: - title: Reset keybindings - desc: This will reset all keybindings to their default values. Please confirm. + title: Återställ tangentbindningar + desc: Detta kommer att återställa alla tangentbindningar till deras standardtangenter. Var snäll och bekräfta. keybindingsResetOk: - title: Keybindings reset - desc: The keybindings have been reset to their respective defaults! + title: Återställning av tangentbindningar + desc: Tangentbindningar har återställts! featureRestriction: - title: Demo Version - desc: You tried to access a feature () which is not available in the demo. Consider to get the standalone for the full experience! + title: Demoversion + desc: Du försökte nå en funktion () som inte är tillgänglig i demversionen. Överväg att skaffa den fristående versionen för den fulla upplevelsen! oneSavegameLimit: - title: Limited savegames - desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone! + title: Limiterad mängd sparfiler + desc: Du kan bara ha en sparfil åt gången i demoversionen. Var snäll och ta bort det existerande eller skaffa den fristående versionen! updateSummary: - title: New update! + title: Ny uppdatering! desc: >- - Here are the changes since you last played: + Här är ändringarna sen du sist spelade: upgradesIntroduction: - title: Unlock Upgrades + title: Lås upp Uppgraderingar desc: >- - All shapes you produce can be used to unlock upgrades - Don't destroy your old factories! - The upgrades tab can be found on the top right corner of the screen. + Alla former du producerar kan användas för att låsa upp uppgraderingar - Förstör inte dina gamla fabriker! + Uppgraderingsmenyn kan finnas i det övre högra hörnet på skärmen. massDeleteConfirm: - title: Confirm delete + title: Bekräfta borttagning desc: >- - You are deleting a lot of buildings ( to be exact)! Are you sure you want to do this? + Du tar nu bort ganska många byggnader ( för att vara exakt)! Är du säker på att du vill göra detta? blueprintsNotUnlocked: - title: Not unlocked yet + title: Inte än upplåst desc: >- - Blueprints have not been unlocked yet! Complete more levels to unlock them. + Ritningar är inte än upplåsta! Klara fler nivåer för att låsa upp dem. keybindingsIntroduction: - title: Useful keybindings + title: Användbara tangentbindningar desc: >- - This game has a lot of keybindings which make it easier to build big factories. - Here are a few, but be sure to check out the keybindings!

- CTRL + Drag: Select area to copy / delete.
- SHIFT: Hold to place multiple of one building.
- ALT: Invert orientation of placed belts.
+ Detta spel använder en stor mängd tangentbindningar som gör det lättare att bygga stora fabriker. + Här är några men se till att kolla in tangentbindningarna!

+ CTRL + Dra: Välj en yta att kopiera / radera.
+ SHIFT: Håll ned för att placera flera av samma byggnad.
+ ALT: Invertera orientationen av placerade rullband.
createMarker: - title: New Marker - desc: Give it a meaningful name, you can also include a short key of a shape (Which you can generate here) + title: Ny Markör + desc: Ge den ett meningsfullt namn, du kan också inkludera en kort kod av en form (Vilket du kan generera här ) markerDemoLimit: - desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers! + desc: Du kan endast skapa två markörer i demoversionen. Skaffa den fristående versionen för ett oändligt antal! massCutConfirm: - title: Confirm cut + title: Bekräfta Klipp desc: >- - You are cutting a lot of buildings ( to be exact)! Are you sure you - want to do this? + Du klipper en stor mängd byggnader ( för att vara exakt)! + Är du säker på att du vill göra detta? exportScreenshotWarning: - title: Export screenshot + title: Exportera skärmdump desc: >- - You requested to export your base as a screenshot. Please note that this can - be quite slow for a big base and even crash your game! + Du efterfrågade att exportera din fabrik som en skärmdump. + Var snäll och notera att detta kan ta ett tag för en stor bas och i vissa fall till och med krascha ditt spel ingame: # This is shown in the top left corner and displays useful keybindings in # every situation keybindingsOverlay: - moveMap: Move - selectBuildings: Select area - stopPlacement: Stop placement - rotateBuilding: Rotate building - placeMultiple: Place multiple - reverseOrientation: Reverse orientation - disableAutoOrientation: Disable auto orientation + moveMap: Flytta + selectBuildings: Välj yta + stopPlacement: Avsluta placering + rotateBuilding: Rotera byggnader + placeMultiple: Placera flera + reverseOrientation: Vänd orientation + disableAutoOrientation: Stäng av automatisk orientation toggleHud: Toggle HUD - placeBuilding: Place building - createMarker: Create Marker - delete: Destroy - pasteLastBlueprint: Paste last blueprint - lockBeltDirection: Enable belt planner - plannerSwitchSide: Flip planner side - cutSelection: Cut - copySelection: Copy - clearSelection: Clear Selection - pipette: Pipette + placeBuilding: Placera Byggnad + createMarker: Skapa Markör + delete: Förstör + pasteLastBlueprint: Klistra in ritning + lockBeltDirection: Sätt på rullbandsplannerare + plannerSwitchSide: Vänd planerarsidan + cutSelection: Klipp + copySelection: Kopiera + clearSelection: Rensa vald + pipette: Pipett # Everything related to placing buildings (I.e. as soon as you selected a building # from the toolbar) buildingPlacement: # Buildings can have different variants which are unlocked at later levels, # and this is the hint shown when there are multiple variants available. - cycleBuildingVariants: Press to cycle variants. + cycleBuildingVariants: Tryck ned För att cykla igenom varianter. # Shows the hotkey in the ui, e.g. "Hotkey: Q" hotkeyLabel: >- Hotkey: infoTexts: - speed: Speed - range: Range - storage: Storage - oneItemPerSecond: 1 item / second - itemsPerSecond: items / s + speed: Hastighet + range: Räckvidd + storage: Förvaring + oneItemPerSecond: 1 objekt / sekund + itemsPerSecond: objekt / s itemsPerSecondDouble: (x2) - tiles: tiles + tiles: plattor # The notification when completing a level levelCompleteNotification: # is replaced by the actual level, so this gets 'Level 03' for example. - levelTitle: Level - completed: Completed - unlockText: Unlocked ! - buttonNextLevel: Next Level + levelTitle: Nivå + completed: Avklarad + unlockText: Upplåst ! + buttonNextLevel: Nästa Nivå # Notifications on the lower right notifications: - newUpgrade: A new upgrade is available! - gameSaved: Your game has been saved. + newUpgrade: En ny uppgradering är tillgänglig! + gameSaved: Ditt spel har sparats. # The "Upgrades" window shop: - title: Upgrades - buttonUnlock: Upgrade + title: Upgraderingar + buttonUnlock: Upgradera # Gets replaced to e.g. "Tier IX" tier: Tier @@ -337,412 +338,429 @@ ingame: # The roman number for each tier tierLabels: [I, II, III, IV, V, VI, VII, VIII, IX, X] - maximumLevel: MAXIMUM LEVEL (Speed x) + maximumLevel: MAXNIVÅ (Hastighet x) # The "Statistics" window statistics: - title: Statistics + title: Statistik dataSources: stored: - title: Stored - description: Displaying amount of stored shapes in your central building. + title: Förvarade + description: Visar mängd förvarade former i din centrala byggnad. produced: - title: Produced - description: Displaying all shapes your whole factory produces, including intermediate products. + title: Producerade + description: Visar alla former din fabrik producerar, detta inkluderar mellanhandsprodukter. delivered: - title: Delivered - description: Displaying shapes which are delivered to your central building. - noShapesProduced: No shapes have been produced so far. + title: Levererade + description: Visar former som levereras till din centrala byggnad. + noShapesProduced: Inga former har producerats än. # Displays the shapes per minute, e.g. '523 / m' shapesPerMinute: / m # Settings menu, when you press "ESC" settingsMenu: - playtime: Playtime + playtime: Speltid - buildingsPlaced: Buildings - beltsPlaced: Belts + buildingsPlaced: Byggnader + beltsPlaced: Rullband buttons: - continue: Continue - settings: Settings - menu: Return to menu + continue: Fortsätt + settings: Inställningar + menu: Återvänd till meny # Bottom left tutorial hints tutorialHints: - title: Need help? - showHint: Show hint - hideHint: Close + title: Behöver hjälp? + showHint: Visa tips + hideHint: Stäng # When placing a blueprint blueprintPlacer: - cost: Cost + cost: Kostnad # Map markers waypoints: - waypoints: Markers + waypoints: Markörer hub: HUB - description: Left-click a marker to jump to it, right-click to delete it.

Press to create a marker from the current view, or right-click to create a marker at the selected location. - creationSuccessNotification: Marker has been created. + description: Vänsterklicka en markör för att hoppa till den, högerklicka för att ta bort den.

Tryck för att skapa en markör från nuvarande position, eller högerklicka för att skapa en markör vid vald plats. + creationSuccessNotification: Markör har skapats. # Interactive tutorial interactiveTutorial: title: Tutorial hints: - 1_1_extractor: Place an extractor on top of a circle shape to extract it! + 1_1_extractor: Placera en extraktor över en cirkel för att extrahera den! 1_2_conveyor: >- - Connect the extractor with a conveyor belt to your hub!

Tip: Click and drag the belt with your mouse! + Koppla extraktorn med ettrullband till din hub!

Tips: Clicka och dra rullbandet med musen! 1_3_expand: >- - This is NOT an idle game! Build more extractors and belts to finish the goal quicker.

Tip: Hold SHIFT to place multiple extractors, and use R to rotate them. + Detta är INTE ett idle-spel! Bygg fler extraktörer för att klara målet snabbare.

Tips: Håll SHIFT för att placera flera extraktörer, och använd R för att rotera dem. + + colors: + red: Röd + green: Grön + blue: Blå + yellow: Gul + purple: Lila + cyan: Turkos + white: Vit + uncolored: Ofärgad + shapeViewer: + title: Lager + empty: Tom # All shop upgrades shopUpgrades: belt: - name: Belts, Distributor & Tunnels - description: Speed x → x + name: Rullband, Distributörer & Tunnlar + description: hastighet x → x miner: - name: Extraction - description: Speed x → x + name: Extraktion + description: Hastighet x → x processors: - name: Cutting, Rotating & Stacking - description: Speed x → x + name: Klippning, Rotationg & Stapling + description: Hastighet x → x painting: - name: Mixing & Painting - description: Speed x → x + name: Blandning & Färgning + description: hastighet x → x # Buildings and their name / description buildings: belt: default: - name: &belt Conveyor Belt - description: Transports items, hold and drag to place multiple. + name: &belt Rullband + description: Transporterar obejekt, håll in och dra för att placera flera. miner: # Internal name for the Extractor default: - name: &miner Extractor - description: Place over a shape or color to extract it. + name: &miner Extraktor + description: Placera över en form eller färg för att extrahera den. chainable: - name: Extractor (Chain) - description: Place over a shape or color to extract it. Can be chained. + name: Extraktor (kedja) + description: Placera över en form eller färg för att extrahera den. Kan kedjas. underground_belt: # Internal name for the Tunnel default: name: &underground_belt Tunnel - description: Allows to tunnel resources under buildings and belts. + description: Låter dig tunnla under byggnader och rullband. tier2: name: Tunnel Tier II - description: Allows to tunnel resources under buildings and belts. + description: Låter dig tunnla resurser under byggnader och rullband. splitter: # Internal name for the Balancer default: - name: &splitter Balancer - description: Multifunctional - Evenly distributes all inputs onto all outputs. + name: &splitter balancer + description: Multifunktionell - Distribuerar alla inputs och outputs jämt. compact: - name: Merger (compact) - description: Merges two conveyor belts into one. + name: Sammanslagare (kompakt) + description: Slår ihop två rullband till ett. compact-inverse: - name: Merger (compact) - description: Merges two conveyor belts into one. + name: Sammanslagare (kompakt) + description: Slår ihop två rullband till ett. cutter: default: - name: &cutter Cutter - description: Cuts shapes from top to bottom and outputs both halfs. If you use only one part, be sure to destroy the other part or it will stall! + name: &cutter Klippare + description: Klipper former från topp till botten och outputtar båda halver.Om du bara använder en halva, se till att förstöra den andra, annars kommer den uppehålla fabrkien! quad: - name: Cutter (Quad) - description: Cuts shapes into four parts. If you use only one part, be sure to destroy the other part or it will stall! + name: Klippare (Quad) + description: Klipper former i fyra delar. Om du bara använder en del, se till att förstöra de andra, annars kommer de uppehålla fabrkien! rotater: default: - name: &rotater Rotate - description: Rotates shapes clockwise by 90 degrees. + name: &rotater Roterare + description: Roterar former 90 grader. ccw: - name: Rotate (CCW) - description: Rotates shapes counter clockwise by 90 degrees. + name: Roterare (CCW) + description: Roterar former 90 motsols. stacker: default: - name: &stacker Stacker - description: Stacks both items. If they can not be merged, the right item is placed above the left item. + name: &stacker Staplare + description: Staplar båda obejekt. Om de inte kan slås ihop, placeras det högra obejektet över det vänstra. mixer: default: - name: &mixer Color Mixer - description: Mixes two colors using additive blending. + name: &mixer Färgblandare + description: Blandar två färger genom additiv blandning. painter: default: - name: &painter Painter - description: &painter_desc Colors the whole shape on the left input with the color from the right input. + name: &painter Färgläggare + description: &painter_desc Färgar hela formen på den vänstra ingången med färgen från den högra. double: - name: Painter (Double) - description: Colors the shapes on the left inputs with the color from the top input. + name: Färgläggare (Dubbel) + description: Färgar formerna på de vänstra ingångarna med färgen från den högra. quad: - name: Painter (Quad) - description: Allows to color each quadrant of the shape with a different color. + name: Färgläggare (Quad) + description: Låter dig färglägga varje hörn av formen med olika färger. mirrored: name: *painter description: *painter_desc trash: default: - name: &trash Trash - description: Accepts inputs from all sides and destroys them. Forever. + name: &trash Skräphantering + description: Tar in former från alla sidor och förstör dem. För alltid. storage: - name: Storage - description: Stores excess items, up to a given capacity. Can be used as an overflow gate. + name: Förvaring + description: Förvarar överskottliga objekt, till kapacitet. Kan användas som överflödsport. hub: - deliver: Deliver - toUnlock: to unlock + deliver: Leverera + toUnlock: Att låsa upp levelShortcut: LVL storyRewards: # Those are the rewards gained from completing the store reward_cutter_and_trash: - title: Cutting Shapes - desc: You just unlocked the cutter - it cuts shapes half from top to bottom regardless of its orientation!

Be sure to get rid of the waste, or otherwise it will stall - For this purpose I gave you a trash, which destroys everything you put into it! + title: Att klippa former + desc: Du låste just upp klipparen - den klipper former på hälften från topp till botten oavsett dess orientation!

Se till att ta bort allt överskott, annars kommer det att skapa uppehåll - Av denna anledning gav jag dig skräphantering, vilket förstör allt du inputtar! reward_rotater: - title: Rotating - desc: The rotater has been unlocked! It rotates shapes clockwise by 90 degrees. + title: Rotation + desc: Roteraren har blivit upplåst! Den roterar former 90 grader medsols. reward_painter: - title: Painting + title: Måleri desc: >- - The painter has been unlocked - Extract some color veins (just as you do with shapes) and combine it with a shape in the painter to color them!

PS: If you are colorblind, I'm working on a solution already! + Färgläggaren har blivit upplåst - Extrahera färg (precis som du gör med former) och kombinera dem med former för att färglägga dem!

PS: Om du är färgblind, jag jobbar redan på en lösning! reward_mixer: - title: Color Mixing - desc: The mixer has been unlocked - Combine two colors using additive blending with this building! + title: Färgblandning + desc: Färgblandaren har blivit upplåst - Kombinera två färger genom additiv färgblandning med denna byggnad! reward_stacker: - title: Combiner - desc: You can now combine shapes with the combiner! Both inputs are combined, and if they can be put next to each other, they will be fused. If not, the right input is stacked on top of the left input! + title: Kombinera + desc: Du kan nu kombinera former medstaplaren! Båda inputs blir kombinerade och om de kan sättas brevid varandra kommer de att sättas ihop. Om inte kommer den högra staplas över den vänstra! reward_splitter: - title: Splitter/Merger - desc: The multifunctional balancer has been unlocked - It can be used to build bigger factories by splitting and merging items onto multiple belts!

+ title: Delning/Sammanslagning + desc: Den multifunktiionella balanseraren har blivit upplåst - Den kan användas för att bygga större fabriker genom att dela eller slå ihop objekt till flera rullband!

reward_tunnel: title: Tunnel - desc: The tunnel has been unlocked - You can now pipe items through belts and buildings with it! + desc: Tunneln blivit upplåst- Du kan nu transportera saker under rullband och byggnader med den! reward_rotater_ccw: - title: CCW Rotating - desc: You have unlocked a variant of the rotater - It allows to rotate counter clockwise! To build it, select the rotater and press 'T' to cycle its variants! + title: Motsols rotation + desc: Du har låst upp en variant av roteraren - Den låter dig rotera saker motsols! För att bygga den, välj roteraren och tryck ned 'T' för att cykla genom dess varianter! reward_miner_chainable: - title: Chaining Extractor - desc: You have unlocked the chaining extractor! It can forward its resources to other extractors so you can more efficiently extract resources! + title: Kedjeextraktor + desc: Du har låst upp Kedjeextraktorn! Den kan föra sina resurser framåt till andra extraktorer så att du kan mer effektivt extrahera resurser! reward_underground_belt_tier_2: title: Tunnel Tier II - desc: You have unlocked a new variant of the tunnel - It has a bigger range, and you can also mix-n-match those tunnels now! + desc: Du har låst upp en ny variant av tunneln - Den har en större räckvidd, och du kan också mix-matcha tunnlarna nu! reward_splitter_compact: - title: Compact Balancer + title: Kompakt Balanserare desc: >- - You have unlocked a compact variant of the balancer - It accepts two inputs and merges them into one! + Du har låst upp en ny variant av balanseraren - Den accepterar två input och gör dem till en! reward_cutter_quad: - title: Quad Cutting - desc: You have unlocked a variant of the cutter - It allows you to cut shapes in four parts instead of just two! + title: Quad Klippning + desc: Du har låst upp en ny variant av klipparen - Den låter dig klippa former i fyra delar istället för bara två! reward_painter_double: - title: Double Painting - desc: You have unlocked a variant of the painter - It works as the regular painter but processes two shapes at once consuming just one color instead of two! + title: Dubbelfärgläggning + desc: Du har låst upp en ny variant av Färgläggaren - Den fungerar som en vanlig färgläggare fast den färglägger två former åt gången och använder bara en färg istället för två! reward_painter_quad: - title: Quad Painting - desc: You have unlocked a variant of the painter - It allows to paint each part of the shape individually! + title: Quad Färgläggning + desc: Du har låst upp en ny variant av Färgläggaren - Den tillåter dig att färglägga varje del av en form individuellt! reward_storage: - title: Storage Buffer - desc: You have unlocked a variant of the trash - It allows to store items up to a given capacity! + title: Förvaringsbuffert + desc: Du har låst upp en ny variant av skräphantering - Den tillåter dig att förvara objekt upp till en viss kapacitet! reward_freeplay: - title: Freeplay - desc: You did it! You unlocked the free-play mode! This means that shapes are now randomly generated! (No worries, more content is planned for the standalone!) + title: Friläge + desc: Du gjorde det! Du låste upp friläge! Det betyder att former är nu slumpmässigt genererade! (oroa dig inte, mer innehåll är planerat för den fristående versionen!) reward_blueprints: - title: Blueprints - desc: You can now copy and paste parts of your factory! Select an area (Hold CTRL, then drag with your mouse), and press 'C' to copy it.

Pasting it is not free, you need to produce blueprint shapes to afford it! (Those you just delivered). + title: Ritningar + desc: Du kan nu kopiera och klistra in delar av din fabrik! Välj ett område (håll in CTRL, dra sedan med musen), och tryck 'C' för att kopiera det.

Att klistra in ärinte gratis, du behöver producera ritningsformer för att ha råd med det! (De du just levererade). # Special reward, which is shown when there is no reward actually no_reward: - title: Next level + title: Nästa nivå desc: >- - This level gave you no reward, but the next one will!

PS: Better don't destroy your existing factory - You need all those shapes later again to unlock upgrades! + Denna nivå har ingen belöning, men nästa kommer!

PS: Se till att inte förstöra din redan existerande fabrik - Du behöver alla de där formerna igen för att låsa upp uppgraderingar! no_reward_freeplay: - title: Next level + title: Nästa nivå desc: >- - Congratulations! By the way, more content is planned for the standalone! + Grattis! Föresten, mer spelinnehåll är planerat för den fristående versionen! settings: - title: Settings + title: Inställningar categories: - game: Game - app: Application + game: Spelinställningar + app: Applikation versionBadges: - dev: Development - staging: Staging - prod: Production - buildDate: Built + dev: Utveckling + staging: Iscensättning + prod: Produktion + buildDate: Skapad labels: uiScale: - title: Interface scale + title: Gränssnittsskala description: >- - Changes the size of the user interface. The interface will still scale based on your device resolution, but this setting controls the amount of scale. + Ändrar storleken på gränssnittet. gränssnittet kommer fortfarande baseras på skärmupplösning, men denna inställning kontrollerar mängdskala. scales: - super_small: Super small - small: Small - regular: Regular - large: Large - huge: Huge + super_small: Superliten + small: Liten + regular: Normal + large: Stor + huge: Enorm scrollWheelSensitivity: - title: Zoom sensitivity + title: Zoomkänslighet description: >- - Changes how sensitive the zoom is (Either mouse wheel or trackpad). + Ändrar hur känslig zoomen är (Mushjul eller styrplatta). sensitivity: - super_slow: Super slow - slow: Slow - regular: Regular - fast: Fast - super_fast: Super fast + super_slow: Superlångsam + slow: Långsam + regular: Normal + fast: Snabb + super_fast: Supersnabb language: - title: Language + title: Språk description: >- - Change the language. All translations are user contributed and might be incomplete! + Ändra språk. Alla språk är användarbidragna och kan vara inkompletta! fullscreen: - title: Fullscreen + title: Fullskärm description: >- - It is recommended to play the game in fullscreen to get the best experience. Only available in the standalone. + Det är rekommenderat att spela i fullskärm för bästa upplevelse. Endast tillgänglig i den fristående versionen. soundsMuted: - title: Mute Sounds + title: Dämpa Ljud description: >- - If enabled, mutes all sound effects. + Om på, stänger av alla ljud. musicMuted: - title: Mute Music + title: Dämpa Musik description: >- - If enabled, mutes all music. + Om på, stänger av all musik. theme: - title: Game theme + title: Spelutseende description: >- - Choose the game theme (light / dark). + Välj spelutseende (ljust / mörkt). themes: - dark: Dark - light: Light + dark: Mörkt + light: Ljust refreshRate: - title: Simulation Target + title: Simulationsmål description: >- - If you have a 144hz monitor, change the refresh rate here so the game will properly simulate at higher refresh rates. This might actually decrease the FPS if your computer is too slow. + Om du har en 144hz skärm, ändra uppdateringshastigheten här så kommer spelet simulera vid en högre uppdateringshastighet. Detta kan dock sänka FPS om din dator är långsam. alwaysMultiplace: - title: Multiplace + title: Flerplacering description: >- - If enabled, all buildings will stay selected after placement until you cancel it. This is equivalent to holding SHIFT permanently. + Om på, alla byggnader kommer fortsätta vara valda efter placering. Att ha detta på är som att konstant hålla ned SKIFT. offerHints: - title: Hints & Tutorials + title: Tips & Tutorials description: >- - Whether to offer hints and tutorials while playing. Also hides certain UI elements onto a given level to make it easier to get into the game. + Om tips och tutorials ska synas under spelets gång. Gömmer också vissa delar av UI tills senare i spelet för att göra det lättare att komma in i spelet. movementSpeed: - title: Movement speed - description: Changes how fast the view moves when using the keyboard. + title: Rörelsehastighet + description: Ändrar hur snabbt kameran förflyttar sig när du använder tangentbordet för att flytta kameran. speeds: - super_slow: Super slow - slow: Slow - regular: Regular - fast: Fast - super_fast: Super Fast - extremely_fast: Extremely Fast + super_slow: Superlångsamt + slow: Långsamt + regular: Normal + fast: Snabbt + super_fast: Supersnabbt + extremely_fast: Extremt snabbt enableTunnelSmartplace: - title: Smart Tunnels + title: Smarta Tunnlar description: >- - When enabled, placing tunnels will automatically remove unnecessary belts. - This also enables to drag tunnels and excess tunnels will get removed. + När på, att placera ut tunnlar kommer automatiskt ta bort onödiga rullband. + Detta låter dig också dra för att sätta ut tunnlar och onödiga tunnlar kommer att tas bort. vignette: - title: Vignette + title: Vinjett description: >- - Enables the vignette which darkens the screen corners and makes text easier - to read. + Sätter på vinjetten vilket gör skärmen mörkare i hörnen och + gör text lättare att läsa autosaveInterval: - title: Autosave Interval + title: Intervall för automatisk sparning description: >- - Controls how often the game saves automatically. You can also disable it - entirely here. + Kontrollerar hur ofta spelet sparas atomatiskt. + Du kan också stäng av det helt. 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 Minut + two_minutes: 2 Minuter + five_minutes: 5 Minuter + ten_minutes: 10 Minuter + twenty_minutes: 20 Minuter + disabled: Avstängd compactBuildingInfo: - title: Compact Building Infos + title: Kompakt byggnadsinfo description: >- - Shortens info boxes for buildings by only showing their ratios. Otherwise a - description and image is shown. + Kortar ned infotexter för byggnader genom att endast visa dess storlek. + Annars visas en beskrivning och bild. disableCutDeleteWarnings: - title: Disable Cut/Delete Warnings + title: Stäng av klipp/raderingsvarningar description: >- - Disable the warning dialogs brought up when cutting/deleting more than 100 - entities. + Stänger av varningsdialogen som kommer upp då fler än 100 saker + ska tas bort + + enableColorBlindHelper: + title: Färgblint läge + description: Aktiverar olika verktyg som låter dig spela spelet om du är färbling. keybindings: - title: Keybindings + title: Tangentbindningar hint: >- - Tip: Be sure to make use of CTRL, SHIFT and ALT! They enable different placement options. + Tips: Se till att använda CTRL, SKIFT, och ALT! De låter dig använda olika placeringslägen. - resetKeybindings: Reset Keyinbindings + resetKeybindings: Återställ Tangentbindningar categoryLabels: - general: Application - ingame: Game - navigation: Navigating - placement: Placement - massSelect: Mass Select - buildings: Building Shortcuts - placementModifiers: Placement Modifiers + general: Applikation + ingame: Spelinställningar + navigation: Navigation + placement: Placering + massSelect: Massval + buildings: Snabbtangenter + placementModifiers: Placeringsmodifierare mappings: - confirm: Confirm - back: Back - mapMoveUp: Move Up - mapMoveRight: Move Right - mapMoveDown: Move Down - mapMoveLeft: Move Left - centerMap: Center Map + confirm: Godkänn + back: Tillbaka + mapMoveUp: Gå Upp + mapMoveRight: Gå Höger + mapMoveDown: Gå Nedåt + mapMoveLeft: Gå Vänster + centerMap: Till mitten av världen - mapZoomIn: Zoom in - mapZoomOut: Zoom out - createMarker: Create Marker + mapZoomIn: Zooma in + mapZoomOut: Zooma ut + createMarker: Skapa Markör - menuOpenShop: Upgrades - menuOpenStats: Statistics + menuOpenShop: Uppgraderingar + menuOpenStats: Statistik toggleHud: Toggle HUD - toggleFPSInfo: Toggle FPS and Debug Info + toggleFPSInfo: Toggle FPS och Debug info belt: *belt splitter: *splitter underground_belt: *underground_belt @@ -754,57 +772,57 @@ keybindings: painter: *painter trash: *trash - rotateWhilePlacing: Rotate + rotateWhilePlacing: Rotera rotateInverseModifier: >- - Modifier: Rotate CCW instead - cycleBuildingVariants: Cycle Variants - confirmMassDelete: Confirm Mass Delete - cycleBuildings: Cycle Buildings + Modifiering: Rotera motsols istället + cycleBuildingVariants: Cykla varianter + confirmMassDelete: Godkänn massborttagning + cycleBuildings: Cykla byggnader - massSelectStart: Hold and drag to start - massSelectSelectMultiple: Select multiple areas - massSelectCopy: Copy area + massSelectStart: Håll in och dra för att starta + massSelectSelectMultiple: Välj flera ytor + massSelectCopy: Kopiera yta - placementDisableAutoOrientation: Disable automatic orientation - placeMultiple: Stay in placement mode - placeInverse: Invert automatic belt orientation - pasteLastBlueprint: Paste last blueprint - massSelectCut: Cut area - exportScreenshot: Export whole Base as Image - mapMoveFaster: Move Faster - lockBeltDirection: Enable belt planner - switchDirectionLockSide: "Planner: Switch side" - pipette: Pipette + placementDisableAutoOrientation: Stäng av automatisk orientering + placeMultiple: Stanna kvar i placeringsläge + placeInverse: Invertera automatisk rullbandsorientering + pasteLastBlueprint: Klistra in ritning + massSelectCut: Klipp yta + exportScreenshot: Exportera hela fabriken som bild + mapMoveFaster: Flytta dig snabbare + lockBeltDirection: Sätt på rullbandsplanerare + switchDirectionLockSide: "Planerare: Byt sida" + pipette: Pipett about: - title: About this Game + title: Om detta spel body: >- - This game is open source and developed by Tobias Springer (this is me).

+ Detta spel är open source och utvecklas av Tobias Springer (Det är jag).

- If you want to contribute, check out shapez.io on github.

+ Om du vill hjälpa, kolla in shapez.io på github.

- This game wouldn't have been possible without the great discord community - around my games - You should really join the discord server!

- The soundtrack was made by Peppsen - He's awesome.

+ Musiken skapades av Peppsen - Han är grym!

- Finally, huge thanks to my best friend Niklas - Without our - factorio sessions this game would never have existed. + Och sist men inte minst, tack till min bästa vän Niklas - Utan våra + factoriosessioner hade detta spel aldrig funnits. changelog: title: Changelog demo: features: - restoringGames: Restoring savegames - importingGames: Importing savegames - oneGameLimit: Limited to one savegame - customizeKeybindings: Customizing Keybindings - exportingBase: Exporting whole Base as Image + restoringGames: Återställer sparfiler + importingGames: Importerar sparfiler + oneGameLimit: Limiterad till endast en sparfil + customizeKeybindings: Finjustera tangentbindningar + exportingBase: Exportera hela fabriken som en bild - settingNotAvailable: Not available in the demo. + settingNotAvailable: Inte tillgänglig i demoversionen. diff --git a/translations/base-tr.yaml b/translations/base-tr.yaml index 0880ce04..6bd1b97a 100644 --- a/translations/base-tr.yaml +++ b/translations/base-tr.yaml @@ -156,6 +156,7 @@ mainMenu: continue: Continue newGame: New Game madeBy: Made by + subreddit: Reddit dialogs: buttons: @@ -397,6 +398,19 @@ ingame: 1_3_expand: >- This is NOT an idle game! Build more extractors and belts to finish the goal quicker.

Tip: Hold SHIFT to place multiple extractors, and use R 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: >- diff --git a/translations/base-zh-CN.yaml b/translations/base-zh-CN.yaml index bd3f50bb..08708f35 100644 --- a/translations/base-zh-CN.yaml +++ b/translations/base-zh-CN.yaml @@ -187,6 +187,7 @@ mainMenu: continue: 继续游戏 newGame: 新游戏 madeBy: 作者: + subreddit: Reddit dialogs: buttons: @@ -283,12 +284,6 @@ dialogs: CTRL + 拖动:选择区域以复制或删除。
SHIFT: 按住以放置多个。
ALT: 反向放置传送带。
- # desc: >- - # This game has a lot of keybindings which make it easier to build big factories. - # Here are a few, but be sure to check out the keybindings!

- # CTRL + Drag: Select area to copy / delete.
- # SHIFT: Hold to place multiple of one building.
- # ALT: Invert orientation of placed belts.
createMarker: title: 创建地图标记 @@ -436,6 +431,19 @@ ingame: 这不是一个挂机游戏!建造更多的开采机和传送带来更快地完成目标。

提示:按住SHIFT键来放置多个开采机,用R键旋转它们。 + 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: 最后,我想感谢我最好的朋友Niklas——如果没有与他的异星工厂(factorio)的游戏体验,shapez.io将不会存在。 + changelog: title: 版本日志 diff --git a/translations/base-zh-TW.yaml b/translations/base-zh-TW.yaml index e383ce2c..aac39324 100644 --- a/translations/base-zh-TW.yaml +++ b/translations/base-zh-TW.yaml @@ -156,6 +156,7 @@ mainMenu: continue: Continue newGame: New Game madeBy: Made by + subreddit: Reddit dialogs: buttons: @@ -397,6 +398,19 @@ ingame: 1_3_expand: >- This is NOT an idle game! Build more extractors and belts to finish the goal quicker.

Tip: Hold SHIFT to place multiple extractors, and use R 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: >-