Compare commits

..

9 Commits
v97 ... v98

Author SHA1 Message Date
Prosta4okua
ad5cdebca8 🇺🇦 Ukrainian translation (#878)
* :flag_ua:

* 🇺🇦
2019-10-25 13:28:19 -04:00
dase1353
ff794d485a Update bundle_zh_TW.properties (#870)
* Update bundle_zh_TW.properties

follow last Anuke Bundle Version

* Update bundle_zh_TW.properties

* Update bundle_zh_TW.properties

* Update bundle_zh_TW.properties

* Update bundle_zh_TW.properties

* Update bundle_zh_TW.properties
2019-10-25 13:28:05 -04:00
Mengyang Li
65a7a5afe2 Update bundle_zh_CN.properties (#872)
- fixed export and import translation
 - replace 示意图 -> 蓝图, which is more common in Chinese and Minecraft is using [similar term](https://minecraft-zh.gamepedia.com/index.php?title=Minecraft_Wiki:%E8%AE%A1%E5%88%92/%E7%BB%93%E6%9E%84%E8%93%9D%E5%9B%BE/%E6%9D%91%E5%BA%84&variant=zh)
2019-10-25 13:27:59 -04:00
itskatt
2fcae6d27c Update the French translation (#875)
* small fixes

* forgot about this
2019-10-25 13:27:51 -04:00
Anuken
6023b312e3 iOS mod dialog layout 2019-10-25 13:13:13 -04:00
Anuken
c4cbb85e03 iOS fix 2019-10-25 13:08:50 -04:00
Anuken
3280bceaa1 Bugfixes 2019-10-25 13:05:04 -04:00
Anuken
b7e788d529 Fixed #877 / Fixed #871 / Other fixes 2019-10-25 12:58:07 -04:00
Anuken
15cbc5fe42 Minor bugfixes 2019-10-24 23:41:17 -04:00
23 changed files with 160 additions and 101 deletions

View File

@@ -14,6 +14,7 @@
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:isGame="true" android:isGame="true"
android:appCategory="game" android:appCategory="game"
android:usesCleartextTraffic="true"
android:label="@string/app_name" android:label="@string/app_name"
android:theme="@style/GdxTheme" android:fullBackupContent="@xml/backup_rules"> android:theme="@style/GdxTheme" android:fullBackupContent="@xml/backup_rules">
<meta-data android:name="android.max_aspect" android:value="2.1"/> <meta-data android:name="android.max_aspect" android:value="2.1"/>

View File

@@ -1094,7 +1094,7 @@ block.junction.description = Acts as a bridge for two crossing conveyor belts. U
block.bridge-conveyor.description = Advanced item transport block. Allows transporting items over up to 3 tiles of any terrain or building. block.bridge-conveyor.description = Advanced item transport block. Allows transporting items over up to 3 tiles of any terrain or building.
block.phase-conveyor.description = Advanced item transport block. Uses power to teleport items to a connected phase conveyor over several tiles. block.phase-conveyor.description = Advanced item transport block. Uses power to teleport items to a connected phase conveyor over several tiles.
block.sorter.description = Sorts items. If an item matches the selection, it is allowed to pass. Otherwise, the item is outputted to the left and right. block.sorter.description = Sorts items. If an item matches the selection, it is allowed to pass. Otherwise, the item is outputted to the left and right.
block.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. block.inverted-sorter.description = Processes items like a standard sorter, but outputs selected items to the sides instead.
block.router.description = Accepts items, then outputs them to up to 3 other directions equally. Useful for splitting the materials from one source to multiple targets.\n\n[scarlet]Never use next to production inputs, as they will get clogged by output.[] block.router.description = Accepts items, then outputs them to up to 3 other directions equally. Useful for splitting the materials from one source to multiple targets.\n\n[scarlet]Never use next to production inputs, as they will get clogged by output.[]
block.distributor.description = An advanced router. Splits items to up to 7 other directions equally. block.distributor.description = An advanced router. Splits items to up to 7 other directions equally.
block.overflow-gate.description = A combination splitter and router. Only outputs to the left and right if the front path is blocked. block.overflow-gate.description = A combination splitter and router. Only outputs to the left and right if the front path is blocked.

View File

@@ -3,6 +3,7 @@ credits = Crédits
contributors = Traducteurs et contributeurs contributors = Traducteurs et contributeurs
discord = Rejoignez le Discord de Mindustry discord = Rejoignez le Discord de Mindustry
link.discord.description = Le discord officiel de Mindustry! link.discord.description = Le discord officiel de Mindustry!
link.reddit.description = Le subreddit de Mindustry
link.github.description = Code source du jeu link.github.description = Code source du jeu
link.changelog.description = Liste des mises a jour link.changelog.description = Liste des mises a jour
link.dev-builds.description = Versions instables du jeu link.dev-builds.description = Versions instables du jeu
@@ -17,15 +18,18 @@ gameover = Game over
gameover.pvp = L'équipe [accent] {0}[] a gagné ! gameover.pvp = L'équipe [accent] {0}[] a gagné !
highscore = [accent]Nouveau meilleur score! highscore = [accent]Nouveau meilleur score!
copied = Copié. copied = Copié.
load.sound = Sons load.sound = Sons
load.map = Cartes load.map = Cartes
load.image = Images load.image = Images
load.content = Contenu load.content = Contenu
load.system = Système load.system = Système
load.mod = Mods load.mod = Mods
schematic = Schéma schematic = Schéma
schematic.add = Sauvegarder le schéma... schematic.add = Sauvegarder le schéma...
schematics = Schémas schematics = Schémas
schematic.replace = Un schéma avec ce nom existe déjà. Remplacer?
schematic.import = Importer un schéma... schematic.import = Importer un schéma...
schematic.exportfile = Exporter le fichier schematic.exportfile = Exporter le fichier
schematic.importfile = Importer un fichier schematic.importfile = Importer un fichier
@@ -38,6 +42,7 @@ schematic.saved = Schéma sauvegardé.
schematic.delete.confirm = Ce schéma sera complètement éradiqué. schematic.delete.confirm = Ce schéma sera complètement éradiqué.
schematic.rename = Renommer le schéma schematic.rename = Renommer le schéma
schematic.info = {0}x{1}, {2} blocs schematic.info = {0}x{1}, {2} blocs
stat.wave = Vagues vaincues:[accent] {0} stat.wave = Vagues vaincues:[accent] {0}
stat.enemiesDestroyed = Ennemis détruits:[accent] {0} stat.enemiesDestroyed = Ennemis détruits:[accent] {0}
stat.built = Bâtiments construits:[accent] {0} stat.built = Bâtiments construits:[accent] {0}
@@ -45,6 +50,7 @@ stat.destroyed = Bâtiments détruits:[accent] {0}
stat.deconstructed = Bâtiments déconstruits:[accent] {0} stat.deconstructed = Bâtiments déconstruits:[accent] {0}
stat.delivered = Ressources transférées: stat.delivered = Ressources transférées:
stat.rank = Rang Final: [accent]{0} stat.rank = Rang Final: [accent]{0}
launcheditems = [accent]Ressources transférées launcheditems = [accent]Ressources transférées
launchinfo = [unlaunched][[LANCER] votre noyau pour obtenir les objets indiqués en bleu. launchinfo = [unlaunched][[LANCER] votre noyau pour obtenir les objets indiqués en bleu.
map.delete = Êtes-vous certain(e) de vouloir supprimer la carte "[accent]{0}[]"? map.delete = Êtes-vous certain(e) de vouloir supprimer la carte "[accent]{0}[]"?
@@ -66,7 +72,7 @@ position = Position
close = Fermer close = Fermer
website = Site Web website = Site Web
quit = Quitter quit = Quitter
save.quit = Sauvegarder et Quitter save.quit = Sauvegarder\net Quitter
maps = Cartes maps = Cartes
maps.browse = Parcourir les cartes maps.browse = Parcourir les cartes
continue = Continuer continue = Continuer
@@ -78,6 +84,7 @@ uploadingcontent = Publication du contenu
uploadingpreviewfile = Publication du fichier d'aperçu uploadingpreviewfile = Publication du fichier d'aperçu
committingchanges = Validation des modifications committingchanges = Validation des modifications
done = Fait done = Fait
mods.alphainfo = Gardez à l'esprit que les mods sont en alpha et[scarlet] peuvent être très buggés[].\nMerci de signaler les problèmes que vous rencontrez via le Github ou le Discord Mindustry. mods.alphainfo = Gardez à l'esprit que les mods sont en alpha et[scarlet] peuvent être très buggés[].\nMerci de signaler les problèmes que vous rencontrez via le Github ou le Discord Mindustry.
mods.alpha = [accent](Alpha) mods.alpha = [accent](Alpha)
mods = Mods mods = Mods
@@ -97,6 +104,7 @@ mod.author = [LIGHT_GRAY]Auteur:[] {0}
mod.missing = Cette sauvegarde contient des mods que vous avez récemment mis à jour ou que vous avez désinstallés. Votre sauvegarde risque d'être corrompue. Êtes-vous sûr de vouloir l'importer?\n[lightgray]Mods:\n{0} mod.missing = Cette sauvegarde contient des mods que vous avez récemment mis à jour ou que vous avez désinstallés. Votre sauvegarde risque d'être corrompue. Êtes-vous sûr de vouloir l'importer?\n[lightgray]Mods:\n{0}
mod.preview.missing = Avant de publier ce mod dans le workshop, vous devez ajouter une image servant d'aperçu.\nPlacez une image nommée[accent] preview.png[] dans le dossier du mod et réessayez. mod.preview.missing = Avant de publier ce mod dans le workshop, vous devez ajouter une image servant d'aperçu.\nPlacez une image nommée[accent] preview.png[] dans le dossier du mod et réessayez.
mod.folder.missing = Seuls les mods sous forme de dossiers peuvent être publiés sur l'atelier.\nPour convertir n'importe quel mod en un dossier, dézippez-le tout simplement dans un dossier et supprimez l'ancien zip, puis redémarrez votre jeu ou rechargez vos mods. mod.folder.missing = Seuls les mods sous forme de dossiers peuvent être publiés sur l'atelier.\nPour convertir n'importe quel mod en un dossier, dézippez-le tout simplement dans un dossier et supprimez l'ancien zip, puis redémarrez votre jeu ou rechargez vos mods.
about.button = À propos about.button = À propos
name = Nom: name = Nom:
noname = Commencer par choisir un[accent] nom de joueur[]. noname = Commencer par choisir un[accent] nom de joueur[].
@@ -263,6 +271,7 @@ missing = Cet élément a été supprimé ou déplacé.\n[lightgray]Le listing d
publishing = [accent]Publication... publishing = [accent]Publication...
publish.confirm = Êtes-vous sûr de vouloir publier ceci ?\n\n[lightgray]Assurez-vous d'être d'abord d'accord avec les CGU du workshop, sinon vos éléments n'apparaîtront pas ! publish.confirm = Êtes-vous sûr de vouloir publier ceci ?\n\n[lightgray]Assurez-vous d'être d'abord d'accord avec les CGU du workshop, sinon vos éléments n'apparaîtront pas !
publish.error = Erreur de publication de l'élément: {0} publish.error = Erreur de publication de l'élément: {0}
editor.brush = Pinceau editor.brush = Pinceau
editor.openin = Ouvrir dans l'éditeur editor.openin = Ouvrir dans l'éditeur
editor.oregen = Génération de minerais editor.oregen = Génération de minerais
@@ -339,6 +348,7 @@ editor.overwrite = [accent]Attention!\nCeci écrase une carte existante.
editor.overwrite.confirm = [scarlet]Attention![] Une carte avec ce nom existe déjà. Êtes-vous sûr de vouloir l'écraser? editor.overwrite.confirm = [scarlet]Attention![] Une carte avec ce nom existe déjà. Êtes-vous sûr de vouloir l'écraser?
editor.exists = Une carte avec ce nom existe déjà. editor.exists = Une carte avec ce nom existe déjà.
editor.selectmap = Sélectionnez une carte: editor.selectmap = Sélectionnez une carte:
toolmode.replace = Remplacer toolmode.replace = Remplacer
toolmode.replace.description = Dessiner seulement sur les blocs solides. toolmode.replace.description = Dessiner seulement sur les blocs solides.
toolmode.replaceall = Tout remplacer toolmode.replaceall = Tout remplacer
@@ -353,11 +363,12 @@ toolmode.fillteams = Remplir les équipes
toolmode.fillteams.description = Rempli les équipes au lieu des blocs. toolmode.fillteams.description = Rempli les équipes au lieu des blocs.
toolmode.drawteams = Dessiner les équipes toolmode.drawteams = Dessiner les équipes
toolmode.drawteams.description = Dessine les équipes au lieu de blocs. toolmode.drawteams.description = Dessine les équipes au lieu de blocs.
filters.empty = [lightgray]Aucun filtre! Ajoutez-en un avec les boutons ci-dessous. filters.empty = [lightgray]Aucun filtre! Ajoutez-en un avec les boutons ci-dessous.
filter.distort = Déformation filter.distort = Déformation
filter.noise = Bruit filter.noise = Bruit
filter.median = Median filter.median = Médian
filter.oremedian = Ore Median filter.oremedian = Minerai Médian
filter.blend = Fusion filter.blend = Fusion
filter.defaultores = Minerai par défaut filter.defaultores = Minerai par défaut
filter.ore = Minerai filter.ore = Minerai
@@ -365,7 +376,7 @@ filter.rivernoise = Bruit des rivières
filter.mirror = Miroir filter.mirror = Miroir
filter.clear = Effacer filter.clear = Effacer
filter.option.ignore = Ignorer filter.option.ignore = Ignorer
filter.scatter = Dispersement filter.scatter = Disperser
filter.terrain = Terrain filter.terrain = Terrain
filter.option.scale = Gamme filter.option.scale = Gamme
filter.option.chance = Chance filter.option.chance = Chance
@@ -384,6 +395,7 @@ filter.option.floor2 = Sol secondaire
filter.option.threshold2 = Seuil secondaire filter.option.threshold2 = Seuil secondaire
filter.option.radius = Rayon filter.option.radius = Rayon
filter.option.percentile = Centile filter.option.percentile = Centile
width = Largeur: width = Largeur:
height = Hauteur: height = Hauteur:
menu = Menu menu = Menu
@@ -396,9 +408,10 @@ ping = Ping: {0}ms
language.restart = Veuillez redémarrez votre jeu pour que le changement de langue prenne effet. language.restart = Veuillez redémarrez votre jeu pour que le changement de langue prenne effet.
settings = Paramètres settings = Paramètres
tutorial = Tutoriel tutorial = Tutoriel
tutorial.retake = Rejouer le Tutoriel tutorial.retake = Refaire le Tutoriel
editor = Éditeur editor = Éditeur
mapeditor = Éditeur de carte mapeditor = Éditeur de carte
abandon = Abandonner abandon = Abandonner
abandon.text = Cette zone et toutes ses ressources vont être perdues. abandon.text = Cette zone et toutes ses ressources vont être perdues.
locked = Verrouillé locked = Verrouillé
@@ -429,6 +442,7 @@ zone.objective.survival = Survivre
zone.objective.attack = Détruire le noyau ennemi zone.objective.attack = Détruire le noyau ennemi
add = Ajouter... add = Ajouter...
boss.health = Santé du Boss boss.health = Santé du Boss
connectfail = [crimson]Échec de la connexion au serveur :\n\n[accent]{0} connectfail = [crimson]Échec de la connexion au serveur :\n\n[accent]{0}
error.unreachable = Serveur injoignable.\nL'adresse IP est correcte? error.unreachable = Serveur injoignable.\nL'adresse IP est correcte?
error.invalidaddress = Adresse invalide. error.invalidaddress = Adresse invalide.
@@ -439,6 +453,7 @@ error.mapnotfound = Carte introuvable!
error.io = Erreur de Réseau (I/O) error.io = Erreur de Réseau (I/O)
error.any = Erreur réseau inconnue error.any = Erreur réseau inconnue
error.bloom = Échec de l'initialisation du flou lumineux.\nVotre appareil peux ne pas le supporter. error.bloom = Échec de l'initialisation du flou lumineux.\nVotre appareil peux ne pas le supporter.
zone.groundZero.name = Première Bataille zone.groundZero.name = Première Bataille
zone.desertWastes.name = Désert Sauvage zone.desertWastes.name = Désert Sauvage
zone.craters.name = Les Cratères zone.craters.name = Les Cratères
@@ -453,6 +468,7 @@ zone.saltFlats.name = Marais Salants
zone.impact0078.name = Impact 0078 zone.impact0078.name = Impact 0078
zone.crags.name = Rochers zone.crags.name = Rochers
zone.fungalPass.name = Passe Fongique zone.fungalPass.name = Passe Fongique
zone.groundZero.description = L'emplacement optimal pour débuter. Faible menace ennemie. Peu de ressources. \nRecueillez autant de plomb et de cuivre que possible.\nRien d'autre à signaler. zone.groundZero.description = L'emplacement optimal pour débuter. Faible menace ennemie. Peu de ressources. \nRecueillez autant de plomb et de cuivre que possible.\nRien d'autre à signaler.
zone.frozenForest.description = Même ici, plus près des montagnes, les spores se sont propagées. Les températures glaciales ne pourront pas les contenir pour toujours.\n\nFamiliarisez vous avec l'Énergie. Construisez des générateurs a combustion. Apprenez a utiliser les réparateurs. zone.frozenForest.description = Même ici, plus près des montagnes, les spores se sont propagées. Les températures glaciales ne pourront pas les contenir pour toujours.\n\nFamiliarisez vous avec l'Énergie. Construisez des générateurs a combustion. Apprenez a utiliser les réparateurs.
zone.desertWastes.description = Cette étendue désertique est immense, imprévisible. On y croise des structures abandonnées.\nLe charbon est présent dans la région. Brûlez-le pour générer de l'Énergie ou synthétisez-le en graphite.\n\n[lightgray]Ce lieu d'atterisage est imprévisible. zone.desertWastes.description = Cette étendue désertique est immense, imprévisible. On y croise des structures abandonnées.\nLe charbon est présent dans la région. Brûlez-le pour générer de l'Énergie ou synthétisez-le en graphite.\n\n[lightgray]Ce lieu d'atterisage est imprévisible.
@@ -467,6 +483,7 @@ zone.nuclearComplex.description = Une ancienne installation de production et tra
zone.fungalPass.description = Une zone de transition entre les hautes montagnes et les basses régions infestées de spores. Une petite base de reconnaissance ennemie s'y trouve.\nDétruisez la.\nUtilisez les unités Poignard et Rampeurs. Détruisez les deux noyaux. zone.fungalPass.description = Une zone de transition entre les hautes montagnes et les basses régions infestées de spores. Une petite base de reconnaissance ennemie s'y trouve.\nDétruisez la.\nUtilisez les unités Poignard et Rampeurs. Détruisez les deux noyaux.
zone.impact0078.description = <insérer une description ici> zone.impact0078.description = <insérer une description ici>
zone.crags.description = <insérer une description ici> zone.crags.description = <insérer une description ici>
settings.language = Langue settings.language = Langue
settings.data = Données du Jeu settings.data = Données du Jeu
settings.reset = Valeurs par Défaut settings.reset = Valeurs par Défaut
@@ -520,6 +537,7 @@ blocks.inaccuracy = Imprécision
blocks.shots = Tirs blocks.shots = Tirs
blocks.reload = Tirs/Seconde blocks.reload = Tirs/Seconde
blocks.ammo = Munitions blocks.ammo = Munitions
bar.drilltierreq = Foreuse Améliorée Requise bar.drilltierreq = Foreuse Améliorée Requise
bar.drillspeed = Vitesse de forage: {0}/s bar.drillspeed = Vitesse de forage: {0}/s
bar.efficiency = Efficacité: {0}% bar.efficiency = Efficacité: {0}%
@@ -534,6 +552,7 @@ bar.heat = Chaleur
bar.power = Énergie bar.power = Énergie
bar.progress = Progression de la construction bar.progress = Progression de la construction
bar.spawned = Unités: {0}/{1} bar.spawned = Unités: {0}/{1}
bullet.damage = [stat]{0}[lightgray] dégâts bullet.damage = [stat]{0}[lightgray] dégâts
bullet.splashdamage = [stat]{0}[lightgray] dégâts de zone ~[stat] {1}[lightgray] blocs bullet.splashdamage = [stat]{0}[lightgray] dégâts de zone ~[stat] {1}[lightgray] blocs
bullet.incendiary = [stat]incendiaire bullet.incendiary = [stat]incendiaire
@@ -545,6 +564,7 @@ bullet.freezing = [stat]gel
bullet.tarred = [stat]goudronné bullet.tarred = [stat]goudronné
bullet.multiplier = [stat]{0}[lightgray]x multiplicateur de munitions bullet.multiplier = [stat]{0}[lightgray]x multiplicateur de munitions
bullet.reload = [stat]{0}[lightgray]x vitesse de tir bullet.reload = [stat]{0}[lightgray]x vitesse de tir
unit.blocks = blocs unit.blocks = blocs
unit.powersecond = énergie/seconde unit.powersecond = énergie/seconde
unit.liquidsecond = unité de liquide/seconde unit.liquidsecond = unité de liquide/seconde
@@ -607,7 +627,7 @@ setting.crashreport.name = Envoyer un Rapport de Crash Anonyme
setting.savecreate.name = Sauvegardes Auto setting.savecreate.name = Sauvegardes Auto
setting.publichost.name = Visibilité de la Partie Publique setting.publichost.name = Visibilité de la Partie Publique
setting.chatopacity.name = Opacité du Chat setting.chatopacity.name = Opacité du Chat
setting.lasersopacity.name = Power Laser Opacity setting.lasersopacity.name = Opacité des Connections Laser
setting.playerchat.name = Montrer le Chat setting.playerchat.name = Montrer le Chat
public.confirm = Voulez-vous rendre votre partie publique?\n[accent]N'importe qui pourra rejoindre vos parties.\n[lightgray]Ce paramètre peut être changé plus tard dans Paramètres->Jeu->Visibilité de la Partie Publique public.confirm = Voulez-vous rendre votre partie publique?\n[accent]N'importe qui pourra rejoindre vos parties.\n[lightgray]Ce paramètre peut être changé plus tard dans Paramètres->Jeu->Visibilité de la Partie Publique
public.beta = Notez que les versions bêta du jeu ne peuvent pas créer des lobby publics. public.beta = Notez que les versions bêta du jeu ne peuvent pas créer des lobby publics.
@@ -668,6 +688,7 @@ mode.pvp.description = Battez-vous contre d'autres joueurs en local.\n[gray]Requ
mode.attack.name = Attaque mode.attack.name = Attaque
mode.attack.description = Pas de vagues, le but étant de détruire la base ennemie.\n[gray]Requiert un noyaux rouge dans la map pour y jouer. mode.attack.description = Pas de vagues, le but étant de détruire la base ennemie.\n[gray]Requiert un noyaux rouge dans la map pour y jouer.
mode.custom = Règles personnalisées mode.custom = Règles personnalisées
rules.infiniteresources = Ressources infinies rules.infiniteresources = Ressources infinies
rules.wavetimer = Minuterie pour les vagues rules.wavetimer = Minuterie pour les vagues
rules.waves = Vagues rules.waves = Vagues
@@ -694,6 +715,7 @@ rules.title.resourcesbuilding = Ressources & Construction
rules.title.player = Joueurs rules.title.player = Joueurs
rules.title.enemy = Ennemis rules.title.enemy = Ennemis
rules.title.unit = Unités rules.title.unit = Unités
content.item.name = Objets content.item.name = Objets
content.liquid.name = Liquides content.liquid.name = Liquides
content.unit.name = Unités content.unit.name = Unités
@@ -755,6 +777,7 @@ mech.buildspeed = [LIGHT_GRAY]Vitesse de Construction: {0}%
liquid.heatcapacity = [LIGHT_GRAY]Capacité Thermique: {0} liquid.heatcapacity = [LIGHT_GRAY]Capacité Thermique: {0}
liquid.viscosity = [LIGHT_GRAY]Viscosité: {0} liquid.viscosity = [LIGHT_GRAY]Viscosité: {0}
liquid.temperature = [LIGHT_GRAY]Température: {0} liquid.temperature = [LIGHT_GRAY]Température: {0}
block.sand-boulder.name = Bloc de Sable block.sand-boulder.name = Bloc de Sable
block.grass.name = Herbe block.grass.name = Herbe
block.salt.name = Sel block.salt.name = Sel
@@ -986,6 +1009,7 @@ tutorial.deposit = Déposez des ressources dans des blocs en les faisant glisser
tutorial.waves = L'[lightgray] ennemi[] approche.\n\nDéfendez le noyau pendant 2 vagues.[accent] Cliquez[] pour tirer.\nConstruisez plus de tourelles et de foreuses. Minez plus de cuivre. tutorial.waves = L'[lightgray] ennemi[] approche.\n\nDéfendez le noyau pendant 2 vagues.[accent] Cliquez[] pour tirer.\nConstruisez plus de tourelles et de foreuses. Minez plus de cuivre.
tutorial.waves.mobile = L'[lightgray] ennemi[] approche.\n\nDéfendez le noyau pendant 2 vagues. Votre vaisseau tirera automatiquement sur les ennemis.\nConstruisez plus de tourelles et de foreuses. Minez plus de cuivre. tutorial.waves.mobile = L'[lightgray] ennemi[] approche.\n\nDéfendez le noyau pendant 2 vagues. Votre vaisseau tirera automatiquement sur les ennemis.\nConstruisez plus de tourelles et de foreuses. Minez plus de cuivre.
tutorial.launch = Une fois que vous aurez atteint une vague spécifique, vous aurez la possibilité de[accent] faire décoller le noyau[], abandonnant vos défenses mais [accent]sécurisant toutes les ressources stockées dans votre noyau.[]\nCes ressources peuvent ensuite être utilisées pour rechercher de nouvelles technologies.\n\n[accent]Appuyez sur le bouton de lancement. tutorial.launch = Une fois que vous aurez atteint une vague spécifique, vous aurez la possibilité de[accent] faire décoller le noyau[], abandonnant vos défenses mais [accent]sécurisant toutes les ressources stockées dans votre noyau.[]\nCes ressources peuvent ensuite être utilisées pour rechercher de nouvelles technologies.\n\n[accent]Appuyez sur le bouton de lancement.
item.copper.description = Le matériau structurel de base. Utilisé intensivement dans tout les blocs. item.copper.description = Le matériau structurel de base. Utilisé intensivement dans tout les blocs.
item.lead.description = Un matériau de départ. Utilisé intensivement en électronique et dans les blocs de transport de liquides. item.lead.description = Un matériau de départ. Utilisé intensivement en électronique et dans les blocs de transport de liquides.
item.metaglass.description = Un composé de vitre super-résistant. Utilisé largement pour le transport et le stockage de liquides. item.metaglass.description = Un composé de vitre super-résistant. Utilisé largement pour le transport et le stockage de liquides.
@@ -1070,7 +1094,7 @@ block.junction.description = Agit comme un pont pour deux lignes de convoyeurs s
block.bridge-conveyor.description = Bloc de transport avancé permettant de traverser jusqu'à 3 blocs de n'importe quel terrain ou bâtiment. block.bridge-conveyor.description = Bloc de transport avancé permettant de traverser jusqu'à 3 blocs de n'importe quel terrain ou bâtiment.
block.phase-conveyor.description = Convoyeur très avancé. Utilise de l'énergie pour téléporter des objets à un convoyeur phasé connecté jusqu'à une longue distance . block.phase-conveyor.description = Convoyeur très avancé. Utilise de l'énergie pour téléporter des objets à un convoyeur phasé connecté jusqu'à une longue distance .
block.sorter.description = Trie les articles. Si un article correspond à la sélection, il peut passer. Autrement, l'article est distribué vers la gauche ou la droite. block.sorter.description = Trie les articles. Si un article correspond à la sélection, il peut passer. Autrement, l'article est distribué vers la gauche ou la droite.
block.inverted-sorter.descriptions = Trie les articles comme un trieur standard, mais ceux correspondant à la sélection sont envoyés sur les côtés. block.inverted-sorter.description = Trie les articles comme un trieur standard, mais ceux correspondant à la sélection sont envoyés sur les côtés.
block.router.description = Accepte les objets depuis une ou plus directions et le renvoie dans n'importe quelle direction. Utile pour séparer une chaîne de convoyeurs en plusieurs.[accent]Le seul et l'Unique[] block.router.description = Accepte les objets depuis une ou plus directions et le renvoie dans n'importe quelle direction. Utile pour séparer une chaîne de convoyeurs en plusieurs.[accent]Le seul et l'Unique[]
block.distributor.description = Un routeur avancé qui sépare les objets jusqu'à 7 autres directions équitablement. block.distributor.description = Un routeur avancé qui sépare les objets jusqu'à 7 autres directions équitablement.
block.overflow-gate.description = C'est la combinaison entre un Routeur et un Diviseur qui peut seulement distribuer à gauche et à droite si le chemin de devant est bloqué. block.overflow-gate.description = C'est la combinaison entre un Routeur et un Diviseur qui peut seulement distribuer à gauche et à droite si le chemin de devant est bloqué.

View File

@@ -2,7 +2,8 @@ credits.text = Створив [ROYAL]Anuken[] — [SKY]anukendev@gmail.com[]\n\n
credits = Творці credits = Творці
contributors = Перекладачі та помічники contributors = Перекладачі та помічники
discord = Приєднуйтесь до Mindustry Discord! discord = Приєднуйтесь до Mindustry Discord!
link.discord.description = Офіційний Discord-сервер Mindustry link.discord.description = Офіційний Discord сервер Mindustry
link.reddit.description = Гілка Mindustry на Reddit
link.github.description = Вихідний код гри link.github.description = Вихідний код гри
link.changelog.description = Список змін link.changelog.description = Список змін
link.dev-builds.description = Нестабільні версії link.dev-builds.description = Нестабільні версії
@@ -16,28 +17,29 @@ screenshot.invalid = Мапа занадто велика, тому, мабут
gameover = Гра завершена gameover = Гра завершена
gameover.pvp = [accent] {0}[] команда перемогла! gameover.pvp = [accent] {0}[] команда перемогла!
highscore = [YELLOW]Новий рекорд! highscore = [YELLOW]Новий рекорд!
copied = Copied. copied = Скопійовано.
load.sound = Звуки load.sound = Звуки
load.map = Мапи load.map = Мапи
load.image = Зображення load.image = Зображення
load.content = Зміст load.content = Зміст
load.system = Система load.system = Система
load.mod = Модифікації load.mod = Модифікації
schematic = Schematic schematic = Схема
schematic.add = Save Schematic... schematic.add = Зберегти схему...
schematics = Schematics schematics = Схеми
schematic.import = Import Schematic... schematic.replace = Схема з такою ж назвою вже існує. Замінити її?
schematic.exportfile = Export File schematic.import = Імпортувати схему...
schematic.importfile = Import File schematic.exportfile = Експортувати файл
schematic.browseworkshop = Browse Workshop schematic.importfile = Імпортувати файл
schematic.copy = Copy to Clipboard schematic.browseworkshop = Переглянути в Майстерні
schematic.copy.import = Import from Clipboard schematic.copy = Копіювати в буфер обміну
schematic.shareworkshop = Share on Workshop schematic.copy.import = Імпортувати з клавіатури
schematic.shareworkshop = Поширити в Майстерні
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Flip Schematic
schematic.saved = Schematic saved. schematic.saved = Схема збережена.
schematic.delete.confirm = This schematic will be utterly eradicated. schematic.delete.confirm = Ця схема буде повністю випалена.
schematic.rename = Rename Schematic schematic.rename = Перейменувати схему.
schematic.info = {0}x{1}, {2} blocks schematic.info = {0}x{1}, {2} блоків
stat.wave = Хвиль відбито:[accent] {0} stat.wave = Хвиль відбито:[accent] {0}
stat.enemiesDestroyed = Ворогів знищено:[accent] {0} stat.enemiesDestroyed = Ворогів знищено:[accent] {0}
stat.built = Будівель збудувано:[accent] {0} stat.built = Будівель збудувано:[accent] {0}
@@ -62,7 +64,7 @@ customgame = Користувацька гра
newgame = Нова гра newgame = Нова гра
none = <нічого> none = <нічого>
minimap = Мінімапа minimap = Мінімапа
position = Position position = Позиція
close = Закрити close = Закрити
website = Веб-сайт website = Веб-сайт
quit = Вихід quit = Вихід
@@ -78,25 +80,25 @@ uploadingcontent = Вивантаження вмісту
uploadingpreviewfile = Вивантаження файлу передперегляду uploadingpreviewfile = Вивантаження файлу передперегляду
committingchanges = Здійснення змін committingchanges = Здійснення змін
done = Зроблено done = Зроблено
mods.alphainfo = Майте на увазі, що модифікації знаходяться в альфі, і [scarlet]може бути дуже глючними[].\nПовідомте про будь-які проблеми, які ви знайдете до Mindustry Github або Discord. mods.alphainfo = Майте на увазі, що модифікації знаходяться в альфі, і [scarlet]можуть бути дуже глючними[].\nПовідомте про будь-які проблеми, які ви знайдете до Mindustry Github або Discord.
mods.alpha = [scarlet](Альфа) mods.alpha = [scarlet](Альфа)
mods = Модифікації mods = Модифікації
mods.none = [LIGHT_GRAY]Модифікацій не знайдено! mods.none = [LIGHT_GRAY]Модифікацій не знайдено!
mods.guide = Modding Guide mods.guide = Посібник зі створення модифицій
mods.report = Report Bug mods.report = Повідомити про ваду
mod.enabled = [lightgray]Увімкнено mod.enabled = [lightgray]Увімкнено
mod.disabled = [scarlet]Вимкнено mod.disabled = [scarlet]Вимкнено
mod.disable = Disable mod.disable = Вимкнути
mod.enable = Enable mod.enable = Увімкнути
mod.requiresrestart = А тепер гра закриється, щоб застосувати зміни модифікацій. mod.requiresrestart = А тепер гра закриється, щоб застосувати зміни модифікацій.
mod.reloadrequired = [scarlet]Reload Required mod.reloadrequired = [scarlet]Потрібно перезавантаження
mod.import = Імпортувати модифікацію mod.import = Імпортувати модифікацію
mod.import.github = Import Github Mod mod.import.github = Import Github Mod
mod.remove.confirm = Цю модифікацію буде видалено. mod.remove.confirm = Цю модифікацію буде видалено.
mod.author = [LIGHT_GRAY]Автор:[] {0} mod.author = [LIGHT_GRAY]Автор:[] {0}
mod.missing = This save contains mods that you have recently updated or no longer have installed. Save corruption may occur. Are you sure you want to load it?\n[lightgray]Mods:\n{0} mod.missing = Це збереження містить модифікації, які ви нещодавно оновили або більше не встановлювали. Збереження може зіпсуватися. Ви впевнені, що хочете завантажити його?\n[lightgray]Модифікації:\n{0}
mod.preview.missing = Before publishing this mod in the workshop, you must add an image preview.\nPlace an image named[accent] preview.png[] into the mod's folder and try again. mod.preview.missing = До публікації цієї модифікації в Майстерні, ви повинні додати зображення попереднього перегляду.\nПомістіть зображення з назвою [accent] preview.png[] у теку з модификаціями і спробуйте знову.
mod.folder.missing = Only mods in folder form can be published on the workshop.\nTo convert any mod into a folder, simply unzip its file into a folder and delete the old zip, then restart your game or reload your mods. mod.folder.missing = Тільки модификації у формі теці можуть бути опубліковані в Майстерні.\nЩоб перетворити будь-яку модификацію у теку, просто розархівуйте цей файлу теку та видаліть старий архів, і потім перезапустіть гру або перезавантажте ваші модификації.
about.button = Про гру about.button = Про гру
name = Ім’я: name = Ім’я:
noname = Спочатку придумайте[accent] собі ім’я[]. noname = Спочатку придумайте[accent] собі ім’я[].
@@ -963,7 +965,7 @@ unit.fortress.name = Фортеця
unit.revenant.name = Потойбічний вбивця unit.revenant.name = Потойбічний вбивця
unit.eruptor.name = Вивиргатель unit.eruptor.name = Вивиргатель
unit.chaos-array.name = Масив хаосу unit.chaos-array.name = Масив хаосу
unit.eradicator.name = Викорінювач unit.eradicator.name = Випалювач
unit.lich.name = Лич unit.lich.name = Лич
unit.reaper.name = Жнець unit.reaper.name = Жнець
tutorial.next = [lightgray]<Натисніть для продовження> tutorial.next = [lightgray]<Натисніть для продовження>
@@ -1070,7 +1072,7 @@ block.junction.description = Діє як міст для двох перехре
block.bridge-conveyor.description = Покращений блок транспорту елементів. Дозволяє транспортувати предмети до 3-ох плиток з будь-якої місцевості чи будівлі. block.bridge-conveyor.description = Покращений блок транспорту елементів. Дозволяє транспортувати предмети до 3-ох плиток з будь-якої місцевості чи будівлі.
block.phase-conveyor.description = Покращений блок транспорту елементів. Використовує енергію для телепортування елементів на підключений фазовий конвеєр через кілька плиток. block.phase-conveyor.description = Покращений блок транспорту елементів. Використовує енергію для телепортування елементів на підключений фазовий конвеєр через кілька плиток.
block.sorter.description = Сортує предмети. Якщо елемент відповідає вибраному, його можна передати. В іншому випадку елемент виводиться зліва та справа. block.sorter.description = Сортує предмети. Якщо елемент відповідає вибраному, його можна передати. В іншому випадку елемент виводиться зліва та справа.
block.inverted-sorter.descriptions = Processes items like a standard sorter, but outputs selected items to the sides instead. block.inverted-sorter.description = Обробляє елементи, як звичайний сортувальник, але виводить обрані елементи на сторони.
block.router.description = Приймає елементи з одного напрямку та виводить їх до трьох інших напрямків порівну. Корисно для поділу матеріалів від одного джерела до кількох цілей.\n\n[scarlet]Ніколи не використовуйте поруч із входами до механізмів, оскільки вони будуть забиті вихідними предметами.[] block.router.description = Приймає елементи з одного напрямку та виводить їх до трьох інших напрямків порівну. Корисно для поділу матеріалів від одного джерела до кількох цілей.\n\n[scarlet]Ніколи не використовуйте поруч із входами до механізмів, оскільки вони будуть забиті вихідними предметами.[]
block.distributor.description = Розширений маршрутизатор. Розділяє предмети до 7 інших напрямків порівну. block.distributor.description = Розширений маршрутизатор. Розділяє предмети до 7 інших напрямків порівну.
block.overflow-gate.description = Комбінований розгалужувач і маршрутизатор. Виходи лише вліво і вправо, якщо передній шлях заблокований. block.overflow-gate.description = Комбінований розгалужувач і маршрутизатор. Виходи лише вліво і вправо, якщо передній шлях заблокований.

View File

@@ -23,20 +23,20 @@ load.image = 图片加载中
load.content = 内容加载中 load.content = 内容加载中
load.system = 系统加载中 load.system = 系统加载中
load.mod = 模组加载中 load.mod = 模组加载中
schematic = 示意 schematic =
schematic.add = 保存示意图中…… schematic.add = 保存图中……
schematics = 示意 schematics =
schematic.import = 出示意图中…… schematic.import = 入蓝图中……
schematic.exportfile = 文件 schematic.exportfile = 文件
schematic.importfile = 文件 schematic.importfile = 文件
schematic.browseworkshop = 流览创意工坊 schematic.browseworkshop = 流览创意工坊
schematic.copy = 复制到剪贴板 schematic.copy = 复制蓝图到剪贴板
schematic.copy.import = 从剪贴板导入 schematic.copy.import = 从剪贴板导入蓝图
schematic.shareworkshop = 在创意工坊上分享 schematic.shareworkshop = 在创意工坊上分享蓝图
schematic.flip = [accent][[{0}][]/[accent][[{1}][]:翻转示意 schematic.flip = [accent][[{0}][]/[accent][[{1}][]:翻转
schematic.saved = 示意图已保存。 schematic.saved = 图已保存。
schematic.delete.confirm = 这个示意图将被清除。 schematic.delete.confirm = 确认删除蓝图?
schematic.rename = 重命名示意 schematic.rename = 重命名
schematic.info = {0}x{1}, {2} 方块 schematic.info = {0}x{1}, {2} 方块
stat.wave = 战胜的波数:[accent]{0} stat.wave = 战胜的波数:[accent]{0}
stat.enemiesDestroyed = 消灭的敌人:[accent]{0} stat.enemiesDestroyed = 消灭的敌人:[accent]{0}
@@ -629,7 +629,7 @@ keybind.screenshot.name = 地图截图
keybind.move_x.name = 水平移动 keybind.move_x.name = 水平移动
keybind.move_y.name = 竖直移动 keybind.move_y.name = 竖直移动
keybind.schematic_select.name = 选择区域 keybind.schematic_select.name = 选择区域
keybind.schematic_menu.name = 示意图目录 keybind.schematic_menu.name = 图目录
keybind.schematic_flip_x.name = 水平翻转 keybind.schematic_flip_x.name = 水平翻转
keybind.schematic_flip_y.name = 竖直翻转 keybind.schematic_flip_y.name = 竖直翻转
keybind.fullscreen.name = 切换全屏 keybind.fullscreen.name = 切换全屏

View File

@@ -24,20 +24,21 @@ load.image = 圖片載入中
load.content = 內容載入中 load.content = 內容載入中
load.system = 系統載入中 load.system = 系統載入中
load.mod = 模組載入中 load.mod = 模組載入中
schematic = 計畫 schematic =
schematic.add = 儲存計畫圖... schematic.add = 儲存圖...
schematics = 計畫 schematics =
schematic.import = 匯入計畫圖... schematic.replace = 具有該名稱的藍圖已經存在。是否要取代它?
schematic.import = 匯入藍圖...
schematic.exportfile = 匯出檔案 schematic.exportfile = 匯出檔案
schematic.importfile = 匯入檔案 schematic.importfile = 匯入檔案
schematic.browseworkshop = 瀏覽工作坊 schematic.browseworkshop = 瀏覽工作坊
schematic.copy = 複製到剪貼簿 schematic.copy = 複製到剪貼簿
schematic.copy.import = 從剪貼簿匯入 schematic.copy.import = 從剪貼簿匯入
schematic.shareworkshop = 分享到工作坊 schematic.shareworkshop = 分享到工作坊
schematic.flip = [accent][[{0}][]/[accent][[{1}][]:翻轉計畫 schematic.flip = [accent][[{0}][]/[accent][[{1}][]:翻轉
schematic.saved = 計畫圖已保存。 schematic.saved = 圖已保存。
schematic.delete.confirm = 計畫圖將被完全清除。 schematic.delete.confirm = 圖將被完全清除。
schematic.rename = 重新命名計畫 schematic.rename = 重新命名
schematic.info = {0}x{1}, {2}方塊 schematic.info = {0}x{1}, {2}方塊
stat.wave = 打敗的波次:[accent]{0} stat.wave = 打敗的波次:[accent]{0}
stat.enemiesDestroyed = 摧毀的敵人:[accent]{0} stat.enemiesDestroyed = 摧毀的敵人:[accent]{0}
@@ -282,9 +283,9 @@ workshop = 工作坊
waves.title = 波次 waves.title = 波次
waves.remove = 移除 waves.remove = 移除
waves.never = 〈從來沒有〉 waves.never = 〈從來沒有〉
waves.every = 一切 waves.every =
waves.waves = 波次 waves.waves = 波次
waves.perspawn = 個重生 waves.perspawn = 次生成
waves.to = waves.to =
waves.boss = 頭目 waves.boss = 頭目
waves.preview = 預覽 waves.preview = 預覽
@@ -546,7 +547,7 @@ bullet.knockback = [stat]{0}[lightgray]擊退
bullet.freezing = [stat]冷凍 bullet.freezing = [stat]冷凍
bullet.tarred = [stat]焦油 bullet.tarred = [stat]焦油
bullet.multiplier = [stat]{0}[lightgray]×彈藥倍數 bullet.multiplier = [stat]{0}[lightgray]×彈藥倍數
bullet.reload = [stat]{0}[lightgray]×重 bullet.reload = [stat]{0}[lightgray]×重新裝填
unit.blocks = 方塊 unit.blocks = 方塊
unit.powersecond = 能量單位/秒 unit.powersecond = 能量單位/秒
unit.liquidsecond = 液體單位/秒 unit.liquidsecond = 液體單位/秒
@@ -563,7 +564,7 @@ category.general = 一般
category.power = 能量 category.power = 能量
category.liquids = 液體 category.liquids = 液體
category.items = 物品 category.items = 物品
category.crafting = 合成 category.crafting = 需求
category.shooting = 射擊 category.shooting = 射擊
category.optional = 可選的強化 category.optional = 可選的強化
setting.landscape.name = 鎖定景觀 setting.landscape.name = 鎖定景觀
@@ -573,7 +574,7 @@ setting.hints.name = 提示
setting.animatedwater.name = 水動畫 setting.animatedwater.name = 水動畫
setting.animatedshields.name = 護盾動畫 setting.animatedshields.name = 護盾動畫
setting.antialias.name = 消除鋸齒[LIGHT_GRAY](需要重啟遊戲)[] setting.antialias.name = 消除鋸齒[LIGHT_GRAY](需要重啟遊戲)[]
setting.indicators.name = 盟友指 setting.indicators.name = 盟友指
setting.autotarget.name = 自動射擊 setting.autotarget.name = 自動射擊
setting.keyboard.name = 滑鼠+鍵盤控制 setting.keyboard.name = 滑鼠+鍵盤控制
setting.touchscreen.name = 觸控螢幕控制 setting.touchscreen.name = 觸控螢幕控制
@@ -631,7 +632,7 @@ keybind.screenshot.name = 地圖截圖
keybind.move_x.name = 水平移動 keybind.move_x.name = 水平移動
keybind.move_y.name = 垂直移動 keybind.move_y.name = 垂直移動
keybind.schematic_select.name = 選擇區域 keybind.schematic_select.name = 選擇區域
keybind.schematic_menu.name = 計畫圖目錄 keybind.schematic_menu.name = 圖目錄
keybind.schematic_flip_x.name = X軸翻轉 keybind.schematic_flip_x.name = X軸翻轉
keybind.schematic_flip_y.name = Y軸翻轉 keybind.schematic_flip_y.name = Y軸翻轉
keybind.fullscreen.name = 全螢幕切換 keybind.fullscreen.name = 全螢幕切換
@@ -686,7 +687,7 @@ rules.respawntime = 重生時間︰[LIGHT_GRAY](秒)
rules.wavespacing = 波次間距︰[LIGHT_GRAY](秒) rules.wavespacing = 波次間距︰[LIGHT_GRAY](秒)
rules.buildcostmultiplier = 建設成本倍數 rules.buildcostmultiplier = 建設成本倍數
rules.buildspeedmultiplier = 建設速度倍數 rules.buildspeedmultiplier = 建設速度倍數
rules.waitForWaveToEnd = 等待所有敵人毀滅才開始波次 rules.waitForWaveToEnd = 等待所有敵人毀滅才開始下一波次
rules.dropzoneradius = 掉落區半徑:[LIGHT_GRAY](格) rules.dropzoneradius = 掉落區半徑:[LIGHT_GRAY](格)
rules.respawns = 每波次最多重生次數 rules.respawns = 每波次最多重生次數
rules.limitedRespawns = 限制重生 rules.limitedRespawns = 限制重生
@@ -887,13 +888,13 @@ block.tau-mech-pad.name = 滔機甲坪
block.conduit.name = 管線 block.conduit.name = 管線
block.mechanical-pump.name = 機械泵 block.mechanical-pump.name = 機械泵
block.item-source.name = 物品源 block.item-source.name = 物品源
block.item-void.name = 物品 block.item-void.name = 物品
block.liquid-source.name = 液體源 block.liquid-source.name = 液體源
block.power-void.name = 能量虛空 block.power-void.name = 能量虛空
block.power-source.name = 無限能量源 block.power-source.name = 無限能量源
block.unloader.name = 裝卸器 block.unloader.name = 裝卸器
block.vault.name = 存儲庫 block.vault.name = 存儲庫
block.wave.name = 波浪 block.wave.name = 波浪
block.swarmer.name = 群集砲 block.swarmer.name = 群集砲
block.salvo.name = 齊射砲 block.salvo.name = 齊射砲
block.ripple.name = 波紋砲 block.ripple.name = 波紋砲
@@ -1018,7 +1019,7 @@ 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 = 一種高級的具有裝甲的地面單位。配備兩具迷你的焦土級火焰發射器。攻擊地面單位和空中單位。
@@ -1072,7 +1073,7 @@ block.junction.description = 作為兩個交叉輸送帶的橋樑。適用於兩
block.bridge-conveyor.description = 高級的物品運輸方塊。允許跨過最多3個任何地形或建築物的方塊運輸物品。 block.bridge-conveyor.description = 高級的物品運輸方塊。允許跨過最多3個任何地形或建築物的方塊運輸物品。
block.phase-conveyor.description = 高級物品傳輸方塊。使用能量將物品傳送到幾個方塊外連接的相織輸送帶。 block.phase-conveyor.description = 高級物品傳輸方塊。使用能量將物品傳送到幾個方塊外連接的相織輸送帶。
block.sorter.description = 對物品進行分類。如果物品與所選種類匹配,則允許其通過。否則,物品將從左邊和右邊輸出。 block.sorter.description = 對物品進行分類。如果物品與所選種類匹配,則允許其通過。否則,物品將從左邊和右邊輸出。
block.inverted-sorter.descriptions = 處理物品的方式類似於分類器,但將所選擇的物品輸出到側面。 block.inverted-sorter.description = 處理物品的方式類似於分類器,但將所選擇的物品輸出到側面。
block.router.description = 接受來自一個方向的物品並將它們平均輸出到最多3個其他方向。用於將物品從一個來源分割為多個目標。 block.router.description = 接受來自一個方向的物品並將它們平均輸出到最多3個其他方向。用於將物品從一個來源分割為多個目標。
block.distributor.description = 高級的分配器可將物品均分到最多7個其他方向。 block.distributor.description = 高級的分配器可將物品均分到最多7個其他方向。
block.overflow-gate.description = 分離器和分配器的組合。如果前面被擋住,則向從左邊和右邊輸出物品。 block.overflow-gate.description = 分離器和分配器的組合。如果前面被擋住,則向從左邊和右邊輸出物品。

View File

@@ -472,7 +472,7 @@ public class NetClient implements ApplicationListener{
player.pointerX, player.pointerY, player.rotation, player.baseRotation, player.pointerX, player.pointerY, player.rotation, player.baseRotation,
player.velocity().x, player.velocity().y, player.velocity().x, player.velocity().y,
player.getMineTile(), player.getMineTile(),
player.isBoosting, player.isShooting, ui.chatfrag.chatOpen(), player.isBoosting, player.isShooting, ui.chatfrag.chatOpen(), player.isBuilding,
requests, requests,
Core.camera.position.x, Core.camera.position.y, Core.camera.position.x, Core.camera.position.y,
Core.camera.width * viewScale, Core.camera.height * viewScale); Core.camera.width * viewScale, Core.camera.height * viewScale);

View File

@@ -450,7 +450,7 @@ public class NetServer implements ApplicationListener{
float rotation, float baseRotation, float rotation, float baseRotation,
float xVelocity, float yVelocity, float xVelocity, float yVelocity,
Tile mining, Tile mining,
boolean boosting, boolean shooting, boolean chatting, boolean boosting, boolean shooting, boolean chatting, boolean building,
BuildRequest[] requests, BuildRequest[] requests,
float viewX, float viewY, float viewWidth, float viewHeight float viewX, float viewY, float viewWidth, float viewHeight
){ ){
@@ -477,6 +477,7 @@ public class NetServer implements ApplicationListener{
player.isTyping = chatting; player.isTyping = chatting;
player.isBoosting = boosting; player.isBoosting = boosting;
player.isShooting = shooting; player.isShooting = shooting;
player.isBuilding = building;
player.buildQueue().clear(); player.buildQueue().clear();
for(BuildRequest req : requests){ for(BuildRequest req : requests){
if(req == null) continue; if(req == null) continue;

View File

@@ -76,6 +76,8 @@ public class Schematics implements Loadable{
target.tiles.clear(); target.tiles.clear();
target.tiles.addAll(newSchematic.tiles); target.tiles.addAll(newSchematic.tiles);
target.width = newSchematic.width;
target.height = newSchematic.height;
newSchematic.tags.putAll(target.tags); newSchematic.tags.putAll(target.tags);
newSchematic.file = target.file; newSchematic.file = target.file;

View File

@@ -302,13 +302,17 @@ public class DesktopInput extends InputHandler{
player.clearBuilding(); player.clearBuilding();
} }
if(Core.input.keyTap(Binding.schematic_select)){ if(Core.input.keyTap(Binding.schematic_select) && !ui.chatfrag.chatOpen()){
schemX = rawCursorX; schemX = rawCursorX;
schemY = rawCursorY; schemY = rawCursorY;
} }
if(Core.input.keyTap(Binding.schematic_menu)){ if(Core.input.keyTap(Binding.schematic_menu) && !ui.chatfrag.chatOpen()){
ui.schematics.show(); if(ui.schematics.isShown()){
ui.schematics.hide();
}else{
ui.schematics.show();
}
} }
if(Core.input.keyTap(Binding.clear_building)){ if(Core.input.keyTap(Binding.clear_building)){

View File

@@ -401,6 +401,11 @@ public abstract class InputHandler implements InputProcessor, GestureListener{
protected void flushSelectRequests(Array<BuildRequest> requests){ protected void flushSelectRequests(Array<BuildRequest> requests){
for(BuildRequest req : requests){ for(BuildRequest req : requests){
if(req.block != null && validPlace(req.x, req.y, req.block, req.rotation)){ if(req.block != null && validPlace(req.x, req.y, req.block, req.rotation)){
BuildRequest other = getRequest(req.x, req.y);
if(other != null){
selectRequests.remove(other);
}
selectRequests.add(req.copy()); selectRequests.add(req.copy());
} }
} }

View File

@@ -126,6 +126,8 @@ public class TypeIO{
if(!request.breaking){ if(!request.breaking){
buffer.putShort(request.block.id); buffer.putShort(request.block.id);
buffer.put((byte)request.rotation); buffer.put((byte)request.rotation);
buffer.put(request.hasConfig ? (byte)1 : 0);
buffer.putInt(request.config);
} }
} }
} }
@@ -148,7 +150,12 @@ public class TypeIO{
}else{ //place }else{ //place
short block = buffer.getShort(); short block = buffer.getShort();
byte rotation = buffer.get(); byte rotation = buffer.get();
boolean hasConfig = buffer.get() == 1;
int config = buffer.getInt();
currentRequest = new BuildRequest(Pos.x(position), Pos.y(position), rotation, content.block(block)); currentRequest = new BuildRequest(Pos.x(position), Pos.y(position), rotation, content.block(block));
if(hasConfig){
currentRequest.configure(config);
}
} }
reqs[i] = (currentRequest); reqs[i] = (currentRequest);

View File

@@ -62,7 +62,7 @@ public class Mods implements Loadable{
file.copyTo(dest); file.copyTo(dest);
try{ try{
loaded.add(loadMod(dest, false)); loaded.add(loadMod(dest));
requiresReload = true; requiresReload = true;
}catch(IOException e){ }catch(IOException e){
dest.delete(); dest.delete();
@@ -172,7 +172,7 @@ public class Mods implements Loadable{
Log.debug("[Mods] Loading mod {0}", file); Log.debug("[Mods] Loading mod {0}", file);
try{ try{
LoadedMod mod = loadMod(file, false); LoadedMod mod = loadMod(file);
if(mod.enabled() || headless){ if(mod.enabled() || headless){
loaded.add(mod); loaded.add(mod);
}else{ }else{
@@ -187,12 +187,13 @@ public class Mods implements Loadable{
//load workshop mods now //load workshop mods now
for(FileHandle file : platform.getWorkshopContent(LoadedMod.class)){ for(FileHandle file : platform.getWorkshopContent(LoadedMod.class)){
try{ try{
LoadedMod mod = loadMod(file, true); LoadedMod mod = loadMod(file);
if(mod.enabled()){ if(mod.enabled()){
loaded.add(mod); loaded.add(mod);
}else{ }else{
disabled.add(mod); disabled.add(mod);
} }
mod.addSteamID(file.parent().name());
}catch(Exception e){ }catch(Exception e){
Log.err("Failed to load mod workshop file {0}. Skipping.", file); Log.err("Failed to load mod workshop file {0}. Skipping.", file);
Log.err(e); Log.err(e);
@@ -399,7 +400,7 @@ public class Mods implements Loadable{
/** Loads a mod file+meta, but does not add it to the list. /** Loads a mod file+meta, but does not add it to the list.
* Note that directories can be loaded as mods.*/ * Note that directories can be loaded as mods.*/
private LoadedMod loadMod(FileHandle sourceFile, boolean workshop) throws Exception{ private LoadedMod loadMod(FileHandle sourceFile) throws Exception{
FileHandle zip = sourceFile.isDirectory() ? sourceFile : new ZipFileHandle(sourceFile); FileHandle zip = sourceFile.isDirectory() ? sourceFile : new ZipFileHandle(sourceFile);
if(zip.list().length == 1 && zip.list()[0].isDirectory()){ if(zip.list().length == 1 && zip.list()[0].isDirectory()){
zip = zip.list()[0]; zip = zip.list()[0];

View File

@@ -1,7 +1,9 @@
package io.anuke.mindustry.ui.dialogs; package io.anuke.mindustry.ui.dialogs;
import io.anuke.arc.*; import io.anuke.arc.*;
import io.anuke.arc.Net.*;
import io.anuke.arc.collection.*; import io.anuke.arc.collection.*;
import io.anuke.arc.files.*;
import io.anuke.arc.util.*; import io.anuke.arc.util.*;
import io.anuke.arc.util.io.*; import io.anuke.arc.util.io.*;
import io.anuke.mindustry.gen.*; import io.anuke.mindustry.gen.*;
@@ -34,19 +36,27 @@ public class ModsDialog extends FloatingDialog{
ui.loadfrag.show(); ui.loadfrag.show();
Core.net.httpGet("http://api.github.com/repos/" + text + "/zipball/master", loc -> { Core.net.httpGet("http://api.github.com/repos/" + text + "/zipball/master", loc -> {
Core.net.httpGet(loc.getHeader("Location"), result -> { Core.net.httpGet(loc.getHeader("Location"), result -> {
try{ if(result.getStatus() != HttpStatus.OK){
Streams.copyStream(result.getResultAsStream(), modDirectory.child(text.replace("/", "") + ".zip").write(false)); ui.showErrorMessage(Core.bundle.format("connectfail", result.getStatus()));
Core.app.post(() -> { ui.loadfrag.hide();
try{ }else{
mods.reloadContent(); try{
setup(); FileHandle file = tmpDirectory.child(text.replace("/", "") + ".zip");
ui.loadfrag.hide(); Streams.copyStream(result.getResultAsStream(), file.write(false));
}catch(Throwable e){ mods.importMod(file);
ui.showException(e); file.delete();
} Core.app.post(() -> {
}); try{
}catch(Throwable e){ mods.reloadContent();
ui.showException(e); setup();
ui.loadfrag.hide();
}catch(Throwable e){
ui.showException(e);
}
});
}catch(Throwable e){
ui.showException(e);
}
} }
}, t -> Core.app.post(() -> ui.showException(t))); }, t -> Core.app.post(() -> ui.showException(t)));
}, t -> Core.app.post(() -> ui.showException(t))); }, t -> Core.app.post(() -> ui.showException(t)));
@@ -150,6 +160,6 @@ public class ModsDialog extends FloatingDialog{
e.printStackTrace(); e.printStackTrace();
} }
}); });
}).margin(12f).width(500f); }).margin(12f).width(400f);
} }
} }

View File

@@ -137,15 +137,17 @@ public class ZoneInfoDialog extends FloatingDialog{
}); });
cont.row(); cont.row();
cont.addButton(zone.canConfigure() ? "$configure" : Core.bundle.format("configure.locked", zone.configureObjective.display()),
() -> loadout.show(zone.loadout.core().itemCapacity, zone.getStartingItems(), zone::resetStartingItems, zone::updateLaunchCost, rebuildItems)
).fillX().pad(3).disabled(b -> !zone.canConfigure());
} }
cont.marginRight(12f); cont.marginRight(12f);
}); });
cont.row(); cont.row();
cont.addButton(zone.canConfigure() ? "$configure" : Core.bundle.format("configure.locked", zone.configureObjective.display()),
() -> loadout.show(zone.loadout.core().itemCapacity, zone.getStartingItems(), zone::resetStartingItems, zone::updateLaunchCost, rebuildItems)
).fillX().pad(3).disabled(b -> !zone.canConfigure());
cont.row();
Button button = cont.addButton(zone.locked() ? "$uncover" : "$launch", () -> { Button button = cont.addButton(zone.locked() ? "$uncover" : "$launch", () -> {
if(!data.isUnlocked(zone)){ if(!data.isUnlocked(zone)){
Sounds.unlock.play(); Sounds.unlock.play();

View File

@@ -106,9 +106,7 @@ 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);
if(!ios) container.row();
container.table(table -> { container.table(table -> {
table.defaults().set(container.defaults()); table.defaults().set(container.defaults());

View File

@@ -69,7 +69,7 @@ public class Build{
/** Returns whether a tile can be placed at this location by this team. */ /** Returns whether a tile can be placed at this location by this team. */
public static boolean validPlace(Team team, int x, int y, Block type, int rotation){ public static boolean validPlace(Team team, int x, int y, Block type, int rotation){
if(!type.isVisible() || type.isHidden()){ if(type == null || !type.isVisible() || type.isHidden()){
return false; return false;
} }

View File

@@ -18,6 +18,7 @@ public class ArmoredConveyor extends Conveyor{
@Override @Override
public boolean blends(Tile tile, int rotation, int otherx, int othery, int otherrot, Block otherblock){ public boolean blends(Tile tile, int rotation, int otherx, int othery, int otherrot, Block otherblock){
return otherblock.outputsItems() && (Point2.equals(tile.x + Geometry.d4(rotation).x, tile.y + Geometry.d4(rotation).y, otherx, othery) return otherblock.outputsItems() && (Point2.equals(tile.x + Geometry.d4(rotation).x, tile.y + Geometry.d4(rotation).y, otherx, othery)
|| ((!otherblock.rotate && Edges.getFacingEdge(otherblock, otherx, othery, tile).relativeTo(tile) == tile.rotation()) || Point2.equals(otherx + Geometry.d4(otherrot).x, othery + Geometry.d4(otherrot).y, tile.x, tile.y))); || ((!otherblock.rotate && Edges.getFacingEdge(otherblock, otherx, othery, tile) != null &&
Edges.getFacingEdge(otherblock, otherx, othery, tile).relativeTo(tile) == tile.rotation()) || Point2.equals(otherx + Geometry.d4(otherrot).x, othery + Geometry.d4(otherrot).y, tile.x, tile.y)));
} }
} }

View File

@@ -113,7 +113,7 @@ public class LiquidSource extends Block{
@Override @Override
public void configured(Tile tile, Player player, int value){ public void configured(Tile tile, Player player, int value){
tile.<LiquidSourceEntity>entity().source = content.liquid(value); tile.<LiquidSourceEntity>entity().source = value == -1 ? null : content.liquid(value);
} }
class LiquidSourceEntity extends TileEntity{ class LiquidSourceEntity extends TileEntity{