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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 pLPd8m^E`2 { 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;