diff --git a/artwork/itch.io/background.jpg b/artwork/itch.io/background.jpg
index 619876a2..524b6358 100644
Binary files a/artwork/itch.io/background.jpg and b/artwork/itch.io/background.jpg differ
diff --git a/artwork/itch.io/bg.png b/artwork/itch.io/bg.png
new file mode 100644
index 00000000..425e94d8
Binary files /dev/null and b/artwork/itch.io/bg.png differ
diff --git a/artwork/steam/announcement.png b/artwork/steam/announcement.png
new file mode 100644
index 00000000..c531e3ab
Binary files /dev/null and b/artwork/steam/announcement.png differ
diff --git a/artwork/steam/announcement.psd b/artwork/steam/announcement.psd
new file mode 100644
index 00000000..4282d647
--- /dev/null
+++ b/artwork/steam/announcement.psd
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:de805473208e0901f1185485164a35fde59e4baf3000f30102d0f332842410a5
+size 184895
diff --git a/artwork/steam/store_page_gif.gif b/artwork/steam/store_page_gif.gif
new file mode 100644
index 00000000..1491fb0a
Binary files /dev/null and b/artwork/steam/store_page_gif.gif differ
diff --git a/gulp/webpack.production.config.js b/gulp/webpack.production.config.js
index 14c6598a..312923f0 100644
--- a/gulp/webpack.production.config.js
+++ b/gulp/webpack.production.config.js
@@ -237,7 +237,7 @@ module.exports = ({
pattern: /globalConfig\.beltSpeedItemsPerSecond/g,
replacement: () => "2.0",
},
- { pattern: /globalConfig\.itemSpacingOnBelts/g, replacement: () => "0.8" },
+ { pattern: /globalConfig\.itemSpacingOnBelts/g, replacement: () => "0.63" },
{ pattern: /globalConfig\.debug/g, replacement: () => "''" },
],
}),
diff --git a/src/css/ingame_hud/watermark.scss b/src/css/ingame_hud/watermark.scss
index 4d0e83a2..d14a7fc8 100644
--- a/src/css/ingame_hud/watermark.scss
+++ b/src/css/ingame_hud/watermark.scss
@@ -1,6 +1,6 @@
#ingame_HUD_Watermark {
position: absolute;
- background: uiResource("get_on_itch_io.svg") center center / contain no-repeat;
+ background: uiResource("get_on_steam.png") center center / contain no-repeat;
@include S(width, 110px);
@include S(height, 40px);
@include S(top, 10px);
diff --git a/src/css/states/main_menu.scss b/src/css/states/main_menu.scss
index 41199b95..6466500c 100644
--- a/src/css/states/main_menu.scss
+++ b/src/css/states/main_menu.scss
@@ -103,9 +103,9 @@
.steamLink {
width: 100%;
- @include S(height, 50px);
+ @include S(height, 40px);
- background: uiResource("get_on_itch_io.svg") center center / contain no-repeat;
+ background: uiResource("get_on_steam.png") center center / contain no-repeat;
overflow: hidden;
display: block;
text-indent: -999em;
diff --git a/src/css/states/mobile_warning.scss b/src/css/states/mobile_warning.scss
index 2e68b56a..6dc84e3c 100644
--- a/src/css/states/mobile_warning.scss
+++ b/src/css/states/mobile_warning.scss
@@ -30,7 +30,7 @@
width: 200px;
height: 80px;
min-height: 40px;
- background: uiResource("get_on_itch_io.svg") center center / contain no-repeat;
+ background: uiResource("get_on_steam.png") center center / contain no-repeat;
overflow: hidden;
display: block;
text-indent: -999em;
diff --git a/src/js/application.js b/src/js/application.js
index ce9fdd40..b2e57ddc 100644
--- a/src/js/application.js
+++ b/src/js/application.js
@@ -121,7 +121,7 @@ export class Application {
* Initializes all platform instances
*/
initPlatformDependentInstances() {
- logger.log("Creating platform dependent instances");
+ logger.log("Creating platform dependent instances (standalone=", G_IS_STANDALONE, ")");
if (G_IS_STANDALONE) {
this.platformWrapper = new PlatformWrapperImplElectron(this);
@@ -256,11 +256,15 @@ export class Application {
onAppRenderableStateChanged(renderable) {
logger.log("Application renderable:", renderable);
window.focus();
+ const currentState = this.stateMgr.getCurrentState();
if (!renderable) {
- this.stateMgr.getCurrentState().onAppPause();
+ if (currentState) {
+ currentState.onAppPause();
+ }
} else {
- // Got resume
- this.stateMgr.getCurrentState().onAppResume();
+ if (currentState) {
+ currentState.onAppResume();
+ }
this.checkResize();
}
@@ -274,7 +278,10 @@ export class Application {
if (!this.unloaded) {
logSection("UNLOAD HANDLER", "#f77");
this.unloaded = true;
- this.stateMgr.getCurrentState().onBeforeExit();
+ const currentState = this.stateMgr.getCurrentState();
+ if (currentState) {
+ currentState.onBeforeExit();
+ }
this.deinitialize();
}
}
@@ -284,8 +291,9 @@ export class Application {
*/
onBeforeUnload(event) {
logSection("BEFORE UNLOAD HANDLER", "#f77");
+ const currentState = this.stateMgr.getCurrentState();
- if (!G_IS_DEV && this.stateMgr.getCurrentState().getHasUnloadConfirmation()) {
+ if (!G_IS_DEV && currentState && currentState.getHasUnloadConfirmation()) {
if (!G_IS_STANDALONE) {
// Need to show a "Are you sure you want to exit"
event.preventDefault();
@@ -335,7 +343,10 @@ export class Application {
return;
}
- this.stateMgr.getCurrentState().onBackgroundTick(dt);
+ const currentState = this.stateMgr.getCurrentState();
+ if (currentState) {
+ currentState.onBackgroundTick(dt);
+ }
}
/**
@@ -355,7 +366,10 @@ export class Application {
this.lastResizeCheck = time;
}
- this.stateMgr.getCurrentState().onRender(dt);
+ const currentState = this.stateMgr.getCurrentState();
+ if (currentState) {
+ currentState.onRender(dt);
+ }
}
/**
@@ -368,7 +382,10 @@ export class Application {
if (this.screenWidth !== w || this.screenHeight !== h || forceUpdate) {
this.screenWidth = w;
this.screenHeight = h;
- this.stateMgr.getCurrentState().onResized(this.screenWidth, this.screenHeight);
+ const currentState = this.stateMgr.getCurrentState();
+ if (currentState) {
+ currentState.onResized(this.screenWidth, this.screenHeight);
+ }
const scale = this.getEffectiveUiScale();
waitNextFrame().then(() => document.documentElement.style.setProperty("--ui-scale", scale));
diff --git a/src/js/changelog.js b/src/js/changelog.js
index 4b469e02..bbf9cb74 100644
--- a/src/js/changelog.js
+++ b/src/js/changelog.js
@@ -1,7 +1,21 @@
export const CHANGELOG = [
+ {
+ version: "1.1.8",
+ date: "07.06.2020",
+ entries: [
+ "You can now purchase the standalone on steam! View steam page ",
+ "Added ability to create markers in the demo, but only two.",
+ "Contest #01 has ended! I'll now work through the entries, select the 5 I like most and present them to the community to vote for!",
+ ],
+ },
+ {
+ version: "1.1.7",
+ date: "04.06.2020",
+ entries: ["HOTFIX: Fix savegames not showing up on the standalone version"],
+ },
{
version: "1.1.6",
- date: "unreleased",
+ date: "04.06.2020",
entries: [
"The steam release will happen on the 7th of June - Be sure to add it to your wishlist! View on steam ",
"Fixed level complete dialog being blurred when the shop was opened before",
diff --git a/src/js/core/config.js b/src/js/core/config.js
index 7663ac69..540bccfd 100644
--- a/src/js/core/config.js
+++ b/src/js/core/config.js
@@ -15,8 +15,7 @@ export const THIRDPARTY_URLS = {
discord: "https://discord.gg/HN7EVzV",
github: "https://github.com/tobspr/shapez.io",
- // standaloneStorePage: "https://steam.shapez.io",
- standaloneStorePage: "https://tobspr.itch.io/shapez.io",
+ standaloneStorePage: "https://store.steampowered.com/app/1318690/shapezio/",
};
export const globalConfig = {
@@ -46,7 +45,7 @@ export const globalConfig = {
// Belt speeds
// NOTICE: Update webpack.production.config too!
beltSpeedItemsPerSecond: 2,
- itemSpacingOnBelts: 0.63,
+ itemSpacingOnBelts: 0.8,
minerSpeedItemsPerSecond: 0, // COMPUTED
undergroundBeltMaxTilesByTier: [5, 8],
@@ -83,7 +82,7 @@ export const globalConfig = {
debug: {
/* dev:start */
- // fastGameEnter: true,
+ fastGameEnter: true,
// noArtificialDelays: true,
// disableSavegameWrite: true,
// showEntityBounds: true,
@@ -93,9 +92,9 @@ export const globalConfig = {
// disableZoomLimits: true,
// showChunkBorders: true,
// rewardsInstant: true,
- // allBuildingsUnlocked: true,
- // blueprintsNoCost: true,
- // upgradesNoCost: true,
+ allBuildingsUnlocked: true,
+ blueprintsNoCost: true,
+ upgradesNoCost: true,
// disableUnlockDialog: true,
// disableLogicTicks: true,
// testClipping: true,
diff --git a/src/js/game/hud/parts/watermark.js b/src/js/game/hud/parts/watermark.js
index 94df6257..0b5b85bc 100644
--- a/src/js/game/hud/parts/watermark.js
+++ b/src/js/game/hud/parts/watermark.js
@@ -13,7 +13,7 @@ export class HUDWatermark extends BaseHUDPart {
}
onWatermarkClick() {
- this.root.app.analytics.trackUiClick("watermark_click");
+ this.root.app.analytics.trackUiClick("watermark_click_2");
this.root.app.platformWrapper.openExternalLink(THIRDPARTY_URLS.standaloneStorePage);
}
diff --git a/src/js/game/hud/parts/waypoints.js b/src/js/game/hud/parts/waypoints.js
index d981d33e..82187e55 100644
--- a/src/js/game/hud/parts/waypoints.js
+++ b/src/js/game/hud/parts/waypoints.js
@@ -133,11 +133,6 @@ export class HUDWaypoints extends BaseHUDPart {
* @param {Vector=} worldPos Override the world pos, otherwise it is the camera position
*/
requestCreateMarker(worldPos = null) {
- if (IS_DEMO) {
- this.root.hud.parts.dialogs.showFeatureRestrictionInfo(T.demo.features.creatingMarkers);
- return;
- }
-
const markerNameInput = new FormElementInput({
id: "markerName",
label: null,
@@ -157,6 +152,11 @@ export class HUDWaypoints extends BaseHUDPart {
const center = worldPos || this.root.camera.center;
dialog.buttonSignals.ok.add(() => {
+ if (IS_DEMO && this.waypoints.length > 2) {
+ this.root.hud.parts.dialogs.showFeatureRestrictionInfo("", T.dialogs.markerDemoLimit.desc);
+ return;
+ }
+
this.waypoints.push({
label: markerNameInput.getValue(),
center: { x: center.x, y: center.y },
diff --git a/src/js/platform/browser/wrapper.js b/src/js/platform/browser/wrapper.js
index 2fca004f..ab5ec327 100644
--- a/src/js/platform/browser/wrapper.js
+++ b/src/js/platform/browser/wrapper.js
@@ -91,7 +91,14 @@ export class PlatformWrapperImplBrowser extends PlatformWrapperInterface {
}
// Try accessing the indexedb
- const request = window.indexedDB.open("indexeddb_feature_detection", 1);
+ let request;
+ try {
+ request = window.indexedDB.open("indexeddb_feature_detection", 1);
+ } catch (ex) {
+ logger.warn("Error while opening indexed db:", ex);
+ resolve();
+ return;
+ }
request.onerror = err => {
logger.log("Indexed DB can *not* be accessed: ", err);
logger.log("Using fallback to local storage");
diff --git a/src/js/platform/electron/wrapper.js b/src/js/platform/electron/wrapper.js
index 482e41ea..69bc9695 100644
--- a/src/js/platform/electron/wrapper.js
+++ b/src/js/platform/electron/wrapper.js
@@ -2,13 +2,14 @@ import { PlatformWrapperImplBrowser } from "../browser/wrapper";
import { getIPCRenderer } from "../../core/utils";
import { createLogger } from "../../core/logging";
import { StorageImplElectron } from "./storage";
+import { PlatformWrapperInterface } from "../wrapper";
const logger = createLogger("electron-wrapper");
export class PlatformWrapperImplElectron extends PlatformWrapperImplBrowser {
initialize() {
this.app.storage = new StorageImplElectron(this);
- return super.initialize();
+ return PlatformWrapperInterface.prototype.initialize.call(this);
}
getId() {
diff --git a/src/js/states/main_menu.js b/src/js/states/main_menu.js
index ea0148ec..8ca023b2 100644
--- a/src/js/states/main_menu.js
+++ b/src/js/states/main_menu.js
@@ -27,7 +27,8 @@ export class MainMenuState extends GameState {
Get the shapez.io standalone!
`;
- return `
+ return (
+ `
@@ -57,13 +58,20 @@ export class MainMenuState extends GameState {
${IS_DEMO ? `
${bannerHtml}
` : ""}
+
${T.mainMenu.contests.contest_01_03062020.title}
-
${T.mainMenu.contests.contest_01_03062020.desc}
+ ` +
+ /*
${T.mainMenu.contests.contest_01_03062020.desc}
${
T.mainMenu.contests.showInfo
- }
+ }*/
+
+ `
+
${T.mainMenu.contests.contestOver}
+
+
@@ -104,7 +112,8 @@ export class MainMenuState extends GameState {
- `;
+ `
+ );
}
requestImportSavegame() {
@@ -220,7 +229,10 @@ export class MainMenuState extends GameState {
this.trackClicks(qs(".settingsButton"), this.onSettingsButtonClicked);
this.trackClicks(qs(".changelog"), this.onChangelogClicked);
- this.trackClicks(qs(".participateContest"), this.onContestClicked);
+ const contestButton = qs(".participateContest");
+ if (contestButton) {
+ this.trackClicks(contestButton, this.onContestClicked);
+ }
if (G_IS_STANDALONE) {
this.trackClicks(qs(".exitAppButton"), this.onExitAppButtonClicked);
@@ -256,7 +268,7 @@ export class MainMenuState extends GameState {
}
onSteamLinkClicked() {
- this.app.analytics.trackUiClick("main_menu_steam_link");
+ this.app.analytics.trackUiClick("main_menu_steam_link_2");
this.app.platformWrapper.openExternalLink(THIRDPARTY_URLS.standaloneStorePage);
return false;
}
diff --git a/src/js/states/mobile_warning.js b/src/js/states/mobile_warning.js
index c6903164..de17578a 100644
--- a/src/js/states/mobile_warning.js
+++ b/src/js/states/mobile_warning.js
@@ -13,11 +13,11 @@ export class MobileWarningState extends GameState {
- I'm sorry, but shapez.io is not yet available on mobile devices!
- (There is also no estimate when this will change, but feel to make a contribution! It's
- open source !)
+ I'm sorry, but shapez.io is not available on mobile devices yet!
+ There is also no estimate when this will change, but feel to make a contribution! It's
+ open source !
- If you want to play on your computer, you can also get the standalone on itch.io:
+ If you want to play on your computer, you can also get the standalone on steam:
segundos atrás
+ oneMinuteAgo: um minuto atrás
+ xMinutesAgo: minutos atrás
+ oneHourAgo: uma hora atrás
+ xHoursAgo: horas atrás
+ oneDayAgo: um dia atrás
+ xDaysAgo: dias atrás
+
+ # Short formats for times, e.g. '5h 23m'
+ secondsShort: s
+ minutesAndSecondsShort: m s
+ hoursAndMinutesShort: h s
+
+ xMinutes: minutos
+
+ keys:
+ tab: TAB
+ control: CTRL
+ alt: ALT
+ escape: ESC
+ shift: SHIFT
+ space: ESPAÇO
+
+demoBanners:
+ # This is the "advertisement" shown in the main menu and other various places
+ title: Versão Demo
+ intro: >-
+ Pegue a versão completa para desbloquear todas os recursos
+
+mainMenu:
+ play: Jogar
+ changelog: Changelog
+ importSavegame: Importar
+ openSourceHint: Esse jogo tem código aberto!
+ discordLink: Discord oficial
+
+ # This is shown when using firefox and other browsers which are not supported.
+ browserWarning: >-
+ Desculpe, o jogo fica lento em seu navegador! Compre a versão completa ou baixe o Chrome para obter uma experiência completa.
+
+ savegameLevel: Level
+ savegameLevelUnknown: Level desconhecido
+
+ contests:
+ contest_01_03062020:
+ title: "Concurso #01"
+ desc: Ganhe $ 25 pela melhor base!
+ longDesc: >-
+ Para retribuir, pensei que seria legal fazer concursos semanais!
+
+ Tópico dessa semana: Cronstua a base mais legal!
+
+ Here's the deal:
+
+ Envie uma captura de tela da sua base para contest@shapez.io
+ Pontos bônus se você o compartilhar nas mídias sociais!
+ Vou escolher 5 capturas de tela e propor à votação a comunidade discord .
+ o vencedor recebe $ 25 (Paypal, Amazon Gift Card, o que você preferir)
+ Até 07.06.2020 12:00 CEST
+
+
+ Estou ansioso para ver suas criações incríveis!
+
+ showInfo: Participate
+
+dialogs:
+ buttons:
+ ok: OK
+ delete: Deletar
+ cancel: Cancelar
+ later: Voltar
+ restart: Reiniciar
+ reset: Reset
+ getStandalone: Obter versão completa
+ deleteGame: Eu sei o que eu faço
+ viewUpdate: Atualizações
+ showUpgrades: Mostrar atualizações
+ showKeybindings: Controles
+
+ importSavegameError:
+ title: Erro importante
+ text: >-
+ Falha ao carregar seu savegame:
+
+ importSavegameSuccess:
+ title: Sucesso
+ text: >-
+ Seu savegame foi importado.
+
+ gameLoadFailure:
+ title: Jogo esta quebrado
+ text: >-
+ Falha ao carregar seu savegame
+
+ confirmSavegameDelete:
+ title: Confirmar exclusão
+ text: >-
+ Tem certeza que quer excluir esse jogo?
+
+ savegameDeletionError:
+ title: Falha para deletar
+ text: >-
+ Falha ao deletar seu savegame:
+
+ restartRequired:
+ title: Reiniciar
+ text: >-
+ Voce precisa reiniciar o jogo para aplicar as mudanças.
+
+ editKeybinding:
+ title: Change Keybinding
+ desc: Press the key you want to assign, or escape to cancel.
+
+ resetKeybindingsConfirmation:
+ title: Resetar controles
+ desc: Essa opção deixa os controles no modo padrão.
+
+ keybindingsResetOk:
+ title: Resetar controles
+ desc: Os controles foram resetados para o modo padrão.
+
+ featureRestriction:
+ title: Versão Demo
+ desc: Você tentou acessar um recurso () que não está disponível na demo. Considere obter a versão completa para a proceder!
+
+ saveNotPossibleInDemo:
+ desc: Seu jogo foi salvo, mas a restauração só é possível na versão completa. Considere obter a versão completa!
+
+ leaveNotPossibleInDemo:
+ title: Demo version
+ desc: Seu jogo foi salvo, mas você não poderá restaurá-lo na demo. Restaurar seus savegames só é possível na versão completa. Você tem certeza?
+
+ newUpdate:
+ title: Atualização disponível
+ desc: Uma atualização para esse jogo esta disponível!
+
+ oneSavegameLimit:
+ title: Save limitado
+ desc: Você pode ter apenas um savegame por vez na versão demo. Remova o existente ou obtenha a versão completa!
+
+ updateSummary:
+ title: Nova Atualização!
+ desc: >-
+ Aqui estão as alterações desde a última vez que você jogou:
+
+ hintDescription:
+ title: Tutorial
+ desc: >-
+ Sempre que precisar de ajuda ou estiver parado, confira o botão 'Mostrar dica' no canto inferior esquerdo e darei o meu melhor para ajudá-lo!
+
+ upgradesIntroduction:
+ title: Desbloquear updates
+ desc: >-
+ Todas as formas que você produz podem ser usadas para desbloquear atualizações - Não destrua suas antigas fábricas!!
+ O guia de atualizações pode ser encontrada no canto superior direito da tela.
+
+ massDeleteConfirm:
+ title: Deletar
+ desc: >-
+ Voce esta deletando vários itens ( para ser exato)! Voce quer continuar?
+
+ blueprintsNotUnlocked:
+ title: Não desbloqueado ainda
+ desc: >-
+ Os projetos ainda não foram desbloqueados! Complete mais níveis para desbloqueá-los.
+
+ keybindingsIntroduction:
+ title: Teclas úteis
+ desc: >-
+ Este jogo possui muitas combinações de teclas que facilitam a construção de grandes fábricas
+ Aqui estão alguns mas certifique-se de verificar as combinações de teclas !
+ CTRL
+ Drag: Selecione a área para copiar / delete.
+ SHIFT
: Mantenha pressionado para colocar vários.
+ ALT
: Inverter as posições.
+
+ createMarker:
+ title: Nova Marcação
+ desc: De um nome
+ingame:
+ # This is shown in the top left corner and displays useful keybindings in
+ # every situation
+ keybindingsOverlay:
+ moveMap: Mover
+ removeBuildings: Deletar
+ stopPlacement: Parar
+ rotateBuilding: Rotação
+ placeMultiple: Colocar vários
+ reverseOrientation: reverso
+ disableAutoOrientation: desligar orientações
+ toggleHud: Base
+ placeBuilding: Colocar construção
+ createMarker: Criar marcador
+ delete: Destruir
+
+ # Everything related to placing buildings (I.e. as soon as you selected a building
+ # from the toolbar)
+ buildingPlacement:
+ # Buildings can have different variants which are unlocked at later levels,
+ # and this is the hint shown when there are multiple variants available.
+ cycleBuildingVariants: Aperte para variações.
+
+ # Shows the hotkey in the ui, e.g. "Hotkey: Q"
+ hotkeyLabel: >-
+ Hotkey:
+
+ infoTexts:
+ speed: velocidade
+ range: distancia
+ storage: Estoque
+ oneItemPerSecond: 1 item / segundo
+ itemsPerSecond: itens / s
+ itemsPerSecondDouble: (x2)
+
+ tiles: tiles
+
+ # The notification when completing a level
+ levelCompleteNotification:
+ # is replaced by the actual level, so this gets 'Level 03' for example.
+ levelTitle: Level
+ completed: Completado
+ unlockText: Desbloqueado !
+ buttonNextLevel: Próximo Level
+
+ # Notifications on the lower right
+ notifications:
+ newUpgrade: Nova Atualização disponível!
+ gameSaved: Seu jogo foi Salvo.
+
+ # Mass select information, this is when you hold CTRL and then drag with your mouse
+ # to select multiple buildings
+ massSelect:
+ infoText: Aperte para copiar, para excluir e para cancelar.
+
+ # The "Upgrades" window
+ shop:
+ title: Atualizações
+ buttonUnlock: Atualizações
+
+ # Gets replaced to e.g. "Tier IX"
+ tier: Nível
+
+ # The roman number for each tier
+ tierLabels: [I, II, III, IV, V, VI, VII, VIII, IX, X]
+
+ maximumLevel: Level Máximo
+
+ # The "Statistics" window
+ statistics:
+ title: Estatísticas
+ dataSources:
+ stored:
+ title: Estoque
+ description: Exibindo a quantidade de formas armazenadas em seu edifício central.
+ produced:
+ title: Produção
+ description: Exibindo todas as formas que toda a sua fábrica produz, incluindo produtos intermediários..
+ delivered:
+ title: Entregue
+ description: Exibindo formas entregues ao seu edifício central..
+ noShapesProduced: Nenhuma forma foi produzida até o momento.
+
+ # Displays the shapes per minute, e.g. '523 / m'
+ shapesPerMinute: / m
+
+ # Settings menu, when you press "ESC"
+ settingsMenu:
+ playtime: Tempo de Jogo
+
+ buildingsPlaced: Construções
+ beltsPlaced: Belts
+
+ buttons:
+ continue: Continue
+ settings: Definições
+ menu: Voltar ao menu
+
+ # Bottom left tutorial hints
+ tutorialHints:
+ title: Precisa de ajuda?
+ showHint: Mostrar dica
+ hideHint: Fechar
+
+ # When placing a blueprint
+ blueprintPlacer:
+ cost: Custo
+
+ # Map markers
+ waypoints:
+ waypoints: Marcadores
+ hub: HUB
+ description: Clique com o botão esquerdo do mouse em um marcador para pular, clique com o botão direito do mouse para excluí-lo. Pressione para criar um marcador a partir da exibição atual ou clique com o botão direito do mouse para criar um marcador no local selecionado.
+ creationSuccessNotification: Marcador criado.
+
+ # Interactive tutorial
+ interactiveTutorial:
+ title: Tutorial
+ hints:
+ 1_1_extractor: Coloque um extrator em cima de uma fonte de círculo para extraí-lo!
+ 1_2_conveyor: >-
+ Conecte o extrator com uma esteira transportadora até a sua base! Dica, clique e arraste a esteira com o mouse!
+
+ 1_3_expand: >-
+ Este NÃO é um jogo inativo! Construa mais extratores e esteiras para concluir o objetivo mais rapidamente. Dica, segure SHIFT para colocar vários extratores e use R para girá-los.
+
+# All shop upgrades
+shopUpgrades:
+ belt:
+ name: Esteiras, Distribuidores e Túneis
+ description: Velocidade +%
+ miner:
+ name: Extração
+ description: Velocidade +%
+ processors:
+ name: Cortar, Rotacionar e Empilhamento
+ description: Velocidade +%
+ painting:
+ name: Misturador e pintura
+ description: Velocidade +%
+
+# Buildings and their name / description
+buildings:
+ belt:
+ default:
+ name: &belt Conveyor Belt
+ description: Transporta itens, mantenha pressionado e arraste para colocar vários.
+
+ miner: # Internal name for the Extractor
+ default:
+ name: &miner Extractor
+ description: Coloque sobre uma forma ou cor para extraí-la.
+
+ chainable:
+ name: Extractor (Chain)
+ description: Coloque sobre uma forma ou cor para extraí-la. Pode ser acorrentado.
+
+ underground_belt: # Internal name for the Tunnel
+ default:
+ name: &underground_belt Tunnel
+ description: Permite transportar recursos sob construções.
+
+ tier2:
+ name: Tunnel Tier II
+ description: Permite transportar recursos sob construções.
+
+ splitter: # Internal name for the Balancer
+ default:
+ name: &splitter Balancer
+ description: Multifunctional - Distribui uniformemente todas as entradas em todas as saídas.
+
+ compact:
+ name: Merger (compact)
+ description: Mescla duas correias transportadoras em uma.
+
+ compact-inverse:
+ name: Merger (compact)
+ description: Mescla duas correias transportadoras em uma.
+
+ cutter:
+ default:
+ name: &cutter Cutter
+ description: Corta as formas de cima para baixo e produz as duas metades. Se você usar apenas uma parte, não se esqueça de destruir a outra parte, ou ela irá parar a produção!
+ quad:
+ name: Cutter (Quad)
+ description: Corta as formas em quatro partes. Se você usar apenas uma parte, não se esqueça de destruir as outras, ou ela irá parar a produção!
+
+ rotater:
+ default:
+ name: &rotater Rotate
+ description: Gira as formas no sentido horário em 90 graus.
+ ccw:
+ name: Rotate (CCW)
+ description: RGira as formas no sentido anti-horário em 90 graus.
+
+ stacker:
+ default:
+ name: &stacker Stacker
+ description: Empilha os dois itens. Se eles não puderem ser mesclados, o item certo será colocado acima do item esquerdo.
+
+ mixer:
+ default:
+ name: &mixer Color Mixer
+ description: Mistura duas cores usando mistura aditiva.
+
+ painter:
+ default:
+ name: &painter Painter
+ description: Colore a forma inteira na entrada esquerda com a cor da entrada direita.
+ double:
+ name: Painter (Double)
+ description: Colore as duas formas na entrada esquerda com a cor da entrada direita.
+ quad:
+ name: Painter (Quad)
+ description: Permite colorir cada quadrante da forma com uma cor diferente.
+
+ trash:
+ default:
+ name: &trash Lixo
+ description: Aceita qualquer item e os destrói. PARA SEMPRE
+
+ storage:
+ name: Estoque
+ description: Armazena itens em excesso, até uma determinada capacidade. Pode ser usado como uma porta de transbordamento.
+
+storyRewards:
+ # Those are the rewards gained from completing the store
+ reward_cutter_and_trash:
+ title: Formas de corte
+ desc: Voce desbloqueou cutter - corte de formas pela metade de cima para baixo independentemente de sua orientação! Certifique-se de se livrar do lixo, ou então ele irá parar a produção - Para esse propósito, eu lhe dei uma lixo, que destrói tudo o que você coloca nele
+
+ reward_rotater:
+ title: Rodando
+ desc: O rotator foi desbloqueado! Gira as formas no sentido horário em 90 graus
+
+ reward_painter:
+ title: Pintando
+ desc: >-
+ O pintor foi desbloqueado - Extraia algumas veias coloridas (como você faz com formas) e combine-as com uma forma no pintor para colori-las! PS: Se você é daltônico , Já estou trabalhando em uma solução!
+
+ reward_mixer:
+ title: Mistura de cores
+ desc: O misturador foi desbloqueado - combine duas cores usando mistura aditiva com esta construção!
+
+ reward_stacker:
+ title: Combinador
+ desc: Agora você pode combinar formas com o combinador ! Ambas as entradas são combinadas e, se puderem ser colocadas próximas uma da outra, serão fundidas . Caso contrário, a entrada direita é empilhada em cima da entrada esquerda!
+
+ reward_splitter:
+ title: Divisor/fusão
+ desc: O balanceador multifuncional foi desbloqueado - ele pode ser usado para construir fábricas maiores dividindo e mesclando itens !
+
+ reward_tunnel:
+ title: Túnel
+ desc: O túnel foi desbloqueado - Agora você pode canalizar itens através de construções!
+
+ reward_rotater_ccw:
+ title: CCW Rotação
+ desc: Você desbloqueou uma variante do rotater - permite girar no sentido anti-horário! Para construí-lo, selecione o rotador e pressione 'T' para alternar suas variantes !
+
+ reward_miner_chainable:
+ title: Extrator de encadeamento
+ desc: Você desbloqueou o extrator de correntes ! Ele pode encaminhar seus recursos para outros extratores, para que você possa extrair recursos com mais eficiência!
+
+ reward_underground_belt_tier_2:
+ title: Túnel Tier II
+ desc: Você desbloqueou uma nova variante do túnel - ele tem um maior alcance , e também pode misturar e combinar esses túneis agora!
+
+ reward_splitter_compact:
+ title: Balanceador compacto
+ desc: >-
+ Você desbloqueou uma variante compacta do balanceador - ele aceita duas entradas e as mescla em uma!
+
+ reward_cutter_quad:
+ title: Cortador quádruplo
+ desc: Você desbloqueou uma variante do cortador - permite cortar formas em quatro partes em vez de apenas duas!
+
+ reward_painter_double:
+ title: Pintura dupla
+ desc: Você desbloqueou uma variante do pintor - funciona como o pintor regular, mas processa duas formas ao mesmo tempo , consumindo apenas uma cor em vez de duas!
+
+ reward_painter_quad:
+ title: Pintura quádupla
+ desc: Você desbloqueou uma variante do pintor - permite pintar cada parte da forma individualmente!
+
+ reward_storage:
+ title: buffer de armazenamento
+ desc: Você desbloqueou uma variante do lixo - Permite armazenar itens até uma determinada capacidade!
+
+ reward_freeplay:
+ title: Modo Livre
+ desc: Você fez isso! Você desbloqueou o modo de jogo livre ! Isso significa que as formas agora são geradas aleatoriamente! (Não se preocupe, mais conteúdo está planejado para o jogo completo!)
+
+ reward_blueprints:
+ title: Projetos
+ desc: Agora você pode copiar e colar partes de sua fábrica! Selecione uma área (mantenha pressionada a tecla CTRL e arraste com o mouse) e pressione 'C' para copiá-la. Colar não é de graça , é necessário produzir projetos e formas para pagar! (Aqueles que você acabou de entregar).
+
+ # Special reward, which is shown when there is no reward actually
+ no_reward:
+ title: Próximo level
+ desc: >-
+ Este nível não lhe deu nenhuma recompensa, mas em breve?! PS: Melhor não destruir sua fábrica existente - Você precisa de todas todas essas formas posteriormente mais tarde para desbloquear atualizações !
+
+ no_reward_freeplay:
+ title: Next level
+ desc: >-
+ Parabens, não se esqueça existe muita coisa planejada para essa versão.
+
+settings:
+ title: opções
+ categories:
+ game: Jogo
+ app: Aplicação
+
+ versionBadges:
+ dev: Desenvolvedor
+ staging: Staging
+ prod: Produção
+ buildDate: Built
+
+ labels:
+ uiScale:
+ title: Fonte
+ description: >-
+ Altera o tamanho da fonte do usuário. A interface ainda será dimensionada com base na resolução do dispositivo, mas essa configuração controla a quantidade de escala.
+ scales:
+ super_small: Super pequeno
+ small: Pequeno
+ regular: Normal
+ large: Grande
+ huge: Gigante
+
+ scrollWheelSensitivity:
+ title: Sensibilidade do zoom
+ description: >-
+ Altera a sensibilidade do zoom (scrol do mouse ou touchpad).
+ sensitivity:
+ super_slow: Super lento
+ slow: Lento
+ regular: Normal
+ fast: Rápido
+ super_fast: Super Rápido
+
+ fullscreen:
+ title: Tecla Cheia
+ description: >-
+ É recomendável jogar o jogo em tela cheia para obter a melhor experiência. Disponível apenas na versão completa.
+
+ soundsMuted:
+ title: Som
+ description: >-
+ Se ligado o jogo fica Mudo.
+
+ musicMuted:
+ title: Musica
+ description: >-
+ Se ligado a musica é desligada.
+
+ theme:
+ title: Tema
+ description: >-
+ Escolha o tema entre (Branco / Preto).
+
+ refreshRate:
+ title: Frequencia
+ description: >-
+ Se você possui um monitor de 144 hz, altere a taxa de atualização aqui para que o jogo seja simulado corretamente com taxas de atualização mais altas. Isso pode realmente diminuir o FPS se o computador estiver muito lento.
+
+ alwaysMultiplace:
+ title: Multiplicidade
+ description: >-
+ Se ativado, todos os edifícios permanecerão selecionados após o posicionamento até que você o cancele. Isso é equivalente a manter SHIFT permanentemente.
+
+ offerHints:
+ title: Dicas e tutoriais
+ description: >-
+ Se deve oferecer dicas e tutoriais enquanto estiver jogando.v.
+
+keybindings:
+ title: Comandos
+ hint: >-
+ Tip: Certifique-se de usar CTRL, SHIFT e ALT! Eles permitem diferentes opções de veiculação.
+
+ resetKeybindings: Reset Keyinbindings
+
+ categoryLabels:
+ general: Geral
+ ingame: Jogo
+ navigation: Navegação
+ placement: Posicionamento
+ massSelect: Seleção
+ buildings: Construções
+ placementModifiers: Modificações
+
+ mappings:
+ confirm: Confirmar
+ back: Voltar
+ mapMoveUp: Mover para cima
+ mapMoveRight: Mover para direita
+ mapMoveDown: Mover para baixo
+ mapMoveLeft: Mover para a esquerda
+ centerMap: Centralizar
+
+ mapZoomIn: Aproximar
+ mapZoomOut: Distanciar
+ createMarker: Criar marcação
+
+ menuOpenShop: Atualizações
+ menuOpenStats: Estatísticas
+
+ toggleHud: Ocultar Menu
+ toggleFPSInfo: Mostar FPS
+ belt: *belt
+ splitter: *splitter
+ underground_belt: *underground_belt
+ miner: *miner
+ cutter: *cutter
+ rotater: *rotater
+ stacker: *stacker
+ mixer: *mixer
+ painter: *painter
+ trash: *trash
+
+ abortBuildingPlacement: Cancelar
+ rotateWhilePlacing: Rotacionar
+ rotateInverseModifier: >-
+ Modifier: Rotação instantanea
+ cycleBuildingVariants: Variações
+ confirmMassDelete: Confirmar exclusão em massa
+ cycleBuildings: Trocar de construção
+
+ massSelectStart: Segure e arraste para começar
+ massSelectSelectMultiple: Selecionar área
+ massSelectCopy: Copiar área
+
+ placementDisableAutoOrientation: Desligar orientações automaticas
+ placeMultiple: Permanecer no modo de produção
+ placeInverse: Inverter orientação de esteira
+
+about:
+ title: Sobre o jogo
+
+changelog:
+ title: Changelog
+
+demo:
+ features:
+ restoringGames: Restaurando jogos salvos
+ importingGames: Carregando jogos salvos
+ oneGameLimit: Limitado para um savegamne
+ customizeKeybindings: Modificando Teclas
+ creatingMarkers: Criando marcações
+
+ settingNotAvailable: Não disponível na versão demo.
diff --git a/version b/version
index ab679818..db152789 100644
--- a/version
+++ b/version
@@ -1 +1 @@
-1.1.6
\ No newline at end of file
+1.1.8
\ No newline at end of file