|
|
|
|
@@ -1,13 +1,9 @@
|
|
|
|
|
package io.anuke.mindustry.ui.dialogs;
|
|
|
|
|
|
|
|
|
|
import io.anuke.arc.function.BooleanConsumer;
|
|
|
|
|
import io.anuke.arc.function.BooleanProvider;
|
|
|
|
|
import io.anuke.arc.function.FloatConsumer;
|
|
|
|
|
import io.anuke.arc.function.FloatProvider;
|
|
|
|
|
import io.anuke.arc.function.*;
|
|
|
|
|
import io.anuke.arc.graphics.Color;
|
|
|
|
|
import io.anuke.arc.scene.ui.layout.Table;
|
|
|
|
|
import io.anuke.arc.util.Strings;
|
|
|
|
|
import io.anuke.arc.util.Structs;
|
|
|
|
|
import io.anuke.mindustry.core.Platform;
|
|
|
|
|
import io.anuke.mindustry.game.Gamemode;
|
|
|
|
|
import io.anuke.mindustry.game.Rules;
|
|
|
|
|
@@ -44,37 +40,48 @@ public class CustomRulesDialog extends FloatingDialog{
|
|
|
|
|
}).size(300f, 50f);
|
|
|
|
|
main.left().defaults().fillX().left().pad(5);
|
|
|
|
|
main.row();
|
|
|
|
|
|
|
|
|
|
title("$rules.title.waves");
|
|
|
|
|
check("$rules.waves", b -> rules.waves = b, () -> rules.waves, ()-> true);
|
|
|
|
|
check("$rules.waves", b -> rules.waves = b, () -> rules.waves);
|
|
|
|
|
check("$rules.wavetimer", b -> rules.waveTimer = b, () -> rules.waveTimer, () -> rules.waves);
|
|
|
|
|
check("$rules.waitForWaveToEnd", b -> rules.waitForWaveToEnd = b, () -> rules.waitForWaveToEnd, () -> rules.waves);
|
|
|
|
|
number("$rules.wavespacing", f -> rules.waveSpacing = f * 60f, () -> rules.waveSpacing / 60f, () -> rules.waves);
|
|
|
|
|
number("$rules.wavespacing", false, f -> rules.waveSpacing = f * 60f, () -> rules.waveSpacing / 60f, () -> rules.waves);
|
|
|
|
|
number("$rules.dropzoneradius", false, f -> rules.dropZoneRadius = f * tilesize, () -> rules.dropZoneRadius / tilesize, () -> rules.waves);
|
|
|
|
|
|
|
|
|
|
title("$rules.title.respawns");
|
|
|
|
|
check("$rules.limitedRespawns", b -> rules.limitedRespawns= b, () -> rules.limitedRespawns, () -> true);
|
|
|
|
|
integer("$rules.respawns", f -> rules.respawns = (int) f, () -> rules.respawns, () -> rules.limitedRespawns);
|
|
|
|
|
number("$rules.respawntime", f -> rules.respawnTime = f * 60f, () -> rules.respawnTime / 60f, () -> true);
|
|
|
|
|
check("$rules.limitedRespawns", b -> rules.limitedRespawns= b, () -> rules.limitedRespawns);
|
|
|
|
|
number("$rules.respawns", true, f -> rules.respawns = (int) f, () -> rules.respawns, () -> rules.limitedRespawns);
|
|
|
|
|
number("$rules.respawntime", f -> rules.respawnTime = f * 60f, () -> rules.respawnTime / 60f);
|
|
|
|
|
|
|
|
|
|
title("$rules.title.resourcesbuilding");
|
|
|
|
|
check("$rules.infiniteresources", b -> rules.infiniteResources = b, () -> rules.infiniteResources, () -> true);
|
|
|
|
|
number("$rules.buildcostmultiplier", f -> rules.buildCostMultiplier = f, () -> rules.buildCostMultiplier, () -> !rules.infiniteResources);
|
|
|
|
|
number("$rules.buildspeedmultiplier", f -> rules.buildSpeedMultiplier = f, () -> rules.buildSpeedMultiplier, () -> true);
|
|
|
|
|
check("$rules.infiniteresources", b -> rules.infiniteResources = b, () -> rules.infiniteResources);
|
|
|
|
|
number("$rules.buildcostmultiplier", false, f -> rules.buildCostMultiplier = f, () -> rules.buildCostMultiplier, () -> !rules.infiniteResources);
|
|
|
|
|
number("$rules.buildspeedmultiplier", f -> rules.buildSpeedMultiplier = f, () -> rules.buildSpeedMultiplier);
|
|
|
|
|
|
|
|
|
|
title("$rules.title.player");
|
|
|
|
|
number("$rules.playerdamagemultiplier", f -> rules.playerDamageMultiplier = f, () -> rules.playerDamageMultiplier, () -> true);
|
|
|
|
|
number("$rules.playerhealthmultiplier", f -> rules.playerHealthMultiplier = f, () -> rules.playerHealthMultiplier, () -> true);
|
|
|
|
|
number("$rules.playerdamagemultiplier", f -> rules.playerDamageMultiplier = f, () -> rules.playerDamageMultiplier);
|
|
|
|
|
number("$rules.playerhealthmultiplier", f -> rules.playerHealthMultiplier = f, () -> rules.playerHealthMultiplier);
|
|
|
|
|
|
|
|
|
|
title("$rules.title.unit");
|
|
|
|
|
check("$rules.unitdrops", b -> rules.unitDrops = b, () -> rules.unitDrops, ()->true);
|
|
|
|
|
number("$rules.unitbuildspeedmultiplier", f -> rules.unitBuildSpeedMultiplier = f, () -> rules.unitBuildSpeedMultiplier, ()->true);
|
|
|
|
|
number("$rules.unithealthmultiplier", f -> rules.unitHealthMultiplier = f, () -> rules.unitHealthMultiplier, ()->true);
|
|
|
|
|
number("$rules.unitdamagemultiplier", f -> rules.unitDamageMultiplier = f, () -> rules.unitDamageMultiplier, ()->true);
|
|
|
|
|
number("$rules.unitbuildspeedmultiplier", f -> rules.unitBuildSpeedMultiplier = f, () -> rules.unitBuildSpeedMultiplier);
|
|
|
|
|
number("$rules.unithealthmultiplier", f -> rules.unitHealthMultiplier = f, () -> rules.unitHealthMultiplier);
|
|
|
|
|
number("$rules.unitdamagemultiplier", f -> rules.unitDamageMultiplier = f, () -> rules.unitDamageMultiplier);
|
|
|
|
|
|
|
|
|
|
title("$rules.title.enemy");
|
|
|
|
|
number("$rules.enemycorebuildradius", f -> rules.enemyCoreBuildRadius = f * tilesize, () -> Math.min(rules.enemyCoreBuildRadius / tilesize, 200), ()->true);
|
|
|
|
|
number("$rules.enemycorebuildradius", f -> rules.enemyCoreBuildRadius = f * tilesize, () -> Math.min(rules.enemyCoreBuildRadius / tilesize, 200));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void number(String text, FloatConsumer cons, FloatProvider prov, BooleanProvider condition){
|
|
|
|
|
void number(String text, FloatConsumer cons, FloatProvider prov){
|
|
|
|
|
number(text, false, cons, prov, () -> true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void number(String text, boolean integer, FloatConsumer cons, FloatProvider prov, BooleanProvider condition){
|
|
|
|
|
main.table(t -> {
|
|
|
|
|
t.left();
|
|
|
|
|
t.add(text).left().padRight(5)
|
|
|
|
|
.update(a->a.setColor(condition.get() ? Color.WHITE : Color.GRAY));
|
|
|
|
|
Platform.instance.addDialog(t.addField(prov.get() + "", s -> cons.accept(Strings.parseFloat(s)))
|
|
|
|
|
Platform.instance.addDialog(t.addField((integer ? (int)prov.get() : prov.get()) + "", s -> cons.accept(Strings.parseFloat(s)))
|
|
|
|
|
.padRight(100f)
|
|
|
|
|
.update(a -> a.setDisabled(!condition.get()))
|
|
|
|
|
.valid(Strings::canParsePositiveFloat).width(120f) .left().get());
|
|
|
|
|
@@ -82,17 +89,8 @@ public class CustomRulesDialog extends FloatingDialog{
|
|
|
|
|
main.row();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void integer(String text, FloatConsumer cons, FloatProvider prov, BooleanProvider condition){
|
|
|
|
|
main.table(t -> {
|
|
|
|
|
t.left();
|
|
|
|
|
t.add(text).left().padRight(5)
|
|
|
|
|
.update(a->a.setColor(condition.get() ? Color.WHITE : Color.GRAY));
|
|
|
|
|
Platform.instance.addDialog(t.addField(((int) prov.get()) + "", s -> cons.accept(Strings.parseFloat(s)))
|
|
|
|
|
.padRight(100f)
|
|
|
|
|
.update(a -> a.setDisabled(!condition.get()))
|
|
|
|
|
.valid(Strings::canParsePostiveInt).width(120f) .left().get());
|
|
|
|
|
}).padTop(0);
|
|
|
|
|
main.row();
|
|
|
|
|
void check(String text, BooleanConsumer cons, BooleanProvider prov){
|
|
|
|
|
check(text, cons, prov, () -> true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void check(String text, BooleanConsumer cons, BooleanProvider prov, BooleanProvider condition){
|
|
|
|
|
|