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.cloudColor = sector.planet.landCloudColor;
|
||||||
state.rules.env = sector.planet.defaultEnv;
|
state.rules.env = sector.planet.defaultEnv;
|
||||||
|
state.rules.planet = sector.planet;
|
||||||
state.rules.hiddenBuildItems.clear();
|
state.rules.hiddenBuildItems.clear();
|
||||||
state.rules.hiddenBuildItems.addAll(sector.planet.hiddenItems);
|
state.rules.hiddenBuildItems.addAll(sector.planet.hiddenItems);
|
||||||
sector.planet.applyRules(state.rules);
|
sector.planet.applyRules(state.rules);
|
||||||
|
|||||||
@@ -191,6 +191,8 @@ public class Rules{
|
|||||||
public float backgroundOffsetX = 0.1f, backgroundOffsetY = 0.1f;
|
public float backgroundOffsetX = 0.1f, backgroundOffsetY = 0.1f;
|
||||||
/** Parameters for planet rendered in the background. Cannot be changed once a map is loaded. */
|
/** Parameters for planet rendered in the background. Cannot be changed once a map is loaded. */
|
||||||
public @Nullable PlanetParams planetBackground;
|
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. */
|
/** Copies this ruleset exactly. Not efficient at all, do not use often. */
|
||||||
public Rules copy(){
|
public Rules copy(){
|
||||||
|
|||||||
@@ -211,6 +211,7 @@ public class Planet extends UnlockableContent{
|
|||||||
rules.attributes.clear();
|
rules.attributes.clear();
|
||||||
rules.attributes.add(defaultAttributes);
|
rules.attributes.add(defaultAttributes);
|
||||||
rules.env = defaultEnv;
|
rules.env = defaultEnv;
|
||||||
|
rules.planet = this;
|
||||||
rules.hiddenBuildItems.clear();
|
rules.hiddenBuildItems.clear();
|
||||||
rules.hiddenBuildItems.addAll(hiddenItems);
|
rules.hiddenBuildItems.addAll(hiddenItems);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -249,15 +249,14 @@ public class CustomRulesDialog extends BaseDialog{
|
|||||||
|
|
||||||
t.defaults().size(140f, 50f);
|
t.defaults().size(140f, 50f);
|
||||||
|
|
||||||
//TODO dynamic selection of planets
|
for(Planet planet : content.planets().select(p -> p.accessible && p.visible && p.isLandable())){
|
||||||
for(Planet planet : new Planet[]{Planets.serpulo, Planets.erekir}){
|
|
||||||
t.button(planet.localizedName, style, () -> {
|
t.button(planet.localizedName, style, () -> {
|
||||||
rules.env = planet.defaultEnv;
|
planet.applyRules(rules);
|
||||||
rules.attributes.clear();
|
}).group(group).checked(b -> rules.planet == planet);
|
||||||
rules.attributes.add(planet.defaultAttributes);
|
|
||||||
rules.hiddenBuildItems.clear();
|
if(t.getChildren().size % 3 == 0){
|
||||||
rules.hiddenBuildItems.addAll(planet.hiddenItems);
|
t.row();
|
||||||
}).group(group).checked(b -> rules.env == planet.defaultEnv);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
t.button("@rules.anyenv", style, () -> {
|
t.button("@rules.anyenv", style, () -> {
|
||||||
@@ -267,8 +266,9 @@ public class CustomRulesDialog extends BaseDialog{
|
|||||||
}else{
|
}else{
|
||||||
rules.env = Vars.defaultEnv;
|
rules.env = Vars.defaultEnv;
|
||||||
rules.hiddenBuildItems.clear();
|
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();
|
}).left().fill(false).expand(false, false).row();
|
||||||
|
|
||||||
title("@rules.title.teams");
|
title("@rules.title.teams");
|
||||||
|
|||||||
Reference in New Issue
Block a user