diff --git a/core/assets-raw/sprites/blocks/environment/pooled-cryofluid.png b/core/assets-raw/sprites/blocks/environment/pooled-cryofluid.png new file mode 100644 index 0000000000..9d50189fd9 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/pooled-cryofluid.png differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index ec9d07e948..b1d30ffb15 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1133,6 +1133,7 @@ block.sand-boulder.name = Sand Boulder block.basalt-boulder.name = Basalt Boulder block.grass.name = Grass block.molten-slag.name = Slag +block.pooled-cryofluid.name = Cryofluid block.space.name = Space block.salt.name = Salt block.salt-wall.name = Salt Wall diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties index a7cba12f74..beddcd7a3d 100755 --- a/core/assets/icons/icons.properties +++ b/core/assets/icons/icons.properties @@ -360,3 +360,4 @@ 63348=molten-slag|block-molten-slag-ui 63347=crater-stone|block-crater-stone-ui 63346=deep-tainted-water|block-deep-tainted-water-ui +63345=pooled-cryofluid|block-pooled-cryofluid-ui diff --git a/core/assets/shaders/cryofluid.frag b/core/assets/shaders/cryofluid.frag new file mode 100644 index 0000000000..cbc05d8845 --- /dev/null +++ b/core/assets/shaders/cryofluid.frag @@ -0,0 +1,35 @@ +#define HIGHP + +//shades of cryofluid +#define S1 vec3(53.0, 83.0, 93.0) / 100.0 +#define S2 vec3(68.0, 90.0, 97.0) / 100.0 +#define NSCALE 100.0 / 2.0 + +uniform sampler2D u_texture; +uniform sampler2D u_noise; + +uniform vec2 u_campos; +uniform vec2 u_resolution; +uniform float u_time; + +varying vec2 v_texCoords; + +const float shakeScl = 20.0; + +void main(){ + vec2 c = v_texCoords.xy; + vec2 coords = vec2(c.x * u_resolution.x + u_campos.x, c.y * u_resolution.y + u_campos.y); + + float btime = u_time / 3000.0; + float wave = abs(sin(coords.x * 1.1 + coords.y) + 0.1 * sin(2.5 * coords.x) + 0.15 * sin(3.0 * coords.y)) / 30.0; + float noise = wave + (texture2D(u_noise, (coords) / NSCALE + vec2(btime) * vec2(-0.2, 0.8)).r + texture2D(u_noise, (coords) / NSCALE + vec2(btime * 1.1) * vec2(0.8, -1.0)).r) / 2.0; + vec4 color = texture2D(u_texture, c); + + if (noise > 0.55 && noise < 0.56) { + color.rgb = S2; + } else if (noise > 0.50 && noise < 0.60){ + color.rgb = S1; + } + + gl_FragColor = color; +} diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index d944f433f0..acd40284f6 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -35,7 +35,7 @@ public class Blocks implements ContentList{ public static Block //environment - air, spawn, cliff, deepwater, water, taintedWater, deepTaintedWater, tar, slag, stone, craters, charr, sand, darksand, dirt, mud, ice, snow, darksandTaintedWater, space, + air, spawn, cliff, deepwater, water, taintedWater, deepTaintedWater, tar, slag, cryofluid, stone, craters, charr, sand, darksand, dirt, mud, ice, snow, darksandTaintedWater, space, dacite, stoneWall, dirtWall, sporeWall, iceWall, daciteWall, sporePine, snowPine, pine, shrubs, whiteTree, whiteTreeDead, sporeCluster, iceSnow, sandWater, darksandWater, duneWall, sandWall, moss, sporeMoss, shale, shaleWall, shaleBoulder, sandBoulder, daciteBoulder, boulder, snowBoulder, basaltBoulder, grass, salt, @@ -196,6 +196,22 @@ public class Blocks implements ContentList{ cacheLayer = CacheLayer.tar; }}; + cryofluid = new Floor("pooled-cryofluid"){{ + drownTime = 150f; + status = StatusEffects.freezing; + statusDuration = 240f; + speedMultiplier = 0.5f; + variants = 0; + liquidDrop = Liquids.cryofluid; + liquidMultiplier = 0.5f; + isLiquid = true; + cacheLayer = CacheLayer.cryofluid; + + emitLight = true; + lightRadius = 20f; + lightColor = Color.cyan.cpy().a(0.19f); + }}; + slag = new Floor("molten-slag"){{ drownTime = 150f; status = StatusEffects.melting; diff --git a/core/src/mindustry/graphics/CacheLayer.java b/core/src/mindustry/graphics/CacheLayer.java index a68b7f6e06..3921612853 100644 --- a/core/src/mindustry/graphics/CacheLayer.java +++ b/core/src/mindustry/graphics/CacheLayer.java @@ -10,7 +10,7 @@ import static mindustry.Vars.*; public class CacheLayer{ public static CacheLayer - water, mud, tar, slag, space, normal, walls; + water, mud, cryofluid, tar, slag, space, normal, walls; public static CacheLayer[] all = {}; @@ -37,6 +37,7 @@ public class CacheLayer{ mud = new ShaderLayer(Shaders.mud), tar = new ShaderLayer(Shaders.tar), slag = new ShaderLayer(Shaders.slag), + cryofluid = new ShaderLayer(Shaders.cryofluid), space = new ShaderLayer(Shaders.space), normal = new CacheLayer(), walls = new CacheLayer() diff --git a/core/src/mindustry/graphics/Shaders.java b/core/src/mindustry/graphics/Shaders.java index 7ea78a2549..33026d6fe1 100644 --- a/core/src/mindustry/graphics/Shaders.java +++ b/core/src/mindustry/graphics/Shaders.java @@ -21,7 +21,7 @@ public class Shaders{ public static UnitBuildShader build; public static DarknessShader darkness; public static LightShader light; - public static SurfaceShader water, mud, tar, slag, space, caustics; + public static SurfaceShader water, mud, tar, slag, cryofluid, space, caustics; public static PlanetShader planet; public static PlanetGridShader planetGrid; public static AtmosphereShader atmosphere; @@ -47,6 +47,7 @@ public class Shaders{ mud = new SurfaceShader("mud"); tar = new SurfaceShader("tar"); slag = new SurfaceShader("slag"); + cryofluid = new SurfaceShader("cryofluid"); space = new SpaceShader("space"); //caustics = new SurfaceShader("caustics"){ // @Override