Dynamic selection of planet tech in rules dialog (#8487)
* Dynamic selection of planets in rules dialog * Code cleanup * Do not let Anuken/Mindustry#8494 happen again * Fixed inconsistency with campaign sectors
This commit is contained in:
@@ -320,6 +320,7 @@ public class World{
|
||||
|
||||
state.rules.cloudColor = sector.planet.landCloudColor;
|
||||
state.rules.env = sector.planet.defaultEnv;
|
||||
state.rules.planet = sector.planet;
|
||||
state.rules.hiddenBuildItems.clear();
|
||||
state.rules.hiddenBuildItems.addAll(sector.planet.hiddenItems);
|
||||
sector.planet.applyRules(state.rules);
|
||||
|
||||
@@ -191,6 +191,8 @@ public class Rules{
|
||||
public float backgroundOffsetX = 0.1f, backgroundOffsetY = 0.1f;
|
||||
/** Parameters for planet rendered in the background. Cannot be changed once a map is loaded. */
|
||||
public @Nullable PlanetParams planetBackground;
|
||||
/** Rules from this planet are applied. If it's {@code sun}, mixed tech is enabled. */
|
||||
public Planet planet = Planets.serpulo;
|
||||
|
||||
/** Copies this ruleset exactly. Not efficient at all, do not use often. */
|
||||
public Rules copy(){
|
||||
|
||||
@@ -211,6 +211,7 @@ public class Planet extends UnlockableContent{
|
||||
rules.attributes.clear();
|
||||
rules.attributes.add(defaultAttributes);
|
||||
rules.env = defaultEnv;
|
||||
rules.planet = this;
|
||||
rules.hiddenBuildItems.clear();
|
||||
rules.hiddenBuildItems.addAll(hiddenItems);
|
||||
}
|
||||
|
||||
@@ -249,15 +249,14 @@ public class CustomRulesDialog extends BaseDialog{
|
||||
|
||||
t.defaults().size(140f, 50f);
|
||||
|
||||
//TODO dynamic selection of planets
|
||||
for(Planet planet : new Planet[]{Planets.serpulo, Planets.erekir}){
|
||||
for(Planet planet : content.planets().select(p -> p.accessible && p.visible && p.isLandable())){
|
||||
t.button(planet.localizedName, style, () -> {
|
||||
rules.env = planet.defaultEnv;
|
||||
rules.attributes.clear();
|
||||
rules.attributes.add(planet.defaultAttributes);
|
||||
rules.hiddenBuildItems.clear();
|
||||
rules.hiddenBuildItems.addAll(planet.hiddenItems);
|
||||
}).group(group).checked(b -> rules.env == planet.defaultEnv);
|
||||
planet.applyRules(rules);
|
||||
}).group(group).checked(b -> rules.planet == planet);
|
||||
|
||||
if(t.getChildren().size % 3 == 0){
|
||||
t.row();
|
||||
}
|
||||
}
|
||||
|
||||
t.button("@rules.anyenv", style, () -> {
|
||||
@@ -267,8 +266,9 @@ public class CustomRulesDialog extends BaseDialog{
|
||||
}else{
|
||||
rules.env = Vars.defaultEnv;
|
||||
rules.hiddenBuildItems.clear();
|
||||
rules.planet = Planets.sun;
|
||||
}
|
||||
}).group(group).checked(b -> rules.hiddenBuildItems.size == 0);
|
||||
}).group(group).checked(b -> rules.planet == Planets.sun);
|
||||
}).left().fill(false).expand(false, false).row();
|
||||
|
||||
title("@rules.title.teams");
|
||||
|
||||
Reference in New Issue
Block a user