From f2dcd332f4269e25bcd1aa327008d5f9668d54d5 Mon Sep 17 00:00:00 2001 From: minimata Date: Sat, 31 Jan 2026 12:41:56 +0100 Subject: [PATCH] Basic guest list --- resources/characters/duchex.tres | 4 + resources/characters/duke.tres | 3 + resources/characters/queen.tres | 2 + scenes/camera/camera_controller.gd | 36 ++++ scenes/camera/camera_controller.gd.uid | 1 + scenes/character/character.gd | 9 +- scenes/character/character.tscn | 10 +- scenes/main.tscn | 24 --- scenes/main/main.gd | 29 +++ scenes/main/main.gd.uid | 1 + scenes/main/main.tscn | 250 +++++++++++++++++++++++++ scenes/mask/mask.gd | 6 +- 12 files changed, 335 insertions(+), 40 deletions(-) create mode 100644 scenes/camera/camera_controller.gd create mode 100644 scenes/camera/camera_controller.gd.uid delete mode 100644 scenes/main.tscn create mode 100644 scenes/main/main.gd create mode 100644 scenes/main/main.gd.uid create mode 100644 scenes/main/main.tscn diff --git a/resources/characters/duchex.tres b/resources/characters/duchex.tres index e241868..9d4bf5e 100644 --- a/resources/characters/duchex.tres +++ b/resources/characters/duchex.tres @@ -12,6 +12,10 @@ script = ExtResource("2_cyb15") name = "Duchex" chara_sprite = ExtResource("1_tppor") +mask_eyes_position = Vector2(-65.16, -435.27) +mask_eyes_rotation = 0.029670597283903404 +mask_mouth_position = Vector2(-20.035, -304.18) +mask_mouth_rotation = -0.17627825445142767 traits = Array[ExtResource("3_s53hh")]([ExtResource("4_tppor"), ExtResource("5_cyb15"), ExtResource("6_tppor"), ExtResource("7_03y2d")]) preferences = Dictionary[int, int]({ 0: 0, diff --git a/resources/characters/duke.tres b/resources/characters/duke.tres index 09534b7..19218a5 100644 --- a/resources/characters/duke.tres +++ b/resources/characters/duke.tres @@ -12,6 +12,9 @@ script = ExtResource("2_ce0p8") name = "Duke" chara_sprite = ExtResource("1_d1fpd") +mask_eyes_position = Vector2(-87.17, -459.345) +mask_eyes_rotation = 0.11693705988361988 +mask_mouth_position = Vector2(-60.07, -343.01) traits = Array[ExtResource("3_n21sh")]([ExtResource("4_d1fpd"), ExtResource("5_12asi"), ExtResource("6_12asi"), ExtResource("7_d1fpd")]) preferences = Dictionary[int, int]({ 5: 0, diff --git a/resources/characters/queen.tres b/resources/characters/queen.tres index abd5387..76e3373 100644 --- a/resources/characters/queen.tres +++ b/resources/characters/queen.tres @@ -13,6 +13,8 @@ script = ExtResource("2_g8bvo") name = "Queen" chara_sprite = ExtResource("1_g8bvo") +mask_eyes_position = Vector2(-58.06, -232.2) +mask_mouth_position = Vector2(-27.795, -167.255) traits = Array[ExtResource("3_dkw07")]([ExtResource("9_aywjr"), ExtResource("8_j0xhd"), ExtResource("10_tw1u2"), ExtResource("8_d1164"), ExtResource("11_utmh4")]) preferences = Dictionary[int, int]({ 5: 2, diff --git a/scenes/camera/camera_controller.gd b/scenes/camera/camera_controller.gd new file mode 100644 index 0000000..e0cfece --- /dev/null +++ b/scenes/camera/camera_controller.gd @@ -0,0 +1,36 @@ +extends Camera2D + + +@export_range(0.0, 100) var pan_speed: float = 1.0 + +var should_move_right = false +var should_move_left = false + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + if should_move_right: + position.x += pan_speed + if should_move_left: + position.x -= pan_speed + + +func _on_pan_right_mouse_entered() -> void: + should_move_right = true + + +func _on_pan_right_mouse_exited() -> void: + should_move_right = false + + +func _on_pan_left_mouse_entered() -> void: + should_move_left = true + + +func _on_pan_left_mouse_exited() -> void: + should_move_left = false diff --git a/scenes/camera/camera_controller.gd.uid b/scenes/camera/camera_controller.gd.uid new file mode 100644 index 0000000..8b2edc8 --- /dev/null +++ b/scenes/camera/camera_controller.gd.uid @@ -0,0 +1 @@ +uid://cgctwciolfqe5 diff --git a/scenes/character/character.gd b/scenes/character/character.gd index dcc3f4e..f47ef2d 100644 --- a/scenes/character/character.gd +++ b/scenes/character/character.gd @@ -6,9 +6,6 @@ class_name Character set(new_resource): chara_resource = new_resource _on_chara_resource_changed() - if chara_resource == null: - return - chara_resource.changed.connect(_on_chara_resource_changed) @onready var face: Sprite2D = $Face @onready var mask_eyes: Mask = $MaskEyes @@ -17,8 +14,8 @@ class_name Character func _on_chara_resource_changed() -> void: if chara_resource == null: return - - face.texture = chara_resource.chara_sprite + if face != null: + face.texture = chara_resource.chara_sprite # Called when the node enters the scene tree for the first time. @@ -35,7 +32,7 @@ func _process(delta: float) -> void: func _game_process(delta: float) -> void: - pass + pass func _engine_process(delta: float) -> void: diff --git a/scenes/character/character.tscn b/scenes/character/character.tscn index 0f73a51..7b6f4c5 100644 --- a/scenes/character/character.tscn +++ b/scenes/character/character.tscn @@ -1,8 +1,8 @@ [gd_scene format=3 uid="uid://bvpyqyftqhy45"] [ext_resource type="Script" uid="uid://dnt4l1eghm1gi" path="res://scenes/character/character.gd" id="1_cuyo6"] -[ext_resource type="Resource" uid="uid://da2ptl3f7h0ot" path="res://resources/characters/king.tres" id="2_fgi2k"] -[ext_resource type="Texture2D" uid="uid://c57s3oksagauh" path="res://assets/sprites/sprites by judas la carotte/sprite3 happy small.png" id="3_f8hpl"] +[ext_resource type="Resource" uid="uid://wq3g1j3l4gl6" path="res://resources/characters/queen.tres" id="2_fgi2k"] +[ext_resource type="Texture2D" uid="uid://b60pu6ukbobb2" path="res://assets/sprites/sprites by judas la carotte/sprite1 happy small.png" id="3_f8hpl"] [ext_resource type="PackedScene" uid="uid://3jlukpb5hefb" path="res://scenes/mask/mask.tscn" id="3_mutn8"] [node name="Character" type="Node2D" unique_id=138741531] @@ -13,9 +13,7 @@ chara_resource = ExtResource("2_fgi2k") texture = ExtResource("3_f8hpl") [node name="MaskMouth" parent="." unique_id=1087336064 instance=ExtResource("3_mutn8")] -position = Vector2(-7.63, -186.87) -rotation = -0.18849556 +position = Vector2(-27.795, -167.255) [node name="MaskEyes" parent="." unique_id=428968220 instance=ExtResource("3_mutn8")] -position = Vector2(-21.75, -274.015) -rotation = 0.06981317 +position = Vector2(-58.06, -232.2) diff --git a/scenes/main.tscn b/scenes/main.tscn deleted file mode 100644 index 368198d..0000000 --- a/scenes/main.tscn +++ /dev/null @@ -1,24 +0,0 @@ -[gd_scene format=3 uid="uid://cukfdjcnb5tm6"] - -[ext_resource type="PackedScene" uid="uid://bvpyqyftqhy45" path="res://scenes/character/character.tscn" id="1_o5qli"] -[ext_resource type="Script" uid="uid://b1w0ocrgjkjen" path="res://scenes/managers/game_manager.gd" id="2_0wfyh"] -[ext_resource type="Script" uid="uid://bwam50qxikpw4" path="res://scenes/character/chara_resource.gd" id="3_o6xl0"] -[ext_resource type="Resource" uid="uid://c87odmn680x7" path="res://resources/characters/duchex.tres" id="4_tipki"] -[ext_resource type="Resource" uid="uid://gy4ygqrjj5ys" path="res://resources/characters/duke.tres" id="5_85g3d"] -[ext_resource type="Resource" uid="uid://da2ptl3f7h0ot" path="res://resources/characters/king.tres" id="6_choun"] -[ext_resource type="Resource" uid="uid://wq3g1j3l4gl6" path="res://resources/characters/queen.tres" id="7_ya4ey"] -[ext_resource type="Script" uid="uid://d26mv2xtvmpqt" path="res://scenes/mask/mask_resource.gd" id="8_ya4ey"] -[ext_resource type="Resource" uid="uid://cuf1ocb4px4m3" path="res://resources/masks/cat.tres" id="9_eb6dy"] -[ext_resource type="Resource" uid="uid://pdiaprcknftw" path="res://resources/masks/mute.tres" id="10_trceg"] -[ext_resource type="Resource" uid="uid://cbcqtj8mxngfy" path="res://resources/masks/unracist.tres" id="11_a8y0u"] - -[node name="Main" type="Node2D" unique_id=875553242] - -[node name="Character" parent="." unique_id=138741531 instance=ExtResource("1_o5qli")] -position = Vector2(933, 598) -scale = Vector2(0.5488516, 0.5501616) - -[node name="GameManager" type="Node" parent="." unique_id=528989100] -script = ExtResource("2_0wfyh") -character_roster = Array[ExtResource("3_o6xl0")]([ExtResource("4_tipki"), ExtResource("5_85g3d"), ExtResource("6_choun"), ExtResource("7_ya4ey")]) -mask_roster = Array[ExtResource("8_ya4ey")]([ExtResource("9_eb6dy"), ExtResource("10_trceg"), ExtResource("11_a8y0u")]) diff --git a/scenes/main/main.gd b/scenes/main/main.gd new file mode 100644 index 0000000..5b1786f --- /dev/null +++ b/scenes/main/main.gd @@ -0,0 +1,29 @@ +extends Node2D + +@onready var animation_player: AnimationPlayer = $AnimationPlayer +@onready var sfx_player: AudioStreamPlayer = $SFXPlayer +var stream_player: AudioStreamPlaybackInteractive + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + stream_player = sfx_player.get_stream_playback() as AudioStreamPlaybackInteractive + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass + + +func play_list_up_sfx() -> void: + stream_player.switch_to_clip_by_name("list_up") + +func play_list_down_sfx() -> void: + stream_player.switch_to_clip_by_name("list_down") + + +func _on_guest_list_mouse_entered() -> void: + animation_player.play("guest_list_up") + + +func _on_guest_list_mouse_exited() -> void: + animation_player.play("guest_list_down") diff --git a/scenes/main/main.gd.uid b/scenes/main/main.gd.uid new file mode 100644 index 0000000..076a7fb --- /dev/null +++ b/scenes/main/main.gd.uid @@ -0,0 +1 @@ +uid://bqrfmft2g1agc diff --git a/scenes/main/main.tscn b/scenes/main/main.tscn new file mode 100644 index 0000000..c71efc3 --- /dev/null +++ b/scenes/main/main.tscn @@ -0,0 +1,250 @@ +[gd_scene format=3 uid="uid://cukfdjcnb5tm6"] + +[ext_resource type="Script" uid="uid://bqrfmft2g1agc" path="res://scenes/main/main.gd" id="1_7smn1"] +[ext_resource type="AudioStream" uid="uid://cv42wcg48s7pe" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-1.ogg" id="2_m4h2d"] +[ext_resource type="PackedScene" uid="uid://bvpyqyftqhy45" path="res://scenes/character/character.tscn" id="2_raeie"] +[ext_resource type="Script" uid="uid://b1w0ocrgjkjen" path="res://scenes/managers/game_manager.gd" id="3_hxu8e"] +[ext_resource type="AudioStream" uid="uid://cfv8y85lm0rv1" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-2.ogg" id="3_p8abn"] +[ext_resource type="Script" uid="uid://bwam50qxikpw4" path="res://scenes/character/chara_resource.gd" id="4_nvumn"] +[ext_resource type="AudioStream" uid="uid://b0eggikcow8xr" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-3.ogg" id="4_s17dp"] +[ext_resource type="AudioStream" uid="uid://5n4xmrthp0em" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-4.ogg" id="5_37hlw"] +[ext_resource type="Resource" uid="uid://c87odmn680x7" path="res://resources/characters/duchex.tres" id="5_ou6is"] +[ext_resource type="AudioStream" uid="uid://c0winrfat714w" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-5.ogg" id="6_6llfj"] +[ext_resource type="Resource" uid="uid://gy4ygqrjj5ys" path="res://resources/characters/duke.tres" id="6_necax"] +[ext_resource type="AudioStream" uid="uid://cbew82s7f33tm" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-6.ogg" id="7_0bhws"] +[ext_resource type="Resource" uid="uid://da2ptl3f7h0ot" path="res://resources/characters/king.tres" id="7_r4lks"] +[ext_resource type="AudioStream" uid="uid://dbwso01ip7fy3" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-7.ogg" id="8_62atk"] +[ext_resource type="Resource" uid="uid://wq3g1j3l4gl6" path="res://resources/characters/queen.tres" id="8_pg34l"] +[ext_resource type="AudioStream" uid="uid://x6erlvj03nlm" path="res://assets/audio/kenney_casino-audio/Audio/card-slide-8.ogg" id="9_i7in8"] +[ext_resource type="Script" uid="uid://d26mv2xtvmpqt" path="res://scenes/mask/mask_resource.gd" id="9_m4h2d"] +[ext_resource type="AudioStream" uid="uid://vrw6idscfnei" path="res://assets/audio/kenney_casino-audio/Audio/card-shove-1.ogg" id="10_6llfj"] +[ext_resource type="Resource" uid="uid://cuf1ocb4px4m3" path="res://resources/masks/cat.tres" id="10_p8abn"] +[ext_resource type="AudioStream" uid="uid://b5ea6pr6bv85d" path="res://assets/audio/kenney_casino-audio/Audio/card-shove-2.ogg" id="11_0bhws"] +[ext_resource type="Resource" uid="uid://pdiaprcknftw" path="res://resources/masks/mute.tres" id="11_s17dp"] +[ext_resource type="Resource" uid="uid://cbcqtj8mxngfy" path="res://resources/masks/unracist.tres" id="12_37hlw"] +[ext_resource type="AudioStream" uid="uid://dpv07j0ia0ayl" path="res://assets/audio/kenney_casino-audio/Audio/card-shove-3.ogg" id="12_62atk"] +[ext_resource type="Texture2D" uid="uid://cftllq6l7xclt" path="res://icon.svg" id="13_6llfj"] +[ext_resource type="AudioStream" uid="uid://b7pe3ogc8rbvx" path="res://assets/audio/kenney_casino-audio/Audio/card-shove-4.ogg" id="13_i7in8"] +[ext_resource type="Script" uid="uid://cgctwciolfqe5" path="res://scenes/camera/camera_controller.gd" id="14_0bhws"] + +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_gkmcc"] +random_pitch = 1.122462 +streams_count = 8 +stream_0/stream = ExtResource("2_m4h2d") +stream_1/stream = ExtResource("3_p8abn") +stream_2/stream = ExtResource("4_s17dp") +stream_3/stream = ExtResource("5_37hlw") +stream_4/stream = ExtResource("6_6llfj") +stream_5/stream = ExtResource("7_0bhws") +stream_6/stream = ExtResource("8_62atk") +stream_7/stream = ExtResource("9_i7in8") + +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_7nlll"] +random_pitch = 1.122462 +streams_count = 4 +stream_0/stream = ExtResource("10_6llfj") +stream_1/stream = ExtResource("11_0bhws") +stream_2/stream = ExtResource("12_62atk") +stream_3/stream = ExtResource("13_i7in8") + +[sub_resource type="AudioStreamInteractive" id="AudioStreamInteractive_7smn1"] +clip_count = 2 +clip_0/name = &"list_up" +clip_0/stream = SubResource("AudioStreamRandomizer_gkmcc") +clip_0/auto_advance = 0 +clip_1/name = &"list_down" +clip_1/stream = SubResource("AudioStreamRandomizer_7nlll") +clip_1/auto_advance = 0 +initial_clip = 1 +_transitions = { +Vector2i(-1, -1): { +"fade_beats": 1.0, +"fade_mode": 4, +"from_time": 0, +"to_time": 1 +} +} + +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_trceg"] +radius = 198.0 +height = 1044.0 + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_ya4ey"] +size = Vector2(512, 1080) + +[sub_resource type="Animation" id="Animation_7smn1"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("GuestList:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-409, 523)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("GuestList:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [-0.16732943] +} + +[sub_resource type="Animation" id="Animation_hxu8e"] +resource_name = "guest_list_down" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("GuestList:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(-388, 176), Vector2(-409, 523)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("GuestList:rotation") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, -0.16732943] +} +tracks/2/type = "method" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath(".") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"play_list_down_sfx" +}] +} + +[sub_resource type="Animation" id="Animation_raeie"] +resource_name = "guest_list_up" +length = 0.5 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("GuestList:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(-409, 523), Vector2(-388, 176)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("GuestList:rotation") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [-0.16732943, 0.0] +} +tracks/2/type = "method" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath(".") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"play_list_up_sfx" +}] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_hxu8e"] +_data = { +&"RESET": SubResource("Animation_7smn1"), +&"guest_list_down": SubResource("Animation_hxu8e"), +&"guest_list_up": SubResource("Animation_raeie") +} + +[node name="Main" type="Node2D" unique_id=875553242] +script = ExtResource("1_7smn1") + +[node name="SFXPlayer" type="AudioStreamPlayer" parent="." unique_id=831453323] +stream = SubResource("AudioStreamInteractive_7smn1") +autoplay = true +bus = &"SFX" + +[node name="Character" parent="." unique_id=138741531 instance=ExtResource("2_raeie")] +scale = Vector2(0.5488516, 0.5501616) + +[node name="GameManager" type="Node" parent="." unique_id=528989100] +script = ExtResource("3_hxu8e") +character_roster = Array[ExtResource("4_nvumn")]([ExtResource("5_ou6is"), ExtResource("6_necax"), ExtResource("7_r4lks"), ExtResource("8_pg34l")]) +mask_roster = Array[ExtResource("9_m4h2d")]([ExtResource("10_p8abn"), ExtResource("11_s17dp"), ExtResource("12_37hlw")]) + +[node name="GuestList" type="Node2D" parent="." unique_id=1314693850] +position = Vector2(-409, 523) +rotation = -0.16732943 + +[node name="Sprite2D" type="Sprite2D" parent="GuestList" unique_id=508689157] +texture = ExtResource("13_6llfj") + +[node name="Area2D" type="Area2D" parent="GuestList" unique_id=416235822] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="GuestList/Area2D" unique_id=845691842] +shape = SubResource("CapsuleShape2D_trceg") + +[node name="Camera2D" type="Camera2D" parent="." unique_id=1166192115] +limit_left = -960 +limit_top = -540 +limit_right = 4096 +limit_bottom = 540 +position_smoothing_enabled = true +script = ExtResource("14_0bhws") +pan_speed = 10.0 + +[node name="PanRight" type="Area2D" parent="Camera2D" unique_id=1684320772] +position = Vector2(960, 0) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Camera2D/PanRight" unique_id=1733069282] +shape = SubResource("RectangleShape2D_ya4ey") + +[node name="PanLeft" type="Area2D" parent="Camera2D" unique_id=1942262155] +position = Vector2(-960, 0) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Camera2D/PanLeft" unique_id=77276628] +shape = SubResource("RectangleShape2D_ya4ey") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=1813843404] +libraries/ = SubResource("AnimationLibrary_hxu8e") + +[connection signal="mouse_entered" from="GuestList/Area2D" to="." method="_on_guest_list_mouse_entered"] +[connection signal="mouse_exited" from="GuestList/Area2D" to="." method="_on_guest_list_mouse_exited"] +[connection signal="mouse_entered" from="Camera2D/PanRight" to="Camera2D" method="_on_pan_right_mouse_entered"] +[connection signal="mouse_exited" from="Camera2D/PanRight" to="Camera2D" method="_on_pan_right_mouse_exited"] +[connection signal="mouse_entered" from="Camera2D/PanLeft" to="Camera2D" method="_on_pan_left_mouse_entered"] +[connection signal="mouse_exited" from="Camera2D/PanLeft" to="Camera2D" method="_on_pan_left_mouse_exited"] diff --git a/scenes/mask/mask.gd b/scenes/mask/mask.gd index 9943433..ebfb7be 100644 --- a/scenes/mask/mask.gd +++ b/scenes/mask/mask.gd @@ -6,9 +6,6 @@ class_name Mask set(new_resource): mask_resource = new_resource _on_mask_resource_changed() - if mask_resource == null: - return - mask_resource.changed.connect(_on_mask_resource_changed) @onready var mask_sprite: Sprite2D = $MaskSprite @@ -16,7 +13,8 @@ class_name Mask func _on_mask_resource_changed() -> void: if mask_resource == null: return - mask_sprite.texture = mask_resource.mask_sprite + if mask_sprite != null: + mask_sprite.texture = mask_resource.mask_sprite # Called when the node enters the scene tree for the first time. func _ready() -> void: