From a4060ad4849b0b9bad8598decf816bee338610e4 Mon Sep 17 00:00:00 2001 From: mini-bomba <55105495+mini-bomba@users.noreply.github.com> Date: Fri, 12 Jun 2020 21:19:13 +0200 Subject: [PATCH 01/25] Made About this game translatable --- src/js/states/about.js | 14 +++----------- translations/base-en.yaml | 6 ++++++ translations/base-pl.yaml | 6 ++++++ 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/js/states/about.js b/src/js/states/about.js index aa29ff87..900adc5a 100644 --- a/src/js/states/about.js +++ b/src/js/states/about.js @@ -15,17 +15,9 @@ export class AboutState extends TextualGameState { } getMainContentHTML() { - return ` - This game is open source and developed by Tobias Springer (this is me). -

- 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! -

- 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. - `; + return T.about.body + .replace("", THIRDPARTY_URLS.github) + .replace("", THIRDPARTY_URLS.discord); } onEnter() { diff --git a/translations/base-en.yaml b/translations/base-en.yaml index 7430f7dd..333693f9 100644 --- a/translations/base-en.yaml +++ b/translations/base-en.yaml @@ -729,6 +729,12 @@ keybindings: about: 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.

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

+ Finally, huge thanks to my best friend Niklas - Without our factorio sessions this game would never have existed. changelog: title: Changelog diff --git a/translations/base-pl.yaml b/translations/base-pl.yaml index 39e49efc..18226b32 100644 --- a/translations/base-pl.yaml +++ b/translations/base-pl.yaml @@ -745,6 +745,12 @@ keybindings: about: title: O Grze + body: >- + Ta gra jest open-source. Rozwijana jest przez Tobiasa Springera (to ja).

+ Jeżeli chcesz pomóc w rozwoju gry, sprawdź repozytorium shapez.io na Githubie.

+ Ta gra nie byłaby możliwa bez wspaniałej społeczności Discord skupionej na moich grach - Naprawdę powinieneś dołączyć do mojego serwera Discord!

+ Ścieżka dźwiękowa tej gry została stworzona przez Peppsena - Jest niesamowity.

+ Na koniec, wielkie dzięki mojemu najlepszemu przyjacielowi: Niklas - Bez naszego wspólnego grania w Factorio, ta gra nigdy by nie powstała. changelog: title: Dziennik zmian From 3959796e74274a19b45127ab14d788a172ecd813 Mon Sep 17 00:00:00 2001 From: mini-bomba <55105495+mini-bomba@users.noreply.github.com> Date: Fri, 12 Jun 2020 21:26:13 +0200 Subject: [PATCH 02/25] Found 1 english word. And translated it. --- translations/base-pl.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/base-pl.yaml b/translations/base-pl.yaml index 39e49efc..9044302a 100644 --- a/translations/base-pl.yaml +++ b/translations/base-pl.yaml @@ -684,7 +684,7 @@ settings: keybindings: title: Klawiszologia hint: >- - Tip: Upewnij się, że wykorzystujesz CTRL, SHIFT i ALT! Pozwalają na różne metody kładzenia elementów. + Wskazówka: Upewnij się, że wykorzystujesz CTRL, SHIFT i ALT! Pozwalają na różne metody kładzenia elementów. resetKeybindings: Zresetuj Klawiszologię categoryLabels: From cbf662252078f7fb7ff2f7ad1c76cf00cbf23943 Mon Sep 17 00:00:00 2001 From: mini-bomba <55105495+mini-bomba@users.noreply.github.com> Date: Fri, 12 Jun 2020 21:30:37 +0200 Subject: [PATCH 03/25] Why is this not translated? --- translations/base-pl.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/translations/base-pl.yaml b/translations/base-pl.yaml index 9044302a..467d38ba 100644 --- a/translations/base-pl.yaml +++ b/translations/base-pl.yaml @@ -549,8 +549,9 @@ storyRewards: reward_splitter_compact: title: Łącznik Kompaktowy desc: >- - You have unlocked a compact variant of the balancer - It - accepts two inputs and merges them into one! + Odblokowano nowy wariant rozdzielacza - Przyjmuje + przedmioty z dwóch taśmociągów i przenosi je na jeden! + reward_cutter_quad: title: Przecinak Poczwórny desc: Odblokowano nowy wariant Przecinaka - Pozwala ciąć kształty na cztery ćwiartki! From 202f685134bf9b8861e33d5f8f57df10fa6a1f19 Mon Sep 17 00:00:00 2001 From: mini-bomba <55105495+mini-bomba@users.noreply.github.com> Date: Fri, 12 Jun 2020 21:33:23 +0200 Subject: [PATCH 04/25] minor changes --- translations/base-pl.yaml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/translations/base-pl.yaml b/translations/base-pl.yaml index 467d38ba..2eddd1b2 100644 --- a/translations/base-pl.yaml +++ b/translations/base-pl.yaml @@ -98,9 +98,10 @@ global: xDaysAgo: dni temu # Short formats for times, e.g. '5h 23m' + # 2nd translator's note: Changed 'm' to 'min' to distinguish from meters & to be consistent secondsShort: s - minutesAndSecondsShort: m s - hoursAndMinutesShort: godz m + minutesAndSecondsShort: min s + hoursAndMinutesShort: godz min xMinutes: minut @@ -295,8 +296,8 @@ ingame: speed: Szybkość range: Zasięg storage: Pojemność - oneItemPerSecond: 1 obiekt / sekundę - itemsPerSecond: obiektów / sekundę + oneItemPerSecond: 1 obiekt / s + itemsPerSecond: obiektów / s itemsPerSecondDouble: (x2) tiles: kafelków @@ -532,7 +533,7 @@ storyRewards: reward_tunnel: title: Tunel - desc: Tunel został odblokowany - Możesz prowadzić podziemne taśmociągi! + desc: Tunel został odblokowany - Możesz teraz prowadzić podziemne taśmociągi! reward_rotater_ccw: title: Obracanie odwrotne From 70adaa28abfe767b77a2da58c64e2ae2b1ea6e96 Mon Sep 17 00:00:00 2001 From: mini-bomba <55105495+mini-bomba@users.noreply.github.com> Date: Fri, 12 Jun 2020 22:23:17 +0200 Subject: [PATCH 05/25] Fix keybindings button label text not changing with language --- src/js/states/settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/states/settings.js b/src/js/states/settings.js index e092c717..4dce1fa3 100644 --- a/src/js/states/settings.js +++ b/src/js/states/settings.js @@ -19,7 +19,7 @@ export class SettingsState extends TextualGameState { ${ this.app.platformWrapper.getSupportsKeyboard() ? ` - + ` : "" } From 84fd073938fb74d9812147430737a55a6f1f7d14 Mon Sep 17 00:00:00 2001 From: mini-bomba <55105495+mini-bomba@users.noreply.github.com> Date: Fri, 12 Jun 2020 22:42:09 +0200 Subject: [PATCH 06/25] typo? --- translations/base-pl.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/base-pl.yaml b/translations/base-pl.yaml index 2eddd1b2..a34e5592 100644 --- a/translations/base-pl.yaml +++ b/translations/base-pl.yaml @@ -78,7 +78,7 @@ global: # Translator note: We don't use SI size units for common speak, but if you want to keep it SI # ...also, Polish has wierd nature of diffrent number naming, we have "million" and "milliard"-thing wich actually is billion in English suffix: - thousands: tyś + thousands: tys millions: mln billions: mld trillions: bln From fd9d8459c647a2167df1ff4c01338aea1313f8bd Mon Sep 17 00:00:00 2001 From: Wessel <66781896+Ryoncai@users.noreply.github.com> Date: Sat, 13 Jun 2020 00:09:41 +0200 Subject: [PATCH 07/25] Update base-nl.yaml Made some minor tweaks, translated a few short sections I accidentally skipped over earlier and translated the new stuff. I'm not certain if line 667 should be translated (to 'sneltoetsen'). I thought not, but I noticed that the blue tab ingame under options still says keybindings, and I'm not sure how else to change that one. --- translations/base-nl.yaml | 72 +++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 37 deletions(-) diff --git a/translations/base-nl.yaml b/translations/base-nl.yaml index fe5bcd0f..3550a9b1 100644 --- a/translations/base-nl.yaml +++ b/translations/base-nl.yaml @@ -46,13 +46,13 @@ steamPage: [*] Oneindig veel Savegames [*] Donkere modus [*] Meer opties - [*] Door jouw steun kan ik shapez.io verder ontwikkelen ❤️ + [*] Met jouw steun kan ik shapez.io verder ontwikkelen ❤️ [*] Meer functies in de toekomst! [/list] [b]Geplande functies & suggesties van de community[/b] - Deze game is open source - Iedereen kan bijdragen! Daarnaast luister ik [b]erg veel[/b] naar de community! Ik probeer alle suggesties te lezen en neem zo veel mogelijk feedback mee als mogelijk. + Dit spel is open source - Iedereen kan bijdragen! Daarnaast luister ik [b]erg veel[/b] naar de community! Ik probeer alle suggesties te lezen en gebruik feedback zo veel als mogelijk. [list] [*] Verhaalmodus, waar gebouwen specifieke vormen kosten om te bouwen @@ -86,7 +86,7 @@ global: time: # Used for formatting past time dates - oneSecondAgo: een seconde geleden + oneSecondAgo: één seconde geleden xSecondsAgo: seconden geleden oneMinuteAgo: een minuut geleden xMinutesAgo: minuten geleden @@ -199,8 +199,8 @@ dialogs: Je moet het spel opnieuw opstarten om de instellingen toe te passen. editKeybinding: - title: Change Keybinding - desc: Press the key or mouse button you want to assign, or escape to cancel. + title: Verander sneltoetsen + desc: Druk op de toets of muisknop die je aan deze functie toe wil wijzen, of druk op ESC om te annuleren. resetKeybindingsConfirmation: title: Reset sneltoetsen @@ -255,17 +255,16 @@ dialogs: markerDemoLimit: desc: Je kunt maar twee markeringen plaatsen in de demo. Koop de standalone voor een ongelimiteerde hoeveelheid markeringen! massCutConfirm: - title: Confirm cut + title: Bevestig knippen desc: >- - You are cutting a lot of buildings ( to be exact)! Are you sure you - want to do this? + Je bent veel gebouwen aan het knippen ( om precies te zijn)! Weet je zeker dat je dit wil doen? ingame: # This is shown in the top left corner and displays useful keybindings in # every situation keybindingsOverlay: - moveMap: Beweeg het speelveld - selectBuildings: Selecteer een gebied + moveMap: Beweeg speelveld + selectBuildings: Selecteer gebied stopPlacement: Stop met plaatsen rotateBuilding: Draai een gebouw placeMultiple: Plaats meerdere @@ -275,7 +274,7 @@ ingame: placeBuilding: Plaats gebouw createMarker: Plaats markering delete: Vernietig - pasteLastBlueprint: Paste last blueprint + pasteLastBlueprint: Plak de laatst gekopiëerde blauwdruk # Everything related to placing buildings (I.e. as soon as you selected a building # from the toolbar) @@ -308,13 +307,13 @@ ingame: # Notifications on the lower right notifications: - newUpgrade: Een nieuwe upgrade is beschikbaar! + newUpgrade: Er is een nieuwe upgrade beschikbaar! gameSaved: Je spel is opgeslagen. # Mass select information, this is when you hold CTRL and then drag with your mouse # to select multiple buildings massSelect: - infoText: Press to cut, to copy, to remove and to cancel. + infoText: Druk op om te knippen, om te kopiëren, om te verwijderen en om de selectie te annuleren. # The "Upgrades" window shop: @@ -338,9 +337,9 @@ ingame: description: Geeft weer hoe veel vormen er zijn opgeslagen in je centrale gebouw. produced: title: Geproduceerd - description: Geeft alle vormen weer die op dit moment geproduceerd worden door de volledige fabriek, inclusief tussenproducten. + description: Geeft alle vormen weer die op dit moment geproduceerd worden, inclusief tussenproducten. delivered: - title: Bezorgt + title: Geleverd description: Geeft alle vormen weer die in het centrale gebouw worden bezorgd. noShapesProduced: Er zijn nog geen vormen geproduceerd. @@ -385,7 +384,7 @@ ingame: Verbind de extractor met een lopende band aan je hub!

Tip: Klik en sleep de lopende band met je muis! 1_3_expand: >- - Dit is GEEN inactief spel! bouw meer extractors en lopende banden om het doel sneller te behalen.

Tip: Houd SHIFT ingedrukt om meerdere extractors te plaatsen en gebruik R om ze te draaien. + Dit is GEEN nietsdoen-spel! bouw meer extractors en lopende banden om het doel sneller te behalen.

Tip: Houd SHIFT ingedrukt om meerdere extractors te plaatsen en gebruik R om ze te draaien. # All shop upgrades shopUpgrades: @@ -433,11 +432,11 @@ buildings: description: Multifunctioneel - Verdeelt alle input gelijk over alle output. compact: - name: Samenvoeger (compact) + name: Invoeger (compact) description: Voegt twee lopende banden samen tot één. compact-inverse: - name: Samenvoeger (compact) + name: Invoeger (compact) description: Voegt twee lopende banden samen tot één. cutter: @@ -487,8 +486,8 @@ buildings: description: Slaat het overschot aan voorwerpen op, tot een zekere hoeveelheid. Kan worden gebruikt als buffer. hub: - deliver: Deliver - toUnlock: to unlock + deliver: Lever + toUnlock: om te ontgrendelen levelShortcut: LVL storyRewards: @@ -499,7 +498,7 @@ storyRewards: reward_rotater: title: Roteren - desc: De roteerder is ontgrendeld! Het draait vormen 90 graden met de klok mee. + desc: De roteerder is ontgrendeld - ! Het draait vormen 90 graden met de klok mee. reward_painter: title: Verven @@ -509,8 +508,7 @@ storyRewards: reward_mixer: title: Kleuren mengen desc: >- - The mixer has been unlocked - Combine two colors using - additive blending with this building! + De menger is ontgrendeld - combineer twee kleuren met dit gebouw! reward_stacker: title: Stapelaar @@ -537,7 +535,7 @@ storyRewards: desc: Je hebt een variant van de tunnel ontgrendeld - Deze heeft een grotere reikwijdte- Je hebt een compacte variant van de verdeler ontgrendeld - Dit voegt twee lopende banden samen tot één. @@ -586,7 +584,7 @@ settings: dev: Ontwikkeling staging: Staging prod: Productie - buildDate: Gebouwd op + buildDate: gebouwd labels: uiScale: @@ -637,8 +635,8 @@ settings: Kies de gewenste weergave (licht / donker). themes: - dark: Dark - light: Light + dark: Donker + light: Licht refreshRate: title: Simulation Target @@ -656,15 +654,15 @@ settings: Wanneer dit uit staat zullen er geen hints en tutorials meer aangeboden worden. Als deze optie aan staat, zullen ook bepaalde elementen uit de UI verborgen worden tot het punt waarop ze gebruikt worden om de instap in het spel makkelijker te maken. movementSpeed: - title: Movement speed - description: Changes how fast the view moves when using the keyboard. + title: Bewegingssnelheid + description: Veranderd hoe snel het beeld beweegt wanneer je het toetsenbord gebruikt. speeds: - super_slow: Super slow - slow: Slow - regular: Regular - fast: Fast - super_fast: Super Fast - extremely_fast: Extremely Fast + super_slow: Super langzaam + slow: Langzaam + regular: Standaard + fast: Snel + super_fast: Super snel + extremely_fast: Extreem snel keybindings: title: Sneltoetsen @@ -726,8 +724,8 @@ keybindings: placementDisableAutoOrientation: Schakel automatisch draaien uit placeMultiple: Blijf in plaatsmodus placeInverse: Omkeren richting lopende band - pasteLastBlueprint: Paste last blueprint - massSelectCut: Cut area + pasteLastBlueprint: Plak laatst gekopiëerde blauwdruk + massSelectCut: Knip geselecteerd gebied about: title: Over dit spel From ecbcd02abc91abb82b3b53e379f90cc3615c0eec Mon Sep 17 00:00:00 2001 From: tobspr Date: Sat, 13 Jun 2020 10:11:18 +0200 Subject: [PATCH 08/25] Fix app not starting when the savegames were corrupted - there is now a better error message --- src/js/application.js | 6 +----- src/js/changelog.js | 1 + src/js/states/main_menu.js | 16 ++++++++++++---- src/js/states/preload.js | 13 ++++--------- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/js/application.js b/src/js/application.js index a1557263..ee913a3f 100644 --- a/src/js/application.js +++ b/src/js/application.js @@ -14,13 +14,10 @@ import { Vector } from "./core/vector"; import { AdProviderInterface } from "./platform/ad_provider"; import { NoAdProvider } from "./platform/ad_providers/no_ad_provider"; import { AnalyticsInterface } from "./platform/analytics"; -import { ShapezGameAnalytics } from "./platform/browser/game_analytics"; import { GoogleAnalyticsImpl } from "./platform/browser/google_analytics"; +import { NoGameAnalytics } from "./platform/browser/no_game_analytics"; import { SoundImplBrowser } from "./platform/browser/sound"; -import { StorageImplBrowser } from "./platform/browser/storage"; -import { StorageImplBrowserIndexedDB } from "./platform/browser/storage_indexed_db"; import { PlatformWrapperImplBrowser } from "./platform/browser/wrapper"; -import { StorageImplElectron } from "./platform/electron/storage"; import { PlatformWrapperImplElectron } from "./platform/electron/wrapper"; import { GameAnalyticsInterface } from "./platform/game_analytics"; import { SoundInterface } from "./platform/sound"; @@ -36,7 +33,6 @@ import { MainMenuState } from "./states/main_menu"; import { MobileWarningState } from "./states/mobile_warning"; import { PreloadState } from "./states/preload"; import { SettingsState } from "./states/settings"; -import { NoGameAnalytics } from "./platform/browser/no_game_analytics"; const logger = createLogger("application"); diff --git a/src/js/changelog.js b/src/js/changelog.js index f875ff85..ba631df4 100644 --- a/src/js/changelog.js +++ b/src/js/changelog.js @@ -9,6 +9,7 @@ export const CHANGELOG = [ "You can now configure the camera movement speed when using WASD (by mini-bomba)", "Selecting an area now is relative to the world and thus does not move when moving the screen (by Dimava)", "Fix bug regarding number rounding", + "Fix app not starting when the savegames were corrupted - there is now a better error message", ], }, { diff --git a/src/js/states/main_menu.js b/src/js/states/main_menu.js index a2a75db9..b782155f 100644 --- a/src/js/states/main_menu.js +++ b/src/js/states/main_menu.js @@ -366,11 +366,19 @@ export class MainMenuState extends GameState { this.app.adProvider.showVideoAd().then(() => { this.app.analytics.trackUiClick("resume_game_adcomplete"); const savegame = this.app.savegameMgr.getSavegameById(game.internalId); - savegame.readAsync().then(() => { - this.moveToState("InGameState", { - savegame, + savegame + .readAsync() + .then(() => { + this.moveToState("InGameState", { + savegame, + }); + }) + .catch(err => { + this.dialogs.showWarning( + T.dialogs.gameLoadFailure.title, + T.dialogs.gameLoadFailure.text + "

" + err + ); }); - }); }); } diff --git a/src/js/states/preload.js b/src/js/states/preload.js index 535d7004..eee57f05 100644 --- a/src/js/states/preload.js +++ b/src/js/states/preload.js @@ -138,15 +138,10 @@ export class PreloadState extends GameState { .then(() => { return this.app.savegameMgr.initialize().catch(err => { logger.error("Failed to initialize savegames:", err); - return new Promise(resolve => { - // const { ok } = this.dialogs.showWarning( - // T.preload.savegame_corrupt_dialog.title, - // T.preload.savegame_corrupt_dialog.content, - // ["ok:good"] - // ); - // ok.add(resolve); - alert("Your savegames failed to load. They might not show up. Sorry!"); - }); + alert( + "Your savegames failed to load, it seems your data files got corrupted. I'm so sorry!\n\n(This can happen if your pc crashed while a game was saved).\n\nYou can try re-importing your savegames." + ); + return this.app.savegameMgr.writeAsync(); }); }) From 7e745fd0ce22df8ab9f7ac75817dad30726254b4 Mon Sep 17 00:00:00 2001 From: tobspr Date: Sat, 13 Jun 2020 10:57:29 +0200 Subject: [PATCH 09/25] Allow exporting whole bases, closes #137 --- src/js/core/vector.js | 11 +- src/js/game/core.js | 2 +- src/js/game/entity.js | 2 +- src/js/game/hud/hud.js | 10 +- src/js/game/hud/parts/keybinding_overlay.js | 6 -- src/js/game/hud/parts/screenshot_exporter.js | 105 +++++++++++++++++++ src/js/game/key_action_mapper.js | 3 +- src/js/game/map_view.js | 4 +- translations/base-en.yaml | 6 ++ 9 files changed, 133 insertions(+), 16 deletions(-) create mode 100644 src/js/game/hud/parts/screenshot_exporter.js diff --git a/src/js/core/vector.js b/src/js/core/vector.js index 2a02f75d..635556d6 100644 --- a/src/js/core/vector.js +++ b/src/js/core/vector.js @@ -10,6 +10,7 @@ import { Math_atan2, Math_sin, Math_cos, + Math_ceil, } from "./builtins"; const tileSize = globalConfig.tileSize; @@ -303,13 +304,21 @@ export class Vector { } /** - * Computes componentwise floor and return a new vector + * Computes componentwise floor and returns a new vector * @returns {Vector} */ floor() { return new Vector(Math_floor(this.x), Math_floor(this.y)); } + /** + * Computes componentwise ceil and returns a new vector + * @returns {Vector} + */ + ceil() { + return new Vector(Math_ceil(this.x), Math_ceil(this.y)); + } + /** * Computes componentwise round and return a new vector * @returns {Vector} diff --git a/src/js/game/core.js b/src/js/game/core.js index 3d2c1f3d..8b1c464d 100644 --- a/src/js/game/core.js +++ b/src/js/game/core.js @@ -409,7 +409,7 @@ export class GameCore { } if (G_IS_DEV) { - root.map.drawStaticEntities(params); + root.map.drawStaticEntityDebugOverlays(params); } // END OF GAME CONTENT diff --git a/src/js/game/entity.js b/src/js/game/entity.js index dc849851..9dea1c2b 100644 --- a/src/js/game/entity.js +++ b/src/js/game/entity.js @@ -136,7 +136,7 @@ export class Entity extends BasicSerializableObject { * Draws the entity, to override use @see Entity.drawImpl * @param {DrawParameters} parameters */ - draw(parameters) { + drawDebugOverlays(parameters) { const context = parameters.context; const staticComp = this.components.StaticMapEntity; diff --git a/src/js/game/hud/hud.js b/src/js/game/hud/hud.js index a541dc2e..979190f8 100644 --- a/src/js/game/hud/hud.js +++ b/src/js/game/hud/hud.js @@ -2,6 +2,10 @@ import { GameRoot } from "../root"; /* typehints:end */ +/* dev:start */ +import { TrailerMaker } from "./trailer_maker"; +/* dev:end */ + import { Signal } from "../../core/signal"; import { DrawParameters } from "../../core/draw_parameters"; import { HUDProcessingOverlay } from "./parts/processing_overlay"; @@ -29,10 +33,7 @@ import { HUDModalDialogs } from "./parts/modal_dialogs"; import { HUDPartTutorialHints } from "./parts/tutorial_hints"; import { HUDWaypoints } from "./parts/waypoints"; import { HUDInteractiveTutorial } from "./parts/interactive_tutorial"; - -/* dev:start */ -import { TrailerMaker } from "./trailer_maker"; -/* dev:end */ +import { HUDScreenshotExporter } from "./parts/screenshot_exporter"; export class GameHUD { /** @@ -66,6 +67,7 @@ export class GameHUD { // betaOverlay: new HUDBetaOverlay(this.root), debugInfo: new HUDDebugInfo(this.root), dialogs: new HUDModalDialogs(this.root), + screenshotExporter: new HUDScreenshotExporter(this.root), }; this.signals = { diff --git a/src/js/game/hud/parts/keybinding_overlay.js b/src/js/game/hud/parts/keybinding_overlay.js index 0c3f3342..24d7040e 100644 --- a/src/js/game/hud/parts/keybinding_overlay.js +++ b/src/js/game/hud/parts/keybinding_overlay.js @@ -57,12 +57,6 @@ export class HUDKeybindingOverlay extends BaseHUDPart { -
- ${getKeycode(KEYMAPPINGS.massSelect.pasteLastBlueprint)} - -
- -
diff --git a/src/js/game/hud/parts/screenshot_exporter.js b/src/js/game/hud/parts/screenshot_exporter.js new file mode 100644 index 00000000..dfdd8224 --- /dev/null +++ b/src/js/game/hud/parts/screenshot_exporter.js @@ -0,0 +1,105 @@ +import { BaseHUDPart } from "../base_hud_part"; +import { KEYMAPPINGS } from "../../key_action_mapper"; +import { IS_DEMO, globalConfig } from "../../../core/config"; +import { T } from "../../../translations"; +import { createLogger } from "../../../core/logging"; +import { StaticMapEntityComponent } from "../../components/static_map_entity"; +import { Vector } from "../../../core/vector"; +import { Math_max, Math_min } from "../../../core/builtins"; +import { makeOffscreenBuffer } from "../../../core/buffer_utils"; +import { DrawParameters } from "../../../core/draw_parameters"; +import { Rectangle } from "../../../core/rectangle"; + +const logger = createLogger("screenshot_exporter"); + +export class HUDScreenshotExporter extends BaseHUDPart { + createElements() {} + + initialize() { + this.root.keyMapper.getBinding(KEYMAPPINGS.ingame.exportScreenshot).add(this.startExport, this); + } + + startExport() { + if (IS_DEMO) { + this.root.hud.parts.dialogs.showFeatureRestrictionInfo(T.demo.features.exportingBase); + return; + } + + const { ok } = this.root.hud.parts.dialogs.showInfo( + T.dialogs.exportScreenshotWarning.title, + T.dialogs.exportScreenshotWarning.desc, + ["cancel:good", "ok:bad"] + ); + ok.add(this.doExport, this); + } + + doExport() { + logger.log("Starting export ..."); + + // Find extends + const staticEntities = this.root.entityMgr.getAllWithComponent(StaticMapEntityComponent); + + const minTile = new Vector(0, 0); + const maxTile = new Vector(0, 0); + for (let i = 0; i < staticEntities.length; ++i) { + const bounds = staticEntities[i].components.StaticMapEntity.getTileSpaceBounds(); + minTile.x = Math_min(minTile.x, bounds.x); + minTile.y = Math_min(minTile.y, bounds.y); + + maxTile.x = Math_max(maxTile.x, bounds.x + bounds.w); + maxTile.y = Math_max(maxTile.y, bounds.y + bounds.h); + } + + const minChunk = minTile.divideScalar(globalConfig.mapChunkSize).floor(); + const maxChunk = maxTile.divideScalar(globalConfig.mapChunkSize).ceil(); + + const dimensions = maxChunk.sub(minChunk); + logger.log("Dimensions:", dimensions); + + const chunkSizePixels = 128; + const chunkScale = chunkSizePixels / (globalConfig.mapChunkSize * globalConfig.tileSize); + logger.log("Scale:", chunkScale); + + logger.log("Allocating buffer, if the factory grew too big it will crash here"); + const [canvas, context] = makeOffscreenBuffer( + dimensions.x * chunkSizePixels, + dimensions.y * chunkSizePixels, + { + smooth: true, + reusable: false, + label: "export-buffer", + } + ); + logger.log("Got buffer, rendering now ..."); + + const visibleRect = new Rectangle( + minChunk.x * globalConfig.mapChunkSize * globalConfig.tileSize, + minChunk.y * globalConfig.mapChunkSize * globalConfig.tileSize, + dimensions.x * globalConfig.mapChunkSize * globalConfig.tileSize, + dimensions.y * globalConfig.mapChunkSize * globalConfig.tileSize + ); + const parameters = new DrawParameters({ + context, + visibleRect, + desiredAtlasScale: "1", + root: this.root, + zoomLevel: chunkScale, + }); + + context.scale(chunkScale, chunkScale); + context.translate(-visibleRect.x, -visibleRect.y); + + // Render all relevant chunks + this.root.map.drawBackground(parameters); + this.root.map.drawForeground(parameters); + + // Offer export + logger.log("Rendered buffer, exporting ..."); + const image = canvas.toDataURL("image/png"); + const link = document.createElement("a"); + link.download = "base.png"; + link.href = image; + link.click(); + logger.log("Done!"); + } +} diff --git a/src/js/game/key_action_mapper.js b/src/js/game/key_action_mapper.js index 58077f01..816c5cd3 100644 --- a/src/js/game/key_action_mapper.js +++ b/src/js/game/key_action_mapper.js @@ -24,7 +24,8 @@ export const KEYMAPPINGS = { menuOpenStats: { keyCode: key("G") }, toggleHud: { keyCode: 113 }, // F2 - toggleFPSInfo: { keyCode: 115 }, // F1 + exportScreenshot: { keyCode: 114 }, // F3 + toggleFPSInfo: { keyCode: 115 }, // F4 }, navigation: { diff --git a/src/js/game/map_view.js b/src/js/game/map_view.js index 90919a2a..5c4bf88a 100644 --- a/src/js/game/map_view.js +++ b/src/js/game/map_view.js @@ -64,7 +64,7 @@ export class MapView extends BaseMap { * Draws all static entities like buildings etc. * @param {DrawParameters} drawParameters */ - drawStaticEntities(drawParameters) { + drawStaticEntityDebugOverlays(drawParameters) { const cullRange = drawParameters.visibleRect.toTileCullRectangle(); const top = cullRange.top(); const right = cullRange.right(); @@ -90,7 +90,7 @@ export class MapView extends BaseMap { if (content) { let isBorder = x <= left - 1 || x >= right + 1 || y <= top - 1 || y >= bottom + 1; if (!isBorder) { - content.draw(drawParameters); + content.drawDebugOverlays(drawParameters); } } } diff --git a/translations/base-en.yaml b/translations/base-en.yaml index 7430f7dd..2764a804 100644 --- a/translations/base-en.yaml +++ b/translations/base-en.yaml @@ -260,6 +260,10 @@ dialogs: markerDemoLimit: desc: You can only create two custom markers in the demo. Get the standalone for unlimited markers! + exportScreenshotWarning: + title: Export screenshot + desc: You requested to export your base as a screenshot. Please note that this can be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -698,6 +702,7 @@ keybindings: toggleHud: Toggle HUD toggleFPSInfo: Toggle FPS and Debug Info + exportScreenshot: Export whole Base as Image belt: *belt splitter: *splitter underground_belt: *underground_belt @@ -739,5 +744,6 @@ demo: importingGames: Importing savegames oneGameLimit: Limited to one savegame customizeKeybindings: Customizing Keybindings + exportingBase: Exporting whole Base as Image settingNotAvailable: Not available in the demo. From a0305512a281b9d8916249cda9cc9f44fdd950e1 Mon Sep 17 00:00:00 2001 From: tobspr Date: Sat, 13 Jun 2020 10:59:28 +0200 Subject: [PATCH 10/25] Update changelog --- src/js/changelog.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/js/changelog.js b/src/js/changelog.js index ba631df4..951fd63b 100644 --- a/src/js/changelog.js +++ b/src/js/changelog.js @@ -4,8 +4,9 @@ export const CHANGELOG = [ date: "unreleased", entries: [ "Pinned shapes are now smart, they dynamically update their goal and also unpin when no longer required. Completed objectives are now rendered transparent.", - "Improve upgrade number rounding, so there are no goals like '37.4k', instead it will now be '35k'", "You can now cut areas, and also paste the last blueprint again! (by hexy)", + "You can now export your whole base as an image by pressing F3!", + "Improve upgrade number rounding, so there are no goals like '37.4k', instead it will now be '35k'", "You can now configure the camera movement speed when using WASD (by mini-bomba)", "Selecting an area now is relative to the world and thus does not move when moving the screen (by Dimava)", "Fix bug regarding number rounding", From 766d9e943eef0a4c2b6210259f5439f54adbe5c7 Mon Sep 17 00:00:00 2001 From: tobspr Date: Sat, 13 Jun 2020 11:01:43 +0200 Subject: [PATCH 11/25] Add flag to enable fullVersion in beta --- src/js/core/config.js | 9 ++++++--- src/js/core/query_parameters.js | 6 ++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/js/core/config.js b/src/js/core/config.js index fa3a80ab..4a8953d4 100644 --- a/src/js/core/config.js +++ b/src/js/core/config.js @@ -1,3 +1,5 @@ +import { queryParamOptions } from "./query_parameters"; + export const IS_DEBUG = G_IS_DEV && typeof window !== "undefined" && @@ -5,9 +7,10 @@ export const IS_DEBUG = (window.location.host.indexOf("localhost:") >= 0 || window.location.host.indexOf("192.168.0.") >= 0) && window.location.search.indexOf("nodebug") < 0; -export const IS_DEMO = - (G_IS_PROD && !G_IS_STANDALONE) || - (typeof window !== "undefined" && window.location.search.indexOf("demo") >= 0); +export const IS_DEMO = queryParamOptions.fullVersion + ? false + : (G_IS_PROD && !G_IS_STANDALONE) || + (typeof window !== "undefined" && window.location.search.indexOf("demo") >= 0); const smoothCanvas = true; diff --git a/src/js/core/query_parameters.js b/src/js/core/query_parameters.js index b3dab1b3..e7cf8a67 100644 --- a/src/js/core/query_parameters.js +++ b/src/js/core/query_parameters.js @@ -3,8 +3,14 @@ const options = queryString.parse(location.search); export let queryParamOptions = { embedProvider: null, + fullVersion: false, }; if (options.embed) { queryParamOptions.embedProvider = options.embed; } + +// Allow testing full version outside of standalone +if (options.fullVersion && !G_IS_PROD) { + queryParamOptions.fullVersion = true; +} From c963c961a0816737d4f1dce98559c9b459aacbe9 Mon Sep 17 00:00:00 2001 From: tobspr Date: Sat, 13 Jun 2020 11:04:17 +0200 Subject: [PATCH 12/25] Allow having local files with changes for deployments --- gulp/gulpfile.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gulp/gulpfile.js b/gulp/gulpfile.js index 520a9286..fca5d84c 100644 --- a/gulp/gulpfile.js +++ b/gulp/gulpfile.js @@ -107,9 +107,14 @@ gulp.task("utils.cleanup", $.sequence("utils.cleanBuildFolder", "utils.cleanBuil // Requires no uncomitted files gulp.task("utils.requireCleanWorkingTree", cb => { - const output = $.trim(execSync("git status -su").toString("ascii")); + let output = $.trim(execSync("git status -su").toString("ascii")).replace(/\r/gi, "").split("\n"); + + // Filter files which are OK to be untracked + output = output.filter(x => x.indexOf(".local.js") < 0); if (output.length > 0) { console.error("\n\nYou have unstaged changes, please commit everything first!"); + console.error("Unstaged files:"); + console.error(output.join("\n")); process.exit(1); } cb(); From 444908d22f367f5ee4d77502bcd9b64ab5cbd4aa Mon Sep 17 00:00:00 2001 From: tobspr Date: Sat, 13 Jun 2020 11:06:15 +0200 Subject: [PATCH 13/25] Fix wrong check for full version --- src/js/core/query_parameters.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/core/query_parameters.js b/src/js/core/query_parameters.js index e7cf8a67..8a27801f 100644 --- a/src/js/core/query_parameters.js +++ b/src/js/core/query_parameters.js @@ -11,6 +11,6 @@ if (options.embed) { } // Allow testing full version outside of standalone -if (options.fullVersion && !G_IS_PROD) { +if (options.fullVersion && !G_IS_RELEASE) { queryParamOptions.fullVersion = true; } From 0985a36793bd70f08a922a43e5b20bc001756b95 Mon Sep 17 00:00:00 2001 From: tobspr Date: Sat, 13 Jun 2020 11:13:28 +0200 Subject: [PATCH 14/25] Allow higher tickrates --- src/js/profile/application_settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/profile/application_settings.js b/src/js/profile/application_settings.js index 87c2c244..17563ab9 100644 --- a/src/js/profile/application_settings.js +++ b/src/js/profile/application_settings.js @@ -165,7 +165,7 @@ export const allApplicationSettings = [ }), new EnumSetting("refreshRate", { - options: ["60", "100", "144", "165"], + options: ["60", "100", "144", "165", "250", "500"], valueGetter: rate => rate, textGetter: rate => rate + " Hz", category: categoryGame, From ae770cb39f1c10252989b5e738689b82b7d3a569 Mon Sep 17 00:00:00 2001 From: tobspr Date: Sat, 13 Jun 2020 11:13:46 +0200 Subject: [PATCH 15/25] Update changleog --- src/js/changelog.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/js/changelog.js b/src/js/changelog.js index 951fd63b..62575847 100644 --- a/src/js/changelog.js +++ b/src/js/changelog.js @@ -9,6 +9,7 @@ export const CHANGELOG = [ "Improve upgrade number rounding, so there are no goals like '37.4k', instead it will now be '35k'", "You can now configure the camera movement speed when using WASD (by mini-bomba)", "Selecting an area now is relative to the world and thus does not move when moving the screen (by Dimava)", + "Allow higher tick-rates up to 500hz (This will burn your PC!)", "Fix bug regarding number rounding", "Fix app not starting when the savegames were corrupted - there is now a better error message", ], From 4e4498ed531d5ba389d73eaf49c0359649618674 Mon Sep 17 00:00:00 2001 From: tobspr Date: Sat, 13 Jun 2020 11:36:05 +0200 Subject: [PATCH 16/25] Fix dialog text being hardly readable in dark theme --- src/css/ingame_hud/dialogs.scss | 4 ++++ src/js/changelog.js | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/css/ingame_hud/dialogs.scss b/src/css/ingame_hud/dialogs.scss index eef87505..2e1c417d 100644 --- a/src/css/ingame_hud/dialogs.scss +++ b/src/css/ingame_hud/dialogs.scss @@ -118,6 +118,10 @@ pointer-events: all; @include S(width, 350px); + @include DarkThemeOverride { + color: #aaa; + } + strong { font-weight: bold; } diff --git a/src/js/changelog.js b/src/js/changelog.js index 62575847..42633e68 100644 --- a/src/js/changelog.js +++ b/src/js/changelog.js @@ -11,7 +11,9 @@ export const CHANGELOG = [ "Selecting an area now is relative to the world and thus does not move when moving the screen (by Dimava)", "Allow higher tick-rates up to 500hz (This will burn your PC!)", "Fix bug regarding number rounding", + "Fix dialog text being hardly readable in dark theme", "Fix app not starting when the savegames were corrupted - there is now a better error message", + "Further translation updates - Big thanks to all contributors!", ], }, { From 685373f11cd628456925416e0f6f5ac5bb1c57f9 Mon Sep 17 00:00:00 2001 From: tobspr Date: Sat, 13 Jun 2020 11:42:34 +0200 Subject: [PATCH 17/25] Update changelog --- src/js/changelog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/changelog.js b/src/js/changelog.js index 42633e68..64b45357 100644 --- a/src/js/changelog.js +++ b/src/js/changelog.js @@ -12,7 +12,7 @@ export const CHANGELOG = [ "Allow higher tick-rates up to 500hz (This will burn your PC!)", "Fix bug regarding number rounding", "Fix dialog text being hardly readable in dark theme", - "Fix app not starting when the savegames were corrupted - there is now a better error message", + "Fix app not starting when the savegames were corrupted - there is now a better error message as well.", "Further translation updates - Big thanks to all contributors!", ], }, From 33fce36f30323675ec2785c0a18eb5313ebab5fd Mon Sep 17 00:00:00 2001 From: tobspr Date: Sat, 13 Jun 2020 11:43:53 +0200 Subject: [PATCH 18/25] Improve spacing --- translations/base-en.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/translations/base-en.yaml b/translations/base-en.yaml index a4856ddd..7e6781c2 100644 --- a/translations/base-en.yaml +++ b/translations/base-en.yaml @@ -736,10 +736,14 @@ about: 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.

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

- 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 From c9af631a4287fde839223dddacf816cbd75378dd Mon Sep 17 00:00:00 2001 From: tobspr Date: Sat, 13 Jun 2020 11:49:17 +0200 Subject: [PATCH 19/25] Update translations to latest version --- translations/base-ar.yaml | 25 +++++++++++++++++++++++++ translations/base-cz.yaml | 25 +++++++++++++++++++++++++ translations/base-de.yaml | 25 +++++++++++++++++++++++++ translations/base-el.yaml | 25 +++++++++++++++++++++++++ translations/base-es.yaml | 25 +++++++++++++++++++++++++ translations/base-fr.yaml | 25 +++++++++++++++++++++++++ translations/base-hu.yaml | 25 +++++++++++++++++++++++++ translations/base-it.yaml | 25 +++++++++++++++++++++++++ translations/base-ja.yaml | 25 +++++++++++++++++++++++++ translations/base-kor.yaml | 25 +++++++++++++++++++++++++ translations/base-lt.yaml | 25 +++++++++++++++++++++++++ translations/base-nl.yaml | 32 ++++++++++++++++++++++++++++---- translations/base-pl.yaml | 28 ++++++++++++++++++---------- translations/base-pt-BR.yaml | 25 +++++++++++++++++++++++++ translations/base-pt-PT.yaml | 25 +++++++++++++++++++++++++ translations/base-ro.yaml | 25 +++++++++++++++++++++++++ translations/base-ru.yaml | 25 +++++++++++++++++++++++++ translations/base-sv.yaml | 25 +++++++++++++++++++++++++ translations/base-tr.yaml | 25 +++++++++++++++++++++++++ translations/base-zh-CN.yaml | 25 +++++++++++++++++++++++++ translations/base-zh-TW.yaml | 25 +++++++++++++++++++++++++ 21 files changed, 521 insertions(+), 14 deletions(-) diff --git a/translations/base-ar.yaml b/translations/base-ar.yaml index 8e87eacf..11864c3c 100644 --- a/translations/base-ar.yaml +++ b/translations/base-ar.yaml @@ -260,6 +260,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -724,9 +730,27 @@ keybindings: placeInverse: Invert automatic belt orientation pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Changelog @@ -737,5 +761,6 @@ demo: importingGames: Importing savegames oneGameLimit: Limited to one savegame customizeKeybindings: Customizing Keybindings + exportingBase: Exporting whole Base as Image settingNotAvailable: Not available in the demo. diff --git a/translations/base-cz.yaml b/translations/base-cz.yaml index 6645887b..ec1d6f55 100644 --- a/translations/base-cz.yaml +++ b/translations/base-cz.yaml @@ -241,6 +241,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -707,9 +713,27 @@ keybindings: placeInverse: Přepnout automatickou orientaci pásů pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: title: O hře + 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Seznam změn @@ -720,5 +744,6 @@ demo: importingGames: Importování uložených her oneGameLimit: Omezeno pouze na jednu uloženou hru customizeKeybindings: Změna klávesových zkratek + exportingBase: Exporting whole Base as Image settingNotAvailable: Nedostupné v demo verzi. diff --git a/translations/base-de.yaml b/translations/base-de.yaml index 416095a7..74e4d927 100644 --- a/translations/base-de.yaml +++ b/translations/base-de.yaml @@ -259,6 +259,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -728,9 +734,27 @@ keybindings: placeInverse: Invert automatic belt orientation pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: title: Über dieses Spiel + 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Änderungen @@ -741,5 +765,6 @@ demo: importingGames: Spiele importieren oneGameLimit: Beschränkt auf einen Spielstand customizeKeybindings: Tastenkürzel anpassen + exportingBase: Exporting whole Base as Image settingNotAvailable: Nicht verfügbar in der Demo. diff --git a/translations/base-el.yaml b/translations/base-el.yaml index 104f39aa..3eb04db4 100644 --- a/translations/base-el.yaml +++ b/translations/base-el.yaml @@ -260,6 +260,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -726,9 +732,27 @@ keybindings: placeInverse: Invert automatic belt orientation pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Changelog @@ -739,5 +763,6 @@ demo: importingGames: Importing savegames oneGameLimit: Limited to one savegame customizeKeybindings: Customizing Keybindings + exportingBase: Exporting whole Base as Image settingNotAvailable: Not available in the demo. diff --git a/translations/base-es.yaml b/translations/base-es.yaml index 76d039c0..78ba8b53 100644 --- a/translations/base-es.yaml +++ b/translations/base-es.yaml @@ -256,6 +256,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -714,9 +720,27 @@ keybindings: placeInverse: Invierte automáticamente la orientación de las cintas transportadoras pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: title: Sobre el Juego + 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Registro de Cambios @@ -727,5 +751,6 @@ demo: importingGames: Importando partidas guardadas oneGameLimit: Limitado a una partida guardada customizeKeybindings: Personalizando Atajos de Teclado + exportingBase: Exporting whole Base as Image settingNotAvailable: No disponible en la versión de prueba. diff --git a/translations/base-fr.yaml b/translations/base-fr.yaml index a036d318..4074e565 100644 --- a/translations/base-fr.yaml +++ b/translations/base-fr.yaml @@ -261,6 +261,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -735,9 +741,27 @@ keybindings: placeInverse: Inverser le mode d'orientation automatique pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: title: À propos de ce jeu + 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Historique @@ -748,6 +772,7 @@ demo: importingGames: Importer des sauvegardes oneGameLimit: Limité à une sauvegarde customizeKeybindings: Personnalisation des contrôles + exportingBase: Exporting whole Base as Image settingNotAvailable: Indisponible dans la démo. # diff --git a/translations/base-hu.yaml b/translations/base-hu.yaml index 9fd82e3e..5395506c 100644 --- a/translations/base-hu.yaml +++ b/translations/base-hu.yaml @@ -260,6 +260,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -725,9 +731,27 @@ keybindings: placeInverse: Invert automatic belt orientation pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: title: A játékról + 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Changelog @@ -738,5 +762,6 @@ demo: importingGames: Mentések importálása oneGameLimit: Egy mentésre van limitálva customizeKeybindings: Customizing Keybindings + exportingBase: Exporting whole Base as Image settingNotAvailable: Nem elérhető a demóban. diff --git a/translations/base-it.yaml b/translations/base-it.yaml index 104f39aa..3eb04db4 100644 --- a/translations/base-it.yaml +++ b/translations/base-it.yaml @@ -260,6 +260,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -726,9 +732,27 @@ keybindings: placeInverse: Invert automatic belt orientation pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Changelog @@ -739,5 +763,6 @@ demo: importingGames: Importing savegames oneGameLimit: Limited to one savegame customizeKeybindings: Customizing Keybindings + exportingBase: Exporting whole Base as Image settingNotAvailable: Not available in the demo. diff --git a/translations/base-ja.yaml b/translations/base-ja.yaml index 3cc99a7d..dfd97ed3 100644 --- a/translations/base-ja.yaml +++ b/translations/base-ja.yaml @@ -260,6 +260,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -726,9 +732,27 @@ keybindings: placeInverse: Invert automatic belt orientation pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Changelog @@ -739,5 +763,6 @@ demo: importingGames: Importing savegames oneGameLimit: Limited to one savegame customizeKeybindings: Customizing Keybindings + exportingBase: Exporting whole Base as Image settingNotAvailable: Not available in the demo. diff --git a/translations/base-kor.yaml b/translations/base-kor.yaml index 56e731a5..aca2187f 100644 --- a/translations/base-kor.yaml +++ b/translations/base-kor.yaml @@ -236,6 +236,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -717,9 +723,27 @@ keybindings: placeInverse: 자동 벨트 회전 뒤집기 pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: title: 이 게임의 정보 + 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: 업데이트 기록 @@ -730,5 +754,6 @@ demo: importingGames: 게임 저장 파일 불러오기 oneGameLimit: 게임 저장 파일 최대 1개 customizeKeybindings: 키바인딩 설정하기 + exportingBase: Exporting whole Base as Image settingNotAvailable: 데모 버전에서 사용 불가 diff --git a/translations/base-lt.yaml b/translations/base-lt.yaml index f9fc08fc..7164fe34 100644 --- a/translations/base-lt.yaml +++ b/translations/base-lt.yaml @@ -260,6 +260,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -725,9 +731,27 @@ keybindings: placeInverse: Invert automatic belt orientation pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Changelog @@ -738,5 +762,6 @@ demo: importingGames: Importing savegames oneGameLimit: Limited to one savegame customizeKeybindings: Customizing Keybindings + exportingBase: Exporting whole Base as Image settingNotAvailable: Not available in the demo. diff --git a/translations/base-nl.yaml b/translations/base-nl.yaml index 3550a9b1..979110d8 100644 --- a/translations/base-nl.yaml +++ b/translations/base-nl.yaml @@ -52,7 +52,7 @@ steamPage: [b]Geplande functies & suggesties van de community[/b] - Dit spel is open source - Iedereen kan bijdragen! Daarnaast luister ik [b]erg veel[/b] naar de community! Ik probeer alle suggesties te lezen en gebruik feedback zo veel als mogelijk. + Dit spel is open source - Iedereen kan bijdragen! Daarnaast luister ik [b]erg veel[/b] naar de community! Ik probeer alle suggesties te lezen en gebruik feedback zo veel als mogelijk. [list] [*] Verhaalmodus, waar gebouwen specifieke vormen kosten om te bouwen @@ -259,6 +259,12 @@ dialogs: desc: >- Je bent veel gebouwen aan het knippen ( om precies te zijn)! Weet je zeker dat je dit wil doen? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -507,8 +513,7 @@ storyRewards: reward_mixer: title: Kleuren mengen - desc: >- - De menger is ontgrendeld - combineer twee kleuren met dit gebouw! + desc: The mixer has been unlocked - Combine two colors using additive blending with this building! reward_stacker: title: Stapelaar @@ -655,7 +660,7 @@ settings: movementSpeed: title: Bewegingssnelheid - description: Veranderd hoe snel het beeld beweegt wanneer je het toetsenbord gebruikt. + description: Veranderd hoe snel het beeld beweegt wanneer je het toetsenbord gebruikt. speeds: super_slow: Super langzaam slow: Langzaam @@ -726,9 +731,27 @@ keybindings: placeInverse: Omkeren richting lopende band pasteLastBlueprint: Plak laatst gekopiëerde blauwdruk massSelectCut: Knip geselecteerd gebied + exportScreenshot: Export whole Base as Image about: title: Over dit spel + 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Changelog @@ -739,5 +762,6 @@ demo: importingGames: Savegames importeren oneGameLimit: Gelimiteerd tot één savegame customizeKeybindings: Custom sneltoetsen + exportingBase: Exporting whole Base as Image settingNotAvailable: Niet beschikbaar in de demo. diff --git a/translations/base-pl.yaml b/translations/base-pl.yaml index 63fd83de..8fec1dea 100644 --- a/translations/base-pl.yaml +++ b/translations/base-pl.yaml @@ -260,9 +260,15 @@ dialogs: desc: Możesz stworzyć tylko dwa własne znaczniki w wersji demo. Zakup pełną wersję gry dla nielimitowanych znaczników! massCutConfirm: - title: Potwierdź wycinanie - desc: >- - Wycinasz sporą ilość maszyn ( gwoli ścisłości)! Czy na pewno chcesz kontynuować? + title: Potwierdź wycinanie + desc: >- + Wycinasz sporą ilość maszyn ( gwoli ścisłości)! Czy na pewno chcesz kontynuować? + + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! ingame: # This is shown in the top left corner and displays useful keybindings in @@ -550,8 +556,8 @@ storyRewards: reward_splitter_compact: title: Łącznik Kompaktowy desc: >- - Odblokowano nowy wariant rozdzielacza - Przyjmuje - przedmioty z dwóch taśmociągów i przenosi je na jeden! + Odblokowano nowy wariant rozdzielacza - Przyjmuje + przedmioty z dwóch taśmociągów i przenosi je na jeden! reward_cutter_quad: title: Przecinak Poczwórny @@ -576,11 +582,11 @@ storyRewards: reward_blueprints: title: Schematy desc: >- - Możesz teraz kopiować i wklejać części swojej fabryki! - Zaznacz obszar (Przytrzymaj CTRL, a następnie przeciągnij myszą) i naciśnij 'C', - by go skopiować.

Wklejanie nie jest darmowe - musisz - produkować kształty schematów (te, które właśnie dostarczyłeś), - by móc wklejać! + Możesz teraz kopiować i wklejać części swojej fabryki! + Zaznacz obszar (Przytrzymaj CTRL, a następnie przeciągnij myszą) i naciśnij 'C', + by go skopiować.

Wklejanie nie jest darmowe - musisz + produkować kształty schematów (te, które właśnie dostarczyłeś), + by móc wklejać! # Special reward, which is shown when there is no reward actually no_reward: @@ -744,6 +750,7 @@ keybindings: placeInverse: Odwróć automatyczną orientacje pasów pasteLastBlueprint: Wklej ostatnio skopiowany obszar massSelectCut: Wytnij obszar + exportScreenshot: Export whole Base as Image about: title: O Grze @@ -763,5 +770,6 @@ demo: importingGames: Importowanie zapisów gry oneGameLimit: Limit jednego zapisu gry customizeKeybindings: Personalizowanie Klawiszologii + exportingBase: Exporting whole Base as Image settingNotAvailable: Niedostępne w wersji demo. diff --git a/translations/base-pt-BR.yaml b/translations/base-pt-BR.yaml index 283809d6..ca58d79e 100644 --- a/translations/base-pt-BR.yaml +++ b/translations/base-pt-BR.yaml @@ -262,6 +262,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -734,9 +740,27 @@ keybindings: placeInverse: Inverter orientação de esteira pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: title: Sobre o jogo + 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Changelog @@ -747,5 +771,6 @@ demo: importingGames: Carregando jogos salvos oneGameLimit: Limitado para um savegamne customizeKeybindings: Modificando Teclas + exportingBase: Exporting whole Base as Image settingNotAvailable: Não disponível na versão demo. diff --git a/translations/base-pt-PT.yaml b/translations/base-pt-PT.yaml index ba022165..71c44a20 100644 --- a/translations/base-pt-PT.yaml +++ b/translations/base-pt-PT.yaml @@ -260,6 +260,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -725,8 +731,26 @@ keybindings: placeInverse: Inverter orientação automática do tapete pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: title: Sobre o jogo + 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Changelog @@ -737,5 +761,6 @@ demo: importingGames: Importação de savegames oneGameLimit: Limitado a um savegame customizeKeybindings: Costumizar Keybindings + exportingBase: Exporting whole Base as Image settingNotAvailable: Não disponível no Demo. diff --git a/translations/base-ro.yaml b/translations/base-ro.yaml index 8652e2b1..1eeadd47 100644 --- a/translations/base-ro.yaml +++ b/translations/base-ro.yaml @@ -260,6 +260,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -725,9 +731,27 @@ keybindings: placeInverse: Invert automatic belt orientation pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Changelog @@ -738,5 +762,6 @@ demo: importingGames: Importing savegames oneGameLimit: Limited to one savegame customizeKeybindings: Customizing Keybindings + exportingBase: Exporting whole Base as Image settingNotAvailable: Not available in the demo. diff --git a/translations/base-ru.yaml b/translations/base-ru.yaml index 0434c87c..78cf8574 100644 --- a/translations/base-ru.yaml +++ b/translations/base-ru.yaml @@ -260,6 +260,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -725,9 +731,27 @@ keybindings: placeInverse: Invert automatic belt orientation pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: title: О игре + 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Список измений @@ -738,5 +762,6 @@ demo: importingGames: Importing savegames oneGameLimit: Limited to one savegame customizeKeybindings: Customizing Keybindings + exportingBase: Exporting whole Base as Image settingNotAvailable: Не доступно в демо-версии. diff --git a/translations/base-sv.yaml b/translations/base-sv.yaml index 8652e2b1..1eeadd47 100644 --- a/translations/base-sv.yaml +++ b/translations/base-sv.yaml @@ -260,6 +260,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -725,9 +731,27 @@ keybindings: placeInverse: Invert automatic belt orientation pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Changelog @@ -738,5 +762,6 @@ demo: importingGames: Importing savegames oneGameLimit: Limited to one savegame customizeKeybindings: Customizing Keybindings + exportingBase: Exporting whole Base as Image settingNotAvailable: Not available in the demo. diff --git a/translations/base-tr.yaml b/translations/base-tr.yaml index 3cc99a7d..dfd97ed3 100644 --- a/translations/base-tr.yaml +++ b/translations/base-tr.yaml @@ -260,6 +260,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -726,9 +732,27 @@ keybindings: placeInverse: Invert automatic belt orientation pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Changelog @@ -739,5 +763,6 @@ demo: importingGames: Importing savegames oneGameLimit: Limited to one savegame customizeKeybindings: Customizing Keybindings + exportingBase: Exporting whole Base as Image settingNotAvailable: Not available in the demo. diff --git a/translations/base-zh-CN.yaml b/translations/base-zh-CN.yaml index 8652e2b1..1eeadd47 100644 --- a/translations/base-zh-CN.yaml +++ b/translations/base-zh-CN.yaml @@ -260,6 +260,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -725,9 +731,27 @@ keybindings: placeInverse: Invert automatic belt orientation pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Changelog @@ -738,5 +762,6 @@ demo: importingGames: Importing savegames oneGameLimit: Limited to one savegame customizeKeybindings: Customizing Keybindings + exportingBase: Exporting whole Base as Image settingNotAvailable: Not available in the demo. diff --git a/translations/base-zh-TW.yaml b/translations/base-zh-TW.yaml index 8652e2b1..1eeadd47 100644 --- a/translations/base-zh-TW.yaml +++ b/translations/base-zh-TW.yaml @@ -260,6 +260,12 @@ dialogs: You are cutting a lot of buildings ( to be exact)! Are you sure you want to do this? + exportScreenshotWarning: + title: Export screenshot + desc: >- + You requested to export your base as a screenshot. Please note that this can + be quite slow for a big base and even crash your game! + ingame: # This is shown in the top left corner and displays useful keybindings in # every situation @@ -725,9 +731,27 @@ keybindings: placeInverse: Invert automatic belt orientation pasteLastBlueprint: Paste last blueprint massSelectCut: Cut area + exportScreenshot: Export whole Base as Image about: 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.

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

+ + Finally, huge thanks to my best friend Niklas - Without our + factorio sessions this game would never have existed. changelog: title: Changelog @@ -738,5 +762,6 @@ demo: importingGames: Importing savegames oneGameLimit: Limited to one savegame customizeKeybindings: Customizing Keybindings + exportingBase: Exporting whole Base as Image settingNotAvailable: Not available in the demo. From 724ee92990474cbee698dd06332ebcebd2b619f8 Mon Sep 17 00:00:00 2001 From: tobspr Date: Sat, 13 Jun 2020 11:56:42 +0200 Subject: [PATCH 20/25] Do not minify names in beta --- artwork/steam/announcement.png | Bin 14475 -> 13545 bytes artwork/steam/announcement.psd | 4 ++-- gulp/webpack.production.config.js | 16 +++++++++------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/artwork/steam/announcement.png b/artwork/steam/announcement.png index 5c073820881e347a0dc6ac682cdedb95e952a086..a5d640058524ff2360f478c2e95deb94a5413660 100644 GIT binary patch delta 9947 zcma)ic{rO}_jZq=ilWt`rQ~#=HIFfqp7x+%gM#X1*(qy#3{_9{GXv=*Ep}1 zH*#J2>3=t#|JfP4dQ=#T;lA;|bN-!s=qF_?k>?`#r0|>}{e?J@Zx&Yq*zR@E`q|X}v`pdoGv6V^dSc$>Nue2;ng4C~U zqn#*SS>0n7PZ_CG)Rdx+qpjVanZmw)<=|aEBK0+vLrVP^C;LwZS4ltjI2N0bF0_K* zwPW#uJ`W6$p#4ZKGa$aXW>eCCd4_m45!hHYm;X|cY zRpZVS^;f29uO9lbV5)mNR9x`M0=>~V@; zS$>*ZOU|cH29YNl7*7|5;s}zXk(^-8nFXFz?t6CnA~jU4a;L@OGNCxg9L+6g;H#7aHttK$D zhoSuH-1yScQro(~-0asPNYDm1zAP|gd(>^wOHZesA%Lw7XNZeS>=;AdiHYmIMlZur zTLvh2Pa>w4UNKd{v zY#izi4+zJnAP(KgMJ5%tbEZ#@?Yq@Hh8pB9Ra~d*F_u-?&_i59k2ESa{qdU=HHcoQ z=f->ww7;;wa%UkwyO9#7gEoH$dINsA3zfjd)UkTi5QF2F$e~L;^*e$*c!}fqD0>r2 z$6QE$&Gh5MvK4u<{V}=7r=+fe{^a*{bu1y-Wa91&Z&933u?;=dglm5k!spuqwNG80 zrx)L-u_`lS!!>lMfqf(i9Lc0Kcx1rr2Op2t*3UT|`ph*}J*`~~P;A)r@9Nw(8N6FI zI90oq{PykJLJP)cBZ#;@X4eR|M~#MmUJOu&W_|n8e#HU#4$Z_dR_lnfrG{0Lf#?_6 zA^pae^D|WBti;D&!!j=)Is#*eMsOlFq6OM~hi!xUURx~;*pv-=2e$?7x#W{s2Rn$O z`-APn_o>Q-z^D;-xgyq!Y&YB%zZ#1For0a7?iP_l-d?|2XUB`r%A9}2=?-R@hG+Hq z!)%64=lRUSjuj%vwyK(d zrONdSo(n(SV;}6`%JJ5_YJ&<;MmXl+t;*GbtZ7*?&(;mp)`6P2-OK02+SK}uGSA0( z%pxaCK7Ri8i@E%s$tS@XsdFG^YEoNG9_SE`nvlcqJ)m4dbnc=siwlp)_u^w8bL072 zO(w_!e0;b5h_~a%>!;1rc>D8i4ck8YT-b>VX(v5z)6&(|oj(2^jLM^|=sDiYup zKZcL|-BPXcvznxakI!Ui_n@VH_-aje9;2#3$>a)Q>{Rj#*#3e!r7!2+7*BvCV$Uzl z$k5O(JmAtJcxQTtr}iL8c%%(d7G06yK%# z5~;8O8~@JS0lr&}>s{Rrig16x9#D)0p_Vntv-Krxe=jsmr<@yHKHkWrkd_3M)uB?7 z=<9_@&JZK+cnLjq&EN>S$Q}RZI1!a=sA!=>SP8S?bkOS~Bgjro%dRJrI%kn{mrL(v z^(7Wx%2M~LU0toCrYScs>RDU|b7eq|a01DOqq3vlY`(wU)kwfb0`P1zB{9m`o6^qpl`sSN&bKS$U4bGOXyxsM2q>dFDi+c z3>{`l(-XO?WRqcw4Rtxcvzg+50RPb8vw8DQ5_xu<-BiMGZ1T>vNJ+#Gn1T&}LD`Lb zW;3f(;K`K`XLOJeH)k>uTy9eoI0Qt=$82yPytQLkDXqA%IQm~b@x?`*l9y4TD+Esmv47{$APCo!cVkaOaCnseQ1CU)9i+Ws*F z9K)~TJLmKgROZU%2qx`ZA_}_uTf>0<9P8dX$Cp>YVd}aIBf+6Ub=Yyt0xs$FFIK`x z$!{AbS!nyI0$STsaIinz2_hd}AY2p1TkkwwkWhXZyy&9NiNKl_TDpQQQeD9T2_nno z2_|`3dc3X{DCpS*oCZ*Np3+{d=f`JCQ=7j?}3Joj_gP$pFiz3t2`=G3+>J zjPK7YA#Wvvjz9X*M>YqLhL}qIYc=p)=ylnWddzy~Wy{RUc>TTaYtt<`IXTgcdXrPS zXg09BlCn|U-$3jP8lJw>Yz09!)cc$|M64uXPnw|pX0bRZkOM*A{W>e6Yo4EP_+RT8 zdVw%hY`Zbyq$As)U;mtt>y{Uzt$pfkCTZHX_`cHkA3dkq63 zm>VGPD70(QUt-5$FodZVT&Q#6C!Bxl^TSNz1tJGa(Eda&gqQ&0N(gP^D%by=0YPBu z?0$_^49+qGqoAV>Zb<*?2?o4Y3Fxx-#;!m9wqWzH$1;LR$-YU41$ZXj{?G1UiVAQz zNUYBa`FVx2Z(!l+e<4aPa_}h~uvlLtMTy^z@Rr-3i~0wrY`APT+{#gzf~sEK!mIyn zF7zNVULcS7wZ-K z4!3{0Nq-_K>-Cxgv7#50OSf3hD2#It`)9hTbK&9CSVKcYkg2#ECCc!b@ZiVDo_kq! zx_{{8t^70jN8SuO2IoUb6`*m#5|wm?=qt0|qu!vTf2KnFAEzI?hM!55TrCLIez(Z2 z8VUb%w(Vn*ez8b9R}SKzWl9*0-T9*dBmy<7l5*rF%i3mJ)FA)prufzPSOLQd@@4tI zGn_4E^$N_?@81O1=at8CBOU<1kQm#7NE>WW1$}Q$oQQ;WJI=L6pMvqRJXr^tPQzfv zjP@N2tgZRBpPyG}LpwXq4q6&TZ00~3Kx#bwVS6SZn5F)gmU{9*BK|qtFII?6IMgG@SH>V<9OiuGych7%Dl7&^sG_p zhS|drU2k$@cvsE@p)z6%XWtWG18&5^wzvH|tTw`}JLhvcr|zQ$|H5rr*&ZB=PxfBw z4)AIurKLwgDW#5Xy&aZm^JfM0Rg2Mwqv4d+nGZ#yI)8F$Das;=`gnRS+aJsklVXn} zyb{;L;bAF2MoN9M+Z!<-krT*$L8OBavTBugE3z4gbM-FjF2G(SvWl z2LV(9>?gNcSWSOe)*;h-W9yiQsd+Y}qTS8{CA2}eXKisw1_{Jw55kz!M9C~^IpRxP z!!s#xzq^g)9pM(JXs_NrAX}&V&Zs)z?REMY|*= zQvL6XN-p=1cz(e&aefOzb=uTET1bPUMdY<}O2Fe|!fguK3GJEFK)8*X@yKx?0P`EL zj5L3U@9tVcE1ykrMJRY?aNVnY@dkrY8h$D_AWghLcyXtB>NwuaV@vu>W^~f#7LIFhe>FB0U~~|ZTf>vsR|`i`{_LU zL`_}|#-O`#gjX)oU`Gr+4pds7(tuAE%0?y?w{z#eGWH6>U5vaJmcNa*{L4Uo1UqCyd*G4+^Sj-JTI%w|RWE>f@ku1l4 zlMQFHVsv^wJm-$yoZH1R^CyR+fWBP&@MLU9u1cdvS_3v8x)TS^dGlqCQM?{=Ely77 zHh*5o0;C1!VE1-)yG)Z7|bg`5*_3+Nfb# zEsCFk$ZaR$5VmTQ%UyQtl9xY@HM*$m8}1_lXbR2iC#MUCC2j>R>QQyv*3C9Z_KNL$ z^BUAt0?AF63`xqE?%w+T^%d{&(1#%5_znm;P{Y=~Mt=VMnVpM2x$4>kS<$XOc&;l+ zzTu6Agb`S$rej%*#X+2P=y6vui}BVn7og_1i&QZOkc8^*etpu(3ZJSE5wXYkg^}kI zdB+o31N3k9FL%`23B-xIARo(!xdr{&7KOUyvbgZ_1)Sl?Z(np!#~yBd|C~c}(~pAq z_iBA}X04Q&KV+sF#hufNVD3KV8yZOw$6a@g)GIVfH1k7S{8h{XnC1#IVXdN6QAxbXLAtm~Tlojf{*u zgG6XXh+7d*O-%Ymiky|>{3jy6xb~ynwQ0gV;vut1QOMNrnVM;f>C^g_fi=_a{Af%L zi`e{Zu@q~5Qak(bye*0^JhU0)&^LmFp9!PUb;8W zM&P4OREO~9WL*%sel9sb3p4Y|RKb`YK2C5S2nZqv4FApw25USz%{<~&5aM^TR z%g)wvc^~k87_PYA)=k`w>3~8Px8 zKu6o-N`GyK&jk_p;X90>9xst!**X#R7w-SyAu4DLx^YQqkY z$0UKprGVerV`pi!`0Q8f=FNU<6~lHq^sDs#ZUy3c%n~GIHle;;!^zG3wLx9r%HH-9 z0U;w%*wN&1b&$316}vSjnC-5fT24SK$K?@@c))!pz-W;Pm`m&9BkjUdR#{V-(;?-=}YU z>ljdSC{PIeOI4z8%%2xSoZ*UqNx{Z$j48>d3Li{WwvwD;UhCrY4&@>J$&&ciEq@Qq=*!0$^w$mDC06 zSCc?h2ADRblxc!`l+S~2y+)=7{;Z=2o26#OGY1*8ze?TMak6C8l!QmlNIPpy%xB_U z3f=cXsq4zvs~1kY-6hN8A_C4WtBdJ7nDVLQ_Zz0&o_u(Ib2l+r+pwAEr&0#Tz3T$H zLd47`+MRmC8bfwwDY-x|2V&bC0u+}{Jr~~2+JUWIwHa-3RM*wD@prwls+S$M8m8Rl zp?IDzWpV8VY-i$On*?$8_FHPDsh$YZfnGfwC3bxiQrrK5Zsf3GU{H-74B) zmyHvM^34D=eC#wUyEQ@nmX}dKZqlNI~IPI}F#U;fyy%noNCk=Hpxr9jN-ZnzJzhp*z*6Ih!V3zfQ13f( z3aYGW0aj6G!!sINbs^WYkd(!0PBR$WX`~QaJ$={mq(`(VCY}qStbb-_$dB^_6b!M6 zt7*e?FVI=FP`5wjZmCu=@cyh2SnR{wcCY8EZrX-i>)7=&oA^}&c1bqksVG=#T}uv= zp~M%yfA4HxD4Usd8mS6uzrX4#jxnbp1~^FtFFgq)rGtwCbpBYw(|w{tH&SQDw$)wT zb)o4?t;iSIQlKcnl~=y_aiL32oY*5hv=jfSA zHO0dC&4ExYf>f+PTwjMAxHhugqWaTS-3)vgH*tRVi+5w($Fvw@&Y^Pxc!jJc(FaP` zEN%SN4sPdrpj?Q#d5ab)<%)wz5pPHyXdu}of4n;q>VWZO7Atq#*`Ru=r%hqGqKfa% z>~=!|juKZO-bgGgp>X3CD1ai`VtfkuPX^9arPr^vS~SClKkb%C$qB&OWf{C$g}wdD zrUB|t7jncc6yhhuDZ%j)y5f%a?6$sVm|>jnT+-%-RlNQVC# z)z$8F9}5md7t=Vk&+il#9UE2_te{G@d$-tk8eBK8(&T>gJ`tyfD-A-*;pr9&!u1zE zNI_n~dGNvYnL*taTW&mfI|2Oe?x{#<2uow`Y(lVqE*)fwCZoRZY*r+IK4_)Joi{`A-3)bYid}LQ^RX#z=t*7s6}R4oLZvm`jubNT zv6)pMjE()-)_u|hFza_c3#vb=&)wErAbEALzXs9cV7$`Mk?{IgB^U}KV`;IA&8n@w zs5ymftIzZ|Y)fcbd!}xem*tXf;jiQD7g6k7no5Zja=Wt^CUt1TwH;L9zL}-z9{h@e zk13k*7i{K7{!r2Sg)~NAWG}Bld_bC{)Yp=29V%f`>}8hm4O=xWU1i)$BNYOBdH2AG z6{h-Ol%D7Oev6;NfvD}YtVsJ|U4Gf2Q(kKUTXR} zd7paSTxaEdq1(-vZ}0i|_yU%%murGVa$Zd18B`&wZgFHW8J%vSn{Zw()!~jYM(k1c zQH1ViOFiewTubC6(K^m7lp5A4M15Zki0eavkf{yX&J% zYi8>6;m5LtY9BtB{1hcyg0J%XKDY9Uv{*!XPI;2_xS$hEu)_1bYg6Qus?*4Hb=#`h z&gim>UH2ywTG%a*BOh7(zmBxPm#AC>eRdKr`1cc&u&|r zQv~QOrKO4a@!KdAAM=~FU%yCijqlN=T^hw9>&uxF%O(Hv%jK06#Y{WYr6uS>dshfH zPX=|t2i(q*#`omZs&K4Wtz6w~ug}Bgoh*HRs8Mm#^Au|}MZk3!1pB?DcCMI}J3q9R zLoshr+$dgrJfdS8X^FjF82ron;d`^y+|?rQhx0d3ZI0ghbKqtnSpc3bgAyP#zz^K` zDXkzOMQ%mozlx84;>9QDozH6Zs5S$tF zIMO2ca>ifq(847sDAJ7OH-aNLgqX-XSTo~$snb#kl02Et!-*(%e-QDbq4325z;FC_E@lC(d?a#UqQ9=a2~7AGr!ClM_8<;Q+zW0@1&3x zy-`rzXi36d3aa-gqJ`Ep2K)8zXaKe7xvswYodd>}*_4QR;On*VitvPFQkM>2+mZ@8 zqg4=T``Ty$rc^vt!S$PIT&Eye7ryDDIdZ>#_v093k3nXgKX|!0fMUbh2U^muZ%nBR zrSxz5fGQt;dFJ7(bUd-`*3&lCrjGXZp(4h$UBw0KuLpei-JOj_Zk@QlfOm?yJt>QX zGx+-fcN)Y?NoiIXj7|H#QK)(aZR_4%s-JtWrs_aECntiqTwInx$xvAe3voY*EY~NL zeSAst`K$$&ij*g1X%nx9KwJj}8u7EFhHpHmmr)2m>Pi?zz`RL7d#*n<+b| z)mn0q`IcSr_tgTDN3e+9#;se$xwTV|We75u0xLsqTw|V2mSfKrUmI12CK7F&h?C=z ziDMkY>yO#C_4Pnakd&XgKpeOXGez;-9fQ*X;=wUy=9~z>pDdE^G>ev$bXMFO)&b!l zgDC-e`YyE%;`{re#oovn-GOH>++A?C-Ydzj785=kpG@%}IzkXPB})R6!h`y$c3PTQ zeWPQ*lA;)#%^L|_%htdX-<&gmi_4FL4Iv)>*2= z3B-~4E^p_O7E31K$rmGMByfe~I+7rO^!me+sg`=#z&4ykr}kvSU>~O|jkv?)3D0fK zTWpORs23=AZ8KWa#D}A{5vVrV(wWe^PHzaopF>|TjGlkX`y!Der>_^T)vd3usXulX ze0P8#uN2RuSTk-{AWhKc+QGAMFly$DXG6Zs=>RzXbQ|hM*l^9xeH34;m@ZIYn=I`E zStQ-H-AYhn!}X5c4dA++Q704f@Y;;g@QC13b27LO5y*v`3!{o=vHhTgduac8dC~Nh znIW%n8ToGx(vuj<{F;v&nSGxF!8$rbs_xF05hq6lOw+$*6P*~DSPC9og5o;wFc{(a z=oub&u)4!#bv*x83@mP0P36|^_zW&mNTLvJhpp4Ot- z=MD?`a>-Fge=hd3n1twr2@(+TGt03&?uPgwT9kexQnV<0oPxoy2&Lm_W zzEW;K3UYa+OGA|)L(%-g5AcU2fD-)uzpq2ISDEhWu)w_E2Q`FGS7=1%nkE@JS?enA z7>M{|_x(ND-u*B6Qi=~9;^t2lQBLgDK|B{)oC7~()~>V zKoZ_yl1?CNL~)vb9h3b4Dlj5;!PB!VrlpDPww4Xo$Mt#e)kPn+R4q&FY#V{a5)uzY zTT}BjtwX`CUXz;O;3pyL9ri3rALdXF;TMN7*II_{!d7xq?BdeDubEEPyL2a7*UZ@X zi1j_Bj*`*{yu1~mp9|rKs!{!=XMp&3YvSG@NIdQ^dkWoJ$E^#|HpUr#io%&d6K9eB zLJlZWPoHsVC#KphRlv0IYY^71G_8;3F3Shglkj-ISv}o)r+KDR`D~KUBMyY2gX(+q zaPb-Q&%0IfFIcWlAvS@dF1PMBf;AttFM}q#T0-)mTz0cxkW%a);NAdygM+J?zQt2| z=KB)JftBXwb1{G>X7|G`OCsBEa<+U7SvX+sSWzkxQ;uVob=P3W?XFK@HhTWn{@NcJ z7|`Ubw+rUFQ%Y=V%5r7TwirFj$*m$sgstz0Y$Fd<5`KOUAe7l~ziU?Wk{ac_E0P;T z!;^Z5ZKJsdK&j$q#D{FmS8Vo|N>`0>37q@>k#=h)Xdhg=!@C9!zr3L4$f=)z=*%Tb zx@Bjg?^62v3H@W}o_)s7xBXO5nvx|ieR+M}PrE#uVLbZ9nN_+{^vEv(youmDvMh4z zMEp7Mo=q%x&jx+?7VJ0mtWE8e_X8>t5mgO6(JtNaWJ*-;0PnnC9?`KZ+QRXG!6ULoDwdLGcSBj~rp+J#rO1%l>{G ziR3&2vQc61p?$uQuQvDDL$)Iy+pr4!NNgW?)98QRIFjV}nedSldlI~oWX>;)y~=O+ s|7gg|b^?igtFDB_tE-;*ZT>*_zr1sgylq-=mU@_vyZtS3E7M6+an=NjAY3=cCu9( zTNq2oIv9*$mhY{e=Y8Mbas0l=@%0CXx#zyFbGgp*I?vB_EkBC&exZKct5V|}J&WSK zD+(G4Y8r}a$)@=UAgk!CX8+*I14jpS6{Y0QjJ&K@{!6qiMrc(t)A{57 zH-Y{?Zzpe@;7vv_|M7pD{wMRuafRd-776h8Jc~Hrom)m`u(KEK-Muu=n%=v4&G4-5 z9b>Z_;5YdG*JsA8PC$BT&*ZUVGOf36T)P)Iu|8#k62aR4+#0sH>U!=%jKOi}Sp4;y z4iC7yKc5hgs|kMYP5xKR@Y$q4{$zf0S7Gdi$uUB{)NK3NY88L33x5i-q~GqS>*euk zy>0oIb-2Ux>(~j-?pq=gFqRwpjf>^ZQwcSL-5QXp(f(ZRC1S|cE`juQ^^hSHX$UnA zX(4{cQT^$T{fR&t!;dE^@g?U$_>)`j8Dg`d_S?-DQ`<#s~Q@h8V5}Ibz?2;raJ6` zH)mSczk3QyevMgoA1${rNXs?b_A|;>^Ik5@%cN+uYZCe)a&U)!SQ4 z7nF)-%AN?0yjWXb6&ku~6{7lhOraE8m*iH_w3wjj|A9t~{4&#k3k@6;zXWSRPU&*4 zZ?suz|9n?F9ZcSmT(lZ)GY39;;+n0)yVB)+_hEL3EqG!46`A%QKYlo+xvSwD32T{* z=3>v@ZOp~WXW(0?+iA2f9d-u`@&GAXa&Lf?CmJ|I9mrBmL*&piaaj8fr1DM|o?@`D zC5^`msdA`)rnQQZ?T2H7J9*MPCq6vdUBMPiNJc!ct659rB|EY&03ob+FKps`E0dV; zdwr|n&wIIJOt=6XrJ`vs_#m-qvyCvNUVHjPe^Ur?P!)j{>JF~yw-25ENC>m%;BN~I zAq=R#vuPONu!J+CUNV~Zg%o-HS?#wP-~Pbdt${Yn=a=5J=%PayS9JUtMn7~Cb(0?^ z-b%#d?2uxUFELU;MtBYjDm6`g&9KJ(yX|&`G~~v;%+FWB(XMcyUfYNU{g@4wK=w7z z&~Iy}{8yiv-U~{}dlRydl2(7s+%NgM8|wSh+-*DW`XJFC^G)G?5cEnRwuinF_v**$|e-8k&^+mbtQ9b{@#Ep=MqIOAF~37vy<}U&ZD^;@43*s zo$s6c4D`eGr|*VEU<3wB6kbK*C$Pr~2h(Zy3<&P>*Qs+vWmV& z`*tT*jwJhjP!NLyZkZs7=*Z^aI1K0=;+=MR#HC0P%?+3r!{wHKaLN}F+tJ*TfN1E> z7sX*;fJVf*{X7BLmFw)$F-Q;1dHmtF6)e6%7-paL@zHQ`n#}#Ax_p~ay48Nj&{!iW zhE={%!CUQ1HOAE;gHMYfNc}q15RlU1_K@GRqJ$e4Ovg)(JJkzaAkGLcogZ;peQT{iFOiO$5WZDj zObERTnv4bIal(8OXKZ9Nc(N#gX{378*7wUzHy2Mu8xB-aT2SliaaRDhAg45vsk|gf z#XyD-xT+`M0$MSK8_GPP^(Uo#9(>+7Q?;J?FtZ~qy2ia>xwNeO;HSPtKau8dpZYJj zvLs5Vg*4!KVyNJrV1ynQY|A7#--OFJXT=g;{jq=9aZnr}@9@s1veOyBcV*E<#l@rL zO_xk$ouu-sPY1Ow0oVtgnH`90T61?0EfuU)&*;jk3jXENqB#Ou);EKDls-FXQJ|vv zKwekQWw;^{bmr6qq>xsxNbqn^=vfxx{gHFwP98QAtftz*$LVqx_ZVD}5w{?w7lIos1G? z@2^N|TknG*!vzavMMeL3l&{z@tD^s7$MHBpPuBtI<#kDh)D2F>1+%eT^dA}XMuaf( z(v>xLlw>O6#5{s}{%9N$Xj!+We!G{!ZSzZj1bN>%7Gj)`fkSeC2%RW6nMS1xAh_-M zIOv9vUH6Ms$}O@iq`5qu>Pmd*!pwLy_=U8OIq^=gDMy`LZhQw#_c%oAk-gz z0Br^8B?FFg3Px8ZjW<4Mqm8SE|8Yky&L4EmuO|$=;CK8MDC%A_7=-c5EP`Ui;2;;v z(MzE4*WvNN;~}LV*c=Kgs$*1YsqvIDWvc7+|MLy-3wpJW9?nv34RH; zTsnH63r5Eprkts5S}*xYCTNIG`U*5XF#G15T!aMTWaQD~BLNvk9`4;)ZV-Jn&b}jq z=2{|f5vz>@ToGPJ)&>62f%hgnLZ)u#t1&x?{6&XxL?P#1MgQ+PerbuV#oU(hCCU6W zg|kD3Ej&F;{?_nFj3yRTM;ep#I{m>JSi5!EbSoH4zcl26okZ>J-5DMpwgVFn_fol( z`+5^IY8GGfqKhch#vDFiDBefr|Ju;OS%dBnr#ltUtZl7vBw+VCtkh+Rvh2Ni?8 zXXe83^Y_ZwyU7eVarG9A+fO2+SMqB>NPZO^XFI-}BfzAZ! zH9Y9U2+Yb2_&d9njr=Hoi+Y_Rv9Od}v24npOQiG78lR~$M@IbH%s;^m#b);+n#=y) z^7Xu(@Vq{|@r%FxbW$b^8->XvT02aMe0T=MmKOVGXiN$;wuq=PRM&012Ucuk~kHAP(yRgWc z`L(9X+~3aU4824RUjAA*9`JZx6t+xi4OXpK>5<9TUjP*W9m`ASW=*^UJ~EtyiEqs; zMf3h0FTY(f@^Ct@gFN$;Gcecqpmpfoz<;fHX4L6M=yKHeS3wv8LWc-^9D*LM`TA0e zN1T6$+}}f-1c#W7mBjJ}|peHju{<_gr z?MpBD?*#~&e(x|jS4@WX=aNZN^FIax*Y?U}F3_+HxwE{Bj`+`t{h<0m`3c{nFlE~# zS6f%RE~Ho>{d;bP;+u$EE@;d2f3Jkotf6Z-0fVkbsB zzTG+KN=i9l8fF&qtaOKZe!~=-S@iGp0;q2Vmig0_?YYOFhPn40?oTs{Xa#OU@-hPS zO1{2%gDIu-riw8QUz_}|m((k}oEsrtbM-@m%}sQ%EDfm>oato&JEnf~XJE|Bti_+i z==|-G3a(Fn3uES!G3LC2(bvq=jpDHJA206qNI3<&r-`j}#eR~^L!288U>**klv)*GO8MR| z=)Xbnf!217LK}W27^FtpWMbEcRxa{tS8N&^6 z;x2^YZohS{iEHqeh6ingXkqRMund!HA#an)Kb8kfN}yNFOh~mF6zz_Saxu4YU$ybi zsxd20@QD1yn(rQ2zC^JR@@jd5oJE1lWOg^;kue` zVK<$f{QGy$&3w++9kl~=>!(-T*t%%_v&BqPDXi{+=q*U*G{5T-Wd1mfi+HP!Du#D!MbkY=T)mlcb zldovElU!s@NAIG;chbaYv$-?y*U9dv09+{Xspi?@3NQz;l?9_B8`+Q z43gJepdpJH^sJ&$#&s=kF@gaLoW&=MW30VeY0w0)GJWXaBYCJYT#RwOR#>$PrY37U znH=MT7|g|Alf8R1SKcPeWS-%>DG-1)gpO8J^=YN++mYvX7x2k^91=JhmB>RoShZ_0 zU8aTp1oEfYL!G;~E4SghrenR@dt;7H<@Tua zYvmq|-fpSvdhkMQ^G*9{NkMFKu10S&8(kR_*q3a)U$q{Z?&Xo5uj}_sbpSFdj+^_e zSC3Bm^!bn4Fr%hfqAqf3p&@R z+&JXCM~7lt#SJWL+AO%O0vlj2GVD8~9neEm4-Ls0@z_z-)^74&ze#Aa8849ZZbL0s z+^Hc|Cp}3^bWOfBbaJ$A@8RGSqRV&5WbQ=1vPZjSLZ23{nAFB9zcyY~JI!;^Uih$$ zPe=Y8!-&I~y=M6q@>j4N*#2rDUu-45flrgSYYyIBSsdJobi}m-QJh0mihmFTnGDakM+1v>+wah@lqaeZMsjf&DNeqr4$^z zY#-chB2Ejff6Ac94!nQ#?D(6#Hg8HJd5#oBb|?V?c1qvsJhg6cpn`H%v`Uqd3J9 zXo4z*!^Ti;vcqp32AOm=!>E)Vdx%!h_K%km`Y||WAiRqS%s94G^o|0WIBkR^maLpfVrw9_%G&^Oif0I$zqF?~oI%EZh@p?rW$04{NeKC+hv&_7X!@fU!zE zVoCD|!Yq<2?5Doh?{*Lgr^D$Q5pHN#U>6W!SxTa9tLxLdTBBtt(#V`fC+{#QLi4PX&QMU^}5L1xXHO&08>i_%P3;ag7tXnK%w4vd%X{s0T4EbqLVGAS{FKelw*J zpfreZ3U$Amc7`Z0>k0gL8KobnA{`e^oC*NGn5~Y!3!xq2`1H!br7cT60$;@8JnBx* z%YyKAo}?YH$&?}$O*K1qH{csh7md5PSjrBz7y53?(ZV@(U>DI+P0j+d^dd-I;JH4> zES~_UXpEtz0o|aERBVff{TQ3u;@)~~hf<<9u&1xXrTTiGi9<{WLEhhLEqIEyv;}$H zZsha50H$TxD{O+{S+gDZ!S5nEWW6t$vz(K4eyd-r23H0*D!OzW_UH4AL`qmt-t4He zj+1c~aGv5!#SKVX>y{n4lgA!VD+|6}Nsg|pOFk@<4}COvDnrA6Ei6ZKerCI$imwHP zd8flFkh^8x$J^jX?%63R3Dn3}Yvh=p&?X`z@ammv6N}pSzjwGfucd6NL`L@1Iq+rq z@9nyJ*^T`~t2+*Wg|_rC^k$%B9`azht}`NOx;n%nevRKA9+5``gou;es%4C|9h>b( z(G3s-aIu%oL#}SzgJbtEx9yV_g*>0tzE+cJAWny9giL{;Cmh2vjhOdJ^_6wxgWcp@ zm~iP3lVo#Y&7~`$Os8f9#kuqdX~d=?p)LEJtLs}nFjek2tkeD=lV+|b@?&*xeG zFv>-w>O$~nPJngjE>^eM`C*!YJmuREuob)Mx^=@ux82!9sCu-2?zt1r^iV3NTksah z#t4z#YunHkErgu1Ug9*v$jp+?%R>jJuxc16=1jRwh{;&$d$x{wewcvO`Hk40$D zGB0xLleB!AFfO*_^@tpLz|YXCvB>WnE*jg(4cpS?Y{2S^2C0=pJ~}hUVh+HnhgUvB zkm{0%w}-V2SXi6*O};%p_>Oa!(%D?IlClq?yt=pTPPMv*tsyu}~S3Nf~(^U=~6Z^AIEW2Ozc1Itx6ubF4p2H`!w`jVALS;0s z6mi1cVn*FO4eMM{BR`^DVMjSAm4v1zxt%g*(#KYv-rc}m`4N)q6ad&Z=H0jbdom(w ztKYCIdAO6!j~wgjS<@+QXszxRCuBBs^+ELRYnxAbJRU&6snLEJtI+s6%T92fkSKo- z39$C&g>|xhd!ZS(#g01Xuwv#sy{KfVFr|@dL#i|qBkUV5V>^itD6Q=wg zli8!xt~>&^L9Z1C`;?T_)e!J%-xJay@Xi3`zL-jIiZ1dD{1h8-&TDVUDx~9*Ui7)( zOjcCjhWLDq0I;$hWiN~8D3zOjI#=>(TVQGw3_ff+YuZVs>iFt&gFPrwVMsSzr z_qMhUG^~_7SCKf2+!@E0q!y0x-hvOLi^cg2a1Bz`R^s`6ZF|32!<{%2O3R%38p7)= zorPmd6NWapPzO8>bg**_=pp-L;u^9qCcoMlGcB3lrzOS8zGD+?BjyYtrv%dduE7f$k% zhNMBHVoX=o6C125^HU#g`0B8fpn%grStx|#9vjno1I3m`jO^H(#YGx9J^;ipo>l+m z{Xs>8^s&}gjrMoFiKub?%?#!sdfFpn$1?2l9H#*%cLIhx)<{BZjXK>jg7nznOlLwI9F&V9!tEI-L`sxC` z1+F_z`G0@6K6wrKlF2+6sSr~Y*pBE$w2Iu(id9)s2d3uwR}sbce!)UIx6@$kN>n`g z_Pq)tb&-WBfK4JpIGbQ7I_Z8#MAN^0SG95PVAWoAuSbG2(Z9k@>#0thzE#a*fuN^5 znrPl^u{aP7-Pm_omju$rTl+~J@8&`v(JycOCT+YXaKmrGV=hBHR5=|mOR!*9ug`?%U2w@bUj7q4Ns1$?b{5OreIyT?c`TfHq)AB=Y z7Sx=ftrya3GY}}*E4A`rg3MQ%bh7&l+x3Ac^oSqaXlI9l-(J7*kW&QufKoD z0HgUIQBHlS*pLYDD32p=dFzIAub6xK{kCn*^tlAKS=pDy>QZTe zV&ao^H#m>y^}gDTY;ZX3T9 zc1}fq<#68o^G&}*@!w1Ap|MW#YGxh}orE^JI7-yj0r&=Er2Z?A-YqfmQ!O@Ai5} z_pd`in78L?V}LLI$DYN_rA|qnGQO)q@*OtGvPNAlbyy$k>K;TC(Nze_|qys=qcKYX*~IP zu40RvQunjvn zkDYiNPFNUgqZh0GiR2&OnZ}}d=-0+L9l`Hw0U^n{cQaV zy!dBrR+M@kadJC3H@5gNg+%A*ZP)Ehx@&)q8=_(kF8FEk%*^e(yWi4&E6$8^PJ>WR z{nTMJ-#XhijvJJ|$imkc>R--TOP(?;qmtxQ&C7?MfslTJ5MDih=Wp_DUeyQO&u+=^ z6)iOmGn>5SGuQxhdO9kHwwhu!mpSFEz-=IkLnL?+6V`I@HLX6#CCcGuCf<7a9Otir zXaWB)%6NH~Iq}aR7+05Ma(U)Vwsgukyfl)kW0(GXMy)Kp?wpPsBCTR1CL?{}y!jB= zl#^QDb}=i2T>yULWp|k+1ZZ-7cxP|xXR+mB$ty|*Iyc_t1|IGUN=kiYHk&*T8MRrS ze`6ci8plWNW~ILGZ{L$aM`nnjavsu^d4aVZzL{XuOT6}5H`j|jaWBin!pxBKai+5D zhG%#Kp1%!v{d!-oEpF&-bnJ(Eh4=Eg7(oC$QJs!GiP~U@Ix=P1P?++SA>F^+*j{-n z%Hc&6=L-#Xzn+&f?j_ufH#*Y=dC>m&E4U0|S9j*!j9!IYpX|}kvkvJ74X;HygFJ2i zh1fz1t+rbNJCTYeYA|Wt14S>5r=I{Z(pE*^;X;;LYAS8g0tDz!m#Aei769w3ApUZ2 zYHemz^hZ%T8^^yMJ9NIIWOinJ+@_dZ?y=m5EeU7M$#Nq7=5CPvZ42{n!~LYt4oXYG z)!R(sj)Jgp;};f`6W(A6Fs6D`O_wJRZ@oZ~7Z^mwN8U4;Pi}zW?CPoR0%fT0x_V#u zr3<3l703Ev+BqZCaS&+myp;Qz0J4Y3vx9-lX5vQrD&P@_7(2MN$J}4$kv3-|-3=jb z$O8T@cj%=z_#ov3Gdna`B&9CTk2^jh>Av4zf^bB3a=gB)>@1cnRR8KGm_8$nUz}+- zYzkB4z1rpZ0o$OWC0d3JWHX8<*e*avW?S?u`W=nP9=0VwKGSv8%87;((tU#$r&uny zFn24VW6BtPY`pndix6HP8a4T;tfzbv3KuwiVoa1qm7K`YrADV8aH95~&L6&D3sX)F zQ=S+9ynEskBR=|Hj_C6Gh%`i|-+_LQrimI^83x&7ndKW`KQ+$uR~!`SNhggbrQgO~ z5FW;SYH;QSh=tN(bzoT*<1OR()PnMPUdgH4uwc47O%)wOpVc^;3Lc@D)yU38=Yg3< zklyLar3dO&O*8b|+{}vo%dgkE?RJ-L}%c+a>!OjY3M zzJH>6Zo63qqDeW4Y9xe*Z<#o|Xf=Ze#V}nJ{mQC}4`H<}nmvAvmUy{tZhGTGexFOg zCFBc1yHCCRFv1jG5Abkc{r6WnIb%-tI380FHv%=?Yku{oiK4dJc4 zD9UHzctGHzpi7rT^-Vle`gmZS4oZNMGkBP2W-lU>ry? zL63hvB`Tmja7cs3X+RqBJk8qYRxeS!(T}$I&2;OP)iiZgAMVuB`DG@-tMvhFOc z5Jg$AX!bG4;FNnT1EP39sO9Y4ihX?^SUA`rZpZUjC_>&0qDAG-GFM^l zHQ-U)BDH=It4#%y|!S6VIQ=FKOF)Vh$>1lduW7mpx@0N*Z| zRW6;t{b-{#4NMs!r(og5dULKpqy>QbB{B5zo{*^d49J6uvv!a4{wG6B4svV{!W^5u+rJ|8k)1|DYWv2wVI9IdAB$Jt2l?f(qf`Jx~D z=K1Qu5gY?V^0rOL#b|?O@BqX$J1+Xdt5BaNwTv`kc@*XAqQYT{RsfiDTerUQ|0Y=0qylJt`}0k}D092%TRbTtl)Eoz;!*K}NX0z!G$UUf!nt$4XOyE!rOunz@rIh9RV^}f z-B$r*$FNG6)!r`F$!#td}T%&AT~+ zs*hw`L_QNJa|=GkEImyag5o-)Y}oWacExW)cYTL+glY=LL*~$cP34@Uv_-j0i?W|f zz>EDL9AZA67V`5m$o{xhFo9#-eeYL3n}i7OF9Fmgb=)SJziiOT@5@B>$5e6A4Q@Ab zqO>_`e})OF)~wpF0>HmyD|{mQV3`zhC6bS`ODEfKu>IGSz;g_AeGSKwuZep7eMb=d pz~FzoPiQ9cC%CsCJ9eJ}6*l Date: Sat, 13 Jun 2020 12:12:47 +0200 Subject: [PATCH 21/25] Bump version --- version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version b/version index 9695327b..51653031 100644 --- a/version +++ b/version @@ -1 +1 @@ -1.1.10 \ No newline at end of file +1.1.11 \ No newline at end of file From a2d0024cb19f9770497ac4db8257786ee5a77d24 Mon Sep 17 00:00:00 2001 From: tobspr Date: Sat, 13 Jun 2020 12:20:02 +0200 Subject: [PATCH 22/25] Set date for 1.1.11 --- src/js/changelog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/changelog.js b/src/js/changelog.js index 64b45357..292be78a 100644 --- a/src/js/changelog.js +++ b/src/js/changelog.js @@ -1,7 +1,7 @@ export const CHANGELOG = [ { version: "1.1.11", - date: "unreleased", + date: "13.06.2020", entries: [ "Pinned shapes are now smart, they dynamically update their goal and also unpin when no longer required. Completed objectives are now rendered transparent.", "You can now cut areas, and also paste the last blueprint again! (by hexy)", From 6febaff100015f5bd2f4aff13acc8f315c067a73 Mon Sep 17 00:00:00 2001 From: tobspr Date: Sat, 13 Jun 2020 13:22:20 +0200 Subject: [PATCH 23/25] Fix untranslated button --- src/js/game/hud/parts/unlock_notification.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/game/hud/parts/unlock_notification.js b/src/js/game/hud/parts/unlock_notification.js index 20a4482f..7a5c923b 100644 --- a/src/js/game/hud/parts/unlock_notification.js +++ b/src/js/game/hud/parts/unlock_notification.js @@ -39,7 +39,7 @@ export class HUDUnlockNotification extends BaseHUDPart { this.btnClose = document.createElement("button"); this.btnClose.classList.add("close", "styledButton"); - this.btnClose.innerText = "Next level"; + this.btnClose.innerText = T.ingame.levelCompleteNotification.buttonNextLevel; dialog.appendChild(this.btnClose); this.trackClicks(this.btnClose, this.requestClose); From b543d7f6dabd3d248017c6ce15d8c4ff3f3ef36f Mon Sep 17 00:00:00 2001 From: Killgaru <46816881+Killgaru@users.noreply.github.com> Date: Sat, 13 Jun 2020 14:40:33 +0300 Subject: [PATCH 24/25] Russian translation finished I did it! --- translations/base-ru.yaml | 359 +++++++++++++++++++------------------- 1 file changed, 180 insertions(+), 179 deletions(-) diff --git a/translations/base-ru.yaml b/translations/base-ru.yaml index 78cf8574..df000264 100644 --- a/translations/base-ru.yaml +++ b/translations/base-ru.yaml @@ -34,9 +34,9 @@ steamPage: Поскольку спрос растет, вам придется увеличивать свою фабрику, чтобы соответствовать потребностям. Однако, не забывайте о ресурсах, несмотря на то что вы будете расширятся на [b]бесконечной карте[/b]! - Поскольку фигуры вскоре могут наскучить, вам потребуется смешивать цвета и рискрашивать свои фигуры ими. Комбинируйте красный, зеленый и синий цветовые ресурсы для получения разных цветов и красте ими фигуры, чтобы удовлетворить спрос. + Поскольку фигуры вскоре могут наскучить, вам потребуется смешивать цвета и раскрашивать свои фигуры ими. Комбинируйте красный, зеленый и синий красители для получения разных цветов и красте ими фигуры, чтобы удовлетворить спрос. - Эта игра имеет 18 уровней (но и они займут вас на часы!), но я постоянно добавляю новый контент - там много чего запланировано! + Эта игра имеет 18 уровней (но и они займут вас на часы!). Я постоянно добавляю новый контент - там много чего запланировано! [b]Преимущества полной версии[/b] @@ -52,7 +52,7 @@ steamPage: [b]Планируемые функции & Предложения сообщества[/b] - Это игра с открытым исходным кодом - Любой может внести свой вклад! Кроме того, я во [b]многом[/b] прислушиваюсь к сообществу! Я стараюсь прочитать все предложения и учту как можно больше отзывов. + Это игра с открытым исходным кодом - любой может внести свой вклад! Кроме того, я во [b]многом[/b] прислушиваюсь к сообществу! Я стараюсь прочитать все предложения и учту как можно больше отзывов. [list] [*] Режим истории, где здания стоят фигур @@ -98,9 +98,9 @@ global: # Short formats for times, e.g. '5h 23m' secondsShort: с minutesAndSecondsShort: м с - hoursAndMinutesShort: м с + hoursAndMinutesShort: ч м - xMinutes: minutes + xMinutes: мин. keys: tab: TAB @@ -112,7 +112,7 @@ global: demoBanners: # This is the "advertisement" shown in the main menu and other various places - title: Демо версия + title: Демо-версия intro: >- Приобретите полную версию чтобы разблокировать все возможности! @@ -133,26 +133,26 @@ mainMenu: contests: contest_01_03062020: - title: "Contest #01" - desc: Win $25 for the coolest base! + title: "Конкурс №01" + desc: Выиграй $25 за лучшую базу! longDesc: >- - To give something back to you, I thought it would be cool to make weekly contests! + Чтобы вернуть вам что-то, я подумал, что было бы здорово проводить еженедельные конкурсы!

- This weeks topic: Build the coolest base! + Тема этой недели: Постройка самой классной базы!

- Here's the deal:
+ Вот что нужно сделать:
    -
  • 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)
  • -
  • Deadline: 07.06.2020 12:00 AM CEST
  • +
  • Отправить скриншот вашей базы сюда: contest@shapez.io
  • +
  • Бонусные баллы, если вы поделитесь этим в социальных сетях!
  • +
  • Я выберу 5 скриншотов и предложу сообществу в дискорде проголосовать.
  • +
  • Победитель получит $25 (Paypal, Amazon Gift Card, что вы предпочитаете)
  • +
  • Крайний срок: 07.06.2020 12:00 AM CEST

- I'm looking forward to seeing your awesome creations! + Я с нетерпением жду, чтобы увидеть ваши удивительные творения! - showInfo: View - contestOver: This contest has ended - Join the discord to get noticed about new contests! + showInfo: Посмотреть + contestOver: Этот конкурс закончился - присоединяйтесь в дискорде, чтобы получать уведомления о новых конкурсах! dialogs: buttons: @@ -171,27 +171,27 @@ dialogs: importSavegameError: title: Ошибка импортирования text: >- - Не удалось импортировать ваше сохранение игры: + Не удалось импортировать сохранение игры. importSavegameSuccess: - title: Сохраненная игра импортированна + title: Сохранение игры импортировано text: >- - Ваша сохраненная игра успешно импортированна. + Сохранение игры успешно импортировано. gameLoadFailure: title: Ошибка загрузки text: >- - Не удалось загрузить ваше сохранение игры: + Не удалось загрузить сохранение игры. confirmSavegameDelete: title: Подтвердите удаление. text: >- - Вы действительно хотите удалить игру? + Вы действительно хотите удалить сохранение игры? savegameDeletionError: title: Ошибка удаления text: >- - Не удалось удалить сохранение игры: + Не удалось удалить сохранение игры. restartRequired: title: Необходим перезапуск @@ -211,8 +211,8 @@ dialogs: desc: Настройки управления сброшены до соответствующих значений по умолчанию! featureRestriction: - title: Демо версия - desc: Вы попытались получить доступ к функции (), которая недоступна в демоверсии. Вы можете приобрести полную версию чтобы пользоваться всеми функциями! + title: Демо-версия + desc: Вы попытались получить доступ к функции (), которая недоступна в демо-версии. Вы можете приобрести полную версию чтобы пользоваться всеми функциями! oneSavegameLimit: title: Лимит сохранений @@ -224,15 +224,15 @@ dialogs: Здесь изменения с тех пор, когда вы в последний раз играли: upgradesIntroduction: - title: Открыть улучшения + title: Улучшения открыты! 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: Подтвердить удаление desc: >- - Вы удаляете много построек ()! Вы действительно хотите сделать это? + Вы удаляете много построек (точнее: )! Вы действительно хотите сделать это? blueprintsNotUnlocked: title: Еще не открыто @@ -255,16 +255,17 @@ dialogs: markerDemoLimit: desc: Вы можете создать только 2 своих маркера в демо версии. Приобретите полную версию для безлимитных маркеров. massCutConfirm: - title: Confirm cut + title: Подтвердите вырезку desc: >- - You are cutting a lot of buildings ( to be exact)! Are you sure you - want to do this? + Вы вырезаете много зданий (точнее: )! Вы уверены, + что хотите это сделать? exportScreenshotWarning: - title: Export screenshot + title: Экспорт скриншота desc: >- - You requested to export your base as a screenshot. Please note that this can - be quite slow for a big base and even crash your game! + Вы запросили экспортировать вашу базу в виде скриншота. Обратите внимание, + что это может быть довольно медленным процессом для большой базы + и даже привести к аварийному завершению игры! ingame: # This is shown in the top left corner and displays useful keybindings in @@ -281,7 +282,7 @@ ingame: placeBuilding: Разместить постройку createMarker: Создать маркер delete: Уничтожить - pasteLastBlueprint: Paste last blueprint + pasteLastBlueprint: Вставить последний чертеж # Everything related to placing buildings (I.e. as soon as you selected a building # from the toolbar) @@ -297,9 +298,9 @@ ingame: infoTexts: speed: Скорость range: Расстояние - storage: Storage - oneItemPerSecond: 1 предмет / сек - itemsPerSecond: предметов / сек + storage: Хранилище + oneItemPerSecond: 1 пред. / сек. + itemsPerSecond: пред. / сек. itemsPerSecondDouble: (x2) tiles: клеток @@ -315,12 +316,12 @@ ingame: # Notifications on the lower right notifications: newUpgrade: Новое улучшение доступно! - gameSaved: Ваша игра была сохранена. + gameSaved: Игра сохранена. # Mass select information, this is when you hold CTRL and then drag with your mouse # to select multiple buildings massSelect: - infoText: Press to cut, to copy, to remove and to cancel. + infoText: - Вырезать; - Копировать; - Удалить; - Отменить. # The "Upgrades" window shop: @@ -341,17 +342,17 @@ ingame: dataSources: stored: title: Хранится - description: Показывает количество хранящихся фигур в вашем центральном здании. + description: Показывает количество хранящихся фигур в хабе. produced: title: Производится description: Показывает производящиеся фигуры, включая промежуточное производство. delivered: title: Доставлено - description: Показывает фигуры, которые доставляются в ваше центральное здание. + description: Показывает фигуры, которые доставляются в хаб. noShapesProduced: Фигуры еще не произведены. # Displays the shapes per minute, e.g. '523 / m' - shapesPerMinute: / мин + shapesPerMinute: / мин. # Settings menu, when you press "ESC" settingsMenu: @@ -388,21 +389,21 @@ ingame: hints: 1_1_extractor: Поместите экстрактор на фигуру в форме круга чтобы добыть ее! 1_2_conveyor: >- - Соедините экстрактор конвейерной лентой с вашим хабом!

Подсказка: Необходимо выбрать конвейерную ленту и нажать и перетащить мышку! + Соедините экстрактор конвейером с хабом!

Подсказка: Необходимо выбрать конвейер и нажать и потащить мышку! 1_3_expand: >- - Это НЕ idle-игра! Постройте больше экстракторов и конвейерных лент, чтобы достичь цели быстрее.

Подсказка: Удерживайте SHIFT чтобы разместить несколько экстракторов, а R чтобы вращать их. + Это НЕ idle-игра! Постройте больше экстракторов и конвейеров, чтобы достичь цели быстрее.

Подсказка: Удерживайте SHIFT чтобы разместить несколько экстракторов, а R чтобы вращать их. # All shop upgrades shopUpgrades: belt: - name: Конвейерные ленты, Распределители & Туннели + name: Конвейеры, Расделители & Туннели description: Скорость x → x miner: name: Добыча description: Скорость x → x processors: - name: Нарезка, Вращение & Склейка + name: Нарезка, Вращение & Объединение description: Скорость x → x painting: name: Смешивание & Покраска @@ -418,20 +419,20 @@ buildings: miner: # Internal name for the Extractor default: name: &miner Экстрактор - description: Поместите над фигурным или цветовым ресурсом, чтобы добыть его. + description: Поместите над жилой с фигурами или красителями, чтобы добыть ресурс. chainable: name: Экстрактор (Цепной) - description: Поместите над фигурным или цветовым ресурсом, чтобы добыть его. Может последовательно соединяться. + description: Поместите над жилой с фигурами или красителями, чтобы добыть ресурс. Может последовательно соединяться. underground_belt: # Internal name for the Tunnel default: name: &underground_belt Туннель - description: Позволяет перевозить ресурсы под зданиями и конвейерными лентами. + description: Позволяет перевозить ресурсы под зданиями и конвейерами. tier2: name: Туннель II - description: Позволяет перевозить ресурсы под зданиями и конвейерными лентами. + description: Позволяет перевозить ресурсы под зданиями и конвейерами. splitter: # Internal name for the Balancer default: @@ -440,11 +441,11 @@ buildings: compact: name: Соединитель (компактный) - description: Объединяет две конвейерные ленты в одну. + description: Объединяет два конвейера в один. compact-inverse: name: Соединитель (компактный) - description: Объединяет две конвейерные ленты в одну. + description: Объединяет два конвейера в один. cutter: default: @@ -452,7 +453,7 @@ buildings: description: Разрезает фигуры сверху вниз и выводит обе половины. Если вы используете только одну часть, обязательно уничтожьте другую, иначе производство остановится! quad: name: Резчик (Четырехпоточный) - description: Разрезает фигуры на четыре части. Если вы используете только одну часть, обязательно уничтожьте другие, иначе производство остановится! + description: Разрезает фигуры на четыре части. Если вы используете не все части, обязательно уничтожьте оставшиеся, иначе производство остановится! rotater: default: @@ -464,21 +465,21 @@ buildings: stacker: default: - name: &stacker Склеиватель - description: Склеивает оба предмета. Если они не могут быть объединены, правый элемент помещается над левым элементом. + name: &stacker Объединитель + description: Объедининяет два предмета. Если они не могут быть соединены, правый элемент помещается над левым. mixer: default: - name: &mixer Смешиватель цветов + name: &mixer Смеситель description: Смешивает два цвета с помощью аддитивного смешивания. painter: default: name: &painter Покрасчик - description: Красит всю фигуру из левого входа краской из верхнего. + description: Красит всю фигуру из левого входа красителем из верхнего. double: name: Покрасчик (Двойной) - description: Красит фигуру из левых входов краской из верхнего. + description: Красит фигуру из левых входов красителем из верхнего. quad: name: Покрасчик (Четырехпоточный) description: Позволяет раскрасить каждую четверть фигуры разными цветами. @@ -492,110 +493,110 @@ buildings: name: Хранилище description: Хранит лишние предметы, до заданной вместимости. Может использоваться в качестве ворот для пропускания излишков. hub: - deliver: Deliver - toUnlock: to unlock - levelShortcut: LVL + deliver: Доставить + toUnlock: чтобы открыть + levelShortcut: Ур. 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: Разрезание Фигур + desc: Вы только что открыли резчик - он разрезает фигуры пополам сверху вниз независимо от их ориентации!

Обязательно избавьтесь от отходов, иначе он остановится - для этого я дал вам мусорку, которая уничтожит все, что в нее поместить! reward_rotater: - title: Rotating - desc: The rotater has been unlocked! It rotates shapes clockwise by 90 degrees. + title: Вращение + desc: Разблокирован вращатель! Он поворачивает фигуры по часовой стрелке на 90 градусов. reward_painter: - title: Painting + title: Покраска 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! + Разблокирован покрасчик! Добудте краситель из жилы (так же как и фигуры) и объедините его с фигурой в покрасчике, чтобы раскрасить ее!

PS: Если вы дальтоник, я уже работаю над решением! reward_mixer: - title: Color Mixing - desc: The mixer has been unlocked - Combine two colors using additive blending with this building! + title: Смешивание Цветов + desc: Разблокирован смеситель! Объедините два цвета в этом здании, используя аддитивное смешивание! 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: Объединитель + desc: Теперь вы можете объединять фигурыw объединителем! Фигуры из обеих входов объединяются. Если они могут быть расположены рядом друг с другом, они будут соединены, иначе фигура из правого входа наложится на фигуру из левого! reward_splitter: - title: Разделитель/соеденитель - desc: Был открыт многофункциональный balancer.It can be used to build bigger factories by splitting and merging items onto multiple belts!

+ title: Разделитель / Соеденитель + desc: Разблокирован многофункциональный разделитель! Его можно использовать для создания больших фабрик путем разделения и соединения конвейеров!

reward_tunnel: title: Туннель - desc: Был открыт Туннель. You can now pipe items through belts and buildings with it! + desc: Разблокирован туннель! Теперь вы можете транспортировать предметы сквозь конвейеры и здания! 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: Вращатель (обратный) + desc: Разблокирован вариант вращателя, он позволяет вращать фигуры против часовой стрелки! Чтобы построить его, выберите вращатель и нажмите 'T' чтобы переключаться между вариантами! 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: Цепной Экстрактор + desc: Разблокирован цепной экстрактор! Он может передавать свои ресурсы другим экстракторам, чтобы вы могли эффективнее извлекать ресурсы! 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! + title: Туннель II + desc: Разблокирован новый вариант туннеля с большей дальностью, а также вы можете совмещать эти туннели! reward_splitter_compact: - title: Compact Balancer + title: Компактный Соединитель desc: >- - You have unlocked a compact variant of the balancer - It accepts two inputs and merges them into one! + Разблокирован компактный вариант разделителя, он объединяет воедино потоки предметов из двух входов! 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: Резчик (Четырехпоточный) + desc: Разблокирован вариант резчика - он позволяет разрезать фигуры на четыре части вместо, всего лишь двух! 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: Двойной Покрасчик + desc: Разблокирован вариант покрасчика - он работает как обычный покрасчик, но обрабатывает две фигуры одновременно, потребляя только один краситель вместо двух! 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: Четырехпоточный Покрасчик + desc: Разблокирован вариант покрасчика - он позволяет отдельно раскрашивать каждую часть фигуры! 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: Буферное Хранилище + desc: Разблокирован вариант мусорки - он позволяет хранить предметы до заданной вместимости! reward_freeplay: title: Свободная игра - 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!) + desc: У вас получилось! Разблокирован режим свободной игры! Это означает, что фигуры теперь генерируются случайным образом! (Не беспокойтесь, больше контента планируется в полной версии!) 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: Чертежи + desc: Теперь вы можете копировать и вставлять части вашей фабрики! Выберите область (Удерживая CTRL, перетащите мышь) и нажмите 'C' чтобы скопировать ее.

Вставка не бесплатна, чтобы позволить себе это вам необходимо произвести фигуры для чертежей! (Которые вы только что доставили). # Special reward, which is shown when there is no reward actually no_reward: title: Следующий уровень 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! + Этот уровень не дал вам награды, но следующий даст!

PS: Лучше не разрушайте вашу существующую фабрику - Вам понадобятся все эти фигуры позже, чтобы разблокировать улучшения! no_reward_freeplay: title: Следующий уровень desc: >- - Congratulations! By the way, more content is planned for the standalone! + Поздравляем! Кстати, больше контента планируется для полной версии! settings: title: Настройки categories: - game: Game - app: Application + game: Игровые + app: Основные versionBadges: - dev: Development - staging: Staging - prod: Production - buildDate: Built + dev: Разработчик + staging: Постановка + prod: Произведена + buildDate: Сборка labels: uiScale: title: Размер интерфейса description: >- - Выберите размер пользовательского интерфейса. The interface will still scale based on your device resolution, but this setting controls the amount of scale. + Выберите размер пользовательского интерфейса. Интерфейс будет по-прежнему масштабироваться в зависимости от разрешения вашего устройства, но этот параметр управляет величиной масштабирования. scales: super_small: Очень маленький small: Маленький @@ -604,9 +605,9 @@ settings: huge: Огромный scrollWheelSensitivity: - title: Zoom sensitivity + title: Чувствительность зума description: >- - Changes how sensitive the zoom is (Either mouse wheel or trackpad). + Изменяет чувствительность зума (колесико мыши или сенсорная панель). sensitivity: super_slow: Очень медленно slow: Медленно @@ -627,12 +628,12 @@ settings: soundsMuted: title: Выключить звуки description: >- - Если включено, выключает все звуковые эффекты + Если включено, выключает все звуковые эффекты. musicMuted: title: Выключить музыку description: >- - Если включено, выключает музыку + Если включено, выключает музыку. theme: title: Тема игры @@ -640,68 +641,68 @@ settings: Выберите тему игры (светлая / темная). themes: - dark: Dark - light: Light + dark: Темная + light: Светлая refreshRate: - title: Simulation Target + title: Частота обновления 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. + Если у вас монитор 144 Гц, измените частоту обновления здесь, чтобы игра правильно выглядела при более высоких частотах обновления. Это может уменьшить FPS, если ваш компьютер работает слишком медленно. alwaysMultiplace: - title: Multiplace + title: Многократное размещение description: >- - If enabled, all buildings will stay selected after placement until you cancel it. This is equivalent to holding SHIFT permanently. + Если включено, все здания останутся выбранными после размещения, пока вы не отмените выбор. Это эквивалентно постоянному удержанию SHIFT. offerHints: - title: Hints & Tutorials + title: Подсказки & Обучение 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. + Стоит ли предлагать подсказки и обучающий материал во время игры. Также скрывает определенные элементы пользовательского интерфейса для данного уровня, преднязначенные для облегчения "входа" в игру. movementSpeed: - title: Movement speed - description: Changes how fast the view moves when using the keyboard. + title: Скорость движения + description: Изменяет скорость перемещения изображения при использовании клавиатуры. speeds: - super_slow: Super slow - slow: Slow - regular: Regular - fast: Fast - super_fast: Super Fast - extremely_fast: Extremely Fast + super_slow: Очень медленно + slow: Медленно + regular: Средне + fast: Быстро + super_fast: Очень быстро + extremely_fast: Чрезвычайно быстро keybindings: title: Настройки управления hint: >- - Tip: Be sure to make use of CTRL, SHIFT and ALT! They enable different placement options. + Подсказка: Обязательно используйте CTRL, SHIFT и ALT! Они дают разные варианты размещения. - resetKeybindings: Настройки по умолчанию + resetKeybindings: Сброс настроек управления categoryLabels: - general: Application - ingame: Game - navigation: Navigating - placement: Placement - massSelect: Mass Select - buildings: Building Shortcuts - placementModifiers: Placement Modifiers + general: Основные + ingame: Игровые + navigation: Навигация + placement: Размещение + massSelect: Множественный Выбор + buildings: Постройки + placementModifiers: Модификаторы Размещения mappings: confirm: Подтвердить back: Назад - mapMoveUp: Move Up - mapMoveRight: Move Right - mapMoveDown: Move Down - mapMoveLeft: Move Left - centerMap: Center Map + mapMoveUp: Вверх + mapMoveRight: Вправо + mapMoveDown: Вниз + mapMoveLeft: Влево + centerMap: Центрировать карту - mapZoomIn: Zoom in - mapZoomOut: Zoom out - createMarker: Create Marker + mapZoomIn: Приблизить + mapZoomOut: Отдалить + createMarker: Создать Маркер - menuOpenShop: Upgrades - menuOpenStats: Statistics + menuOpenShop: Улучшения + menuOpenStats: Статистика - toggleHud: Toggle HUD + toggleHud: Переключить HUD toggleFPSInfo: Включить/выключить FPS и информацию отладки belt: *belt splitter: *splitter @@ -714,54 +715,54 @@ keybindings: painter: *painter trash: *trash - abortBuildingPlacement: Abort Placement - rotateWhilePlacing: Rotate + abortBuildingPlacement: Прекратить размещение + rotateWhilePlacing: Вращать rotateInverseModifier: >- - Modifier: Rotate CCW instead - cycleBuildingVariants: Cycle Variants - confirmMassDelete: Confirm Mass Delete - cycleBuildings: Cycle Buildings + Модификатор: Вращать против часовой стрелки + cycleBuildingVariants: Переключение Вариантов + confirmMassDelete: Подтверждение Массового Удаления + cycleBuildings: Переключение Построек - massSelectStart: Hold and drag to start - massSelectSelectMultiple: Select multiple areas - massSelectCopy: Copy area + massSelectStart: Удерживайте и тащите, чтобы начать + massSelectSelectMultiple: Выбрать несколько областей + massSelectCopy: Копировать область - 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 + placementDisableAutoOrientation: Отключить авто-определение направления + placeMultiple: Оставаться в режиме размещения + placeInverse: Инвертировать авто-определение направления конвейеров + pasteLastBlueprint: Вставить последний чертеж + massSelectCut: Вырезать область + exportScreenshot: Экспорт всей Базы в виде Изображения about: title: О игре 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.

+ Если вы хотите внести свой вклад то вам сюда - shapez.io в 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.

+ Саундтрек сделал Peppsen - Он потрясающий.

- Finally, huge thanks to my best friend Niklas - Without our - factorio sessions this game would never have existed. + Наконец, огромное спасибо моему лучшему другу Niklas - Без наших + игровых сессий в factorio эта игра никогда не существовала бы. changelog: title: Список измений demo: features: - restoringGames: Restoring savegames - importingGames: Importing savegames - oneGameLimit: Limited to one savegame - customizeKeybindings: Customizing Keybindings - exportingBase: Exporting whole Base as Image + restoringGames: Восстановить сохранения игр + importingGames: Импортировать сохранения игр + oneGameLimit: Ограниченность одним сохранением игры + customizeKeybindings: Пользовательская настройка Управления + exportingBase: Экспорт всей Базы в виде Изображения settingNotAvailable: Не доступно в демо-версии. From eeefc5cd578d5775c2aa56b74c9bf655bf748473 Mon Sep 17 00:00:00 2001 From: Killgaru <46816881+Killgaru@users.noreply.github.com> Date: Sat, 13 Jun 2020 14:46:28 +0300 Subject: [PATCH 25/25] =?UTF-8?q?Added=20infiniti=20sign:=20"=E2=88=9E"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- translations/base-ru.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/translations/base-ru.yaml b/translations/base-ru.yaml index df000264..23628e79 100644 --- a/translations/base-ru.yaml +++ b/translations/base-ru.yaml @@ -82,7 +82,7 @@ global: trillions: трлн # Shown for infinitely big numbers - infinite: inf + infinite: ∞ time: # Used for formatting past time dates