Add a solar panel output multiplier (#7013)

* do

* world processor compatibility

* useless
This commit is contained in:
Ilya246
2022-06-13 21:09:06 -04:00
committed by GitHub
parent 58bfd0e46c
commit dc5b184d45
6 changed files with 8 additions and 1 deletions
+1
View File
@@ -1104,6 +1104,7 @@ rules.blockdamagemultiplier = Block Damage Multiplier
rules.unitbuildspeedmultiplier = Unit Production Speed Multiplier rules.unitbuildspeedmultiplier = Unit Production Speed Multiplier
rules.unithealthmultiplier = Unit Health Multiplier rules.unithealthmultiplier = Unit Health Multiplier
rules.unitdamagemultiplier = Unit Damage Multiplier rules.unitdamagemultiplier = Unit Damage Multiplier
rules.solarmultiplier = Solar Power Multiplier
rules.unitcapvariable = Cores Contribute To Unit Cap rules.unitcapvariable = Cores Contribute To Unit Cap
rules.unitcap = Base Unit Cap rules.unitcap = Base Unit Cap
rules.limitarea = Limit Map Area rules.limitarea = Limit Map Area
+2
View File
@@ -58,6 +58,8 @@ public class Rules{
public boolean unitCapVariable = true; public boolean unitCapVariable = true;
/** If true, unit spawn points are shown. */ /** If true, unit spawn points are shown. */
public boolean showSpawns = false; public boolean showSpawns = false;
/** Multiplies power output of solar panels. */
public float solarMultiplier = 1f;
/** How fast unit factories build units. */ /** How fast unit factories build units. */
public float unitBuildSpeedMultiplier = 1f; public float unitBuildSpeedMultiplier = 1f;
/** How much damage any other units deal. */ /** How much damage any other units deal. */
+1
View File
@@ -1401,6 +1401,7 @@ public class LExecutor{
} }
} }
case ambientLight -> state.rules.ambientLight.fromDouble(exec.num(value)); case ambientLight -> state.rules.ambientLight.fromDouble(exec.num(value));
case solarMultiplier -> state.rules.solarMultiplier = exec.numf(value);
case unitBuildSpeed, unitDamage, blockHealth, blockDamage, buildSpeed, rtsMinSquad, rtsMinWeight -> { case unitBuildSpeed, unitDamage, blockHealth, blockDamage, buildSpeed, rtsMinSquad, rtsMinWeight -> {
Team team = exec.team(p1); Team team = exec.team(p1);
if(team != null){ if(team != null){
+1
View File
@@ -13,6 +13,7 @@ public enum LogicRule{
mapArea, mapArea,
lighting, lighting,
ambientLight, ambientLight,
solarMultiplier,
//team specific //team specific
buildSpeed, buildSpeed,
@@ -208,6 +208,8 @@ public class CustomRulesDialog extends BaseDialog{
numberi("h", h -> state.rules.limitHeight = h, () -> state.rules.limitHeight, () -> state.rules.limitMapArea, 0, 10000); numberi("h", h -> state.rules.limitHeight = h, () -> state.rules.limitHeight, () -> state.rules.limitMapArea, 0, 10000);
} }
number("@rules.solarmultiplier", f -> rules.solarMultiplier = f, () -> rules.solarMultiplier);
main.button(b -> { main.button(b -> {
b.left(); b.left();
b.table(Tex.pane, in -> { b.table(Tex.pane, in -> {
@@ -26,7 +26,7 @@ public class SolarGenerator extends PowerGenerator{
@Override @Override
public void updateTile(){ public void updateTile(){
productionEfficiency = enabled ? productionEfficiency = enabled ?
Mathf.maxZero(Attribute.light.env() + state.rules.solarMultiplier * Mathf.maxZero(Attribute.light.env() +
(state.rules.lighting ? (state.rules.lighting ?
1f - state.rules.ambientLight.a : 1f - state.rules.ambientLight.a :
1f 1f