Merge branches 'master' and 'steam' of https://github.com/Anuken/Mindustry into steam
This commit is contained in:
@@ -1,8 +1,5 @@
|
|||||||
## Translating for Mindustry
|
## Translating for Mindustry
|
||||||
|
|
||||||
**DISCLAIMER:** *Currently, 4.0 is far from done, which means that things such as block names, descriptions, and core text will be changing often. If you begin translating now, you might have to re-do large chunks of the bundle before final release.*
|
|
||||||
|
|
||||||
|
|
||||||
To begin, log in to your GitHub account, or if you don't have one yet, create it [here](https://github.com/).
|
To begin, log in to your GitHub account, or if you don't have one yet, create it [here](https://github.com/).
|
||||||
|
|
||||||
Consult [this list](https://www.science.co.il/language/Locale-codes.php) to find the locale code for your language. Once you've found it,
|
Consult [this list](https://www.science.co.il/language/Locale-codes.php) to find the locale code for your language. Once you've found it,
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ public class AssetsAnnotationProcessor extends AbstractProcessor{
|
|||||||
}
|
}
|
||||||
|
|
||||||
load.addStatement(name + " = io.anuke.arc.Core.audio."+loadMethod+"(io.anuke.arc.Core.files.internal(io.anuke.arc.Core.app.getType() != io.anuke.arc.Application.ApplicationType.iOS ? $S : $S))",
|
load.addStatement(name + " = io.anuke.arc.Core.audio."+loadMethod+"(io.anuke.arc.Core.files.internal(io.anuke.arc.Core.app.getType() != io.anuke.arc.Application.ApplicationType.iOS ? $S : $S))",
|
||||||
path.substring(path.lastIndexOf("/") + 1) + "/" + fname, (path.substring(path.lastIndexOf("/") + 1) + "/" + fname).replace(".ogg", ".caf"));
|
path.substring(path.lastIndexOf("/") + 1) + "/" + fname, (path.substring(path.lastIndexOf("/") + 1) + "/" + fname).replace(".ogg", ".mp3"));
|
||||||
dispose.addStatement(name + ".dispose()");
|
dispose.addStatement(name + ".dispose()");
|
||||||
dispose.addStatement(name + " = null");
|
dispose.addStatement(name + " = null");
|
||||||
type.addField(FieldSpec.builder(ClassName.bestGuess(rtype), name, Modifier.STATIC, Modifier.PUBLIC).initializer("new io.anuke.arc.audio.mock.Mock" + rtype.substring(rtype.lastIndexOf(".") + 1)+ "()").build());
|
type.addField(FieldSpec.builder(ClassName.bestGuess(rtype), name, Modifier.STATIC, Modifier.PUBLIC).initializer("new io.anuke.arc.audio.mock.Mock" + rtype.substring(rtype.lastIndexOf(".") + 1)+ "()").build());
|
||||||
|
|||||||
@@ -371,7 +371,7 @@ zone.crags.name = Crags
|
|||||||
zone.fungalPass.name = Fungal Pass
|
zone.fungalPass.name = Fungal Pass
|
||||||
|
|
||||||
zone.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on.
|
zone.groundZero.description = The optimal location to begin once more. Low enemy threat. Few resources.\nGather as much lead and copper as possible.\nMove on.
|
||||||
zone.frozenForest.description = Even here, closer to mountains, the spores have spread. The fridgid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders.
|
zone.frozenForest.description = Even here, closer to mountains, the spores have spread. The frigid temperatures cannot contain them forever.\n\nBegin the venture into power. Build combustion generators. Learn to use menders.
|
||||||
zone.desertWastes.description = These wastes are vast, unpredictable, and criss-crossed with derelict sector structures.\nCoal is present in the region. Burn it for power, or synthesize graphite.\n\n[lightgray]This landing location cannot be guaranteed.
|
zone.desertWastes.description = These wastes are vast, unpredictable, and criss-crossed with derelict sector structures.\nCoal is present in the region. Burn it for power, or synthesize graphite.\n\n[lightgray]This landing location cannot be guaranteed.
|
||||||
zone.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing.
|
zone.saltFlats.description = On the outskirts of the desert lie the Salt Flats. Few resources can be found in this location.\n\nThe enemy has erected a resource storage complex here. Eradicate their core. Leave nothing standing.
|
||||||
zone.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills.
|
zone.craters.description = Water has accumulated in this crater, relic of the old wars. Reclaim the area. Collect sand. Smelt metaglass. Pump water to cool turrets and drills.
|
||||||
|
|||||||
Binary file not shown.
@@ -188,7 +188,8 @@
|
|||||||
up: button,
|
up: button,
|
||||||
over: button-over,
|
over: button-over,
|
||||||
imageDisabledColor: gray,
|
imageDisabledColor: gray,
|
||||||
imageUpColor: white
|
imageUpColor: white,
|
||||||
|
disabled: button-disabled
|
||||||
},
|
},
|
||||||
node: {
|
node: {
|
||||||
up: button-over,
|
up: button-over,
|
||||||
|
|||||||
@@ -285,6 +285,10 @@ public interface BuilderTrait extends Entity, TeamTrait{
|
|||||||
this.breaking = true;
|
this.breaking = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Tile tile(){
|
||||||
|
return world.tile(x, y);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString(){
|
public String toString(){
|
||||||
return "BuildRequest{" +
|
return "BuildRequest{" +
|
||||||
|
|||||||
@@ -70,7 +70,6 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
|
|||||||
private Tile mining;
|
private Tile mining;
|
||||||
private Vector2 movement = new Vector2();
|
private Vector2 movement = new Vector2();
|
||||||
private boolean moved;
|
private boolean moved;
|
||||||
private SoundLoop buildSound = new SoundLoop(Sounds.build, 0.75f);
|
|
||||||
|
|
||||||
//endregion
|
//endregion
|
||||||
|
|
||||||
@@ -131,11 +130,6 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void removed(){
|
|
||||||
buildSound.stop();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public float drag(){
|
public float drag(){
|
||||||
return mech.drag;
|
return mech.drag;
|
||||||
@@ -518,7 +512,9 @@ public class Player extends Unit implements BuilderMinerTrait, ShooterTrait{
|
|||||||
}
|
}
|
||||||
|
|
||||||
BuildRequest request = buildRequest();
|
BuildRequest request = buildRequest();
|
||||||
buildSound.update(request == null ? x : request.x * tilesize, request == null ? y : request.y * tilesize, isBuilding() && (Mathf.within(request.x * tilesize, request.y * tilesize, x, y, placeDistance) || state.isEditor()));
|
if(isBuilding() && request.tile() != null && (request.tile().withinDst(x, y, placeDistance) || state.isEditor())){
|
||||||
|
loops.play(Sounds.build, request.tile(), 0.75f);
|
||||||
|
}
|
||||||
|
|
||||||
if(isDead()){
|
if(isDead()){
|
||||||
isBoosting = false;
|
isBoosting = false;
|
||||||
|
|||||||
@@ -26,8 +26,10 @@ public class Stats{
|
|||||||
public RankResult calculateRank(Zone zone, boolean launched){
|
public RankResult calculateRank(Zone zone, boolean launched){
|
||||||
float score = 0;
|
float score = 0;
|
||||||
|
|
||||||
//each new launch period adds onto the rank 'points'
|
if(launched && zone.getRules().attackMode){
|
||||||
if(wavesLasted >= zone.conditionWave){
|
score += 3f;
|
||||||
|
}else if(wavesLasted >= zone.conditionWave){
|
||||||
|
//each new launch period adds onto the rank 'points'
|
||||||
score += (float)((wavesLasted - zone.conditionWave) / zone.launchPeriod + 1) * 1.2f;
|
score += (float)((wavesLasted - zone.conditionWave) / zone.launchPeriod + 1) * 1.2f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ public class DesktopInput extends InputHandler{
|
|||||||
player.isShooting = false;
|
player.isShooting = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!state.is(State.menu) && Core.input.keyTap(Binding.minimap) && !ui.chatfrag.chatOpen() && !(scene.getKeyboardFocus() instanceof TextField)){
|
if(!state.is(State.menu) && Core.input.keyTap(Binding.minimap) && (scene.getKeyboardFocus() == ui.minimap || !scene.hasDialog()) && !ui.chatfrag.chatOpen() && !(scene.getKeyboardFocus() instanceof TextField)){
|
||||||
if(!ui.minimap.isShown()){
|
if(!ui.minimap.isShown()){
|
||||||
ui.minimap.show();
|
ui.minimap.show();
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ public class FileChooser extends FloatingDialog{
|
|||||||
private Predicate<FileHandle> filter;
|
private Predicate<FileHandle> filter;
|
||||||
private Consumer<FileHandle> selectListener;
|
private Consumer<FileHandle> selectListener;
|
||||||
private boolean open;
|
private boolean open;
|
||||||
private int lastWidth = Core.graphics.getWidth(), lastHeight = Core.graphics.getHeight();
|
|
||||||
|
|
||||||
public static final Predicate<String> pngFiles = str -> str.equals("png");
|
public static final Predicate<String> pngFiles = str -> str.equals("png");
|
||||||
public static final Predicate<String> anyMapFiles = str -> str.equals(oldMapExtension) || str.equals(mapExtension);
|
public static final Predicate<String> anyMapFiles = str -> str.equals(oldMapExtension) || str.equals(mapExtension);
|
||||||
@@ -44,12 +43,14 @@ public class FileChooser extends FloatingDialog{
|
|||||||
this.filter = filter;
|
this.filter = filter;
|
||||||
this.selectListener = result;
|
this.selectListener = result;
|
||||||
|
|
||||||
update(() -> {
|
onResize(() -> {
|
||||||
if(Core.graphics.getWidth() != lastWidth || Core.graphics.getHeight() != lastHeight){
|
cont.clear();
|
||||||
updateFiles(false);
|
setupWidgets();
|
||||||
lastHeight = Core.graphics.getHeight();
|
});
|
||||||
lastWidth = Core.graphics.getWidth();
|
|
||||||
}
|
shown(() -> {
|
||||||
|
cont.clear();
|
||||||
|
setupWidgets();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,8 +122,9 @@ public class FileChooser extends FloatingDialog{
|
|||||||
forward.resizeImage(isize);
|
forward.resizeImage(isize);
|
||||||
|
|
||||||
forward.clicked(() -> stack.forward());
|
forward.clicked(() -> stack.forward());
|
||||||
|
|
||||||
back.clicked(() -> stack.back());
|
back.clicked(() -> stack.back());
|
||||||
|
forward.setDisabled(() -> !stack.canForward());
|
||||||
|
back.setDisabled(() -> !stack.canBack());
|
||||||
|
|
||||||
ImageButton home = new ImageButton("icon-home");
|
ImageButton home = new ImageButton("icon-home");
|
||||||
home.resizeImage(isize);
|
home.resizeImage(isize);
|
||||||
@@ -206,7 +208,7 @@ public class FileChooser extends FloatingDialog{
|
|||||||
|
|
||||||
//macs are confined to the Downloads/ directory
|
//macs are confined to the Downloads/ directory
|
||||||
if(!OS.isMac){
|
if(!OS.isMac){
|
||||||
Image upimage = new Image("icon-folder-parent");
|
Image upimage = new Image("icon-folder-parent-small");
|
||||||
TextButton upbutton = new TextButton(".." + directory.toString(), "clear-toggle");
|
TextButton upbutton = new TextButton(".." + directory.toString(), "clear-toggle");
|
||||||
upbutton.clicked(() -> {
|
upbutton.clicked(() -> {
|
||||||
directory = directory.parent();
|
directory = directory.parent();
|
||||||
@@ -214,7 +216,7 @@ public class FileChooser extends FloatingDialog{
|
|||||||
updateFiles(true);
|
updateFiles(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
upbutton.left().add(upimage).padRight(4f).size(iconsize);
|
upbutton.left().add(upimage).padRight(4f).size(iconsizesmall).padLeft(4);
|
||||||
upbutton.getLabel().setAlignment(Align.left);
|
upbutton.getLabel().setAlignment(Align.left);
|
||||||
upbutton.getCells().reverse();
|
upbutton.getCells().reverse();
|
||||||
|
|
||||||
@@ -248,9 +250,9 @@ public class FileChooser extends FloatingDialog{
|
|||||||
button.setChecked(filename.equals(filefield.getText()));
|
button.setChecked(filename.equals(filefield.getText()));
|
||||||
});
|
});
|
||||||
|
|
||||||
Image image = new Image(file.isDirectory() ? "icon-folder" : "icon-file-text");
|
Image image = new Image(file.isDirectory() ? "icon-folder-small" : "icon-file-text-small");
|
||||||
|
|
||||||
button.add(image).padRight(4f).size(iconsize);
|
button.add(image).padRight(4f).padLeft(4).size(iconsizesmall);
|
||||||
button.getCells().reverse();
|
button.getCells().reverse();
|
||||||
files.top().left().add(button).align(Align.topLeft).fillX().expandX()
|
files.top().left().add(button).align(Align.topLeft).fillX().expandX()
|
||||||
.height(50).pad(2).padTop(0).padBottom(0).colspan(2);
|
.height(50).pad(2).padTop(0).padBottom(0).colspan(2);
|
||||||
@@ -273,17 +275,6 @@ public class FileChooser extends FloatingDialog{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Dialog show(){
|
|
||||||
Time.runTask(2f, () -> {
|
|
||||||
cont.clear();
|
|
||||||
setupWidgets();
|
|
||||||
super.show();
|
|
||||||
Core.scene.setScrollFocus(pane);
|
|
||||||
});
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public class FileHistory{
|
public class FileHistory{
|
||||||
private Array<FileHandle> history = new Array<>();
|
private Array<FileHandle> history = new Array<>();
|
||||||
private int index;
|
private int index;
|
||||||
|
|||||||
@@ -39,18 +39,6 @@ public class FloatingDialog extends Dialog{
|
|||||||
state.set(State.paused);
|
state.set(State.paused);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
boolean[] done = {false};
|
|
||||||
|
|
||||||
shown(() -> Core.app.post(() ->
|
|
||||||
forEach(child -> {
|
|
||||||
if(done[0]) return;
|
|
||||||
|
|
||||||
if(child instanceof ScrollPane){
|
|
||||||
Core.scene.setScrollFocus(child);
|
|
||||||
done[0] = true;
|
|
||||||
}
|
|
||||||
})));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public FloatingDialog(String title){
|
public FloatingDialog(String title){
|
||||||
@@ -59,8 +47,9 @@ public class FloatingDialog extends Dialog{
|
|||||||
|
|
||||||
protected void onResize(Runnable run){
|
protected void onResize(Runnable run){
|
||||||
Events.on(ResizeEvent.class, event -> {
|
Events.on(ResizeEvent.class, event -> {
|
||||||
if(isShown()){
|
if(isShown() && Core.scene.getDialog() == this){
|
||||||
run.run();
|
run.run();
|
||||||
|
updateScrollFocus();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
package io.anuke.mindustry.ui.dialogs;
|
package io.anuke.mindustry.ui.dialogs;
|
||||||
|
|
||||||
import io.anuke.arc.Core;
|
import io.anuke.arc.*;
|
||||||
import io.anuke.mindustry.core.GameState.State;
|
import io.anuke.mindustry.core.GameState.*;
|
||||||
import io.anuke.mindustry.game.Stats.RankResult;
|
import io.anuke.mindustry.game.Stats.*;
|
||||||
import io.anuke.mindustry.game.Team;
|
import io.anuke.mindustry.game.*;
|
||||||
import io.anuke.mindustry.type.Item;
|
import io.anuke.mindustry.type.*;
|
||||||
import io.anuke.mindustry.type.Item.Icon;
|
import io.anuke.mindustry.type.Item.*;
|
||||||
|
|
||||||
import static io.anuke.mindustry.Vars.*;
|
import static io.anuke.mindustry.Vars.*;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,15 @@
|
|||||||
#!/usr/bin/bash
|
#!/usr/bin/bash
|
||||||
|
|
||||||
#convert ogg to .caf files for iOS
|
cd $1
|
||||||
for i in $1/*.ogg; do
|
|
||||||
|
#convert ogg to .mp3 files for iOS
|
||||||
|
for i in *.ogg; do
|
||||||
echo $i
|
echo $i
|
||||||
ffmpeg -i "$i" "${i%.*}.caf"
|
ffmpeg -i "$i" "OUT_${i%.*}.mp3"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
find . -type f ! -name "OUT_*" -delete
|
||||||
|
|
||||||
|
for file in OUT_*; do mv "$file" "${file#OUT_}"; done;
|
||||||
|
|
||||||
|
cd ../../
|
||||||
|
|||||||
Reference in New Issue
Block a user