From c27251cfb09b7a9a39c9ff5488ff371e8c68d79f Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 19 Oct 2020 18:28:37 -0400 Subject: [PATCH] Fog --- core/assets/bundles/bundle.properties | 1 + core/assets/shaders/default.frag | 9 ++++ core/assets/sprites/fog.png | Bin 0 -> 48485 bytes core/src/mindustry/content/Weathers.java | 33 +++++++++++--- core/src/mindustry/core/World.java | 3 +- core/src/mindustry/type/UnitType.java | 4 +- core/src/mindustry/type/Weather.java | 6 +-- .../type/weather/ParticleWeather.java | 41 +++++++++++------- core/src/mindustry/world/Block.java | 2 +- 9 files changed, 72 insertions(+), 27 deletions(-) create mode 100644 core/assets/shaders/default.frag create mode 100644 core/assets/sprites/fog.png diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index 1a3b4b1dde..d95145dfb6 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -512,6 +512,7 @@ weather.rain.name = Rain weather.snow.name = Snow weather.sandstorm.name = Sandstorm weather.sporestorm.name = Sporestorm +weather.fog.name = Fog sectors.unexplored = [lightgray]Unexplored sectors.resources = Resources: diff --git a/core/assets/shaders/default.frag b/core/assets/shaders/default.frag new file mode 100644 index 0000000000..93be3cffc9 --- /dev/null +++ b/core/assets/shaders/default.frag @@ -0,0 +1,9 @@ +varying lowp vec4 v_color; +varying lowp vec4 v_mix_color; +varying vec2 v_texCoords; +uniform sampler2D u_texture; + +void main(){ + vec4 c = texture2D(u_texture, v_texCoords); + gl_FragColor = v_color * mix(c, vec4(v_mix_color.rgb, c.a), v_mix_color.a); +} \ No newline at end of file diff --git a/core/assets/sprites/fog.png b/core/assets/sprites/fog.png new file mode 100644 index 0000000000000000000000000000000000000000..5121693e582c7a231147c9f919e2c5d917ad588b GIT binary patch literal 48485 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 literal 0 HcmV?d00001 diff --git a/core/src/mindustry/content/Weathers.java b/core/src/mindustry/content/Weathers.java index d3758eebfb..6f75d477ef 100644 --- a/core/src/mindustry/content/Weathers.java +++ b/core/src/mindustry/content/Weathers.java @@ -1,6 +1,7 @@ package mindustry.content; import arc.graphics.*; +import arc.util.*; import mindustry.ctype.*; import mindustry.type.*; import mindustry.type.weather.*; @@ -11,7 +12,8 @@ public class Weathers implements ContentList{ rain, snow, sandstorm, - sporestorm; + sporestorm, + fog; @Override public void load(){ @@ -29,8 +31,8 @@ public class Weathers implements ContentList{ }}; sandstorm = new ParticleWeather("sandstorm"){{ - color = stormColor = Color.valueOf("f7cba4"); - drawStorm = true; + color = noiseColor = Color.valueOf("f7cba4"); + drawNoise = true; useWindVector = true; sizeMax = 140f; sizeMin = 70f; @@ -45,9 +47,9 @@ public class Weathers implements ContentList{ }}; sporestorm = new ParticleWeather("sporestorm"){{ - color = stormColor = Color.valueOf("7457ce"); + color = noiseColor = Color.valueOf("7457ce"); particleRegion = "circle"; - drawStorm = true; + drawNoise = true; statusGround = false; useWindVector = true; sizeMax = 5f; @@ -62,5 +64,26 @@ public class Weathers implements ContentList{ opacityMultiplier = 0.85f; force = 0.1f; }}; + + fog = new ParticleWeather("fog"){{ + duration = 15f * Time.toMinutes; + noiseLayers = 3; + noiseLayerSclM = 0.8f; + noiseLayerAlphaM = 0.7f; + noiseLayerSpeedM = 2f; + noiseLayerSclM = 0.6f; + baseSpeed = 0.05f; + color = noiseColor = Color.grays(0.4f); + noiseScale = 1100f; + noisePath = "fog"; + drawParticles = false; + drawNoise = true; + useWindVector = false; + xspeed = 1f; + yspeed = 0.01f; + attrs.set(Attribute.light, -0.3f); + attrs.set(Attribute.water, 0.05f); + opacityMultiplier = 0.45f; + }}; } } diff --git a/core/src/mindustry/core/World.java b/core/src/mindustry/core/World.java index 41472410f4..60beec266b 100644 --- a/core/src/mindustry/core/World.java +++ b/core/src/mindustry/core/World.java @@ -310,7 +310,7 @@ public class World{ //TODO bad code boolean hasSnow = floors[0].name.contains("ice") || floors[0].name.contains("snow"); - boolean hasRain = !hasSnow && floors[0].name.contains("water"); + boolean hasRain = !hasSnow && content.contains(Liquids.water) && !floors[0].name.contains("sand"); boolean hasDesert = !hasSnow && !hasRain && floors[0].name.contains("sand"); boolean hasSpores = floors[0].name.contains("spore") || floors[0].name.contains("moss") || floors[0].name.contains("tainted"); @@ -320,6 +320,7 @@ public class World{ if(hasRain){ state.rules.weather.add(new WeatherEntry(Weathers.rain)); + state.rules.weather.add(new WeatherEntry(Weathers.fog)); } if(hasDesert){ diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index 55c1784fd3..43d5f05bd9 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -159,11 +159,11 @@ public class UnitType extends UnlockableContent{ table.table(bars -> { bars.defaults().growX().height(20f).pad(4); - bars.add(new Bar("blocks.health", Pal.health, unit::healthf).blink(Color.white)); + bars.add(new Bar("stat.health", Pal.health, unit::healthf).blink(Color.white)); bars.row(); if(state.rules.unitAmmo){ - bars.add(new Bar(ammoType.icon + " " + Core.bundle.get("blocks.ammo"), ammoType.barColor, () -> unit.ammo / ammoCapacity)); + bars.add(new Bar(ammoType.icon + " " + Core.bundle.get("stat.ammo"), ammoType.barColor, () -> unit.ammo / ammoCapacity)); bars.row(); } }).growX(); diff --git a/core/src/mindustry/type/Weather.java b/core/src/mindustry/type/Weather.java index 675e378541..4d17ab7c0e 100644 --- a/core/src/mindustry/type/Weather.java +++ b/core/src/mindustry/type/Weather.java @@ -209,15 +209,15 @@ public abstract class Weather extends UnlockableContent{ } } - public void drawNoise(Texture noise, Color color, float noisescl, float opacity, float baseSpeed, float intensity, Vec2 windVector){ + public void drawNoise(Texture noise, Color color, float noisescl, float opacity, float baseSpeed, float intensity, float vwindx, float vwindy, float offset){ Draw.alpha(opacity); Draw.tint(color); float speed = baseSpeed * intensity; - float windx = windVector.x * speed, windy = windVector.y * speed; + float windx = vwindx * speed, windy = vwindy * speed; float scale = 1f / noisescl; - float scroll = Time.time() * scale; + float scroll = Time.time() * scale + offset; Tmp.tr1.texture = noise; Core.camera.bounds(Tmp.r1); Tmp.tr1.set(Tmp.r1.x*scale, Tmp.r1.y*scale, (Tmp.r1.x + Tmp.r1.width)*scale, (Tmp.r1.y + Tmp.r1.height)*scale); diff --git a/core/src/mindustry/type/weather/ParticleWeather.java b/core/src/mindustry/type/weather/ParticleWeather.java index facb4d7297..060e9cbe62 100644 --- a/core/src/mindustry/type/weather/ParticleWeather.java +++ b/core/src/mindustry/type/weather/ParticleWeather.java @@ -15,8 +15,10 @@ public class ParticleWeather extends Weather{ public float yspeed = -2f, xspeed = 0.25f, padding = 16f, sizeMin = 2.4f, sizeMax = 12f, density = 1200f, minAlpha = 1f, maxAlpha = 1f, force = 0, noiseScale = 2000f, baseSpeed = 6.1f; public float sinSclMin = 30f, sinSclMax = 80f, sinMagMin = 1f, sinMagMax = 7f; - public Color stormColor = color; - public boolean drawStorm = false, drawParticles = true, useWindVector = false; + public Color noiseColor = color; + public boolean drawNoise = false, drawParticles = true, useWindVector = false; + public int noiseLayers = 1; + public float noiseLayerSpeedM = 1.1f, noiseLayerAlphaM = 0.8f, noiseLayerSclM = 0.99f, noiseLayerColorM = 1f; public String noisePath = "noiseAlpha"; public @Nullable Texture noise; @@ -32,7 +34,7 @@ public class ParticleWeather extends Weather{ //load noise texture //TODO mod support - if(drawStorm){ + if(drawNoise){ Core.assets.load("sprites/" + noisePath + ".png", Texture.class); } } @@ -52,27 +54,36 @@ public class ParticleWeather extends Weather{ @Override public void drawOver(WeatherState state){ - if(drawStorm){ + float windx, windy; + if(useWindVector){ + float speed = baseSpeed * state.intensity; + windx = state.windVector.x * speed; + windy = state.windVector.y * speed; + }else{ + windx = this.xspeed; + windy = this.yspeed; + } + + if(drawNoise){ if(noise == null){ noise = Core.assets.get("sprites/" + noisePath + ".png", Texture.class); noise.setWrap(TextureWrap.repeat); noise.setFilter(TextureFilter.linear); } - drawNoise(noise, stormColor, noiseScale, state.opacity, baseSpeed, state.intensity, state.windVector); + float sspeed = 1f, sscl = 1f, salpha = 1f, offset = 0f; + Color col = Tmp.c1.set(noiseColor); + for(int i = 0; i < noiseLayers; i++){ + drawNoise(noise, noiseColor, noiseScale * sscl, state.opacity * salpha * opacityMultiplier, baseSpeed * sspeed, state.intensity, windx, windy, offset); + sspeed *= noiseLayerSpeedM; + salpha *= noiseLayerAlphaM; + sscl *= noiseLayerSclM; + offset += 0.29f; + col.mul(noiseLayerColorM); + } } if(drawParticles){ - float windx, windy; - if(useWindVector){ - float speed = baseSpeed * state.intensity; - windx = state.windVector.x * speed; - windy = state.windVector.y * speed; - }else{ - windx = this.xspeed; - windy = this.yspeed; - } - drawParticles(region, color, sizeMin, sizeMax, density, state.intensity, state.opacity, windx, windy, minAlpha, maxAlpha, sinSclMin, sinSclMax, sinMagMin, sinMagMax); } } diff --git a/core/src/mindustry/world/Block.java b/core/src/mindustry/world/Block.java index f977a24743..09814e1333 100644 --- a/core/src/mindustry/world/Block.java +++ b/core/src/mindustry/world/Block.java @@ -343,7 +343,7 @@ public class Block extends UnlockableContent{ } public void setBars(){ - bars.add("health", entity -> new Bar("blocks.health", Pal.health, entity::healthf).blink(Color.white)); + bars.add("health", entity -> new Bar("stat.health", Pal.health, entity::healthf).blink(Color.white)); if(hasLiquids){ Func current;