Compare commits
25 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
84aff0112d | ||
|
|
a13f8ed05f | ||
|
|
0429abbb28 | ||
|
|
562d3e6528 | ||
|
|
ac27b484fa | ||
|
|
3c57c3e492 | ||
|
|
83f9f5d34a | ||
|
|
c659e4f0aa | ||
|
|
723ee3c647 | ||
|
|
32baa279e2 | ||
|
|
17b17979ab | ||
|
|
c94ab5b05a | ||
|
|
625a0125cb | ||
|
|
9f8c1b3d20 | ||
|
|
cc6ed88878 | ||
|
|
73523a96fa | ||
|
|
62e3bc86eb | ||
|
|
a12af852ab | ||
|
|
6f2fc00045 | ||
|
|
9e0de644c4 | ||
|
|
393bdfccaf | ||
|
|
56c39799c8 | ||
|
|
7f2a1374e4 | ||
|
|
6fa0ac56ac | ||
|
|
89ee04c942 |
@@ -46,7 +46,7 @@ task deploy(type: Copy){
|
|||||||
|
|
||||||
from "build/outputs/apk/release/android-release.apk"
|
from "build/outputs/apk/release/android-release.apk"
|
||||||
into "../deploy/"
|
into "../deploy/"
|
||||||
rename("android-release.apk", appName + "-android-" + getVersionString() + ".apk")
|
rename("android-release.apk", "${generateDeployName('android')}.apk")
|
||||||
}
|
}
|
||||||
|
|
||||||
android{
|
android{
|
||||||
|
|||||||
27
build.gradle
@@ -19,7 +19,7 @@ allprojects{
|
|||||||
|
|
||||||
ext{
|
ext{
|
||||||
versionNumber = '4'
|
versionNumber = '4'
|
||||||
versionModifier = 'beta'
|
versionModifier = 'release'
|
||||||
if(!project.hasProperty("versionType")) versionType = 'official'
|
if(!project.hasProperty("versionType")) versionType = 'official'
|
||||||
appName = 'Mindustry'
|
appName = 'Mindustry'
|
||||||
gdxVersion = '1.9.10'
|
gdxVersion = '1.9.10'
|
||||||
@@ -57,11 +57,36 @@ allprojects{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
generateDeployName = { String platform ->
|
||||||
|
if(platform == "windows"){
|
||||||
|
platform += "64"
|
||||||
|
}
|
||||||
|
platform = platform.capitalize()
|
||||||
|
|
||||||
|
if(platform.endsWith("64") || platform.endsWith("32")){
|
||||||
|
platform = "${platform.substring(0, platform.length() - 2)}-${platform.substring(platform.length() - 2)}bit"
|
||||||
|
}
|
||||||
|
|
||||||
|
return "[${platform}]${getModifierString()}[${getNeatVersionString()}]${appName}"
|
||||||
|
}
|
||||||
|
|
||||||
getVersionString = {
|
getVersionString = {
|
||||||
String buildVersion = getBuildVersion()
|
String buildVersion = getBuildVersion()
|
||||||
return "$versionNumber-$versionModifier-$buildVersion"
|
return "$versionNumber-$versionModifier-$buildVersion"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getNeatVersionString = {
|
||||||
|
String buildVersion = getBuildVersion()
|
||||||
|
return "v$buildVersion"
|
||||||
|
}
|
||||||
|
|
||||||
|
getModifierString = {
|
||||||
|
if(versionModifier != "release"){
|
||||||
|
return "[${versionModifier.toUpperCase()}]"
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
getBuildVersion = {
|
getBuildVersion = {
|
||||||
if(!project.hasProperty("buildversion")) return "custom build"
|
if(!project.hasProperty("buildversion")) return "custom build"
|
||||||
return project.getProperties()["buildversion"]
|
return project.getProperties()["buildversion"]
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.5 KiB |
@@ -46,6 +46,7 @@ newgame = New Game
|
|||||||
none = <none>
|
none = <none>
|
||||||
minimap = Minimap
|
minimap = Minimap
|
||||||
close = Close
|
close = Close
|
||||||
|
website = Website
|
||||||
quit = Quit
|
quit = Quit
|
||||||
maps = Maps
|
maps = Maps
|
||||||
continue = Continue
|
continue = Continue
|
||||||
@@ -158,7 +159,7 @@ openlink = Open Link
|
|||||||
copylink = Copy Link
|
copylink = Copy Link
|
||||||
back = Back
|
back = Back
|
||||||
classic.export = Export Classic Data
|
classic.export = Export Classic Data
|
||||||
classic.export.text = Classic (v3.5 build 40) save or map data has been detected. Would you like to export these saves to your phone's home folder, for use in the Mindustry Classic app?
|
classic.export.text = [accent]Mindustry[] has just had a major update.\nClassic (v3.5 build 40) save or map data has been detected. Would you like to export these saves to your phone's home folder, for use in the Mindustry Classic app?
|
||||||
quit.confirm = Are you sure you want to quit?
|
quit.confirm = Are you sure you want to quit?
|
||||||
quit.confirm.tutorial = Are you sure you know what you're doing?\nThe tutorial can be re-taken in[accent] Settings->Game->Re-Take Tutorial.[]
|
quit.confirm.tutorial = Are you sure you know what you're doing?\nThe tutorial can be re-taken in[accent] Settings->Game->Re-Take Tutorial.[]
|
||||||
loading = [accent]Loading...
|
loading = [accent]Loading...
|
||||||
@@ -514,6 +515,7 @@ setting.lasers.name = Show Power Lasers
|
|||||||
setting.pixelate.name = Pixelate[lightgray] (disables animations)
|
setting.pixelate.name = Pixelate[lightgray] (disables animations)
|
||||||
setting.minimap.name = Show Minimap
|
setting.minimap.name = Show Minimap
|
||||||
setting.musicvol.name = Music Volume
|
setting.musicvol.name = Music Volume
|
||||||
|
setting.ambientvol.name = Ambient Volume
|
||||||
setting.mutemusic.name = Mute Music
|
setting.mutemusic.name = Mute Music
|
||||||
setting.sfxvol.name = SFX Volume
|
setting.sfxvol.name = SFX Volume
|
||||||
setting.mutesound.name = Mute Sound
|
setting.mutesound.name = Mute Sound
|
||||||
@@ -873,7 +875,7 @@ tutorial.drill.mobile = Mining manually is inefficient.\n[accent]Drills []can mi
|
|||||||
tutorial.blockinfo = Each block has different stats. Each drill can only mine certain ores.\nTo check a block's info and stats,[accent] tap the "?" button while selecting it in the build menu.[]\n\n[accent]Access the Mechanical Drill's stats now.[]
|
tutorial.blockinfo = Each block has different stats. Each drill can only mine certain ores.\nTo check a block's info and stats,[accent] tap the "?" button while selecting it in the build menu.[]\n\n[accent]Access the Mechanical Drill's stats now.[]
|
||||||
tutorial.conveyor = [accent]Conveyors[] are used to transport items to the core.\nMake a line of conveyors from the drill to the core.\n[accent]Hold down the mouse to place in a line.[]\nHold[accent] CTRL[] while selecting a line to place diagonally.\n\n[accent]{0}/{1} conveyors placed in line\n[accent]0/1 items delivered
|
tutorial.conveyor = [accent]Conveyors[] are used to transport items to the core.\nMake a line of conveyors from the drill to the core.\n[accent]Hold down the mouse to place in a line.[]\nHold[accent] CTRL[] while selecting a line to place diagonally.\n\n[accent]{0}/{1} conveyors placed in line\n[accent]0/1 items delivered
|
||||||
tutorial.conveyor.mobile = [accent]Conveyors[] are used to transport items to the core.\nMake a line of conveyors from the drill to the core.\n[accent] Place in a line by holding down your finger for a few seconds[] and dragging in a direction.\n\n[accent]{0}/{1} conveyors placed in line\n[accent]0/1 items delivered
|
tutorial.conveyor.mobile = [accent]Conveyors[] are used to transport items to the core.\nMake a line of conveyors from the drill to the core.\n[accent] Place in a line by holding down your finger for a few seconds[] and dragging in a direction.\n\n[accent]{0}/{1} conveyors placed in line\n[accent]0/1 items delivered
|
||||||
tutorial.turret = Defensive structures must be built to repel the[lightgray] enemy[].\nBuild a[accent] duo turret[] near your base.
|
tutorial.turret = Once an item enters your core, it can be used for building.\nKeep in mind that not all items can be used for building.\nItems that are not used for building, such as[accent] coal[] or[accent] scrap[], cannot be put into the core.\nDefensive structures must be built to repel the[lightgray] enemy[].\nBuild a[accent] duo turret[] near your base.
|
||||||
tutorial.drillturret = Duo turrets require[accent] copper ammo []to shoot.\nPlace a drill near the turret.\nLead conveyors into the turret to supply it with copper.\n\n[accent]Ammo delivered: 0/1
|
tutorial.drillturret = Duo turrets require[accent] copper ammo []to shoot.\nPlace a drill near the turret.\nLead conveyors into the turret to supply it with copper.\n\n[accent]Ammo delivered: 0/1
|
||||||
tutorial.pause = During battle, you are able to[accent] pause the game.[]\nYou may queue buildings while paused.\n\n[accent]Press space to pause.
|
tutorial.pause = During battle, you are able to[accent] pause the game.[]\nYou may queue buildings while paused.\n\n[accent]Press space to pause.
|
||||||
tutorial.pause.mobile = During battle, you are able to[accent] pause the game.[]\nYou may queue buildings while paused.\n\n[accent]Press this button in the top left to pause.
|
tutorial.pause.mobile = During battle, you are able to[accent] pause the game.[]\nYou may queue buildings while paused.\n\n[accent]Press this button in the top left to pause.
|
||||||
|
|||||||
@@ -4,15 +4,15 @@ contributors = Übersetzer und Mitwirkende
|
|||||||
discord = Trete dem Mindustry Discord bei!
|
discord = Trete dem Mindustry Discord bei!
|
||||||
link.discord.description = Der offizielle Mindustry Discord Chatroom
|
link.discord.description = Der offizielle Mindustry Discord Chatroom
|
||||||
link.github.description = Quellcode des Spiels
|
link.github.description = Quellcode des Spiels
|
||||||
link.changelog.description = List of update changes
|
link.changelog.description = Liste von Änderungen
|
||||||
link.dev-builds.description = Entwicklungs-Builds (instabil)
|
link.dev-builds.description = Entwicklungs-Builds (instabil)
|
||||||
link.trello.description = Offizielles Trello Board für geplante Features
|
link.trello.description = Offizielles Trello Board für geplante Features
|
||||||
link.itch.io.description = itch.io Seite mit Downloads und der Web-Version des Spiels
|
link.itch.io.description = itch.io Seite mit Downloads und der Web-Version des Spiels
|
||||||
link.google-play.description = Google Play Store Seite
|
link.google-play.description = Google Play Store Seite
|
||||||
link.wiki.description = Offizelles Mindustry Wiki
|
link.wiki.description = Offizelles Mindustry Wiki
|
||||||
linkfail = Fehler beim Öffnen des Links!\nDie URL wurde in die Zwischenablage kopiert.
|
linkfail = Fehler beim Öffnen des Links!\nDie URL wurde in die Zwischenablage kopiert.
|
||||||
screenshot = Screenshot saved to {0}
|
screenshot = Screenshot gespeichert nach {0}
|
||||||
screenshot.invalid = Map too large, potentially not enough memory for screenshot.
|
screenshot.invalid = Karte zu groß! Eventuell nicht ausreichend Arbeitsspeicher für Screenshot.
|
||||||
gameover = Der Kern wurde zerstört.
|
gameover = Der Kern wurde zerstört.
|
||||||
gameover.pvp = Das[accent] {0}[] Team ist siegreich!
|
gameover.pvp = Das[accent] {0}[] Team ist siegreich!
|
||||||
highscore = [YELLOW] Neuer Highscore!
|
highscore = [YELLOW] Neuer Highscore!
|
||||||
@@ -22,12 +22,12 @@ stat.built = Gebäude Gebaut:[accent] {0}
|
|||||||
stat.destroyed = Gebäude Zerstört:[accent] {0}
|
stat.destroyed = Gebäude Zerstört:[accent] {0}
|
||||||
stat.deconstructed = Gebäude Abgebaut:[accent] {0}
|
stat.deconstructed = Gebäude Abgebaut:[accent] {0}
|
||||||
stat.delivered = Resources Launched:
|
stat.delivered = Resources Launched:
|
||||||
stat.rank = Final Rank: [accent]{0}
|
stat.rank = Finaler Rang: [accent]{0}
|
||||||
placeline = You have selected a block.\nYou can[accent] place in a line[] by[accent] holding down your finger for a few seconds[] and dragging in a direction.\nTry it.
|
placeline = Du hast einen Block ausgewählt.\nDu kannst[accent] davon eine Reihe bauen,[] indem du[accent] wenige Sekunden mit einem Finger drückst[] und ihn in eine Richtung ziehst.\nVersuch es.
|
||||||
removearea = You have selected removal mode.\nYou can[accent] remove blocks in a rectangle[] by[accent] holding down your finger for a few seconds[] and dragging.\nTry it.
|
removearea = Du hast den Zerstörungs Modus ausgewählt.\nDu kannst[accent] Blöcke im Rechteck zerstören,[] indem du[accent] wenige Sekunden mit einem Finger drückst[] und ihn ziehst.\nTry it.
|
||||||
launcheditems = [accent]Launched Items
|
launcheditems = [accent]Launched Items
|
||||||
map.delete = Bist du sicher, dass du die Karte "[accent]{0}[]" löschen möchtest?
|
map.delete = Bist du sicher, dass du die Karte "[accent]{0}[]" löschen möchtest?
|
||||||
level.highscore = High Score: [accent]{0}
|
level.highscore = Highscore: [accent]{0}
|
||||||
level.select = Level Auswahl
|
level.select = Level Auswahl
|
||||||
level.mode = Spielmodus:
|
level.mode = Spielmodus:
|
||||||
showagain = Nächstes mal nicht mehr anzeigen
|
showagain = Nächstes mal nicht mehr anzeigen
|
||||||
@@ -49,10 +49,10 @@ continue = Weiter
|
|||||||
maps.none = [LIGHT_GRAY]Keine Karten gefunden!
|
maps.none = [LIGHT_GRAY]Keine Karten gefunden!
|
||||||
about.button = Info
|
about.button = Info
|
||||||
name = Name:
|
name = Name:
|
||||||
noname = Pick a[accent] player name[] first.
|
noname = Wähle zuerst einen[accent] Spielernamen[].
|
||||||
filename = Dateiname:
|
filename = Dateiname:
|
||||||
unlocked = Neuen Block freigeschaltet!
|
unlocked = Neuen Block freigeschaltet!
|
||||||
completed = [accent]Completed
|
completed = [accent]Abgeschlossen
|
||||||
techtree = Tech Tree
|
techtree = Tech Tree
|
||||||
research.list = [LIGHT_GRAY]Forschung:
|
research.list = [LIGHT_GRAY]Forschung:
|
||||||
research = Forschung
|
research = Forschung
|
||||||
@@ -67,14 +67,14 @@ server.kicked.serverOutdated = Veralteter Server! Bitte den Host um ein Update!
|
|||||||
server.kicked.banned = Du wurdest vom Server verbannt.
|
server.kicked.banned = Du wurdest vom Server verbannt.
|
||||||
server.kicked.recentKick = Du wurdest gerade gekickt.\nWarte bevor du dich wieder verbindest.
|
server.kicked.recentKick = Du wurdest gerade gekickt.\nWarte bevor du dich wieder verbindest.
|
||||||
server.kicked.nameInUse = Es ist bereits ein Spieler \nmit diesem Namen auf dem Server.
|
server.kicked.nameInUse = Es ist bereits ein Spieler \nmit diesem Namen auf dem Server.
|
||||||
server.kicked.nameEmpty = Dein Name muss zumindest einen Buchstaben oder eine Zahl enthalten.
|
server.kicked.nameEmpty = Dein Name muss mindestens einen Buchstaben oder eine Zahl enthalten.
|
||||||
server.kicked.idInUse = Du bist bereits auf dem Server! Anmeldungen mit zwei Accounts sind nicht gestattet.
|
server.kicked.idInUse = Du bist bereits auf dem Server! Anmeldungen mit zwei Accounts sind nicht gestattet.
|
||||||
server.kicked.customClient = Der Server akzeptiert keine Custom Builds von Mindustry. Lade dir die offizielle Version herunter.
|
server.kicked.customClient = Der Server akzeptiert keine Custom Builds von Mindustry. Lade dir die offizielle Version herunter.
|
||||||
server.kicked.gameover = Game over!
|
server.kicked.gameover = Game over!
|
||||||
host.info = Der [accent]host[] Knopf startet einen Server auf den Ports [scarlet]6567[] und [scarlet]6568.[]\nJeder im gleichen [LIGHT_GRAY]W-Lan oder lokalem Netzwerk[] sollte deinen Server in seiner Server Liste sehen können.\n\nWenn du Leuten die Verbindung über IP ermöglichen willst, benötigst du [accent]Port-Forwarding[].\n\n[LIGHT_GRAY]Hinweis: Falls es Probleme mit der Verbindung im Netzwerk gibt, stell sicher, dass Mindustry in deinen Firewall Einstellungen Zugriff auf das lokale Netzwerk hat.
|
host.info = Der [accent]host[] Knopf startet einen Server auf den Ports [scarlet]6567[] und [scarlet]6568.[]\nJeder im gleichen [LIGHT_GRAY]W-Lan oder lokalem Netzwerk[] sollte deinen Server in seiner Server Liste sehen können.\n\nWenn du Leuten die Verbindung über IP ermöglichen willst, benötigst du [accent]Port-Forwarding[].\n\n[LIGHT_GRAY]Hinweis: Falls es Probleme mit der Verbindung im Netzwerk gibt, stell sicher, dass Mindustry in deinen Firewall Einstellungen Zugriff auf das lokale Netzwerk hat.
|
||||||
join.info = Hier kannst du eine [accent]Server IP[] eingeben um dich zu verbinden oder Server im [accent]lokalem Netzwerk[] entdecken und dich mit ihnen verbinden.\nSowohl Spielen über das lokale Netzwerk als auch Spielen über das Internet werden unterstützt.\n\n[LIGHT_GRAY]Hinweis: Es gibt keine globale Server Liste; Wenn du dich mit jemand per IP verbinden willst musst du den Host nach seiner IP fragen.
|
join.info = Hier kannst du eine [accent]Server IP[] eingeben um dich zu verbinden oder Server im [accent]lokalem Netzwerk[] entdecken und dich mit ihnen verbinden.\nSowohl Spielen über das lokale Netzwerk als auch Spielen über das Internet werden unterstützt.\n\n[LIGHT_GRAY]Hinweis: Es gibt keine globale Server Liste; Wenn du dich mit jemand per IP verbinden willst musst du den Host nach seiner IP fragen.
|
||||||
hostserver = Server hosten
|
hostserver = Server hosten
|
||||||
hostserver.mobile = Host\nGame
|
hostserver.mobile = Host\nSpiel
|
||||||
host = Host
|
host = Host
|
||||||
hosting = [accent] Server wird geöffnet...
|
hosting = [accent] Server wird geöffnet...
|
||||||
hosts.refresh = Aktualisieren
|
hosts.refresh = Aktualisieren
|
||||||
@@ -144,12 +144,12 @@ save.wave = Welle: {0}
|
|||||||
save.difficulty = Schwierigkeitsgrad: {0}
|
save.difficulty = Schwierigkeitsgrad: {0}
|
||||||
save.date = Zuletzt gespeichert: {0}
|
save.date = Zuletzt gespeichert: {0}
|
||||||
save.playtime = Spielzeit: {0}
|
save.playtime = Spielzeit: {0}
|
||||||
warning = Warning.
|
warning = Warnung.
|
||||||
confirm = Bestätigen
|
confirm = Bestätigen
|
||||||
delete = Löschen
|
delete = Löschen
|
||||||
ok = OK
|
ok = OK
|
||||||
open = Öffnen
|
open = Öffnen
|
||||||
customize = Customize
|
customize = Anpassen
|
||||||
cancel = Abbruch
|
cancel = Abbruch
|
||||||
openlink = Link öffnen
|
openlink = Link öffnen
|
||||||
copylink = Kopiere Link
|
copylink = Kopiere Link
|
||||||
@@ -159,7 +159,7 @@ loading = [accent]Wird geladen ...
|
|||||||
saving = [accent]Speichere...
|
saving = [accent]Speichere...
|
||||||
wave = [accent]Welle {0}
|
wave = [accent]Welle {0}
|
||||||
wave.waiting = Welle in {0}
|
wave.waiting = Welle in {0}
|
||||||
wave.waveInProgress = [LIGHT_GRAY]Wave in progress
|
wave.waveInProgress = [LIGHT_GRAY]Welle im Gange
|
||||||
waiting = Warten...
|
waiting = Warten...
|
||||||
waiting.players = Warte auf Spieler...
|
waiting.players = Warte auf Spieler...
|
||||||
wave.enemies = [LIGHT_GRAY]{0} Gegner verbleiben
|
wave.enemies = [LIGHT_GRAY]{0} Gegner verbleiben
|
||||||
@@ -173,8 +173,8 @@ map.delete.confirm = Bist du sicher, dass du diese Karte löschen willst? Die Ak
|
|||||||
map.random = [accent]Zufällige Karte
|
map.random = [accent]Zufällige Karte
|
||||||
map.nospawn = Diese Karte hat keine Kerne in denen die Spieler beginnen können! Füge einen [ROYAL]blue[] Kern zu dieser Karte im Editor hinzu.
|
map.nospawn = Diese Karte hat keine Kerne in denen die Spieler beginnen können! Füge einen [ROYAL]blue[] Kern zu dieser Karte im Editor hinzu.
|
||||||
map.nospawn.pvp = Diese Karte hat keine gegnerischen Kerne wo Gegner starten könnten! Füge über den Editor [SCARLET] rote[] Kerne zu dieser Karte hinzu.
|
map.nospawn.pvp = Diese Karte hat keine gegnerischen Kerne wo Gegner starten könnten! Füge über den Editor [SCARLET] rote[] Kerne zu dieser Karte hinzu.
|
||||||
map.nospawn.attack = This map does not have any enemy cores for player to attack! Add[SCARLET] red[] cores to this map in the editor.
|
map.nospawn.attack = Diese Karte hat keine gengnerischen Kerne, die Spieler angreifen können! Füge über den Editor [SCARLET] rote[] Kerne zu dieser Karte hinzu.
|
||||||
map.invalid = Fehler beim Laden der Karte: Beschädigtes oder invalide Karten Datei.
|
map.invalid = Fehler beim Laden der Karte: Beschädigtes oder ungültige Karten Datei.
|
||||||
editor.brush = Pinsel
|
editor.brush = Pinsel
|
||||||
editor.openin = Öffne im Editor
|
editor.openin = Öffne im Editor
|
||||||
editor.oregen = Erze generieren
|
editor.oregen = Erze generieren
|
||||||
@@ -183,17 +183,17 @@ editor.mapinfo = Karten Info
|
|||||||
editor.author = Autor:
|
editor.author = Autor:
|
||||||
editor.description = Beschreibung:
|
editor.description = Beschreibung:
|
||||||
editor.waves = Wellen:
|
editor.waves = Wellen:
|
||||||
editor.rules = Rules:
|
editor.rules = Regeln:
|
||||||
editor.generation = Generation:
|
editor.generation = Generation:
|
||||||
editor.ingame = Edit In-Game
|
editor.ingame = In-Game Bearbeiten
|
||||||
editor.newmap = New Map
|
editor.newmap = Neue Karte
|
||||||
waves.title = Wellen
|
waves.title = Wellen
|
||||||
waves.remove = Entfernen
|
waves.remove = Entfernen
|
||||||
waves.never = <never>
|
waves.never = <nie>
|
||||||
waves.every = every
|
waves.every = alle
|
||||||
waves.waves = Welle(n)
|
waves.waves = Welle(n)
|
||||||
waves.perspawn = per spawn
|
waves.perspawn = per Spawn
|
||||||
waves.to = to
|
waves.to = bis
|
||||||
waves.boss = Boss
|
waves.boss = Boss
|
||||||
waves.preview = Vorschau
|
waves.preview = Vorschau
|
||||||
waves.edit = Bearbeiten...
|
waves.edit = Bearbeiten...
|
||||||
@@ -201,7 +201,7 @@ waves.copy = Aus der Zwischenablage kopieren
|
|||||||
waves.load = Aus der Zwischenablage laden
|
waves.load = Aus der Zwischenablage laden
|
||||||
waves.invalid = Ungültige Wellen in der Zwischenablage.
|
waves.invalid = Ungültige Wellen in der Zwischenablage.
|
||||||
waves.copied = Wellen kopiert.
|
waves.copied = Wellen kopiert.
|
||||||
waves.none = No enemies defined.\nNote that empty wave layouts will automatically be replaced with the default layout.
|
waves.none = Keine Gegner definiert.\nInfo: Leere Wellen Entwürfe werden automatisch mit dem standard Entwurf ersetzt.
|
||||||
editor.default = [LIGHT_GRAY]<Default>
|
editor.default = [LIGHT_GRAY]<Default>
|
||||||
edit = Bearbeiten...
|
edit = Bearbeiten...
|
||||||
editor.name = Name:
|
editor.name = Name:
|
||||||
@@ -210,12 +210,12 @@ editor.removeunit = Remove Unit
|
|||||||
editor.teams = Teams
|
editor.teams = Teams
|
||||||
editor.errorload = Fehler beim laden der Datei:\n[accent]{0}
|
editor.errorload = Fehler beim laden der Datei:\n[accent]{0}
|
||||||
editor.errorsave = Fehler beim speichern der Datei:\n[accent]{0}
|
editor.errorsave = Fehler beim speichern der Datei:\n[accent]{0}
|
||||||
editor.errorimage = That's an image, not a map. Don't go around changing extensions expecting it to work.\n\nIf you want to import a legacy map, use the 'import legacy map' button in the editor.
|
editor.errorimage = Das ist ein Bild, keine Karte. Wechsel nicht den Dateityp und erwarte, dass es funktioniert.\n\nWenn du eine alte Karte importieren möchtest, benutze den 'Importiere Terrain Bild' Knopf in dem Editor.
|
||||||
editor.errorlegacy = This map is too old, and uses a legacy map format that is no longer supported.
|
editor.errorlegacy = Diese Karte ist zu alt und benutzt ein veraltetes Karten Format, das nicht mehr unterstützt wird.
|
||||||
editor.errorheader = This map file is either not valid or corrupt.
|
editor.errorheader = Diese Karte ist entweder nicht gültig oder beschädigt.
|
||||||
editor.errorname = Karte hat keinen Namen.
|
editor.errorname = Karte hat keinen Namen.
|
||||||
editor.update = Update
|
editor.update = Update
|
||||||
editor.randomize = Randomize
|
editor.randomize = Zufällig Anordnen
|
||||||
editor.apply = Anwenden
|
editor.apply = Anwenden
|
||||||
editor.generate = Generieren
|
editor.generate = Generieren
|
||||||
editor.resize = Grösse\nanpassen
|
editor.resize = Grösse\nanpassen
|
||||||
@@ -245,35 +245,35 @@ editor.mapname = Karten Name
|
|||||||
editor.overwrite = [accent] Warnung! Dies überschreibt eine vorhandene Karte.
|
editor.overwrite = [accent] Warnung! Dies überschreibt eine vorhandene Karte.
|
||||||
editor.overwrite.confirm = [scarlet]Warnung![] Eine Karte mit diesem Namen existiert bereits. Bist du sicher, dass du sie überschreiben willst?
|
editor.overwrite.confirm = [scarlet]Warnung![] Eine Karte mit diesem Namen existiert bereits. Bist du sicher, dass du sie überschreiben willst?
|
||||||
editor.selectmap = Wähle eine Karte zum Laden:
|
editor.selectmap = Wähle eine Karte zum Laden:
|
||||||
toolmode.replace = Replace
|
toolmode.replace = Ersetzen
|
||||||
toolmode.replace.description = Draws only on solid blocks.
|
toolmode.replace.description = Zeichnet nur auf festen Blöcken.
|
||||||
toolmode.replaceall = Replace All
|
toolmode.replaceall = Alles Ersetzen
|
||||||
toolmode.replaceall.description = Replace all blocks in map.
|
toolmode.replaceall.description = Alle Blöcke auf der Karte ersetzen.
|
||||||
toolmode.orthogonal = Orthogonal
|
toolmode.orthogonal = Rechtwinkelig
|
||||||
toolmode.orthogonal.description = Draws only orthogonal lines.
|
toolmode.orthogonal.description = Zeichnet nur rechtwinkelige Linien.
|
||||||
toolmode.square = Square
|
toolmode.square = Quadrat
|
||||||
toolmode.square.description = Square brush.
|
toolmode.square.description = Quadrat Pinsel.
|
||||||
toolmode.eraseores = Erase Ores
|
toolmode.eraseores = Erze löschen
|
||||||
toolmode.eraseores.description = Erase only ores.
|
toolmode.eraseores.description = Löscht nur Erze.
|
||||||
toolmode.fillteams = Fill Teams
|
toolmode.fillteams = Fill Teams
|
||||||
toolmode.fillteams.description = Fill teams instead of blocks.
|
toolmode.fillteams.description = Fill teams instead of blocks.
|
||||||
toolmode.drawteams = Draw Teams
|
toolmode.drawteams = Draw Teams
|
||||||
toolmode.drawteams.description = Draw teams instead of blocks.
|
toolmode.drawteams.description = Draw teams instead of blocks.
|
||||||
filters.empty = [LIGHT_GRAY]No filters! Add one with the button below.
|
filters.empty = [LIGHT_GRAY]Keine Filter! Füge einen mit dem unteren Knopf hinzu.
|
||||||
filter.distort = Distort
|
filter.distort = Distort
|
||||||
filter.noise = Noise
|
filter.noise = Noise
|
||||||
filter.median = Median
|
filter.median = Median
|
||||||
filter.blend = Blend
|
filter.blend = Blend
|
||||||
filter.defaultores = Default Ores
|
filter.defaultores = Standard Erze
|
||||||
filter.ore = Erz
|
filter.ore = Erz
|
||||||
filter.rivernoise = River Noise
|
filter.rivernoise = River Noise
|
||||||
filter.mirror = Mirror
|
filter.mirror = Mirror
|
||||||
filter.clear = Clear
|
filter.clear = Löschen
|
||||||
filter.option.ignore = Ignore
|
filter.option.ignore = Ignore
|
||||||
filter.scatter = Scatter
|
filter.scatter = Scatter
|
||||||
filter.terrain = Terrain
|
filter.terrain = Terrain
|
||||||
filter.option.scale = Scale
|
filter.option.scale = Scale
|
||||||
filter.option.chance = Chance
|
filter.option.chance = Wahrscheinlichkeit
|
||||||
filter.option.mag = Magnitude
|
filter.option.mag = Magnitude
|
||||||
filter.option.threshold = Threshold
|
filter.option.threshold = Threshold
|
||||||
filter.option.circle-scale = Circle Scale
|
filter.option.circle-scale = Circle Scale
|
||||||
@@ -293,7 +293,7 @@ width = Breite:
|
|||||||
height = Höhe:
|
height = Höhe:
|
||||||
menu = Menü
|
menu = Menü
|
||||||
play = Spielen
|
play = Spielen
|
||||||
campaign = Campaign
|
campaign = Kampagne
|
||||||
load = Laden
|
load = Laden
|
||||||
save = Speichern
|
save = Speichern
|
||||||
fps = FPS: {0}
|
fps = FPS: {0}
|
||||||
@@ -383,14 +383,14 @@ no = Nein
|
|||||||
info.title = [accent]Info
|
info.title = [accent]Info
|
||||||
error.title = [crimson] Ein Fehler ist aufgetreten
|
error.title = [crimson] Ein Fehler ist aufgetreten
|
||||||
error.crashtitle = Ein Fehler ist aufgetreten!
|
error.crashtitle = Ein Fehler ist aufgetreten!
|
||||||
attackpvponly = [scarlet]Only available in Attack/PvP modes
|
attackpvponly = [scarlet]Nur in Angriff oder PvP Modus verfügbar.
|
||||||
blocks.input = Input
|
blocks.input = Input
|
||||||
blocks.output = Output
|
blocks.output = Output
|
||||||
blocks.booster = Booster
|
blocks.booster = Booster
|
||||||
block.unknown = [LIGHT_GRAY]???
|
block.unknown = [LIGHT_GRAY]???
|
||||||
blocks.powercapacity = Kapazität
|
blocks.powercapacity = Kapazität
|
||||||
blocks.powershot = Stromverbrauch/Schuss
|
blocks.powershot = Stromverbrauch/Schuss
|
||||||
blocks.damage = Damage
|
blocks.damage = Schaden
|
||||||
blocks.targetsair = Visiert Luft Einheiten an
|
blocks.targetsair = Visiert Luft Einheiten an
|
||||||
blocks.targetsground = Visiert Boden Einheiten an
|
blocks.targetsground = Visiert Boden Einheiten an
|
||||||
blocks.itemsmoved = Bewegungsgeschwindigkeit
|
blocks.itemsmoved = Bewegungsgeschwindigkeit
|
||||||
@@ -434,7 +434,7 @@ bullet.incendiary = [stat]entzündend
|
|||||||
bullet.homing = [stat]verfolgend
|
bullet.homing = [stat]verfolgend
|
||||||
bullet.shock = [stat]schock
|
bullet.shock = [stat]schock
|
||||||
bullet.frag = [stat]explosiv
|
bullet.frag = [stat]explosiv
|
||||||
bullet.knockback = [stat]{0}[lightgray] knockback
|
bullet.knockback = [stat]{0}[lightgray] zurückstoßend
|
||||||
bullet.freezing = [stat]gefrierend
|
bullet.freezing = [stat]gefrierend
|
||||||
bullet.tarred = [stat]geteert
|
bullet.tarred = [stat]geteert
|
||||||
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
bullet.multiplier = [stat]{0}[lightgray]x ammo multiplier
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ newgame = 새 게임
|
|||||||
none = <없음>
|
none = <없음>
|
||||||
minimap = 미니맵
|
minimap = 미니맵
|
||||||
close = 닫기
|
close = 닫기
|
||||||
|
website = 웹사이트
|
||||||
quit = 나가기
|
quit = 나가기
|
||||||
maps = 맵
|
maps = 맵
|
||||||
continue = 계속하기
|
continue = 계속하기
|
||||||
@@ -75,7 +76,7 @@ server.kicked.idInUse = 이미 서버에 접속중입니다! 다중 계정은
|
|||||||
server.kicked.customClient = 이 서버는 직접 빌드한 버전을 지원하지 않습니다. 공식 버전을 사용하세요.
|
server.kicked.customClient = 이 서버는 직접 빌드한 버전을 지원하지 않습니다. 공식 버전을 사용하세요.
|
||||||
server.kicked.gameover = 코어가 파괴되었습니다...
|
server.kicked.gameover = 코어가 파괴되었습니다...
|
||||||
host.info = [accent]호스트[] 버튼은 현재 네트워크의 [scarlet]6567[] 포트를 사용합니다.\n[LIGHT_GRAY]같은 Wi-Fi 또는 로컬 네트워크[] 에서 서버 목록을 볼 수 있습니다.\n\n만약 플레이어들이 이 IP를 통해 어디에서나 연결할 수 있게 하고 싶다면, 공유기 설정에서 [accent]포트 포워딩[]을 하시거나 Vpn을 사용하셔야 합니다.\n\n[LIGHT_GRAY]참고: LAN 게임 연결에 문제가 있는 사람이 있다면, 방화벽 설정에서 Mindustry 가 로컬 네트워크에 액세스하도록 허용했는지 확인 해 주세요.
|
host.info = [accent]호스트[] 버튼은 현재 네트워크의 [scarlet]6567[] 포트를 사용합니다.\n[LIGHT_GRAY]같은 Wi-Fi 또는 로컬 네트워크[] 에서 서버 목록을 볼 수 있습니다.\n\n만약 플레이어들이 이 IP를 통해 어디에서나 연결할 수 있게 하고 싶다면, 공유기 설정에서 [accent]포트 포워딩[]을 하시거나 Vpn을 사용하셔야 합니다.\n\n[LIGHT_GRAY]참고: LAN 게임 연결에 문제가 있는 사람이 있다면, 방화벽 설정에서 Mindustry 가 로컬 네트워크에 액세스하도록 허용했는지 확인 해 주세요.
|
||||||
join.info = 여기서 [accent]서버 IP[]를 입력하여 다른 서버에 접속할 수 있습니다.\n또는 [accent]로컬 네트워크(LAN)[] 서버를 검색하여 접속할 수 있습니다.\nLAN 및 WAN 멀티 플레이어 모두 지원됩니다.\n\n[LIGHT_GRAY]참고:여기에서는 자동으로 글로벌 서버를 추가하지 않습니다. IP로 다른 사람의 서버에 접속할려면 서버장에게 IP를 요청해야 합니다.
|
join.info = 여기서 [accent]서버 IP[]를 입력하여 다른 서버에 접속할 수 있습니다.\n또는 [accent]로컬 네트워크(LAN)[] 서버를 검색하여 접속할 수 있습니다.\nLAN 및 WAN 멀티 플레이어 모두 지원됩니다.\n\n[LIGHT_GRAY]참고:여기에서는 자동으로 글로벌 서버를 추가하지 않습니다. IP로 다른 사람의 서버에 접속할려면 서버장에게 IP를 요청해야 합니다.[]\n\n[ROYAL]한국의 공식 서버로는 mindustry.kr의 7000,7001,7002포트와 server1.mindustry.r-e.kr의 8000,8001,8002,8004포트가 있습니다.\n서버 주소 입력방법은 < 주소:포트 >의 형식입니다.
|
||||||
hostserver = 서버 열기
|
hostserver = 서버 열기
|
||||||
hostserver.mobile = 서버\n열기
|
hostserver.mobile = 서버\n열기
|
||||||
host = 서버 열기
|
host = 서버 열기
|
||||||
@@ -157,7 +158,10 @@ cancel = 취소
|
|||||||
openlink = 링크 열기
|
openlink = 링크 열기
|
||||||
copylink = 링크 복사
|
copylink = 링크 복사
|
||||||
back = 뒤로가기
|
back = 뒤로가기
|
||||||
|
classic.export = 클래식 데이터 추출
|
||||||
|
classic.export.text = Mindustry 클래식 (v3.5 build 40)의 세이브파일 또는 맵 데이터가 발견되었습니다. 이 것들을 Mindustry 클래식 앱에서 사용하기 위해 홈 폴더로 추출할까요?
|
||||||
quit.confirm = 정말로 종료하시겠습니까?
|
quit.confirm = 정말로 종료하시겠습니까?
|
||||||
|
quit.confirm.tutorial = 튜토리얼을 종료하시겠습니까?\n튜토리얼은 [accent]설정 -> 게임 -> 튜토리얼[]에서 다시 해보실 수 있습니다.
|
||||||
loading = [accent]불러오는중...
|
loading = [accent]불러오는중...
|
||||||
saving = [accent]저장중...
|
saving = [accent]저장중...
|
||||||
wave = [accent]웨이브 {0}
|
wave = [accent]웨이브 {0}
|
||||||
@@ -189,6 +193,7 @@ editor.waves = 웨이브:
|
|||||||
editor.rules = 규칙:
|
editor.rules = 규칙:
|
||||||
editor.generation = 맵 생성 설정:
|
editor.generation = 맵 생성 설정:
|
||||||
editor.ingame = 인게임 편집
|
editor.ingame = 인게임 편집
|
||||||
|
editor.newmap = 신규 맵
|
||||||
waves.title = 웨이브
|
waves.title = 웨이브
|
||||||
waves.remove = 삭제
|
waves.remove = 삭제
|
||||||
waves.never = 여기까지 유닛생성
|
waves.never = 여기까지 유닛생성
|
||||||
@@ -210,10 +215,9 @@ editor.name = 이름:
|
|||||||
editor.spawn = 유닛 생성
|
editor.spawn = 유닛 생성
|
||||||
editor.removeunit = 유닛 삭제
|
editor.removeunit = 유닛 삭제
|
||||||
editor.teams = 팀
|
editor.teams = 팀
|
||||||
editor.elevation = 지형 높이
|
|
||||||
editor.errorload = [accent]{0} 파일을 불러오는데 실패했습니다.
|
editor.errorload = [accent]{0} 파일을 불러오는데 실패했습니다.
|
||||||
editor.errorsave = [accent]{0} 파일을 저장하는데 실패했습니다.
|
editor.errorsave = [accent]{0} 파일을 저장하는데 실패했습니다.
|
||||||
editor.errorimage = 이것은 맵이 아니라 사진입니다. 확장자를 바꿔서 시도할 생각하지 마세요.\n\n예전 맵을 가져올려면 편집기의 '예전 맵 가져오기' 버튼을 사용하세요.
|
editor.errorimage = 이것은 맵이 아니라 사진입니다.\n\n예전 맵을 가져올려면 편집기의 '예전 맵 가져오기' 버튼을 사용하세요.
|
||||||
editor.errorlegacy = 이 맵은 너무 오래되어, 더이상 지원하지 않는 맵 형식을 사용합니다.
|
editor.errorlegacy = 이 맵은 너무 오래되어, 더이상 지원하지 않는 맵 형식을 사용합니다.
|
||||||
editor.errorheader = 이 맵 파일은 유효하지 않거나 손상되었습니다.
|
editor.errorheader = 이 맵 파일은 유효하지 않거나 손상되었습니다.
|
||||||
editor.errorname = 맵에 이름이 지정되어 있지 않습니다.
|
editor.errorname = 맵에 이름이 지정되어 있지 않습니다.
|
||||||
@@ -309,6 +313,7 @@ ping = Ping: {0}ms
|
|||||||
language.restart = 언어를 변경하려면 게임을 다시시작 해 주세요.
|
language.restart = 언어를 변경하려면 게임을 다시시작 해 주세요.
|
||||||
settings = 설정
|
settings = 설정
|
||||||
tutorial = 게임 방법
|
tutorial = 게임 방법
|
||||||
|
tutorial.retake = 튜토리얼
|
||||||
editor = 편집기
|
editor = 편집기
|
||||||
mapeditor = 맵 편집기
|
mapeditor = 맵 편집기
|
||||||
donate = 기부
|
donate = 기부
|
||||||
@@ -323,8 +328,9 @@ bestwave = [LIGHT_GRAY]최고 점수: {0}
|
|||||||
launch = < 출격 >
|
launch = < 출격 >
|
||||||
launch.title = 출격 성공
|
launch.title = 출격 성공
|
||||||
launch.next = [LIGHT_GRAY]다음 출격기회는 {0} 단계에서 나타납니다.
|
launch.next = [LIGHT_GRAY]다음 출격기회는 {0} 단계에서 나타납니다.
|
||||||
launch.unable = [scarlet]출격할 수 없습니다.[] {0}마리 남음.
|
launch.unable2 = [scarlet]출격할 수 없습니다.[] {0}마리 남음.
|
||||||
launch.confirm = 출격하게 되면 모든 자원이 코어로 들어갑니다.\n또한 성공하기 전까지 기지로 돌아갈 수 없습니다.
|
launch.confirm = 출격하게 되면 모든 자원이 코어로 들어갑니다.\n또한 성공하기 전까지 기지로 돌아갈 수 없습니다.
|
||||||
|
launch.skip.confirm = 만약 지금 출격하시지 않고 스킵하신다면, 다음 출격 웨이브까지 기다려야 합니다.
|
||||||
uncover = 구역 개방
|
uncover = 구역 개방
|
||||||
configure = 코어 시작자원 설정
|
configure = 코어 시작자원 설정
|
||||||
configure.locked = {0} 단계에서 시작자원 설정 잠금이 해제됩니다.
|
configure.locked = {0} 단계에서 시작자원 설정 잠금이 해제됩니다.
|
||||||
@@ -366,7 +372,7 @@ zone.fungalPass.name = 포자 지대
|
|||||||
|
|
||||||
zone.groundZero.description = 이 장소는 다시 시작하기에 최적의 환경을 지닌 장소입니다. 적은 수준의 위협이 있으며 자원의 양은 적습니다.\n가능한 한 많은 양의 구리와 납을 수집하십시오.\n출격합시다!
|
zone.groundZero.description = 이 장소는 다시 시작하기에 최적의 환경을 지닌 장소입니다. 적은 수준의 위협이 있으며 자원의 양은 적습니다.\n가능한 한 많은 양의 구리와 납을 수집하십시오.\n출격합시다!
|
||||||
zone.frozenForest.description = 이 지역도 산과 가까운 지역입니다 포자들이 흩뿌려져 있으며 극한의 추위도 포자룰 막을 수 있을거 같지 않습니다.\n전력을 통해서 모험을 시작하십시오 화력 발전소를 짓고 수리드론을 사용하는 법을 배우십시오.
|
zone.frozenForest.description = 이 지역도 산과 가까운 지역입니다 포자들이 흩뿌려져 있으며 극한의 추위도 포자룰 막을 수 있을거 같지 않습니다.\n전력을 통해서 모험을 시작하십시오 화력 발전소를 짓고 수리드론을 사용하는 법을 배우십시오.
|
||||||
zone.desertWastes.description = 이 황무지는 끝을 알수 없을 정도로 광활합니다 그리고 십자가 형태의 버려진 구조물이 존재합니다.\n석탄이 존재하며 이를 화력발전에 쓰거나 흑연정제에 쓰십시오.\n\n[LOYAL]이 지역에서의 착륙장소는 확실하지 않습니다.
|
zone.desertWastes.description = 이 황무지는 끝을 알수 없을 정도로 광활합니다 그리고 십자가 형태의 버려진 구조물이 존재합니다.\n석탄이 존재하며 이를 화력발전에 쓰거나 흑연정제에 쓰십시오.\n\n[lightgray]이 지역에서의 착륙장소는 확실하지 않습니다.
|
||||||
zone.saltFlats.description = 이 소금 사막은 매우 척박하여 자원이 거의 없습니다.\n하지만 자원이 희소한 이곳에서도 적들의 요새가 발견되었습니다.그들을 사막의 모래로 만들어버리십시오.
|
zone.saltFlats.description = 이 소금 사막은 매우 척박하여 자원이 거의 없습니다.\n하지만 자원이 희소한 이곳에서도 적들의 요새가 발견되었습니다.그들을 사막의 모래로 만들어버리십시오.
|
||||||
zone.craters.description = 물이 가득한 이 크레이터에는 옛 전쟁의 유물들이 쌓여있습니다.\n이곳을 다시 점령해 강화유리를 제작하고 물을 끌어올려 포탑과 드릴에 공급하여 더 좋은 효율로 방어선을 강화하십시오.
|
zone.craters.description = 물이 가득한 이 크레이터에는 옛 전쟁의 유물들이 쌓여있습니다.\n이곳을 다시 점령해 강화유리를 제작하고 물을 끌어올려 포탑과 드릴에 공급하여 더 좋은 효율로 방어선을 강화하십시오.
|
||||||
zone.ruinousShores.description = 이 지역은 과거 해안방어기지로 사용되었습니다.\n그러나 지금은 기본구조물만 남아있으니 이 지역을 어서 신속히 수리하여 외부로 세력을 확장한뒤 잃어버린 기술을 다시 회수하십시오.
|
zone.ruinousShores.description = 이 지역은 과거 해안방어기지로 사용되었습니다.\n그러나 지금은 기본구조물만 남아있으니 이 지역을 어서 신속히 수리하여 외부로 세력을 확장한뒤 잃어버린 기술을 다시 회수하십시오.
|
||||||
@@ -423,7 +429,6 @@ blocks.speedincrease = 속도 증가
|
|||||||
blocks.range = 사거리
|
blocks.range = 사거리
|
||||||
blocks.drilltier = 드릴
|
blocks.drilltier = 드릴
|
||||||
blocks.drillspeed = 기본 드릴 속도
|
blocks.drillspeed = 기본 드릴 속도
|
||||||
blocks.drilltierreq = 더 높은 티어의 드릴이 요구됨.
|
|
||||||
blocks.boosteffect = 가속 효과
|
blocks.boosteffect = 가속 효과
|
||||||
blocks.maxunits = 최대 활성유닛
|
blocks.maxunits = 최대 활성유닛
|
||||||
blocks.health = 체력
|
blocks.health = 체력
|
||||||
@@ -433,6 +438,7 @@ blocks.shots = 발포 횟수
|
|||||||
blocks.reload = 재장전
|
blocks.reload = 재장전
|
||||||
blocks.ammo = 탄약
|
blocks.ammo = 탄약
|
||||||
|
|
||||||
|
bar.drilltierreq = 드릴이 요구됨
|
||||||
bar.drillspeed = 채광 속도 : {0}/s
|
bar.drillspeed = 채광 속도 : {0}/s
|
||||||
bar.efficiency = 효율성 : {0}%
|
bar.efficiency = 효율성 : {0}%
|
||||||
bar.powerbalance = 전력 : {0}/s
|
bar.powerbalance = 전력 : {0}/s
|
||||||
@@ -509,6 +515,7 @@ setting.lasers.name = 전력 노드 레이저 표시
|
|||||||
setting.pixelate.name = 픽셀화[LIGHT_GRAY] (애니메이션 효과가 꺼집니다)
|
setting.pixelate.name = 픽셀화[LIGHT_GRAY] (애니메이션 효과가 꺼집니다)
|
||||||
setting.minimap.name = 미니맵 보기
|
setting.minimap.name = 미니맵 보기
|
||||||
setting.musicvol.name = 음악 크기
|
setting.musicvol.name = 음악 크기
|
||||||
|
setting.ambientvol.name = 배경음 크기
|
||||||
setting.mutemusic.name = 음소거
|
setting.mutemusic.name = 음소거
|
||||||
setting.sfxvol.name = 효과음 크기
|
setting.sfxvol.name = 효과음 크기
|
||||||
setting.mutesound.name = 소리 끄기
|
setting.mutesound.name = 소리 끄기
|
||||||
@@ -677,7 +684,7 @@ block.scrap-wall.name = 조각벽
|
|||||||
block.scrap-wall-large.name = 큰 조각벽
|
block.scrap-wall-large.name = 큰 조각벽
|
||||||
block.scrap-wall-huge.name = 거대한 조각 벽
|
block.scrap-wall-huge.name = 거대한 조각 벽
|
||||||
block.scrap-wall-gigantic.name = 엄청나게 큰 조각 벽
|
block.scrap-wall-gigantic.name = 엄청나게 큰 조각 벽
|
||||||
block.thruster.name = 반동
|
block.thruster.name = 쓰러스터
|
||||||
block.kiln.name = 가마
|
block.kiln.name = 가마
|
||||||
block.graphite-press.name = 흑연 압축기
|
block.graphite-press.name = 흑연 압축기
|
||||||
block.multi-press.name = 다중 압축기
|
block.multi-press.name = 다중 압축기
|
||||||
@@ -724,14 +731,14 @@ block.dark-panel-6.name = 어두운 패널 6
|
|||||||
block.dark-metal.name = 어두운 금속제
|
block.dark-metal.name = 어두운 금속제
|
||||||
block.ignarock.name = 얼은 바위
|
block.ignarock.name = 얼은 바위
|
||||||
block.hotrock.name = 뜨거운 바위
|
block.hotrock.name = 뜨거운 바위
|
||||||
block.magmarock.name = 마그마 바위
|
block.magmarock.name = 용암 바위
|
||||||
block.cliffs.name = 절벽
|
block.cliffs.name = 절벽
|
||||||
block.copper-wall.name = 구리 벽
|
block.copper-wall.name = 구리 벽
|
||||||
block.copper-wall-large.name = 대형 구리 벽
|
block.copper-wall-large.name = 대형 구리 벽
|
||||||
block.titanium-wall.name = 티타늄 벽
|
block.titanium-wall.name = 티타늄 벽
|
||||||
block.titanium-wall-large.name = 대형 티타늄 벽
|
block.titanium-wall-large.name = 대형 티타늄 벽
|
||||||
block.phase-wall.name = 위상 벽
|
block.phase-wall.name = 위상 벽
|
||||||
block.phase-wall-large.name = 대형 메타 벽
|
block.phase-wall-large.name = 대형 위상 벽
|
||||||
block.thorium-wall.name = 토륨 벽
|
block.thorium-wall.name = 토륨 벽
|
||||||
block.thorium-wall-large.name = 대형 토륨 벽
|
block.thorium-wall-large.name = 대형 토륨 벽
|
||||||
block.door.name = 문
|
block.door.name = 문
|
||||||
@@ -846,9 +853,9 @@ team.orange.name = 주황색 팀
|
|||||||
team.derelict.name = 버려진 팀
|
team.derelict.name = 버려진 팀
|
||||||
team.green.name = 초록색 팀
|
team.green.name = 초록색 팀
|
||||||
team.purple.name = 보라색 팀
|
team.purple.name = 보라색 팀
|
||||||
unit.spirit.name = 정령 수리 드론
|
unit.spirit.name = 스피릿 수리 드론
|
||||||
unit.draug.name = 영혼 채광
|
unit.draug.name = 드라우그 채광 드론
|
||||||
unit.phantom.name = 환영 건설 드론
|
unit.phantom.name = 팬텀 건설 드론
|
||||||
unit.dagger.name = 디거
|
unit.dagger.name = 디거
|
||||||
unit.crawler.name = 자폭자
|
unit.crawler.name = 자폭자
|
||||||
unit.titan.name = 타이탄
|
unit.titan.name = 타이탄
|
||||||
@@ -861,27 +868,27 @@ unit.chaos-array.name = 혼돈 배열
|
|||||||
unit.eradicator.name = 박멸
|
unit.eradicator.name = 박멸
|
||||||
unit.lich.name = 리치
|
unit.lich.name = 리치
|
||||||
unit.reaper.name = 사신
|
unit.reaper.name = 사신
|
||||||
tutorial.begin = 플레이어의 주요 목표는 [LIGHT_GRAY]적군[]을 제거하는 것입니다.\n\n이 게임은 [accent]구리를 채광[]하는 것으로 시작합니다.\n이것을 하기 위해 플레이어의 중심부 근처에 있는 구리 광맥을 누르세요.
|
tutorial.next = [lightgray]< 이 곳을 터치해 진행하세요. >
|
||||||
tutorial.drill = 수동으로 채광하는 것은 효율이 낮습니다.\n[accent]드릴[]은 자동으로 채광 작업을 합니다.\n구리 광맥에 표시된 영역에 드릴을 하나를 놓으세요.
|
tutorial.intro = Mindustry 튜토리얼을 시작하겠습니다. 튜토리얼은 [accent]모바일은 뒤로가기, 데스크탑은 esc버튼[]을 누르고 [accent]나가기 버튼[]을 눌러 종료가 가능합니다.\n[accent]구리[]를 18개 채광하세요. 코어 주위에 있는 주황색의 구리 광물을 터치함으로써 구리를 채광할 수 있습니다.\n\n[accent]현재 모은 구리의 개수 : {0}/{1} 개[]
|
||||||
tutorial.conveyor = [accent]컨베이어[]를 사용하여 아이템을 코어로 운반합니다.\n드릴에서 코어까지 컨베이어 라인을 만드세요.
|
tutorial.drill = 수동으로 채광하는 것은 효율이 낮습니다.\n[accent]드릴[]은 자동으로 드릴 바로아래에 있는 광물들을 채광합니다.\n드릴 카테고리의 기계식 드릴을 선택하여 구리 광맥위에 설치하세요.\n마우스 오른쪽 버튼으로 취소가 가능합니다.
|
||||||
tutorial.morecopper = 더 많은 구리가 필요합니다.\n\n수동으로 채광하거나, 드릴을 더 설치하세요.
|
tutorial.drill.mobile = 수동으로 채광하는 것은 효율이 낮습니다.\n[accent]드릴[]은 자동으로 드릴 바로아래에 있는 광물들을 채광합니다.\n드릴 카테고리의 기계식 드릴을 선택하여 구리 광맥위에 설치하세요.\n취소 버튼을 눌러 건축하기 전의 설계를 취소할 수 있습니다.
|
||||||
tutorial.turret = 방어 구조물은 [LIGHT_GRAY]적[]을 물리치기 위해 반드시 필요합니다.\n기지 근처에 듀오 터렛을 설치하세요.
|
tutorial.blockinfo = 블록들은 각각 능력이 다르며, 하위 티어의 드릴은 채광할 수 있는 광물의 종류가 적습니다.\n블럭의 정보를 확인하기 위해서는,[accent] 카테고리의 블럭을 누른 후, "?"버튼을 클릭하여 블럭의 정보를 확인하세요.[]\n[royal]궁금한 블럭의 정보를 아무거나 한 번 확인해보세요.
|
||||||
tutorial.drillturret = 듀오 터렛이 작동하기 위해서는[accent] 구리 탄약 []을 필요로 합니다.\n터렛 옆에 드릴을 설치하여 구리를 공급하세요.
|
tutorial.conveyor = [accent]컨베이어[]는 붙어 있는 곳에서 받는 아이템을 코어로 운반합니다.\n드릴에서 코어까지 컨베이어 라인을 만드세요.\n[accent]컨베이어를 클릭 후 건설을 시작하려는 지점을 마우스 왼쪽 버튼으로 꾸욱 누른 뒤[] 드래그하여 설계하세요.\n\n컨베이어 건설 수[accent]{0}/{1}\n[accent]광물을 코어로 운반하세요.
|
||||||
tutorial.waves = [LIGHT_GRAY]적[]이 접근합니다.\n\n2단계 동안 코어를 보호하고 더 많은 터렛을 만드세요.
|
tutorial.conveyor.mobile = [accent]컨베이어[]는 붙어 있는 곳에서 받는 아이템을 코어로 운반합니다.\n드릴에서 코어까지 컨베이어 라인을 만드세요.\n[accent]컨베이어를 화면에 1초정도 클릭하여 작은 노란색 원이 잠깐 나타났다 사라질 때까지 기다리신 후[] 드래그하여 설계하세요.\n\n컨베이어 건설 수[accent]{0}/{1}\n[accent]광물을 코어로 운반하세요.
|
||||||
tutorial.lead = 더 많은 광석을 이용할 수 있습니다. [accent]납[]을 찾아 탐색하세요.\n\n아이템을 코어로 전송할려면 플레이어 기체 또는 비행기에서 코어로 드래그 하세요.
|
tutorial.turret = 방어 구조물은 [LIGHT_GRAY]적[]을 물리치기 위해 반드시 필요합니다.\n포탑 카테고리의 듀오 포탑을 선택하신 후, 기지 근처에 듀오 포탑을 설치하세요.
|
||||||
tutorial.smelter = 구리와 납은 약한 금속입니다.\n[accent]고밀도 합금[]은 제련소에서 만들 수 있습니다.\n\n하나 만드세요.
|
tutorial.drillturret = 듀오 포탑이 공격하기 위해서는[accent] 구리 탄약[]을 필요로 합니다.\n포탑 근처의 구리 광맥에 드릴을 설치하고 컨베이어로 포탑과 이어서 포탑에 구리를 공급하세요.\n또는 직접 코어에서 광물을 꺼내 포탑에 넣을 수 도 있습니다.
|
||||||
tutorial.densealloy = 이 제련소는 이제 고밀도 합금을 생산할 것입니다.\n몇개 더 생산하세요.\n필요한 경우 더 만드세요.
|
tutorial.pause = 싱글 플래이에서는 게임을 [accent]일시정지[]할 수 있습니다.\n일시정지하면 교전과 더불어 건설까지 일시정지됩니다.\n\n[accent]스페이스 버튼[]을 눌러 일시정지하세요.
|
||||||
tutorial.siliconsmelter = 이제 이코어는 채굴과 수리하기 위한[accent] 스피릿 드론[]을 생성 할 것 입니다.\n\n[accent]실리콘[]을 사용해 다른 유닛을 생성하기 위한 공장을 만들 수 있습니다.\n실리콘 제련기를 제작하세요!
|
tutorial.pause.mobile = 싱글 플래이에서는 게임을 [accent]일시정지[]할 수 있습니다.\n일시정지하면 교전과 더불어 건설까지 일시정지됩니다.\n\n[accent]일시정지 버튼[]을 눌러 일시정지하세요.
|
||||||
tutorial.silicondrill = 실리콘을 제작하려면[accent] 석탄[] 과[accent] 모래[]가 필요합니다.\n드릴을 먼저 건설해보는건 어떤가요?
|
tutorial.unpause = 게임을 진행하기 위해 [accent]스페이스 버튼[]을 다시 누르세요.
|
||||||
tutorial.generator = 이 건물은 [LIGHT_YELLOW]전력[]이 필요합니다.\n[accent] 석탄 발전기[]를 건설하세요.
|
tutorial.unpause.mobile = 게임을 진행하기 위해 같은 위치의 버튼을 다시 누르세요.
|
||||||
tutorial.generatordrill = [accent] 석탄 발전기[]는 연료가 필요합니다.\n[accent] 석탄[]을 드릴로 채굴해서 연료를 체워주세요.
|
tutorial.breaking = 설계를 방해하는 블록을 제거하기 위해서 [accent]첫 번째 지점을 마우스 오른쪽 버튼[]으로 누른 뒤 드래그하여 범위를 지정해서 제거하세요.[]\n\n[accent]코어 근처의 조각 블럭 3개[]를 제거하세요.
|
||||||
tutorial.node = 전력은 송신해줄 노드가 필요합니다.\n[accent] 전력 노드[]를 석탄 등등 발전기 옆에 설치해서 생산된 전기를 다른곳으로 송신합시다.
|
tutorial.breaking.mobile = 설계를 방해하는 블록을 제거하기 위해서 [accent]망치 버튼을 눌러 제거모드[]로 변경하신 후, 첫번째 지점을 누른 후 드래그하여 범위를 지정한뒤 V버튼을 클릭해 블럭을 제거하세요.\n\n[accent]코어 근처의 조각 블럭 3개[]를 제거하세요.
|
||||||
tutorial.nodelink = 전력은 전력 블록과 발전기에 연결하거나, 연결된 전력 노드를 통해 전송이 가능합니다. \n\n전력 노드를 누르고 발전기와 실리콘 제련기를 선택하여 전원을 연결합시다.
|
tutorial.withdraw = [accent]코어나 창고,공장[]같은 자원을 넣을 수 있는 일부 블럭에서는 직접 자원을 빼낼 수도 있습니다.\n[accent]코어를 클릭 후 자원을 눌러서 자원을 빼내세요.
|
||||||
tutorial.silicon = 실리콘이 생산되고 있습니다.\n\n생산 시스템의 개선을 권고 드립니다.
|
tutorial.deposit = 자원을 다시 블록에 넣을수도 있습니다.\n\n[accent]당신의 기체에서 코어로 드래그[]하여 자원을 되돌려 넣으세요.
|
||||||
tutorial.daggerfactory = 이[accent] 디거 기체 공장[]은\n\n공격하는 기체를 생산하기 위해 사용됩니다.
|
tutorial.waves = [LIGHT_GRAY]적[]이 접근합니다.\n당신의 기체는 적을 향해 클릭하여 공격할 수 있습니다. 또한, 구리를 더 캐내고 포탑을 더 지어서 방어를 강화하세요.\n\n[accent]2단계 동안 코어를 보호하세요.[]
|
||||||
tutorial.router = 공장을 작동시키기 위해 자원이 필요합니다.\n컨베이어에 운반되고 있는 자원을 분할할 분배기를 만드세요.
|
tutorial.waves.mobile = [LIGHT_GRAY]적[]이 접근합니다.\n당신의 기체는 적을 자동조준하지만, 원하는 적을 클릭하여 공격하고 싶은 대상을 바꿀 수 있습니다.\n구리를 더 캐내고 포탑을 더 지어서 방어를 강화하세요.\n\n[accent]2단계동안 코어를 방어하세요.[]
|
||||||
tutorial.dagger = 전력 노드를 공장에 연결하세요.\n일단 요구 사항이 충족되면 기체 생산을 시작합니다.\n\n필요에 따라 드릴 및 발전기, 컨베이어를 더 많이 만들 수 있습니다.
|
tutorial.launch = 특정 단계에 도달하면 [accent]출격[]이 가능합니다.\n[accent]출격[]을 하게되면 해당 지역의 코어에 들어있는 자원들을 캠페인의 자원 창고로 보내지만, 해당 지역의 [accent]모든 것들[]은 날라가게 되니 주의하세요.
|
||||||
tutorial.battle = [LIGHT_GRAY]적[]의 코어가 드러났습니다.\n당신의 부대와 디거를 사용하여 파괴하세요.
|
|
||||||
|
|
||||||
item.copper.description = 모든 종류의 블록에서 광범위하게 사용되는 자원입니다.
|
item.copper.description = 모든 종류의 블록에서 광범위하게 사용되는 자원입니다.
|
||||||
item.lead.description = 쉽게 구할 수 있으며, 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다.
|
item.lead.description = 쉽게 구할 수 있으며, 전자 및 액체 수송 블록에서 광범위하게 사용되는 자원입니다.
|
||||||
@@ -917,11 +924,11 @@ unit.phantom.description = 첨단 드론 유닛. 플레이어의 건설을 도
|
|||||||
unit.dagger.description = 기본 지상 유닛입니다.\n플레이어 기체처럼 드론을 소환하지는 않습니다.
|
unit.dagger.description = 기본 지상 유닛입니다.\n플레이어 기체처럼 드론을 소환하지는 않습니다.
|
||||||
unit.crawler.description = 지상 유닛. 적이 가까이에 있으면 폭발합니다.
|
unit.crawler.description = 지상 유닛. 적이 가까이에 있으면 폭발합니다.
|
||||||
unit.titan.description = 고급 지상 유닛입니다.\n원거리 총 대신에 근접 화염 방사기를 가지고 있으며, 지상과 공중 둘다 공격할 수 있습니다.
|
unit.titan.description = 고급 지상 유닛입니다.\n원거리 총 대신에 근접 화염 방사기를 가지고 있으며, 지상과 공중 둘다 공격할 수 있습니다.
|
||||||
unit.ghoul.description = 무겁고 튼튼한 지상 폭격기 입니다.\n주로 적 건물로 이동하여 엄청난 폭격을 가합니다.
|
|
||||||
unit.wraith.description = 적 핵심 건물 및 유닛을 집중적으로 공격하는 방식을 사용하는 전투기 입니다.
|
|
||||||
unit.fortress.description = 중포 지상 유닛.\n높은 공격력을 가진 총과 높은 체력을 가지고 있습니다.
|
unit.fortress.description = 중포 지상 유닛.\n높은 공격력을 가진 총과 높은 체력을 가지고 있습니다.
|
||||||
unit.revenant.description = 플래이어가 생산가능한 최종 공중 전투기. 폭발물을 쓰는 스웜 포탑과 같은 무기를 사용합니다.
|
|
||||||
unit.eruptor.description = 지상 유닛. 광재를 넣은 파도와 같은 무기를 장착했습니다.
|
unit.eruptor.description = 지상 유닛. 광재를 넣은 파도와 같은 무기를 장착했습니다.
|
||||||
|
unit.wraith.description = 적 핵심 건물 및 유닛을 집중적으로 공격하는 방식을 사용하는 전투기 입니다.
|
||||||
|
unit.ghoul.description = 무겁고 튼튼한 지상 폭격기 입니다.\n주로 적 건물로 이동하여 엄청난 폭격을 가합니다.
|
||||||
|
unit.revenant.description = 플래이어가 생산가능한 최종 공중 전투기. 폭발물을 쓰는 스웜 포탑과 같은 무기를 사용합니다.
|
||||||
unit.chaos-array.description = 지상 중간보스 유닛. 설금을 넣은 사이클론과 같은 무기를 장착했습니다.
|
unit.chaos-array.description = 지상 중간보스 유닛. 설금을 넣은 사이클론과 같은 무기를 장착했습니다.
|
||||||
unit.eradicator.description = 지상 최종보스 유닛. 토륨을 넣은 스펙터와 같은 무기를 장착했습니다.
|
unit.eradicator.description = 지상 최종보스 유닛. 토륨을 넣은 스펙터와 같은 무기를 장착했습니다.
|
||||||
unit.lich.description = 공중 중간보스 유닛. 리치와 같은 무기를 장착했으나 공격속도가 좀 더 빠릅니다.
|
unit.lich.description = 공중 중간보스 유닛. 리치와 같은 무기를 장착했으나 공격속도가 좀 더 빠릅니다.
|
||||||
@@ -996,15 +1003,15 @@ block.differential-generator.description = 냉각수와 파이라타이트의
|
|||||||
block.rtg-generator.description = 방사성동위원소 열전기 발전기\n토륨또는 현상 구조체를 사용하며, 냉각이 필요없는 발전을 하지만 토륨 원자로에 비해 발전량이 매우 적습니다.
|
block.rtg-generator.description = 방사성동위원소 열전기 발전기\n토륨또는 현상 구조체를 사용하며, 냉각이 필요없는 발전을 하지만 토륨 원자로에 비해 발전량이 매우 적습니다.
|
||||||
block.solar-panel.description = 태양광으로 극소량의 전기을 생산합니다.
|
block.solar-panel.description = 태양광으로 극소량의 전기을 생산합니다.
|
||||||
block.solar-panel-large.description = 일반 태양 전지판보다 훨씬 나은 발전량이 많지만, 건축비도 훨씬 비쌉니다.
|
block.solar-panel-large.description = 일반 태양 전지판보다 훨씬 나은 발전량이 많지만, 건축비도 훨씬 비쌉니다.
|
||||||
block.thorium-reactor.description = 토륨을 이용해 막대한 양의 전기를 생산합니다. 지속적인 냉각이 필요하며 냉각제의 양이 부족하면 크게 폭발합니다.\n\n[LOYAL]폭발로 인한 피해를 버틸 수 있는 건물은 없습니다.
|
block.thorium-reactor.description = 토륨을 이용해 막대한 양의 전기를 생산합니다. 지속적인 냉각이 필요하며 냉각제의 양이 부족하면 크게 폭발합니다.\n\n[royal]폭발로 인한 피해를 버틸 수 있는 건물은 없습니다.
|
||||||
block.impact-reactor.description = 최첨단 발전기\n폭발물과 냉각수를 이용해 최고의 효율로 매우 많은 양의 전기를 생산할 수 있습니다. 발전을 시작하는데 전기가 필요하며 발전기를 가동하는데 시간이 많이 걸립니다.\n[LOYAL]오버드라이브 프로젝터로 10000이상의 전기를 생산할 수 있으며, 가동중에 전기가 끊기면 가동을 다시 해야되기 때문에 창고,물탱크,배터리 등을 주위에 설치하고 나서 가동하는 것을 추천합니다.
|
block.impact-reactor.description = 최첨단 발전기\n폭발물과 냉각수를 이용해 최고의 효율로 매우 많은 양의 전기를 생산할 수 있습니다. 발전을 시작하는데 전기가 필요하며 발전기를 가동하는데 시간이 많이 걸립니다.\n[royal]오버드라이브 프로젝터로 10000이상의 전기를 생산할 수 있으며, 가동중에 전기가 끊기면 가동을 다시 해야되기 때문에 창고,물탱크,배터리 등을 주위에 설치하고 나서 가동하는 것을 추천합니다.
|
||||||
block.mechanical-drill.description = 싸구려 드릴. 적절한 타일 위에 놓였을때 매우 느린 속도로 계속 채광합니다.\n\n[ROYAL]구리와 납은 광부 드론으로 대체가 가능합니다.
|
block.mechanical-drill.description = 싸구려 드릴. 적절한 타일 위에 놓였을때 매우 느린 속도로 계속 채광합니다.\n\n[ROYAL]구리와 납은 광부 드론으로 대체가 가능합니다.
|
||||||
block.pneumatic-drill.description = 기압을 이용하여 보다 빠르게 단단한 물질을 채광할 수 있는 향상된 드릴.\n\n[ROYAL]전기를 사용하지 않는 드릴이라도 물과 오버드라이브를 이용하여 가속할 수 있습니다.
|
block.pneumatic-drill.description = 기압을 이용하여 보다 빠르게 단단한 물질을 채광할 수 있는 향상된 드릴.\n\n[ROYAL]전기를 사용하지 않는 드릴이라도 물과 오버드라이브를 이용하여 가속할 수 있습니다.
|
||||||
block.laser-drill.description = 토륨을 채광할 수 있는 고급 드릴입니다. 전력과 물을 공급하여 빠른 속도로 채광할 수 있습니다.\n\n[ROYAL]드릴아래에 배치된 광물타일의 비율에 따라 채광량이 달라집니다.
|
block.laser-drill.description = 토륨을 채광할 수 있는 고급 드릴입니다. 전력과 물을 공급하여 빠른 속도로 채광할 수 있습니다.\n\n[ROYAL]드릴아래에 배치된 광물타일의 비율에 따라 채광량이 달라집니다.
|
||||||
block.blast-drill.description = 최상위 드릴입니다. 많은량의 전력이 필요합니다.\n\n[ROYAL]물추출기 하나면 충분합니다.
|
block.blast-drill.description = 최상위 드릴입니다. 많은량의 전력이 필요합니다.\n\n[ROYAL]물추출기 하나면 충분합니다.
|
||||||
block.water-extractor.description = 땅에서 물을 추출합니다. 근처에 호수가 없을 때 사용하세요.\n\n[ROYAL]물추출기의 효율이 달라지는 타일이 있습니다.
|
block.water-extractor.description = 땅에서 물을 추출합니다. 근처에 호수가 없을 때 사용하세요.\n\n[ROYAL]물추출기의 효율이 달라지는 타일이 있습니다.
|
||||||
block.cultivator.description = 소량의 포자를 산업용으로 사용가능한 포자로 배양하는 건물입니다.
|
block.cultivator.description = 소량의 포자를 산업용으로 사용가능한 포자로 배양하는 건물입니다.
|
||||||
block.oil-extractor.description = 대량의 전력과 물을 사용하여 모래에서 기름을 추출합니다. 근처에 직접적인 석유 공급원이 없을때 사용하세요.\n\n[LOYAL]모래 또는 고철을 이용하여
|
block.oil-extractor.description = 대량의 전력과 물을 사용하여 모래에서 기름을 추출합니다. 근처에 직접적인 석유 공급원이 없을때 사용하세요.\n\n[royal]모래 또는 고철을 이용하여
|
||||||
block.core-shard.description = 코어의 1단계 형태입니다.\n이것이 파괴되면 플레이하고 있는 지역과의 연결이 끊어지니 적의 공격에 파괴되지 않도록 주의하세요.\n[ROYAL]연결이 끊긴다는 말은 게임오버와 일맥상통합니다.
|
block.core-shard.description = 코어의 1단계 형태입니다.\n이것이 파괴되면 플레이하고 있는 지역과의 연결이 끊어지니 적의 공격에 파괴되지 않도록 주의하세요.\n[ROYAL]연결이 끊긴다는 말은 게임오버와 일맥상통합니다.
|
||||||
block.core-foundation.description = 코어의 2단계 형태입니다.\n첫 번째 코어보다 더 튼튼하고 더 많은 자원을 저장할 수 있습니다.\n\n[ROYAL]크기도 좀 더 큽니다.
|
block.core-foundation.description = 코어의 2단계 형태입니다.\n첫 번째 코어보다 더 튼튼하고 더 많은 자원을 저장할 수 있습니다.\n\n[ROYAL]크기도 좀 더 큽니다.
|
||||||
block.core-nucleus.description = 코어의 3단계이자 마지막 형태입니다.\n최고로 튼튼하며 막대한 양의 자원들을 저장할 수 있습니다.
|
block.core-nucleus.description = 코어의 3단계이자 마지막 형태입니다.\n최고로 튼튼하며 막대한 양의 자원들을 저장할 수 있습니다.
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ level.select = Выбор карты
|
|||||||
level.mode = Режим игры:
|
level.mode = Режим игры:
|
||||||
showagain = Не показывать снова до следующей сессии
|
showagain = Не показывать снова до следующей сессии
|
||||||
coreattack = < Ядро находится под атакой! >
|
coreattack = < Ядро находится под атакой! >
|
||||||
nearpoint = [[ [scarlet]ПОКИНЬТЕ ЗОНУ НЕМЕДЛЕННО[] ]]\nАннигиляция неизбежна.
|
nearpoint = [[ [scarlet]ПОКИНЬТЕ ЗОНУ НЕМЕДЛЕННО[] ]\nАннигиляция неизбежна.
|
||||||
outofbounds = [[ ЗА ГРАНИЦАМИ ]]\n[]самоуничтожение через{0}
|
outofbounds = [[ ЗА ГРАНИЦАМИ ]]\n[]самоуничтожение через{0}
|
||||||
database = База данных ядра
|
database = База данных ядра
|
||||||
savegame = Сохранить игру
|
savegame = Сохранить игру
|
||||||
@@ -44,6 +44,7 @@ newgame = Новая игра
|
|||||||
none = <ничего>
|
none = <ничего>
|
||||||
minimap = Мини-карта
|
minimap = Мини-карта
|
||||||
close = Закрыть
|
close = Закрыть
|
||||||
|
website = Веб-сайт
|
||||||
quit = Выход
|
quit = Выход
|
||||||
maps = Карты
|
maps = Карты
|
||||||
continue = Продолжить
|
continue = Продолжить
|
||||||
@@ -320,7 +321,7 @@ resume = Возобновить зону:\n[LIGHT_GRAY]{0}
|
|||||||
bestwave = [LIGHT_GRAY]Наилучшая волна: {0}
|
bestwave = [LIGHT_GRAY]Наилучшая волна: {0}
|
||||||
launch = < ЗАПУСК >
|
launch = < ЗАПУСК >
|
||||||
launch.title = Запуск успешен
|
launch.title = Запуск успешен
|
||||||
launch.next = [LIGHT_GRAY]следующая возможность на{0}-той волне
|
launch.next = [LIGHT_GRAY]Cледующая возможность на {0}-той волне
|
||||||
launch.unable2 = [scarlet]ЗАПУСК невозможен.[]
|
launch.unable2 = [scarlet]ЗАПУСК невозможен.[]
|
||||||
launch.confirm = Это удалит все ресурсы в Вашем ядре.\nВы не сможете вернуться на эту базу.
|
launch.confirm = Это удалит все ресурсы в Вашем ядре.\nВы не сможете вернуться на эту базу.
|
||||||
launch.skip.confirm = Если вы пропустите сейчас, вы не сможете запустить до более поздних волн.
|
launch.skip.confirm = Если вы пропустите сейчас, вы не сможете запустить до более поздних волн.
|
||||||
@@ -501,13 +502,14 @@ setting.lasers.name = Показывать энергию лазеров
|
|||||||
setting.pixelate.name = Пикселизация[LIGHT_GRAY] (отключает анимации)
|
setting.pixelate.name = Пикселизация[LIGHT_GRAY] (отключает анимации)
|
||||||
setting.minimap.name = Показать миникарту
|
setting.minimap.name = Показать миникарту
|
||||||
setting.musicvol.name = Громкость музыки
|
setting.musicvol.name = Громкость музыки
|
||||||
|
setting.ambientvol.name = Звуки окружающей среды
|
||||||
setting.mutemusic.name = Заглушить музыку
|
setting.mutemusic.name = Заглушить музыку
|
||||||
setting.sfxvol.name = Громкость звуковых эффектов
|
setting.sfxvol.name = Громкость звуковых эффектов
|
||||||
setting.mutesound.name = Заглушить звук
|
setting.mutesound.name = Заглушить звук
|
||||||
setting.crashreport.name = Отправлять анонимные отчёты о вылетах
|
setting.crashreport.name = Отправлять анонимные отчёты о вылетах
|
||||||
setting.chatopacity.name = Непрозрачность чата
|
setting.chatopacity.name = Непрозрачность чата
|
||||||
setting.playerchat.name = Отображать чат в игре
|
setting.playerchat.name = Отображать чат в игре
|
||||||
uiscale.reset = Масштаб пользовательского интерфейса был изменён..\Нажмите "ОК" для подтверждения этого масшатаба.\n[scarlet]Возврат настроек и выход через[accent] {0}[] ...
|
uiscale.reset = Масштаб пользовательского интерфейса был изменён.\nНажмите «ОК» для подтверждения этого масштаба.\n[scarlet]Возврат настроек и выход через[accent] {0}[] ...
|
||||||
uiscale.cancel = Отменить & Выйти
|
uiscale.cancel = Отменить & Выйти
|
||||||
setting.bloom.name = Свечение
|
setting.bloom.name = Свечение
|
||||||
keybind.title = Настройка управления
|
keybind.title = Настройка управления
|
||||||
@@ -855,7 +857,7 @@ tutorial.next = [lightgray]<Нажмите для продолжения>
|
|||||||
tutorial.intro = Вы начали[scarlet] обучение по Mindustry.[]\nНачните с [accent]добычи меди[]. Нажмите на медную жилу возле вашего ядра, чтобы сделать это.\n\n[accent]{0}/{1} меди
|
tutorial.intro = Вы начали[scarlet] обучение по Mindustry.[]\nНачните с [accent]добычи меди[]. Нажмите на медную жилу возле вашего ядра, чтобы сделать это.\n\n[accent]{0}/{1} меди
|
||||||
tutorial.drill = Ручная добыча не является эффективной.\n[accent]Буры []могут добывать автоматически.\nНажмите на вкладку с изображением сверла снизу справа.\nВыберите[accent] механический бур[]. Разместите его на медной жиле нажатием.\n[accent]Нажатие по правой кнопке[] прервёт строительство.
|
tutorial.drill = Ручная добыча не является эффективной.\n[accent]Буры []могут добывать автоматически.\nНажмите на вкладку с изображением сверла снизу справа.\nВыберите[accent] механический бур[]. Разместите его на медной жиле нажатием.\n[accent]Нажатие по правой кнопке[] прервёт строительство.
|
||||||
tutorial.drill.mobile = Ручная добыча не является эффективной.\n[accent]Буры []могут добывать автоматически.\nНажмите на вкладку с изображением сверла снизу справа.\nВыберите[accent] механический бур[]. \nРазместите его на медной жиле нажатием, затемм нажмите [accent] белую галку[] ниже, чтобы подтвердить построение выделенного.\nНажмите [accent] кнопку X[], чтобы отменить размещение.
|
tutorial.drill.mobile = Ручная добыча не является эффективной.\n[accent]Буры []могут добывать автоматически.\nНажмите на вкладку с изображением сверла снизу справа.\nВыберите[accent] механический бур[]. \nРазместите его на медной жиле нажатием, затемм нажмите [accent] белую галку[] ниже, чтобы подтвердить построение выделенного.\nНажмите [accent] кнопку X[], чтобы отменить размещение.
|
||||||
tutorial.blockinfo = Каждый блок имеет разные характеричстики.\nЧтобы узнать информацию о блоке и о его характеристиках,[accent] нажмите на "?", когда он выбран в меню строительства.[]\n\n[accent]Сейчас, узнайте характеристики механического бура.[]
|
tutorial.blockinfo = Каждый блок имеет разные характеричстики.\nЧтобы узнать информацию о блоке и о его характеристиках,[accent] нажмите на «?», когда он выбран в меню строительства.[]\n\n[accent]Сейчас, узнайте характеристики механического бура.[]
|
||||||
tutorial.conveyor = [accent]Конвейера[] используются для транспортировки ресуров в ядро.\nСделайте линию конвейеров от бура к ядру\n[accent]Удерживайте левую кнопку мыши, чтобы разместить конвейерную линию.[]\nУдерживайте[accent] CTRL[] при постройке линии блоков, чтобы сделать её диагональной\n\n[accent]{0}/{1} конвейеров размещённых в линию\n[accent]0/1 предмет доставлен.
|
tutorial.conveyor = [accent]Конвейера[] используются для транспортировки ресуров в ядро.\nСделайте линию конвейеров от бура к ядру\n[accent]Удерживайте левую кнопку мыши, чтобы разместить конвейерную линию.[]\nУдерживайте[accent] CTRL[] при постройке линии блоков, чтобы сделать её диагональной\n\n[accent]{0}/{1} конвейеров размещённых в линию\n[accent]0/1 предмет доставлен.
|
||||||
tutorial.conveyor.mobile = [accent]Конвейера[] используются для транспортировки ресурсов в ядро\nСделайте линию конвейеров от бура к ядру\n[accent]Сделайте линию, удерживая палец несколько секунд в том месте, в котором Вы хотите начать линию,[] и перетяните его в нужном направлении.\n\n[accent]{0}/{1} конвейеров размещённых в линию\n[accent]0/1 предмет доставлен.
|
tutorial.conveyor.mobile = [accent]Конвейера[] используются для транспортировки ресурсов в ядро\nСделайте линию конвейеров от бура к ядру\n[accent]Сделайте линию, удерживая палец несколько секунд в том месте, в котором Вы хотите начать линию,[] и перетяните его в нужном направлении.\n\n[accent]{0}/{1} конвейеров размещённых в линию\n[accent]0/1 предмет доставлен.
|
||||||
tutorial.turret = Защитные структуры нужно строить для отражения[lightgray] противников[].\nПостройте[accent] двойную турель[] возле своего ядра.
|
tutorial.turret = Защитные структуры нужно строить для отражения[lightgray] противников[].\nПостройте[accent] двойную турель[] возле своего ядра.
|
||||||
@@ -897,19 +899,19 @@ mech.tau-mech.description = Мех поддержки. Ремонтирует с
|
|||||||
mech.omega-mech.description = Громоздкий и хорошо бронированный мех, созданный для передовых атак. Его броня может блокировать до 90% входящего урона.
|
mech.omega-mech.description = Громоздкий и хорошо бронированный мех, созданный для передовых атак. Его броня может блокировать до 90% входящего урона.
|
||||||
mech.dart-ship.description = Стандартный управляемый корабль. Достаточно быстрый и легкий, но мало атакующий и обладает низкой скоростью добычи.
|
mech.dart-ship.description = Стандартный управляемый корабль. Достаточно быстрый и легкий, но мало атакующий и обладает низкой скоростью добычи.
|
||||||
mech.javelin-ship.description = Корабль для тактики «атакуй и беги». Сначала он медленный, но позже может разгоняться до огромных скоростей и летать над аванпостами противника, нанося большой урон молниями и ракетами.
|
mech.javelin-ship.description = Корабль для тактики «атакуй и беги». Сначала он медленный, но позже может разгоняться до огромных скоростей и летать над аванпостами противника, нанося большой урон молниями и ракетами.
|
||||||
mech.trident-ship.description = Тяжелый бомбардировщик, построенный для строительства и уничтожения вражеских укреплений. Достаточно хорошо бронированный.
|
mech.trident-ship.description = Тяжёлый бомбардировщик, построенный для строительства и уничтожения вражеских укреплений. Достаточно хорошо бронированный.
|
||||||
mech.glaive-ship.description = Большой хорошо бронированный боевой корабль. Оборудован зажигательным повторителем. Очень манёвренный.
|
mech.glaive-ship.description = Большой хорошо бронированный боевой корабль. Оборудован зажигательным повторителем. Очень манёвренный.
|
||||||
unit.draug.description = Примитивный добывающий дрон. Дёшево производить. Расходуемый. Автоматически добывает медь и свинец в непосредственной близости. Поставляет добытые ресурсы в ближайшее ядро.
|
unit.draug.description = Примитивный добывающий дрон. Дёшево производить. Расходуемый. Автоматически добывает медь и свинец в непосредственной близости. Поставляет добытые ресурсы в ближайшее ядро.
|
||||||
unit.spirit.description = Модифицированный «Драугр», предназначенный для ремонта вместо добычи ресурсов. Автоматически ремонтирует любые поврежденные блоки в области.
|
unit.spirit.description = Модифицированный «Драугр», предназначенный для ремонта вместо добычи ресурсов. Автоматически ремонтирует любые поврежденные блоки в области.
|
||||||
unit.phantom.description = Продвинутый дрон. Следует за пользователями. Помогает в строительстве блоков.
|
unit.phantom.description = Продвинутый дрон. Следует за пользователями. Помогает в строительстве блоков.
|
||||||
unit.dagger.description = Самый основной наземный мех. Дешевый в производстве. Очень сильный при использовании толпами.
|
unit.dagger.description = Самый основной наземный мех. Дешёвый в производстве. Очень сильный при использовании толпами.
|
||||||
unit.crawler.description = Наземный блок, состоящий из урезанной рамы с высоким взрывчатым веществом, прикрепленным сверху. Не особо прочный. Взрывается при контакте с врагами.
|
unit.crawler.description = Наземный блок, состоящий из урезанной рамы с высоким взрывчатым веществом, прикрепленным сверху. Не особо прочный. Взрывается при контакте с врагами.
|
||||||
unit.titan.description = Продвинутый, бронированный наземный юнит. Атакует как наземные, так и воздушные цели. Оборудован двумя миниатюрными огнеметами класса «Обжигатель».
|
unit.titan.description = Продвинутый, бронированный наземный юнит. Атакует как наземные, так и воздушные цели. Оборудован двумя миниатюрными огнеметами класса «Обжигатель».
|
||||||
unit.fortress.description = Тяжёлый артиллерийский мех. Оснащен двумя модифицированными пушками типа «Град» для штурма дальних объектов и подразделений противника.
|
unit.fortress.description = Тяжёлый артиллерийский мех. Оснащен двумя модифицированными пушками типа «Град» для штурма дальних объектов и подразделений противника.
|
||||||
unit.eruptor.description = Тяжёлый мех, предназначенный для разрушения строений. Выстреливает поток шлака по вражеским укреплениям, плавит их и поджигает летучие вещества.
|
unit.eruptor.description = Тяжёлый мех, предназначенный для разрушения строений. Выстреливает поток шлака по вражеским укреплениям, плавит их и поджигает летучие вещества.
|
||||||
unit.wraith.description = Быстрый перехватчик. Целевые генераторы энергии.
|
unit.wraith.description = Быстрый перехватчик. Целевые генераторы энергии.
|
||||||
unit.ghoul.description = Тяжелый ковровой бомбардировщик. Проникает через вражеские структуры, нацеливаясь на критическую инфраструктуру.
|
unit.ghoul.description = Тяжёлый ковровой бомбардировщик. Проникает через вражеские структуры, нацеливаясь на критическую инфраструктуру.
|
||||||
unit.revenant.description = Тяжелый, парящий массив ракет.
|
unit.revenant.description = Тяжёлый, парящий массив, который вооружён ракетами.
|
||||||
block.graphite-press.description = Сжимает куски угля в чистые листы графита.
|
block.graphite-press.description = Сжимает куски угля в чистые листы графита.
|
||||||
block.multi-press.description = Обновлённая версия графитовой печати. Использует воду и энергию для быстрой и эффективной переработки угля.
|
block.multi-press.description = Обновлённая версия графитовой печати. Использует воду и энергию для быстрой и эффективной переработки угля.
|
||||||
block.silicon-smelter.description = Соединяет песок с чистым углем. Производит кремний.
|
block.silicon-smelter.description = Соединяет песок с чистым углем. Производит кремний.
|
||||||
@@ -933,8 +935,8 @@ block.item-void.description = Уничтожает любые предметы.
|
|||||||
block.liquid-source.description = Бесконечно выводит жидкости. Только песочница.
|
block.liquid-source.description = Бесконечно выводит жидкости. Только песочница.
|
||||||
block.copper-wall.description = Дешёвый защитный блок.\nПолезно для защиты ядра и турелей в первые несколько волн.
|
block.copper-wall.description = Дешёвый защитный блок.\nПолезно для защиты ядра и турелей в первые несколько волн.
|
||||||
block.copper-wall-large.description = Дешёвый защитный блок.\nПолезно для защиты ядра и турелей в первые несколько волн.\nРазмещается на нескольких плиток.
|
block.copper-wall-large.description = Дешёвый защитный блок.\nПолезно для защиты ядра и турелей в первые несколько волн.\nРазмещается на нескольких плиток.
|
||||||
block.titanium-wall.description = Умеренно сильный защитный блок.\n Обеспечивает умеренную защиту от врагов.
|
block.titanium-wall.description = Умеренно сильный защитный блок.\nОбеспечивает умеренную защиту от врагов.
|
||||||
block.titanium-wall-large.description = Умеренно сильный защитный блок.\n Обеспечивает умеренную защиту от врагов.\nРазмещается на нескольких плиток.
|
block.titanium-wall-large.description = Умеренно сильный защитный блок.\nОбеспечивает умеренную защиту от врагов.\nРазмещается на нескольких плиток.
|
||||||
block.thorium-wall.description = Сильный защитный блок.\nХорошая защита от врагов.
|
block.thorium-wall.description = Сильный защитный блок.\nХорошая защита от врагов.
|
||||||
block.thorium-wall-large.description = Сильный защитный блок.\nХорошая защита от врагов.\nРазмещается на нескольких плиток.
|
block.thorium-wall-large.description = Сильный защитный блок.\nХорошая защита от врагов.\nРазмещается на нескольких плиток.
|
||||||
block.phase-wall.description = Стена, покрытая специальным фазовым отражающим составом. Отражает большинство пуль при ударе.
|
block.phase-wall.description = Стена, покрытая специальным фазовым отражающим составом. Отражает большинство пуль при ударе.
|
||||||
@@ -944,23 +946,23 @@ block.surge-wall-large.description = Очень прочный защитный
|
|||||||
block.door.description = Маленькая дверь. Можно открыть или закрыть, нажав.
|
block.door.description = Маленькая дверь. Можно открыть или закрыть, нажав.
|
||||||
block.door-large.description = Большая дверь. Можно открыть и закрыть, коснувшись.\nОткрывает несколько плиток.
|
block.door-large.description = Большая дверь. Можно открыть и закрыть, коснувшись.\nОткрывает несколько плиток.
|
||||||
block.mender.description = Периодически ремонтирует блоки в непосредственной близости. Сохраняет средства защиты, восстановленные между волнами.\nОпционально использует кремний для увеличения дальности и эффективности.
|
block.mender.description = Периодически ремонтирует блоки в непосредственной близости. Сохраняет средства защиты, восстановленные между волнами.\nОпционально использует кремний для увеличения дальности и эффективности.
|
||||||
block.mend -jector.description = Обновлённая версия Регенератора. Ремонт блоков в непосредственной близости.\nОпционально использует фазовую ткань для увеличения дальности и эффективности.
|
block.mend-projector.description = Обновлённая версия Регенератора. Ремонт блоков в непосредственной близости.\nОпционально использует фазовую ткань для увеличения дальности и эффективности.
|
||||||
block.overdrive -роектор.description = Увеличивает скорость близлежащих зданий.\nОпционально использует фазовую ткань для увеличения дальности и эффективности.
|
block.overdrive-projector.description = Увеличивает скорость близлежащих зданий.\nОпционально использует фазовую ткань для увеличения дальности и эффективности.
|
||||||
block.force -роектор.description = Создает вокруг себя шестиугольное силовое поле, защищая здания и подразделения внутри от повреждений.\nПерегревается, если слишком много повреждений нанесено. Опционально требуется охлаждающая жидкость для предотвращения перегрева. Фазовая ткань может быть использована для увеличения размера щита.
|
block.force-projector.description = Создает вокруг себя шестиугольное силовое поле, защищая здания и подразделения внутри от повреждений.\nПерегревается, если слишком много повреждений нанесено. Опционально требуется охлаждающая жидкость для предотвращения перегрева. Фазовая ткань может быть использована для увеличения размера щита.
|
||||||
block.shock-mine.description = Наносит урон врагам, наступающим на мину. Почти невидим для врага.
|
block.shock-mine.description = Наносит урон врагам, наступающим на мину. Почти невидим для врага.
|
||||||
block.conveyor.description = Базовый элемент транспортного блока. Перемещает предметы вперед и автоматически складывает их в блоки. Вращающийся.
|
block.conveyor.description = Базовый элемент транспортного блока. Перемещает предметы вперед и автоматически складывает их в блоки. Вращающийся.
|
||||||
block.titanium-transpor.description = Расширенный транспортный блок элемента. Перемещает предметы быстрее, чем стандартные конвейеры.
|
block.titanium-conveyor.description = Расширенный транспортный блок элемента. Перемещает предметы быстрее, чем стандартные конвейеры.
|
||||||
block.junction.description = Действует как мост для двух пересекающихся конвейерных лент. Полезно в ситуациях, когда два разных конвейера перевозят разные материалы в разные места.
|
block.junction.description = Действует как мост для двух пересекающихся конвейерных лент. Полезно в ситуациях, когда два разных конвейера перевозят разные материалы в разные места.
|
||||||
block.bridge-transpor.description = Расширенный транспортный блок элемента. Позволяет транспортировать предметы по 3 плиткам любой местности или здания.
|
block.bridge-transpor.description = Улучшенный транспортный блок элемента. Позволяет транспортировать предметы по 3 плиткам любой местности или здания.
|
||||||
block.phase-transpor.description = Расширенный транспортный блок элемента. Использует энергию для телепортации предметов на подключенный фазовый конвейер по нескольким плиткам.
|
block.phase-conveyor.description = Улучшенный транспортный блок элемента. Использует энергию для телепортации предметов на подключенный фазовый конвейер по нескольким плиткам.
|
||||||
block.sorter.description = Сортировка элементов. Если элемент соответствует выбору, он может пройти. В противном случае элемент выводится слева и справа.
|
block.sorter.description = Сортировка элементов. Если элемент соответствует выбору, он может пройти. В противном случае элемент выводится слева и справа.
|
||||||
block.router.description = Принимает элементы в одном направлении и выводит их до 3 других направлений в равной степени. Полезно для разделения материалов из одного источника на несколько целей.\n\n[scarlet]Никогда не используйте рядом с заводами и т.п., так как маршрутизатор будет забит выходными предметами.[]
|
block.router.description = Принимает элементы в одном направлении и выводит их до 3 других направлений в равной степени. Полезно для разделения материалов из одного источника на несколько целей.\n\n[scarlet]Никогда не используйте рядом с заводами и т.п., так как маршрутизатор будет забит выходными предметами.[]
|
||||||
block.distributor.description = Расширенный маршрутизатор. Разделение элементов до 7 других направлений в равной степени.
|
block.distributor.description = Расширенный маршрутизатор. Разделение элементов до 7 других направлений в равной степени.
|
||||||
block.overflow-gate.description = Комбинированный разделитель и маршрутизатор. Выводится только влево и вправо, если передний путь заблокирован.
|
block.overflow-gate.description = Комбинированный разделитель и маршрутизатор. Выводится только влево и вправо, если передний путь заблокирован.
|
||||||
block.mass-driver.description = Конечный транспортный блок элемента. Собирает несколько предметов и затем стреляет в них другому массовому водителю на большом расстоянии. Требуется сила для работы.
|
block.mass-driver.description = Конечный транспортный блок элемента. Собирает несколько предметов и затем стреляет в них другому массовому водителю на большом расстоянии. Требуется сила для работы.
|
||||||
block.mechanical-pump.description = Дешёвый насос с низкой производительностью, но без энергопотребления.
|
block.mechanical-pump.description = Дешёвый насос с низкой производительностью, но без энергопотребления.
|
||||||
block.rotary-pump.description = Продвинутый насос. Насосы более жидкие, но требуют мощности.
|
block.rotary-pump.description = Продвинутый насос. Насосы более жидкие, но требуют энергию.
|
||||||
block.thermal-pump.description = Отличный насос.
|
block.thermal-pump.description = Наилучший насос.
|
||||||
block.conduit.description = Основной блок транспортировки жидкости. Перемещает жидкости вперед. Используется совместно с насосами и другими трубопроводами.
|
block.conduit.description = Основной блок транспортировки жидкости. Перемещает жидкости вперед. Используется совместно с насосами и другими трубопроводами.
|
||||||
block.pulse-conduit.description = Расширенный блок транспортировки жидкости. Транспортирует жидкости быстрее и хранит больше, чем стандартные трубопроводы.
|
block.pulse-conduit.description = Расширенный блок транспортировки жидкости. Транспортирует жидкости быстрее и хранит больше, чем стандартные трубопроводы.
|
||||||
block.liquid-router.description = Принимает жидкости из одного направления и выводит их до 3 других направлений в равной степени. Можно также хранить определенное количество жидкости. Полезно для разделения жидкостей из одного источника на несколько целей.
|
block.liquid-router.description = Принимает жидкости из одного направления и выводит их до 3 других направлений в равной степени. Можно также хранить определенное количество жидкости. Полезно для разделения жидкостей из одного источника на несколько целей.
|
||||||
@@ -980,10 +982,10 @@ block.differential-generator.description = Генерирует большое
|
|||||||
block.rtg-generator.description = Простой, надежный генератор. Использует тепло распадающихся радиоактивных соединений для производства энергии с низкой скоростью.
|
block.rtg-generator.description = Простой, надежный генератор. Использует тепло распадающихся радиоактивных соединений для производства энергии с низкой скоростью.
|
||||||
block.solar-panel.description = Обеспечивает небольшое количество энергии от солнца.
|
block.solar-panel.description = Обеспечивает небольшое количество энергии от солнца.
|
||||||
block.solar-panel-large.description = Значительно более эффективный вариант стандартной солнечной панели.
|
block.solar-panel-large.description = Значительно более эффективный вариант стандартной солнечной панели.
|
||||||
block.thorium-reactor.description = Генерирует значительное количество энергии из тория. Требует постоянного охлаждения. Сильно взорвётся при недостаточном количестве охлаждающей жидкости. Выходная энергия зависит от наполненности, при этом базовая мощность генерируется на полную мощность.
|
block.thorium-reactor.description = Генерирует значительное количество энергии из тория. Требует постоянного охлаждения. Сильно взорвётся при недостаточном количестве охлаждающей жидкости. Выходная энергия зависит от наполненности, при этом базовая энергия генерируется на полную мощность.
|
||||||
block.impact-reactor.description = Усовершенствованный генератор, способный создавать огромное количество энергии с максимальной эффективностью. Требуется значительное количество энергии для запуска процесса.
|
block.impact-reactor.description = Усовершенствованный генератор, способный создавать огромное количество энергии с максимальной эффективностью. Требуется значительное количество энергии для запуска процесса.
|
||||||
block.mechanical-drill.description = Дешевый бур. При размещении на соответствующих плитках медленные предметы выводятся бесконечно. Способен добывать только медь, свинец и уголь.
|
block.mechanical-drill.description = Дешёвый бур. При размещении на соответствующих плитках медленные предметы выводятся бесконечно. Способен добывать только медь, свинец и уголь.
|
||||||
block.pneumatic-drill.description = Улучшенная дрель, способная добывать титан. Мины в более быстром темпе, чем механическая дрель.
|
block.pneumatic-drill.description = Улучшенный бур, способная добывать титан. Добывает в более быстром темпе, чем механический бур.
|
||||||
block.laser-drill.description = Позволяет сверлить еще быстрее с помощью лазерной технологии, но требует энергии. Способен добывать торий.
|
block.laser-drill.description = Позволяет сверлить еще быстрее с помощью лазерной технологии, но требует энергии. Способен добывать торий.
|
||||||
block.blast-drill.description = Конечный бур. Требует большого количества энергии.
|
block.blast-drill.description = Конечный бур. Требует большого количества энергии.
|
||||||
block.water-extractor.description = Выкачивает подземные воды. Используется в местах, где нет поверхностных вод.
|
block.water-extractor.description = Выкачивает подземные воды. Используется в местах, где нет поверхностных вод.
|
||||||
@@ -1013,7 +1015,7 @@ block.spectre.description = Массивная двуствольная пушк
|
|||||||
block.meltdown.description = Массивная лазерная пушка. Заряжает и стреляет постоянным лазерным лучом в ближайших врагов. Требуется охлаждающая жидкость для работы.
|
block.meltdown.description = Массивная лазерная пушка. Заряжает и стреляет постоянным лазерным лучом в ближайших врагов. Требуется охлаждающая жидкость для работы.
|
||||||
block.draug-factory.description = Производит добывающих дронов.
|
block.draug-factory.description = Производит добывающих дронов.
|
||||||
block.spirit-factory.description = Производит дронов, которые помогают в строительстве.
|
block.spirit-factory.description = Производит дронов, которые помогают в строительстве.
|
||||||
block.phantom-factory.description = Производит улучшенных дронов, которые помогают в строительстве..
|
block.phantom-factory.description = Производит улучшенных дронов, которые помогают в строительстве.
|
||||||
block.wraith-factory.description = Производит быстрые и летающие боевые единицы.
|
block.wraith-factory.description = Производит быстрые и летающие боевые единицы.
|
||||||
block.ghoul-factory.description = Производит тяжёлых ковровых бомбардировщиков.
|
block.ghoul-factory.description = Производит тяжёлых ковровых бомбардировщиков.
|
||||||
block.revenant-factory.description = Производит тяжёлые летающие боевые единицы.
|
block.revenant-factory.description = Производит тяжёлые летающие боевые единицы.
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ level.mode = Режим гри:
|
|||||||
showagain = Не показувати знову до наступного сеансу
|
showagain = Не показувати знову до наступного сеансу
|
||||||
coreattack = < Ядро знаходиться під атакою! >
|
coreattack = < Ядро знаходиться під атакою! >
|
||||||
nearpoint = [[ [scarlet]ЗАЛИШТЕ ЦЮ ЗОНУ НЕГАЙНО[] ]\nАннігіляція неминуча.
|
nearpoint = [[ [scarlet]ЗАЛИШТЕ ЦЮ ЗОНУ НЕГАЙНО[] ]\nАннігіляція неминуча.
|
||||||
outofbounds = [ ПОЗА МЕЖАМИ ]\nсаморуйнування через{0}
|
outofbounds = [ ПОЗА МЕЖАМИ ]\nСаморуйнування через{0}
|
||||||
database = База даних ядра
|
database = База даних ядра
|
||||||
savegame = Зберегти гру
|
savegame = Зберегти гру
|
||||||
loadgame = Завантажити гру
|
loadgame = Завантажити гру
|
||||||
@@ -45,6 +45,7 @@ none = <нічого>
|
|||||||
minimap = Міні-мапа
|
minimap = Міні-мапа
|
||||||
close = Закрити
|
close = Закрити
|
||||||
quit = Вихід
|
quit = Вихід
|
||||||
|
website = Веб-сайт
|
||||||
maps = Мапи
|
maps = Мапи
|
||||||
continue = Продовжити
|
continue = Продовжити
|
||||||
maps.none = [LIGHT_GRAY]Мап не знайдено!
|
maps.none = [LIGHT_GRAY]Мап не знайдено!
|
||||||
@@ -329,7 +330,7 @@ configure = Вивантажити конфігурацію
|
|||||||
configure.locked = [LIGHT_GRAY]Можливість розблокувати вивантаження ресурсів буде доступна на {0}-тій хвилі.
|
configure.locked = [LIGHT_GRAY]Можливість розблокувати вивантаження ресурсів буде доступна на {0}-тій хвилі.
|
||||||
zone.unlocked = Зона «[LIGHT_GRAY]{0}» тепер розблокована.
|
zone.unlocked = Зона «[LIGHT_GRAY]{0}» тепер розблокована.
|
||||||
zone.requirement.complete = Ви досягли {0}-тої хвилі,\nВимоги до зони «{1}» виконані.
|
zone.requirement.complete = Ви досягли {0}-тої хвилі,\nВимоги до зони «{1}» виконані.
|
||||||
zone.config.complete = Ви досягли {0}-тої хвилі,\nМожливість вивантаження ресурсів тепер розблокована.
|
zone.config.complete = Ви досягли {0}-тої хвилі.\nМожливість вивантаження ресурсів тепер розблокована.
|
||||||
zone.resources = Виявлені ресурси:
|
zone.resources = Виявлені ресурси:
|
||||||
zone.objective = [lightgray]Мета: [accent]{0}
|
zone.objective = [lightgray]Мета: [accent]{0}
|
||||||
zone.objective.survival = Вижити
|
zone.objective.survival = Вижити
|
||||||
@@ -501,6 +502,7 @@ setting.lasers.name = Показувати енергію лазерів
|
|||||||
setting.pixelate.name = Пікселізація[LIGHT_GRAY] (вимикає анімації)
|
setting.pixelate.name = Пікселізація[LIGHT_GRAY] (вимикає анімації)
|
||||||
setting.minimap.name = Показувати міні-мапу
|
setting.minimap.name = Показувати міні-мапу
|
||||||
setting.musicvol.name = Гучність музики
|
setting.musicvol.name = Гучність музики
|
||||||
|
setting.ambientvol.name = Звуки навколишнього середовища
|
||||||
setting.mutemusic.name = Заглушити музику
|
setting.mutemusic.name = Заглушити музику
|
||||||
setting.sfxvol.name = Гучність звукових ефектів
|
setting.sfxvol.name = Гучність звукових ефектів
|
||||||
setting.mutesound.name = Заглушити звук
|
setting.mutesound.name = Заглушити звук
|
||||||
@@ -854,7 +856,7 @@ tutorial.next = [lightgray]<Натисніть для продовження>
|
|||||||
tutorial.intro = Ви розпочали[scarlet] навчання по Mindustry.[]\nРозпочність з[accent] видобування міді[]. Натисніть на мідну жилу біля вашого ядра, щоб зробити це.\n\n[accent]{0}/{1} міді
|
tutorial.intro = Ви розпочали[scarlet] навчання по Mindustry.[]\nРозпочність з[accent] видобування міді[]. Натисніть на мідну жилу біля вашого ядра, щоб зробити це.\n\n[accent]{0}/{1} міді
|
||||||
tutorial.drill = Добування вручну неефективне.\n[accent]Бури []можуть добувати автоматично.\nНатисніть на вкладку свердла знизу зправа.\nВиберіть[accent] механічний бур[]. Розмістіть його на мідній жилі натисканням.\n[accent]Натисніть ПКМ[], щоб зупинити будування.
|
tutorial.drill = Добування вручну неефективне.\n[accent]Бури []можуть добувати автоматично.\nНатисніть на вкладку свердла знизу зправа.\nВиберіть[accent] механічний бур[]. Розмістіть його на мідній жилі натисканням.\n[accent]Натисніть ПКМ[], щоб зупинити будування.
|
||||||
tutorial.drill.mobile = Добування вручну неефективне.\n[accent]Бури []можуть добувати автоматично.\nНатисність на вкладку сведла знизу зправа.\nВиберіть[accent] механічний бур[]. Розмістіть його на мідній жилі натисканням, потім натисність на [accent] галочку[] нижче, щоб підтвердити розміщення to confirm your selection.\nPress the[accent] X button[] to cancel placement.
|
tutorial.drill.mobile = Добування вручну неефективне.\n[accent]Бури []можуть добувати автоматично.\nНатисність на вкладку сведла знизу зправа.\nВиберіть[accent] механічний бур[]. Розмістіть його на мідній жилі натисканням, потім натисність на [accent] галочку[] нижче, щоб підтвердити розміщення to confirm your selection.\nPress the[accent] X button[] to cancel placement.
|
||||||
tutorial.blockinfo = Кожен блок має різні характеристики. Кожний бур може видобувати тільки певні руди.\nЩоб переглянути інформацію та характеристики блока,[accent] натисність на кнопку "?", коли Ви вибрали блок у меню будування.[]\n\n[accent]Перегляньте характеристику Механічного бура прямо зараз.[]
|
tutorial.blockinfo = Кожен блок має різні характеристики. Кожний бур може видобувати тільки певні руди.\nЩоб переглянути інформацію та характеристики блока,[accent] натисність на кнопку «?», коли Ви вибрали блок у меню будування.[]\n\n[accent]Перегляньте характеристику Механічного бура прямо зараз.[]
|
||||||
tutorial.conveyor = [accent]Конвеєри[] використовуються для транспортування предметів до ядра.\nЗробіть лінію конвеєрів від бура до ядра.\n[accent]Утримуйте миш, щоб розмістити у лінію.[]\nУтримуйте[accent] CTRL[] під час вибору лінії для розміщення по діагоналі.\n\n[accent]{0}/{1} конвеєрів, які розміщені в лінію\n[accent]0/1 предмет доставлено
|
tutorial.conveyor = [accent]Конвеєри[] використовуються для транспортування предметів до ядра.\nЗробіть лінію конвеєрів від бура до ядра.\n[accent]Утримуйте миш, щоб розмістити у лінію.[]\nУтримуйте[accent] CTRL[] під час вибору лінії для розміщення по діагоналі.\n\n[accent]{0}/{1} конвеєрів, які розміщені в лінію\n[accent]0/1 предмет доставлено
|
||||||
tutorial.conveyor.mobile = [accent]Конвеєри[] використовується для транспортування предметів до ядра.\nЗробіть лінію конвеєрів від бура до ядра.\n[accent] Розмістить у лінію, утримуючи палець кілька секунд[] і тягніть у напрямку, який Ви вибрали.\n\n[accent]{0}/{1} конвеєрів, які розміщені в лінію\n[accent]0/1 предмет доставлено
|
tutorial.conveyor.mobile = [accent]Конвеєри[] використовується для транспортування предметів до ядра.\nЗробіть лінію конвеєрів від бура до ядра.\n[accent] Розмістить у лінію, утримуючи палець кілька секунд[] і тягніть у напрямку, який Ви вибрали.\n\n[accent]{0}/{1} конвеєрів, які розміщені в лінію\n[accent]0/1 предмет доставлено
|
||||||
tutorial.turret = Оборонні споруди повинні бути побудовані для відбиття[lightgray] ворогів[].\nПобудуйте[accent] башточку «Подвійна»[] біля вашої бази.
|
tutorial.turret = Оборонні споруди повинні бути побудовані для відбиття[lightgray] ворогів[].\nПобудуйте[accent] башточку «Подвійна»[] біля вашої бази.
|
||||||
|
|||||||
BIN
core/assets/sounds/break.ogg
Executable file → Normal file
BIN
core/assets/sounds/buttonClick.ogg
Executable file → Normal file
BIN
core/assets/sounds/click.ogg
Executable file → Normal file
BIN
core/assets/sounds/conveyor.ogg
Normal file
BIN
core/assets/sounds/door.ogg
Executable file → Normal file
BIN
core/assets/sounds/drill.ogg
Executable file → Normal file
BIN
core/assets/sounds/machine.ogg
Normal file
BIN
core/assets/sounds/message.ogg
Executable file → Normal file
BIN
core/assets/sounds/spray.ogg
Normal file
BIN
core/assets/sounds/thruster.ogg
Executable file → Normal file
BIN
core/assets/sounds/unlock.ogg
Executable file → Normal file
BIN
core/assets/sounds/windowHide.ogg
Executable file → Normal file
@@ -132,11 +132,6 @@
|
|||||||
fontColor: white,
|
fontColor: white,
|
||||||
up: info-banner
|
up: info-banner
|
||||||
},
|
},
|
||||||
discord: {
|
|
||||||
font: default,
|
|
||||||
fontColor: white,
|
|
||||||
up: info-banner
|
|
||||||
},
|
|
||||||
clear-partial: {
|
clear-partial: {
|
||||||
down: whiteui,
|
down: whiteui,
|
||||||
up: pane,
|
up: pane,
|
||||||
|
|||||||
12
core/convert_sounds.sh
Executable file
@@ -0,0 +1,12 @@
|
|||||||
|
#convert from stereo to mono
|
||||||
|
cd assets/sounds/
|
||||||
|
for i in *.ogg; do
|
||||||
|
echo $i
|
||||||
|
ffmpeg -i "$i" -ac 1 "OUT_$i"
|
||||||
|
done
|
||||||
|
|
||||||
|
find . -type f ! -name "OUT_*" -delete
|
||||||
|
|
||||||
|
for file in OUT_*; do mv "$file" "${file#OUT_}"; done;
|
||||||
|
|
||||||
|
cd ../../
|
||||||
@@ -133,6 +133,7 @@ public class Vars{
|
|||||||
public static GlobalData data;
|
public static GlobalData data;
|
||||||
public static EntityCollisions collisions;
|
public static EntityCollisions collisions;
|
||||||
public static DefaultWaves defaultWaves;
|
public static DefaultWaves defaultWaves;
|
||||||
|
public static LoopControl loops;
|
||||||
|
|
||||||
public static Control control;
|
public static Control control;
|
||||||
public static Logic logic;
|
public static Logic logic;
|
||||||
@@ -181,6 +182,7 @@ public class Vars{
|
|||||||
content.setVerbose();
|
content.setVerbose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
loops = new LoopControl();
|
||||||
defaultWaves = new DefaultWaves();
|
defaultWaves = new DefaultWaves();
|
||||||
collisions = new EntityCollisions();
|
collisions = new EntityCollisions();
|
||||||
|
|
||||||
|
|||||||
@@ -1608,8 +1608,8 @@ public class Blocks implements ContentList{
|
|||||||
shootDuration = 220f;
|
shootDuration = 220f;
|
||||||
powerUse = 14f;
|
powerUse = 14f;
|
||||||
shootSound = Sounds.laserbig;
|
shootSound = Sounds.laserbig;
|
||||||
idleSound = Sounds.beam;
|
activeSound = Sounds.beam;
|
||||||
idleSoundVolume = 2f;
|
activeSoundVolume = 2f;
|
||||||
|
|
||||||
health = 200 * size * size;
|
health = 200 * size * size;
|
||||||
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.5f)).update(false);
|
consumes.add(new ConsumeLiquidFilter(liquid -> liquid.temperature <= 0.5f && liquid.flammability < 0.1f, 0.5f)).update(false);
|
||||||
|
|||||||
@@ -267,7 +267,7 @@ public class Bullets implements ContentList{
|
|||||||
keepVelocity = false;
|
keepVelocity = false;
|
||||||
splashDamageRadius = 25f;
|
splashDamageRadius = 25f;
|
||||||
splashDamage = 10f;
|
splashDamage = 10f;
|
||||||
lifetime = 50f;
|
lifetime = 60f;
|
||||||
trailColor = Pal.unitBack;
|
trailColor = Pal.unitBack;
|
||||||
backColor = Pal.unitBack;
|
backColor = Pal.unitBack;
|
||||||
frontColor = Pal.unitFront;
|
frontColor = Pal.unitFront;
|
||||||
|
|||||||
@@ -734,7 +734,7 @@ public class Fx implements ContentList{
|
|||||||
shootSmallFlame = new Effect(32f, e -> {
|
shootSmallFlame = new Effect(32f, e -> {
|
||||||
Draw.color(Pal.lightFlame, Pal.darkFlame, Color.GRAY, e.fin());
|
Draw.color(Pal.lightFlame, Pal.darkFlame, Color.GRAY, e.fin());
|
||||||
|
|
||||||
Angles.randLenVectors(e.id, 8, e.finpow() * 44f, e.rotation, 10f, (x, y) -> {
|
Angles.randLenVectors(e.id, 8, e.finpow() * 60f, e.rotation, 10f, (x, y) -> {
|
||||||
Fill.circle(e.x + x, e.y + y, 0.65f + e.fout() * 1.5f);
|
Fill.circle(e.x + x, e.y + y, 0.65f + e.fout() * 1.5f);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -744,7 +744,7 @@ public class Fx implements ContentList{
|
|||||||
shootPyraFlame = new Effect(33f, e -> {
|
shootPyraFlame = new Effect(33f, e -> {
|
||||||
Draw.color(Pal.lightPyraFlame, Pal.darkPyraFlame, Color.GRAY, e.fin());
|
Draw.color(Pal.lightPyraFlame, Pal.darkPyraFlame, Color.GRAY, e.fin());
|
||||||
|
|
||||||
Angles.randLenVectors(e.id, 10, e.finpow() * 50f, e.rotation, 10f, (x, y) -> {
|
Angles.randLenVectors(e.id, 10, e.finpow() * 70f, e.rotation, 10f, (x, y) -> {
|
||||||
Fill.circle(e.x + x, e.y + y, 0.65f + e.fout() * 1.6f);
|
Fill.circle(e.x + x, e.y + y, 0.65f + e.fout() * 1.6f);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ public class UnitTypes implements ContentList{
|
|||||||
mass = 5f;
|
mass = 5f;
|
||||||
hitsize = 20f;
|
hitsize = 20f;
|
||||||
rotatespeed = 0.06f;
|
rotatespeed = 0.06f;
|
||||||
health = 4000;
|
health = 3000;
|
||||||
weapon = new Weapon("chaos"){{
|
weapon = new Weapon("chaos"){{
|
||||||
length = 8f;
|
length = 8f;
|
||||||
reload = 50f;
|
reload = 50f;
|
||||||
@@ -220,7 +220,7 @@ public class UnitTypes implements ContentList{
|
|||||||
mass = 5f;
|
mass = 5f;
|
||||||
hitsize = 20f;
|
hitsize = 20f;
|
||||||
rotatespeed = 0.06f;
|
rotatespeed = 0.06f;
|
||||||
health = 10000;
|
health = 9000;
|
||||||
weapon = new Weapon("eradication"){{
|
weapon = new Weapon("eradication"){{
|
||||||
length = 13f;
|
length = 13f;
|
||||||
reload = 30f;
|
reload = 30f;
|
||||||
@@ -313,7 +313,7 @@ public class UnitTypes implements ContentList{
|
|||||||
}};
|
}};
|
||||||
|
|
||||||
lich = new UnitType("lich", Revenant.class, Revenant::new){{
|
lich = new UnitType("lich", Revenant.class, Revenant::new){{
|
||||||
health = 7000;
|
health = 6000;
|
||||||
mass = 20f;
|
mass = 20f;
|
||||||
hitsize = 40f;
|
hitsize = 40f;
|
||||||
speed = 0.01f;
|
speed = 0.01f;
|
||||||
@@ -330,9 +330,9 @@ public class UnitTypes implements ContentList{
|
|||||||
baseRotateSpeed = 0.04f;
|
baseRotateSpeed = 0.04f;
|
||||||
weapon = new Weapon("lich-missiles"){{
|
weapon = new Weapon("lich-missiles"){{
|
||||||
length = 4f;
|
length = 4f;
|
||||||
reload = 180f;
|
reload = 160f;
|
||||||
width = 22f;
|
width = 22f;
|
||||||
shots = 22;
|
shots = 16;
|
||||||
shootCone = 100f;
|
shootCone = 100f;
|
||||||
shotDelay = 2;
|
shotDelay = 2;
|
||||||
inaccuracy = 10f;
|
inaccuracy = 10f;
|
||||||
@@ -341,12 +341,12 @@ public class UnitTypes implements ContentList{
|
|||||||
velocityRnd = 0.2f;
|
velocityRnd = 0.2f;
|
||||||
spacing = 1f;
|
spacing = 1f;
|
||||||
bullet = Bullets.missileRevenant;
|
bullet = Bullets.missileRevenant;
|
||||||
shootSound = Sounds.missile;
|
shootSound = Sounds.artillery;
|
||||||
}};
|
}};
|
||||||
}};
|
}};
|
||||||
|
|
||||||
reaper = new UnitType("reaper", Revenant.class, Revenant::new){{
|
reaper = new UnitType("reaper", Revenant.class, Revenant::new){{
|
||||||
health = 13000;
|
health = 11000;
|
||||||
mass = 30f;
|
mass = 30f;
|
||||||
hitsize = 56f;
|
hitsize = 56f;
|
||||||
speed = 0.01f;
|
speed = 0.01f;
|
||||||
@@ -371,7 +371,18 @@ public class UnitTypes implements ContentList{
|
|||||||
inaccuracy = 3f;
|
inaccuracy = 3f;
|
||||||
roundrobin = true;
|
roundrobin = true;
|
||||||
ejectEffect = Fx.none;
|
ejectEffect = Fx.none;
|
||||||
bullet = Bullets.standardDenseBig;
|
bullet = new BasicBulletType(7f, 42, "bullet"){
|
||||||
|
{
|
||||||
|
bulletWidth = 15f;
|
||||||
|
bulletHeight = 21f;
|
||||||
|
shootEffect = Fx.shootBig;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float range(){
|
||||||
|
return 165f;
|
||||||
|
}
|
||||||
|
};
|
||||||
shootSound = Sounds.shootBig;
|
shootSound = Sounds.shootBig;
|
||||||
}};
|
}};
|
||||||
}};
|
}};
|
||||||
|
|||||||
@@ -392,6 +392,7 @@ public class Control implements ApplicationListener{
|
|||||||
data.checkSave();
|
data.checkSave();
|
||||||
|
|
||||||
music.update();
|
music.update();
|
||||||
|
loops.update();
|
||||||
|
|
||||||
if(!state.is(State.menu)){
|
if(!state.is(State.menu)){
|
||||||
input.update();
|
input.update();
|
||||||
@@ -415,7 +416,7 @@ public class Control implements ApplicationListener{
|
|||||||
Platform.instance.updateRPC();
|
Platform.instance.updateRPC();
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Core.input.keyTap(Binding.pause) && !ui.restart.isShown() && (state.is(State.paused) || state.is(State.playing))){
|
if(Core.input.keyTap(Binding.pause) && !scene.hasDialog() && !ui.restart.isShown() && (state.is(State.paused) || state.is(State.playing))){
|
||||||
state.set(state.is(State.playing) ? State.paused : State.playing);
|
state.set(state.is(State.playing) ? State.paused : State.playing);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,30 +1,28 @@
|
|||||||
package io.anuke.mindustry.core;
|
package io.anuke.mindustry.core;
|
||||||
|
|
||||||
import io.anuke.arc.*;
|
import io.anuke.arc.*;
|
||||||
import io.anuke.arc.files.FileHandle;
|
import io.anuke.arc.files.*;
|
||||||
import io.anuke.arc.function.Consumer;
|
import io.anuke.arc.function.*;
|
||||||
import io.anuke.arc.function.Predicate;
|
|
||||||
import io.anuke.arc.graphics.*;
|
import io.anuke.arc.graphics.*;
|
||||||
import io.anuke.arc.graphics.g2d.*;
|
import io.anuke.arc.graphics.g2d.*;
|
||||||
import io.anuke.arc.graphics.glutils.FrameBuffer;
|
import io.anuke.arc.graphics.glutils.*;
|
||||||
import io.anuke.arc.math.Mathf;
|
import io.anuke.arc.math.*;
|
||||||
import io.anuke.arc.math.geom.Rectangle;
|
import io.anuke.arc.math.geom.*;
|
||||||
import io.anuke.arc.math.geom.Vector2;
|
|
||||||
import io.anuke.arc.scene.ui.layout.*;
|
import io.anuke.arc.scene.ui.layout.*;
|
||||||
import io.anuke.arc.util.*;
|
import io.anuke.arc.util.*;
|
||||||
import io.anuke.arc.util.pooling.Pools;
|
import io.anuke.arc.util.pooling.*;
|
||||||
import io.anuke.mindustry.content.Fx;
|
import io.anuke.mindustry.content.*;
|
||||||
import io.anuke.mindustry.core.GameState.State;
|
import io.anuke.mindustry.core.GameState.*;
|
||||||
import io.anuke.mindustry.entities.*;
|
import io.anuke.mindustry.entities.*;
|
||||||
import io.anuke.mindustry.entities.effect.GroundEffectEntity;
|
import io.anuke.mindustry.entities.effect.*;
|
||||||
import io.anuke.mindustry.entities.effect.GroundEffectEntity.GroundEffect;
|
import io.anuke.mindustry.entities.effect.GroundEffectEntity.*;
|
||||||
import io.anuke.mindustry.entities.impl.EffectEntity;
|
import io.anuke.mindustry.entities.impl.*;
|
||||||
import io.anuke.mindustry.entities.traits.*;
|
import io.anuke.mindustry.entities.traits.*;
|
||||||
import io.anuke.mindustry.entities.type.*;
|
import io.anuke.mindustry.entities.type.*;
|
||||||
import io.anuke.mindustry.game.EventType.DisposeEvent;
|
import io.anuke.mindustry.game.EventType.*;
|
||||||
import io.anuke.mindustry.game.Team;
|
import io.anuke.mindustry.game.*;
|
||||||
import io.anuke.mindustry.graphics.*;
|
import io.anuke.mindustry.graphics.*;
|
||||||
import io.anuke.mindustry.world.blocks.defense.ForceProjector.ShieldEntity;
|
import io.anuke.mindustry.world.blocks.defense.ForceProjector.*;
|
||||||
|
|
||||||
import static io.anuke.arc.Core.*;
|
import static io.anuke.arc.Core.*;
|
||||||
import static io.anuke.mindustry.Vars.*;
|
import static io.anuke.mindustry.Vars.*;
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
|||||||
|
|
||||||
t.row();
|
t.row();
|
||||||
|
|
||||||
|
if(!ios){
|
||||||
t.addImageTextButton("$editor.import", "icon-load-map", isize, () ->
|
t.addImageTextButton("$editor.import", "icon-load-map", isize, () ->
|
||||||
createDialog("$editor.import",
|
createDialog("$editor.import",
|
||||||
"$editor.importmap", "$editor.importmap.description", "icon-load-map", (Runnable)loadDialog::show,
|
"$editor.importmap", "$editor.importmap.description", "icon-load-map", (Runnable)loadDialog::show,
|
||||||
@@ -116,8 +117,10 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
|||||||
}
|
}
|
||||||
}), true, FileChooser.pngFiles))
|
}), true, FileChooser.pngFiles))
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
t.addImageTextButton("$editor.export", "icon-save-map", isize, () ->
|
Cell cell = t.addImageTextButton("$editor.export", "icon-save-map", isize, () -> {
|
||||||
|
if(!ios){
|
||||||
Platform.instance.showFileChooser("$editor.savemap", "Map Files", file -> {
|
Platform.instance.showFileChooser("$editor.savemap", "Map Files", file -> {
|
||||||
file = file.parent().child(file.nameWithoutExtension() + "." + mapExtension);
|
file = file.parent().child(file.nameWithoutExtension() + "." + mapExtension);
|
||||||
FileHandle result = file;
|
FileHandle result = file;
|
||||||
@@ -132,7 +135,24 @@ public class MapEditorDialog extends Dialog implements Disposable{
|
|||||||
Log.err(e);
|
Log.err(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, false, FileChooser.mapFiles));
|
}, false, FileChooser.mapFiles);
|
||||||
|
}else{
|
||||||
|
ui.loadAnd(() -> {
|
||||||
|
try{
|
||||||
|
FileHandle result = Core.files.local(editor.getTags().get("name", "unknown") + "." + mapExtension);
|
||||||
|
MapIO.writeMap(result, editor.createMap(result));
|
||||||
|
Platform.instance.shareFile(result);
|
||||||
|
}catch(Exception e){
|
||||||
|
ui.showError(Core.bundle.format("editor.errorsave", Strings.parseException(e, true)));
|
||||||
|
Log.err(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if(ios){
|
||||||
|
cell.size(swidth * 2f + 10, 60f).colspan(2);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
menu.cont.row();
|
menu.cont.row();
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package io.anuke.mindustry.entities;
|
package io.anuke.mindustry.entities;
|
||||||
|
|
||||||
import io.anuke.arc.math.Mathf;
|
import io.anuke.arc.math.*;
|
||||||
import io.anuke.arc.math.geom.Vector2;
|
import io.anuke.arc.math.geom.*;
|
||||||
import io.anuke.arc.util.Time;
|
import io.anuke.arc.util.*;
|
||||||
import io.anuke.mindustry.entities.traits.TargetTrait;
|
import io.anuke.mindustry.entities.traits.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class for predicting shoot angles based on velocities of targets.
|
* Class for predicting shoot angles based on velocities of targets.
|
||||||
@@ -55,9 +55,7 @@ public class Predict{
|
|||||||
* See {@link #intercept(float, float, float, float, float, float, float)}.
|
* See {@link #intercept(float, float, float, float, float, float, float)}.
|
||||||
*/
|
*/
|
||||||
public static Vector2 intercept(TargetTrait src, TargetTrait dst, float v){
|
public static Vector2 intercept(TargetTrait src, TargetTrait dst, float v){
|
||||||
return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(),
|
return intercept(src.getX(), src.getY(), dst.getX(), dst.getY(), dst.getTargetVelocityX() - src.getTargetVelocityX(), dst.getTargetVelocityY() - src.getTargetVelocityY(), v);
|
||||||
dst.getTargetVelocityX() - src.getTargetVelocityX()/2f,
|
|
||||||
dst.getTargetVelocityY() - src.getTargetVelocityY()/2f, v);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Vector2 quad(float a, float b, float c){
|
private static Vector2 quad(float a, float b, float c){
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import io.anuke.arc.math.Mathf;
|
|||||||
import io.anuke.arc.util.Time;
|
import io.anuke.arc.util.Time;
|
||||||
import io.anuke.mindustry.content.Fx;
|
import io.anuke.mindustry.content.Fx;
|
||||||
import io.anuke.mindustry.entities.Effects;
|
import io.anuke.mindustry.entities.Effects;
|
||||||
|
import io.anuke.mindustry.gen.*;
|
||||||
import io.anuke.mindustry.graphics.Pal;
|
import io.anuke.mindustry.graphics.Pal;
|
||||||
|
|
||||||
public class MissileBulletType extends BasicBulletType{
|
public class MissileBulletType extends BasicBulletType{
|
||||||
@@ -18,6 +19,7 @@ public class MissileBulletType extends BasicBulletType{
|
|||||||
backColor = Pal.missileYellowBack;
|
backColor = Pal.missileYellowBack;
|
||||||
frontColor = Pal.missileYellow;
|
frontColor = Pal.missileYellow;
|
||||||
homingPower = 7f;
|
homingPower = 7f;
|
||||||
|
hitSound = Sounds.explosion;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
|
|||||||
private Tile mining;
|
private Tile mining;
|
||||||
private Vector2 movement = new Vector2();
|
private Vector2 movement = new Vector2();
|
||||||
private boolean moved;
|
private boolean moved;
|
||||||
private SoundLoop boostSound = new SoundLoop(Sounds.thruster, 2f), buildSound = new SoundLoop(Sounds.build, 0.75f);
|
private SoundLoop buildSound = new SoundLoop(Sounds.build, 0.75f);
|
||||||
|
|
||||||
//endregion
|
//endregion
|
||||||
|
|
||||||
@@ -133,7 +133,6 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void removed(){
|
public void removed(){
|
||||||
boostSound.stop();
|
|
||||||
buildSound.stop();
|
buildSound.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -514,7 +513,10 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
|
|||||||
destructTime = 0f;
|
destructTime = 0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
boostSound.update(x, y, isBoosting && !isDead() && !mech.flying);
|
if(!isDead() && isFlying()){
|
||||||
|
loops.play(Sounds.thruster, this, Mathf.clamp(velocity.len() * 2f) * 0.3f);
|
||||||
|
}
|
||||||
|
|
||||||
BuildRequest request = buildRequest();
|
BuildRequest request = buildRequest();
|
||||||
buildSound.update(request == null ? x : request.x * tilesize, request == null ? y : request.y * tilesize, isBuilding() && (Mathf.within(request.x * tilesize, request.y * tilesize, x, y, placeDistance) || state.isEditor()));
|
buildSound.update(request == null ? x : request.x * tilesize, request == null ? y : request.y * tilesize, isBuilding() && (Mathf.within(request.x * tilesize, request.y * tilesize, x, y, placeDistance) || state.isEditor()));
|
||||||
|
|
||||||
@@ -750,8 +752,7 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
|
|||||||
rotation = Mathf.slerpDelta(rotation, angleTo(target), 0.2f);
|
rotation = Mathf.slerpDelta(rotation, angleTo(target), 0.2f);
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector2 intercept =
|
Vector2 intercept = Predict.intercept(this, target, getWeapon().bullet.speed);
|
||||||
Predict.intercept(x, y, target.getX(), target.getY(), target.velocity().x - velocity.x, target.velocity().y - velocity.y, getWeapon().bullet.speed);
|
|
||||||
|
|
||||||
pointerX = intercept.x;
|
pointerX = intercept.x;
|
||||||
pointerY = intercept.y;
|
pointerY = intercept.y;
|
||||||
|
|||||||
@@ -20,8 +20,7 @@ import io.anuke.mindustry.world.modules.*;
|
|||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.tileGroup;
|
import static io.anuke.mindustry.Vars.*;
|
||||||
import static io.anuke.mindustry.Vars.world;
|
|
||||||
|
|
||||||
public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
||||||
public static final float timeToSleep = 60f * 4; //4 seconds to fall asleep
|
public static final float timeToSleep = 60f * 4; //4 seconds to fall asleep
|
||||||
@@ -70,8 +69,8 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
|||||||
x = tile.drawx();
|
x = tile.drawx();
|
||||||
y = tile.drawy();
|
y = tile.drawy();
|
||||||
block = tile.block();
|
block = tile.block();
|
||||||
if(block.idleSound != Sounds.none){
|
if(block.activeSound != Sounds.none){
|
||||||
sound = new SoundLoop(block.idleSound, block.idleSoundVolume);
|
sound = new SoundLoop(block.activeSound, block.activeSoundVolume);
|
||||||
}
|
}
|
||||||
|
|
||||||
health = block.health;
|
health = block.health;
|
||||||
@@ -298,7 +297,11 @@ public class TileEntity extends BaseEntity implements TargetTrait, HealthTrait{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(sound != null){
|
if(sound != null){
|
||||||
sound.update(x, y, block.shouldIdleSound(tile));
|
sound.update(x, y, block.shouldActiveSound(tile));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(block.idleSound != Sounds.none && block.shouldIdleSound(tile)){
|
||||||
|
loops.play(block.idleSound, this, block.idleSoundVolume);
|
||||||
}
|
}
|
||||||
|
|
||||||
Block previous = block;
|
Block previous = block;
|
||||||
|
|||||||
61
core/src/io/anuke/mindustry/game/LoopControl.java
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
package io.anuke.mindustry.game;
|
||||||
|
|
||||||
|
import io.anuke.arc.*;
|
||||||
|
import io.anuke.arc.audio.*;
|
||||||
|
import io.anuke.arc.collection.*;
|
||||||
|
import io.anuke.arc.math.*;
|
||||||
|
import io.anuke.arc.math.geom.*;
|
||||||
|
import io.anuke.mindustry.*;
|
||||||
|
|
||||||
|
public class LoopControl{
|
||||||
|
private ObjectMap<Sound, SoundData> sounds = new ObjectMap<>();
|
||||||
|
|
||||||
|
public void play(Sound sound, Position pos, float volume){
|
||||||
|
if(Vars.headless) return;
|
||||||
|
|
||||||
|
float baseVol = sound.calcFalloff(pos.getX(), pos.getY());
|
||||||
|
float vol = baseVol * volume;
|
||||||
|
|
||||||
|
SoundData data = sounds.getOr(sound, SoundData::new);
|
||||||
|
data.volume += vol;
|
||||||
|
data.volume = Mathf.clamp(data.volume, 0f, 1f);
|
||||||
|
data.total += baseVol;
|
||||||
|
data.sum.add(pos.getX() * baseVol, pos.getY() * baseVol);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void update(){
|
||||||
|
float avol = Core.settings.getInt("ambientvol", 100) / 100f;
|
||||||
|
|
||||||
|
sounds.each((sound, data) -> {
|
||||||
|
data.curVolume = Mathf.lerpDelta(data.curVolume, data.volume * avol, 0.2f);
|
||||||
|
|
||||||
|
boolean play = data.curVolume > 0.01f;
|
||||||
|
float pan = Mathf.isZero(data.total, 0.0001f) ? 0f : sound.calcPan(data.sum.x / data.total, data.sum.y / data.total);
|
||||||
|
if(data.soundID <= 0){
|
||||||
|
if(play){
|
||||||
|
data.soundID = sound.loop(data.curVolume, 1f, pan);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(data.curVolume <= 0.01f){
|
||||||
|
sound.stop(data.soundID);
|
||||||
|
data.soundID = -1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
sound.setPan(data.soundID, pan, data.curVolume);
|
||||||
|
}
|
||||||
|
|
||||||
|
data.volume = 0f;
|
||||||
|
data.total = 0f;
|
||||||
|
data.sum.setZero();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private class SoundData{
|
||||||
|
float volume;
|
||||||
|
float total;
|
||||||
|
Vector2 sum = new Vector2();
|
||||||
|
|
||||||
|
int soundID;
|
||||||
|
float curVolume;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -14,7 +14,7 @@ import static io.anuke.mindustry.Vars.*;
|
|||||||
|
|
||||||
/** Controls playback of multiple music tracks.*/
|
/** Controls playback of multiple music tracks.*/
|
||||||
public class MusicControl{
|
public class MusicControl{
|
||||||
private static final float finTime = 120f, foutTime = 120f, musicInterval = 60 * 60 * 3f, musicChance = 0.3f, musicWaveChance = 0.24f;
|
private static final float finTime = 120f, foutTime = 120f, musicInterval = 60 * 60 * 3f, musicChance = 0.45f, musicWaveChance = 0.35f;
|
||||||
|
|
||||||
/** normal, ambient music, plays at any time */
|
/** normal, ambient music, plays at any time */
|
||||||
public final Array<Music> ambientMusic = Array.with(Musics.game1, Musics.game3, Musics.game4, Musics.game6);
|
public final Array<Music> ambientMusic = Array.with(Musics.game1, Musics.game3, Musics.game4, Musics.game6);
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
package io.anuke.mindustry.game;
|
|
||||||
|
|
||||||
public class SoundControl{
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package io.anuke.mindustry.io;
|
package io.anuke.mindustry.io;
|
||||||
|
|
||||||
|
import io.anuke.arc.collection.*;
|
||||||
import io.anuke.mindustry.game.Rules;
|
import io.anuke.mindustry.game.Rules;
|
||||||
import io.anuke.mindustry.maps.Map;
|
import io.anuke.mindustry.maps.Map;
|
||||||
|
|
||||||
@@ -13,8 +14,9 @@ public class SaveMeta{
|
|||||||
public Map map;
|
public Map map;
|
||||||
public int wave;
|
public int wave;
|
||||||
public Rules rules;
|
public Rules rules;
|
||||||
|
public StringMap tags;
|
||||||
|
|
||||||
public SaveMeta(int version, long timestamp, long timePlayed, int build, String map, int wave, Rules rules){
|
public SaveMeta(int version, long timestamp, long timePlayed, int build, String map, int wave, Rules rules, StringMap tags){
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.build = build;
|
this.build = build;
|
||||||
this.timestamp = timestamp;
|
this.timestamp = timestamp;
|
||||||
@@ -22,5 +24,6 @@ public class SaveMeta{
|
|||||||
this.map = world.maps.all().find(m -> m.name().equals(map));
|
this.map = world.maps.all().find(m -> m.name().equals(map));
|
||||||
this.wave = wave;
|
this.wave = wave;
|
||||||
this.rules = rules;
|
this.rules = rules;
|
||||||
|
this.tags = tags;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ public abstract class SaveVersion extends SaveFileReader{
|
|||||||
public SaveMeta getMeta(DataInput stream) throws IOException{
|
public SaveMeta getMeta(DataInput stream) throws IOException{
|
||||||
stream.readInt(); //length of data, doesn't matter here
|
stream.readInt(); //length of data, doesn't matter here
|
||||||
StringMap map = readStringMap(stream);
|
StringMap map = readStringMap(stream);
|
||||||
return new SaveMeta(map.getInt("version"), map.getLong("saved"), map.getLong("playtime"), map.getInt("build"), map.get("mapname"), map.getInt("wave"), JsonIO.read(Rules.class, map.get("rules", "{}")));
|
return new SaveMeta(map.getInt("version"), map.getLong("saved"), map.getLong("playtime"), map.getInt("build"), map.get("mapname"), map.getInt("wave"), JsonIO.read(Rules.class, map.get("rules", "{}")), map);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -25,7 +25,9 @@ public class MultiReqImage extends Stack{
|
|||||||
if(valid != null){
|
if(valid != null){
|
||||||
valid.visible(true);
|
valid.visible(true);
|
||||||
}else{
|
}else{
|
||||||
|
if(displays.size > 0){
|
||||||
displays.get((int)(time) % displays.size).visible(true);
|
displays.get((int)(time) % displays.size).visible(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public class MapsDialog extends FloatingDialog{
|
|||||||
void setup(){
|
void setup(){
|
||||||
buttons.clearChildren();
|
buttons.clearChildren();
|
||||||
|
|
||||||
if(Core.graphics.isPortrait()){
|
if(Core.graphics.isPortrait() && !ios){
|
||||||
buttons.addImageTextButton("$back", "icon-arrow-left", iconsize, this::hide).size(210f*2f, 64f).colspan(2);
|
buttons.addImageTextButton("$back", "icon-arrow-left", iconsize, this::hide).size(210f*2f, 64f).colspan(2);
|
||||||
buttons.row();
|
buttons.row();
|
||||||
}else{
|
}else{
|
||||||
@@ -60,6 +60,7 @@ public class MapsDialog extends FloatingDialog{
|
|||||||
});
|
});
|
||||||
}).size(210f, 64f);
|
}).size(210f, 64f);
|
||||||
|
|
||||||
|
if(!ios){
|
||||||
buttons.addImageTextButton("$editor.importmap", "icon-load", iconsize, () -> {
|
buttons.addImageTextButton("$editor.importmap", "icon-load", iconsize, () -> {
|
||||||
Platform.instance.showFileChooser("$editor.importmap", "Map File", file -> {
|
Platform.instance.showFileChooser("$editor.importmap", "Map File", file -> {
|
||||||
world.maps.tryCatchMapError(() -> {
|
world.maps.tryCatchMapError(() -> {
|
||||||
@@ -79,7 +80,7 @@ public class MapsDialog extends FloatingDialog{
|
|||||||
String name = map.tags.getOr("name", () -> {
|
String name = map.tags.getOr("name", () -> {
|
||||||
String result = "unknown";
|
String result = "unknown";
|
||||||
int number = 0;
|
int number = 0;
|
||||||
while(world.maps.byName(result + number++) != null);
|
while(world.maps.byName(result + number++) != null) ;
|
||||||
return result + number;
|
return result + number;
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -108,6 +109,7 @@ public class MapsDialog extends FloatingDialog{
|
|||||||
});
|
});
|
||||||
}, true, FileChooser.anyMapFiles);
|
}, true, FileChooser.anyMapFiles);
|
||||||
}).size(210f, 64f);
|
}).size(210f, 64f);
|
||||||
|
}
|
||||||
|
|
||||||
cont.clear();
|
cont.clear();
|
||||||
|
|
||||||
|
|||||||
@@ -126,6 +126,7 @@ public class SettingsMenuDialog extends SettingsDialog{
|
|||||||
void addSettings(){
|
void addSettings(){
|
||||||
sound.sliderPref("musicvol", bundle.get("setting.musicvol.name", "Music Volume"), 100, 0, 100, 1, i -> i + "%");
|
sound.sliderPref("musicvol", bundle.get("setting.musicvol.name", "Music Volume"), 100, 0, 100, 1, i -> i + "%");
|
||||||
sound.sliderPref("sfxvol", bundle.get("setting.sfxvol.name", "SFX Volume"), 100, 0, 100, 1, i -> i + "%");
|
sound.sliderPref("sfxvol", bundle.get("setting.sfxvol.name", "SFX Volume"), 100, 0, 100, 1, i -> i + "%");
|
||||||
|
sound.sliderPref("ambientvol", bundle.get("setting.ambientvol.name", "Ambient Volume"), 100, 0, 100, 1, i -> i + "%");
|
||||||
|
|
||||||
game.screenshakePref();
|
game.screenshakePref();
|
||||||
if(mobile){
|
if(mobile){
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ public class MenuFragment extends Fragment{
|
|||||||
join = new MobileButton("icon-add", isize, "$joingame", ui.join::show),
|
join = new MobileButton("icon-add", isize, "$joingame", ui.join::show),
|
||||||
editor = new MobileButton("icon-editor", isize, "$editor", ui.maps::show),
|
editor = new MobileButton("icon-editor", isize, "$editor", ui.maps::show),
|
||||||
tools = new MobileButton("icon-tools", isize, "$settings", ui.settings::show),
|
tools = new MobileButton("icon-tools", isize, "$settings", ui.settings::show),
|
||||||
donate = new MobileButton("icon-donate", isize, "$donate", () -> Core.net.openURI(donationURL)),
|
donate = new MobileButton("icon-link", isize, "$website", () -> Core.net.openURI("https://anuke.itch.io/mindustry")),
|
||||||
exit = new MobileButton("icon-exit", isize, "$quit", () -> Core.app.exit());
|
exit = new MobileButton("icon-exit", isize, "$quit", () -> Core.app.exit());
|
||||||
|
|
||||||
if(!Core.graphics.isPortrait()){
|
if(!Core.graphics.isPortrait()){
|
||||||
@@ -109,8 +109,9 @@ public class MenuFragment extends Fragment{
|
|||||||
container.add(play);
|
container.add(play);
|
||||||
container.add(join);
|
container.add(join);
|
||||||
container.add(custom);
|
container.add(custom);
|
||||||
|
if(ios) container.row();
|
||||||
container.add(maps);
|
container.add(maps);
|
||||||
container.row();
|
if(!ios) container.row();
|
||||||
|
|
||||||
container.table(table -> {
|
container.table(table -> {
|
||||||
table.defaults().set(container.defaults());
|
table.defaults().set(container.defaults());
|
||||||
@@ -119,7 +120,7 @@ public class MenuFragment extends Fragment{
|
|||||||
table.add(tools);
|
table.add(tools);
|
||||||
|
|
||||||
if(Platform.instance.canDonate()) table.add(donate);
|
if(Platform.instance.canDonate()) table.add(donate);
|
||||||
table.add(exit);
|
if(!ios) table.add(exit);
|
||||||
}).colspan(4);
|
}).colspan(4);
|
||||||
}else{
|
}else{
|
||||||
container.marginTop(0f);
|
container.marginTop(0f);
|
||||||
|
|||||||
@@ -101,7 +101,13 @@ public class Block extends BlockStorage{
|
|||||||
public boolean hasShadow = true;
|
public boolean hasShadow = true;
|
||||||
/** Sounds made when this block breaks.*/
|
/** Sounds made when this block breaks.*/
|
||||||
public Sound breakSound = Sounds.boom;
|
public Sound breakSound = Sounds.boom;
|
||||||
/** The sound that this block makes while active.*/
|
|
||||||
|
/** The sound that this block makes while active. One sound loop. Do not overuse.*/
|
||||||
|
public Sound activeSound = Sounds.none;
|
||||||
|
/** Active sound base volume. */
|
||||||
|
public float activeSoundVolume = 0.5f;
|
||||||
|
|
||||||
|
/** The sound that this block makes while idle. Uses one sound loop for all blocks.*/
|
||||||
public Sound idleSound = Sounds.none;
|
public Sound idleSound = Sounds.none;
|
||||||
/** Idle sound base volume. */
|
/** Idle sound base volume. */
|
||||||
public float idleSoundVolume = 0.5f;
|
public float idleSoundVolume = 0.5f;
|
||||||
@@ -212,6 +218,11 @@ public class Block extends BlockStorage{
|
|||||||
return progressIncrease;
|
return progressIncrease;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** @return whether this block should play its active sound.*/
|
||||||
|
public boolean shouldActiveSound(Tile tile){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/** @return whether this block should play its idle sound.*/
|
/** @return whether this block should play its idle sound.*/
|
||||||
public boolean shouldIdleSound(Tile tile){
|
public boolean shouldIdleSound(Tile tile){
|
||||||
return canProduce(tile);
|
return canProduce(tile);
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ public class LaserTurret extends PowerTurret{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldIdleSound(Tile tile){
|
public boolean shouldActiveSound(Tile tile){
|
||||||
LaserTurretEntity entity = tile.entity();
|
LaserTurretEntity entity = tile.entity();
|
||||||
|
|
||||||
return entity.bulletLife > 0 && entity.bullet != null;
|
return entity.bulletLife > 0 && entity.bullet != null;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import io.anuke.mindustry.entities.*;
|
|||||||
import io.anuke.mindustry.entities.bullet.*;
|
import io.anuke.mindustry.entities.bullet.*;
|
||||||
import io.anuke.mindustry.entities.effect.*;
|
import io.anuke.mindustry.entities.effect.*;
|
||||||
import io.anuke.mindustry.entities.type.*;
|
import io.anuke.mindustry.entities.type.*;
|
||||||
|
import io.anuke.mindustry.gen.*;
|
||||||
import io.anuke.mindustry.type.*;
|
import io.anuke.mindustry.type.*;
|
||||||
import io.anuke.mindustry.world.*;
|
import io.anuke.mindustry.world.*;
|
||||||
import io.anuke.mindustry.world.consumers.*;
|
import io.anuke.mindustry.world.consumers.*;
|
||||||
@@ -19,6 +20,7 @@ public abstract class LiquidTurret extends Turret{
|
|||||||
public LiquidTurret(String name){
|
public LiquidTurret(String name){
|
||||||
super(name);
|
super(name);
|
||||||
hasLiquids = true;
|
hasLiquids = true;
|
||||||
|
activeSound = Sounds.spray;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Initializes accepted ammo map. Format: [liquid1, bullet1, liquid2, bullet2...] */
|
/** Initializes accepted ammo map. Format: [liquid1, bullet1, liquid2, bullet2...] */
|
||||||
@@ -44,6 +46,12 @@ public abstract class LiquidTurret extends Turret{
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldActiveSound(Tile tile){
|
||||||
|
TurretEntity entity = tile.entity();
|
||||||
|
return entity.target != null && hasAmmo(tile);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean validateTarget(Tile tile){
|
protected boolean validateTarget(Tile tile){
|
||||||
TurretEntity entity = tile.entity();
|
TurretEntity entity = tile.entity();
|
||||||
@@ -79,7 +87,7 @@ public abstract class LiquidTurret extends Turret{
|
|||||||
|
|
||||||
Effects.effect(type.shootEffect, entity.liquids.current().color, tile.drawx() + tr.x, tile.drawy() + tr.y, entity.rotation);
|
Effects.effect(type.shootEffect, entity.liquids.current().color, tile.drawx() + tr.x, tile.drawy() + tr.y, entity.rotation);
|
||||||
Effects.effect(type.smokeEffect, entity.liquids.current().color, tile.drawx() + tr.x, tile.drawy() + tr.y, entity.rotation);
|
Effects.effect(type.smokeEffect, entity.liquids.current().color, tile.drawx() + tr.x, tile.drawy() + tr.y, entity.rotation);
|
||||||
shootSound.at(tile);
|
//shootSound.at(tile);
|
||||||
|
|
||||||
if(shootShake > 0){
|
if(shootShake > 0){
|
||||||
Effects.shake(shootShake, shootShake, tile.entity);
|
Effects.shake(shootShake, shootShake, tile.entity);
|
||||||
|
|||||||
@@ -1,19 +1,17 @@
|
|||||||
package io.anuke.mindustry.world.blocks.distribution;
|
package io.anuke.mindustry.world.blocks.distribution;
|
||||||
|
|
||||||
import io.anuke.arc.Core;
|
import io.anuke.arc.*;
|
||||||
import io.anuke.arc.collection.LongArray;
|
import io.anuke.arc.collection.*;
|
||||||
import io.anuke.arc.graphics.g2d.Draw;
|
import io.anuke.arc.graphics.g2d.*;
|
||||||
import io.anuke.arc.graphics.g2d.TextureRegion;
|
import io.anuke.arc.math.*;
|
||||||
import io.anuke.arc.math.Mathf;
|
|
||||||
import io.anuke.arc.math.geom.*;
|
import io.anuke.arc.math.geom.*;
|
||||||
import io.anuke.arc.util.*;
|
import io.anuke.arc.util.*;
|
||||||
import io.anuke.mindustry.entities.type.TileEntity;
|
import io.anuke.mindustry.entities.type.*;
|
||||||
import io.anuke.mindustry.entities.type.Unit;
|
import io.anuke.mindustry.gen.*;
|
||||||
import io.anuke.mindustry.graphics.Layer;
|
import io.anuke.mindustry.graphics.*;
|
||||||
import io.anuke.mindustry.input.InputHandler.PlaceDraw;
|
import io.anuke.mindustry.input.InputHandler.*;
|
||||||
import io.anuke.mindustry.type.Item;
|
import io.anuke.mindustry.type.*;
|
||||||
import io.anuke.mindustry.world.Block;
|
import io.anuke.mindustry.world.*;
|
||||||
import io.anuke.mindustry.world.Tile;
|
|
||||||
import io.anuke.mindustry.world.meta.*;
|
import io.anuke.mindustry.world.meta.*;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
@@ -41,6 +39,9 @@ public class Conveyor extends Block{
|
|||||||
group = BlockGroup.transportation;
|
group = BlockGroup.transportation;
|
||||||
hasItems = true;
|
hasItems = true;
|
||||||
itemCapacity = 4;
|
itemCapacity = 4;
|
||||||
|
|
||||||
|
idleSound = Sounds.conveyor;
|
||||||
|
idleSoundVolume = 0.004f;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int compareItems(long a, long b){
|
private static int compareItems(long a, long b){
|
||||||
@@ -76,6 +77,12 @@ public class Conveyor extends Block{
|
|||||||
tilesize * entity.blendsclx, tilesize * entity.blendscly, rotation * 90);
|
tilesize * entity.blendsclx, tilesize * entity.blendscly, rotation * 90);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldIdleSound(Tile tile){
|
||||||
|
ConveyorEntity entity = tile.entity();
|
||||||
|
return entity.clogHeat <= 0.5f ;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onProximityUpdate(Tile tile){
|
public void onProximityUpdate(Tile tile){
|
||||||
super.onProximityUpdate(tile);
|
super.onProximityUpdate(tile);
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import io.anuke.mindustry.content.*;
|
|||||||
import io.anuke.mindustry.entities.*;
|
import io.anuke.mindustry.entities.*;
|
||||||
import io.anuke.mindustry.entities.Effects.*;
|
import io.anuke.mindustry.entities.Effects.*;
|
||||||
import io.anuke.mindustry.entities.type.*;
|
import io.anuke.mindustry.entities.type.*;
|
||||||
|
import io.anuke.mindustry.gen.*;
|
||||||
import io.anuke.mindustry.graphics.*;
|
import io.anuke.mindustry.graphics.*;
|
||||||
import io.anuke.mindustry.type.*;
|
import io.anuke.mindustry.type.*;
|
||||||
import io.anuke.mindustry.ui.*;
|
import io.anuke.mindustry.ui.*;
|
||||||
@@ -65,8 +66,8 @@ public class Drill extends Block{
|
|||||||
liquidCapacity = 5f;
|
liquidCapacity = 5f;
|
||||||
hasItems = true;
|
hasItems = true;
|
||||||
|
|
||||||
//idleSound = Sounds.drill;
|
idleSound = Sounds.drill;
|
||||||
//idleSoundVolume = 0.5f;
|
idleSoundVolume = 0.003f;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,21 +1,18 @@
|
|||||||
package io.anuke.mindustry.world.blocks.production;
|
package io.anuke.mindustry.world.blocks.production;
|
||||||
|
|
||||||
import io.anuke.arc.function.Consumer;
|
import io.anuke.arc.function.*;
|
||||||
import io.anuke.arc.function.Supplier;
|
import io.anuke.arc.graphics.g2d.*;
|
||||||
import io.anuke.arc.graphics.g2d.TextureRegion;
|
import io.anuke.arc.math.*;
|
||||||
import io.anuke.arc.math.Mathf;
|
import io.anuke.arc.util.*;
|
||||||
import io.anuke.arc.util.Time;
|
import io.anuke.mindustry.content.*;
|
||||||
import io.anuke.mindustry.content.Fx;
|
import io.anuke.mindustry.entities.*;
|
||||||
import io.anuke.mindustry.entities.Effects;
|
import io.anuke.mindustry.entities.Effects.*;
|
||||||
import io.anuke.mindustry.entities.Effects.Effect;
|
import io.anuke.mindustry.entities.type.*;
|
||||||
import io.anuke.mindustry.entities.type.TileEntity;
|
import io.anuke.mindustry.gen.*;
|
||||||
import io.anuke.mindustry.type.*;
|
import io.anuke.mindustry.type.*;
|
||||||
import io.anuke.mindustry.world.Block;
|
import io.anuke.mindustry.world.*;
|
||||||
import io.anuke.mindustry.world.Tile;
|
import io.anuke.mindustry.world.consumers.*;
|
||||||
import io.anuke.mindustry.world.consumers.ConsumeLiquidBase;
|
import io.anuke.mindustry.world.meta.*;
|
||||||
import io.anuke.mindustry.world.consumers.ConsumeType;
|
|
||||||
import io.anuke.mindustry.world.meta.BlockStat;
|
|
||||||
import io.anuke.mindustry.world.meta.StatUnit;
|
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
|
||||||
@@ -37,6 +34,8 @@ public class GenericCrafter extends Block{
|
|||||||
solid = true;
|
solid = true;
|
||||||
hasItems = true;
|
hasItems = true;
|
||||||
health = 60;
|
health = 60;
|
||||||
|
idleSound = Sounds.machine;
|
||||||
|
idleSoundVolume = 0.03f;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -58,6 +57,11 @@ public class GenericCrafter extends Block{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldIdleSound(Tile tile){
|
||||||
|
return tile.entity.cons.valid();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(){
|
public void init(){
|
||||||
outputsLiquid = outputLiquid != null;
|
outputsLiquid = outputLiquid != null;
|
||||||
|
|||||||
@@ -30,8 +30,8 @@ public class CoreBlock extends StorageBlock{
|
|||||||
update = true;
|
update = true;
|
||||||
hasItems = true;
|
hasItems = true;
|
||||||
flags = EnumSet.of(BlockFlag.target, BlockFlag.producer);
|
flags = EnumSet.of(BlockFlag.target, BlockFlag.producer);
|
||||||
idleSound = Sounds.respawning;
|
activeSound = Sounds.respawning;
|
||||||
idleSoundVolume = 1f;
|
activeSoundVolume = 1f;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Remote(called = Loc.server)
|
@Remote(called = Loc.server)
|
||||||
@@ -156,7 +156,7 @@ public class CoreBlock extends StorageBlock{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldIdleSound(Tile tile){
|
public boolean shouldActiveSound(Tile tile){
|
||||||
CoreEntity entity = tile.entity();
|
CoreEntity entity = tile.entity();
|
||||||
|
|
||||||
return entity.spawnPlayer != null;
|
return entity.spawnPlayer != null;
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ task ikZip(type: Zip){
|
|||||||
def filename = "$appName-${getTarget()}-${version}"
|
def filename = "$appName-${getTarget()}-${version}"
|
||||||
|
|
||||||
from "build/libs/$filename"
|
from "build/libs/$filename"
|
||||||
archiveName = "$appName-${getTarget()}-${getVersionString()}.zip"
|
archiveName = "${generateDeployName(getTarget())}.zip"
|
||||||
}
|
}
|
||||||
|
|
||||||
task ikdist{
|
task ikdist{
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ task packrZip(){
|
|||||||
|
|
||||||
task rzip(type: Zip){
|
task rzip(type: Zip){
|
||||||
from "packr-out/"
|
from "packr-out/"
|
||||||
archiveName "$appName-${getPlatform()}-${getVersionString()}.zip"
|
archiveName "${generateDeployName(getPlatform().toString())}.zip"
|
||||||
destinationDir(file("packr-export"))
|
destinationDir(file("packr-export"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -71,32 +71,10 @@
|
|||||||
<key>LSItemContentTypes</key>
|
<key>LSItemContentTypes</key>
|
||||||
<array>
|
<array>
|
||||||
<string>io.anuke.mindustry.mapfile</string>
|
<string>io.anuke.mindustry.mapfile</string>
|
||||||
<string>io.anuke.mindustry.savefile</string>
|
|
||||||
</array>
|
</array>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
|
|
||||||
<key>UTExportedTypeDeclarations</key>
|
|
||||||
<array>
|
|
||||||
<dict>
|
|
||||||
<key>UTTypeConformsTo</key>
|
|
||||||
<array>
|
|
||||||
<string>public.data</string>
|
|
||||||
</array>
|
|
||||||
<key>UTTypeDescription</key>
|
|
||||||
<string>Mindustry Save File</string>
|
|
||||||
<key>UTTypeIdentifier</key>
|
|
||||||
<string>io.anuke.mindustry.savefile</string>
|
|
||||||
<key>UTTypeTagSpecification</key>
|
|
||||||
<dict>
|
|
||||||
<key>public.filename-extension</key>
|
|
||||||
<string>msav</string>
|
|
||||||
<key>public.mime-type</key>
|
|
||||||
<string>mindustry/msav</string>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</array>
|
|
||||||
|
|
||||||
<key>UTExportedTypeDeclarations</key>
|
<key>UTExportedTypeDeclarations</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
@@ -111,9 +89,9 @@
|
|||||||
<key>UTTypeTagSpecification</key>
|
<key>UTTypeTagSpecification</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>public.filename-extension</key>
|
<key>public.filename-extension</key>
|
||||||
<string>mmap</string>
|
<string>msav</string>
|
||||||
<key>public.mime-type</key>
|
<key>public.mime-type</key>
|
||||||
<string>mindustry/mmap</string>
|
<string>mindustry/msav</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
|
|||||||
@@ -19,10 +19,12 @@ task copyAssets(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
exec{
|
exec{
|
||||||
|
ignoreExitValue true
|
||||||
commandLine "sh", "./convert_audio.sh", "assets/sounds"
|
commandLine "sh", "./convert_audio.sh", "assets/sounds"
|
||||||
}
|
}
|
||||||
|
|
||||||
exec{
|
exec{
|
||||||
|
ignoreExitValue true
|
||||||
commandLine "sh", "./convert_audio.sh", "assets/music"
|
commandLine "sh", "./convert_audio.sh", "assets/music"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,10 +36,7 @@ task copyAssets(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
createIPA.dependsOn copyAssets
|
build.dependsOn copyAssets
|
||||||
launchIPhoneSimulator.dependsOn copyAssets
|
|
||||||
launchIOSDevice.dependsOn copyAssets
|
|
||||||
launchIPadSimulator.dependsOn copyAssets
|
|
||||||
|
|
||||||
launchIPhoneSimulator.dependsOn build
|
launchIPhoneSimulator.dependsOn build
|
||||||
launchIPadSimulator.dependsOn build
|
launchIPadSimulator.dependsOn build
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 912 B After Width: | Height: | Size: 836 B |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 44 KiB |