aboutsummaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-07-26 18:27:18 +0200
committermetamuffin <metamuffin@disroot.org>2024-07-26 18:27:22 +0200
commit9c7673253f7dcc50d761345c3fdcd0d6d3654f3e (patch)
tree4a2c8c036f16e97c22767303a20d5be34635ef70 /client
parenteb6527dec240c94d8cd27573c96c83cea2618cb3 (diff)
downloadhurrycurry-9c7673253f7dcc50d761345c3fdcd0d6d3654f3e.tar
hurrycurry-9c7673253f7dcc50d761345c3fdcd0d6d3654f3e.tar.bz2
hurrycurry-9c7673253f7dcc50d761345c3fdcd0d6d3654f3e.tar.zst
add draft weather/environment system
Diffstat (limited to 'client')
-rw-r--r--client/game.gd2
-rw-r--r--client/game.tscn5
-rw-r--r--client/map/auto_setup/environment_setup.gd3
-rw-r--r--client/map/environment.gd10
-rw-r--r--client/map/environment.tscn73
-rw-r--r--client/multiplayer.gd3
6 files changed, 94 insertions, 2 deletions
diff --git a/client/game.gd b/client/game.gd
index e0b06772..b1f209a1 100644
--- a/client/game.gd
+++ b/client/game.gd
@@ -257,6 +257,8 @@ func _ready():
if lobby_state and not join_sent:
join()
)
+
+ mp.update_environment.connect($Environment.update)
func join():
join_sent = true
diff --git a/client/game.tscn b/client/game.tscn
index 345a35b8..a30e5fe2 100644
--- a/client/game.tscn
+++ b/client/game.tscn
@@ -1,4 +1,4 @@
-[gd_scene load_steps=10 format=3 uid="uid://c6krh36hoqfg8"]
+[gd_scene load_steps=11 format=3 uid="uid://c6krh36hoqfg8"]
[ext_resource type="Script" path="res://game.gd" id="1_sftfn"]
[ext_resource type="PackedScene" uid="uid://b31mlnao6ybt8" path="res://player/follow_camera.tscn" id="2_s8y6o"]
@@ -6,6 +6,7 @@
[ext_resource type="Script" path="res://map/auto_setup/light_setup.gd" id="5_6fpff"]
[ext_resource type="Script" path="res://multiplayer.gd" id="6_fbxu8"]
[ext_resource type="PackedScene" uid="uid://b4gone8fu53r7" path="res://map/map.tscn" id="6_prg6t"]
+[ext_resource type="PackedScene" uid="uid://nroo08m5og0" path="res://map/environment.tscn" id="7_v2apt"]
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_py7px"]
ground_bottom_color = Color(0.0826605, 0.065772, 0.0461518, 1)
@@ -45,3 +46,5 @@ script = ExtResource("5_6fpff")
[node name="Map" parent="." instance=ExtResource("6_prg6t")]
[node name="Center" type="Node3D" parent="."]
+
+[node name="Environment" parent="." instance=ExtResource("7_v2apt")]
diff --git a/client/map/auto_setup/environment_setup.gd b/client/map/auto_setup/environment_setup.gd
index 96feb86b..75dc900f 100644
--- a/client/map/auto_setup/environment_setup.gd
+++ b/client/map/auto_setup/environment_setup.gd
@@ -14,7 +14,7 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
extends WorldEnvironment
-class_name EnvironmentSetup
+class_name EnvironmentSetup
@export var allow_sdfgi := true
@@ -26,3 +26,4 @@ func apply_settings():
environment.ssao_enabled = Global.get_setting("ssao")
environment.sdfgi_enabled = Global.get_setting("sdfgi") and allow_sdfgi
environment.glow_enabled = Global.get_setting("glow")
+
diff --git a/client/map/environment.gd b/client/map/environment.gd
new file mode 100644
index 00000000..f36b51b6
--- /dev/null
+++ b/client/map/environment.gd
@@ -0,0 +1,10 @@
+extends Node3D
+
+func update(params: Dictionary):
+ $Wind.emitting = params["wind"] > 0.1
+ var a: ParticleProcessMaterial = $Wind.process_material
+ a.initial_velocity_max = params["wind"] * 15.
+ a.initial_velocity_min = params["wind"] * 15.
+
+ $Rain.emitting = params["rain"] > 0.1
+ $Rain.amount = params["rain"] * 500
diff --git a/client/map/environment.tscn b/client/map/environment.tscn
new file mode 100644
index 00000000..ee51b490
--- /dev/null
+++ b/client/map/environment.tscn
@@ -0,0 +1,73 @@
+[gd_scene load_steps=10 format=3 uid="uid://nroo08m5og0"]
+
+[ext_resource type="Script" path="res://map/environment.gd" id="1_qy481"]
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_fyrr8"]
+emission_shape_offset = Vector3(0, 5, 0)
+emission_shape = 3
+emission_box_extents = Vector3(5, 5, 5)
+direction = Vector3(0, -1, 0)
+spread = 5.0
+initial_velocity_min = 10.0
+initial_velocity_max = 10.0
+scale_over_velocity_max = 1000.0
+turbulence_influence_min = 0.01
+turbulence_influence_max = 0.01
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6mo3f"]
+depth_draw_mode = 2
+albedo_color = Color(0.792157, 0.74902, 1, 1)
+roughness = 0.07
+
+[sub_resource type="CapsuleMesh" id="CapsuleMesh_6kss1"]
+material = SubResource("StandardMaterial3D_6mo3f")
+radius = 0.01
+height = 0.5
+radial_segments = 4
+rings = 4
+
+[sub_resource type="Curve" id="Curve_frsnm"]
+_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.111524, 0.771057), 1.26444, 1.26444, 0, 0, Vector2(0.866171, 0.820827), -1.03348, -1.03348, 0, 0, Vector2(1, 0), 0.0, 0.0, 0, 0]
+point_count = 4
+
+[sub_resource type="CurveTexture" id="CurveTexture_3gn1x"]
+curve = SubResource("Curve_frsnm")
+
+[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_pyn6b"]
+emission_shape_offset = Vector3(-2.5, 0, 0)
+emission_shape = 3
+emission_box_extents = Vector3(5, 5, 5)
+spread = 5.0
+initial_velocity_min = 2.0
+initial_velocity_max = 2.0
+gravity = Vector3(0, 0, 0)
+scale_curve = SubResource("CurveTexture_3gn1x")
+scale_over_velocity_max = 1000.0
+turbulence_enabled = true
+turbulence_influence_min = 0.01
+turbulence_influence_max = 0.01
+
+[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ig8qu"]
+depth_draw_mode = 2
+albedo_color = Color(0.412412, 0.527344, 0.250208, 1)
+
+[sub_resource type="SphereMesh" id="SphereMesh_4trvf"]
+material = SubResource("StandardMaterial3D_ig8qu")
+radius = 0.03
+height = 0.06
+
+[node name="Environment" type="Node3D"]
+script = ExtResource("1_qy481")
+
+[node name="Rain" type="GPUParticles3D" parent="."]
+emitting = false
+amount = 500
+process_material = SubResource("ParticleProcessMaterial_fyrr8")
+draw_pass_1 = SubResource("CapsuleMesh_6kss1")
+
+[node name="Wind" type="GPUParticles3D" parent="."]
+emitting = false
+amount = 150
+lifetime = 5.0
+process_material = SubResource("ParticleProcessMaterial_pyn6b")
+draw_pass_1 = SubResource("SphereMesh_4trvf")
diff --git a/client/multiplayer.gd b/client/multiplayer.gd
index cd697672..0e3b450a 100644
--- a/client/multiplayer.gd
+++ b/client/multiplayer.gd
@@ -50,6 +50,7 @@ signal set_tile_finished(tile: Vector2i, warn: bool)
signal set_player_finished(player: int, warn: bool)
signal set_ingame(state: bool, lobby: bool)
signal score(demands_failed: int, demands_completed: int, points: int, time_remaining: float)
+signal update_environment(params: Dictionary)
signal server_message(text: String)
signal replay_start()
signal connection_closed(reason: String)
@@ -265,6 +266,8 @@ func handle_packet(bytes: PackedByteArray):
"server_message":
var text = decoded["text"]
server_message.emit(text)
+ "update_environment":
+ update_environment.emit(decoded)
"replay_start": replay_start.emit()
_:
push_error("Unrecognized packet type: %s" % packet_type)