M1c: weather, snap building, shelter, beds and regrowth

- Seeded weather (clear/cloudy/rain/storm, snow and blizzards on cold days
  and above the snowline), lightning, synthesised rain/wind/thunder sound
- Rain/snow particles stopped by roofs; wet ground, settled snow and wind
  via global shader uniforms
- Snap-together wood floor, wall, door, roof and gable with structural
  support, collapse and X to dismantle
- Shelter detection: dry under a roof, warmer and Rested inside with a fire;
  rain burns an uncovered campfire faster
- Bed sets the spawn point and lets you sleep through the night
- Trees, boulders and ground pickups regrow; timers saved
- Grass cleared under floors; shorter HUD hint
- New test_weather_building suite (62 checks) and tests/run_all.sh, which
  also fails on script errors
This commit is contained in:
Paul Bailey
2026-11-04 10:16:41 +00:00
parent fc7eb3cfed
commit fed96ef118
36 changed files with 2421 additions and 58 deletions

View File

@@ -5,6 +5,22 @@
uniform sampler2D noise_tex : filter_linear_mipmap, repeat_enable;
// Set every frame by weather_fx.gd (declared in project.godot [shader_globals]).
global uniform float weather_wet; // 0..1 rain-soaked ground
global uniform float weather_snow; // 0..1 settled snow
global uniform float weather_wind; // wind multiplier, ~1 on a calm day
// Wet surfaces: darker and glossier.
vec3 wet_albedo(vec3 c, float wet) {
return c * (1.0 - 0.35 * wet);
}
// Settled snow on upward-facing surfaces, patchy where it's thin.
float snow_mask(float up, float patch) {
float s = weather_snow * 1.25 - (1.0 - patch) * 0.45;
return clamp(s, 0.0, 1.0) * smoothstep(0.55, 0.85, up);
}
float nz(vec2 p) {
return texture(noise_tex, p).r;
}