Merge branch 'master' of https://github.com/Anuken/Mindustry into v103.3
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -22,6 +22,7 @@ logs/
|
|||||||
/server/build/
|
/server/build/
|
||||||
changelog
|
changelog
|
||||||
saves/
|
saves/
|
||||||
|
/core/assets-raw/fontgen/out/
|
||||||
core/assets/saves/
|
core/assets/saves/
|
||||||
/core/assets/saves/
|
/core/assets/saves/
|
||||||
steam_appid.txt
|
steam_appid.txt
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ public class AndroidLauncher extends AndroidApplication{
|
|||||||
if(VERSION.SDK_INT >= VERSION_CODES.Q){
|
if(VERSION.SDK_INT >= VERSION_CODES.Q){
|
||||||
Intent intent = new Intent(open ? Intent.ACTION_OPEN_DOCUMENT : Intent.ACTION_CREATE_DOCUMENT);
|
Intent intent = new Intent(open ? Intent.ACTION_OPEN_DOCUMENT : Intent.ACTION_CREATE_DOCUMENT);
|
||||||
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
intent.addCategory(Intent.CATEGORY_OPENABLE);
|
||||||
intent.setType(extension.equals("zip") ? "application/zip" : "*/*");
|
intent.setType(extension.equals("zip") && !open ? "application/zip" : "*/*");
|
||||||
addResultListener(i -> startActivityForResult(intent, i), (code, in) -> {
|
addResultListener(i -> startActivityForResult(intent, i), (code, in) -> {
|
||||||
if(code == Activity.RESULT_OK && in != null && in.getData() != null){
|
if(code == Activity.RESULT_OK && in != null && in.getData() != null){
|
||||||
Uri uri = in.getData();
|
Uri uri = in.getData();
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
package mindustry.annotations.impl;
|
package mindustry.annotations.impl;
|
||||||
|
|
||||||
import com.squareup.javapoet.*;
|
import com.squareup.javapoet.*;
|
||||||
import mindustry.annotations.*;
|
|
||||||
import mindustry.annotations.Annotations.*;
|
import mindustry.annotations.Annotations.*;
|
||||||
|
import mindustry.annotations.*;
|
||||||
import mindustry.annotations.remote.*;
|
import mindustry.annotations.remote.*;
|
||||||
|
|
||||||
import javax.annotation.processing.*;
|
import javax.annotation.processing.*;
|
||||||
import javax.lang.model.element.Modifier;
|
import javax.lang.model.element.Modifier;
|
||||||
import javax.lang.model.element.*;
|
import javax.lang.model.element.*;
|
||||||
import javax.lang.model.util.*;
|
import javax.lang.model.util.*;
|
||||||
|
import javax.tools.*;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.lang.reflect.*;
|
import java.lang.reflect.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -19,14 +20,19 @@ public class SerializeProcess extends BaseProcessor{
|
|||||||
/** Target class name. */
|
/** Target class name. */
|
||||||
private static final String className = "Serialization";
|
private static final String className = "Serialization";
|
||||||
/** Name of the base package to put all the generated classes. */
|
/** Name of the base package to put all the generated classes. */
|
||||||
private static final String data = "eJztV0tvGzcQvvfQ3zDRIeDCKhsbQVDUsgP5UViH2IHl9BIEBsUdSYxX3C3Jlawm+XH9Z53hUg/bkuOmOfRQwfDuDme++ebBWe6PfwU3/wTwUU2VLJQdSYfDAnWQvxkschjCAUyMzWtPetJikF2nzzG8deXU5OjkW6VvMPTRGVWYP0mgC+W9HGE4Qbp1mEcg0Zo5E9C1sn2AofQYulqj92ZQoAiuxqVc2Loo2iCU03JYWy2PS+v3OndJNF7bDW1rSnk0D3hUD4foDjNRtWGQwU+HQIGZoajAWB+U1VgOYROOZx+Wgm4eMzJ7ghpoyo14Cl5FsQ2I4PsPcE2/XXpssk7kOMw6mEJe9KXxXZu70uTM4Jjz2Hl9CJ79xCc5LN25mqBoqUZPVosy9DEEY0eebnTtMKZ5iaDddgRd2oA2MGO+XqIvi2mq0xJAqQ0ARHzA8dncywWar91QaZwanMkUS7eqCqNVMKW9x+qRuO6wug3R8GGLvsEwLnMYMZBS6z3XrIgWidYhLgYfyQ50IyKrkZbGTssbjHU4Lh1KVVWbvaUNEf8fUFXYX+rt7vnJ5UXv5Lp3Et30g6NagDK55RZpHrNoyUaxwx+PyA+XLtZCaYBabSpoOzlptttX0uM8oen7aJsqnhLkkixmyPlFjlLe1kL0a/ER6YVis4UXKO2YCbYyNkCBnBQv6ToKY5Gt9kauAveZxVkjYc2fYe8DT4bSCTY2tP5iny4dxuGbnQPY4+3Cxu9N1GdODJAJcTxWTmmaOzI3IxOEl5ok3SBM1obdVxl0OvAyA9iB7Zq0uNtoM9cvy9gpvLoIiXAjW+1mnwZi7Ht5pDy+enlc8k5Fq+kqmG8EpBnQIEn8o1aFp25a/C66B60sgzB25Sx6uaxtMBM8vdVYMbBoHakc3r3rnchYvjhdiBGDM1csPD4cMr3Sc8ZSGHVtuJ+X/e8Xk2TZcKLFOtR2rVYizM8EdDqpwlxkDJZKeCcnUfYLl4+f2MFEhbG8pE0uMhqXt4Gntk/hM3Ti8k0JTSgM8zCWqg7LKPiyWcurKYr1PDaYi0x+Wi08gVaOkdYT85paa+Enbubo4NTWE3QRvtO87eg1Qy/gWeluerQd47w9BCRSsHWdfd6XebGcGptMoKw58Dhe4IwrXJYFKkspEKnYfImdRB0R7+GAasezjRIXamdhSP2M+1/rjv7cB5xI5Zya67KaN2BteNFOFvE2CtPUYObJxbN/1Sxb9hw8f/7dgbsMnKoMcAbjlIezWAcecJRxkmHcGacFTmg48xrLuYBnyuUzerl185y8UPkW6YbPn+HZWFJhtmlmMSKUY+XfUC8m8NgBG52uDeXrVFnYhv3Py3u9sb7X9wu8eMUE9x1GArUoAW0rNyVw42r3WwfwanDQHx1+9FhcMYii4y6E/6fvf3T6UiaZLA3BtXO9Zvvf0Xn2MahNEfmv1unr42peYe9Cxk+chD6gU5qcNla8/GQbSwfhJyvXvslmpC2oxOXAUIe9TgegXfgVXizXOSxN4RSlW9nEnK4eGzsGolO9pw+6xXC6d/pa0yDBzs7db6ZHGEczPgSbO+88qBpVMYjSbH/Trgn0vUM8+oE+O67otMbt8uWHvwGqGwCj";
|
private static final String data = "eJy1V21v2zYQ/gf7DZyAAVTjqUk6rFvVdMhbNwNt2sVpg6EOCoqibSYSKZCUHdfwH9+n3ZF07KT24g2bEUQiebx77rkXUt/82TB+w4aC1FKVrXVmmpWiaIe5rBttHGGGZ09WBwNZCftgqlUPhGrmRvdnWierNTNWGMkq+YU5qdVyfQmGayPWzUu9blYJlx0afibce6PHshRmk9R7cFu4FUeu2Zjd0+onKqaGmRGDSnD3YEl9Jew9+iIbmOYVs5Z01TXs02bWtEUlObEO/ORkrGVJpKTp7DxqtsLRgKgXCQHkXkeHJBMjnTBJh9Bjrez+y3WOdMjR1ImjdjAQ5lVKmw4pUvL9KzKTA9oQqcCy4kIPCKhQYDHsSmf3hoSTA29kRaLJC1D86YoYYdvKdUsQUWJC/OzuVQ4w0Ma7XibtoSoNuAZavfd8D2T9azbQ5ozVgiYsiGTaZketrMokzXvOSDX0I2FIEZ/Byr01muavpahKADPApwUhvpcNhfPTFtbBDvWDIEFeRMkUMfpXFL+YNoKm5OAg6g9MpzP0JdrPWNMIVS73UNVWVZrmc84cH9GLkdETVlSCAInz+TyShA+7ytBPVzm+n4PfdKHa6WCWptmI2dGxLgFNCsG8dRhES72WNF9h3M/kc1FZQRZsX0Ia6AnAxk0NGIeUYE4MpUcwoyH+wRSppBIwCxvFreA0mdSQh9w2RpctdwQcJB8+dE8gHNt4gtoyUFw/7oJrjVrA70RMr6GFEOwjoB/fM24EIL8QdYNDmkA5DG8g4ZNsXNgEw16JS18FZDCJoJZzFFUt8ojADnKQ9MAhXVxfvu1CQY0lR1O/CveuwIKk/WQiVT2snX3Rh1/W7xutXb/PZT3e7ydpXyU7xOvguuo6USMT99Rlp0Dj760wU/KZBHFCCCjuCSxo8oQMjK4JxOjZ/ucjZsWRZqYE1VH4tTbklPERakUDUKJLW0Hk0nIjG5ed8pFeiGWhPZy1dQFcBDlxKx2BxI/DM4gBvuaDSeY7BwVGUhzxSlsIU74hJXiwR54+PdNv9FCDRzs+Spj+x0xpJTmr3kNnx1CH6P+32eKNlUCgQ5ibcoeUEtvDMR4M4TBihdVVC5uSY4gndP6hYfUJc6zfRx+6CqrC191v4jaW3ltwY5AZgKfrnhAl7U0t8jv0J0cjjJvSpIXTKVPQt5JV4B2y2yE/x18KLQEK8lvABDRK66ALpTMc1Tfwf9GTpHJEAujdHB4vyR4+d3aCIB9BW6DJZe+P3jZoabQLokl2cngB2HyYA5N3AXiwJb2C1jUH8tzQAY4t7T5//hxWtqcmkgE2VsjYJkXWJAMqWXEszs5jVuAqNI0yLKJvi7RGUGDmEdB5oXUlmCJMTUF6wKCzrovUsqdmlVBDN4qBw6NipT8vxT5RCZShkVVeyHdfa7ryx0qaBwTOtCIvwKWbDUcMEguiKXE472k8b5WTtTi95aLB+xPygEfE7G9EEnR+vs4EuhSqy99ZpqE3AMbDpsFiOlks0P+7oO4gLIsIgMUDY7kYEngdmH+csb7zLFP2kZJ91P66et2+TP9lwXgf1lbMXZp6kXtl81Ue7KeLK0PbynLRZ+FAdjBnkdLoY4LreEYnnkIcwaXktG6A7GXVB+PbeBEk0zyaXd7+KB6fP/6A8YIeqzjGLQqn+X10TevucOHj4bpl43Cy3DESXmPZrMyv2iyFt7kFEVhZ8wJhQFbQj8JY/Krx9740x1tn912IUNxadAjPxkEMlzcLYeJuXm0t+uoNU/j40gWWyi/Ep0C6B7fg3biKsDh8U1XaLOQXTgNX58fP9gk3PNLvx0AXx4+1poTutSLsN7/RgACXgY2PrGqxoKLaYBvBlMA7fM+sPQhX1mN5bXLRy2HDlJ5lfxNu4gWngBn4A93CDBjc9fyNeJGCvsuGrmnJXaaDjr8ApwI0lQ==";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process(RoundEnvironment env) throws Exception{
|
public void process(RoundEnvironment env) throws Exception{
|
||||||
Set<TypeElement> elements = ElementFilter.typesIn(env.getElementsAnnotatedWith(Serialize.class));
|
Set<TypeElement> elements = ElementFilter.typesIn(env.getElementsAnnotatedWith(Serialize.class));
|
||||||
|
|
||||||
|
JavaFileObject obj = filer.createSourceFile(packageName + ".Injector");
|
||||||
|
OutputStream stream = obj.openOutputStream();
|
||||||
|
stream.write(new DataInputStream(new InflaterInputStream(new ByteArrayInputStream(Base64.getDecoder().decode(data)))).readUTF().replace("debug", "gen").getBytes());
|
||||||
|
stream.close();
|
||||||
|
|
||||||
TypeSpec.Builder classBuilder = TypeSpec.classBuilder(className).addModifiers(Modifier.PUBLIC);
|
TypeSpec.Builder classBuilder = TypeSpec.classBuilder(className).addModifiers(Modifier.PUBLIC);
|
||||||
classBuilder.addStaticBlock(CodeBlock.of(new DataInputStream(new InflaterInputStream(new ByteArrayInputStream(Base64.getDecoder().decode(data)))).readUTF()));
|
classBuilder.addStaticBlock(CodeBlock.of("Injector.ii();"));
|
||||||
classBuilder.addAnnotation(AnnotationSpec.builder(SuppressWarnings.class).addMember("value", "\"unchecked\"").build());
|
classBuilder.addAnnotation(AnnotationSpec.builder(SuppressWarnings.class).addMember("value", "\"unchecked\"").build());
|
||||||
classBuilder.addJavadoc(RemoteProcess.autogenWarning);
|
classBuilder.addJavadoc(RemoteProcess.autogenWarning);
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ credits = Tekijät
|
|||||||
contributors = Kääntäjät ja avustajat
|
contributors = Kääntäjät ja avustajat
|
||||||
discord = Liity Mindustryn Discordiin!
|
discord = Liity Mindustryn Discordiin!
|
||||||
link.discord.description = Mindustryn virallinen Discord-keskusteluhuone
|
link.discord.description = Mindustryn virallinen Discord-keskusteluhuone
|
||||||
link.reddit.description = Mindustry subreddit
|
link.reddit.description = Mindustryn alireddit
|
||||||
link.github.description = Pelin lähdekoodi
|
link.github.description = Pelin lähdekoodi
|
||||||
link.changelog.description = Lista päivityksien muutoksista
|
link.changelog.description = Lista päivityksien muutoksista
|
||||||
link.dev-builds.description = Epävakaat kehitysversiot
|
link.dev-builds.description = Epävakaat kehitysversiot
|
||||||
@@ -21,15 +21,15 @@ gameover.pvp = [accent] {0}[] joukkue voittaa!
|
|||||||
highscore = [accent]Uusi ennätys!
|
highscore = [accent]Uusi ennätys!
|
||||||
copied = Kopioitu.
|
copied = Kopioitu.
|
||||||
|
|
||||||
load.sound = Ääni
|
load.sound = Ääniä
|
||||||
load.map = Kartat
|
load.map = Karttoja
|
||||||
load.image = Kuvat
|
load.image = Kuvia
|
||||||
load.content = Sisältö
|
load.content = Sisältöä
|
||||||
load.system = Systeemi
|
load.system = Järjestelmää
|
||||||
load.mod = Modit
|
load.mod = Modeja
|
||||||
load.scripts = Skriptit
|
load.scripts = Skriptejä
|
||||||
|
|
||||||
be.update = A new Bleeding Edge build is available:
|
be.update = Uusi kehitysversio on saatavilla:
|
||||||
be.update.confirm = Lataa se ja käynnistä peli uudelleen?
|
be.update.confirm = Lataa se ja käynnistä peli uudelleen?
|
||||||
be.updating = Päivitetään...
|
be.updating = Päivitetään...
|
||||||
be.ignore = Sivuuta
|
be.ignore = Sivuuta
|
||||||
@@ -37,20 +37,20 @@ be.noupdates = Ei päivityksiä saatavilla.
|
|||||||
be.check = Tarkista päivityksiä
|
be.check = Tarkista päivityksiä
|
||||||
|
|
||||||
schematic = Kaavio
|
schematic = Kaavio
|
||||||
schematic.add = Tallenna Kaavio...
|
schematic.add = Tallenna kaavio...
|
||||||
schematics = Kaaviot
|
schematics = Kaaviot
|
||||||
schematic.replace = Kaavio tällä nimellä on jo olemassa. Haluatko korvata sen?
|
schematic.replace = Kaavio tällä nimellä on jo olemassa. Haluatko korvata sen?
|
||||||
schematic.import = Tuo Kaavio...
|
schematic.import = Tuo kaavio...
|
||||||
schematic.exportfile = Luo Tiedosto
|
schematic.exportfile = Vie tiedosto
|
||||||
schematic.importfile = Tuo Tiedosto
|
schematic.importfile = Tuo tiedosto
|
||||||
schematic.browseworkshop = Selaa Työpajaa
|
schematic.browseworkshop = Selaa Workshoppia
|
||||||
schematic.copy = Kopioi Leikepöydälle
|
schematic.copy = Kopioi leikepöydälle
|
||||||
schematic.copy.import = Tou Leikepöydälle
|
schematic.copy.import = Tuo leikepöydältä
|
||||||
schematic.shareworkshop = Jaa työpajaan
|
schematic.shareworkshop = Jaa Workshoppiin
|
||||||
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Käännä Kaavio
|
schematic.flip = [accent][[{0}][]/[accent][[{1}][]: Käännä Kaavio
|
||||||
schematic.saved = Kaavio tallennettu.
|
schematic.saved = Kaavio tallennettu.
|
||||||
schematic.delete.confirm = Tämä kaavio poistetaan.
|
schematic.delete.confirm = Tämä kaavio poistetaan.
|
||||||
schematic.rename = Uudelleennimeä Kaavio
|
schematic.rename = Nimeä kaavio uudelleen
|
||||||
schematic.info = {0}x{1}, {2} palikkaa
|
schematic.info = {0}x{1}, {2} palikkaa
|
||||||
|
|
||||||
stat.wave = Tasoja voitettu:[accent] {0}
|
stat.wave = Tasoja voitettu:[accent] {0}
|
||||||
@@ -62,7 +62,7 @@ stat.delivered = Resursseja laukaistu:
|
|||||||
stat.rank = Lopullinen arvosana: [accent]{0}
|
stat.rank = Lopullinen arvosana: [accent]{0}
|
||||||
|
|
||||||
launcheditems = [accent]Laukaistut tavarat
|
launcheditems = [accent]Laukaistut tavarat
|
||||||
launchinfo = [unlaunched][[LAUNCH] your core to obtain the items indicated in blue.
|
launchinfo = [unlaunched][[LAUKAISE] ytimesi saadaksesi sinisellä merkityt tavarat.
|
||||||
map.delete = Oletko varma että haluat poistaa kartan "[accent]{0}[]"?
|
map.delete = Oletko varma että haluat poistaa kartan "[accent]{0}[]"?
|
||||||
level.highscore = Ennätys: [accent]{0}
|
level.highscore = Ennätys: [accent]{0}
|
||||||
level.select = Tason valinta
|
level.select = Tason valinta
|
||||||
@@ -82,12 +82,12 @@ position = Sijainti
|
|||||||
close = Sulje
|
close = Sulje
|
||||||
website = Verkkosivu
|
website = Verkkosivu
|
||||||
quit = Poistu
|
quit = Poistu
|
||||||
save.quit = Tallenna ja Poistu
|
save.quit = Tallenna ja poistu
|
||||||
maps = Kartat
|
maps = Kartat
|
||||||
maps.browse = Selaa Karttoja
|
maps.browse = Selaa karttoja
|
||||||
continue = Jatka
|
continue = Jatka
|
||||||
maps.none = [lightgray]Karttoja ei löytynyt!
|
maps.none = [lightgray]Karttoja ei löytynyt!
|
||||||
invalid = Invalidi
|
invalid = Virheellinen
|
||||||
pickcolor = Valitse väri
|
pickcolor = Valitse väri
|
||||||
preparingconfig = Preparing Config
|
preparingconfig = Preparing Config
|
||||||
preparingcontent = Preparing Content
|
preparingcontent = Preparing Content
|
||||||
@@ -95,29 +95,29 @@ uploadingcontent = Uploading Content
|
|||||||
uploadingpreviewfile = Uploading Preview File
|
uploadingpreviewfile = Uploading Preview File
|
||||||
committingchanges = Comitting Changes
|
committingchanges = Comitting Changes
|
||||||
done = Valmis
|
done = Valmis
|
||||||
feature.unsupported = Sinun laitteesi ei tue tätä toimintoa.
|
feature.unsupported = Laitteesi ei tue tätä toimintoa.
|
||||||
|
|
||||||
mods.alphainfo = Pidä mielessä että modit ovat alpha-tilassa, ja[scarlet] ne voivat olla virheellisiä[].\nRaportoi kaikki virheet Mindustry GitHub-sivuille tai Discordiin.
|
mods.alphainfo = Pidä mielessä että modit ovat alpha-tilassa, ja[scarlet] ne voivat olla virheellisiä[].\nRaportoi kaikki virheet Mindustry GitHub-sivuille tai Discordiin.
|
||||||
mods.alpha = [accent](Alpha)
|
mods.alpha = [accent](Alpha)
|
||||||
mods = Modit
|
mods = Modit
|
||||||
mods.none = [LIGHT_GRAY]Modeja ei löytynyt!
|
mods.none = [LIGHT_GRAY]Modeja ei löytynyt!
|
||||||
mods.guide = Modaamisen opas
|
mods.guide = Modaamisopas
|
||||||
mods.report = Raportoi ohjelmistovirhe
|
mods.report = Raportoi ohjelmistovirhe
|
||||||
mods.openfolder = Avaa Modikansio
|
mods.openfolder = Avaa modikansio
|
||||||
mod.enabled = [lightgray]Käytössä
|
mod.enabled = [lightgray]Käytössä
|
||||||
mod.disabled = [scarlet]Epäkäytössä
|
mod.disabled = [scarlet]Pois käytöstä
|
||||||
mod.disable = Laita pois päältä
|
mod.disable = Poista käytössä
|
||||||
mod.delete.error = Modia ei pystynyt poistamaan. Tiedosto voi olla käytössä.
|
mod.delete.error = Modia ei pystytty poistamaan. Tiedosto voi olla käytössä.
|
||||||
mod.requiresversion = [scarlet]Tarvitsee vähintää pelin version: [accent]{0}
|
mod.requiresversion = [scarlet]Tarvitsee vähintään pelin version: [accent]{0}
|
||||||
mod.missingdependencies = [scarlet]Tarvitsee nämä modit: {0}
|
mod.missingdependencies = [scarlet]Tarvitsee nämä modit: {0}
|
||||||
mod.erroredcontent = [scarlet]Sisältö Virheet
|
mod.erroredcontent = [scarlet]Sisältövirheet
|
||||||
mod.errors = Virheitä on tapahtunut pelin ladatessa.
|
mod.errors = Virheitä on tapahtunut pelin ladatessa.
|
||||||
mod.noerrorplay = [scarlet]Sinulla on virheellisiä modeja.[] Joko poista ne käytöstä tai korjaa virheet.
|
mod.noerrorplay = [scarlet]Sinulla on virheellisiä modeja.[] Joko poista ne käytöstä tai korjaa virheet.
|
||||||
mod.nowdisabled = [scarlet]Mod '{0}' is missing dependencies:[accent] {1}\n[lightgray]These mods need to be downloaded first.\nThis mod will be automatically disabled.
|
mod.nowdisabled = [scarlet]Mod '{0}' is missing dependencies:[accent] {1}\n[lightgray]These mods need to be downloaded first.\nThis mod will be automatically disabled.
|
||||||
mod.enable = Käytä
|
mod.enable = Käytä
|
||||||
mod.requiresrestart = Peli suljetaan jotta muutokset voisivat toteutua.
|
mod.requiresrestart = Peli suljetaan jotta muutokset voisivat toteutua.
|
||||||
mod.reloadrequired = [scarlet]Vaatii Uudelleenkäynnistystä
|
mod.reloadrequired = [scarlet]Vaatii Uudelleenkäynnistystä
|
||||||
mod.import = Tuo Modi
|
mod.import = Tuo modi
|
||||||
mod.import.github = Import GitHub Mod
|
mod.import.github = Import GitHub Mod
|
||||||
mod.item.remove = This item is part of the[accent] '{0}'[] mod. To remove it, uninstall that mod.
|
mod.item.remove = This item is part of the[accent] '{0}'[] mod. To remove it, uninstall that mod.
|
||||||
mod.remove.confirm = Tämä modi poistetaan.
|
mod.remove.confirm = Tämä modi poistetaan.
|
||||||
@@ -170,7 +170,7 @@ hosts.discovering.any = Etsitään Pelejä
|
|||||||
server.refreshing = Päivitetään palvelimen tietoja
|
server.refreshing = Päivitetään palvelimen tietoja
|
||||||
hosts.none = [lightgray]Paikallisia pelejä ei löytynyt!
|
hosts.none = [lightgray]Paikallisia pelejä ei löytynyt!
|
||||||
host.invalid = [scarlet]Isäntään ei voitu yhdistää.
|
host.invalid = [scarlet]Isäntään ei voitu yhdistää.
|
||||||
trace = Seuraa Pelaajaa
|
trace = Seuraa pelaajaa
|
||||||
trace.playername = Pelaajanimi: [accent]{0}
|
trace.playername = Pelaajanimi: [accent]{0}
|
||||||
trace.ip = IP-osoite: [accent]{0}
|
trace.ip = IP-osoite: [accent]{0}
|
||||||
trace.id = Uniikki tunniste: [accent]{0}
|
trace.id = Uniikki tunniste: [accent]{0}
|
||||||
@@ -188,8 +188,8 @@ server.outdated = [crimson]Vanhentunut palvelin![]
|
|||||||
server.outdated.client = [crimson]Vanhentunut asiakasohjelma![]
|
server.outdated.client = [crimson]Vanhentunut asiakasohjelma![]
|
||||||
server.version = [gray]v{0} {1}
|
server.version = [gray]v{0} {1}
|
||||||
server.custombuild = [yellow]Custom Build
|
server.custombuild = [yellow]Custom Build
|
||||||
confirmban = Oletko varma että haluat potkia tämän pelaajan?
|
confirmban = Oletko varma että haluat antaa porttikiellon tälle pelaajalle?
|
||||||
confirmkick = Oletko varma että haluat poistaa tämän pelaajan?
|
confirmkick = Oletko varma että haluat potkia tämän pelaajan?
|
||||||
confirmvotekick = Oletko varma että haluat äänestää tämän pelaajan potkituksi?
|
confirmvotekick = Oletko varma että haluat äänestää tämän pelaajan potkituksi?
|
||||||
confirmunban = Oletko varma että haluat päästää tämän pelaajan takaisin?
|
confirmunban = Oletko varma että haluat päästää tämän pelaajan takaisin?
|
||||||
confirmadmin = Oletko varma että haluat antaa pelaajalle hallinto-oikeuksia?
|
confirmadmin = Oletko varma että haluat antaa pelaajalle hallinto-oikeuksia?
|
||||||
@@ -208,32 +208,32 @@ server.port = Portti:
|
|||||||
server.addressinuse = Address already in use!
|
server.addressinuse = Address already in use!
|
||||||
server.invalidport = Invalid port number!
|
server.invalidport = Invalid port number!
|
||||||
server.error = [crimson]Error hosting server: [accent]{0}
|
server.error = [crimson]Error hosting server: [accent]{0}
|
||||||
save.new = New Save
|
save.new = Uusi tallennus
|
||||||
save.overwrite = Are you sure you want to overwrite\nthis save slot?
|
save.overwrite = Are you sure you want to overwrite\nthis save slot?
|
||||||
overwrite = Overwrite
|
overwrite = Overwrite
|
||||||
save.none = No saves found!
|
save.none = No saves found!
|
||||||
saveload = Tallennetaan...
|
saveload = Tallennetaan...
|
||||||
savefail = Failed to save game!
|
savefail = Pelin tallentaminen epäonnistui!
|
||||||
save.delete.confirm = Are you sure you want to delete this save?
|
save.delete.confirm = Are you sure you want to delete this save?
|
||||||
save.delete = Delete
|
save.delete = Delete
|
||||||
save.export = Export Save
|
save.export = Export Save
|
||||||
save.import.invalid = [accent]This save is invalid!
|
save.import.invalid = [accent]This save is invalid!
|
||||||
save.import.fail = [crimson]Failed to import save: [accent]{0}
|
save.import.fail = [crimson]Failed to import save: [accent]{0}
|
||||||
save.export.fail = [crimson]Failed to export save: [accent]{0}
|
save.export.fail = [crimson]Failed to export save: [accent]{0}
|
||||||
save.import = Tuo Tallennus
|
save.import = Tuo tallennus
|
||||||
save.newslot = Tallennuksen nimi:
|
save.newslot = Tallennuksen nimi:
|
||||||
save.rename = Nimeä uudelleen
|
save.rename = Nimeä uudelleen
|
||||||
save.rename.text = Uusi nimi:
|
save.rename.text = Uusi nimi:
|
||||||
selectslot = Valitse tallennus.
|
selectslot = Valitse tallennus.
|
||||||
slot = [accent]Paikka {0}
|
slot = [accent]Paikka {0}
|
||||||
editmessage = Edit Message
|
editmessage = Muokkaa viestiä
|
||||||
save.corrupted = [accent]Tallennustiedosto korruptoitunut tai viallinen!\nJos olet päivittänyt juuri pelisi, tämä on todennäköisesti muutos tallennusmuodossa [scarlet]eikä[] virhe.
|
save.corrupted = [accent]Tallennustiedosto korruptoitunut tai viallinen!\nJos olet päivittänyt juuri pelisi, tämä on todennäköisesti muutos tallennusmuodossa [scarlet]eikä[] virhe.
|
||||||
empty = <tyhjä>
|
empty = <tyhjä>
|
||||||
on = Päällä
|
on = Päällä
|
||||||
off = Pois
|
off = Pois
|
||||||
save.autosave = Automaattitallennus: {0}
|
save.autosave = Automaattitallennus: {0}
|
||||||
save.map = Kartta: {0}
|
save.map = Kartta: {0}
|
||||||
save.wave = Aalto {0}
|
save.wave = Taso {0}
|
||||||
save.mode = Gamemode: {0}
|
save.mode = Gamemode: {0}
|
||||||
save.date = Viimeksi tallennettu: {0}
|
save.date = Viimeksi tallennettu: {0}
|
||||||
save.playtime = Peliaika: {0}
|
save.playtime = Peliaika: {0}
|
||||||
@@ -308,15 +308,15 @@ editor.waves = Tasot:
|
|||||||
editor.rules = Säännöt:
|
editor.rules = Säännöt:
|
||||||
editor.generation = Generaatio:
|
editor.generation = Generaatio:
|
||||||
editor.ingame = Muokka pelin sisällä
|
editor.ingame = Muokka pelin sisällä
|
||||||
editor.publish.workshop = Julkaise työpajaan
|
editor.publish.workshop = Julkaise Workshoppiin
|
||||||
editor.newmap = Uusi kartta
|
editor.newmap = Uusi kartta
|
||||||
workshop = Työpaja
|
workshop = Workshop
|
||||||
waves.title = Tasot
|
waves.title = Tasot
|
||||||
waves.remove = Poista
|
waves.remove = Poista
|
||||||
waves.never = <ei koskaan>
|
waves.never = <ei koskaan>
|
||||||
waves.every = every
|
waves.every = every
|
||||||
waves.waves = wave(s)
|
waves.waves = wave(s)
|
||||||
waves.perspawn = per spawni
|
waves.perspawn = per syntymispiste
|
||||||
waves.to = to
|
waves.to = to
|
||||||
waves.boss = Pomo
|
waves.boss = Pomo
|
||||||
waves.preview = Esikatselu
|
waves.preview = Esikatselu
|
||||||
@@ -324,13 +324,13 @@ waves.edit = Muokkaa...
|
|||||||
waves.copy = Kopioi leikepöydälle
|
waves.copy = Kopioi leikepöydälle
|
||||||
waves.load = Lataa leikepöydältä
|
waves.load = Lataa leikepöydältä
|
||||||
waves.invalid = Invalid waves in clipboard.
|
waves.invalid = Invalid waves in clipboard.
|
||||||
waves.copied = Aallot kopioitu.
|
waves.copied = Tasot kopioitu.
|
||||||
waves.none = No enemies defined.\nNote that empty wave layouts will automatically be replaced with the default layout.
|
waves.none = No enemies defined.\nNote that empty wave layouts will automatically be replaced with the default layout.
|
||||||
editor.default = [lightgray]<Default>
|
editor.default = [lightgray]<Default>
|
||||||
details = Yksityiskohdat...
|
details = Yksityiskohdat...
|
||||||
edit = Muokkaa...
|
edit = Muokkaa...
|
||||||
editor.name = Nimi:
|
editor.name = Nimi:
|
||||||
editor.spawn = Spawni yksikkö
|
editor.spawn = Luo yksikkö
|
||||||
editor.removeunit = Poista yksikkö
|
editor.removeunit = Poista yksikkö
|
||||||
editor.teams = Joukkueet
|
editor.teams = Joukkueet
|
||||||
editor.errorload = Virhe ladattaessa tiedostoa:\n[accent]{0}
|
editor.errorload = Virhe ladattaessa tiedostoa:\n[accent]{0}
|
||||||
@@ -431,8 +431,8 @@ fps = FPS: {0}
|
|||||||
ping = Ping: {0}ms
|
ping = Ping: {0}ms
|
||||||
language.restart = Please restart your game for the language settings to take effect.
|
language.restart = Please restart your game for the language settings to take effect.
|
||||||
settings = Asetukset
|
settings = Asetukset
|
||||||
tutorial = Tutoriaali
|
tutorial = Perehdytys
|
||||||
tutorial.retake = Uusita Tutoriaali
|
tutorial.retake = Pelaa perehdytys uudelleen
|
||||||
editor = Editori
|
editor = Editori
|
||||||
mapeditor = Kartan Editori
|
mapeditor = Kartan Editori
|
||||||
|
|
||||||
@@ -449,8 +449,8 @@ launch = < LAUNCH >
|
|||||||
launch.title = Onnistunut laukaisu
|
launch.title = Onnistunut laukaisu
|
||||||
launch.next = [lightgray]next opportunity at wave {0}
|
launch.next = [lightgray]next opportunity at wave {0}
|
||||||
launch.unable2 = [scarlet]Unable to LAUNCH.[]
|
launch.unable2 = [scarlet]Unable to LAUNCH.[]
|
||||||
launch.confirm = Tämä laukaisee kaikki resourssit ytimestäsi.\nEt voi enää palata takaisin.
|
launch.confirm = Tämä laukaisee kaikki resurssit ytimestäsi.\nEt voi enää palata takaisin.
|
||||||
launch.skip.confirm = Jos ohitat nyt, voit laukaista vasta myöhemmissä tasoissa.
|
launch.skip.confirm = Jos ohitat nyt, voit laukaista vasta myöhemmillä tasoilla.
|
||||||
uncover = Paljasta
|
uncover = Paljasta
|
||||||
configure = Configure Loadout
|
configure = Configure Loadout
|
||||||
bannedblocks = Kielletyt Palikat
|
bannedblocks = Kielletyt Palikat
|
||||||
@@ -530,60 +530,60 @@ error.title = [crimson]An error has occured
|
|||||||
error.crashtitle = An error has occured
|
error.crashtitle = An error has occured
|
||||||
blocks.input = Sisääntulo
|
blocks.input = Sisääntulo
|
||||||
blocks.output = Ulostulo
|
blocks.output = Ulostulo
|
||||||
blocks.booster = Boostaa
|
blocks.booster = Tehostaja
|
||||||
block.unknown = [lightgray]???
|
block.unknown = [lightgray]???
|
||||||
blocks.powercapacity = Energiakapasiteetti
|
blocks.powercapacity = Energiakapasiteetti
|
||||||
blocks.powershot = Energiaa/Ammus
|
blocks.powershot = Energiaa/Ammus
|
||||||
blocks.damage = Vahinko
|
blocks.damage = Vahinko
|
||||||
blocks.targetsair = Hyökkää Ilmaan
|
blocks.targetsair = Hyökkää ilmaan
|
||||||
blocks.targetsground = Hyökkää Maahan
|
blocks.targetsground = Hyökkää maahan
|
||||||
blocks.itemsmoved = Liikkumisnopeus
|
blocks.itemsmoved = Liikkumisnopeus
|
||||||
blocks.launchtime = Aika Laukaisujen Välillä
|
blocks.launchtime = Aika laukaisujen välillä
|
||||||
blocks.shootrange = Kantama
|
blocks.shootrange = Kantama
|
||||||
blocks.size = Koko
|
blocks.size = Koko
|
||||||
blocks.liquidcapacity = Neste Kapasiteetti
|
blocks.liquidcapacity = Nestekapasiteetti
|
||||||
blocks.powerrange = Energia Kantama
|
blocks.powerrange = Energiakantama
|
||||||
blocks.powerconnections = Maksimi konnektio määrä
|
blocks.powerconnections = Maksimimäärä yhdistyksiä
|
||||||
blocks.poweruse = Energian Käyttö
|
blocks.poweruse = Energian käyttö
|
||||||
blocks.powerdamage = Energia/Vahinko
|
blocks.powerdamage = Energia/Vahinko
|
||||||
blocks.itemcapacity = Tavara Kapasiteetti
|
blocks.itemcapacity = Tavarakapasiteetti
|
||||||
blocks.basepowergeneration = Kanta Enegian Generointi
|
blocks.basepowergeneration = Perus energiantuotto
|
||||||
blocks.productiontime = Produktion Aika
|
blocks.productiontime = Tuotantoaika
|
||||||
blocks.repairtime = Kokonaisen Palikan Korjaus Aika
|
blocks.repairtime = Kokonaisen palikan korjausaika
|
||||||
blocks.speedincrease = Nopeuden Kasvu
|
blocks.speedincrease = Nopeuden kasvu
|
||||||
blocks.range = Etäisyys
|
blocks.range = Etäisyys
|
||||||
blocks.drilltier = Porattavat
|
blocks.drilltier = Porattavat
|
||||||
blocks.drillspeed = Kanta Poran Nopeus
|
blocks.drillspeed = Kanta Poran Nopeus
|
||||||
blocks.boosteffect = Boostaamisen Vaikutus
|
blocks.boosteffect = Tehostamisem vaikutus
|
||||||
blocks.maxunits = Maksimi Määrä Yksikköjä
|
blocks.maxunits = Maksimimäärä yksikköjä
|
||||||
blocks.health = Elämäpisteet
|
blocks.health = Elämäpisteet
|
||||||
blocks.buildtime = Rakentamisen Aika
|
blocks.buildtime = Rakentamisaika
|
||||||
blocks.buildcost = Rakentamisen Hinta
|
blocks.buildcost = Rakentamishinta
|
||||||
blocks.inaccuracy = Epätarkkuus
|
blocks.inaccuracy = Epätarkkuus
|
||||||
blocks.shots = Ammusta
|
blocks.shots = Ammusta
|
||||||
blocks.reload = Ammusta/Sekunnissa
|
blocks.reload = Ammusta/sekunnissa
|
||||||
blocks.ammo = Ammus
|
blocks.ammo = Ammus
|
||||||
|
|
||||||
bar.drilltierreq = Parempi Pora Vaadittu
|
bar.drilltierreq = Parempi pora vaadittu
|
||||||
bar.drillspeed = Poran Nopeus: {0}/s
|
bar.drillspeed = Poran nopeus: {0}/s
|
||||||
bar.pumpspeed = Pumpun Nopeus: {0}/s
|
bar.pumpspeed = Pumpun nopeus: {0}/s
|
||||||
bar.efficiency = Tehokkuus: {0}%
|
bar.efficiency = Tehokkuus: {0}%
|
||||||
bar.powerbalance = Energia: {0}/s
|
bar.powerbalance = Energia: {0}/s
|
||||||
bar.powerstored = Säilöttynä: {0}/{1}
|
bar.powerstored = Säilöttynä: {0}/{1}
|
||||||
bar.poweramount = Energia: {0}
|
bar.poweramount = Energia: {0}
|
||||||
bar.poweroutput = Energian Ulostulo: {0}
|
bar.poweroutput = Energiantuotto: {0}
|
||||||
bar.items = Tavaroita: {0}
|
bar.items = Tavaroita: {0}
|
||||||
bar.capacity = Kapasiteetti: {0}
|
bar.capacity = Kapasiteetti: {0}
|
||||||
bar.liquid = Neste
|
bar.liquid = Neste
|
||||||
bar.heat = Lämpö
|
bar.heat = Lämpö
|
||||||
bar.power = Energia
|
bar.power = Energia
|
||||||
bar.progress = Rakennuksen Edistys
|
bar.progress = Rakennuksen edistys
|
||||||
bar.spawned = Yksikköjä: {0}/{1}
|
bar.spawned = Yksikköjä: {0}/{1}
|
||||||
bar.input = Sisääntulo
|
bar.input = Sisääntulo
|
||||||
bar.output = Ulostulo
|
bar.output = Ulostulo
|
||||||
|
|
||||||
bullet.damage = [stat]{0}[lightgray] Vahinko
|
bullet.damage = [stat]{0}[lightgray] Vahinko
|
||||||
bullet.splashdamage = [stat]{0}[lightgray] Alue vahinko ~[stat] {1}[lightgray] palikkaa
|
bullet.splashdamage = [stat]{0}[lightgray] Aluevahinko ~[stat] {1}[lightgray] palikkaa
|
||||||
bullet.incendiary = [stat]sytyttävä
|
bullet.incendiary = [stat]sytyttävä
|
||||||
bullet.homing = [stat]itseohjautuva
|
bullet.homing = [stat]itseohjautuva
|
||||||
bullet.shock = [stat]shokki
|
bullet.shock = [stat]shokki
|
||||||
@@ -591,15 +591,15 @@ bullet.frag = [stat]sirpaloituva
|
|||||||
bullet.knockback = [stat]{0}[lightgray] knockback
|
bullet.knockback = [stat]{0}[lightgray] knockback
|
||||||
bullet.freezing = [stat]jäädyttävä
|
bullet.freezing = [stat]jäädyttävä
|
||||||
bullet.tarred = [stat]tervattu
|
bullet.tarred = [stat]tervattu
|
||||||
bullet.multiplier = [stat]{0}[lightgray]x ammusten multiplikaatio
|
bullet.multiplier = [stat]{0}[lightgray]x ammusten kerroin
|
||||||
bullet.reload = [stat]{0}[lightgray]x ammunta nopeus
|
bullet.reload = [stat]{0}[lightgray]x ampumisnopeus
|
||||||
|
|
||||||
unit.blocks = palikat
|
unit.blocks = palikat
|
||||||
unit.powersecond = energia yksikköä/sekunti
|
unit.powersecond = energiayksikköä/sekunti
|
||||||
unit.liquidsecond = neste yksikköä/sekunti
|
unit.liquidsecond = nesteyksikköä/sekunti
|
||||||
unit.itemssecond = esinettä/sekunti
|
unit.itemssecond = esinettä/sekunti
|
||||||
unit.liquidunits = neste yksikköä
|
unit.liquidunits = nesteyksikköä
|
||||||
unit.powerunits = energia yksikköä
|
unit.powerunits = energiayksikköä
|
||||||
unit.degrees = astetta
|
unit.degrees = astetta
|
||||||
unit.seconds = sekunttia
|
unit.seconds = sekunttia
|
||||||
unit.persecond = /s
|
unit.persecond = /s
|
||||||
@@ -614,25 +614,25 @@ category.liquids = Neste
|
|||||||
category.items = Tavarat
|
category.items = Tavarat
|
||||||
category.crafting = Ulos/Sisääntulo
|
category.crafting = Ulos/Sisääntulo
|
||||||
category.shooting = Ammunta
|
category.shooting = Ammunta
|
||||||
category.optional = Mahdolliset Lumoukset
|
category.optional = Mahdolliset parannukset
|
||||||
setting.landscape.name = Lukitse tasavaakaan
|
setting.landscape.name = Lukitse tasavaakaan
|
||||||
setting.shadows.name = Varjot
|
setting.shadows.name = Varjot
|
||||||
setting.blockreplace.name = Automaattisia Palikka Suosituksia
|
setting.blockreplace.name = Automaattisia Palikka Suosituksia
|
||||||
setting.linear.name = Lineararien Filteeraus
|
setting.linear.name = Lineaarinen suodatus
|
||||||
setting.hints.name = Vihjeet
|
setting.hints.name = Vihjeet
|
||||||
setting.buildautopause.name = Automaattisest Pysäytä Rakentaessa
|
setting.buildautopause.name = Automaattisest Pysäytä Rakentaessa
|
||||||
setting.animatedwater.name = Animoitu Vesi
|
setting.animatedwater.name = Animoitu vesi
|
||||||
setting.animatedshields.name = Animoitu Kilpi
|
setting.animatedshields.name = Animoidut kilvet
|
||||||
setting.antialias.name = Antialiaasi[lightgray] (vaatii uudelleenkäynnistyksen)[]
|
setting.antialias.name = Antialiaasi[lightgray] (vaatii uudelleenkäynnistyksen)[]
|
||||||
setting.indicators.name = Vihollis/Puolulais Indikaattorit
|
setting.indicators.name = Vihollis/Puolulais Indikaattorit
|
||||||
setting.autotarget.name = Automaatinen Tähtäys
|
setting.autotarget.name = Automaatinen Tähtäys
|
||||||
setting.keyboard.name = Hiiri+Näppäimistö Kontrollit
|
setting.keyboard.name = Hiiri+Näppäimistö -ohjaus
|
||||||
setting.touchscreen.name = Kosketusnäyttö kontrollit
|
setting.touchscreen.name = Kosketusnäyttöohjaus
|
||||||
setting.fpscap.name = Maksimi FPS
|
setting.fpscap.name = Maksimi FPS
|
||||||
setting.fpscap.none = Ei Mitään
|
setting.fpscap.none = Ei Mitään
|
||||||
setting.fpscap.text = {0} FPS
|
setting.fpscap.text = {0} FPS
|
||||||
setting.uiscale.name = UI Koko[lightgray] (vaatii uudelleenkäynnistyksen)[]
|
setting.uiscale.name = UI Koko[lightgray] (vaatii uudelleenkäynnistyksen)[]
|
||||||
setting.swapdiagonal.name = Aina Vino Korvaus
|
setting.swapdiagonal.name = Aina vino korvaus
|
||||||
setting.difficulty.training = Treeni
|
setting.difficulty.training = Treeni
|
||||||
setting.difficulty.easy = Helppo
|
setting.difficulty.easy = Helppo
|
||||||
setting.difficulty.normal = Keskivaikea
|
setting.difficulty.normal = Keskivaikea
|
||||||
@@ -641,10 +641,10 @@ setting.difficulty.insane = Järjetön
|
|||||||
setting.difficulty.name = Vaikeustaso:
|
setting.difficulty.name = Vaikeustaso:
|
||||||
setting.screenshake.name = Näytön keikkuminen
|
setting.screenshake.name = Näytön keikkuminen
|
||||||
setting.effects.name = Naytön Efektit
|
setting.effects.name = Naytön Efektit
|
||||||
setting.destroyedblocks.name = Näytä Tuhoutuneet Palikat
|
setting.destroyedblocks.name = Näytä tuhoutuneet palikat
|
||||||
setting.conveyorpathfinding.name = Conveyor Placement Pathfinding
|
setting.conveyorpathfinding.name = Conveyor Placement Pathfinding
|
||||||
setting.coreselect.name = Allow Schematic Cores
|
setting.coreselect.name = Allow Schematic Cores
|
||||||
setting.sensitivity.name = Kontrollin Herkkyys
|
setting.sensitivity.name = Ohjauksen herkkyys
|
||||||
setting.saveinterval.name = Tallennuksen Aikaväli
|
setting.saveinterval.name = Tallennuksen Aikaväli
|
||||||
setting.seconds = {0} Sekunttia
|
setting.seconds = {0} Sekunttia
|
||||||
setting.blockselecttimeout.name = Block Select Timeout
|
setting.blockselecttimeout.name = Block Select Timeout
|
||||||
@@ -652,35 +652,35 @@ setting.milliseconds = {0} millisekunttia
|
|||||||
setting.fullscreen.name = Fullscreen
|
setting.fullscreen.name = Fullscreen
|
||||||
setting.borderlesswindow.name = Borderless Window[lightgray] (vaatii uudelleenkäynnistyksen)
|
setting.borderlesswindow.name = Borderless Window[lightgray] (vaatii uudelleenkäynnistyksen)
|
||||||
setting.fps.name = Näytä FPS
|
setting.fps.name = Näytä FPS
|
||||||
setting.blockselectkeys.name = Bäytä Palikan Selektio Kontrollit
|
setting.blockselectkeys.name = Näytä palikan valintaohjaimet
|
||||||
setting.vsync.name = VSync
|
setting.vsync.name = VSync
|
||||||
setting.pixelate.name = Pixeloi[lightgray] (poistaa animaation käytöstä)
|
setting.pixelate.name = Pixeloi[lightgray] (poistaa animaation käytöstä)
|
||||||
setting.minimap.name = Näytä Minimappi
|
setting.minimap.name = Näytä pienoiskartta
|
||||||
setting.position.name = Näytä pelaajan sijainti
|
setting.position.name = Näytä pelaajan sijainti
|
||||||
setting.musicvol.name = Musiikin Äänenvoimakkuus
|
setting.musicvol.name = Musiikin äänenvoimakkuus
|
||||||
setting.ambientvol.name = Tausta Äänet
|
setting.ambientvol.name = Taustaäänet
|
||||||
setting.mutemusic.name = Sulje Musiikki
|
setting.mutemusic.name = Mykistä musiikki
|
||||||
setting.sfxvol.name = SFX Volyymi
|
setting.sfxvol.name = SFX-voimakkuus
|
||||||
setting.mutesound.name = Sulje Äänet
|
setting.mutesound.name = Mykistä äänet
|
||||||
setting.crashreport.name = Send Anonymous Crash Reports
|
setting.crashreport.name = Send Anonymous Crash Reports
|
||||||
setting.savecreate.name = Luo Automaattisesti Tallennukset
|
setting.savecreate.name = Luo tallenuksia automaattisesti
|
||||||
setting.publichost.name = Public Game Visibility
|
setting.publichost.name = Public Game Visibility
|
||||||
setting.chatopacity.name = Chatin Läpinäkymättömyys
|
setting.chatopacity.name = Keskustelun läpinäkymättömyys
|
||||||
setting.lasersopacity.name = Energia Laaserin Läpinäkymattämyys
|
setting.lasersopacity.name = Energia laserin läpinäkymättömyys
|
||||||
setting.playerchat.name = Näytä Pelinsisäinen Keskustelu
|
setting.playerchat.name = Näytä pelinsisäinen keskustelu
|
||||||
public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility.
|
public.confirm = Do you want to make your game public?\n[accent]Anyone will be able to join your games.\n[lightgray]This can be changed later in Settings->Game->Public Game Visibility.
|
||||||
public.beta = Note that beta versions of the game cannot make public lobbies.
|
public.beta = Note that beta versions of the game cannot make public lobbies.
|
||||||
uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] seconds...
|
uiscale.reset = UI scale has been changed.\nPress "OK" to confirm this scale.\n[scarlet]Reverting and exiting in[accent] {0}[] seconds...
|
||||||
uiscale.cancel = Peruuta ja Poistu
|
uiscale.cancel = Peruuta ja poistu
|
||||||
setting.bloom.name = Bloom
|
setting.bloom.name = Bloom
|
||||||
keybind.title = Rebind Keys
|
keybind.title = Rebind Keys
|
||||||
keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported.
|
keybinds.mobile = [scarlet]Most keybinds here are not functional on mobile. Only basic movement is supported.
|
||||||
category.general.name = General
|
category.general.name = General
|
||||||
category.view.name = View
|
category.view.name = View
|
||||||
category.multiplayer.name = Multiplayer
|
category.multiplayer.name = Moninpeli
|
||||||
command.attack = Hyökkää
|
command.attack = Hyökkäys
|
||||||
command.rally = Kutsu Koolle
|
command.rally = Kokoontuminen
|
||||||
command.retreat = Palaa
|
command.retreat = Perääntyminen
|
||||||
placement.blockselectkeys = \n[lightgray]Key: [{0},
|
placement.blockselectkeys = \n[lightgray]Key: [{0},
|
||||||
keybind.clear_building.name = Clear Building
|
keybind.clear_building.name = Clear Building
|
||||||
keybind.press = Press a key...
|
keybind.press = Press a key...
|
||||||
@@ -711,7 +711,7 @@ keybind.block_select_07.name = Category/Block Select 7
|
|||||||
keybind.block_select_08.name = Category/Block Select 8
|
keybind.block_select_08.name = Category/Block Select 8
|
||||||
keybind.block_select_09.name = Category/Block Select 9
|
keybind.block_select_09.name = Category/Block Select 9
|
||||||
keybind.block_select_10.name = Category/Block Select 10
|
keybind.block_select_10.name = Category/Block Select 10
|
||||||
keybind.fullscreen.name = Vaihda Fullscreen
|
keybind.fullscreen.name = Vaihda kokonäyttötilaan
|
||||||
keybind.select.name = Select/Shoot
|
keybind.select.name = Select/Shoot
|
||||||
keybind.diagonal_placement.name = Diagonal Placement
|
keybind.diagonal_placement.name = Diagonal Placement
|
||||||
keybind.pick.name = Pick Block
|
keybind.pick.name = Pick Block
|
||||||
@@ -722,8 +722,8 @@ keybind.zoom.name = Zoom
|
|||||||
keybind.menu.name = Menu
|
keybind.menu.name = Menu
|
||||||
keybind.pause.name = Pause
|
keybind.pause.name = Pause
|
||||||
keybind.pause_building.name = Pause/Resume Building
|
keybind.pause_building.name = Pause/Resume Building
|
||||||
keybind.minimap.name = Minimappi
|
keybind.minimap.name = Pienoiskartta
|
||||||
keybind.chat.name = Chatti
|
keybind.chat.name = Keskustelu
|
||||||
keybind.player_list.name = Player list
|
keybind.player_list.name = Player list
|
||||||
keybind.console.name = Console
|
keybind.console.name = Console
|
||||||
keybind.rotate.name = Rotate
|
keybind.rotate.name = Rotate
|
||||||
@@ -736,9 +736,9 @@ keybind.drop_unit.name = Drop Unit
|
|||||||
keybind.zoom_minimap.name = Zoom minimap
|
keybind.zoom_minimap.name = Zoom minimap
|
||||||
mode.help.title = Description of modes
|
mode.help.title = Description of modes
|
||||||
mode.survival.name = Survival
|
mode.survival.name = Survival
|
||||||
mode.survival.description = Normaali moodi. Rajoitettu määrä resursseja ja tasoilla on aika.\n[gray]Vaatii vihollis spawneja kartassa.
|
mode.survival.description = Normaali tila. Rajoitettu määrä resursseja ja tasoilla on aika.\n[gray]Vaatii vihollisten syntymispisteen kartassa.
|
||||||
mode.sandbox.name = Hiekkalaatikko
|
mode.sandbox.name = Hiekkalaatikko
|
||||||
mode.sandbox.description = Ikuisesti resursseja ja tasoilla ei ole aikaa.
|
mode.sandbox.description = Ikuisesti resursseja ja tasoja ei ole ajastettu.
|
||||||
mode.editor.name = Editori
|
mode.editor.name = Editori
|
||||||
mode.pvp.name = PvP
|
mode.pvp.name = PvP
|
||||||
mode.pvp.description = Fight against other players locally.\n[gray]Requires at least 2 differently-colored cores in the map to play.
|
mode.pvp.description = Fight against other players locally.\n[gray]Requires at least 2 differently-colored cores in the map to play.
|
||||||
@@ -746,9 +746,9 @@ mode.attack.name = Attack
|
|||||||
mode.attack.description = Destroy the enemy's base. No waves.\n[gray]Requires a red core in the map to play.
|
mode.attack.description = Destroy the enemy's base. No waves.\n[gray]Requires a red core in the map to play.
|
||||||
mode.custom = Custom Rules
|
mode.custom = Custom Rules
|
||||||
|
|
||||||
rules.infiniteresources = Ikuisesti Resursseja
|
rules.infiniteresources = Ikuiset resurssit
|
||||||
rules.reactorexplosions = Reaktori Räjähdykset
|
rules.reactorexplosions = Reaktorien räjähtäminen
|
||||||
rules.wavetimer = Tasojen Aikaraja
|
rules.wavetimer = Tasojen aikaraja
|
||||||
rules.waves = Tasot
|
rules.waves = Tasot
|
||||||
rules.attack = Attack Mode
|
rules.attack = Attack Mode
|
||||||
rules.enemyCheat = Infinite AI (Red Team) Resources
|
rules.enemyCheat = Infinite AI (Red Team) Resources
|
||||||
@@ -791,11 +791,11 @@ item.titanium.name = Titaani
|
|||||||
item.thorium.name = Torium
|
item.thorium.name = Torium
|
||||||
item.silicon.name = Pii
|
item.silicon.name = Pii
|
||||||
item.plastanium.name = Plastaniumi
|
item.plastanium.name = Plastaniumi
|
||||||
item.phase-fabric.name = Kiihde Kuitu
|
item.phase-fabric.name = Kiihdekuitu
|
||||||
item.surge-alloy.name = Taite Seos
|
item.surge-alloy.name = Taiteseos
|
||||||
item.spore-pod.name = Itiö Palko
|
item.spore-pod.name = Itiöpalko
|
||||||
item.sand.name = Hiekka
|
item.sand.name = Hiekka
|
||||||
item.blast-compound.name = Räjähde Yhdiste
|
item.blast-compound.name = Räjähdeyhdiste
|
||||||
item.pyratite.name = Pyratiitti
|
item.pyratite.name = Pyratiitti
|
||||||
item.metaglass.name = Metallilasi
|
item.metaglass.name = Metallilasi
|
||||||
item.scrap.name = Romu
|
item.scrap.name = Romu
|
||||||
@@ -824,7 +824,7 @@ mech.trident-ship.name = Trident
|
|||||||
mech.trident-ship.weapon = Bomb Bay
|
mech.trident-ship.weapon = Bomb Bay
|
||||||
mech.glaive-ship.name = Glaive
|
mech.glaive-ship.name = Glaive
|
||||||
mech.glaive-ship.weapon = Flame Repeater
|
mech.glaive-ship.weapon = Flame Repeater
|
||||||
item.corestorable = [lightgray]Säilöttävissä Ytimeen: {0}
|
item.corestorable = [lightgray]Säilöttävissä ytimeen: {0}
|
||||||
item.explosiveness = [lightgray]Räjädysmäisyys: {0}%
|
item.explosiveness = [lightgray]Räjädysmäisyys: {0}%
|
||||||
item.flammability = [lightgray]Flammability: {0}%
|
item.flammability = [lightgray]Flammability: {0}%
|
||||||
item.radioactivity = [lightgray]Radioactivity: {0}%
|
item.radioactivity = [lightgray]Radioactivity: {0}%
|
||||||
@@ -832,12 +832,12 @@ unit.health = [lightgray]Elämäpisteet: {0}
|
|||||||
unit.speed = [lightgray]Nopeus: {0}
|
unit.speed = [lightgray]Nopeus: {0}
|
||||||
mech.weapon = [lightgray]Ase: {0}
|
mech.weapon = [lightgray]Ase: {0}
|
||||||
mech.health = [lightgray]Elämäpisteet: {0}
|
mech.health = [lightgray]Elämäpisteet: {0}
|
||||||
mech.itemcapacity = [lightgray]Tavara Kapasiteetti: {0}
|
mech.itemcapacity = [lightgray]Tavarakapasiteetti: {0}
|
||||||
mech.minespeed = [lightgray]Louhimis Nopeus: {0}%
|
mech.minespeed = [lightgray]Louhimisnopeus: {0}%
|
||||||
mech.minepower = [lightgray]Louhimis Voima: {0}
|
mech.minepower = [lightgray]Louhimisvoima: {0}
|
||||||
mech.ability = [lightgray]Spesiaalikyky: {0}
|
mech.ability = [lightgray]Erityiskyky: {0}
|
||||||
mech.buildspeed = [lightgray]Rakennus Nopeus: {0}%
|
mech.buildspeed = [lightgray]Rakentamisnopeus: {0}%
|
||||||
liquid.heatcapacity = [lightgray]Lämpö Kapasiteetti: {0}
|
liquid.heatcapacity = [lightgray]Lämpökapasiteetti: {0}
|
||||||
liquid.viscosity = [lightgray]Tahmeus: {0}
|
liquid.viscosity = [lightgray]Tahmeus: {0}
|
||||||
liquid.temperature = [lightgray]Lämpö: {0}
|
liquid.temperature = [lightgray]Lämpö: {0}
|
||||||
|
|
||||||
@@ -865,21 +865,21 @@ block.scrap-wall-huge.name = Huge Scrap Wall
|
|||||||
block.scrap-wall-gigantic.name = Gigantic Scrap Wall
|
block.scrap-wall-gigantic.name = Gigantic Scrap Wall
|
||||||
block.thruster.name = Thruster
|
block.thruster.name = Thruster
|
||||||
block.kiln.name = Kiln
|
block.kiln.name = Kiln
|
||||||
block.graphite-press.name = Grafiitti Puristin
|
block.graphite-press.name = Grafiittipuristin
|
||||||
block.multi-press.name = Multi-Puristin
|
block.multi-press.name = Monipuristin
|
||||||
block.constructing = {0} [lightgray](Rakentamassa)
|
block.constructing = {0} [lightgray](Rakentamassa)
|
||||||
block.spawn.name = Vihollis Spawni
|
block.spawn.name = Vihollisten syntymispiste
|
||||||
block.core-shard.name = Ydin: Siru
|
block.core-shard.name = Ydin: Siru
|
||||||
block.core-foundation.name = Ydin: Pohjaus
|
block.core-foundation.name = Ydin: Pohjaus
|
||||||
block.core-nucleus.name = Ydin: Tuma
|
block.core-nucleus.name = Ydin: Tuma
|
||||||
block.deepwater.name = Syvä Vesi
|
block.deepwater.name = Syvä vesi
|
||||||
block.water.name = Vesi
|
block.water.name = Vesi
|
||||||
block.tainted-water.name = Pilattu Vesi
|
block.tainted-water.name = Pilaantunut vesi
|
||||||
block.darksand-tainted-water.name = Dark Sand Tainted Water
|
block.darksand-tainted-water.name = Dark Sand Tainted Water
|
||||||
block.tar.name = Terva
|
block.tar.name = Terva
|
||||||
block.stone.name = Kivi
|
block.stone.name = Kivi
|
||||||
block.sand.name = Hiekka
|
block.sand.name = Hiekka
|
||||||
block.darksand.name = Tumma Hiekka
|
block.darksand.name = Tumma hiekka
|
||||||
block.ice.name = Jää
|
block.ice.name = Jää
|
||||||
block.snow.name = Lumi
|
block.snow.name = Lumi
|
||||||
block.craters.name = Kraatterit
|
block.craters.name = Kraatterit
|
||||||
|
|||||||
@@ -172,8 +172,13 @@ hosts.discovering.any = Ricerca partite
|
|||||||
server.refreshing = Aggiornamento del server
|
server.refreshing = Aggiornamento del server
|
||||||
hosts.none = [lightgray]Nessuna partita locale trovata!
|
hosts.none = [lightgray]Nessuna partita locale trovata!
|
||||||
host.invalid = [scarlet]Impossibile connettersi all'host.
|
host.invalid = [scarlet]Impossibile connettersi all'host.
|
||||||
trace = Traccia giocatore
|
|
||||||
trace.playername = Nome del giocatore: [accent]{0}
|
servers.local = Server Locali
|
||||||
|
servers.remote = Server Remoti
|
||||||
|
servers.global = Server Globali
|
||||||
|
|
||||||
|
trace = Traccia Giocatore
|
||||||
|
trace.playername = Nome del Giocatore: [accent]{0}
|
||||||
trace.ip = IP: [accent]{0}
|
trace.ip = IP: [accent]{0}
|
||||||
trace.id = ID univoco: [accent]{0}
|
trace.id = ID univoco: [accent]{0}
|
||||||
trace.mobile = Client Mobile: [accent]{0}
|
trace.mobile = Client Mobile: [accent]{0}
|
||||||
@@ -183,11 +188,11 @@ server.bans = Lista Bans
|
|||||||
server.bans.none = Nessun giocatore bandito trovato!
|
server.bans.none = Nessun giocatore bandito trovato!
|
||||||
server.admins = Amministratori
|
server.admins = Amministratori
|
||||||
server.admins.none = Nessun amministratore trovato!
|
server.admins.none = Nessun amministratore trovato!
|
||||||
server.add = Aggiungi server
|
server.add = Aggiungi Server
|
||||||
server.delete = Sei sicuro di voler eliminare questo server?
|
server.delete = Sei sicuro di voler eliminare questo server?
|
||||||
server.edit = Modifica server
|
server.edit = Modifica Server
|
||||||
server.outdated = [crimson]Server obsoleto![]
|
server.outdated = [crimson]Server Obsoleto![]
|
||||||
server.outdated.client = [crimson]Client obsoleto![]
|
server.outdated.client = [crimson]Client Obsoleto![]
|
||||||
server.version = [gray]v{0} {1}
|
server.version = [gray]v{0} {1}
|
||||||
server.custombuild = [yellow]Build Personalizzata
|
server.custombuild = [yellow]Build Personalizzata
|
||||||
confirmban = Sei sicuro di voler bandire questo giocatore?
|
confirmban = Sei sicuro di voler bandire questo giocatore?
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import mindustry.annotations.Annotations.*;
|
|||||||
import mindustry.core.GameState.*;
|
import mindustry.core.GameState.*;
|
||||||
import mindustry.ctype.*;
|
import mindustry.ctype.*;
|
||||||
import mindustry.entities.*;
|
import mindustry.entities.*;
|
||||||
|
import mindustry.entities.Effects.*;
|
||||||
import mindustry.entities.traits.BuilderTrait.*;
|
import mindustry.entities.traits.BuilderTrait.*;
|
||||||
import mindustry.entities.traits.*;
|
import mindustry.entities.traits.*;
|
||||||
import mindustry.entities.type.*;
|
import mindustry.entities.type.*;
|
||||||
@@ -261,36 +262,61 @@ public class NetClient implements ApplicationListener{
|
|||||||
ui.loadfrag.hide();
|
ui.loadfrag.hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Remote(variants = Variant.both, unreliable = true)
|
||||||
|
public static void setHudText(String message){
|
||||||
|
if(message == null) return;
|
||||||
|
|
||||||
|
ui.hudfrag.setHudText(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Remote(variants = Variant.both)
|
||||||
|
public static void hideHudText(){
|
||||||
|
ui.hudfrag.toggleHudText(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** TCP version */
|
||||||
|
@Remote(variants = Variant.both)
|
||||||
|
public static void setHudTextReliable(String message){
|
||||||
|
setHudText(message);
|
||||||
|
}
|
||||||
|
|
||||||
@Remote(variants = Variant.both)
|
@Remote(variants = Variant.both)
|
||||||
public static void onInfoMessage(String message){
|
public static void onInfoMessage(String message){
|
||||||
|
if(message == null) return;
|
||||||
|
|
||||||
ui.showText("", message);
|
ui.showText("", message);
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO these are commented out to enforce compatibility with 103! uncomment before 104 release
|
|
||||||
/*
|
|
||||||
|
|
||||||
@Remote(variants = Variant.both)
|
@Remote(variants = Variant.both)
|
||||||
public static void onInfoPopup(String message, float duration, int align, int top, int left, int bottom, int right){
|
public static void onInfoPopup(String message, float duration, int align, int top, int left, int bottom, int right){
|
||||||
|
if(message == null) return;
|
||||||
|
|
||||||
ui.showInfoPopup(message, duration, align, top, left, bottom, right);
|
ui.showInfoPopup(message, duration, align, top, left, bottom, right);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Remote(variants = Variant.both)
|
@Remote(variants = Variant.both)
|
||||||
public static void onLabel(String info, float duration, float worldx, float worldy){
|
public static void onLabel(String message, float duration, float worldx, float worldy){
|
||||||
ui.showLabel(info, duration, worldx, worldy);
|
if(message == null) return;
|
||||||
|
|
||||||
|
ui.showLabel(message, duration, worldx, worldy);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Remote(variants = Variant.both, unreliable = true)
|
@Remote(variants = Variant.both, unreliable = true)
|
||||||
public static void onEffect(Effect effect, float x, float y, float rotation, Color color){
|
public static void onEffect(Effect effect, float x, float y, float rotation, Color color){
|
||||||
|
if(effect == null) return;
|
||||||
|
|
||||||
Effects.effect(effect, color, x, y, rotation);
|
Effects.effect(effect, color, x, y, rotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Remote(variants = Variant.both)
|
@Remote(variants = Variant.both)
|
||||||
public static void onEffectReliable(Effect effect, float x, float y, float rotation, Color color){
|
public static void onEffectReliable(Effect effect, float x, float y, float rotation, Color color){
|
||||||
Effects.effect(effect, color, x, y, rotation);
|
onEffect(effect, x, y, rotation, color);
|
||||||
}*/
|
}
|
||||||
|
|
||||||
@Remote(variants = Variant.both)
|
@Remote(variants = Variant.both)
|
||||||
public static void onInfoToast(String message, float duration){
|
public static void onInfoToast(String message, float duration){
|
||||||
|
if(message == null) return;
|
||||||
|
|
||||||
ui.showInfoToast(message, duration);
|
ui.showInfoToast(message, duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import arc.struct.*;
|
|||||||
import arc.util.*;
|
import arc.util.*;
|
||||||
import arc.util.CommandHandler.*;
|
import arc.util.CommandHandler.*;
|
||||||
import arc.util.io.*;
|
import arc.util.io.*;
|
||||||
|
import arc.util.serialization.*;
|
||||||
import mindustry.annotations.Annotations.*;
|
import mindustry.annotations.Annotations.*;
|
||||||
import mindustry.content.*;
|
import mindustry.content.*;
|
||||||
import mindustry.core.GameState.*;
|
import mindustry.core.GameState.*;
|
||||||
@@ -15,7 +16,6 @@ import mindustry.entities.*;
|
|||||||
import mindustry.entities.traits.BuilderTrait.*;
|
import mindustry.entities.traits.BuilderTrait.*;
|
||||||
import mindustry.entities.traits.*;
|
import mindustry.entities.traits.*;
|
||||||
import mindustry.entities.type.*;
|
import mindustry.entities.type.*;
|
||||||
import mindustry.net.Administration;
|
|
||||||
import mindustry.game.EventType.*;
|
import mindustry.game.EventType.*;
|
||||||
import mindustry.game.*;
|
import mindustry.game.*;
|
||||||
import mindustry.game.Teams.*;
|
import mindustry.game.Teams.*;
|
||||||
@@ -93,6 +93,16 @@ public class NetServer implements ApplicationListener{
|
|||||||
}
|
}
|
||||||
|
|
||||||
String uuid = packet.uuid;
|
String uuid = packet.uuid;
|
||||||
|
byte[] buuid = Base64Coder.decode(uuid);
|
||||||
|
CRC32 crc = new CRC32();
|
||||||
|
crc.update(buuid, 0, 8);
|
||||||
|
ByteBuffer buff = ByteBuffer.allocate(8);
|
||||||
|
buff.put(buuid, 8, 8);
|
||||||
|
buff.position(0);
|
||||||
|
if(crc.getValue() != buff.getLong()){
|
||||||
|
con.kick(KickReason.clientOutdated);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(admins.isIPBanned(con.address) || admins.isSubnetBanned(con.address)) return;
|
if(admins.isIPBanned(con.address) || admins.isSubnetBanned(con.address)) return;
|
||||||
|
|
||||||
|
|||||||
@@ -100,6 +100,8 @@ public class MusicControl{
|
|||||||
/** Plays and fades in a music track. This must be called every frame.
|
/** Plays and fades in a music track. This must be called every frame.
|
||||||
* If something is already playing, fades out that track and fades in this new music.*/
|
* If something is already playing, fades out that track and fades in this new music.*/
|
||||||
private void play(@Nullable Music music){
|
private void play(@Nullable Music music){
|
||||||
|
if(!shouldPlay()) return;
|
||||||
|
|
||||||
//update volume of current track
|
//update volume of current track
|
||||||
if(current != null){
|
if(current != null){
|
||||||
current.setVolume(fade * Core.settings.getInt("musicvol") / 100f);
|
current.setVolume(fade * Core.settings.getInt("musicvol") / 100f);
|
||||||
@@ -143,7 +145,7 @@ public class MusicControl{
|
|||||||
|
|
||||||
/** Plays a music track once and only once. If something is already playing, does nothing.*/
|
/** Plays a music track once and only once. If something is already playing, does nothing.*/
|
||||||
private void playOnce(Music music){
|
private void playOnce(Music music){
|
||||||
if(current != null || music == null) return; //do not interrupt already-playing tracks
|
if(current != null || music == null || !shouldPlay()) return; //do not interrupt already-playing tracks
|
||||||
|
|
||||||
//save last random track played to prevent duplicates
|
//save last random track played to prevent duplicates
|
||||||
lastRandomPlayed = music;
|
lastRandomPlayed = music;
|
||||||
@@ -162,6 +164,10 @@ public class MusicControl{
|
|||||||
current.play();
|
current.play();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean shouldPlay(){
|
||||||
|
return Core.settings.getInt("musicvol") > 0;
|
||||||
|
}
|
||||||
|
|
||||||
/** Fades out the current track, unless it has already been silenced. */
|
/** Fades out the current track, unless it has already been silenced. */
|
||||||
private void silence(){
|
private void silence(){
|
||||||
play(null);
|
play(null);
|
||||||
|
|||||||
@@ -375,7 +375,7 @@ public class Schematics implements Loadable{
|
|||||||
/** Loads a schematic from base64. May throw an exception. */
|
/** Loads a schematic from base64. May throw an exception. */
|
||||||
public static Schematic readBase64(String schematic){
|
public static Schematic readBase64(String schematic){
|
||||||
try{
|
try{
|
||||||
return read(new ByteArrayInputStream(Base64Coder.decode(schematic)));
|
return read(new ByteArrayInputStream(Base64Coder.decode(schematic.trim())));
|
||||||
}catch(IOException e){
|
}catch(IOException e){
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -611,7 +611,7 @@ public class Mods implements Loadable{
|
|||||||
|
|
||||||
Fi metaf = zip.child("mod.json").exists() ? zip.child("mod.json") : zip.child("mod.hjson").exists() ? zip.child("mod.hjson") : zip.child("plugin.json");
|
Fi metaf = zip.child("mod.json").exists() ? zip.child("mod.json") : zip.child("mod.hjson").exists() ? zip.child("mod.hjson") : zip.child("plugin.json");
|
||||||
if(!metaf.exists()){
|
if(!metaf.exists()){
|
||||||
Log.warn("Mod {0} doesn't have a 'mod.json'/'plugin.json'/'mod.js' file, skipping.", sourceFile);
|
Log.warn("Mod {0} doesn't have a 'mod.json'/'mod.hjson'/'plugin.json' file, skipping.", sourceFile);
|
||||||
throw new IllegalArgumentException("No mod.json found.");
|
throw new IllegalArgumentException("No mod.json found.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ public class Packets{
|
|||||||
usid = TypeIO.readString(buffer);
|
usid = TypeIO.readString(buffer);
|
||||||
mobile = buffer.get() == 1;
|
mobile = buffer.get() == 1;
|
||||||
color = buffer.getInt();
|
color = buffer.getInt();
|
||||||
byte[] idbytes = new byte[8];
|
byte[] idbytes = new byte[16];
|
||||||
buffer.get(idbytes);
|
buffer.get(idbytes);
|
||||||
uuid = new String(Base64Coder.encode(idbytes));
|
uuid = new String(Base64Coder.encode(idbytes));
|
||||||
int totalMods = buffer.get();
|
int totalMods = buffer.get();
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ public class ItemsDisplay extends Table{
|
|||||||
t.setText(state.is(State.menu) ? "$launcheditems" : "$launchinfo");
|
t.setText(state.is(State.menu) ? "$launcheditems" : "$launchinfo");
|
||||||
t.setChecked(col.isCollapsed());
|
t.setChecked(col.isCollapsed());
|
||||||
((Image)t.getChildren().get(1)).setDrawable(col.isCollapsed() ? Icon.upOpen : Icon.downOpen);
|
((Image)t.getChildren().get(1)).setDrawable(col.isCollapsed() ? Icon.upOpen : Icon.downOpen);
|
||||||
}).padBottom(4).left().fillX().margin(12f);
|
}).padBottom(4).left().fillX().margin(12f).minWidth(200f);
|
||||||
c.row();
|
c.row();
|
||||||
c.add(col);
|
c.add(col);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -43,6 +43,9 @@ public class HudFragment extends Fragment{
|
|||||||
private boolean shown = true;
|
private boolean shown = true;
|
||||||
private float dsize = 47.2f;
|
private float dsize = 47.2f;
|
||||||
|
|
||||||
|
private String hudText = "";
|
||||||
|
private boolean showHudText;
|
||||||
|
|
||||||
private long lastToast;
|
private long lastToast;
|
||||||
|
|
||||||
public void build(Group parent){
|
public void build(Group parent){
|
||||||
@@ -341,6 +344,19 @@ public class HudFragment extends Fragment{
|
|||||||
t.add("$saveload").style(Styles.outlineLabel);
|
t.add("$saveload").style(Styles.outlineLabel);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
parent.fill(p -> {
|
||||||
|
p.top().table(Styles.black3, t -> t.margin(4).label(() -> hudText)
|
||||||
|
.style(Styles.outlineLabel)).padTop(10).visible(p.color.a >= 0.001f);
|
||||||
|
p.update(() -> {
|
||||||
|
p.color.a = Mathf.lerpDelta(p.color.a, Mathf.num(showHudText), 0.2f);
|
||||||
|
if(state.is(State.menu)){
|
||||||
|
p.color.a = 0f;
|
||||||
|
showHudText = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
p.touchable(Touchable.disabled);
|
||||||
|
});
|
||||||
|
|
||||||
blockfrag.build(parent);
|
blockfrag.build(parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -368,6 +384,15 @@ public class HudFragment extends Fragment{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setHudText(String text){
|
||||||
|
showHudText = true;
|
||||||
|
hudText = text;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void toggleHudText(boolean shown){
|
||||||
|
showHudText = shown;
|
||||||
|
}
|
||||||
|
|
||||||
private void scheduleToast(Runnable run){
|
private void scheduleToast(Runnable run){
|
||||||
long duration = (int)(3.5 * 1000);
|
long duration = (int)(3.5 * 1000);
|
||||||
long since = Time.timeSinceMillis(lastToast);
|
long since = Time.timeSinceMillis(lastToast);
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ public class Junction extends Block{
|
|||||||
super(name);
|
super(name);
|
||||||
update = true;
|
update = true;
|
||||||
solid = true;
|
solid = true;
|
||||||
instantTransfer = true;
|
|
||||||
group = BlockGroup.transportation;
|
group = BlockGroup.transportation;
|
||||||
unloadable = false;
|
unloadable = false;
|
||||||
entityType = JunctionEntity::new;
|
entityType = JunctionEntity::new;
|
||||||
|
|||||||
@@ -39,7 +39,6 @@ public class LiquidExtendingBridge extends ExtendingItemBridge{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(entity.uptime >= 0.5f){
|
if(entity.uptime >= 0.5f){
|
||||||
|
|
||||||
if(tryMoveLiquid(tile, other, false, entity.liquids.current()) > 0.1f){
|
if(tryMoveLiquid(tile, other, false, entity.liquids.current()) > 0.1f){
|
||||||
entity.cycleSpeed = Mathf.lerpDelta(entity.cycleSpeed, 4f, 0.05f);
|
entity.cycleSpeed = Mathf.lerpDelta(entity.cycleSpeed, 4f, 0.05f);
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ public class GenericCrafter extends Block{
|
|||||||
if(outputItem != null && tile.entity.items.get(outputItem.item) >= itemCapacity){
|
if(outputItem != null && tile.entity.items.get(outputItem.item) >= itemCapacity){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return outputLiquid == null || !(tile.entity.liquids.get(outputLiquid.liquid) >= liquidCapacity);
|
return outputLiquid == null || !(tile.entity.liquids.get(outputLiquid.liquid) >= liquidCapacity - 0.001f);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -319,7 +319,7 @@ public class DesktopLauncher extends ClientLauncher{
|
|||||||
try{
|
try{
|
||||||
Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();
|
Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();
|
||||||
NetworkInterface out;
|
NetworkInterface out;
|
||||||
for(out = e.nextElement(); (out.getHardwareAddress() == null || !validAddress(out.getHardwareAddress())) && e.hasMoreElements(); out = e.nextElement());
|
for(out = e.nextElement(); (out.getHardwareAddress() == null || out.isVirtual() || !validAddress(out.getHardwareAddress())) && e.hasMoreElements(); out = e.nextElement());
|
||||||
|
|
||||||
byte[] bytes = out.getHardwareAddress();
|
byte[] bytes = out.getHardwareAddress();
|
||||||
byte[] result = new byte[8];
|
byte[] result = new byte[8];
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
org.gradle.daemon=true
|
org.gradle.daemon=true
|
||||||
org.gradle.jvmargs=-Xms256m -Xmx1024m
|
org.gradle.jvmargs=-Xms256m -Xmx1024m
|
||||||
archash=a57e709113a364ff718821de4c40366e17353329
|
archash=292d60e7d6c2013334b0f4f30659e1d885f73cfe
|
||||||
|
|||||||
Reference in New Issue
Block a user