Erekir rule option

This commit is contained in:
Anuken
2022-02-18 18:06:33 -05:00
parent 0c0adea2a4
commit 9633c57fe0
16 changed files with 38 additions and 16 deletions

View File

@@ -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();
}
}

View File

@@ -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);

View File

@@ -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(){

View File

@@ -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);
}

View File

@@ -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){

View File

@@ -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 ???

View File

@@ -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.

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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(){

View File

@@ -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. */

View File

@@ -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{

View File

@@ -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>{

View File

@@ -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);
}