Feat: New graphics for room 8

This commit is contained in:
Balloonpopper
2022-03-04 09:56:42 +11:00
committed by Julian Murgia
parent 7e6fb7b047
commit 7a64c7707f
10 changed files with 319 additions and 110 deletions

BIN
game/rooms/room08/door.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -1,10 +1,14 @@
:look
say player "That must be the command to open the door."
say player "That's the button to open the door."
:use
> [!r8_m_door_open]
#superpose_scene "res://game/rooms/room08/puzzle/10_buttons_puzzle.tscn"
# Load the puzzle
spawn puzzle "res://game/rooms/room08/puzzle/10_buttons_puzzle.tscn"
> [r8_m_door_open]
say player "The door is already open."
# Currently the button gets disabled when you beat the puzzle, so there's
# no button you can interract with. If you set it up so the button was
# still enabled, this code would provide feedback to the user if they
# attempted to "use" the already unlocked puzzle.
#> [r8_m_door_open]
# say player "The door is already open."

View File

@@ -1,6 +1,18 @@
:look
say player "That must be the command to open the door."
say player "That's the button to relock the door."
:use
set_global r8_m_door_open false
set_state r8_m_door door_close
> [r8_m_door_open]
# If the door is unlocked, reset the puzzle.
# Set the door open to false so the room gets set up
# correctly if you exit and reenter
set_global r8_m_door_open false
# Play the door closing animation to "relock" the door
set_state r8_m_door door_close
# Reactivate the puzzle button so the player can redo
# the puzzle and unlock the door again
set_active r8_mini_puzzle_button true
stop
> [!r8_m_door_open]
# Don't reset the puzzle if the door is currently locked
say player "The puzzle doesn't need to be reset"

View File

@@ -1,2 +1,14 @@
:look
say player "That's the door to room 9"
:exit_scene
change_scene "res://game/rooms/room09/room09.tscn"
> [r8_m_door_open]
# Only let the player into the next room if they've passed the puzzle
change_scene "res://game/rooms/room09/room09.tscn"
> [!r8_m_door_open]
# The door is always an exit, but trying to go through it won't change
# scenes if you haven't unlocked the puzzle.
say player "The door is locked"

View File

@@ -1,7 +1,22 @@
:setup
# This code will run only the first time you enter the room.
> [!room8_visited]
set_global room8_visited true
set_global r8_m_door_open false
# Activate locked puzzle button the first time you enter the room only.
# It will keep it's locked/unlocked state on future room entrances.
# It should already be active, this is a safety precaution.
set_active r8_mini_puzzle_button true
> [r8_m_door_open]
# If the door was previously opened, quickly play the open animation
# so you don't see a closed door when the room appears.
set_state r8_m_door door_open true
# Hide locked puzzle icon and make the button non-interactive as
# the puzzle was previously unlocked
set_active r8_mini_puzzle_button false
> [eq ESC_LAST_SCENE room7]
teleport player r8_l_exit

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -52,6 +52,7 @@ func win():
escoria.main.current_scene.show()
escoria.globals_manager.set_global("r8_m_door_open", true)
escoria.object_manager.get_object("r8_m_door").set_state("door_open")
escoria.object_manager.get_object("r8_mini_puzzle_button").active = false
func _on_quit_pressed():

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=12 format=2]
[gd_scene load_steps=18 format=2]
[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_terrain.gd" type="Script" id=1]
[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_background.gd" type="Script" id=2]
@@ -7,68 +7,200 @@
[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_item.gd" type="Script" id=5]
[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_room.gd" type="Script" id=6]
[ext_resource path="res://addons/escoria-core/game/core-scripts/esc_location.gd" type="Script" id=7]
[ext_resource path="res://game/rooms/room08/room8background.png" type="Texture" id=8]
[ext_resource path="res://game/rooms/room08/locked_button.png" type="Texture" id=9]
[ext_resource path="res://game/rooms/room08/door.png" type="Texture" id=10]
[ext_resource path="res://game/rooms/room08/unlocked_button.png" type="Texture" id=11]
[sub_resource type="NavigationPolygon" id=1]
vertices = PoolVector2Array( 1143.08, 613.35, 1267.68, 669.029, 1275.03, 799.721, -9.16094, 803.802, -6.44019, 711.297, 84.5821, 654.06, 742.298, 623.672, 581.028, 613.592, 583.548, 574.535, 707.02, 574.535, 714.58, 611.072, 3.15687, 646.051, 59.2201, 628.698, 129.634, 615.792, 530.631, 612.332, 550.79, 623.672, 783.875, 609.812 )
polygons = [ PoolIntArray( 0, 1, 2, 3, 4, 5, 6 ), PoolIntArray( 7, 8, 9, 10 ), PoolIntArray( 4, 11, 12, 5 ), PoolIntArray( 5, 13, 14, 15 ), PoolIntArray( 7, 10, 6, 15 ), PoolIntArray( 6, 16, 0 ), PoolIntArray( 6, 5, 15 ) ]
outlines = [ PoolVector2Array( -6.44019, 711.297, 3.15687, 646.051, 59.2201, 628.698, 84.5821, 654.06, 129.634, 615.792, 530.631, 612.332, 550.79, 623.672, 581.028, 613.592, 583.548, 574.535, 707.02, 574.535, 714.58, 611.072, 742.298, 623.672, 783.875, 609.812, 1143.08, 613.35, 1267.68, 669.029, 1275.03, 799.721, -9.16094, 803.802 ) ]
vertices = PoolVector2Array( 4.26837, 653.779, 86.2684, 608.779, 87.2684, 635.779, 1260.27, 808.779, 3.26837, 810.779, 112.268, 621.779, 642.268, 624.779, 1259.27, 687.779, 642.268, 586.779, 790.268, 585.779, 791.268, 624.779, 1154.27, 622.779 )
polygons = [ PoolIntArray( 0, 1, 2 ), PoolIntArray( 3, 4, 0, 2 ), PoolIntArray( 3, 2, 5, 6, 7 ), PoolIntArray( 6, 8, 9, 10 ), PoolIntArray( 7, 6, 10 ), PoolIntArray( 7, 10, 11 ) ]
outlines = [ PoolVector2Array( 4.26837, 653.779, 86.2684, 608.779, 87.2684, 635.779, 112.268, 621.779, 642.268, 624.779, 642.268, 586.779, 790.268, 585.779, 791.268, 624.779, 1154.27, 622.779, 1259.27, 687.779, 1260.27, 808.779, 3.26837, 810.779 ) ]
[sub_resource type="Animation" id=2]
resource_name = "door_close"
[sub_resource type="Animation" id=5]
length = 0.001
tracks/0/type = "value"
tracks/0/path = NodePath("door:polygon")
tracks/0/path = NodePath("door1:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.5 ),
"transitions": PoolRealArray( 1, 1 ),
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ PoolVector2Array( 557.104, 45.8, 743.623, 45.8, 744.482, 48.9414, 555.602, 48.274 ), PoolVector2Array( 557.104, 45.8, 743.623, 45.8, 746.798, 345.025, 557.898, 347.406 ) ]
"values": [ Vector2( 723, 203 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:is_exit")
tracks/1/path = NodePath("door2:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0.6 ),
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 1,
"values": [ false ]
"update": 0,
"values": [ Vector2( 723, 203 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("door3:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 723, 203 ) ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("door4:position")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 723, 203 ) ]
}
tracks/4/type = "value"
tracks/4/path = NodePath("door3:texture")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ ExtResource( 10 ) ]
}
tracks/5/type = "value"
tracks/5/path = NodePath("door4:texture")
tracks/5/interp = 1
tracks/5/loop_wrap = true
tracks/5/imported = false
tracks/5/enabled = true
tracks/5/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ ExtResource( 10 ) ]
}
[sub_resource type="Animation" id=2]
resource_name = "door_close"
length = 1.5
tracks/0/type = "value"
tracks/0/path = NodePath("door1:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.2, 1.5 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ Vector2( 547, 203 ), Vector2( 547, 203 ), Vector2( 723, 203 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath("door2:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.2, 1.5 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ Vector2( 899, 203 ), Vector2( 899, 203 ), Vector2( 723, 203 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("door3:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0, 1.3 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Vector2( 547, 203 ), Vector2( 723, 203 ) ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("door4:position")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0, 1.3 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Vector2( 899, 203 ), Vector2( 723, 203 ) ]
}
[sub_resource type="Animation" id=3]
resource_name = "door_open"
length = 1.5
tracks/0/type = "value"
tracks/0/path = NodePath("door:polygon")
tracks/0/path = NodePath("door1:position")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/keys = {
"times": PoolRealArray( 0, 0.5 ),
"transitions": PoolRealArray( 1, 1 ),
"times": PoolRealArray( 0, 0.2, 1.5 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ PoolVector2Array( 557.104, 45.8, 743.623, 45.8, 746.798, 345.025, 557.898, 347.406 ), PoolVector2Array( 557.104, 45.8, 743.623, 45.8, 744.482, 48.9414, 555.602, 48.274 ) ]
"values": [ Vector2( 723, 203 ), Vector2( 723, 203 ), Vector2( 547, 203 ) ]
}
tracks/1/type = "value"
tracks/1/path = NodePath(".:is_exit")
tracks/1/path = NodePath("door2:position")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/keys = {
"times": PoolRealArray( 0, 0.6 ),
"times": PoolRealArray( 0, 0.2, 1.5 ),
"transitions": PoolRealArray( 1, 1, 1 ),
"update": 0,
"values": [ Vector2( 723, 203 ), Vector2( 723, 203 ), Vector2( 899, 203 ) ]
}
tracks/2/type = "value"
tracks/2/path = NodePath("door3:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/keys = {
"times": PoolRealArray( 0, 1.3 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 1,
"values": [ false, true ]
"update": 0,
"values": [ Vector2( 723, 203 ), Vector2( 547, 203 ) ]
}
tracks/3/type = "value"
tracks/3/path = NodePath("door4:position")
tracks/3/interp = 1
tracks/3/loop_wrap = true
tracks/3/imported = false
tracks/3/enabled = true
tracks/3/keys = {
"times": PoolRealArray( 0, 1.3 ),
"transitions": PoolRealArray( 1, 1 ),
"update": 0,
"values": [ Vector2( 723, 203 ), Vector2( 899, 203 ) ]
}
[sub_resource type="RectangleShape2D" id=4]
extents = Vector2( 20.3273, 18.0047 )
extents = Vector2( 31, 30.5 )
[sub_resource type="RectangleShape2D" id=6]
extents = Vector2( 31.5, 31 )
[node name="room8" type="Node2D"]
script = ExtResource( 6 )
@@ -80,40 +212,6 @@ esc_script = "res://game/rooms/room08/esc/room08.esc"
player_scene = ExtResource( 4 )
camera_limits = [ Rect2( 0, 0, 1289, 555 ) ]
[node name="background" type="TextureRect" parent="."]
margin_right = 1289.0
margin_bottom = 555.0
mouse_filter = 2
script = ExtResource( 2 )
__meta__ = {
"_edit_lock_": true,
"_edit_use_anchors_": false
}
[node name="l_platform" type="Line2D" parent="background"]
position = Vector2( 2, -266 )
points = PoolVector2Array( -2.96298, 712.01, 129.973, 614.429, 1167.5, 612.894, 1274.59, 669.705, 1273.25, 812.694, 2.36697, 811.043, 2.36697, 713.389 )
[node name="l_door" type="Line2D" parent="background"]
position = Vector2( 0, -266 )
points = PoolVector2Array( 6.61201, 704.409, 6.61203, 389.558, 87.755, 339.775, 87.5463, 649.784 )
__meta__ = {
"_editor_description_": ""
}
[node name="m_door" type="Line2D" parent="background"]
position = Vector2( 0, -267.828 )
points = PoolVector2Array( 555.952, 615.32, 554.538, 311.267, 744.043, 312.679, 746.871, 615.32, 557.367, 616.734 )
[node name="Label" type="Label" parent="background"]
margin_right = 48.0
margin_bottom = 16.0
custom_fonts/font = ExtResource( 3 )
text = "Room 8"
__meta__ = {
"_edit_use_anchors_": false
}
[node name="walkable_area" type="Navigation2D" parent="."]
script = ExtResource( 1 )
@@ -124,6 +222,46 @@ __meta__ = {
"_editor_description_": ""
}
[node name="player_start" type="Position2D" parent="."]
position = Vector2( 76.7617, 437.649 )
script = ExtResource( 7 )
global_id = "r8_player_start"
is_start_location = true
[node name="background" type="TextureRect" parent="."]
margin_right = 1289.0
margin_bottom = 555.0
mouse_filter = 2
texture = ExtResource( 8 )
script = ExtResource( 2 )
__meta__ = {
"_edit_lock_": true,
"_edit_use_anchors_": false
}
[node name="Label" type="Label" parent="background"]
margin_right = 48.0
margin_bottom = 16.0
custom_fonts/font = ExtResource( 3 )
text = "Room 8"
[node name="Label2" type="Label" parent="background"]
margin_left = 835.0
margin_top = 12.0
margin_right = 1133.0
margin_bottom = 201.0
custom_fonts/font = ExtResource( 3 )
text = "This room demonstrates mixing Escoria
with an external GDScript puzzle.
Global variables are set by the puzzle
when completed that are referenced
by future Escoria script code to animate
the door opening etc.
Unlocking the puzzle disables (and
hides) the locked button, showing the
unlocked graphic underneath."
[node name="Hotspots" type="Node" parent="."]
[node name="l_door" type="Area2D" parent="Hotspots"]
@@ -140,7 +278,7 @@ dialog_color = Color( 1, 1, 1, 1 )
animations = null
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hotspots/l_door"]
polygon = PoolVector2Array( 2.93237, 447.051, 2.93237, 127.051, 88.9324, 71.0505, 90.9324, 379.051 )
polygon = PoolVector2Array( 1, 420, 1, 107, 105, 63, 108, 352 )
[node name="Position2D" type="Position2D" parent="Hotspots/l_door"]
position = Vector2( 45.47, 383.99 )
@@ -148,65 +286,101 @@ script = ExtResource( 7 )
[node name="m_door" type="Area2D" parent="Hotspots"]
pause_mode = 1
position = Vector2( 0, -1 )
script = ExtResource( 5 )
__meta__ = {
"_editor_description_": ""
}
global_id = "r8_m_door"
esc_script = "res://game/rooms/room08/esc/middle_exit.esc"
is_exit = true
tooltip_name = "Exit"
inventory_texture = ExtResource( 10 )
dialog_color = Color( 1, 1, 1, 1 )
animations = null
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Hotspots/m_door"]
visible = false
polygon = PoolVector2Array( 557.522, 348.813, 551.222, 42.6524, 743.99, 43.9123, 750.289, 345.033 )
polygon = PoolVector2Array( 630, 349, 628, 51, 815, 51, 815, 349 )
[node name="Position2D" type="Position2D" parent="Hotspots/m_door"]
position = Vector2( 653.466, 366.589 )
position = Vector2( 724, 354 )
script = ExtResource( 7 )
[node name="door" type="Polygon2D" parent="Hotspots/m_door"]
color = Color( 0.4, 0.501961, 1, 1 )
polygon = PoolVector2Array( 557.104, 45.8, 743.623, 45.8, 746.798, 345.025, 557.898, 347.406 )
[node name="AnimationPlayer" type="AnimationPlayer" parent="Hotspots/m_door"]
anims/RESET = SubResource( 5 )
anims/door_close = SubResource( 2 )
anims/door_open = SubResource( 3 )
[node name="door1" type="Sprite" parent="Hotspots/m_door"]
position = Vector2( 723, 203 )
z_index = -1
texture = ExtResource( 10 )
[node name="door2" type="Sprite" parent="Hotspots/m_door"]
position = Vector2( 723, 203 )
scale = Vector2( -1, -1 )
z_index = -1
texture = ExtResource( 10 )
[node name="door3" type="Sprite" parent="Hotspots/m_door"]
position = Vector2( 723, 203 )
scale = Vector2( 1, -1 )
z_index = -1
texture = ExtResource( 10 )
[node name="door4" type="Sprite" parent="Hotspots/m_door"]
position = Vector2( 723, 203 )
scale = Vector2( -1, 1 )
z_index = -1
texture = ExtResource( 10 )
[node name="door_background" type="Polygon2D" parent="Hotspots/m_door"]
z_index = -2
color = Color( 0, 0, 0, 1 )
polygon = PoolVector2Array( 635, 55, 810, 56, 810, 350, 634, 350 )
[node name="r8_mini_puzzle_unlocked" type="Area2D" parent="Hotspots"]
pause_mode = 1
script = ExtResource( 5 )
global_id = "r8_mini_puzzle_unlocked"
inventory_texture = ExtResource( 11 )
dialog_color = Color( 1, 1, 1, 1 )
animations = null
[node name="unlocked_button" type="Sprite" parent="Hotspots/r8_mini_puzzle_unlocked"]
position = Vector2( 527, 190 )
texture = ExtResource( 11 )
[node name="r8_mini_puzzle_button" type="Area2D" parent="Hotspots"]
pause_mode = 1
script = ExtResource( 5 )
global_id = "r8_button_puzzle"
global_id = "r8_mini_puzzle_button"
esc_script = "res://game/rooms/room08/esc/button_puzzle.esc"
tooltip_name = "Button"
default_action = "use"
inventory_texture = ExtResource( 9 )
dialog_color = Color( 1, 1, 1, 1 )
animations = null
[node name="button" type="Line2D" parent="Hotspots/r8_mini_puzzle_button"]
position = Vector2( -588.313, 5.65686 )
points = PoolVector2Array( 1048.39, 178.619, 1048.39, 208.814, 1076.99, 208.814, 1078.05, 183.387, 1052.09, 183.916 )
default_color = Color( 0.4, 0.501961, 1, 1 )
[node name="locked_button" type="Sprite" parent="Hotspots/r8_mini_puzzle_button"]
position = Vector2( 527, 190 )
texture = ExtResource( 9 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hotspots/r8_mini_puzzle_button"]
position = Vector2( 474.343, 201.414 )
position = Vector2( 526, 191.5 )
shape = SubResource( 4 )
[node name="Position2D" type="Position2D" parent="Hotspots/r8_mini_puzzle_button"]
position = Vector2( 474.801, 369.29 )
position = Vector2( 532, 370 )
script = ExtResource( 7 )
[node name="button_puzzle" type="Label" parent="Hotspots/r8_mini_puzzle_button"]
margin_left = 445.617
margin_top = 166.124
margin_right = 508.617
margin_bottom = 182.124
margin_left = 488.0
margin_top = 128.0
margin_right = 572.0
margin_bottom = 149.0
custom_fonts/font = ExtResource( 3 )
text = "Run puzzle"
__meta__ = {
"_edit_use_anchors_": false
}
[node name="r8_reset_puzzle_button" type="Area2D" parent="Hotspots"]
pause_mode = 1
@@ -219,32 +393,23 @@ default_action = "use"
dialog_color = Color( 1, 1, 1, 1 )
animations = null
[node name="button" type="Line2D" parent="Hotspots/r8_reset_puzzle_button"]
position = Vector2( -588.313, 5.65686 )
points = PoolVector2Array( 1048.39, 178.619, 1048.39, 208.814, 1076.99, 208.814, 1078.05, 183.387, 1052.09, 183.916 )
default_color = Color( 0.4, 0.501961, 1, 1 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hotspots/r8_reset_puzzle_button"]
position = Vector2( 474.343, 201.414 )
shape = SubResource( 4 )
[node name="Position2D" type="Position2D" parent="Hotspots/r8_reset_puzzle_button"]
position = Vector2( 474.801, 369.29 )
position = Vector2( 511.185, 370 )
script = ExtResource( 7 )
[node name="reset_puzzle" type="Label" parent="Hotspots/r8_reset_puzzle_button"]
margin_left = 441.128
margin_top = 166.124
margin_right = 512.128
margin_bottom = 182.124
margin_left = 466.185
margin_top = 126.0
margin_right = 560.185
margin_bottom = 147.0
custom_fonts/font = ExtResource( 3 )
text = "Reset puzzle"
__meta__ = {
"_edit_use_anchors_": false
}
[node name="player_start" type="Position2D" parent="."]
position = Vector2( 76.7617, 437.649 )
script = ExtResource( 7 )
global_id = "r8_player_start"
is_start_location = true
[node name="Sprite3" type="Sprite" parent="Hotspots/r8_reset_puzzle_button"]
position = Vector2( 139.185, 0 )
[node name="CollisionShape2D" type="CollisionShape2D" parent="Hotspots/r8_reset_puzzle_button"]
position = Vector2( 510.685, 190 )
shape = SubResource( 6 )
[node name="Node" type="Node" parent="Hotspots"]

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB