diff --git a/core/src/io/anuke/mindustry/core/Renderer.java b/core/src/io/anuke/mindustry/core/Renderer.java index 7843f86719..2778930583 100644 --- a/core/src/io/anuke/mindustry/core/Renderer.java +++ b/core/src/io/anuke/mindustry/core/Renderer.java @@ -300,7 +300,9 @@ public class Renderer implements ApplicationListener{ playerGroup.draw(p -> !p.isDead(), Player::drawName); - lights.draw(); + if(state.rules.darkness){ + lights.draw(); + } drawLanding(); diff --git a/core/src/io/anuke/mindustry/game/Rules.java b/core/src/io/anuke/mindustry/game/Rules.java index 98d9cb978c..17a2cc99c4 100644 --- a/core/src/io/anuke/mindustry/game/Rules.java +++ b/core/src/io/anuke/mindustry/game/Rules.java @@ -2,6 +2,7 @@ package io.anuke.mindustry.game; import io.anuke.annotations.Annotations.*; import io.anuke.arc.collection.*; +import io.anuke.arc.graphics.*; import io.anuke.mindustry.content.*; import io.anuke.mindustry.io.*; import io.anuke.mindustry.type.*; @@ -73,6 +74,10 @@ public class Rules{ public Array loadout = Array.with(ItemStack.with(Items.copper, 100)); /** Blocks that cannot be placed. */ public ObjectSet bannedBlocks = new ObjectSet<>(); + /** Whether everything is dark. Enables lights. Exeperimental. */ + public boolean darkness = true; + /** Ambient light color, used when darkness is enabled. */ + public Color ambientLight = new Color(0.01f, 0.01f, 0.04f, 0.99f); /** Copies this ruleset exactly. Not very efficient at all, do not use often. */ public Rules copy(){ diff --git a/core/src/io/anuke/mindustry/graphics/LightRenderer.java b/core/src/io/anuke/mindustry/graphics/LightRenderer.java index cdff26866d..cca25df62a 100644 --- a/core/src/io/anuke/mindustry/graphics/LightRenderer.java +++ b/core/src/io/anuke/mindustry/graphics/LightRenderer.java @@ -9,6 +9,9 @@ import io.anuke.arc.math.*; import io.anuke.arc.math.geom.*; import io.anuke.arc.util.*; +import static io.anuke.mindustry.Vars.state; + +/** Renders overlay lights. Client only. */ public class LightRenderer{ private static final int scaling = 4; private float[] vertices = new float[24]; @@ -16,10 +19,14 @@ public class LightRenderer{ private Array lights = new Array<>(); public void add(Runnable run){ + if(!enabled()) return; + lights.add(run); } public void add(float x, float y, float radius, Color color, float opacity){ + if(!enabled()) return; + float res = color.toFloatBits(); add(() -> { Draw.color(res); @@ -29,6 +36,8 @@ public class LightRenderer{ } public void add(float x, float y, TextureRegion region, Color color, float opacity){ + if(!enabled()) return; + float res = color.toFloatBits(); add(() -> { Draw.color(res); @@ -38,6 +47,8 @@ public class LightRenderer{ } public void line(float x, float y, float x2, float y2){ + if(!enabled()) return; + add(() -> { Draw.color(Color.orange, 0.5f); @@ -158,6 +169,10 @@ public class LightRenderer{ }); } + public boolean enabled(){ + return state.rules.darkness; + } + public void draw(){ if(buffer.getWidth() != Core.graphics.getWidth()/scaling || buffer.getHeight() != Core.graphics.getHeight()/scaling){ buffer.resize(Core.graphics.getWidth()/scaling, Core.graphics.getHeight()/scaling); @@ -174,6 +189,7 @@ public class LightRenderer{ buffer.endDraw(); Draw.color(); + Shaders.light.ambient.set(state.rules.ambientLight); Draw.shader(Shaders.light); Draw.rect(Draw.wrap(buffer.getTexture()), Core.camera.position.x, Core.camera.position.y, Core.camera.width, -Core.camera.height); Draw.shader(); diff --git a/core/src/io/anuke/mindustry/world/blocks/power/NuclearReactor.java b/core/src/io/anuke/mindustry/world/blocks/power/NuclearReactor.java index 1bc9e3b4c0..ca36dbf171 100644 --- a/core/src/io/anuke/mindustry/world/blocks/power/NuclearReactor.java +++ b/core/src/io/anuke/mindustry/world/blocks/power/NuclearReactor.java @@ -27,7 +27,7 @@ public class NuclearReactor extends PowerGenerator{ protected final Vector2 tr = new Vector2(); - protected Color lightColor = Color.valueOf("b174f1"); + protected Color lightColor = Color.valueOf("7f19ea"); protected Color coolColor = new Color(1, 1, 1, 0f); protected Color hotColor = Color.valueOf("ff9575a3"); protected float itemDuration = 120; //time to consume 1 fuel