mirror of
https://github.com/tobspr/shapez.io.git
synced 2025-06-13 13:04:03 +00:00
Merge branch 'contributors-in-game' of https://github.com/Bagel03/bagel-shapez.io into contributors-in-game
This commit is contained in:
commit
090f38e533
@ -6,6 +6,8 @@ export const CHANGELOG = [
|
||||
"Puzzle DLC: Goal acceptors now reset after getting no items for a while (This should prevent being able to 'cheat' puzzles) (by Sense101)",
|
||||
"Puzzle DLC: Added button to clear all buildings / reset the puzzle (by Sense101)",
|
||||
"Puzzle DLC: Allow copy-paste in puzzle mode (by Sense101)",
|
||||
"Fixed level achievements being given on the wrong level (by DJ1TJOO)",
|
||||
"Fixed blueprint not properly clearing on right click",
|
||||
"Updated translations",
|
||||
],
|
||||
},
|
||||
|
||||
@ -18,6 +18,7 @@ export const THIRDPARTY_URLS = {
|
||||
shapeViewer: "https://viewer.shapez.io",
|
||||
|
||||
standaloneStorePage: "https://store.steampowered.com/app/1318690/shapezio/",
|
||||
stanaloneCampaignLink: "https://get.shapez.io",
|
||||
puzzleDlcStorePage: "https://store.steampowered.com/app/1625400/shapezio__Puzzle_DLC",
|
||||
|
||||
levelTutorialVideos: {
|
||||
@ -72,7 +73,7 @@ export const globalConfig = {
|
||||
|
||||
readerAnalyzeIntervalSeconds: 10,
|
||||
|
||||
goalAcceptorItemsRequired: 10,
|
||||
goalAcceptorItemsRequired: 12,
|
||||
goalAcceptorsPerProducer: 5,
|
||||
puzzleModeSpeed: 3,
|
||||
puzzleMinBoundsSize: 2,
|
||||
|
||||
@ -56,4 +56,12 @@ export class GoalAcceptorComponent extends Component {
|
||||
(globalConfig.puzzleModeSpeed * globalConfig.beltSpeedItemsPerSecond)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy the current state to another component
|
||||
* @param {GoalAcceptorComponent} otherComponent
|
||||
*/
|
||||
copyAdditionalStateTo(otherComponent) {
|
||||
otherComponent.item = this.item;
|
||||
}
|
||||
}
|
||||
|
||||
@ -6,6 +6,7 @@ import { MetaBuilding } from "../meta_building";
|
||||
import { GameRoot } from "../root";
|
||||
import { ShapeDefinition } from "../shape_definition";
|
||||
import { HUDBetaOverlay } from "./parts/beta_overlay";
|
||||
import { HUDBlueprintPlacer } from "./parts/blueprint_placer";
|
||||
import { HUDBuildingsToolbar } from "./parts/buildings_toolbar";
|
||||
import { HUDBuildingPlacer } from "./parts/building_placer";
|
||||
import { HUDColorBlindHelper } from "./parts/color_blind_helper";
|
||||
@ -44,6 +45,8 @@ export class GameHUD {
|
||||
|
||||
this.parts = {
|
||||
buildingsToolbar: new HUDBuildingsToolbar(this.root),
|
||||
|
||||
blueprintPlacer: new HUDBlueprintPlacer(this.root),
|
||||
buildingPlacer: new HUDBuildingPlacer(this.root),
|
||||
|
||||
// Must always exist
|
||||
|
||||
@ -125,7 +125,7 @@ export class HUDModalDialogs extends BaseHUDPart {
|
||||
|
||||
dialog.buttonSignals.getStandalone.add(() => {
|
||||
this.app.analytics.trackUiClick("demo_dialog_click");
|
||||
window.open(THIRDPARTY_URLS.standaloneStorePage + "?ref=ddc");
|
||||
window.open(THIRDPARTY_URLS.stanaloneCampaignLink + "/shapez_demo_dialog");
|
||||
});
|
||||
|
||||
return dialog.buttonSignals;
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
/* typehints:start */
|
||||
/* typehints:end */
|
||||
import { globalConfig } from "../../../core/config";
|
||||
import { gMetaBuildingRegistry } from "../../../core/global_registries";
|
||||
import { createLogger } from "../../../core/logging";
|
||||
@ -50,7 +48,7 @@ export class HUDPuzzleEditorSettings extends BaseHUDPart {
|
||||
</div>
|
||||
|
||||
<div class="buildingsButton">
|
||||
<button class="styledButton clearBuildings">${T.ingame.puzzleEditorSettings.clearBuildings}</button>
|
||||
<button class="styledButton resetPuzzle">${T.ingame.puzzleEditorSettings.resetPuzzle}</button>
|
||||
</div>
|
||||
|
||||
</div>`
|
||||
@ -62,7 +60,7 @@ export class HUDPuzzleEditorSettings extends BaseHUDPart {
|
||||
bind(".zoneHeight .plus", () => this.modifyZone(0, 1));
|
||||
bind("button.trim", this.trim);
|
||||
bind("button.clearItems", this.clearItems);
|
||||
bind("button.clearBuildings", this.clearBuildings);
|
||||
bind("button.resetPuzzle", this.resetPuzzle);
|
||||
}
|
||||
}
|
||||
|
||||
@ -70,9 +68,14 @@ export class HUDPuzzleEditorSettings extends BaseHUDPart {
|
||||
this.root.logic.clearAllBeltsAndItems();
|
||||
}
|
||||
|
||||
clearBuildings() {
|
||||
resetPuzzle() {
|
||||
for (const entity of this.root.entityMgr.getAllWithComponent(StaticMapEntityComponent)) {
|
||||
const staticComp = entity.components.StaticMapEntity;
|
||||
const goalComp = entity.components.GoalAcceptor;
|
||||
|
||||
if (goalComp) {
|
||||
goalComp.clear();
|
||||
}
|
||||
|
||||
if (
|
||||
[MetaGoalAcceptorBuilding, MetaConstantProducerBuilding, MetaBlockBuilding]
|
||||
|
||||
@ -1,10 +1,6 @@
|
||||
import { gMetaBuildingRegistry } from "../../../core/global_registries";
|
||||
import { createLogger } from "../../../core/logging";
|
||||
import { makeDiv } from "../../../core/utils";
|
||||
import { T } from "../../../translations";
|
||||
import { MetaBlockBuilding } from "../../buildings/block";
|
||||
import { MetaConstantProducerBuilding } from "../../buildings/constant_producer";
|
||||
import { MetaGoalAcceptorBuilding } from "../../buildings/goal_acceptor";
|
||||
import { StaticMapEntityComponent } from "../../components/static_map_entity";
|
||||
import { BaseHUDPart } from "../base_hud_part";
|
||||
|
||||
@ -23,13 +19,13 @@ export class HUDPuzzlePlaySettings extends BaseHUDPart {
|
||||
["section"],
|
||||
`
|
||||
<button class="styledButton clearItems">${T.ingame.puzzleEditorSettings.clearItems}</button>
|
||||
<button class="styledButton clearBuildings">${T.ingame.puzzleEditorSettings.resetPuzzle}</button>
|
||||
<button class="styledButton resetPuzzle">${T.ingame.puzzleEditorSettings.resetPuzzle}</button>
|
||||
|
||||
`
|
||||
);
|
||||
|
||||
bind("button.clearItems", this.clearItems);
|
||||
bind("button.clearBuildings", this.clearBuildings);
|
||||
bind("button.resetPuzzle", this.resetPuzzle);
|
||||
}
|
||||
}
|
||||
|
||||
@ -37,20 +33,19 @@ export class HUDPuzzlePlaySettings extends BaseHUDPart {
|
||||
this.root.logic.clearAllBeltsAndItems();
|
||||
}
|
||||
|
||||
clearBuildings() {
|
||||
resetPuzzle() {
|
||||
for (const entity of this.root.entityMgr.getAllWithComponent(StaticMapEntityComponent)) {
|
||||
const staticComp = entity.components.StaticMapEntity;
|
||||
const goalComp = entity.components.GoalAcceptor;
|
||||
|
||||
if (
|
||||
[MetaGoalAcceptorBuilding, MetaConstantProducerBuilding, MetaBlockBuilding]
|
||||
.map(metaClass => gMetaBuildingRegistry.findByClass(metaClass).id)
|
||||
.includes(staticComp.getMetaBuilding().id)
|
||||
) {
|
||||
continue;
|
||||
if (goalComp) {
|
||||
goalComp.clear();
|
||||
}
|
||||
|
||||
this.root.map.removeStaticEntity(entity);
|
||||
this.root.entityMgr.destroyEntity(entity);
|
||||
if (staticComp.getMetaBuilding().getIsRemovable(this.root)) {
|
||||
this.root.map.removeStaticEntity(entity);
|
||||
this.root.entityMgr.destroyEntity(entity);
|
||||
}
|
||||
}
|
||||
this.root.entityMgr.processDestroyList();
|
||||
}
|
||||
|
||||
@ -42,7 +42,7 @@ export class HUDStandaloneAdvantages extends BaseHUDPart {
|
||||
this.trackClicks(this.contentDiv.querySelector("button.steamLinkButton"), () => {
|
||||
this.root.app.analytics.trackUiClick("standalone_advantage_visit_steam");
|
||||
this.root.app.platformWrapper.openExternalLink(
|
||||
THIRDPARTY_URLS.standaloneStorePage + "?ref=savs&prc=" + A_B_TESTING_LINK_TYPE
|
||||
THIRDPARTY_URLS.stanaloneCampaignLink + "/shapez_std_advg"
|
||||
);
|
||||
this.close();
|
||||
});
|
||||
|
||||
@ -27,7 +27,9 @@ export class HUDWatermark extends BaseHUDPart {
|
||||
);
|
||||
this.trackClicks(this.linkElement, () => {
|
||||
this.root.app.analytics.trackUiClick("watermark_click_2_direct");
|
||||
this.root.app.platformWrapper.openExternalLink(THIRDPARTY_URLS.standaloneStorePage + "?ref=wtmd");
|
||||
this.root.app.platformWrapper.openExternalLink(
|
||||
THIRDPARTY_URLS.stanaloneCampaignLink + "/shapez_watermark"
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -7,7 +7,6 @@ import { types } from "../../savegame/serialization";
|
||||
import { enumGameModeTypes, GameMode } from "../game_mode";
|
||||
import { HUDPuzzleBackToMenu } from "../hud/parts/puzzle_back_to_menu";
|
||||
import { HUDPuzzleDLCLogo } from "../hud/parts/puzzle_dlc_logo";
|
||||
import { HUDBlueprintPlacer } from "../hud/parts/blueprint_placer";
|
||||
import { HUDMassSelector } from "../hud/parts/mass_selector";
|
||||
|
||||
export class PuzzleGameMode extends GameMode {
|
||||
@ -32,7 +31,6 @@ export class PuzzleGameMode extends GameMode {
|
||||
this.additionalHudParts = {
|
||||
puzzleBackToMenu: HUDPuzzleBackToMenu,
|
||||
puzzleDlcLogo: HUDPuzzleDLCLogo,
|
||||
blueprintPlacer: HUDBlueprintPlacer,
|
||||
massSelector: HUDMassSelector,
|
||||
};
|
||||
|
||||
|
||||
@ -10,7 +10,6 @@ import { enumGameModeIds, enumGameModeTypes, GameMode } from "../game_mode";
|
||||
import { ShapeDefinition } from "../shape_definition";
|
||||
import { enumHubGoalRewards } from "../tutorial_goals";
|
||||
import { HUDWiresToolbar } from "../hud/parts/wires_toolbar";
|
||||
import { HUDBlueprintPlacer } from "../hud/parts/blueprint_placer";
|
||||
import { HUDUnlockNotification } from "../hud/parts/unlock_notification";
|
||||
import { HUDMassSelector } from "../hud/parts/mass_selector";
|
||||
import { HUDShop } from "../hud/parts/shop";
|
||||
@ -546,7 +545,6 @@ export class RegularGameMode extends GameMode {
|
||||
|
||||
this.additionalHudParts = {
|
||||
wiresToolbar: HUDWiresToolbar,
|
||||
blueprintPlacer: HUDBlueprintPlacer,
|
||||
unlockNotification: HUDUnlockNotification,
|
||||
massSelector: HUDMassSelector,
|
||||
shop: HUDShop,
|
||||
|
||||
@ -67,8 +67,9 @@ export class GoalAcceptorSystem extends GameSystemWithFilter {
|
||||
const staticComp = contents[i].components.StaticMapEntity;
|
||||
const item = goalComp.item;
|
||||
|
||||
const requiredItemsForSuccess = globalConfig.goalAcceptorItemsRequired;
|
||||
const percentage = clamp(goalComp.currentDeliveredItems / requiredItemsForSuccess, 0, 1);
|
||||
const requiredItems = globalConfig.goalAcceptorItemsRequired;
|
||||
|
||||
const fillPercentage = clamp(goalComp.currentDeliveredItems / requiredItems, 0, 1);
|
||||
|
||||
const center = staticComp.getTileSpaceBounds().getCenter().toWorldSpace();
|
||||
if (item) {
|
||||
@ -81,7 +82,7 @@ export class GoalAcceptorSystem extends GameSystemWithFilter {
|
||||
);
|
||||
}
|
||||
|
||||
const isValid = item && goalComp.currentDeliveredItems >= requiredItemsForSuccess;
|
||||
const isValid = item && goalComp.currentDeliveredItems >= requiredItems;
|
||||
|
||||
parameters.context.translate(center.x, center.y);
|
||||
parameters.context.rotate((staticComp.rotation / 180) * Math.PI);
|
||||
@ -93,7 +94,7 @@ export class GoalAcceptorSystem extends GameSystemWithFilter {
|
||||
|
||||
// progress arc
|
||||
|
||||
goalComp.displayPercentage = lerp(goalComp.displayPercentage, percentage, 0.2);
|
||||
goalComp.displayPercentage = lerp(goalComp.displayPercentage, fillPercentage, 0.2);
|
||||
|
||||
const startAngle = Math.PI * 0.595;
|
||||
const maxAngle = Math.PI * 1.82;
|
||||
|
||||
@ -427,7 +427,7 @@ export class AchievementCollection {
|
||||
createLevelOptions(level) {
|
||||
return {
|
||||
init: ({ key }) => this.unlock(key, this.root.hubGoals.level),
|
||||
isValid: currentLevel => currentLevel >= level,
|
||||
isValid: currentLevel => currentLevel > level,
|
||||
signal: "storyGoalCompleted",
|
||||
};
|
||||
}
|
||||
|
||||
@ -398,9 +398,7 @@ export class MainMenuState extends GameState {
|
||||
}
|
||||
|
||||
onPuzzleWishlistButtonClicked() {
|
||||
this.app.platformWrapper.openExternalLink(
|
||||
THIRDPARTY_URLS.puzzleDlcStorePage + "?ref=mmsl2&prc=" + A_B_TESTING_LINK_TYPE
|
||||
);
|
||||
this.app.platformWrapper.openExternalLink(THIRDPARTY_URLS.puzzleDlcStorePage + "?utm_medium=mmsl2");
|
||||
}
|
||||
|
||||
onBackButtonClicked() {
|
||||
@ -410,9 +408,7 @@ export class MainMenuState extends GameState {
|
||||
|
||||
onSteamLinkClicked() {
|
||||
this.app.analytics.trackUiClick("main_menu_steam_link_" + A_B_TESTING_LINK_TYPE);
|
||||
this.app.platformWrapper.openExternalLink(
|
||||
THIRDPARTY_URLS.standaloneStorePage + "?ref=mmsl2&prc=" + A_B_TESTING_LINK_TYPE
|
||||
);
|
||||
this.app.platformWrapper.openExternalLink(THIRDPARTY_URLS.stanaloneCampaignLink + "/shapez_mainmenu");
|
||||
|
||||
return false;
|
||||
}
|
||||
@ -641,7 +637,9 @@ export class MainMenuState extends GameState {
|
||||
);
|
||||
getStandalone.add(() => {
|
||||
this.app.analytics.trackUiClick("visit_steampage_from_slot_limit");
|
||||
this.app.platformWrapper.openExternalLink(THIRDPARTY_URLS.standaloneStorePage + "?reF=ssll");
|
||||
this.app.platformWrapper.openExternalLink(
|
||||
THIRDPARTY_URLS.stanaloneCampaignLink + "/shapez_slotlimit"
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@ export class MobileWarningState extends GameState {
|
||||
|
||||
|
||||
<a href="${
|
||||
THIRDPARTY_URLS.standaloneStorePage + "?ref=mobile"
|
||||
THIRDPARTY_URLS.stanaloneCampaignLink + "/shapez_mobile"
|
||||
}" class="standaloneLink" target="_blank">Get the shapez.io standalone!</a>
|
||||
`;
|
||||
}
|
||||
|
||||
@ -75,7 +75,7 @@ mainMenu:
|
||||
puzzleDlcText: Du hast Spaß daran, deine Fabriken zu optimieren und effizienter
|
||||
zu machen? Hol dir das Puzzle DLC auf Steam für noch mehr Spaß!
|
||||
puzzleDlcWishlist: Jetzt zur Wunschliste hinzufügen!
|
||||
puzzleDlcViewNow: View Dlc
|
||||
puzzleDlcViewNow: Dlc anzeigen
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -229,11 +229,11 @@ dialogs:
|
||||
Puzzle" finden.
|
||||
puzzleCreateOffline:
|
||||
title: Offline Modus
|
||||
desc: Da du offline bist, bist du nicht in der Lage dei Puzzle zu speichern
|
||||
desc: Da du offline bist, kannst du dein Puzzle nicht speichern
|
||||
und/oder zu veröffentlichen. Möchtest du trotzdem fortfahren?
|
||||
puzzlePlayRegularRecommendation:
|
||||
title: Empfehlung
|
||||
desc: ch empfehle <strong>stark</strong>, das normale Spiel bis Level 12 zu
|
||||
desc: Ich empfehle <strong>stark</strong>, das normale Spiel bis Level 12 zu
|
||||
spielen, bevor du dich an das Puzzle DLC wagst, sonst stößt du
|
||||
möglicherweise auf noch nicht eingeführte Mechaniken. Möchtest du
|
||||
trotzdem fortfahren?
|
||||
@ -281,7 +281,7 @@ ingame:
|
||||
clearSelection: Auswahl aufheben
|
||||
pipette: Pipette
|
||||
switchLayers: Ebenen wechseln
|
||||
clearBelts: Clear belts
|
||||
clearBelts: Fließbänder räumen
|
||||
colors:
|
||||
red: Rot
|
||||
green: Grün
|
||||
@ -438,8 +438,8 @@ ingame:
|
||||
clearItems: Items löschen
|
||||
share: Teilen
|
||||
report: Melden
|
||||
clearBuildings: Clear Buildings
|
||||
resetPuzzle: Reset Puzzle
|
||||
clearBuildings: Gebäude löschen
|
||||
resetPuzzle: Puzzle zurücksetzen
|
||||
puzzleEditorControls:
|
||||
title: Puzzle Editor
|
||||
instructions:
|
||||
@ -700,7 +700,7 @@ buildings:
|
||||
description: Liefere ein Shape an, um dieses als Ziel festzulegen.
|
||||
block:
|
||||
default:
|
||||
name: Sperre
|
||||
name: Sperrblock
|
||||
description: Ermöglicht das Blockieren einer Kachel.
|
||||
storyRewards:
|
||||
reward_cutter_and_trash:
|
||||
@ -1044,9 +1044,9 @@ settings:
|
||||
Mauszeiger am Bildschirmrand platzierst. Die Geschwindigkeit
|
||||
stimmt dabei mit den Tasten überein.
|
||||
zoomToCursor:
|
||||
title: Zoom towards Cursor
|
||||
description: If activated the zoom will happen in the direction of your mouse
|
||||
position, otherwise in the middle of the screen.
|
||||
title: In Richtung Cursor zoomen
|
||||
description: Wenn aktiviert, erfolgt der Zoom in Richtung deiner Mausposition,
|
||||
statt in die Mitte des Bildschirms.
|
||||
mapResourcesScale:
|
||||
title: Größe der Ressourcen auf der Karte
|
||||
description: Legt die Größe der Ressourcen auf der Karte (beim Herauszoomen)
|
||||
@ -1128,10 +1128,10 @@ keybindings:
|
||||
rotateToDown: "Rotieren: Nach unten zeigend"
|
||||
rotateToRight: "Rotieren: Nach rechts zeigend"
|
||||
rotateToLeft: "Rotieren: Nach links zeigend"
|
||||
constant_producer: Constant Producer
|
||||
goal_acceptor: Goal Acceptor
|
||||
block: Block
|
||||
massSelectClear: Clear belts
|
||||
constant_producer: Item-Produzent
|
||||
goal_acceptor: Ziel Akzeptor
|
||||
block: Sperrblock
|
||||
massSelectClear: Fließbänder räumen
|
||||
about:
|
||||
title: Über dieses Spiel
|
||||
body: Dieses Spiel ist quelloffen (Open Source) und wurde von <a
|
||||
@ -1280,8 +1280,8 @@ puzzleMenu:
|
||||
easy: Einfach
|
||||
medium: Mittel
|
||||
hard: Schwer
|
||||
dlcHint: Purchased the DLC already? Make sure it is activated by right clicking
|
||||
shapez.io in your library, selecting Properties > DLCs.
|
||||
dlcHint: DLC schon gekauft? Stelle sicher, dass es aktiviert ist, indem du in der Steam-Bibliothek
|
||||
shapez.io rechtsklickst und es unter Eigenschaften > Zusatzinhalte (DLC) aktivierst.
|
||||
backendErrors:
|
||||
ratelimit: Du führst Aktionen zu schnell aus. Bitte warte kurz.
|
||||
invalid-api-key: Kommunikation mit dem Back-End fehlgeschlagen, veruche das
|
||||
|
||||
@ -79,7 +79,7 @@ mainMenu:
|
||||
puzzleDlcText: Houd je van het comprimeren en optimaliseren van fabrieken?
|
||||
Verkrijg de puzzel DLC nu op Steam voor nog meer plezier!
|
||||
puzzleDlcWishlist: Voeg nu toe aan je verlanglijst!
|
||||
puzzleDlcViewNow: View Dlc
|
||||
puzzleDlcViewNow: Bekijk DLC
|
||||
dialogs:
|
||||
buttons:
|
||||
ok: OK
|
||||
@ -445,8 +445,8 @@ ingame:
|
||||
clearItems: Items leeg maken
|
||||
share: Delen
|
||||
report: Rapporteren
|
||||
clearBuildings: Clear Buildings
|
||||
resetPuzzle: Reset Puzzle
|
||||
clearBuildings: Verwijder Gebouwen
|
||||
resetPuzzle: Reset Puzzel
|
||||
puzzleEditorControls:
|
||||
title: Puzzel Maker
|
||||
instructions:
|
||||
@ -1238,7 +1238,7 @@ puzzleMenu:
|
||||
hard: Moeilijk
|
||||
completed: Voltooid
|
||||
medium: Medium
|
||||
official: Officieell
|
||||
official: Officieel
|
||||
trending: Trending vandaag
|
||||
trending-weekly: Trending wekelijks
|
||||
categories: Categorieën
|
||||
|
||||
@ -21,7 +21,7 @@ steamPage:
|
||||
hatlarımı daha verimli yapmamı engelleyemeyecek kadar güzel bir fabrika
|
||||
oyunu.
|
||||
global:
|
||||
loading: Yüklenİyor
|
||||
loading: Yükleniyor
|
||||
error: Hata
|
||||
thousandsDivider: ","
|
||||
decimalSeparator: .
|
||||
@ -57,11 +57,11 @@ demoBanners:
|
||||
intro: Bütün özellikleri açmak için tam sürümü satın alın!
|
||||
mainMenu:
|
||||
play: Oyna
|
||||
changelog: Değİşİklİk Günlüğü
|
||||
changelog: Değişiklik Günlüğü
|
||||
importSavegame: Kayıt Yükle
|
||||
openSourceHint: Bu oyun açık kaynak kodlu!
|
||||
discordLink: Resmİ Discord Sunucusu
|
||||
helpTranslate: Çevİrİye yardım et!
|
||||
discordLink: Resmi Discord Sunucusu
|
||||
helpTranslate: Çeviriye yardım et!
|
||||
browserWarning: Üzgünüz, bu oyunun tarayıcınızda yavaş çalıştığı biliniyor! Tam
|
||||
sürümü satın alın veya iyi performans için Chrome tarayıcısını kullanın.
|
||||
savegameLevel: Seviye <x>
|
||||
@ -93,7 +93,7 @@ dialogs:
|
||||
showKeybindings: Tuş Kısayollarını Göster
|
||||
retry: Yeniden Dene
|
||||
continue: Devam Et
|
||||
playOffline: Play Offline
|
||||
playOffline: Çevrimdışı Oyna
|
||||
importSavegameError:
|
||||
title: Kayıt yükleme hatası
|
||||
text: "Oyun kaydı yükleme başarısız:"
|
||||
@ -104,7 +104,7 @@ dialogs:
|
||||
title: Oyun bozuk
|
||||
text: "Oyun yükleme başarısız:"
|
||||
confirmSavegameDelete:
|
||||
title: Sİlme İşlemİnİ onayla
|
||||
title: Silme İşlemini onayla
|
||||
text: Bu kaydı silmek istediğinize emin misiniz?<br><br> '<savegameName>'
|
||||
seviyesi <savegameLevel><br><br> Bu işlem geri alınamaz!
|
||||
savegameDeletionError:
|
||||
@ -262,7 +262,7 @@ ingame:
|
||||
keybindingsOverlay:
|
||||
moveMap: Hareket Et
|
||||
selectBuildings: Alan seç
|
||||
stopPlacement: Yerleştİrmeyİ durdur
|
||||
stopPlacement: Yerleştirmeyi durdur
|
||||
rotateBuilding: Yapıyı döndür
|
||||
placeMultiple: Çoklu yerleştir
|
||||
reverseOrientation: Yönünü ters çevir
|
||||
@ -276,7 +276,7 @@ ingame:
|
||||
plannerSwitchSide: Planlayıcıyı ters çevir
|
||||
cutSelection: Kes
|
||||
copySelection: Kopyala
|
||||
clearSelection: Seçimi temİzle
|
||||
clearSelection: Seçimi temizle
|
||||
pipette: Pipet
|
||||
switchLayers: Katman değiştir
|
||||
clearBelts: Bantları temizle
|
||||
@ -333,7 +333,7 @@ ingame:
|
||||
blueprintPlacer:
|
||||
cost: Bedel
|
||||
waypoints:
|
||||
waypoints: Yer imler
|
||||
waypoints: Yer imleri
|
||||
hub: MERKEZ
|
||||
description: Sol-tık ile Yer imlerine git, sağ-tık ile yer imini
|
||||
sil.<br><br>Mevcut konumdan yer imi oluşturmak için <keybinding>'a
|
||||
@ -500,7 +500,7 @@ buildings:
|
||||
name: Üretici
|
||||
description: Bir şekli veya rengi üretmek için üzerine yerleştir.
|
||||
chainable:
|
||||
name: Üretici (Zİncİrleme)
|
||||
name: Üretici (Zincirleme)
|
||||
description: Bir şekli veya rengi üretmek için üzerine yerleştir. Zincirleme
|
||||
bağlanabilir.
|
||||
underground_belt:
|
||||
@ -584,10 +584,10 @@ buildings:
|
||||
name: Birleştirici (tekil)
|
||||
description: İki taşıma bandını bir çıktı verecek şekilde birleştirir.
|
||||
splitter:
|
||||
name: Ayırıcı (tekİl)
|
||||
name: Ayırıcı (tekil)
|
||||
description: Bir taşıma bandını iki çıktı verecek şekilde ayırır.
|
||||
splitter-inverse:
|
||||
name: Ayırıcı (tekİl)
|
||||
name: Ayırıcı (tekil)
|
||||
description: Bir taşıma bandını iki çıktı verecek şekilde ayırır.
|
||||
storage:
|
||||
default:
|
||||
@ -720,7 +720,7 @@ storyRewards:
|
||||
<strong>birleştirilir</strong>, yoksa sol girişteki şeklin
|
||||
<strong>üzerine kaynaştırılır</strong>!
|
||||
reward_splitter:
|
||||
title: Ayırıcı/Bİrleştİrİcİ
|
||||
title: Ayırıcı/Birleştirici
|
||||
desc: <strong>Ayırıcıyı</strong> açtın! <strong>dengeleyicin</strong> başka bir
|
||||
türü - Tek giriş alıp ikiye ayırır
|
||||
reward_tunnel:
|
||||
@ -728,7 +728,7 @@ storyRewards:
|
||||
desc: <strong>Tünel</strong> açıldı - Artık eşyaları taşıma bantları ve yapılar
|
||||
altından geçirebilirsiniz!
|
||||
reward_rotater_ccw:
|
||||
title: Saat yönünün tersİnde Döndürme
|
||||
title: Saat yönünün tersinde Döndürme
|
||||
desc: <strong>Döndürücünün</strong> farklı bir türünü açtın - Şekiller artık
|
||||
saat yönünün tersinde döndürülebilir! İnşa etmek için döndürücüyü
|
||||
seç ve <strong>türler arası geçiş yapmak için 'T' tuşuna
|
||||
@ -745,7 +745,7 @@ storyRewards:
|
||||
<strong>daha yüksek</strong> ve tünel türlerini artık içiçe
|
||||
kullanabilirsin!
|
||||
reward_cutter_quad:
|
||||
title: Çeyreğİnİ Kesme
|
||||
title: Çeyreğini Kesme
|
||||
desc: <strong>Kesicinin</strong> yeni bir türünü açtın - Bu tür şekilleri iki
|
||||
parça yerine <strong>dört parçaya</strong> ayırabilir!
|
||||
reward_painter_double:
|
||||
@ -840,13 +840,11 @@ storyRewards:
|
||||
et.<br><br> Ne seçersen seç eğlenmeyi unutma!
|
||||
reward_wires_painter_and_levers:
|
||||
title: Kablolar ve Dörtlü Boyayıcı
|
||||
desc: "You just unlocked the <strong>Wires Layer</strong>: It is a separate
|
||||
layer on top of the regular layer and introduces a lot of new
|
||||
mechanics!<br><br> For the beginning I unlocked you the <strong>Quad
|
||||
Painter</strong> - Connect the slots you would like to paint with on
|
||||
the wires layer!<br><br> To switch to the wires layer, press
|
||||
<strong>E</strong>. <br><br> PS: <strong>Enable hints</strong> in
|
||||
the settings to activate the wires tutorial!"
|
||||
desc: "Az önce the <strong>Tel Katmanının</strong> kilidini açtın :
|
||||
Normal katmanın üzerinde ayrı bir katman ve yeni mekanikler sunmakta!<br><br>
|
||||
Başlangıç için sana <strong>Quad
|
||||
Painter'ı</strong> açtım - Tel tabakasındaki bağlamak istediğin yuvaları bağla !<br><br> Tel katmanına geçmek için
|
||||
<strong>E</strong> tuşuna bas. <br><br> NOT:Kablolar öğreticisini aktive etmek için <strong>ipuçlarını etkinleştir</strong> !"
|
||||
reward_filter:
|
||||
title: Eşya Filtresi
|
||||
desc: <strong>Eşya filtresini</strong> açtın! Kablo katmanından gelen sinyalle
|
||||
@ -946,7 +944,7 @@ settings:
|
||||
twenty_minutes: 20 Dakika
|
||||
disabled: Devredışı
|
||||
compactBuildingInfo:
|
||||
title: Derlİ Toplu Yapı Bİlgİlerİ
|
||||
title: Derli Toplu Yapı Bilgileri
|
||||
description: Yapıların bilgi kutularını sadece oranlarını göstecek şekilde
|
||||
kısaltır. Aksi takdirde yapının açıklaması ve resmi gösterilir.
|
||||
disableCutDeleteWarnings:
|
||||
@ -976,24 +974,24 @@ settings:
|
||||
title: Ses Ayarı
|
||||
description: Ses efektlerinin seviyesini ayarlar
|
||||
musicVolume:
|
||||
title: Müzİk Ayarı
|
||||
title: Müzik Ayarı
|
||||
description: Müzik seviyesini ayarlar
|
||||
lowQualityMapResources:
|
||||
title: Düşük Kalİte Harİta Kaynakları
|
||||
title: Düşük Kalite Harİta Kaynakları
|
||||
description: Oyun performansını artırmak için haritada görünen kaynakların çizim
|
||||
kalitesini sadeleştirir. Hatta daha net bir görüntü sağlar, bu
|
||||
yüzden bir dene!
|
||||
disableTileGrid:
|
||||
title: Harİta Çİzgİlerİnİ Gİzle
|
||||
title: Harita Çizgilerini Gizle
|
||||
description: Harita çizgilerini gizlemek oyun performansına yardımcı olabilir.
|
||||
Aynı zamanda oyunun daha net görünmesini sağlar!
|
||||
clearCursorOnDeleteWhilePlacing:
|
||||
title: Sağ Tık İnşa İptalİ
|
||||
title: Sağ Tık İnşa İptali
|
||||
description: Varsayılan olarak açık. Özellik açıksa, inşa modundayken sağ yık
|
||||
yapıldığında inşa modundan çıkar. Eğer özellik kapalıysa, inşa
|
||||
modundan çıkmadan var olan yapıları sağ tık ile silebilirsiniz.
|
||||
lowQualityTextures:
|
||||
title: Düşük Kalİte Görüntü (Çİrkİn)
|
||||
title: Düşük Kalite Görüntü (Çirkin)
|
||||
description: Performans için düşük kalite görüntü kullanır. Bu oyunun daha
|
||||
çirkin görünmesine sebep olur!
|
||||
displayChunkBorders:
|
||||
@ -1001,11 +999,11 @@ settings:
|
||||
description: Oyun 16'ya 16 alanlardan oluşur. Bu seçenek aktif olduğunda alan
|
||||
sınırları görüntülenir.
|
||||
pickMinerOnPatch:
|
||||
title: Kaynak Üzerinde Üretİcİ Seç
|
||||
title: Kaynak Üzerinde Üretici Seç
|
||||
description: Varsayılan olarak açık. Eğer pipet bir kaynağın üzerinde
|
||||
kullanılırsa, üreteç yapısı inşa için seçilir.
|
||||
simplifiedBelts:
|
||||
title: Sadeleştİrİlmİş Bantlar (Çİrkİn)
|
||||
title: Sadeleştirilmiş Bantlar (Çirkin)
|
||||
description: Taşıma bandı üzerindeki eşyalar fare imleci üzerinde değilse
|
||||
görüntülenmez. Eğer gerçekten performansa ihtiyacınız yoksa bu
|
||||
ayarla oynamanız tavsiye edilmez.
|
||||
@ -1117,7 +1115,7 @@ about:
|
||||
|
||||
Son olarak, en iyi arkadaşım <a href="https://github.com/niklas-dahl" target="_blank">Niklas'a</a> büyük teşekkürler. Factorio oyunlarımız olmasaydı bu oyun hiç var olmamış olacaktı.
|
||||
changelog:
|
||||
title: Değİşİklİk Günlüğü
|
||||
title: Değişiklik Günlüğü
|
||||
demo:
|
||||
features:
|
||||
restoringGames: Oyun kayıtlarını yükleme
|
||||
@ -1218,6 +1216,7 @@ puzzleMenu:
|
||||
easy: Kolay
|
||||
hard: Zor
|
||||
completed: Tamamlanan
|
||||
|
||||
medium: Orta
|
||||
official: Resmİ
|
||||
trending: Bugün öne çıkan
|
||||
@ -1243,6 +1242,7 @@ puzzleMenu:
|
||||
easy: Kolay
|
||||
medium: Orta
|
||||
hard: Zor
|
||||
|
||||
dlcHint: Purchased the DLC already? Make sure it is activated by right clicking
|
||||
shapez.io in your library, selecting Properties > DLCs.
|
||||
backendErrors:
|
||||
@ -1268,6 +1268,7 @@ backendErrors:
|
||||
bad-payload: İstek geçersiz veri içeriyor.
|
||||
bad-building-placement: Yapbozunuzda uygun yerleştirilmeyen yapılar mevcut.
|
||||
timeout: İstek zaman aşımına uğradı.
|
||||
|
||||
too-many-likes-already: Yapbozun zaten çok beğenisi var. Yine de silmek
|
||||
istiyorsanız support@shapez.io ile iletişime geçiniz!
|
||||
no-permission: Bu işlemi yapmak için izniniz yok.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user