diff --git a/src/js/core/input_distributor.js b/src/js/core/input_distributor.js index a63da6e9..7a8a38a6 100644 --- a/src/js/core/input_distributor.js +++ b/src/js/core/input_distributor.js @@ -185,7 +185,7 @@ export class InputDistributor { const gamepad = navigator.getGamepads()[this.connectedGamepadIndex]; for (const [index, button] of gamepad.buttons.entries()) { - const keyCode = 200 + index + const keyCode = 300 + index; const isInitial = !this.keysDown.has(keyCode); if (button.pressed) { diff --git a/src/js/game/hud/parts/building_placer_logic.js b/src/js/game/hud/parts/building_placer_logic.js index 9007511b..de5a5427 100644 --- a/src/js/game/hud/parts/building_placer_logic.js +++ b/src/js/game/hud/parts/building_placer_logic.js @@ -117,6 +117,7 @@ export class HUDBuildingPlacerLogic extends BaseHUDPart { keyActionMapper.getBinding(KEYMAPPINGS.general.back).add(this.abortPlacement, this); keyActionMapper.getBinding(KEYMAPPINGS.placement.pipette).add(this.startPipette, this); this.root.gameState.inputReciever.keyup.add(this.checkForDirectionLockSwitch, this); + keyActionMapper.getBinding(KEYMAPPINGS.placement.placeBuilding).add(this.tryPlaceCurrentBuildingAtCursor, this) // BINDINGS TO GAME EVENTS this.root.hud.signals.buildingsSelectedForCopy.add(this.abortPlacement, this); @@ -132,6 +133,23 @@ export class HUDBuildingPlacerLogic extends BaseHUDPart { this.root.camera.upPostHandler.add(this.onMouseUp, this); } + tryPlaceCurrentBuildingAtCursor() { + if (!this.currentMetaBuilding.get()) { + return; + } + + const mousePosition = this.root.app.mousePosition; + if (!mousePosition) { + // Not on screen + return; + } + + const worldPos = this.root.camera.screenToWorld(mousePosition); + const mouseTile = worldPos.toTileSpace(); + + this.tryPlaceCurrentBuildingAt(mouseTile); + } + /** * Called when the edit mode got changed * @param {Layer} layer diff --git a/src/js/game/hud/parts/keybinding_overlay.js b/src/js/game/hud/parts/keybinding_overlay.js index 65919d3c..6d29be63 100644 --- a/src/js/game/hud/parts/keybinding_overlay.js +++ b/src/js/game/hud/parts/keybinding_overlay.js @@ -195,7 +195,7 @@ export class HUDKeybindingOverlay extends BaseHUDPart { { // Place building label: T.ingame.keybindingsOverlay.placeBuilding, - keys: [KEYCODE_LMB], + keys: [k.placement.placeBuilding], condition: () => this.anyPlacementActive, }, diff --git a/src/js/game/key_action_mapper.js b/src/js/game/key_action_mapper.js index 9fa4ffe1..67897b67 100644 --- a/src/js/game/key_action_mapper.js +++ b/src/js/game/key_action_mapper.js @@ -11,6 +11,10 @@ function key(str) { return str.toUpperCase().charCodeAt(0); } +export const KEYCODE_LMB = 1; +export const KEYCODE_MMB = 2; +export const KEYCODE_RMB = 3; + export const KEYMAPPINGS = { general: { confirm: { keyCode: 13 }, // enter @@ -78,6 +82,7 @@ export const KEYMAPPINGS = { }, placement: { + placeBuilding: { keyCode: KEYCODE_LMB }, pipette: { keyCode: key("Q") }, rotateWhilePlacing: { keyCode: key("R") }, rotateInverseModifier: { keyCode: 16 }, // SHIFT @@ -112,10 +117,6 @@ for (const categoryId in KEYMAPPINGS) { } } -export const KEYCODE_LMB = 1; -export const KEYCODE_MMB = 2; -export const KEYCODE_RMB = 3; - /** * Returns a keycode -> string * @param {number} code @@ -261,6 +262,32 @@ export function getStringForKeyCode(code) { return "]"; case 222: return "'"; + + // Xbox Gamepad + case 300: + return "🎮 A"; + case 301: + return "🎮 B"; + case 302: + return "🎮 X"; + case 303: + return "🎮 Y"; + case 304: + return "🎮 LB"; + case 305: + return "🎮 RB"; + case 306: + return "🎮 LT"; + case 307: + return "🎮 RT"; + case 312: + return "🎮 ⬆"; + case 313: + return "🎮 ⬇"; + case 314: + return "🎮 ⬅"; + case 315: + return "🎮 ➡"; } return (48 <= code && code <= 57) || (65 <= code && code <= 90) diff --git a/translations/base-en.yaml b/translations/base-en.yaml index 62ed2808..59087c73 100644 --- a/translations/base-en.yaml +++ b/translations/base-en.yaml @@ -21,1245 +21,1246 @@ --- 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 processing of increasingly complex shapes across an infinitely expanding map. + # This is the short text appearing on the steam page + shortText: shapez.io is a game about building factories to automate the creation and processing of increasingly complex shapes across an infinitely expanding map. - # This is the text shown above the Discord link - discordLinkShort: Official Discord + # This is the text shown above the Discord link + discordLinkShort: Official Discord - intro: >- - Do you like automation games? Then you are in the right place! + intro: >- + Do you like automation games? Then you are in the right place! - shapez.io is a relaxed game in which you have to build factories for the automated production of geometric shapes. As the level increases, the shapes become more and more complex, and you - have to spread out on the infinite map. + shapez.io is a relaxed game in which you have to build factories for the automated production of geometric shapes. As the level increases, the shapes become more and more complex, and you + have to spread out on the infinite map. - And as if that wasn't enough, you also have to produce exponentially more to satisfy the demands - the only thing that helps is scaling! While you only have to process shapes at the - beginning, you will later have to color them - by extracting and mixing colors! + And as if that wasn't enough, you also have to produce exponentially more to satisfy the demands - the only thing that helps is scaling! While you only have to process shapes at the + beginning, you will later have to color them - by extracting and mixing colors! - Buying the game on Steam gives you access to the full version, but you can also play a demo at shapez.io first and decide later! + Buying the game on Steam gives you access to the full version, but you can also play a demo at shapez.io first and decide later! - title_advantages: Standalone Advantages - advantages: - - 12 New Levels for a total of 26 levels - - 18 New Buildings for a fully automated factory! - - Unlimited Upgrade Tiers for many hours of fun! - - Wires Update for an entirely new dimension! - - Dark Mode! - - Unlimited Savegames - - Unlimited Markers - - Support me! ❤️ + title_advantages: Standalone Advantages + advantages: + - 12 New Levels for a total of 26 levels + - 18 New Buildings for a fully automated factory! + - Unlimited Upgrade Tiers for many hours of fun! + - Wires Update for an entirely new dimension! + - Dark Mode! + - Unlimited Savegames + - Unlimited Markers + - Support me! ❤️ - title_future: Planned Content - planned: - - Blueprint Library - - Steam Achievements - - Puzzle Mode - - Minimap - - Mods - - Sandbox mode - - ... and a lot more! + title_future: Planned Content + planned: + - Blueprint Library + - Steam Achievements + - Puzzle Mode + - Minimap + - Mods + - Sandbox mode + - ... and a lot more! - title_open_source: This game is open source! - text_open_source: >- - Anybody can contribute, I'm actively involved in the community and attempt to review all suggestions and take feedback into consideration where possible. + title_open_source: This game is open source! + text_open_source: >- + Anybody can contribute, I'm actively involved in the community and attempt to review all suggestions and take feedback into consideration where possible. - Be sure to check out my trello board for the full roadmap! + Be sure to check out my trello board for the full roadmap! - title_links: Links + title_links: Links - links: - discord: Official Discord - roadmap: Roadmap - subreddit: Subreddit - source_code: Source code (GitHub) - translate: Help translate + links: + discord: Official Discord + roadmap: Roadmap + subreddit: Subreddit + source_code: Source code (GitHub) + translate: Help translate global: - loading: Loading - error: Error + loading: Loading + error: Error - # How big numbers are rendered, e.g. "10,000" - thousandsDivider: "," + # How big numbers are rendered, e.g. "10,000" + thousandsDivider: "," - # What symbol to use to separate the integer part from the fractional part of a number, e.g. "0.4" - decimalSeparator: "." + # What symbol to use to separate the integer part from the fractional part of a number, e.g. "0.4" + decimalSeparator: "." - # The suffix for large numbers, e.g. 1.3k, 400.2M, etc. - suffix: - thousands: k - millions: M - billions: B - trillions: T + # The suffix for large numbers, e.g. 1.3k, 400.2M, etc. + suffix: + thousands: k + millions: M + billions: B + trillions: T - # Shown for infinitely big numbers - infinite: inf + # Shown for infinitely big numbers + infinite: inf - 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 + 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 - # Short formats for times, e.g. '5h 23m' - secondsShort: s - minutesAndSecondsShort: m s - hoursAndMinutesShort: h m + # Short formats for times, e.g. '5h 23m' + secondsShort: s + minutesAndSecondsShort: m s + hoursAndMinutesShort: h m - xMinutes: minutes + xMinutes: minutes - keys: - tab: TAB - control: CTRL - alt: ALT - escape: ESC - shift: SHIFT - space: SPACE + keys: + tab: TAB + control: CTRL + alt: ALT + escape: ESC + shift: SHIFT + space: SPACE demoBanners: - # This is the "advertisement" shown in the main menu and other various places - title: Demo Version - intro: >- - Get the full game to unlock all features and content! + # This is the "advertisement" shown in the main menu and other various places + title: Demo Version + intro: >- + Get the full game to unlock all features and content! mainMenu: - play: Play - continue: Continue - newGame: New Game - changelog: Changelog - subreddit: Reddit - importSavegame: Import - openSourceHint: This game is open source! - discordLink: Official Discord Server - helpTranslate: Help translate! - madeBy: Made by + play: Play + continue: Continue + newGame: New Game + changelog: Changelog + subreddit: Reddit + importSavegame: Import + openSourceHint: This game is open source! + discordLink: Official Discord Server + helpTranslate: Help translate! + madeBy: Made by - # This is shown when using firefox and other browsers which are not supported. - browserWarning: >- - Sorry, but the game is known to run slowly on your browser! Get the standalone version or download Google Chrome for the full experience. + # This is shown when using firefox and other browsers which are not supported. + browserWarning: >- + Sorry, but the game is known to run slowly on your browser! Get the standalone version or download Google Chrome for the full experience. - savegameLevel: Level - savegameLevelUnknown: Unknown Level - savegameUnnamed: Unnamed + savegameLevel: Level + savegameLevelUnknown: Unknown Level + savegameUnnamed: Unnamed dialogs: - buttons: - ok: OK - delete: Delete - cancel: Cancel - later: Later - restart: Restart - reset: Reset - getStandalone: Get Standalone - deleteGame: I know what I am doing - viewUpdate: View Update - showUpgrades: Show Upgrades - showKeybindings: Show Keybindings + buttons: + ok: OK + delete: Delete + cancel: Cancel + later: Later + restart: Restart + reset: Reset + getStandalone: Get Standalone + deleteGame: I know what I am doing + viewUpdate: View Update + showUpgrades: Show Upgrades + showKeybindings: Show Keybindings - importSavegameError: - title: Import Error - text: >- - Failed to import your savegame: + importSavegameError: + title: Import Error + text: >- + Failed to import your savegame: - importSavegameSuccess: - title: Savegame Imported - text: >- - Your savegame has been successfully imported. + importSavegameSuccess: + title: Savegame Imported + text: >- + Your savegame has been successfully imported. - gameLoadFailure: - title: Game is broken - text: >- - Failed to load your savegame: + gameLoadFailure: + title: Game is broken + text: >- + Failed to load your savegame: - confirmSavegameDelete: - title: Confirm deletion - text: >- - Are you sure you want to delete the following game?

- '' at level

- This can not be undone! + confirmSavegameDelete: + title: Confirm deletion + text: >- + Are you sure you want to delete the following game?

+ '' at level

+ This can not be undone! - savegameDeletionError: - title: Failed to delete - text: >- - Failed to delete the savegame: + savegameDeletionError: + title: Failed to delete + text: >- + Failed to delete the savegame: - restartRequired: - title: Restart required - text: >- - You need to restart the game to apply the settings. + restartRequired: + title: Restart required + text: >- + You need to restart the game to apply the settings. - editKeybinding: - title: Change Keybinding - desc: Press the key or mouse button you want to assign, or escape to cancel. + editKeybinding: + title: Change Keybinding + desc: Press the key or mouse button you want to assign, or escape to cancel. - resetKeybindingsConfirmation: - title: Reset keybindings - desc: This will reset all keybindings to their default values. Please confirm. + resetKeybindingsConfirmation: + title: Reset keybindings + desc: This will reset all keybindings to their default values. Please confirm. - keybindingsResetOk: - title: Keybindings reset - desc: All keybindings have been reset to their defaults values! + keybindingsResetOk: + title: Keybindings reset + desc: All keybindings have been reset to their defaults values! - featureRestriction: - title: Demo Version - desc: You tried to access a feature () which is not available in the demo. Consider getting the standalone version for the full experience! + featureRestriction: + title: Demo Version + desc: You tried to access a feature () which is not available in the demo. Consider getting the standalone version for the full experience! - oneSavegameLimit: - title: Limited savegames - desc: You can only have one savegame at a time in the demo version. Please remove the existing one or get the standalone version! + 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 version! - updateSummary: - title: New update! - desc: >- - Here are the changes since you last played: + updateSummary: + title: New update! + desc: >- + Here are the changes since you last played: - upgradesIntroduction: - title: Unlock Upgrades - desc: >- - All shapes you produce can be used to unlock upgrades - don't destroy your old factories! - The upgrades tab can be found on the top right corner of the screen. + upgradesIntroduction: + title: Unlock Upgrades + 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. - massDeleteConfirm: - title: Confirm delete - desc: >- - You are deleting a lot of buildings ( to be exact)! Are you sure you want to do this? + massDeleteConfirm: + title: Confirm delete + desc: >- + You are deleting a lot of buildings ( to be exact)! Are you sure you want to do this? - massCutConfirm: - title: Confirm cut - desc: >- - You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + massCutConfirm: + title: Confirm cut + desc: >- + You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? - massCutInsufficientConfirm: - title: Confirm cut - desc: >- - You can not afford to paste this area! Are you sure you want to cut it? + massCutInsufficientConfirm: + title: Confirm cut + desc: >- + You can not afford to paste this area! Are you sure you want to cut it? - blueprintsNotUnlocked: - title: Not unlocked yet - desc: >- - Complete level 12 to unlock Blueprints! + blueprintsNotUnlocked: + title: Not unlocked yet + desc: >- + Complete level 12 to unlock Blueprints! - keybindingsIntroduction: - title: Useful keybindings - desc: >- - This game has a lot of keybindings which make it easier to build big factories. - Here are a few, but be sure to check out the keybindings!

- CTRL + Drag: Select an area.
- SHIFT: Hold to place multiple of one building.
- ALT: Invert orientation of placed belts.
+ keybindingsIntroduction: + title: Useful keybindings + desc: >- + This game has a lot of keybindings which make it easier to build big factories. + Here are a few, but be sure to check out the keybindings!

+ CTRL + Drag: Select an area.
+ SHIFT: Hold to place multiple of one building.
+ ALT: Invert orientation of placed belts.
- createMarker: - title: New Marker - titleEdit: Edit Marker - desc: Give it a meaningful name, you can also include a short key of a shape (Which you can generate here) + createMarker: + title: New Marker + titleEdit: Edit Marker + desc: Give it a meaningful name, you can also include a short key of a shape (Which you can generate here) - editSignal: - title: Set Signal - descItems: >- - Choose a pre-defined item: - descShortKey: ... or enter the short key of a shape (Which you can generate here) + editSignal: + title: Set Signal + descItems: >- + Choose a pre-defined item: + descShortKey: ... or enter the short key of a shape (Which you can generate here) - markerDemoLimit: - desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers! + markerDemoLimit: + desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers! - exportScreenshotWarning: - title: Export screenshot - desc: You requested to export your base as a screenshot. Please note that this will be quite slow for a bigger base and could potentially crash your game! + exportScreenshotWarning: + title: Export screenshot + desc: You requested to export your base as a screenshot. Please note that this will be quite slow for a bigger base and could potentially crash your game! - renameSavegame: - title: Rename Savegame - desc: You can rename your savegame here. + renameSavegame: + title: Rename Savegame + desc: You can rename your savegame here. - tutorialVideoAvailable: - title: Tutorial Available - desc: There is a tutorial video available for this level! Would you like to watch it? + tutorialVideoAvailable: + title: Tutorial Available + desc: There is a tutorial video available for this level! Would you like to watch it? - tutorialVideoAvailableForeignLanguage: - title: Tutorial Available - desc: There is a tutorial video available for this level, but it is only available in English. Would you like to watch it? + tutorialVideoAvailableForeignLanguage: + title: Tutorial Available + desc: There is a tutorial video available for this level, but it is only available in English. Would you like to watch it? ingame: - # This is shown in the top left corner and displays useful keybindings in - # every situation - keybindingsOverlay: - moveMap: Move - selectBuildings: Select area - stopPlacement: Stop placement - rotateBuilding: Rotate building - placeMultiple: Place multiple - reverseOrientation: Reverse orientation - disableAutoOrientation: Disable auto-orientation - toggleHud: Toggle HUD - placeBuilding: Place building - createMarker: Create marker - delete: Delete - pasteLastBlueprint: Paste last blueprint - lockBeltDirection: Enable belt planner - plannerSwitchSide: Flip planner side - cutSelection: Cut - copySelection: Copy - clearSelection: Clear selection - pipette: Pipette - switchLayers: Switch layers + # This is shown in the top left corner and displays useful keybindings in + # every situation + keybindingsOverlay: + moveMap: Move + selectBuildings: Select area + stopPlacement: Stop placement + rotateBuilding: Rotate building + placeMultiple: Place multiple + reverseOrientation: Reverse orientation + disableAutoOrientation: Disable auto-orientation + toggleHud: Toggle HUD + placeBuilding: Place building + createMarker: Create marker + delete: Delete + pasteLastBlueprint: Paste last blueprint + lockBeltDirection: Enable belt planner + plannerSwitchSide: Flip planner side + cutSelection: Cut + copySelection: Copy + clearSelection: Clear selection + pipette: Pipette + switchLayers: Switch layers - # Names of the colors, used for the color blind mode - colors: - red: Red - green: Green - blue: Blue - yellow: Yellow - purple: Magenta - cyan: Cyan - white: White - black: Black - uncolored: Gray + # Names of the colors, used for the color blind mode + colors: + red: Red + green: Green + blue: Blue + yellow: Yellow + purple: Magenta + cyan: Cyan + white: White + black: Black + uncolored: Gray - # 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. + # 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. - # Shows the hotkey in the ui, e.g. "Hotkey: Q" - hotkeyLabel: >- - Hotkey: + # Shows the hotkey in the ui, e.g. "Hotkey: Q" + hotkeyLabel: >- + Hotkey: - infoTexts: - speed: Speed - range: Range - storage: Capacity - oneItemPerSecond: 1 item / second - itemsPerSecond: items / s - itemsPerSecondDouble: (x2) + infoTexts: + speed: Speed + range: Range + storage: Capacity + oneItemPerSecond: 1 item / second + itemsPerSecond: items / s + itemsPerSecondDouble: (x2) - tiles: tiles + tiles: tiles - # 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 + # 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 - # Notifications on the lower right - notifications: - newUpgrade: A new upgrade is available! - gameSaved: Your game has been saved. - freeplayLevelComplete: Level has been completed! + # Notifications on the lower right + notifications: + newUpgrade: A new upgrade is available! + gameSaved: Your game has been saved. + freeplayLevelComplete: Level has been completed! - # The "Upgrades" window - shop: - title: Upgrades - buttonUnlock: Upgrade + # The "Upgrades" window + shop: + title: Upgrades + buttonUnlock: Upgrade - # Gets replaced to e.g. "Tier IX" - tier: Tier + # Gets replaced to e.g. "Tier IX" + tier: Tier - maximumLevel: MAXIMUM LEVEL (Speed x) + maximumLevel: MAXIMUM LEVEL (Speed x) - # The "Statistics" window - statistics: - title: Statistics - dataSources: - stored: - title: Stored - description: All shapes stored within the Hub. - produced: - title: Produced - description: All shapes produced within your factory, including intermediate products. - delivered: - title: Delivered - description: Shapes which are being delivered to the Hub. - noShapesProduced: No shapes have been produced so far. + # The "Statistics" window + statistics: + title: Statistics + dataSources: + stored: + title: Stored + description: All shapes stored within the Hub. + produced: + title: Produced + description: All shapes produced within your factory, including intermediate products. + delivered: + title: Delivered + description: Shapes which are being delivered to the Hub. + noShapesProduced: No shapes have been produced so far. - # Displays the shapes per second, e.g. '523 / s' - shapesDisplayUnits: - second: / s - minute: / m - hour: / h + # Displays the shapes per second, e.g. '523 / s' + shapesDisplayUnits: + second: / s + minute: / m + hour: / h - # Settings menu, when you press "ESC" - settingsMenu: - playtime: Playtime - buildingsPlaced: Buildings - beltsPlaced: Belts + # Settings menu, when you press "ESC" + settingsMenu: + playtime: Playtime + buildingsPlaced: Buildings + beltsPlaced: Belts - # Bottom left tutorial hints - tutorialHints: - title: Need help? - showHint: Show hint - hideHint: Close + # Bottom left tutorial hints + tutorialHints: + title: Need help? + showHint: Show hint + hideHint: Close - # When placing a blueprint - blueprintPlacer: - cost: Cost + # When placing a blueprint + blueprintPlacer: + cost: Cost - # Map markers - waypoints: - waypoints: Markers - hub: HUB - description: >- - Left-click a marker to jump to it, right-click to delete it.

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. + # Map markers + waypoints: + waypoints: Markers + 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. - # Shape viewer - shapeViewer: - title: Layers - empty: Empty - copyKey: Copy Key + # Shape viewer + shapeViewer: + title: Layers + empty: Empty + copyKey: Copy Key - # Interactive tutorial - interactiveTutorial: - title: Tutorial - hints: - 1_1_extractor: Place an extractor on top of a circle shape to extract it! - 1_2_conveyor: >- - Connect the extractor with a conveyor belt to your hub!

Tip: Click and drag the belt with your mouse! + # Interactive tutorial + interactiveTutorial: + title: Tutorial + hints: + 1_1_extractor: Place an extractor on top of a circle shape to extract it! + 1_2_conveyor: >- + Connect the extractor with a conveyor belt to your hub!

Tip: Click and drag the belt with your mouse! - 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. + 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. - 2_1_place_cutter: >- - Now place a Cutter to cut the circles in two halves!

- PS: The cutter always cuts from top to bottom regardless of its orientation. + 2_1_place_cutter: >- + Now place a Cutter to cut the circles in two halves!

+ PS: The cutter always cuts from top to bottom regardless of its orientation. - 2_2_place_trash: >- - The cutter can clog and stall!

- Use a trash to get rid of the currently (!) not needed waste. + 2_2_place_trash: >- + The cutter can clog and stall!

+ Use a trash to get rid of the currently (!) not needed waste. - 2_3_more_cutters: >- - Good job! Now place 2 more cutters to speed up this slow process!

- PS: Use the 0-9 hotkeys to access buildings faster! + 2_3_more_cutters: >- + Good job! Now place 2 more cutters to speed up this slow process!

+ PS: Use the 0-9 hotkeys to access buildings faster! - 3_1_rectangles: >- - Now let's extract some rectangles! Build 4 extractors and connect them to the hub.

- PS: Hold SHIFT while dragging a belt to activate the belt planner! + 3_1_rectangles: >- + Now let's extract some rectangles! Build 4 extractors and connect them to the hub.

+ PS: Hold SHIFT while dragging a belt to activate the belt planner! - 21_1_place_quad_painter: >- - Place the quad painter and get some circles, white and red color! + 21_1_place_quad_painter: >- + Place the quad painter and get some circles, white and red color! - 21_2_switch_to_wires: >- - Switch to the wires layer by pressing E!

- Then connect all four inputs of the painter with cables! + 21_2_switch_to_wires: >- + Switch to the wires layer by pressing E!

+ Then connect all four inputs of the painter with cables! - 21_3_place_button: >- - Awesome! Now place a Switch and connect it with wires! + 21_3_place_button: >- + Awesome! Now place a Switch and connect it with wires! - 21_4_press_button: >- - Press the switch to make it emit a truthy signal and thus activate the painter.

- PS: You don't have to connect all inputs! Try wiring only two. + 21_4_press_button: >- + Press the switch to make it emit a truthy signal and thus activate the painter.

+ PS: You don't have to connect all inputs! Try wiring only two. - # Connected miners - connectedMiners: - one_miner: 1 Extractor - n_miners: Extractors - limited_items: Limited to + # Connected miners + connectedMiners: + one_miner: 1 Extractor + n_miners: Extractors + limited_items: Limited to - # Pops up in the demo every few minutes - watermark: - title: Demo version - desc: Click here to see the advantages of the standalone version! - get_on_steam: Get on Steam + # Pops up in the demo every few minutes + watermark: + title: Demo version + desc: Click here to see the advantages of the standalone version! + get_on_steam: Get on Steam - standaloneAdvantages: - title: Get the full version! - no_thanks: No, thanks! + standaloneAdvantages: + title: Get the full version! + no_thanks: No, thanks! - points: - levels: - title: 12 New Levels - desc: For a total of 26 levels! + points: + levels: + title: 12 New Levels + desc: For a total of 26 levels! - buildings: - title: 18 New Buildings - desc: Fully automate your factory! + buildings: + title: 18 New Buildings + desc: Fully automate your factory! - savegames: - title: ∞ Savegames - desc: As many as your heart desires! + savegames: + title: ∞ Savegames + desc: As many as your heart desires! - upgrades: - title: ∞ Upgrade Tiers - desc: This demo version has only 5! + upgrades: + title: ∞ Upgrade Tiers + desc: This demo version has only 5! - markers: - title: ∞ Markers - desc: Never get lost in your factory! + markers: + title: ∞ Markers + desc: Never get lost in your factory! - wires: - title: Wires - desc: An entirely new dimension! + wires: + title: Wires + desc: An entirely new dimension! - darkmode: - title: Dark Mode - desc: Stop hurting your eyes! + darkmode: + title: Dark Mode + desc: Stop hurting your eyes! - support: - title: Support me - desc: I develop the game in my spare time! + support: + title: Support me + desc: I develop the game in my spare time! # All shop upgrades shopUpgrades: - belt: - name: Belts, Distributor & Tunnels - description: Speed x → x - miner: - name: Extraction - description: Speed x → x - processors: - name: Cutting, Rotating & Stacking - description: Speed x → x - painting: - name: Mixing & Painting - description: Speed x → x + belt: + name: Belts, Distributor & Tunnels + description: Speed x → x + miner: + name: Extraction + description: Speed x → x + processors: + name: Cutting, Rotating & Stacking + description: Speed x → x + painting: + name: Mixing & Painting + description: Speed x → x # Buildings and their name / description buildings: - hub: - deliver: Deliver - toUnlock: to unlock - levelShortcut: LVL - endOfDemo: End of Demo + hub: + deliver: Deliver + toUnlock: to unlock + levelShortcut: LVL + endOfDemo: End of Demo - belt: - default: - name: &belt Conveyor Belt - description: Transports items, hold and drag to place multiple. + belt: + default: + name: &belt Conveyor Belt + description: Transports items, hold and drag to place multiple. - # Internal name for the Extractor - miner: - default: - name: &miner Extractor - description: Place over a shape or color to extract it. + # Internal name for the Extractor + miner: + default: + name: &miner Extractor + description: Place over a shape or color to extract it. - chainable: - name: Extractor (Chain) - description: Place over a shape or color to extract it. Can be chained. + chainable: + name: Extractor (Chain) + description: Place over a shape or color to extract it. Can be chained. - # Internal name for the Tunnel - underground_belt: - default: - name: &underground_belt Tunnel - description: Allows you to tunnel resources under buildings and belts. + # Internal name for the Tunnel + underground_belt: + default: + name: &underground_belt Tunnel + description: Allows you to tunnel resources under buildings and belts. - tier2: - name: Tunnel Tier II - description: Allows you to tunnel resources under buildings and belts. + tier2: + name: Tunnel Tier II + description: Allows you to tunnel resources under buildings and belts. - # Balancer - balancer: - default: - name: &balancer Balancer - description: Multifunctional - Evenly distributes all inputs onto all outputs. + # Balancer + balancer: + default: + name: &balancer Balancer + description: Multifunctional - Evenly distributes all inputs onto all outputs. - merger: - name: Merger (compact) - description: Merges two conveyor belts into one. + merger: + name: Merger (compact) + description: Merges two conveyor belts into one. - merger-inverse: - name: Merger (compact) - description: Merges two conveyor belts into one. + merger-inverse: + name: Merger (compact) + description: Merges two conveyor belts into one. - splitter: - name: Splitter (compact) - description: Splits one conveyor belt into two. + splitter: + name: Splitter (compact) + description: Splits one conveyor belt into two. - splitter-inverse: - name: Splitter (compact) - description: Splits one conveyor belt into two. + splitter-inverse: + name: Splitter (compact) + description: Splits one conveyor belt into two. - cutter: - default: - name: &cutter Cutter - description: Cuts shapes from top to bottom and outputs both halves. If you use only one part, be sure to destroy the other part or it will clog and stall! - quad: - name: Cutter (Quad) - description: Cuts shapes into four parts. If you use only one part, be sure to destroy the other parts or it will clog and stall! + cutter: + default: + name: &cutter Cutter + description: Cuts shapes from top to bottom and outputs both halves. If you use only one part, be sure to destroy the other part or it will clog and stall! + quad: + name: Cutter (Quad) + description: Cuts shapes into four parts. If you use only one part, be sure to destroy the other parts or it will clog and stall! + + rotater: + default: + name: &rotater Rotator + description: Rotates shapes clockwise by 90 degrees. + ccw: + name: Rotator (CCW) + description: Rotates shapes counter-clockwise by 90 degrees. + rotate180: + name: Rotator (180°) + description: Rotates shapes by 180 degrees. + + stacker: + default: + name: &stacker Stacker + description: Combines its inputs, on the same layer if possible, otherwise the right input is stacked on top of the left input. + + mixer: + default: + name: &mixer Color Mixer + description: Mixes two colors using additive blending. + + painter: + default: + name: &painter Painter + description: &painter_desc Paints the whole shape on the left input with the color from the top input. + + mirrored: + name: *painter + description: Paints the whole shape on the left input with the color from the bottom input. + + double: + name: Painter (Double) + description: Colors the shapes on the left inputs with the color from the top input. + + quad: + name: Painter (Quad) + description: Allows you to color each quadrant of the shape individually. Only slots with a truthy signal on the wires layer will be painted! + + trash: + default: + name: &trash Trash + description: Accepts inputs from all sides and destroys them. Forever. + + storage: + default: + name: &storage Storage + description: Stores excess items, up to a given capacity. Prioritizes the left output and can be used as an overflow gate. + + wire: + default: + name: &wire Wire + description: &wire_desc Transfers signals, which can be items, colours or booleans (1 or 0). Differently-coloured wires do not connect to each other. + + second: + name: *wire + description: *wire_desc + + wire_tunnel: + default: + name: &wire_tunnel Wire Crossing + description: Allows two wires to cross without connecting to each other. + + constant_signal: + default: + name: &constant_signal Constant Signal + description: Emits a constant signal, which can be either a shape, color or boolean (1 or 0). + + lever: + default: + name: &lever Switch + description: Can be toggled to emit a boolean signal (1 or 0) on the wires layer, which can then be used to control components, for example an item filter. + + logic_gate: + default: + name: AND Gate + description: Emits a boolean "1" if both inputs are truthy. (Truthy means shape, color or boolean "1") + not: + name: NOT Gate + description: Emits a boolean "1" if the input is not truthy. (Truthy means shape, color or boolean "1") + xor: + name: XOR Gate + description: Emits a boolean "1" if one of the inputs is truthy, but not both. (Truthy means shape, color or boolean "1") + or: + name: OR Gate + description: Emits a boolean "1" if one of the inputs is truthy. (Truthy means shape, color or boolean "1") + + transistor: + default: + name: &transistor Transistor + description: &transistor_desc Forwards the bottom input if the side input is truthy (a shape, color or "1"). + + mirrored: + name: *transistor + description: *transistor_desc + + filter: + default: + name: &filter Filter + description: Connect a signal to route all matching items to the top and the remaining to the right. Can be controlled with boolean signals too. + + display: + default: + name: &display Display + description: Connect a signal to show it on the display - It can be a shape, color or boolean. + + reader: + default: + name: &reader Belt Reader + description: Allows to measure the average belt throughput. Outputs the last read item on the wires layer (once unlocked). + + analyzer: + default: + name: &analyzer Shape Analyzer + description: Analyzes the top right quadrant of the lowest layer of the shape and returns its shape and color. + + comparator: + default: + name: &comparator Compare + description: Returns boolean "1" if both signals are exactly equal. Can compare shapes, colors and booleans. + + virtual_processor: + default: + name: &virtual_processor Virtual Cutter + description: Virtually cuts the shape into two halves. rotater: - default: - name: &rotater Rotator - description: Rotates shapes clockwise by 90 degrees. - ccw: - name: Rotator (CCW) - description: Rotates shapes counter-clockwise by 90 degrees. - rotate180: - name: Rotator (180°) - description: Rotates shapes by 180 degrees. + name: Virtual Rotator + description: Virtually rotates the shape clockwise. + + unstacker: + name: Virtual Unstacker + description: Virtually extracts the topmost layer to the right output and the remaining ones to the left. stacker: - default: - name: &stacker Stacker - description: Combines its inputs, on the same layer if possible, otherwise the right input is stacked on top of the left input. - - mixer: - default: - name: &mixer Color Mixer - description: Mixes two colors using additive blending. + name: Virtual Stacker + description: Virtually stacks the right shape onto the left. painter: - default: - name: &painter Painter - description: &painter_desc Paints the whole shape on the left input with the color from the top input. + name: Virtual Painter + description: Virtually paints the shape from the bottom input with the color on the right input. - mirrored: - name: *painter - description: Paints the whole shape on the left input with the color from the bottom input. - - double: - name: Painter (Double) - description: Colors the shapes on the left inputs with the color from the top input. - - quad: - name: Painter (Quad) - description: Allows you to color each quadrant of the shape individually. Only slots with a truthy signal on the wires layer will be painted! - - trash: - default: - name: &trash Trash - description: Accepts inputs from all sides and destroys them. Forever. - - storage: - default: - name: &storage Storage - description: Stores excess items, up to a given capacity. Prioritizes the left output and can be used as an overflow gate. - - wire: - default: - name: &wire Wire - description: &wire_desc Transfers signals, which can be items, colours or booleans (1 or 0). Differently-coloured wires do not connect to each other. - - second: - name: *wire - description: *wire_desc - - wire_tunnel: - default: - name: &wire_tunnel Wire Crossing - description: Allows two wires to cross without connecting to each other. - - constant_signal: - default: - name: &constant_signal Constant Signal - description: Emits a constant signal, which can be either a shape, color or boolean (1 or 0). - - lever: - default: - name: &lever Switch - description: Can be toggled to emit a boolean signal (1 or 0) on the wires layer, which can then be used to control components, for example an item filter. - - logic_gate: - default: - name: AND Gate - description: Emits a boolean "1" if both inputs are truthy. (Truthy means shape, color or boolean "1") - not: - name: NOT Gate - description: Emits a boolean "1" if the input is not truthy. (Truthy means shape, color or boolean "1") - xor: - name: XOR Gate - description: Emits a boolean "1" if one of the inputs is truthy, but not both. (Truthy means shape, color or boolean "1") - or: - name: OR Gate - description: Emits a boolean "1" if one of the inputs is truthy. (Truthy means shape, color or boolean "1") - - transistor: - default: - name: &transistor Transistor - description: &transistor_desc Forwards the bottom input if the side input is truthy (a shape, color or "1"). - - mirrored: - name: *transistor - description: *transistor_desc - - filter: - default: - name: &filter Filter - description: Connect a signal to route all matching items to the top and the remaining to the right. Can be controlled with boolean signals too. - - display: - default: - name: &display Display - description: Connect a signal to show it on the display - It can be a shape, color or boolean. - - reader: - default: - name: &reader Belt Reader - description: Allows to measure the average belt throughput. Outputs the last read item on the wires layer (once unlocked). - - analyzer: - default: - name: &analyzer Shape Analyzer - description: Analyzes the top right quadrant of the lowest layer of the shape and returns its shape and color. - - comparator: - default: - name: &comparator Compare - description: Returns boolean "1" if both signals are exactly equal. Can compare shapes, colors and booleans. - - virtual_processor: - default: - name: &virtual_processor Virtual Cutter - description: Virtually cuts the shape into two halves. - - rotater: - name: Virtual Rotator - description: Virtually rotates the shape clockwise. - - unstacker: - name: Virtual Unstacker - description: Virtually extracts the topmost layer to the right output and the remaining ones to the left. - - stacker: - name: Virtual Stacker - description: Virtually stacks the right shape onto the left. - - painter: - name: Virtual Painter - description: Virtually paints the shape from the bottom input with the color on the right input. - - item_producer: - default: - name: Item Producer - description: Available in sandbox mode only, outputs the given signal from the wires layer on the regular layer. + item_producer: + default: + name: Item Producer + description: Available in sandbox mode only, outputs the given signal from the wires layer on the regular layer. storyRewards: - # Those are the rewards gained from completing the store - reward_cutter_and_trash: - title: Cutting Shapes - desc: >- - You just unlocked the cutter, which cuts shapes in half from top to bottom regardless of its orientation!

Be sure to get rid of the waste, or - otherwise it will clog and stall - For this purpose I have given you the trash, which destroys everything you put into it! + # Those are the rewards gained from completing the store + reward_cutter_and_trash: + title: Cutting Shapes + desc: >- + You just unlocked the cutter, which cuts shapes in half from top to bottom regardless of its orientation!

Be sure to get rid of the waste, or + otherwise it will clog and stall - For this purpose I have given you the trash, which destroys everything you put into it! - reward_rotater: - title: Rotating - desc: The rotator has been unlocked! It rotates shapes clockwise by 90 degrees. + reward_rotater: + title: Rotating + desc: The rotator has been unlocked! It rotates shapes clockwise by 90 degrees. - reward_painter: - title: Painting - 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, there is a colorblind mode in the settings! + reward_painter: + title: Painting + 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, there is a colorblind mode in the settings! - reward_mixer: - title: Color Mixing - desc: The mixer has been unlocked - It mixes two colors using additive blending! + reward_mixer: + title: Color Mixing + desc: The mixer has been unlocked - It mixes two colors using additive blending! - reward_stacker: - title: Stacker - desc: >- - You can now combine shapes with the stacker! 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! + reward_stacker: + title: Stacker + desc: >- + You can now combine shapes with the stacker! 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! - reward_balancer: - title: Balancer - desc: The multifunctional balancer has been unlocked - It can be used to build bigger factories by splitting and merging items onto multiple belts! + reward_balancer: + title: Balancer + desc: The multifunctional balancer has been unlocked - It can be used to build bigger factories by splitting and merging items onto multiple belts! - reward_tunnel: - title: Tunnel - desc: The tunnel has been unlocked - You can now tunnel items below belts and buildings with it! + reward_tunnel: + title: Tunnel + desc: The tunnel has been unlocked - You can now tunnel items below belts and buildings with it! - reward_rotater_ccw: - title: CCW Rotating - desc: >- - You have unlocked a variant of the rotator - It allows you to rotate shapes counter-clockwise! To build it, select the rotator and - press 'T' to cycle through its variants! + reward_rotater_ccw: + title: CCW Rotating + desc: >- + You have unlocked a variant of the rotator - It allows you to rotate shapes counter-clockwise! To build it, select the rotator and + press 'T' to cycle through its variants! - reward_miner_chainable: - title: Chaining Extractor - desc: >- - You have unlocked the chained extractor! It can forward its resources to other extractors so you can more efficiently extract resources!

- PS: The old extractor has been replaced in your toolbar now! + reward_miner_chainable: + title: Chaining Extractor + desc: >- + You have unlocked the chained extractor! It can forward its resources to other extractors so you can more efficiently extract resources!

+ PS: The old extractor has been replaced in your toolbar now! - 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! + 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! - reward_merger: - title: Compact Merger - desc: >- - You have unlocked a merger variant of the balancer - It accepts two inputs and merges them into one belt! + reward_merger: + title: Compact Merger + desc: >- + You have unlocked a merger variant of the balancer - It accepts two inputs and merges them into one belt! - reward_splitter: - title: Compact Splitter - desc: >- - You have unlocked a splitter variant of the balancer - It accepts one input and splits them into two! + reward_splitter: + title: Compact Splitter + desc: >- + You have unlocked a splitter variant of the balancer - It accepts one input and splits them into two! - reward_belt_reader: - title: Belt reader - desc: >- - You have now unlocked the belt reader! It allows you to measure the throughput of a belt.

And wait until you unlock wires - then it gets really useful! + reward_belt_reader: + title: Belt reader + desc: >- + You have now unlocked the belt reader! It allows you to measure the throughput of a belt.

And wait until you unlock wires - then it gets really useful! - reward_cutter_quad: - title: Quad Cutter - desc: You have unlocked a variant of the cutter - It allows you to cut shapes in four parts instead of just two! + reward_cutter_quad: + title: Quad Cutter + desc: You have unlocked a variant of the cutter - It allows you to cut shapes in four parts instead of just two! - reward_painter_double: - title: Double Painting - desc: >- - You have unlocked a variant of the painter - It works similar to the regular painter but processes two shapes at once, consuming just one color - instead of two! + reward_painter_double: + title: Double Painting + desc: >- + You have unlocked a variant of the painter - It works similar to the regular painter but processes two shapes at once, consuming just one color + instead of two! - reward_storage: - title: Storage - desc: >- - You have unlocked the storage building - It allows you to store items up to a given capacity!

- It priorities the left output, so you can also use it as an overflow gate! + reward_storage: + title: Storage + desc: >- + You have unlocked the storage building - It allows you to store items up to a given capacity!

+ It priorities the left output, so you can also use it as an overflow gate! - 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). + 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). - reward_rotater_180: - title: Rotator (180°) - desc: You just unlocked the 180 degrees rotator! - It allows you to rotate a shape by 180 degrees (Surprise! :D) + reward_rotater_180: + title: Rotator (180°) + desc: You just unlocked the 180 degrees rotator! - It allows you to rotate a shape by 180 degrees (Surprise! :D) - reward_wires_painter_and_levers: - title: >- - Wires & Quad Painter - desc: >- - You just unlocked the Wires Layer: It is a separate layer on top of the regular layer and introduces a lot of new mechanics!

- For the beginning I unlocked you the Quad Painter - Connect the slots you would like to paint with on the wires layer!

- To switch to the wires layer, press E.

- PS: Enable hints in the settings to activate the wires tutorial! + reward_wires_painter_and_levers: + title: >- + Wires & Quad Painter + desc: >- + You just unlocked the Wires Layer: It is a separate layer on top of the regular layer and introduces a lot of new mechanics!

+ For the beginning I unlocked you the Quad Painter - Connect the slots you would like to paint with on the wires layer!

+ To switch to the wires layer, press E.

+ PS: Enable hints in the settings to activate the wires tutorial! - reward_filter: - title: >- - Item Filter - desc: >- - You unlocked the Item Filter! It will route items either to the top or the right output depending on whether they match the signal from the wires layer or not.

- You can also pass in a boolean signal (1 or 0) to entirely activate or disable it. + reward_filter: + title: >- + Item Filter + desc: >- + You unlocked the Item Filter! It will route items either to the top or the right output depending on whether they match the signal from the wires layer or not.

+ You can also pass in a boolean signal (1 or 0) to entirely activate or disable it. - reward_display: - title: Display - desc: >- - You have unlocked the Display - Connect a signal on the wires layer to visualize it!

- PS: Did you notice the belt reader and storage output their last read item? Try showing it on a display! + reward_display: + title: Display + desc: >- + You have unlocked the Display - Connect a signal on the wires layer to visualize it!

+ PS: Did you notice the belt reader and storage output their last read item? Try showing it on a display! - reward_constant_signal: - title: Constant Signal - desc: >- - You unlocked the constant signal building on the wires layer! This is useful to connect it to item filters for example.

- The constant signal can emit a shape, color or boolean (1 or 0). + reward_constant_signal: + title: Constant Signal + desc: >- + You unlocked the constant signal building on the wires layer! This is useful to connect it to item filters for example.

+ The constant signal can emit a shape, color or boolean (1 or 0). - reward_logic_gates: - title: Logic Gates - desc: >- - You unlocked logic gates! You don't have to be excited about this, but it's actually super cool!

- With logic gates you can now compute AND, OR, XOR and NOT operations.

- As a bonus on top I also just gave you a transistor! + reward_logic_gates: + title: Logic Gates + desc: >- + You unlocked logic gates! You don't have to be excited about this, but it's actually super cool!

+ With logic gates you can now compute AND, OR, XOR and NOT operations.

+ As a bonus on top I also just gave you a transistor! - reward_virtual_processing: - title: Virtual Processing - desc: >- - I just gave a whole bunch of new buildings which allow you to simulate the processing of shapes!

- You can now simulate a cutter, rotator, stacker and more on the wires layer! - With this you now have three options to continue the game:

- - Build an automated machine to create any possible shape requested by the HUB (I recommend to try it!).

- - Build something cool with wires.

- - Continue to play normally.

- Whatever you choose, remember to have fun! + reward_virtual_processing: + title: Virtual Processing + desc: >- + I just gave a whole bunch of new buildings which allow you to simulate the processing of shapes!

+ You can now simulate a cutter, rotator, stacker and more on the wires layer! + With this you now have three options to continue the game:

+ - Build an automated machine to create any possible shape requested by the HUB (I recommend to try it!).

+ - Build something cool with wires.

+ - Continue to play normally.

+ Whatever you choose, remember to have fun! - # Special reward, which is shown when there is no reward actually - no_reward: - title: Next level - desc: >- - This level gave you no reward, but the next one will!

PS: Better not destroy your existing factory - You'll need all those shapes later to - unlock upgrades! + # Special reward, which is shown when there is no reward actually + no_reward: + title: Next level + desc: >- + This level gave you no reward, but the next one will!

PS: Better not destroy your existing factory - You'll need all those shapes later to + unlock upgrades! - no_reward_freeplay: - title: Next level - desc: >- - Congratulations! + no_reward_freeplay: + title: Next level + desc: >- + Congratulations! - reward_freeplay: - title: Freeplay - desc: >- - You did it! You unlocked the free-play mode! This means that shapes are now randomly generated!

- Since the hub will require a throughput from now on, I highly recommend to build a machine which automatically delivers the requested shape!

- The HUB outputs the requested shape on the wires layer, so all you have to do is to analyze it and automatically configure your factory based on that. + reward_freeplay: + title: Freeplay + desc: >- + You did it! You unlocked the free-play mode! This means that shapes are now randomly generated!

+ Since the hub will require a throughput from now on, I highly recommend to build a machine which automatically delivers the requested shape!

+ The HUB outputs the requested shape on the wires layer, so all you have to do is to analyze it and automatically configure your factory based on that. - reward_demo_end: - title: End of Demo - desc: >- - You have reached the end of the demo version! + reward_demo_end: + title: End of Demo + desc: >- + You have reached the end of the demo version! settings: - title: Settings - categories: - general: General - userInterface: User Interface - advanced: Advanced - performance: Performance + title: Settings + categories: + general: General + userInterface: User Interface + advanced: Advanced + performance: Performance - versionBadges: - dev: Development - staging: Staging - prod: Production - buildDate: Built + versionBadges: + dev: Development + staging: Staging + prod: Production + buildDate: Built - rangeSliderPercentage: % + rangeSliderPercentage: % - labels: - uiScale: - title: Interface scale - description: >- - Changes the size of the user interface. The interface will still scale based on your device's resolution, but this setting controls the amount of scaling. - scales: - super_small: Super small - small: Small - regular: Regular - large: Large - huge: Huge + labels: + uiScale: + title: Interface scale + description: >- + Changes the size of the user interface. The interface will still scale based on your device's resolution, but this setting controls the amount of scaling. + scales: + super_small: Super small + small: Small + regular: Regular + large: Large + huge: Huge - autosaveInterval: - title: Autosave Interval - description: >- - Controls how often the game saves automatically. You can also disable it entirely here. + autosaveInterval: + title: Autosave Interval + description: >- + Controls how often the game saves automatically. You can also disable it entirely here. - intervals: - one_minute: 1 Minute - two_minutes: 2 Minutes - five_minutes: 5 Minutes - ten_minutes: 10 Minutes - twenty_minutes: 20 Minutes - disabled: Disabled + intervals: + one_minute: 1 Minute + two_minutes: 2 Minutes + five_minutes: 5 Minutes + ten_minutes: 10 Minutes + twenty_minutes: 20 Minutes + disabled: Disabled - scrollWheelSensitivity: - title: Zoom sensitivity - description: >- - Changes how sensitive the zoom is (Either mouse wheel or trackpad). - sensitivity: - super_slow: Super slow - slow: Slow - regular: Regular - fast: Fast - super_fast: Super fast + scrollWheelSensitivity: + title: Zoom sensitivity + description: >- + Changes how sensitive the zoom is (Either mouse wheel or trackpad). + sensitivity: + super_slow: Super slow + slow: Slow + regular: Regular + fast: Fast + super_fast: Super fast - movementSpeed: - title: Movement speed - description: >- - Changes how fast the view moves when using the keyboard or moving the mouse to the screen borders. - speeds: - super_slow: Super slow - slow: Slow - regular: Regular - fast: Fast - super_fast: Super Fast - extremely_fast: Extremely Fast + movementSpeed: + title: Movement speed + description: >- + Changes how fast the view moves when using the keyboard or moving the mouse to the screen borders. + speeds: + super_slow: Super slow + slow: Slow + regular: Regular + fast: Fast + super_fast: Super Fast + extremely_fast: Extremely Fast - language: - title: Language - description: >- - Change the language. All translations are user-contributed and might be incomplete! + language: + title: Language + description: >- + Change the language. All translations are user-contributed and might be incomplete! - enableColorBlindHelper: - title: Color Blind Mode - description: >- - Enables various tools which allow you to play the game if you are color blind. + enableColorBlindHelper: + title: Color Blind Mode + description: >- + Enables various tools which allow you to play the game if you are color blind. - fullscreen: - title: Fullscreen - description: >- - It is recommended to play the game in fullscreen to get the best experience. Only available in the standalone. + fullscreen: + title: Fullscreen + description: >- + It is recommended to play the game in fullscreen to get the best experience. Only available in the standalone. - soundsMuted: - title: Mute Sounds - description: >- - If enabled, mutes all sound effects. + soundsMuted: + title: Mute Sounds + description: >- + If enabled, mutes all sound effects. - musicMuted: - title: Mute Music - description: >- - If enabled, mutes all music. + musicMuted: + title: Mute Music + description: >- + If enabled, mutes all music. - soundVolume: - title: Sound Volume - description: >- - Set the volume for sound effects + soundVolume: + title: Sound Volume + description: >- + Set the volume for sound effects - musicVolume: - title: Music Volume - description: >- - Set the volume for music + musicVolume: + title: Music Volume + description: >- + Set the volume for music - theme: - title: Game theme - description: >- - Choose the game theme (light / dark). - themes: - dark: Dark - light: Light + theme: + title: Game theme + description: >- + Choose the game theme (light / dark). + themes: + dark: Dark + light: Light - refreshRate: - title: Tick Rate - description: >- - This determines how many game ticks happen per second. In general, a higher tick rate means better precision but also worse performance. On lower tickrates, the throughput may not be - exact. + refreshRate: + title: Tick Rate + description: >- + This determines how many game ticks happen per second. In general, a higher tick rate means better precision but also worse performance. On lower tickrates, the throughput may not be + exact. - alwaysMultiplace: - title: Multiplace - description: >- - If enabled, all buildings will stay selected after placement until you cancel it. This is equivalent to constantly holding SHIFT. + alwaysMultiplace: + title: Multiplace + description: >- + If enabled, all buildings will stay selected after placement until you cancel it. This is equivalent to constantly holding SHIFT. - offerHints: - title: Hints & Tutorials - description: >- - Whether to offer hints and tutorials while playing. Also hides certain UI elements up to a given level to make it easier to get into the game. + offerHints: + title: Hints & Tutorials + description: >- + Whether to offer hints and tutorials while playing. Also hides certain UI elements up to a given level to make it easier to get into the game. - enableTunnelSmartplace: - title: Smart Tunnels - description: >- - When enabled, placing tunnels will automatically remove unnecessary belts. This also enables you to drag tunnels and excess tunnels will get removed. + enableTunnelSmartplace: + title: Smart Tunnels + description: >- + When enabled, placing tunnels will automatically remove unnecessary belts. This also enables you to drag tunnels and excess tunnels will get removed. - vignette: - title: Vignette - description: >- - Enables the vignette, which darkens the screen corners and makes text easier to read. + vignette: + title: Vignette + description: >- + Enables the vignette, which darkens the screen corners and makes text easier to read. - rotationByBuilding: - title: Rotation by building type - description: >- - Each building type remembers the rotation you last set it to individually. This may be more comfortable if you frequently switch between placing different building types. + rotationByBuilding: + title: Rotation by building type + description: >- + Each building type remembers the rotation you last set it to individually. This may be more comfortable if you frequently switch between placing different building types. - compactBuildingInfo: - title: Compact Building Infos - description: >- - Shortens info boxes for buildings by only showing their ratios. Otherwise a description and image is shown. + compactBuildingInfo: + title: Compact Building Infos + description: >- + Shortens info boxes for buildings by only showing their ratios. Otherwise a description and image is shown. - disableCutDeleteWarnings: - title: Disable Cut/Delete Warnings - description: >- - Disables the warning dialogues brought up when cutting/deleting more than 100 entities. + disableCutDeleteWarnings: + title: Disable Cut/Delete Warnings + description: >- + Disables the warning dialogues brought up when cutting/deleting more than 100 entities. - lowQualityMapResources: - title: Low Quality Map Resources - description: >- - Simplifies the rendering of resources on the map when zoomed in to improve performance. - It even looks cleaner, so be sure to try it out! + lowQualityMapResources: + title: Low Quality Map Resources + description: >- + Simplifies the rendering of resources on the map when zoomed in to improve performance. + It even looks cleaner, so be sure to try it out! - disableTileGrid: - title: Disable Grid - description: >- - Disabling the tile grid can help with the performance. This also makes the game look cleaner! + disableTileGrid: + title: Disable Grid + description: >- + Disabling the tile grid can help with the performance. This also makes the game look cleaner! - clearCursorOnDeleteWhilePlacing: - title: Clear Cursor on Right Click - description: >- - Enabled by default, clears the cursor whenever you right click while you have a building selected for placement. If disabled, you can delete buildings by right-clicking while placing - a building. + clearCursorOnDeleteWhilePlacing: + title: Clear Cursor on Right Click + description: >- + Enabled by default, clears the cursor whenever you right click while you have a building selected for placement. If disabled, you can delete buildings by right-clicking while placing + a building. - lowQualityTextures: - title: Low quality textures (Ugly) - description: >- - Uses low quality textures to save performance. This will make the game look very ugly! + lowQualityTextures: + title: Low quality textures (Ugly) + description: >- + Uses low quality textures to save performance. This will make the game look very ugly! - displayChunkBorders: - title: Display Chunk Borders - description: >- - The game is divided into chunks of 16x16 tiles, if this setting is enabled the borders of each chunk are displayed. + displayChunkBorders: + title: Display Chunk Borders + description: >- + The game is divided into chunks of 16x16 tiles, if this setting is enabled the borders of each chunk are displayed. - pickMinerOnPatch: - title: Select extractor on resource patch - description: >- - Enabled by default, selects the extractor if you use the pipette when hovering a resource patch. + pickMinerOnPatch: + title: Select extractor on resource patch + description: >- + Enabled by default, selects the extractor if you use the pipette when hovering a resource patch. - simplifiedBelts: - title: Simplified Belts (Ugly) - description: >- - Does not render belt items except when hovering the belt to save performance. I do not recommend to play with this setting if you do not absolutely need the performance. + simplifiedBelts: + title: Simplified Belts (Ugly) + description: >- + Does not render belt items except when hovering the belt to save performance. I do not recommend to play with this setting if you do not absolutely need the performance. - enableMousePan: - title: Screen Edge Panning - description: >- - Allows panning the map by moving the cursor to the edges of the screen. The scroll speed depends on the Movement Speed setting. + enableMousePan: + title: Screen Edge Panning + description: >- + Allows panning the map by moving the cursor to the edges of the screen. The scroll speed depends on the Movement Speed setting. - zoomToCursor: - title: Zoom towards Cursor - description: >- - If activated the zoom will happen in the direction of your mouse position, otherwise in the middle of the screen. + zoomToCursor: + title: Zoom towards Cursor + description: >- + If activated the zoom will happen in the direction of your mouse position, otherwise in the middle of the screen. - mapResourcesScale: - title: Map Resources Size - description: >- - Controls the size of the shapes on the map overview (when zooming out). + mapResourcesScale: + title: Map Resources Size + description: >- + Controls the size of the shapes on the map overview (when zooming out). keybindings: - title: Keybindings - hint: >- - Tip: Be sure to make use of CTRL, SHIFT and ALT! They enable different placement options. + title: Keybindings + hint: >- + Tip: Be sure to make use of CTRL, SHIFT and ALT! They enable different placement options. - resetKeybindings: Reset + resetKeybindings: Reset - categoryLabels: - general: Application - ingame: Game - navigation: Navigating - placement: Placement - massSelect: Mass Select - buildings: Building Shortcuts - placementModifiers: Placement Modifiers + categoryLabels: + general: Application + ingame: Game + navigation: Navigating + placement: Placement + massSelect: Mass Select + buildings: Building Shortcuts + placementModifiers: Placement Modifiers - mappings: - confirm: Confirm - back: Back - mapMoveUp: Move Up - mapMoveRight: Move Right - mapMoveDown: Move Down - mapMoveLeft: Move Left - mapMoveFaster: Move Faster - centerMap: Center Map + mappings: + confirm: Confirm + back: Back + mapMoveUp: Move Up + mapMoveRight: Move Right + mapMoveDown: Move Down + mapMoveLeft: Move Left + mapMoveFaster: Move Faster + centerMap: Center Map - mapZoomIn: Zoom in - mapZoomOut: Zoom out - createMarker: Create Marker + mapZoomIn: Zoom in + mapZoomOut: Zoom out + createMarker: Create Marker - menuOpenShop: Upgrades - menuOpenStats: Statistics - menuClose: Close Menu + menuOpenShop: Upgrades + menuOpenStats: Statistics + menuClose: Close Menu - toggleHud: Toggle HUD - toggleFPSInfo: Toggle FPS and Debug Info - switchLayers: Switch layers - exportScreenshot: Export whole Base as Image + toggleHud: Toggle HUD + toggleFPSInfo: Toggle FPS and Debug Info + switchLayers: Switch layers + exportScreenshot: Export whole Base as Image - # --- Do not translate the values in this section - belt: *belt - balancer: *balancer - underground_belt: *underground_belt - miner: *miner - cutter: *cutter - rotater: *rotater - stacker: *stacker - mixer: *mixer - painter: *painter - trash: *trash - storage: *storage - wire: *wire - constant_signal: *constant_signal - logic_gate: Logic Gate - lever: *lever - filter: *filter - wire_tunnel: *wire_tunnel - display: *display - reader: *reader - virtual_processor: *virtual_processor - transistor: *transistor - analyzer: *analyzer - comparator: *comparator - item_producer: Item Producer (Sandbox) - # --- + # --- Do not translate the values in this section + belt: *belt + balancer: *balancer + underground_belt: *underground_belt + miner: *miner + cutter: *cutter + rotater: *rotater + stacker: *stacker + mixer: *mixer + painter: *painter + trash: *trash + storage: *storage + wire: *wire + constant_signal: *constant_signal + logic_gate: Logic Gate + lever: *lever + filter: *filter + wire_tunnel: *wire_tunnel + display: *display + reader: *reader + virtual_processor: *virtual_processor + transistor: *transistor + analyzer: *analyzer + comparator: *comparator + item_producer: Item Producer (Sandbox) + # --- - pipette: Pipette - rotateWhilePlacing: Rotate - rotateInverseModifier: >- - Modifier: Rotate CCW instead - cycleBuildingVariants: Cycle Variants - confirmMassDelete: Delete area - pasteLastBlueprint: Paste last blueprint - cycleBuildings: Cycle Buildings - lockBeltDirection: Enable belt planner - switchDirectionLockSide: >- - Planner: Switch side - copyWireValue: >- - Wires: Copy value below cursor - massSelectStart: Hold and drag to start - massSelectSelectMultiple: Select multiple areas - massSelectCopy: Copy area - massSelectCut: Cut area + pipette: Pipette + rotateWhilePlacing: Rotate + rotateInverseModifier: >- + Modifier: Rotate CCW instead + cycleBuildingVariants: Cycle Variants + confirmMassDelete: Delete area + pasteLastBlueprint: Paste last blueprint + cycleBuildings: Cycle Buildings + lockBeltDirection: Enable belt planner + switchDirectionLockSide: >- + Planner: Switch side + copyWireValue: >- + Wires: Copy value below cursor + massSelectStart: Hold and drag to start + massSelectSelectMultiple: Select multiple areas + massSelectCopy: Copy area + massSelectCut: Cut area - placementDisableAutoOrientation: Disable automatic orientation - placeMultiple: Stay in placement mode - placeInverse: Invert automatic belt orientation + placeBuilding: Place Building + placementDisableAutoOrientation: Disable automatic orientation + placeMultiple: Stay in placement mode + placeInverse: Invert automatic belt orientation about: - title: About this Game - body: >- - This game is open source and developed by Tobias Springer (this is me).

+ title: About this Game + body: >- + This game is open source and developed by Tobias Springer (this is me).

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

+ If you want to contribute, check out shapez.io on GitHub.

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

+ 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.

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

- Finally, huge thanks to my best friend Niklas - Without our Factorio sessions, this game would never have existed. + Finally, huge thanks to my best friend Niklas - Without our Factorio sessions, this game would never have existed. changelog: - title: 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 + features: + restoringGames: Restoring savegames + importingGames: Importing savegames + oneGameLimit: Limited to one savegame + customizeKeybindings: Customizing Keybindings + exportingBase: Exporting whole Base as Image - settingNotAvailable: Not available in the demo. + settingNotAvailable: Not available in the demo. tips: - - The hub will accept any input, not just the current shape! - - Make sure your factories are modular - it will pay out! - - Don't build too close to the hub, or it will be a mess! - - If stacking does not work, try switching the inputs. - - You can toggle the belt planner direction by pressing R. - - Holding CTRL allows dragging of belts without auto-orientation. - - Ratios stay the same, as long as all upgrades are on the same Tier. - - Serial execution is more efficient than parallel. - - You will unlock more variants of buildings later in the game! - - You can use T to switch between different variants. - - Symmetry is key! - - You can weave different tiers of tunnels. - - Try to build compact factories - it will pay out! - - The painter has a mirrored variant which you can select with T - - Having the right building ratios will maximize efficiency. - - At maximum level, 5 extractors will fill a single belt. - - Don't forget about tunnels! - - You don't need to divide up items evenly for full efficiency. - - Holding SHIFT will activate the belt planner, letting you place long lines of belts easily. - - Cutters always cut vertically, regardless of their orientation. - - The storage buffer prioritises the left output. - - Invest time to build repeatable designs - it's worth it! - - Holding SHIFT lets you place multiple buildings at a time. - - You can hold ALT to invert the direction of placed belts. - - Efficiency is key! - - Shape patches that are further away from the hub are more complex. - - Machines have a limited speed, divide them up for maximum efficiency. - - Use balancers to maximize your efficiency. - - Organization is important. Try not to cross conveyors too much. - - Plan in advance, or it will be a mess! - - Don't remove your old factories! You'll need them to unlock upgrades. - - Try beating level 20 or 26 on your own before seeking for help! - - Don't complicate things, try to stay simple and you'll go far. - - You may need to reuse factories later in the game. Build your factories to be reusable. - - Sometimes, you can find a needed shape in the map without creating it with stackers. - - Full windmills/pinwheels can never spawn naturally. - - Color your shapes before cutting for maximum efficiency. - - With modules, space is merely a perception; a concern for mortal men. - - Make a separate blueprint factory. They're important for modules. - - Have a closer look at the color mixer, and your questions will be answered. - - Use CTRL + Click to select an area. - - Building too close to the hub can get in the way of later projects. - - The pin icon next to each shape in the upgrade list pins it to the screen. - - Mix all three primary colors to make white! - - You have an infinite map. Don't cramp your factory, expand! - - Also try Factorio! It's my favorite game. - - The quad cutter cuts clockwise, starting from the top right. - - You can download your savegames in the main menu! - - This game has a lot of useful keybindings! Be sure to check out the settings page. - - This game has a lot of settings, be sure to check them out! - - Your hub marker has a small compass that shows which direction it is in! - - To clear belts, cut the area and then paste it at the same location. - - Press F4 to show your FPS and Tick Rate. - - Press F4 twice to show the tile of your mouse and camera. - - You can click a pinned shape on the left side to unpin it. + - The hub will accept any input, not just the current shape! + - Make sure your factories are modular - it will pay out! + - Don't build too close to the hub, or it will be a mess! + - If stacking does not work, try switching the inputs. + - You can toggle the belt planner direction by pressing R. + - Holding CTRL allows dragging of belts without auto-orientation. + - Ratios stay the same, as long as all upgrades are on the same Tier. + - Serial execution is more efficient than parallel. + - You will unlock more variants of buildings later in the game! + - You can use T to switch between different variants. + - Symmetry is key! + - You can weave different tiers of tunnels. + - Try to build compact factories - it will pay out! + - The painter has a mirrored variant which you can select with T + - Having the right building ratios will maximize efficiency. + - At maximum level, 5 extractors will fill a single belt. + - Don't forget about tunnels! + - You don't need to divide up items evenly for full efficiency. + - Holding SHIFT will activate the belt planner, letting you place long lines of belts easily. + - Cutters always cut vertically, regardless of their orientation. + - The storage buffer prioritises the left output. + - Invest time to build repeatable designs - it's worth it! + - Holding SHIFT lets you place multiple buildings at a time. + - You can hold ALT to invert the direction of placed belts. + - Efficiency is key! + - Shape patches that are further away from the hub are more complex. + - Machines have a limited speed, divide them up for maximum efficiency. + - Use balancers to maximize your efficiency. + - Organization is important. Try not to cross conveyors too much. + - Plan in advance, or it will be a mess! + - Don't remove your old factories! You'll need them to unlock upgrades. + - Try beating level 20 or 26 on your own before seeking for help! + - Don't complicate things, try to stay simple and you'll go far. + - You may need to reuse factories later in the game. Build your factories to be reusable. + - Sometimes, you can find a needed shape in the map without creating it with stackers. + - Full windmills/pinwheels can never spawn naturally. + - Color your shapes before cutting for maximum efficiency. + - With modules, space is merely a perception; a concern for mortal men. + - Make a separate blueprint factory. They're important for modules. + - Have a closer look at the color mixer, and your questions will be answered. + - Use CTRL + Click to select an area. + - Building too close to the hub can get in the way of later projects. + - The pin icon next to each shape in the upgrade list pins it to the screen. + - Mix all three primary colors to make white! + - You have an infinite map. Don't cramp your factory, expand! + - Also try Factorio! It's my favorite game. + - The quad cutter cuts clockwise, starting from the top right. + - You can download your savegames in the main menu! + - This game has a lot of useful keybindings! Be sure to check out the settings page. + - This game has a lot of settings, be sure to check them out! + - Your hub marker has a small compass that shows which direction it is in! + - To clear belts, cut the area and then paste it at the same location. + - Press F4 to show your FPS and Tick Rate. + - Press F4 twice to show the tile of your mouse and camera. + - You can click a pinned shape on the left side to unpin it.