106 lines
3.3 KiB
Java
106 lines
3.3 KiB
Java
package mindustry.ui.dialogs;
|
|
|
|
import arc.*;
|
|
import arc.func.*;
|
|
import arc.scene.ui.*;
|
|
import arc.scene.ui.layout.*;
|
|
import mindustry.*;
|
|
import mindustry.game.*;
|
|
import mindustry.gen.*;
|
|
import mindustry.type.*;
|
|
import mindustry.ui.*;
|
|
|
|
public class CampaignRulesDialog extends BaseDialog{
|
|
Planet planet;
|
|
Table current;
|
|
|
|
public CampaignRulesDialog(){
|
|
super("@campaign.difficulty");
|
|
|
|
addCloseButton();
|
|
|
|
hidden(() -> {
|
|
if(planet != null){
|
|
planet.saveRules();
|
|
|
|
if(Vars.state.isGame() && Vars.state.isCampaign() && Vars.state.getPlanet() == planet){
|
|
planet.campaignRules.apply(planet, Vars.state.rules);
|
|
Call.setRules(Vars.state.rules);
|
|
}
|
|
}
|
|
});
|
|
|
|
onResize(() -> {
|
|
rebuild();
|
|
});
|
|
}
|
|
|
|
void rebuild(){
|
|
CampaignRules rules = planet.campaignRules;
|
|
cont.clear();
|
|
|
|
cont.top().pane(inner -> {
|
|
inner.top().left().defaults().fillX().left().pad(5);
|
|
current = inner;
|
|
|
|
current.table(Tex.button, t -> {
|
|
t.margin(10f);
|
|
var group = new ButtonGroup<>();
|
|
var style = Styles.flatTogglet;
|
|
|
|
t.defaults().size(140f, 50f);
|
|
|
|
for(Difficulty diff : Difficulty.all){
|
|
t.button(diff.localized(), style, () -> {
|
|
rules.difficulty = diff;
|
|
}).group(group).checked(b -> rules.difficulty == diff)
|
|
.tooltip(diff.info());
|
|
|
|
if(Core.graphics.isPortrait() && diff.ordinal() % 2 == 1){
|
|
t.row();
|
|
}
|
|
}
|
|
}).left().fill(false).expand(false, false).row();
|
|
|
|
if(planet.allowSectorInvasion){
|
|
check("@rules.invasions", b -> rules.sectorInvasion = b, () -> rules.sectorInvasion);
|
|
}
|
|
|
|
check("@rules.fog", b -> rules.fog = b, () -> rules.fog);
|
|
check("@rules.showspawns", b -> rules.showSpawns = b, () -> rules.showSpawns);
|
|
check("@rules.randomwaveai", b -> rules.randomWaveAI = b, () -> rules.randomWaveAI);
|
|
|
|
if(planet.showRtsAIRule){
|
|
check("@rules.rtsai.campaign", b -> rules.rtsAI = b, () -> rules.rtsAI);
|
|
}
|
|
|
|
//TODO: this is intentionally hidden until the new mechanics have been well-tested. I don't want people immediately switching to the old mechanics
|
|
if(planet.allowLegacyLaunchPads){
|
|
// check("@rules.legacylaunchpads", b -> rules.legacyLaunchPads = b, () -> rules.legacyLaunchPads);
|
|
}
|
|
}).growY();
|
|
}
|
|
|
|
public void show(Planet planet){
|
|
this.planet = planet;
|
|
|
|
rebuild();
|
|
show();
|
|
}
|
|
|
|
void check(String text, Boolc cons, Boolp prov){
|
|
check(text, cons, prov, () -> true);
|
|
}
|
|
|
|
void check(String text, Boolc cons, Boolp prov, Boolp condition){
|
|
String infoText = text.substring(1) + ".info";
|
|
var cell = current.check(text, cons).checked(prov.get()).update(a -> a.setDisabled(!condition.get()));
|
|
if(Core.bundle.has(infoText)){
|
|
cell.tooltip(text + ".info");
|
|
}
|
|
cell.get().left();
|
|
current.row();
|
|
}
|
|
|
|
}
|