Erekir rule option
This commit is contained in:
@@ -319,7 +319,7 @@ public class Renderer implements ApplicationListener{
|
||||
|
||||
//render all matching environments
|
||||
for(var renderer : envRenderers){
|
||||
if((renderer.env & state.rules.environment) == renderer.env){
|
||||
if((renderer.env & state.rules.env) == renderer.env){
|
||||
renderer.renderer.run();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -308,7 +308,7 @@ public class World{
|
||||
}
|
||||
|
||||
state.rules.cloudColor = sector.planet.landCloudColor;
|
||||
state.rules.environment = sector.planet.defaultEnv;
|
||||
state.rules.env = sector.planet.defaultEnv;
|
||||
state.rules.hiddenBuildItems.clear();
|
||||
state.rules.hiddenBuildItems.addAll(sector.planet.hiddenItems);
|
||||
sector.planet.ruleSetter.get(state.rules);
|
||||
|
||||
@@ -502,7 +502,7 @@ abstract class BuildingComp implements Posc, Teamc, Healthc, Buildingc, Timerc,
|
||||
|
||||
/** @return whether this block is allowed to update based on team/environment */
|
||||
public boolean allowUpdate(){
|
||||
return team != Team.derelict && block.supportsEnv(state.rules.environment);
|
||||
return team != Team.derelict && block.supportsEnv(state.rules.env);
|
||||
}
|
||||
|
||||
public BlockStatus status(){
|
||||
|
||||
@@ -382,7 +382,7 @@ abstract class UnitComp implements Healthc, Physicsc, Hitboxc, Statusc, Teamc, I
|
||||
wasHealed = false;
|
||||
|
||||
//check if environment is unsupported
|
||||
if(!type.supportsEnv(state.rules.environment) && !dead){
|
||||
if(!type.supportsEnv(state.rules.env) && !dead){
|
||||
Call.unitEnvDeath(self());
|
||||
team.data().updateCount(type, -1);
|
||||
}
|
||||
|
||||
@@ -92,7 +92,7 @@ public class Rules{
|
||||
/** Environment drag multiplier. */
|
||||
public float dragMultiplier = 1f;
|
||||
/** Environmental flags that dictate visuals & how blocks function. */
|
||||
public int environment = Env.terrestrial | Env.spores | Env.groundOil | Env.groundWater | Env.oxygen;
|
||||
public int env = Env.terrestrial | Env.spores | Env.groundOil | Env.groundWater | Env.oxygen;
|
||||
/** Attributes of the environment. */
|
||||
public Attributes attributes = new Attributes();
|
||||
/** Sector for saves that have them. */
|
||||
@@ -176,7 +176,7 @@ public class Rules{
|
||||
}
|
||||
|
||||
public boolean hasEnv(int env){
|
||||
return (environment & env) != 0;
|
||||
return (this.env & env) != 0;
|
||||
}
|
||||
|
||||
public float unitBuildSpeed(Team team){
|
||||
|
||||
@@ -142,7 +142,7 @@ public class AsteroidGenerator extends BlankPlanetGenerator{
|
||||
|
||||
state.rules.dragMultiplier = 0.7f; //yes, space actually has 0 drag but true 0% drag is very annoying
|
||||
state.rules.borderDarkness = false;
|
||||
state.rules.environment = Env.space;
|
||||
state.rules.env = Env.space;
|
||||
state.rules.waves = true;
|
||||
|
||||
//TODO ???
|
||||
|
||||
@@ -443,7 +443,7 @@ public class ErekirPlanetGenerator extends PlanetGenerator{
|
||||
|
||||
//it is very hot
|
||||
state.rules.attributes.set(Attribute.heat, 0.8f);
|
||||
state.rules.environment = sector.planet.defaultEnv;
|
||||
state.rules.env = sector.planet.defaultEnv;
|
||||
state.rules.placeRangeCheck = true;
|
||||
|
||||
//TODO remove slag and arkycite around core.
|
||||
|
||||
@@ -645,7 +645,7 @@ public class SerpuloPlanetGenerator extends PlanetGenerator{
|
||||
|
||||
state.rules.waveSpacing = Mathf.lerp(60 * 65 * 2, 60f * 60f * 1f, Math.max(difficulty - waveTimeDec, 0f));
|
||||
state.rules.waves = sector.info.waves = true;
|
||||
state.rules.environment = sector.planet.defaultEnv;
|
||||
state.rules.env = sector.planet.defaultEnv;
|
||||
state.rules.enemyCoreBuildRadius = 600f;
|
||||
|
||||
//spawn air only when spawn is blocked
|
||||
|
||||
@@ -87,7 +87,7 @@ public class TantrosPlanetGenerator extends PlanetGenerator{
|
||||
|
||||
Schematics.placeLaunchLoadout(width / 2, height / 2);
|
||||
|
||||
Vars.state.rules.environment = Env.underwater;
|
||||
Vars.state.rules.env = Env.underwater;
|
||||
|
||||
state.rules.canGameOver = false;
|
||||
}
|
||||
|
||||
@@ -214,6 +214,26 @@ public class CustomRulesDialog extends BaseDialog{
|
||||
|
||||
main.button("@rules.weather", this::weatherDialog).width(250f).left().row();
|
||||
|
||||
title("@rules.title.planet");
|
||||
|
||||
main.table(Tex.button, t -> {
|
||||
t.margin(10f);
|
||||
var group = new ButtonGroup<>();
|
||||
var style = Styles.clearTogglet;
|
||||
|
||||
t.defaults().size(140f, 50f);
|
||||
|
||||
//TODO dynamic selection
|
||||
for(Planet planet : new Planet[]{Planets.serpulo, Planets.erekir}){
|
||||
t.button(planet.localizedName, style, () -> {
|
||||
rules.env = planet.defaultEnv;
|
||||
rules.hiddenBuildItems.clear();
|
||||
rules.hiddenBuildItems.addAll(planet.hiddenItems);
|
||||
planet.ruleSetter.get(rules);
|
||||
}).group(group).checked(rules.env == planet.defaultEnv);
|
||||
}
|
||||
}).left().fill(false).expand(false, false).row();
|
||||
|
||||
title("@rules.title.teams");
|
||||
|
||||
team("@rules.playerteam", t -> rules.defaultTeam = t, () -> rules.defaultTeam);
|
||||
|
||||
@@ -373,7 +373,7 @@ public class PlacementFragment extends Fragment{
|
||||
topTable.row();
|
||||
topTable.table(b -> {
|
||||
b.image(Icon.cancel).padRight(2).color(Color.scarlet);
|
||||
b.add(!player.isBuilder() ? "@unit.nobuild" : !displayBlock.supportsEnv(state.rules.environment) ? "@unsupported.environment" : "@banned").width(190f).wrap();
|
||||
b.add(!player.isBuilder() ? "@unit.nobuild" : !displayBlock.supportsEnv(state.rules.env) ? "@unsupported.environment" : "@banned").width(190f).wrap();
|
||||
b.left();
|
||||
}).padTop(2).left();
|
||||
}
|
||||
@@ -552,7 +552,7 @@ public class PlacementFragment extends Fragment{
|
||||
|
||||
boolean unlocked(Block block){
|
||||
return block.unlockedNow() && block.placeablePlayer && block.environmentBuildable() &&
|
||||
block.supportsEnv(state.rules.environment); //TODO this hides env unsupported blocks, not always a good thing
|
||||
block.supportsEnv(state.rules.env); //TODO this hides env unsupported blocks, not always a good thing
|
||||
}
|
||||
|
||||
boolean hasInfoBox(){
|
||||
|
||||
@@ -809,7 +809,7 @@ public class Block extends UnlockableContent implements Senseable{
|
||||
}
|
||||
|
||||
public boolean isPlaceable(){
|
||||
return isVisible() && (!state.rules.bannedBlocks.contains(this) || state.rules.editor) && supportsEnv(state.rules.environment);
|
||||
return isVisible() && (!state.rules.bannedBlocks.contains(this) || state.rules.editor) && supportsEnv(state.rules.env);
|
||||
}
|
||||
|
||||
/** @return whether this block supports a specific environment. */
|
||||
|
||||
@@ -48,7 +48,7 @@ public class PayloadRouter extends PayloadConveyor{
|
||||
}
|
||||
|
||||
public boolean canSort(UnitType t){
|
||||
return !t.isHidden() && !t.isBanned() && t.supportsEnv(state.rules.environment);
|
||||
return !t.isHidden() && !t.isBanned() && t.supportsEnv(state.rules.env);
|
||||
}
|
||||
|
||||
public class PayloadRouterBuild extends PayloadConveyorBuild{
|
||||
|
||||
@@ -77,7 +77,7 @@ public class PayloadSource extends PayloadBlock{
|
||||
}
|
||||
|
||||
public boolean canProduce(UnitType t){
|
||||
return !t.isHidden() && !t.isBanned() && t.supportsEnv(state.rules.environment);
|
||||
return !t.isHidden() && !t.isBanned() && t.supportsEnv(state.rules.env);
|
||||
}
|
||||
|
||||
public class PayloadSourceBuild extends PayloadBlockBuild<Payload>{
|
||||
|
||||
@@ -276,7 +276,7 @@ public class CoreBlock extends StorageBlock{
|
||||
|
||||
public void requestSpawn(Player player){
|
||||
//do not try to respawn in unsupported environments at all
|
||||
if(!unitType.supportsEnv(state.rules.environment)) return;
|
||||
if(!unitType.supportsEnv(state.rules.env)) return;
|
||||
|
||||
Call.playerSpawn(tile, player);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user