From 3e985b08e7a21931bd2b9f4136ebb794093dd27f Mon Sep 17 00:00:00 2001 From: "s0wlz (Matthias Puchstein)" Date: Thu, 16 Apr 2026 00:28:09 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20tavern=20=E2=80=94=20add=20spore=20over?= =?UTF-8?q?lay=20CanvasLayer=20+=20shader=20driven=20by=20overlay=5Fchange?= =?UTF-8?q?d=20signal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruf-der-pilze/scripts/tavern.gd | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/ruf-der-pilze/scripts/tavern.gd b/ruf-der-pilze/scripts/tavern.gd index 27c053b..e96f163 100644 --- a/ruf-der-pilze/scripts/tavern.gd +++ b/ruf-der-pilze/scripts/tavern.gd @@ -5,6 +5,7 @@ const INTERACT_DISTANCE := 2.5 var _modifier: int = 0 var _roll_log: RichTextLabel +var _spore_mat: ShaderMaterial func _ready() -> void: @@ -23,6 +24,7 @@ func _ready() -> void: timer.timeout.connect(_broadcast_camera_transform) add_child(timer) _setup_dice_ui() + _setup_spore_overlay() func _get_dm_peer_id() -> int: @@ -142,6 +144,28 @@ func _on_roll_pressed() -> void: NetworkManager.broadcast_roll.rpc_id(1, NetworkManager.my_id, d20, _modifier) +func _setup_spore_overlay() -> void: + var canvas := CanvasLayer.new() + canvas.name = "SporeOverlay" + canvas.layer = 10 + add_child(canvas) + + var rect := ColorRect.new() + rect.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT) + rect.mouse_filter = Control.MOUSE_FILTER_IGNORE + _spore_mat = ShaderMaterial.new() + _spore_mat.shader = load("res://shaders/spore_overlay.gdshader") as Shader + rect.material = _spore_mat + canvas.add_child(rect) + + NetworkManager.overlay_changed.connect(_on_overlay_changed) + + +func _on_overlay_changed(overlay_name: String) -> void: + var intensity := 1.0 if overlay_name == "spore_active" else 0.0 + _spore_mat.set_shader_parameter("intensity", intensity) + + func _on_roll_received(roller_peer_id: int, player_name: String, d20_result: int, modifier: int, total: int) -> void: var mod_str := " %+d" % modifier if modifier != 0 else "" var line := "[b]%s[/b] würfelt %d%s = [b]%d[/b]" % [player_name, d20_result, mod_str, total]