feat: tavern — add spore overlay CanvasLayer + shader driven by overlay_changed signal
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user