feat: frog free progress ui, animtree bugfix
@ -17,7 +17,7 @@ force/max_rate=false
|
|||||||
force/max_rate_hz=44100
|
force/max_rate_hz=44100
|
||||||
edit/trim=false
|
edit/trim=false
|
||||||
edit/normalize=true
|
edit/normalize=true
|
||||||
edit/loop_mode=0
|
edit/loop_mode=2
|
||||||
edit/loop_begin=0
|
edit/loop_begin=0
|
||||||
edit/loop_end=-1
|
edit/loop_end=476280
|
||||||
compress/mode=0
|
compress/mode=0
|
||||||
|
|||||||
@ -17,7 +17,7 @@ force/max_rate=false
|
|||||||
force/max_rate_hz=44100
|
force/max_rate_hz=44100
|
||||||
edit/trim=false
|
edit/trim=false
|
||||||
edit/normalize=true
|
edit/normalize=true
|
||||||
edit/loop_mode=0
|
edit/loop_mode=2
|
||||||
edit/loop_begin=0
|
edit/loop_begin=0
|
||||||
edit/loop_end=-1
|
edit/loop_end=216090
|
||||||
compress/mode=0
|
compress/mode=0
|
||||||
|
|||||||
@ -17,7 +17,7 @@ force/max_rate=false
|
|||||||
force/max_rate_hz=44100
|
force/max_rate_hz=44100
|
||||||
edit/trim=false
|
edit/trim=false
|
||||||
edit/normalize=true
|
edit/normalize=true
|
||||||
edit/loop_mode=0
|
edit/loop_mode=2
|
||||||
edit/loop_begin=0
|
edit/loop_begin=0
|
||||||
edit/loop_end=-1
|
edit/loop_end=1878660
|
||||||
compress/mode=0
|
compress/mode=0
|
||||||
|
|||||||
BIN
assets/ui/froggy-freed-ui.png
Normal file
|
After Width: | Height: | Size: 340 B |
35
assets/ui/froggy-freed-ui.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/froggy-freed-ui.png-53922e47e0d54748af08766579eb65c7.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/ui/froggy-freed-ui.png"
|
||||||
|
dest_files=[ "res://.import/froggy-freed-ui.png-53922e47e0d54748af08766579eb65c7.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=false
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
||||||
BIN
assets/ui/froggy-imprisoned-ui.png
Normal file
|
After Width: | Height: | Size: 319 B |
35
assets/ui/froggy-imprisoned-ui.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/froggy-imprisoned-ui.png-9d7f0cbdb0c652369f6c6dc41879bd61.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/ui/froggy-imprisoned-ui.png"
|
||||||
|
dest_files=[ "res://.import/froggy-imprisoned-ui.png-9d7f0cbdb0c652369f6c6dc41879bd61.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=false
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
||||||
BIN
assets/ui/froggy-ui-collected.aseprite
Normal file
BIN
assets/ui/froggy-ui-collected.png
Normal file
|
After Width: | Height: | Size: 511 B |
35
assets/ui/froggy-ui-collected.png.import
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="StreamTexture"
|
||||||
|
path="res://.import/froggy-ui-collected.png-336ff92477b43674a6bd446e595e471d.stex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/ui/froggy-ui-collected.png"
|
||||||
|
dest_files=[ "res://.import/froggy-ui-collected.png-336ff92477b43674a6bd446e595e471d.stex" ]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_mode=0
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
flags/repeat=0
|
||||||
|
flags/filter=false
|
||||||
|
flags/mipmaps=false
|
||||||
|
flags/anisotropic=false
|
||||||
|
flags/srgb=2
|
||||||
|
process/fix_alpha_border=false
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/HDR_as_SRGB=false
|
||||||
|
process/invert_color=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
stream=false
|
||||||
|
size_limit=0
|
||||||
|
detect_3d=false
|
||||||
|
svg/scale=1.0
|
||||||
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 272 B After Width: | Height: | Size: 272 B |
@ -2,15 +2,15 @@
|
|||||||
|
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="StreamTexture"
|
type="StreamTexture"
|
||||||
path="res://.import/blobby1.png-02080f0b57c8ccaa15e26b1a3859acb0.stex"
|
path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://blobby1.png"
|
source_file="res://icon.png"
|
||||||
dest_files=[ "res://.import/blobby1.png-02080f0b57c8ccaa15e26b1a3859acb0.stex" ]
|
dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
||||||
@ -304,6 +304,7 @@ ui_click={
|
|||||||
common/physics_fps=120
|
common/physics_fps=120
|
||||||
2d/thread_model=0
|
2d/thread_model=0
|
||||||
2d/cell_size=100
|
2d/cell_size=100
|
||||||
|
common/physics_interpolation=true
|
||||||
common/enable_object_picking=false
|
common/enable_object_picking=false
|
||||||
|
|
||||||
[rendering]
|
[rendering]
|
||||||
|
|||||||
@ -10,7 +10,7 @@
|
|||||||
[ext_resource path="res://assets/effects/jump-point.png" type="Texture" id=8]
|
[ext_resource path="res://assets/effects/jump-point.png" type="Texture" id=8]
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id=2]
|
[sub_resource type="RectangleShape2D" id=2]
|
||||||
extents = Vector2( 11.9219, 10.0313 )
|
extents = Vector2( 14.9127, 5.98593 )
|
||||||
|
|
||||||
[sub_resource type="StreamTexture" id=62]
|
[sub_resource type="StreamTexture" id=62]
|
||||||
load_path = "res://.import/blobby-spritesheet.png-205c8efc79bec685345a637ed2dcfc9b.stex"
|
load_path = "res://.import/blobby-spritesheet.png-205c8efc79bec685345a637ed2dcfc9b.stex"
|
||||||
@ -240,6 +240,8 @@ priority = 2
|
|||||||
switch_mode = 2
|
switch_mode = 2
|
||||||
auto_advance = true
|
auto_advance = true
|
||||||
|
|
||||||
|
[sub_resource type="AnimationNodeStateMachineTransition" id=171]
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id=172]
|
[sub_resource type="AnimationNodeStateMachineTransition" id=172]
|
||||||
switch_mode = 2
|
switch_mode = 2
|
||||||
auto_advance = true
|
auto_advance = true
|
||||||
@ -260,6 +262,7 @@ switch_mode = 2
|
|||||||
auto_advance = true
|
auto_advance = true
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id=178]
|
[sub_resource type="AnimationNodeStateMachineTransition" id=178]
|
||||||
|
priority = 0
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id=137]
|
[sub_resource type="AnimationNodeStateMachineTransition" id=137]
|
||||||
|
|
||||||
@ -273,8 +276,6 @@ auto_advance = true
|
|||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id=196]
|
[sub_resource type="AnimationNodeStateMachineTransition" id=196]
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachineTransition" id=203]
|
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachine" id=47]
|
[sub_resource type="AnimationNodeStateMachine" id=47]
|
||||||
states/duckTurn/node = SubResource( 126 )
|
states/duckTurn/node = SubResource( 126 )
|
||||||
states/duckTurn/position = Vector2( 1795.54, 241 )
|
states/duckTurn/position = Vector2( 1795.54, 241 )
|
||||||
@ -289,27 +290,27 @@ states/idling/position = Vector2( 1375.63, -53.9546 )
|
|||||||
states/jumpToFall/node = SubResource( 119 )
|
states/jumpToFall/node = SubResource( 119 )
|
||||||
states/jumpToFall/position = Vector2( 1981.07, 404.104 )
|
states/jumpToFall/position = Vector2( 1981.07, 404.104 )
|
||||||
states/jumping/node = SubResource( 125 )
|
states/jumping/node = SubResource( 125 )
|
||||||
states/jumping/position = Vector2( 1368.79, 122.723 )
|
states/jumping/position = Vector2( 1375.54, 117.961 )
|
||||||
states/runToJump/node = SubResource( 146 )
|
states/runToJump/node = SubResource( 146 )
|
||||||
states/runToJump/position = Vector2( 2119.34, 577.905 )
|
states/runToJump/position = Vector2( 2194.36, 651.238 )
|
||||||
states/running/node = SubResource( 122 )
|
states/running/node = SubResource( 122 )
|
||||||
states/running/position = Vector2( 2268.44, -53.9541 )
|
states/running/position = Vector2( 2273.2, -53.7278 )
|
||||||
states/turnToRun/node = SubResource( 130 )
|
states/turnToRun/node = SubResource( 130 )
|
||||||
states/turnToRun/position = Vector2( 1795.54, -308.991 )
|
states/turnToRun/position = Vector2( 1795.54, -308.991 )
|
||||||
states/walking/node = SubResource( 133 )
|
states/walking/node = SubResource( 133 )
|
||||||
states/walking/position = Vector2( 1795.54, -54 )
|
states/walking/position = Vector2( 1795.54, -54 )
|
||||||
states/wallslideToJump/node = SubResource( 136 )
|
states/wallslideToJump/node = SubResource( 136 )
|
||||||
states/wallslideToJump/position = Vector2( 1362.38, 336.342 )
|
states/wallslideToJump/position = Vector2( 1374.76, 343.009 )
|
||||||
states/wallsliding/node = SubResource( 96 )
|
states/wallsliding/node = SubResource( 96 )
|
||||||
states/wallsliding/position = Vector2( 1795.54, 493.009 )
|
states/wallsliding/position = Vector2( 1795.54, 493.009 )
|
||||||
transitions = [ "falling", "wallsliding", SubResource( 138 ), "wallsliding", "idling", SubResource( 139 ), "wallsliding", "wallslideToJump", SubResource( 140 ), "wallslideToJump", "jumping", SubResource( 141 ), "idling", "jumping", SubResource( 147 ), "runToJump", "jumping", SubResource( 148 ), "ducking", "jumping", SubResource( 149 ), "jumping", "jumpToFall", SubResource( 150 ), "jumpToFall", "falling", SubResource( 151 ), "ducking", "duckTurn", SubResource( 152 ), "duckTurn", "ducking", SubResource( 153 ), "falling", "ducking", SubResource( 154 ), "ducking", "falling", SubResource( 155 ), "ducking", "walking", SubResource( 156 ), "walking", "ducking", SubResource( 157 ), "idling", "ducking", SubResource( 158 ), "ducking", "idling", SubResource( 159 ), "ducking", "running", SubResource( 160 ), "running", "ducking", SubResource( 161 ), "running", "falling", SubResource( 162 ), "falling", "running", SubResource( 163 ), "walking", "falling", SubResource( 164 ), "falling", "walking", SubResource( 165 ), "falling", "idling", SubResource( 166 ), "idling", "walking", SubResource( 167 ), "walking", "idling", SubResource( 168 ), "walking", "turnToRun", SubResource( 169 ), "turnToRun", "walking", SubResource( 170 ), "turnToRun", "running", SubResource( 172 ), "idling", "idleTurn", SubResource( 173 ), "walking", "idleTurn", SubResource( 174 ), "idleTurn", "walking", SubResource( 175 ), "idling", "turnToRun", SubResource( 176 ), "turnToRun", "idling", SubResource( 177 ), "running", "runToJump", SubResource( 178 ), "wallsliding", "falling", SubResource( 137 ), "jumping", "wallsliding", SubResource( 189 ), "jumping", "idling", SubResource( 193 ), "jumping", "walking", SubResource( 194 ), "runToJump", "wallsliding", SubResource( 195 ), "jumpToFall", "idling", SubResource( 196 ), "running", "turnToRun", SubResource( 203 ) ]
|
transitions = [ "falling", "wallsliding", SubResource( 138 ), "wallsliding", "idling", SubResource( 139 ), "wallsliding", "wallslideToJump", SubResource( 140 ), "wallslideToJump", "jumping", SubResource( 141 ), "idling", "jumping", SubResource( 147 ), "runToJump", "jumping", SubResource( 148 ), "ducking", "jumping", SubResource( 149 ), "jumping", "jumpToFall", SubResource( 150 ), "jumpToFall", "falling", SubResource( 151 ), "ducking", "duckTurn", SubResource( 152 ), "duckTurn", "ducking", SubResource( 153 ), "falling", "ducking", SubResource( 154 ), "ducking", "falling", SubResource( 155 ), "ducking", "walking", SubResource( 156 ), "walking", "ducking", SubResource( 157 ), "idling", "ducking", SubResource( 158 ), "ducking", "idling", SubResource( 159 ), "ducking", "running", SubResource( 160 ), "running", "ducking", SubResource( 161 ), "running", "falling", SubResource( 162 ), "falling", "running", SubResource( 163 ), "walking", "falling", SubResource( 164 ), "falling", "walking", SubResource( 165 ), "falling", "idling", SubResource( 166 ), "idling", "walking", SubResource( 167 ), "walking", "idling", SubResource( 168 ), "walking", "turnToRun", SubResource( 169 ), "turnToRun", "walking", SubResource( 170 ), "running", "turnToRun", SubResource( 171 ), "turnToRun", "running", SubResource( 172 ), "idling", "idleTurn", SubResource( 173 ), "walking", "idleTurn", SubResource( 174 ), "idleTurn", "walking", SubResource( 175 ), "idling", "turnToRun", SubResource( 176 ), "turnToRun", "idling", SubResource( 177 ), "running", "runToJump", SubResource( 178 ), "wallsliding", "falling", SubResource( 137 ), "jumping", "wallsliding", SubResource( 189 ), "jumping", "idling", SubResource( 193 ), "jumping", "walking", SubResource( 194 ), "runToJump", "wallsliding", SubResource( 195 ), "jumpToFall", "idling", SubResource( 196 ) ]
|
||||||
start_node = "idling"
|
start_node = "idling"
|
||||||
graph_offset = Vector2( 958.54, -77.431 )
|
graph_offset = Vector2( 1157.54, -22.431 )
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=48]
|
[sub_resource type="AnimationNodeStateMachinePlayback" id=48]
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id=1]
|
[sub_resource type="RectangleShape2D" id=1]
|
||||||
extents = Vector2( 12, 9.981 )
|
extents = Vector2( 12, 8.99662 )
|
||||||
|
|
||||||
[sub_resource type="Animation" id=17]
|
[sub_resource type="Animation" id=17]
|
||||||
length = 0.001
|
length = 0.001
|
||||||
@ -3342,10 +3343,10 @@ tracks/10/loop_wrap = true
|
|||||||
tracks/10/imported = false
|
tracks/10/imported = false
|
||||||
tracks/10/enabled = true
|
tracks/10/enabled = true
|
||||||
tracks/10/keys = {
|
tracks/10/keys = {
|
||||||
"times": PoolRealArray( 0 ),
|
"times": PoolRealArray( 0, 0.25, 0.5 ),
|
||||||
"transitions": PoolRealArray( 1 ),
|
"transitions": PoolRealArray( 1, 1, 1 ),
|
||||||
"update": 0,
|
"update": 0,
|
||||||
"values": [ Vector2( 1, 1 ) ]
|
"values": [ Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 1, 1 ) ]
|
||||||
}
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id=99]
|
[sub_resource type="Animation" id=99]
|
||||||
@ -4218,7 +4219,7 @@ process_priority = -1
|
|||||||
collision_mask = 254
|
collision_mask = 254
|
||||||
|
|
||||||
[node name="CollisionPolygon2D" type="CollisionShape2D" parent="BlobbySkin"]
|
[node name="CollisionPolygon2D" type="CollisionShape2D" parent="BlobbySkin"]
|
||||||
position = Vector2( 0.0469954, -10.0308 )
|
position = Vector2( 0.0286326, -10.0053 )
|
||||||
scale = Vector2( 1.03, 1.04 )
|
scale = Vector2( 1.03, 1.04 )
|
||||||
shape = SubResource( 2 )
|
shape = SubResource( 2 )
|
||||||
|
|
||||||
@ -4233,10 +4234,12 @@ visible = false
|
|||||||
[node name="BlobbySprite" type="Sprite" parent="."]
|
[node name="BlobbySprite" type="Sprite" parent="."]
|
||||||
material = ExtResource( 2 )
|
material = ExtResource( 2 )
|
||||||
position = Vector2( 0, -16 )
|
position = Vector2( 0, -16 )
|
||||||
|
scale = Vector2( -1, 1 )
|
||||||
texture = SubResource( 62 )
|
texture = SubResource( 62 )
|
||||||
|
offset = Vector2( 1, 0 )
|
||||||
hframes = 6
|
hframes = 6
|
||||||
vframes = 6
|
vframes = 6
|
||||||
frame = 12
|
frame = 5
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
"_editor_description_": "YXNlcHJpdGVfd2l6YXJkX2NvbmZpZwpwbGF5ZXJ8PUJsb2JieVNwcml0ZS9CbG9iYnltYXRpb25QbGF5ZXIKc291cmNlfD1yZXM6Ly9hc3NldHMvYmxvYmJ5L2Jsb2JieS1zcHJpdGVzaGVldHQuYXNlcHJpdGUKbGF5ZXJ8PUJsb2JieQpvcF9leHB8PUZhbHNlCm9fZm9sZGVyfD0Kb19uYW1lfD0Kb25seV92aXNpYmxlfD1GYWxzZQpvX2V4X3B8PQo="
|
"_editor_description_": "YXNlcHJpdGVfd2l6YXJkX2NvbmZpZwpwbGF5ZXJ8PUJsb2JieVNwcml0ZS9CbG9iYnltYXRpb25QbGF5ZXIKc291cmNlfD1yZXM6Ly9hc3NldHMvYmxvYmJ5L2Jsb2JieS1zcHJpdGVzaGVldHQuYXNlcHJpdGUKbGF5ZXJ8PUJsb2JieQpvcF9leHB8PUZhbHNlCm9fZm9sZGVyfD0Kb19uYW1lfD0Kb25seV92aXNpYmxlfD1GYWxzZQpvX2V4X3B8PQo="
|
||||||
}
|
}
|
||||||
@ -4245,7 +4248,6 @@ __meta__ = {
|
|||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
tree_root = SubResource( 47 )
|
tree_root = SubResource( 47 )
|
||||||
anim_player = NodePath("../BlobbymationPlayer")
|
anim_player = NodePath("../BlobbymationPlayer")
|
||||||
active = true
|
|
||||||
root_motion_track = NodePath(".")
|
root_motion_track = NodePath(".")
|
||||||
parameters/playback = SubResource( 48 )
|
parameters/playback = SubResource( 48 )
|
||||||
parameters/ducking/blend_position = 1.0
|
parameters/ducking/blend_position = 1.0
|
||||||
@ -4254,7 +4256,7 @@ parameters/idling/blend_position = 1.0
|
|||||||
parameters/jumpToFall/blend_position = 1.0
|
parameters/jumpToFall/blend_position = 1.0
|
||||||
parameters/jumping/blend_position = 1.0
|
parameters/jumping/blend_position = 1.0
|
||||||
parameters/runToJump/blend_position = 1.0
|
parameters/runToJump/blend_position = 1.0
|
||||||
parameters/running/blend_position = 1.00101
|
parameters/running/blend_position = 1.0
|
||||||
parameters/turnToRun/blend_position = 1.0
|
parameters/turnToRun/blend_position = 1.0
|
||||||
parameters/walking/blend_position = 1.0
|
parameters/walking/blend_position = 1.0
|
||||||
parameters/wallslideToJump/blend_position = 1.0
|
parameters/wallslideToJump/blend_position = 1.0
|
||||||
@ -4341,7 +4343,7 @@ position = Vector2( 0, -9 )
|
|||||||
scale = Vector2( 0.48, 0.48 )
|
scale = Vector2( 0.48, 0.48 )
|
||||||
|
|
||||||
[node name="BlobbyBody" type="CollisionShape2D" parent="." groups=["player"]]
|
[node name="BlobbyBody" type="CollisionShape2D" parent="." groups=["player"]]
|
||||||
position = Vector2( -0.0184917, -10.0133 )
|
position = Vector2( 0.0392303, -10.002 )
|
||||||
shape = SubResource( 1 )
|
shape = SubResource( 1 )
|
||||||
|
|
||||||
[node name="WallRaycasts" type="Node2D" parent="."]
|
[node name="WallRaycasts" type="Node2D" parent="."]
|
||||||
@ -4350,13 +4352,13 @@ position = Vector2( 0, -1 )
|
|||||||
[node name="LeftWallRaycast" type="Node2D" parent="WallRaycasts"]
|
[node name="LeftWallRaycast" type="Node2D" parent="WallRaycasts"]
|
||||||
|
|
||||||
[node name="Left_Wallcast1" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"]
|
[node name="Left_Wallcast1" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"]
|
||||||
position = Vector2( -12, -9.013 )
|
position = Vector2( -11.9763, -5 )
|
||||||
enabled = true
|
enabled = true
|
||||||
cast_to = Vector2( -2, 0 )
|
cast_to = Vector2( -2, 0 )
|
||||||
collision_mask = 40
|
collision_mask = 40
|
||||||
|
|
||||||
[node name="Left_Wallcast2" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"]
|
[node name="Left_Wallcast2" type="RayCast2D" parent="WallRaycasts/LeftWallRaycast"]
|
||||||
position = Vector2( -12, -1.942 )
|
position = Vector2( -11.9763, 5 )
|
||||||
enabled = true
|
enabled = true
|
||||||
cast_to = Vector2( -2, 0 )
|
cast_to = Vector2( -2, 0 )
|
||||||
collision_mask = 40
|
collision_mask = 40
|
||||||
@ -4364,13 +4366,13 @@ collision_mask = 40
|
|||||||
[node name="RightWallRaycast" type="Node2D" parent="WallRaycasts"]
|
[node name="RightWallRaycast" type="Node2D" parent="WallRaycasts"]
|
||||||
|
|
||||||
[node name="Right_Wallcast1" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"]
|
[node name="Right_Wallcast1" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"]
|
||||||
position = Vector2( 12.0573, -9.0133 )
|
position = Vector2( 12.0551, -5 )
|
||||||
enabled = true
|
enabled = true
|
||||||
cast_to = Vector2( 2, 0 )
|
cast_to = Vector2( 2, 0 )
|
||||||
collision_mask = 40
|
collision_mask = 40
|
||||||
|
|
||||||
[node name="Right_Wallcast2" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"]
|
[node name="Right_Wallcast2" type="RayCast2D" parent="WallRaycasts/RightWallRaycast"]
|
||||||
position = Vector2( 12.0573, -1.94163 )
|
position = Vector2( 12.0551, 5 )
|
||||||
enabled = true
|
enabled = true
|
||||||
cast_to = Vector2( 2, 0 )
|
cast_to = Vector2( 2, 0 )
|
||||||
collision_mask = 40
|
collision_mask = 40
|
||||||
|
|||||||
@ -889,6 +889,7 @@ animations = [ {
|
|||||||
} ]
|
} ]
|
||||||
|
|
||||||
[node name="BlobbyCam" type="Camera2D"]
|
[node name="BlobbyCam" type="Camera2D"]
|
||||||
|
physics_interpolation_mode = 2
|
||||||
material = ExtResource( 38 )
|
material = ExtResource( 38 )
|
||||||
z_index = 3
|
z_index = 3
|
||||||
rotating = true
|
rotating = true
|
||||||
@ -1030,10 +1031,10 @@ texture = ExtResource( 8 )
|
|||||||
|
|
||||||
[node name="AnimatedSprite" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"]
|
[node name="AnimatedSprite" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"]
|
||||||
frames = SubResource( 7 )
|
frames = SubResource( 7 )
|
||||||
frame = 4
|
frame = 13
|
||||||
playing = true
|
playing = true
|
||||||
|
|
||||||
[node name="AnimatedSprite2" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"]
|
[node name="AnimatedSprite2" type="AnimatedSprite" parent="ParallaxBackground/ParallaxLayer5"]
|
||||||
frames = SubResource( 8 )
|
frames = SubResource( 8 )
|
||||||
frame = 9
|
frame = 4
|
||||||
playing = true
|
playing = true
|
||||||
|
|||||||
@ -22,8 +22,6 @@ func _on_StompDetector_body_entered(body: Node) -> void:
|
|||||||
|
|
||||||
func die() -> void:
|
func die() -> void:
|
||||||
queue_free()
|
queue_free()
|
||||||
# TODO make batterr
|
|
||||||
levelState.kills += 1
|
|
||||||
|
|
||||||
func _on_EnemySkin_area_entered(area:Area2D) -> void:
|
func _on_EnemySkin_area_entered(area:Area2D) -> void:
|
||||||
if area.is_in_group("harmful"):
|
if area.is_in_group("harmful"):
|
||||||
|
|||||||
@ -156,7 +156,6 @@ func update_navigation() -> void:
|
|||||||
nav_agent.set_target_location(next_waypoint)
|
nav_agent.set_target_location(next_waypoint)
|
||||||
|
|
||||||
func die() -> void:
|
func die() -> void:
|
||||||
levelState.kills += 1
|
|
||||||
queue_free()
|
queue_free()
|
||||||
|
|
||||||
func get_facing_direction() -> float:
|
func get_facing_direction() -> float:
|
||||||
|
|||||||
@ -8,6 +8,7 @@ onready var signalManager := get_tree().root.get_child(4).get_node("%SignalManag
|
|||||||
|
|
||||||
var Rope = preload("res://src/Contraptions/Rope/Rope.tscn")
|
var Rope = preload("res://src/Contraptions/Rope/Rope.tscn")
|
||||||
var RopeAnchor = preload("res://src/Contraptions/Rope/RopeAnchor.tscn")
|
var RopeAnchor = preload("res://src/Contraptions/Rope/RopeAnchor.tscn")
|
||||||
|
var frog_number
|
||||||
var rope
|
var rope
|
||||||
var is_first_signal = true
|
var is_first_signal = true
|
||||||
|
|
||||||
@ -26,6 +27,7 @@ func _on_level_loaded() -> void:
|
|||||||
rope.spawn_rope($WhatAreFrog.global_position, $RopeAnchor.global_position, movement_radius, false)
|
rope.spawn_rope($WhatAreFrog.global_position, $RopeAnchor.global_position, movement_radius, false)
|
||||||
$WhatAreFrog.tilemap = tilemap
|
$WhatAreFrog.tilemap = tilemap
|
||||||
$WhatAreFrog.bind_to_anchor($RopeAnchor, movement_radius)
|
$WhatAreFrog.bind_to_anchor($RopeAnchor, movement_radius)
|
||||||
|
frog_number = $WhatAreFrog.frog_number
|
||||||
|
|
||||||
# Executes on frog death
|
# Executes on frog death
|
||||||
# The old switchero
|
# The old switchero
|
||||||
@ -54,9 +56,9 @@ func disconnect_rope() -> void:
|
|||||||
|
|
||||||
|
|
||||||
func _on_FrogFreeButton_pushed() -> void:
|
func _on_FrogFreeButton_pushed() -> void:
|
||||||
$WhatAreFrog.levelState.frees += 1
|
|
||||||
$WhatAreFrog.is_bound = false
|
$WhatAreFrog.is_bound = false
|
||||||
$WhatAreFrog/LeashAnchor.visible = false
|
$WhatAreFrog/LeashAnchor.visible = false
|
||||||
$WhatAreFrog.remove_from_group("harmful")
|
$WhatAreFrog.remove_from_group("harmful")
|
||||||
|
levelState.free_a_frog(frog_number)
|
||||||
disconnect_rope()
|
disconnect_rope()
|
||||||
is_first_signal = false
|
is_first_signal = false
|
||||||
|
|||||||
@ -15,6 +15,7 @@ onready var rng = RandomNumberGenerator.new()
|
|||||||
onready var invincible_shader = preload("res://src/Actors/Blobby/InvincibleShader.tres")
|
onready var invincible_shader = preload("res://src/Actors/Blobby/InvincibleShader.tres")
|
||||||
|
|
||||||
# Is given in blocks
|
# Is given in blocks
|
||||||
|
export var frog_number := 0
|
||||||
export var vision_distance := 6.0
|
export var vision_distance := 6.0
|
||||||
export var attack_jump_range := 6.0
|
export var attack_jump_range := 6.0
|
||||||
export var loose_target_seconds := 3.0
|
export var loose_target_seconds := 3.0
|
||||||
@ -64,17 +65,24 @@ func _ready():
|
|||||||
target_lost_timer.connect("timeout", self, "loose_target")
|
target_lost_timer.connect("timeout", self, "loose_target")
|
||||||
add_child(jump_timer)
|
add_child(jump_timer)
|
||||||
add_child(target_lost_timer)
|
add_child(target_lost_timer)
|
||||||
|
# TODO this is so bad ;_;
|
||||||
|
if(get_parent().name.begins_with("Bound")):
|
||||||
|
is_bound = true
|
||||||
|
else:
|
||||||
|
levelState.free_a_frog(frog_number)
|
||||||
|
levelState.register_frog(frog_number, !is_bound)
|
||||||
# TODO Stays harmless for now
|
# TODO Stays harmless for now
|
||||||
#if(is_bound): add_to_group("harmful")
|
#if(is_bound): add_to_group("harmful")
|
||||||
$LeashAnchor.visible = is_bound
|
|
||||||
|
|
||||||
|
|
||||||
func bind_to_anchor(anchor_node: Node2D, radius: float ) -> void:
|
func bind_to_anchor(anchor_node: Node2D, radius: float ) -> void:
|
||||||
anchor = anchor_node
|
anchor = anchor_node
|
||||||
movement_radius = radius * block_size
|
movement_radius = radius * block_size
|
||||||
is_bound = true
|
is_bound = true
|
||||||
$LeashAnchor.visible = true
|
# TODO multiple free frogs
|
||||||
|
$Digit.visible = true
|
||||||
|
$Digit.frame = frog_number
|
||||||
|
$LeashAnchor.visible = is_bound
|
||||||
|
|
||||||
|
|
||||||
func execute_movement(delta: float) -> void:
|
func execute_movement(delta: float) -> void:
|
||||||
@ -108,7 +116,6 @@ func execute_movement(delta: float) -> void:
|
|||||||
|
|
||||||
|
|
||||||
func die() -> void:
|
func die() -> void:
|
||||||
levelState.kills += 1
|
|
||||||
queue_free()
|
queue_free()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -459,12 +459,14 @@ align = 1
|
|||||||
valign = 1
|
valign = 1
|
||||||
|
|
||||||
[node name="Digit" type="Sprite" parent="."]
|
[node name="Digit" type="Sprite" parent="."]
|
||||||
|
visible = false
|
||||||
position = Vector2( 0, -3 )
|
position = Vector2( 0, -3 )
|
||||||
z_index = 1
|
z_index = 1
|
||||||
texture = ExtResource( 5 )
|
texture = ExtResource( 5 )
|
||||||
hframes = 10
|
hframes = 10
|
||||||
|
|
||||||
[node name="LeashAnchor" type="Sprite" parent="."]
|
[node name="LeashAnchor" type="Sprite" parent="."]
|
||||||
|
visible = false
|
||||||
position = Vector2( 0, 2 )
|
position = Vector2( 0, 2 )
|
||||||
rotation = 3.92699
|
rotation = 3.92699
|
||||||
z_index = 2
|
z_index = 2
|
||||||
|
|||||||
@ -1,7 +1,11 @@
|
|||||||
extends Node
|
extends Node
|
||||||
|
onready var players: Dictionary = {}
|
||||||
var disposable_player: AudioStreamPlayer
|
var disposable_player: AudioStreamPlayer
|
||||||
|
|
||||||
func play_scene_independent(sound_name: String, bus: String = "Master", attenuation: float = 0.0) -> void:
|
|
||||||
|
func play_scene_independent(sound_name: String, bus: String = "Master", attenuation: float = 0.0, singleton = false) -> void:
|
||||||
|
if singleton && players.has(sound_name):
|
||||||
|
return
|
||||||
disposable_player = AudioStreamPlayer.new()
|
disposable_player = AudioStreamPlayer.new()
|
||||||
add_child(disposable_player)
|
add_child(disposable_player)
|
||||||
disposable_player.stream = GlobalState.sound_library[sound_name]
|
disposable_player.stream = GlobalState.sound_library[sound_name]
|
||||||
@ -9,6 +13,13 @@ func play_scene_independent(sound_name: String, bus: String = "Master", attenuat
|
|||||||
disposable_player.bus = bus
|
disposable_player.bus = bus
|
||||||
disposable_player.play()
|
disposable_player.play()
|
||||||
disposable_player.connect("finished", self, "dispose_player")
|
disposable_player.connect("finished", self, "dispose_player")
|
||||||
|
players[sound_name] = disposable_player
|
||||||
|
|
||||||
func dispose_player(player: AudioStreamPlayer = disposable_player) -> void:
|
func dispose_player(player: AudioStreamPlayer = disposable_player) -> void:
|
||||||
|
if player == null: return
|
||||||
player.queue_free()
|
player.queue_free()
|
||||||
|
|
||||||
|
func stop_scene_independent(sound_name: String):
|
||||||
|
if players.has(sound_name):
|
||||||
|
dispose_player(players[sound_name])
|
||||||
|
players.erase(sound_name)
|
||||||
|
|||||||
@ -1,13 +1,7 @@
|
|||||||
[gd_scene load_steps=3 format=2]
|
[gd_scene load_steps=2 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://src/Autoload/GlobalAudio.gd" type="Script" id=1]
|
[ext_resource path="res://src/Autoload/GlobalAudio.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://assets/sounds/Shopping For The Future (LOOP).wav" type="AudioStream" id=2]
|
|
||||||
|
|
||||||
[node name="GlobalAudio" type="Node"]
|
[node name="GlobalAudio" type="Node"]
|
||||||
|
pause_mode = 2
|
||||||
script = ExtResource( 1 )
|
script = ExtResource( 1 )
|
||||||
|
|
||||||
[node name="MenuMusic" type="AudioStreamPlayer" parent="."]
|
|
||||||
stream = ExtResource( 2 )
|
|
||||||
volume_db = -15.0
|
|
||||||
autoplay = true
|
|
||||||
bus = "Music"
|
|
||||||
|
|||||||
@ -20,8 +20,8 @@ func load_sounds() -> void:
|
|||||||
if file_name == "":
|
if file_name == "":
|
||||||
break
|
break
|
||||||
var sound_file
|
var sound_file
|
||||||
if file_name.ends_with(".ogg") || file_name.ends_with(".wav"):
|
if file_name.ends_with(".import"):
|
||||||
sound_file = load(path + "/" + file_name)
|
sound_file = load(path + "/" + file_name.split(".import")[0])
|
||||||
sound_library[sound_file.resource_path] = sound_file
|
sound_library[sound_file.resource_path] = sound_file
|
||||||
dir.list_dir_end()
|
dir.list_dir_end()
|
||||||
|
|
||||||
@ -36,10 +36,19 @@ func save() -> void:
|
|||||||
SaveManager.save_default()
|
SaveManager.save_default()
|
||||||
|
|
||||||
func set_savepoint(levelName: String, position: Vector2) -> void:
|
func set_savepoint(levelName: String, position: Vector2) -> void:
|
||||||
|
#TODO You can free a frog, go to the checkpoint and it will be
|
||||||
|
# saved as freed forever
|
||||||
if(!gsr.progress_dict.has(levelName)):
|
if(!gsr.progress_dict.has(levelName)):
|
||||||
gsr.progress_dict[levelName] = {}
|
gsr.progress_dict[levelName] = {}
|
||||||
gsr.progress_dict[levelName]["savepoint"] = position
|
gsr.progress_dict[levelName]["savepoint"] = position
|
||||||
SaveManager.save_default()
|
SaveManager.save_default()
|
||||||
|
|
||||||
|
func remove_savepoint(levelName: String) -> void:
|
||||||
|
if(!gsr.progress_dict.has(levelName)):
|
||||||
|
return
|
||||||
|
gsr.progress_dict[levelName].erase(levelName)
|
||||||
|
SaveManager.save_default()
|
||||||
|
|
||||||
|
|
||||||
func get_property_value(levelName: String, propertyName: String) -> int:
|
func get_property_value(levelName: String, propertyName: String) -> int:
|
||||||
if gsr.progress_dict.has(levelName) && gsr.progress_dict[levelName].has(propertyName):
|
if gsr.progress_dict.has(levelName) && gsr.progress_dict[levelName].has(propertyName):
|
||||||
|
|||||||
@ -8,6 +8,9 @@ script = ExtResource( 2 )
|
|||||||
progress_dict = {
|
progress_dict = {
|
||||||
}
|
}
|
||||||
wallet = 0
|
wallet = 0
|
||||||
|
last_played_level = ""
|
||||||
|
settings = {
|
||||||
|
}
|
||||||
tutorial_prompts = {
|
tutorial_prompts = {
|
||||||
}
|
}
|
||||||
input_map = {
|
input_map = {
|
||||||
|
|||||||
@ -3,13 +3,16 @@ extends Node2D
|
|||||||
onready var levelState := get_tree().root.get_child(4).get_node("%LevelState")
|
onready var levelState := get_tree().root.get_child(4).get_node("%LevelState")
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
if(GlobalState.get_savepoint(levelState.levelName) == global_position + Vector2(0,18)):
|
if(GlobalState.get_savepoint(levelState.levelName) == global_position + Vector2(0,18)):
|
||||||
$AnimationPlayer.play("rolloutflag")
|
$Flag.material.set_shader_param("speed", 0.6)
|
||||||
|
$Flag.material.set_shader_param("amplitude", 1)
|
||||||
|
$Flag.material.set_shader_param("inclination", 1)
|
||||||
|
$Flag.texture_offset = Vector2(0,0)
|
||||||
|
|
||||||
#TODO Animation plays over again on reset
|
#TODO Animation plays over again on reset
|
||||||
#TODO What should be saved when reaching a savepoint besides the position in the level
|
#TODO What should be saved when reaching a savepoint besides the position in the level
|
||||||
func _on_SaveArea_area_entered(area: Area2D) -> void:
|
func _on_SaveArea_area_entered(area: Area2D) -> void:
|
||||||
#TODO Spawnheight fixed
|
#TODO Spawnheight fixed
|
||||||
if(!GlobalState.get_savepoint(levelState.levelName) == global_position + Vector2(0,18)):
|
if(!GlobalState.get_savepoint(levelState.levelName) == global_position + Vector2(0,18)):
|
||||||
$AnimationPlayer.play("rolloutflag")
|
$AnimationPlayer.play("rolloutflag")
|
||||||
GlobalState.set_savepoint(levelState.levelName, global_position + Vector2(0,18))
|
GlobalState.set_savepoint(levelState.levelName, global_position + Vector2(0,18))
|
||||||
|
|||||||
@ -13,10 +13,12 @@ func _get_configuration_warning() -> String:
|
|||||||
return "The next scene property can't be empty" if not next_scene else ""
|
return "The next scene property can't be empty" if not next_scene else ""
|
||||||
|
|
||||||
func level_completion() -> void:
|
func level_completion() -> void:
|
||||||
|
GlobalState.remove_savepoint(levelName)
|
||||||
signalManager.emit_signal("level_completed")
|
signalManager.emit_signal("level_completed")
|
||||||
|
|
||||||
|
|
||||||
func teleport() -> void:
|
func teleport() -> void:
|
||||||
|
GlobalAudio.play_scene_independent("res://assets/sounds/MAGIC_SPELL_Morphing_Synth_Harp_Scales_stereo.wav", "Music", -8)
|
||||||
get_tree().paused = true
|
get_tree().paused = true
|
||||||
anim_player.play("fade_in")
|
anim_player.play("fade_in")
|
||||||
# TODO This doesn't pause the game but should
|
# TODO This doesn't pause the game but should
|
||||||
|
|||||||
@ -30,6 +30,7 @@ func selfActivate():
|
|||||||
elevator.monitoring = true
|
elevator.monitoring = true
|
||||||
#TODO dis importante
|
#TODO dis importante
|
||||||
activatorArea.set_deferred("monitoring", false)
|
activatorArea.set_deferred("monitoring", false)
|
||||||
|
$GetBackMusic.play()
|
||||||
|
|
||||||
|
|
||||||
func _on_ActivatorArea_area_entered(area:Area2D) -> void:
|
func _on_ActivatorArea_area_entered(area:Area2D) -> void:
|
||||||
|
|||||||
@ -1,9 +1,10 @@
|
|||||||
[gd_scene load_steps=11 format=2]
|
[gd_scene load_steps=12 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.gd" type="Script" id=1]
|
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://assets/contraption/button.png" type="Texture" id=2]
|
[ext_resource path="res://assets/contraption/button.png" type="Texture" id=2]
|
||||||
[ext_resource path="res://assets/contraption/buttonStateIndicator.png" type="Texture" id=3]
|
[ext_resource path="res://assets/contraption/buttonStateIndicator.png" type="Texture" id=3]
|
||||||
[ext_resource path="res://assets/ui/sci-fi-godot-theme/sci-fi-pixel.tres" type="DynamicFont" id=4]
|
[ext_resource path="res://assets/ui/sci-fi-godot-theme/sci-fi-pixel.tres" type="DynamicFont" id=4]
|
||||||
|
[ext_resource path="res://assets/sounds/Hurry! (LOOP).wav" type="AudioStream" id=5]
|
||||||
|
|
||||||
[sub_resource type="Gradient" id=23]
|
[sub_resource type="Gradient" id=23]
|
||||||
interpolation_mode = 2
|
interpolation_mode = 2
|
||||||
@ -148,6 +149,12 @@ one_shot = true
|
|||||||
|
|
||||||
[node name="GetBackTimer" type="Timer" parent="."]
|
[node name="GetBackTimer" type="Timer" parent="."]
|
||||||
|
|
||||||
|
[node name="GetBackMusic" type="AudioStreamPlayer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource( 5 )
|
||||||
|
volume_db = -10.655
|
||||||
|
bus = "Music"
|
||||||
|
|
||||||
[connection signal="area_entered" from="ActivatorArea" to="." method="_on_ActivatorArea_area_entered"]
|
[connection signal="area_entered" from="ActivatorArea" to="." method="_on_ActivatorArea_area_entered"]
|
||||||
[connection signal="area_exited" from="ActivatorArea" to="." method="_on_ActivatorArea_area_exited"]
|
[connection signal="area_exited" from="ActivatorArea" to="." method="_on_ActivatorArea_area_exited"]
|
||||||
[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"]
|
[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"]
|
||||||
|
|||||||
@ -6,9 +6,13 @@ onready var activatorArea = $"%ActivatorArea"
|
|||||||
onready var indicatorPlayer = $"%IndicatorPlayer"
|
onready var indicatorPlayer = $"%IndicatorPlayer"
|
||||||
onready var signalManager := get_tree().root.get_child(4).get_node("%SignalManager")
|
onready var signalManager := get_tree().root.get_child(4).get_node("%SignalManager")
|
||||||
onready var unactivatable_timer := $Timer
|
onready var unactivatable_timer := $Timer
|
||||||
|
export(int) var frog_number := 0
|
||||||
|
|
||||||
var activatable = false
|
var activatable = false
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
$Digit.frame = frog_number
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
if activatable && Input.is_action_just_released("interact"):
|
if activatable && Input.is_action_just_released("interact"):
|
||||||
selfActivate()
|
selfActivate()
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=22 format=2]
|
[gd_scene load_steps=24 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://src/Levels/Templates/LevelTemplate.gd" type="Script" id=1]
|
[ext_resource path="res://src/Levels/Templates/LevelTemplate.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://assets/environment/decor/platform-plants.png" type="Texture" id=2]
|
[ext_resource path="res://assets/environment/decor/platform-plants.png" type="Texture" id=2]
|
||||||
@ -17,6 +17,8 @@
|
|||||||
[ext_resource path="res://src/UserInterface/TutorialComboThingy.tscn" type="PackedScene" id=15]
|
[ext_resource path="res://src/UserInterface/TutorialComboThingy.tscn" type="PackedScene" id=15]
|
||||||
[ext_resource path="res://src/UserInterface/TutorialThingy.tscn" type="PackedScene" id=16]
|
[ext_resource path="res://src/UserInterface/TutorialThingy.tscn" type="PackedScene" id=16]
|
||||||
[ext_resource path="res://assets/effects/noise.png" type="Texture" id=17]
|
[ext_resource path="res://assets/effects/noise.png" type="Texture" id=17]
|
||||||
|
[ext_resource path="res://src/BenefitialObjects/SavePoint.tscn" type="PackedScene" id=18]
|
||||||
|
[ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Large_Space_Hangar_Deep_Smooth_loop_stereo.wav" type="AudioStream" id=19]
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=6]
|
[sub_resource type="AnimationNodeStateMachinePlayback" id=6]
|
||||||
|
|
||||||
@ -123,41 +125,19 @@ drag_margin_top = 0.1
|
|||||||
drag_margin_bottom = 0.1
|
drag_margin_bottom = 0.1
|
||||||
|
|
||||||
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
|
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
|
||||||
frame = 0
|
frame = 7
|
||||||
|
|
||||||
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
|
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
|
||||||
frame = 8
|
frame = 1
|
||||||
|
|
||||||
[node name="Blobby" parent="." instance=ExtResource( 8 )]
|
[node name="Blobby" parent="." instance=ExtResource( 8 )]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
position = Vector2( -156, -51 )
|
position = Vector2( -156, -51 )
|
||||||
scale = Vector2( 0.878906, 0.936025 )
|
scale = Vector2( 0.878906, 0.936025 )
|
||||||
|
|
||||||
[node name="CollisionPolygon2D" parent="Blobby/BlobbySkin" index="0"]
|
|
||||||
position = Vector2( 0.0286326, -10.0053 )
|
|
||||||
|
|
||||||
[node name="BlobbySprite" parent="Blobby" index="3"]
|
|
||||||
scale = Vector2( -1, 1 )
|
|
||||||
frame = 5
|
|
||||||
|
|
||||||
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||||
parameters/playback = SubResource( 6 )
|
parameters/playback = SubResource( 6 )
|
||||||
|
|
||||||
[node name="BlobbyBody" parent="Blobby" index="8"]
|
|
||||||
position = Vector2( 0.0392303, -10.002 )
|
|
||||||
|
|
||||||
[node name="Left_Wallcast1" parent="Blobby/WallRaycasts/LeftWallRaycast" index="0"]
|
|
||||||
position = Vector2( -11.9763, -5 )
|
|
||||||
|
|
||||||
[node name="Left_Wallcast2" parent="Blobby/WallRaycasts/LeftWallRaycast" index="1"]
|
|
||||||
position = Vector2( -11.9763, 5 )
|
|
||||||
|
|
||||||
[node name="Right_Wallcast1" parent="Blobby/WallRaycasts/RightWallRaycast" index="0"]
|
|
||||||
position = Vector2( 12.0551, -5 )
|
|
||||||
|
|
||||||
[node name="Right_Wallcast2" parent="Blobby/WallRaycasts/RightWallRaycast" index="1"]
|
|
||||||
position = Vector2( 12.0551, 5 )
|
|
||||||
|
|
||||||
[node name="PitArea" parent="." instance=ExtResource( 13 )]
|
[node name="PitArea" parent="." instance=ExtResource( 13 )]
|
||||||
position = Vector2( 1338, 198 )
|
position = Vector2( 1338, 198 )
|
||||||
|
|
||||||
@ -245,11 +225,20 @@ press_limit = 2
|
|||||||
position = Vector2( 1440, -90 )
|
position = Vector2( 1440, -90 )
|
||||||
action = "interact"
|
action = "interact"
|
||||||
tutorial_text = "Press to interact:"
|
tutorial_text = "Press to interact:"
|
||||||
press_limit = 1
|
|
||||||
|
|
||||||
[node name="Button" parent="TutorialThingy" index="0"]
|
[node name="Button" parent="TutorialThingy" index="0"]
|
||||||
material = SubResource( 14 )
|
material = SubResource( 14 )
|
||||||
|
|
||||||
|
[node name="SavePoint" parent="." instance=ExtResource( 18 )]
|
||||||
|
position = Vector2( 1168, -88 )
|
||||||
|
|
||||||
|
[node name="LevelAmbiance" type="AudioStreamPlayer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource( 19 )
|
||||||
|
volume_db = -14.994
|
||||||
|
autoplay = true
|
||||||
|
bus = "Music"
|
||||||
|
|
||||||
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
|
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
|
||||||
|
|
||||||
[editable path="SignalManager"]
|
[editable path="SignalManager"]
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=24 format=2]
|
[gd_scene load_steps=25 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://assets/environment/decor/platform-plants.png" type="Texture" id=1]
|
[ext_resource path="res://assets/environment/decor/platform-plants.png" type="Texture" id=1]
|
||||||
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=2]
|
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=2]
|
||||||
@ -19,6 +19,7 @@
|
|||||||
[ext_resource path="res://src/Platforms/FlyingPlatformSmol.tscn" type="PackedScene" id=17]
|
[ext_resource path="res://src/Platforms/FlyingPlatformSmol.tscn" type="PackedScene" id=17]
|
||||||
[ext_resource path="res://src/UserInterface/TutorialComboThingy.tscn" type="PackedScene" id=18]
|
[ext_resource path="res://src/UserInterface/TutorialComboThingy.tscn" type="PackedScene" id=18]
|
||||||
[ext_resource path="res://assets/effects/noise.png" type="Texture" id=19]
|
[ext_resource path="res://assets/effects/noise.png" type="Texture" id=19]
|
||||||
|
[ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Large_Space_Hangar_Deep_Smooth_loop_stereo.wav" type="AudioStream" id=20]
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=6]
|
[sub_resource type="AnimationNodeStateMachinePlayback" id=6]
|
||||||
|
|
||||||
@ -123,41 +124,19 @@ wait_time = 20.0
|
|||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|
||||||
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
|
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
|
||||||
frame = 2
|
frame = 10
|
||||||
|
|
||||||
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
|
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
|
||||||
frame = 1
|
frame = 9
|
||||||
|
|
||||||
[node name="Blobby" parent="." instance=ExtResource( 10 )]
|
[node name="Blobby" parent="." instance=ExtResource( 10 )]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
position = Vector2( -180, 112 )
|
position = Vector2( -180, 112 )
|
||||||
scale = Vector2( 0.878906, 0.936025 )
|
scale = Vector2( 0.878906, 0.936025 )
|
||||||
|
|
||||||
[node name="CollisionPolygon2D" parent="Blobby/BlobbySkin" index="0"]
|
|
||||||
position = Vector2( 0.0286326, -10.0053 )
|
|
||||||
|
|
||||||
[node name="BlobbySprite" parent="Blobby" index="3"]
|
|
||||||
scale = Vector2( -1, 1 )
|
|
||||||
frame = 5
|
|
||||||
|
|
||||||
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||||
parameters/playback = SubResource( 6 )
|
parameters/playback = SubResource( 6 )
|
||||||
|
|
||||||
[node name="BlobbyBody" parent="Blobby" index="8"]
|
|
||||||
position = Vector2( 0.0392303, -10.002 )
|
|
||||||
|
|
||||||
[node name="Left_Wallcast1" parent="Blobby/WallRaycasts/LeftWallRaycast" index="0"]
|
|
||||||
position = Vector2( -11.9763, -5 )
|
|
||||||
|
|
||||||
[node name="Left_Wallcast2" parent="Blobby/WallRaycasts/LeftWallRaycast" index="1"]
|
|
||||||
position = Vector2( -11.9763, 5 )
|
|
||||||
|
|
||||||
[node name="Right_Wallcast1" parent="Blobby/WallRaycasts/RightWallRaycast" index="0"]
|
|
||||||
position = Vector2( 12.0551, -5 )
|
|
||||||
|
|
||||||
[node name="Right_Wallcast2" parent="Blobby/WallRaycasts/RightWallRaycast" index="1"]
|
|
||||||
position = Vector2( 12.0551, 5 )
|
|
||||||
|
|
||||||
[node name="PitArea" parent="." instance=ExtResource( 3 )]
|
[node name="PitArea" parent="." instance=ExtResource( 3 )]
|
||||||
position = Vector2( 416, 170 )
|
position = Vector2( 416, 170 )
|
||||||
|
|
||||||
@ -273,6 +252,13 @@ goal_state = "runToJump"
|
|||||||
tutorial_text = "Move and press to runjump:"
|
tutorial_text = "Move and press to runjump:"
|
||||||
press_limit = 1
|
press_limit = 1
|
||||||
|
|
||||||
|
[node name="LevelAmbiance" type="AudioStreamPlayer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource( 20 )
|
||||||
|
volume_db = -14.994
|
||||||
|
autoplay = true
|
||||||
|
bus = "Music"
|
||||||
|
|
||||||
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
|
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
|
||||||
|
|
||||||
[editable path="SignalManager"]
|
[editable path="SignalManager"]
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=22 format=2]
|
[gd_scene load_steps=23 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=1]
|
[ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=1]
|
||||||
[ext_resource path="res://src/Environment/DropThroughPlatforms.tres" type="TileSet" id=2]
|
[ext_resource path="res://src/Environment/DropThroughPlatforms.tres" type="TileSet" id=2]
|
||||||
@ -19,8 +19,9 @@
|
|||||||
[ext_resource path="res://src/Actors/Enemies/DartingEnemy.tscn" type="PackedScene" id=17]
|
[ext_resource path="res://src/Actors/Enemies/DartingEnemy.tscn" type="PackedScene" id=17]
|
||||||
[ext_resource path="res://src/Contraptions/Triggers/GateButton.tscn" type="PackedScene" id=18]
|
[ext_resource path="res://src/Contraptions/Triggers/GateButton.tscn" type="PackedScene" id=18]
|
||||||
[ext_resource path="res://src/Platforms/FlyingLaserCutter.tscn" type="PackedScene" id=19]
|
[ext_resource path="res://src/Platforms/FlyingLaserCutter.tscn" type="PackedScene" id=19]
|
||||||
|
[ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Large_Space_Hangar_Deep_Smooth_loop_stereo.wav" type="AudioStream" id=20]
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=4]
|
[sub_resource type="AnimationNodeStateMachinePlayback" id=6]
|
||||||
|
|
||||||
[sub_resource type="TileSet" id=5]
|
[sub_resource type="TileSet" id=5]
|
||||||
0/name = "platform-plants.png 0"
|
0/name = "platform-plants.png 0"
|
||||||
@ -78,8 +79,8 @@ unique_name_in_owner = true
|
|||||||
position = Vector2( -70, -1.90735e-06 )
|
position = Vector2( -70, -1.90735e-06 )
|
||||||
scale = Vector2( 0.878906, 0.936025 )
|
scale = Vector2( 0.878906, 0.936025 )
|
||||||
|
|
||||||
[node name="AnimationTree" parent="Blobby/BlobbySprite" index="0"]
|
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||||
parameters/playback = SubResource( 4 )
|
parameters/playback = SubResource( 6 )
|
||||||
|
|
||||||
[node name="TileMap" type="TileMap" parent="."]
|
[node name="TileMap" type="TileMap" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
@ -183,6 +184,13 @@ position = Vector2( 609, 67 )
|
|||||||
speed = 300
|
speed = 300
|
||||||
acceleration = 800
|
acceleration = 800
|
||||||
|
|
||||||
|
[node name="LevelAmbiance" type="AudioStreamPlayer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource( 20 )
|
||||||
|
volume_db = -14.994
|
||||||
|
autoplay = true
|
||||||
|
bus = "Music"
|
||||||
|
|
||||||
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
|
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
|
||||||
|
|
||||||
[editable path="SignalManager"]
|
[editable path="SignalManager"]
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=19 format=2]
|
[gd_scene load_steps=20 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=1]
|
[ext_resource path="res://src/Environment/GreenHouseTiles.tres" type="TileSet" id=1]
|
||||||
[ext_resource path="res://src/Environment/DropThroughPlatforms.tres" type="TileSet" id=2]
|
[ext_resource path="res://src/Environment/DropThroughPlatforms.tres" type="TileSet" id=2]
|
||||||
@ -14,9 +14,10 @@
|
|||||||
[ext_resource path="res://src/Platforms/FlyingPlatformSmol.tscn" type="PackedScene" id=12]
|
[ext_resource path="res://src/Platforms/FlyingPlatformSmol.tscn" type="PackedScene" id=12]
|
||||||
[ext_resource path="res://src/Actors/Enemies/Flyer.tscn" type="PackedScene" id=13]
|
[ext_resource path="res://src/Actors/Enemies/Flyer.tscn" type="PackedScene" id=13]
|
||||||
[ext_resource path="res://src/BenefitialObjects/Coin.tscn" type="PackedScene" id=14]
|
[ext_resource path="res://src/BenefitialObjects/Coin.tscn" type="PackedScene" id=14]
|
||||||
|
[ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Large_Space_Hangar_Deep_Smooth_loop_stereo.wav" type="AudioStream" id=15]
|
||||||
[ext_resource path="res://src/Contraptions/VendingMachine.tscn" type="PackedScene" id=19]
|
[ext_resource path="res://src/Contraptions/VendingMachine.tscn" type="PackedScene" id=19]
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=4]
|
[sub_resource type="AnimationNodeStateMachinePlayback" id=7]
|
||||||
|
|
||||||
[sub_resource type="TileSet" id=5]
|
[sub_resource type="TileSet" id=5]
|
||||||
0/name = "platform-plants.png 0"
|
0/name = "platform-plants.png 0"
|
||||||
@ -66,18 +67,18 @@ unique_name_in_owner = true
|
|||||||
drag_margin_bottom = 0.3
|
drag_margin_bottom = 0.3
|
||||||
|
|
||||||
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
|
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
|
||||||
frame = 4
|
frame = 6
|
||||||
|
|
||||||
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
|
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
|
||||||
frame = 3
|
frame = 5
|
||||||
|
|
||||||
[node name="Blobby" parent="." instance=ExtResource( 9 )]
|
[node name="Blobby" parent="." instance=ExtResource( 9 )]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
position = Vector2( -186, 110 )
|
position = Vector2( -186, 110 )
|
||||||
scale = Vector2( 0.878906, 0.936025 )
|
scale = Vector2( 0.878906, 0.936025 )
|
||||||
|
|
||||||
[node name="AnimationTree" parent="Blobby/BlobbySprite" index="0"]
|
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||||
parameters/playback = SubResource( 4 )
|
parameters/playback = SubResource( 7 )
|
||||||
|
|
||||||
[node name="VendingMachine" parent="." instance=ExtResource( 19 )]
|
[node name="VendingMachine" parent="." instance=ExtResource( 19 )]
|
||||||
position = Vector2( 48, 100 )
|
position = Vector2( 48, 100 )
|
||||||
@ -137,6 +138,13 @@ position = Vector2( 0, 23 )
|
|||||||
[node name="Position2D3" parent="Flyer/PatrolPath" index="1"]
|
[node name="Position2D3" parent="Flyer/PatrolPath" index="1"]
|
||||||
position = Vector2( 0, -25 )
|
position = Vector2( 0, -25 )
|
||||||
|
|
||||||
|
[node name="LevelAmbiance" type="AudioStreamPlayer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource( 15 )
|
||||||
|
volume_db = -14.994
|
||||||
|
autoplay = true
|
||||||
|
bus = "Music"
|
||||||
|
|
||||||
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
|
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
|
||||||
|
|
||||||
[editable path="SignalManager"]
|
[editable path="SignalManager"]
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=21 format=2]
|
[gd_scene load_steps=22 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://src/Actors/Enemies/DartingEnemy.tscn" type="PackedScene" id=1]
|
[ext_resource path="res://src/Actors/Enemies/DartingEnemy.tscn" type="PackedScene" id=1]
|
||||||
[ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=2]
|
[ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=2]
|
||||||
@ -15,12 +15,13 @@
|
|||||||
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=13]
|
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=13]
|
||||||
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=14]
|
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=14]
|
||||||
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=15]
|
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=15]
|
||||||
|
[ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Large_Space_Hangar_Deep_Smooth_loop_stereo.wav" type="AudioStream" id=16]
|
||||||
[ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=17]
|
[ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=17]
|
||||||
[ext_resource path="res://src/Levels/Templates/LevelTemplate.gd" type="Script" id=19]
|
[ext_resource path="res://src/Levels/Templates/LevelTemplate.gd" type="Script" id=19]
|
||||||
[ext_resource path="res://src/Environment/Grass/ShaderGrass.tscn" type="PackedScene" id=20]
|
[ext_resource path="res://src/Environment/Grass/ShaderGrass.tscn" type="PackedScene" id=20]
|
||||||
[ext_resource path="res://src/Environment/Legacy/Greenhouse.tscn" type="PackedScene" id=21]
|
[ext_resource path="res://src/Environment/Legacy/Greenhouse.tscn" type="PackedScene" id=21]
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=4]
|
[sub_resource type="AnimationNodeStateMachinePlayback" id=1]
|
||||||
|
|
||||||
[node name="LevelTemplate" type="Node2D"]
|
[node name="LevelTemplate" type="Node2D"]
|
||||||
script = ExtResource( 19 )
|
script = ExtResource( 19 )
|
||||||
@ -44,18 +45,15 @@ wait_time = 20.0
|
|||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|
||||||
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
|
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
|
||||||
frame = 4
|
frame = 0
|
||||||
|
|
||||||
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
|
|
||||||
frame = 8
|
|
||||||
|
|
||||||
[node name="Blobby" parent="." instance=ExtResource( 15 )]
|
[node name="Blobby" parent="." instance=ExtResource( 15 )]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
position = Vector2( 251, -24 )
|
position = Vector2( 746, -195 )
|
||||||
scale = Vector2( 0.878906, 0.936025 )
|
scale = Vector2( 0.878906, 0.936025 )
|
||||||
|
|
||||||
[node name="AnimationTree" parent="Blobby/BlobbySprite" index="0"]
|
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||||
parameters/playback = SubResource( 4 )
|
parameters/playback = SubResource( 1 )
|
||||||
|
|
||||||
[node name="GateButton" parent="." instance=ExtResource( 5 )]
|
[node name="GateButton" parent="." instance=ExtResource( 5 )]
|
||||||
position = Vector2( 371, -45 )
|
position = Vector2( 371, -45 )
|
||||||
@ -454,6 +452,13 @@ scale = Vector2( 1, 1.5 )
|
|||||||
position = Vector2( 48, -7 )
|
position = Vector2( 48, -7 )
|
||||||
scale = Vector2( 1, 1.5 )
|
scale = Vector2( 1, 1.5 )
|
||||||
|
|
||||||
|
[node name="LevelAmbiance" type="AudioStreamPlayer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource( 16 )
|
||||||
|
volume_db = -14.994
|
||||||
|
autoplay = true
|
||||||
|
bus = "Music"
|
||||||
|
|
||||||
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
|
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
|
||||||
[connection signal="button_pushed" from="FrogFreeButton" to="BoundFrog" method="_on_FrogFreeButton_pushed"]
|
[connection signal="button_pushed" from="FrogFreeButton" to="BoundFrog" method="_on_FrogFreeButton_pushed"]
|
||||||
|
|
||||||
@ -461,6 +466,7 @@ scale = Vector2( 1, 1.5 )
|
|||||||
[editable path="LevelState"]
|
[editable path="LevelState"]
|
||||||
[editable path="UserInterface"]
|
[editable path="UserInterface"]
|
||||||
[editable path="UserInterface/HUD"]
|
[editable path="UserInterface/HUD"]
|
||||||
|
[editable path="UserInterface/PauseScreen"]
|
||||||
[editable path="BlobbyCam"]
|
[editable path="BlobbyCam"]
|
||||||
[editable path="Blobby"]
|
[editable path="Blobby"]
|
||||||
[editable path="DartingEnemy"]
|
[editable path="DartingEnemy"]
|
||||||
|
|||||||
@ -1,10 +1,11 @@
|
|||||||
[gd_scene load_steps=22 format=2]
|
[gd_scene load_steps=23 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=1]
|
[ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=1]
|
||||||
[ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=2]
|
[ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=2]
|
||||||
[ext_resource path="res://src/Utilities/LevelState.tscn" type="PackedScene" id=3]
|
[ext_resource path="res://src/Utilities/LevelState.tscn" type="PackedScene" id=3]
|
||||||
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=4]
|
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=4]
|
||||||
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=5]
|
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=5]
|
||||||
|
[ext_resource path="res://src/Platforms/FlyingPlatform.tscn" type="PackedScene" id=6]
|
||||||
[ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=7]
|
[ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=7]
|
||||||
[ext_resource path="res://src/Environment/Legacy/AlienShipTileSet.tres" type="TileSet" id=8]
|
[ext_resource path="res://src/Environment/Legacy/AlienShipTileSet.tres" type="TileSet" id=8]
|
||||||
[ext_resource path="res://src/Levels/Templates/LevelTemplate.gd" type="Script" id=9]
|
[ext_resource path="res://src/Levels/Templates/LevelTemplate.gd" type="Script" id=9]
|
||||||
@ -15,12 +16,12 @@
|
|||||||
[ext_resource path="res://src/ObstacleObjects/Spikes.tscn" type="PackedScene" id=14]
|
[ext_resource path="res://src/ObstacleObjects/Spikes.tscn" type="PackedScene" id=14]
|
||||||
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=15]
|
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=15]
|
||||||
[ext_resource path="res://src/Platforms/FlyingLaserCutter.tscn" type="PackedScene" id=16]
|
[ext_resource path="res://src/Platforms/FlyingLaserCutter.tscn" type="PackedScene" id=16]
|
||||||
[ext_resource path="res://src/Platforms/legacy/FlyingPlatformClean.tscn" type="PackedScene" id=17]
|
[ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Large_Space_Hangar_Deep_Smooth_loop_stereo.wav" type="AudioStream" id=17]
|
||||||
[ext_resource path="res://src/BenefitialObjects/Coin.tscn" type="PackedScene" id=18]
|
[ext_resource path="res://src/BenefitialObjects/Coin.tscn" type="PackedScene" id=18]
|
||||||
[ext_resource path="res://src/Environment/Grass/ShaderGrass.tscn" type="PackedScene" id=19]
|
[ext_resource path="res://src/Environment/Grass/ShaderGrass.tscn" type="PackedScene" id=19]
|
||||||
[ext_resource path="res://src/Environment/Legacy/Greenhouse.tscn" type="PackedScene" id=20]
|
[ext_resource path="res://src/Environment/Legacy/Greenhouse.tscn" type="PackedScene" id=20]
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=4]
|
[sub_resource type="AnimationNodeStateMachinePlayback" id=6]
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=5]
|
[sub_resource type="AnimationNodeStateMachinePlayback" id=5]
|
||||||
|
|
||||||
@ -47,18 +48,18 @@ unique_name_in_owner = true
|
|||||||
drag_margin_bottom = 0.3
|
drag_margin_bottom = 0.3
|
||||||
|
|
||||||
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
|
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
|
||||||
frame = 5
|
frame = 3
|
||||||
|
|
||||||
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
|
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
|
||||||
frame = 7
|
frame = 5
|
||||||
|
|
||||||
[node name="Blobby" parent="." instance=ExtResource( 5 )]
|
[node name="Blobby" parent="." instance=ExtResource( 5 )]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
position = Vector2( 3.8147e-06, 144 )
|
position = Vector2( 3.8147e-06, 144 )
|
||||||
scale = Vector2( 0.878906, 0.936025 )
|
scale = Vector2( 0.878906, 0.936025 )
|
||||||
|
|
||||||
[node name="AnimationTree" parent="Blobby/BlobbySprite" index="0"]
|
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||||
parameters/playback = SubResource( 4 )
|
parameters/playback = SubResource( 6 )
|
||||||
|
|
||||||
[node name="SimpleEnemy" parent="." instance=ExtResource( 10 )]
|
[node name="SimpleEnemy" parent="." instance=ExtResource( 10 )]
|
||||||
position = Vector2( 264, -36 )
|
position = Vector2( 264, -36 )
|
||||||
@ -67,9 +68,6 @@ position = Vector2( 264, -36 )
|
|||||||
position = Vector2( 837, 72 )
|
position = Vector2( 837, 72 )
|
||||||
aggressive = false
|
aggressive = false
|
||||||
|
|
||||||
[node name="FlyerSprite" parent="Flyer" index="2"]
|
|
||||||
frame = 0
|
|
||||||
|
|
||||||
[node name="AnimationTree" parent="Flyer/FlyerSprite" index="1"]
|
[node name="AnimationTree" parent="Flyer/FlyerSprite" index="1"]
|
||||||
parameters/playback = SubResource( 5 )
|
parameters/playback = SubResource( 5 )
|
||||||
|
|
||||||
@ -210,12 +208,6 @@ position = Vector2( 648, 0 )
|
|||||||
[node name="Spikes29" parent="Spikes" instance=ExtResource( 14 )]
|
[node name="Spikes29" parent="Spikes" instance=ExtResource( 14 )]
|
||||||
position = Vector2( 672, 0 )
|
position = Vector2( 672, 0 )
|
||||||
|
|
||||||
[node name="FlyingPlatformClean" parent="." instance=ExtResource( 17 )]
|
|
||||||
position = Vector2( 1032, 228 )
|
|
||||||
|
|
||||||
[node name="anim" parent="FlyingPlatformClean" index="1"]
|
|
||||||
reset_on_save = false
|
|
||||||
|
|
||||||
[node name="Coin" parent="." instance=ExtResource( 18 )]
|
[node name="Coin" parent="." instance=ExtResource( 18 )]
|
||||||
position = Vector2( 696, 27 )
|
position = Vector2( 696, 27 )
|
||||||
|
|
||||||
@ -362,6 +354,17 @@ scale = Vector2( 1, 1.5 )
|
|||||||
position = Vector2( 18, -6.72727 )
|
position = Vector2( 18, -6.72727 )
|
||||||
scale = Vector2( 1, 1.5 )
|
scale = Vector2( 1, 1.5 )
|
||||||
|
|
||||||
|
[node name="FlyingPlatform" parent="." instance=ExtResource( 6 )]
|
||||||
|
position = Vector2( 1044, 225 )
|
||||||
|
x_target = 48
|
||||||
|
|
||||||
|
[node name="LevelAmbiance" type="AudioStreamPlayer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource( 17 )
|
||||||
|
volume_db = -14.994
|
||||||
|
autoplay = true
|
||||||
|
bus = "Music"
|
||||||
|
|
||||||
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
|
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
|
||||||
[connection signal="button_pushed" from="FrogFreeButton" to="BoundFrog" method="_on_FrogFreeButton_pushed"]
|
[connection signal="button_pushed" from="FrogFreeButton" to="BoundFrog" method="_on_FrogFreeButton_pushed"]
|
||||||
|
|
||||||
@ -375,4 +378,3 @@ scale = Vector2( 1, 1.5 )
|
|||||||
[editable path="TileMap"]
|
[editable path="TileMap"]
|
||||||
[editable path="BoundFrog"]
|
[editable path="BoundFrog"]
|
||||||
[editable path="BoundFrog/RopeAnchor"]
|
[editable path="BoundFrog/RopeAnchor"]
|
||||||
[editable path="FlyingPlatformClean"]
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=25 format=2]
|
[gd_scene load_steps=26 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://src/BenefitialObjects/Coin.tscn" type="PackedScene" id=1]
|
[ext_resource path="res://src/BenefitialObjects/Coin.tscn" type="PackedScene" id=1]
|
||||||
[ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=2]
|
[ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=2]
|
||||||
@ -8,6 +8,7 @@
|
|||||||
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=6]
|
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=6]
|
||||||
[ext_resource path="res://src/Levels/Templates/LevelTemplate.gd" type="Script" id=7]
|
[ext_resource path="res://src/Levels/Templates/LevelTemplate.gd" type="Script" id=7]
|
||||||
[ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=8]
|
[ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=8]
|
||||||
|
[ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Large_Space_Hangar_Deep_Smooth_loop_stereo.wav" type="AudioStream" id=9]
|
||||||
[ext_resource path="res://src/Platforms/legacy/FlyingPlatformClean.tscn" type="PackedScene" id=10]
|
[ext_resource path="res://src/Platforms/legacy/FlyingPlatformClean.tscn" type="PackedScene" id=10]
|
||||||
[ext_resource path="res://src/ObstacleObjects/Mine.tscn" type="PackedScene" id=11]
|
[ext_resource path="res://src/ObstacleObjects/Mine.tscn" type="PackedScene" id=11]
|
||||||
[ext_resource path="res://src/Platforms/FlyingLaserCutter.tscn" type="PackedScene" id=12]
|
[ext_resource path="res://src/Platforms/FlyingLaserCutter.tscn" type="PackedScene" id=12]
|
||||||
@ -20,7 +21,7 @@
|
|||||||
[ext_resource path="res://src/BenefitialObjects/SavePoint.tscn" type="PackedScene" id=19]
|
[ext_resource path="res://src/BenefitialObjects/SavePoint.tscn" type="PackedScene" id=19]
|
||||||
[ext_resource path="res://src/Environment/Legacy/Greenhouse.tscn" type="PackedScene" id=20]
|
[ext_resource path="res://src/Environment/Legacy/Greenhouse.tscn" type="PackedScene" id=20]
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=4]
|
[sub_resource type="AnimationNodeStateMachinePlayback" id=9]
|
||||||
|
|
||||||
[sub_resource type="Animation" id=5]
|
[sub_resource type="Animation" id=5]
|
||||||
resource_name = "Horizontal"
|
resource_name = "Horizontal"
|
||||||
@ -113,16 +114,19 @@ unique_name_in_owner = true
|
|||||||
drag_margin_top = 0.08
|
drag_margin_top = 0.08
|
||||||
drag_margin_bottom = 0.08
|
drag_margin_bottom = 0.08
|
||||||
|
|
||||||
|
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
|
||||||
|
frame = 8
|
||||||
|
|
||||||
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
|
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
|
||||||
frame = 11
|
frame = 1
|
||||||
|
|
||||||
[node name="Blobby" parent="." instance=ExtResource( 5 )]
|
[node name="Blobby" parent="." instance=ExtResource( 5 )]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
position = Vector2( -168, 95 )
|
position = Vector2( -168, 95 )
|
||||||
scale = Vector2( 0.878906, 0.936025 )
|
scale = Vector2( 0.878906, 0.936025 )
|
||||||
|
|
||||||
[node name="AnimationTree" parent="Blobby/BlobbySprite" index="0"]
|
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||||
parameters/playback = SubResource( 4 )
|
parameters/playback = SubResource( 9 )
|
||||||
|
|
||||||
[node name="DropThroughPlatform" parent="." instance=ExtResource( 13 )]
|
[node name="DropThroughPlatform" parent="." instance=ExtResource( 13 )]
|
||||||
tile_data = PoolIntArray( -655281, 1, 0, -655280, 0, 0, -655279, 0, 0, -655278, 0, 0, -655276, 2, 0, 131072, 1, 0, 131073, 536870912, 0, 131074, 536870912, 0, 131075, 536870912, 0, 131076, 536870912, 0, 131077, 536870912, 0, 131078, 536870912, 0, 131079, 536870912, 0, 131080, 536870912, 0, 131081, 536870912, 0, 131082, 536870912, 0, 131083, 536870912, 0, 131084, 536870912, 0, 131085, 536870912, 0, 131086, 536870912, 0, 131087, 536870912, 0, 131088, 536870912, 0, 131089, 536870912, 0, 131090, 536870912, 0, 131091, 536870912, 0, 131092, 536870912, 0, 131093, 536870912, 0, 131094, 536870912, 0, 131096, 2, 0, 1376265, 1, 0, 1376266, 0, 0, 1376268, 2, 0, 1966084, 1, 0, 1966085, 0, 0, 1966087, 2, 0 )
|
tile_data = PoolIntArray( -655281, 1, 0, -655280, 0, 0, -655279, 0, 0, -655278, 0, 0, -655276, 2, 0, 131072, 1, 0, 131073, 536870912, 0, 131074, 536870912, 0, 131075, 536870912, 0, 131076, 536870912, 0, 131077, 536870912, 0, 131078, 536870912, 0, 131079, 536870912, 0, 131080, 536870912, 0, 131081, 536870912, 0, 131082, 536870912, 0, 131083, 536870912, 0, 131084, 536870912, 0, 131085, 536870912, 0, 131086, 536870912, 0, 131087, 536870912, 0, 131088, 536870912, 0, 131089, 536870912, 0, 131090, 536870912, 0, 131091, 536870912, 0, 131092, 536870912, 0, 131093, 536870912, 0, 131094, 536870912, 0, 131096, 2, 0, 1376265, 1, 0, 1376266, 0, 0, 1376268, 2, 0, 1966084, 1, 0, 1966085, 0, 0, 1966087, 2, 0 )
|
||||||
@ -324,6 +328,13 @@ position = Vector2( 648, -204 )
|
|||||||
[node name="Coin4" parent="." instance=ExtResource( 1 )]
|
[node name="Coin4" parent="." instance=ExtResource( 1 )]
|
||||||
position = Vector2( 1116, -120 )
|
position = Vector2( 1116, -120 )
|
||||||
|
|
||||||
|
[node name="LevelAmbiance" type="AudioStreamPlayer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource( 9 )
|
||||||
|
volume_db = -14.994
|
||||||
|
autoplay = true
|
||||||
|
bus = "Music"
|
||||||
|
|
||||||
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
|
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
|
||||||
|
|
||||||
[editable path="SignalManager"]
|
[editable path="SignalManager"]
|
||||||
|
|||||||
@ -12,9 +12,9 @@
|
|||||||
[ext_resource path="res://assets/environment/decor/platform-plants.png" type="Texture" id=10]
|
[ext_resource path="res://assets/environment/decor/platform-plants.png" type="Texture" id=10]
|
||||||
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=11]
|
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=11]
|
||||||
[ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Large_Space_Hangar_Deep_Smooth_loop_stereo.wav" type="AudioStream" id=12]
|
[ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Large_Space_Hangar_Deep_Smooth_loop_stereo.wav" type="AudioStream" id=12]
|
||||||
[ext_resource path="res://assets/sounds/Hurry! (LOOP).wav" type="AudioStream" id=13]
|
[ext_resource path="res://src/Utilities/SceneAudio.tscn" type="PackedScene" id=13]
|
||||||
|
|
||||||
[sub_resource type="AnimationNodeStateMachinePlayback" id=4]
|
[sub_resource type="AnimationNodeStateMachinePlayback" id=6]
|
||||||
|
|
||||||
[sub_resource type="TileSet" id=5]
|
[sub_resource type="TileSet" id=5]
|
||||||
0/name = "platform-plants.png 0"
|
0/name = "platform-plants.png 0"
|
||||||
@ -48,6 +48,8 @@ __meta__ = {
|
|||||||
|
|
||||||
[node name="SignalManager" parent="." instance=ExtResource( 2 )]
|
[node name="SignalManager" parent="." instance=ExtResource( 2 )]
|
||||||
|
|
||||||
|
[node name="SceneAudio" parent="." instance=ExtResource( 13 )]
|
||||||
|
|
||||||
[node name="LevelState" parent="." instance=ExtResource( 3 )]
|
[node name="LevelState" parent="." instance=ExtResource( 3 )]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|
||||||
@ -62,18 +64,18 @@ unique_name_in_owner = true
|
|||||||
drag_margin_bottom = 0.3
|
drag_margin_bottom = 0.3
|
||||||
|
|
||||||
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
|
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
|
||||||
frame = 0
|
frame = 8
|
||||||
|
|
||||||
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
|
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
|
||||||
frame = 13
|
frame = 7
|
||||||
|
|
||||||
[node name="Blobby" parent="." instance=ExtResource( 7 )]
|
[node name="Blobby" parent="." instance=ExtResource( 7 )]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
position = Vector2( -70, -1.90735e-06 )
|
position = Vector2( -70, -1.90735e-06 )
|
||||||
scale = Vector2( 0.878906, 0.936025 )
|
scale = Vector2( 0.878906, 0.936025 )
|
||||||
|
|
||||||
[node name="AnimationTree" parent="Blobby/BlobbySprite" index="0"]
|
[node name="BlobbymationTree" parent="Blobby/BlobbySprite" index="0"]
|
||||||
parameters/playback = SubResource( 4 )
|
parameters/playback = SubResource( 6 )
|
||||||
|
|
||||||
[node name="TileMap" type="TileMap" parent="."]
|
[node name="TileMap" type="TileMap" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
@ -106,12 +108,12 @@ position = Vector2( 36, -8 )
|
|||||||
scale = Vector2( 0.5, 0.5 )
|
scale = Vector2( 0.5, 0.5 )
|
||||||
next_scene = "res://src/Levels/Actual Level 1.tscn"
|
next_scene = "res://src/Levels/Actual Level 1.tscn"
|
||||||
|
|
||||||
[node name="LevelMusic" type="AudioStreamPlayer" parent="."]
|
[node name="LevelAmbiance" type="AudioStreamPlayer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
stream = ExtResource( 12 )
|
stream = ExtResource( 12 )
|
||||||
|
volume_db = -14.994
|
||||||
autoplay = true
|
autoplay = true
|
||||||
|
bus = "Music"
|
||||||
[node name="GetBackMusic" type="AudioStreamPlayer" parent="."]
|
|
||||||
stream = ExtResource( 13 )
|
|
||||||
|
|
||||||
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
|
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
[gd_scene load_steps=6 format=2]
|
[gd_scene load_steps=7 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://src/Platforms/FlyingPlatform.gd" type="Script" id=1]
|
[ext_resource path="res://src/Platforms/FlyingPlatform.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://assets/contraption/5xFloatingPlatform.png" type="Texture" id=2]
|
[ext_resource path="res://assets/contraption/5xFloatingPlatform.png" type="Texture" id=2]
|
||||||
|
[ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Static_Tonal_loop_stereo.wav" type="AudioStream" id=3]
|
||||||
|
|
||||||
[sub_resource type="Animation" id=1]
|
[sub_resource type="Animation" id=1]
|
||||||
length = 0.001
|
length = 0.001
|
||||||
@ -60,6 +61,14 @@ collision_layer = 16
|
|||||||
collision_mask = 0
|
collision_mask = 0
|
||||||
motion/sync_to_physics = true
|
motion/sync_to_physics = true
|
||||||
|
|
||||||
|
[node name="FlyingSound" type="AudioStreamPlayer2D" parent="PlatformBody"]
|
||||||
|
stream = ExtResource( 3 )
|
||||||
|
volume_db = -8.0
|
||||||
|
autoplay = true
|
||||||
|
max_distance = 480.0
|
||||||
|
attenuation = 3.73213
|
||||||
|
bus = "Effects"
|
||||||
|
|
||||||
[node name="Sprite" type="Sprite" parent="PlatformBody"]
|
[node name="Sprite" type="Sprite" parent="PlatformBody"]
|
||||||
position = Vector2( 0, 8 )
|
position = Vector2( 0, 8 )
|
||||||
texture = ExtResource( 2 )
|
texture = ExtResource( 2 )
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
[gd_scene load_steps=6 format=2]
|
[gd_scene load_steps=7 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://src/Platforms/FlyingPlatform.gd" type="Script" id=1]
|
[ext_resource path="res://src/Platforms/FlyingPlatform.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://assets/contraption/3xFloatingPlatform.png" type="Texture" id=2]
|
[ext_resource path="res://assets/contraption/3xFloatingPlatform.png" type="Texture" id=2]
|
||||||
|
[ext_resource path="res://assets/sounds/AMBIENCE_SciFi_Static_Tonal_loop_stereo.wav" type="AudioStream" id=3]
|
||||||
|
|
||||||
[sub_resource type="Animation" id=1]
|
[sub_resource type="Animation" id=1]
|
||||||
length = 0.001
|
length = 0.001
|
||||||
@ -90,4 +91,12 @@ polygon = PoolVector2Array( -6, -10, 6, -10, 5.5, 0, 5.25, 5, -5.25, 5, -5.5, 0
|
|||||||
|
|
||||||
[node name="FlyTween" type="Tween" parent="."]
|
[node name="FlyTween" type="Tween" parent="."]
|
||||||
|
|
||||||
|
[node name="FlyingSound" type="AudioStreamPlayer2D" parent="."]
|
||||||
|
stream = ExtResource( 3 )
|
||||||
|
volume_db = -8.0
|
||||||
|
autoplay = true
|
||||||
|
max_distance = 480.0
|
||||||
|
attenuation = 3.73213
|
||||||
|
bus = "Effects"
|
||||||
|
|
||||||
[connection signal="tween_completed" from="FlyTween" to="." method="_on_FlyTween_tween_completed"]
|
[connection signal="tween_completed" from="FlyTween" to="." method="_on_FlyTween_tween_completed"]
|
||||||
|
|||||||
@ -51,5 +51,5 @@ scale = Vector2( 1.5, 1 )
|
|||||||
position = Vector2( 0, 1.5 )
|
position = Vector2( 0, 1.5 )
|
||||||
z_index = -1
|
z_index = -1
|
||||||
frames = SubResource( 1 )
|
frames = SubResource( 1 )
|
||||||
frame = 19
|
frame = 8
|
||||||
playing = true
|
playing = true
|
||||||
|
|||||||
@ -90,3 +90,8 @@ func _on_EnteringVelocityDetector_area_entered(area: Area2D) -> void:
|
|||||||
if area.name == "BlobbySkin":
|
if area.name == "BlobbySkin":
|
||||||
if area.get_parent().velocity.y > 0:
|
if area.get_parent().velocity.y > 0:
|
||||||
stored_incoming_velocity = area.get_parent().velocity.y
|
stored_incoming_velocity = area.get_parent().velocity.y
|
||||||
|
|
||||||
|
|
||||||
|
func _on_EnteringVelocityDetector_area_exited(area: Area2D) -> void:
|
||||||
|
if coupled_body == null:
|
||||||
|
$SpringSound.play()
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
[gd_scene load_steps=6 format=2]
|
[gd_scene load_steps=7 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://src/Platforms/Spring/SpringPhysics.gd" type="Script" id=1]
|
[ext_resource path="res://src/Platforms/Spring/SpringPhysics.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://assets/contraption/SpringPlatform.png" type="Texture" id=2]
|
[ext_resource path="res://assets/contraption/SpringPlatform.png" type="Texture" id=2]
|
||||||
|
[ext_resource path="res://assets/sounds/leavingspringmaybe.wav" type="AudioStream" id=3]
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id=2]
|
[sub_resource type="RectangleShape2D" id=2]
|
||||||
extents = Vector2( 11.4863, 2.10568 )
|
extents = Vector2( 11.4863, 2.10568 )
|
||||||
@ -44,5 +45,12 @@ collision_mask = 43
|
|||||||
position = Vector2( 0.00395775, -1.07744 )
|
position = Vector2( 0.00395775, -1.07744 )
|
||||||
shape = SubResource( 3 )
|
shape = SubResource( 3 )
|
||||||
|
|
||||||
|
[node name="SpringSound" type="AudioStreamPlayer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource( 3 )
|
||||||
|
volume_db = -11.935
|
||||||
|
bus = "Effects"
|
||||||
|
|
||||||
[connection signal="area_exited" from="SpringSkin" to="." method="_on_SpringSkin_area_exited"]
|
[connection signal="area_exited" from="SpringSkin" to="." method="_on_SpringSkin_area_exited"]
|
||||||
[connection signal="area_entered" from="EnteringVelocityDetector" to="." method="_on_EnteringVelocityDetector_area_entered"]
|
[connection signal="area_entered" from="EnteringVelocityDetector" to="." method="_on_EnteringVelocityDetector_area_entered"]
|
||||||
|
[connection signal="area_exited" from="EnteringVelocityDetector" to="." method="_on_EnteringVelocityDetector_area_exited"]
|
||||||
|
|||||||
@ -41,12 +41,12 @@ resource_name = "LowPassFilter"
|
|||||||
cutoff_hz = 3000.0
|
cutoff_hz = 3000.0
|
||||||
|
|
||||||
[resource]
|
[resource]
|
||||||
bus/0/volume_db = -6.0206
|
bus/0/volume_db = -1.9382
|
||||||
bus/1/name = "Music"
|
bus/1/name = "Music"
|
||||||
bus/1/solo = false
|
bus/1/solo = false
|
||||||
bus/1/mute = false
|
bus/1/mute = false
|
||||||
bus/1/bypass_fx = false
|
bus/1/bypass_fx = false
|
||||||
bus/1/volume_db = inf_neg
|
bus/1/volume_db = -10.4576
|
||||||
bus/1/send = "Master"
|
bus/1/send = "Master"
|
||||||
bus/1/effect/0/effect = SubResource( 1 )
|
bus/1/effect/0/effect = SubResource( 1 )
|
||||||
bus/1/effect/0/enabled = false
|
bus/1/effect/0/enabled = false
|
||||||
|
|||||||
@ -226,7 +226,10 @@ func _enter_state(new_state, old_state):
|
|||||||
anim_state_playback.travel("ducking")
|
anim_state_playback.travel("ducking")
|
||||||
states.jump:
|
states.jump:
|
||||||
if parent.rotation == 0 || !parent.snap_possible:
|
if parent.rotation == 0 || !parent.snap_possible:
|
||||||
anim_state_playback.travel("jumping")
|
if old_state == states.run:
|
||||||
|
anim_state_playback.travel("runToJump")
|
||||||
|
else:
|
||||||
|
anim_state_playback.travel("jump")
|
||||||
states.fall:
|
states.fall:
|
||||||
if parent.rotation == 0 || !parent.snap_possible:
|
if parent.rotation == 0 || !parent.snap_possible:
|
||||||
anim_state_playback.travel("falling")
|
anim_state_playback.travel("falling")
|
||||||
|
|||||||
@ -4,7 +4,8 @@ export(String, FILE) var next_scene_path: String = ""
|
|||||||
onready var selected_level_base_path: String = "res://src/Levels/"
|
onready var selected_level_base_path: String = "res://src/Levels/"
|
||||||
|
|
||||||
func _on_button_up() -> void:
|
func _on_button_up() -> void:
|
||||||
GlobalAudio.play_scene_independent("res://assets/sounds/MAGIC_SPELL_Morphing_Synth_Harp_Scales_Deep_stereo.wav", "Effects", -5)
|
GlobalAudio.stop_scene_independent("res://assets/sounds/Shopping For The Future (LOOP).wav")
|
||||||
|
GlobalAudio.play_scene_independent("res://assets/sounds/MAGIC_SPELL_Morphing_Synth_Harp_Scales_Deep_stereo.wav", "Effects", -8)
|
||||||
get_tree().change_scene(next_scene_path)
|
get_tree().change_scene(next_scene_path)
|
||||||
get_tree().get_current_scene().queue_free()
|
get_tree().get_current_scene().queue_free()
|
||||||
get_tree().paused = false
|
get_tree().paused = false
|
||||||
|
|||||||
@ -3,6 +3,5 @@ extends AudibleButton
|
|||||||
onready var levelState := get_tree().root.get_child(4).get_node("%LevelState")
|
onready var levelState := get_tree().root.get_child(4).get_node("%LevelState")
|
||||||
|
|
||||||
func _on_button_up() -> void:
|
func _on_button_up() -> void:
|
||||||
levelState.kills = 0
|
|
||||||
get_tree().paused = false
|
get_tree().paused = false
|
||||||
get_tree().reload_current_scene()
|
get_tree().reload_current_scene()
|
||||||
|
|||||||
@ -5,8 +5,6 @@ onready var current_scene := get_tree().get_current_scene()
|
|||||||
onready var pause_overlay: ColorRect = $HUDOverlay
|
onready var pause_overlay: ColorRect = $HUDOverlay
|
||||||
onready var timer: Label = $HUDOverlay/GetBackTimer
|
onready var timer: Label = $HUDOverlay/GetBackTimer
|
||||||
onready var currency: Label = $HUDOverlay/Currency
|
onready var currency: Label = $HUDOverlay/Currency
|
||||||
onready var kills: Label = $HUDOverlay/Kills
|
|
||||||
onready var frees: Label = $HUDOverlay/Frees
|
|
||||||
onready var levelState := get_tree().root.get_child(4).get_node("%LevelState")
|
onready var levelState := get_tree().root.get_child(4).get_node("%LevelState")
|
||||||
onready var signalManager := get_tree().root.get_child(4).get_node("%SignalManager")
|
onready var signalManager := get_tree().root.get_child(4).get_node("%SignalManager")
|
||||||
|
|
||||||
@ -14,8 +12,6 @@ onready var signalManager := get_tree().root.get_child(4).get_node("%SignalManag
|
|||||||
func _ready():
|
func _ready():
|
||||||
#TODO Connect what HOW?
|
#TODO Connect what HOW?
|
||||||
signalManager.connect("currency_updated", self, "update_interface")
|
signalManager.connect("currency_updated", self, "update_interface")
|
||||||
signalManager.connect("kills_updated", self, "update_interface")
|
|
||||||
signalManager.connect("frees_updated", self, "update_interface")
|
|
||||||
signalManager.connect("terminal_activated", self, "start_timer")
|
signalManager.connect("terminal_activated", self, "start_timer")
|
||||||
update_interface()
|
update_interface()
|
||||||
|
|
||||||
@ -41,8 +37,6 @@ func update_interface() -> void:
|
|||||||
var wallet = GlobalState.gsr.wallet
|
var wallet = GlobalState.gsr.wallet
|
||||||
if levelState != null:
|
if levelState != null:
|
||||||
wallet += levelState.currency
|
wallet += levelState.currency
|
||||||
kills.text = "Kills: %s" % levelState.kills
|
|
||||||
frees.text = "Freed: %s" % levelState.frees
|
|
||||||
|
|
||||||
currency.text = "Orbs: %s" % wallet
|
currency.text = "Orbs: %s" % wallet
|
||||||
|
|
||||||
|
|||||||
@ -58,34 +58,15 @@ margin_bottom = 354.0
|
|||||||
|
|
||||||
[node name="Currency" type="Label" parent="HUDOverlay"]
|
[node name="Currency" type="Label" parent="HUDOverlay"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
visible = false
|
anchor_top = 1.0
|
||||||
margin_left = 3.0
|
anchor_bottom = 1.0
|
||||||
margin_top = 291.0
|
margin_left = 9.0
|
||||||
margin_right = 247.0
|
margin_top = -21.0
|
||||||
margin_bottom = 312.0
|
margin_right = 253.0
|
||||||
|
margin_bottom = -3.05176e-05
|
||||||
rect_scale = Vector2( 0.590909, 0.627907 )
|
rect_scale = Vector2( 0.590909, 0.627907 )
|
||||||
text = "Orbs: 100000000000000000"
|
text = "Orbs: 100000000000000000"
|
||||||
|
|
||||||
[node name="Kills" type="Label" parent="HUDOverlay"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
visible = false
|
|
||||||
margin_left = 3.0
|
|
||||||
margin_top = 315.0
|
|
||||||
margin_right = 357.0
|
|
||||||
margin_bottom = 336.0
|
|
||||||
rect_scale = Vector2( 0.590909, 0.627907 )
|
|
||||||
text = "Destroyed Beings: 100000000000000000"
|
|
||||||
|
|
||||||
[node name="Frees" type="Label" parent="HUDOverlay"]
|
|
||||||
unique_name_in_owner = true
|
|
||||||
visible = false
|
|
||||||
margin_left = 3.0
|
|
||||||
margin_top = 339.0
|
|
||||||
margin_right = 317.0
|
|
||||||
margin_bottom = 360.0
|
|
||||||
rect_scale = Vector2( 0.590909, 0.627907 )
|
|
||||||
text = "Freed Beings: 100000000000000000"
|
|
||||||
|
|
||||||
[node name="GetBackTimer" type="Label" parent="HUDOverlay"]
|
[node name="GetBackTimer" type="Label" parent="HUDOverlay"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
visible = false
|
visible = false
|
||||||
|
|||||||
@ -6,10 +6,12 @@ export(String, FILE) onready var bus_resource_path = "res://src/Sounds/default_b
|
|||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
if visible:
|
if visible:
|
||||||
$"%MasterSlider".grab_focus()
|
$"%MasterSlider".grab_focus()
|
||||||
|
|
||||||
|
func save() ->void:
|
||||||
|
var new_resource = AudioServer.generate_bus_layout()
|
||||||
|
ResourceSaver.save(bus_resource_path, new_resource)
|
||||||
|
|
||||||
func _input(event: InputEvent) -> void:
|
func _input(event: InputEvent) -> void:
|
||||||
if visible && event.is_action("ui_cancel"):
|
if visible && event.is_action("ui_cancel"):
|
||||||
var new_resource = AudioServer.generate_bus_layout()
|
|
||||||
ResourceSaver.save(bus_resource_path, new_resource)
|
|
||||||
$Panel/Back.emit_signal("button_up")
|
$Panel/Back.emit_signal("button_up")
|
||||||
|
|
||||||
|
|||||||
@ -277,4 +277,5 @@ margin_bottom = 20.0
|
|||||||
text = "80"
|
text = "80"
|
||||||
align = 1
|
align = 1
|
||||||
|
|
||||||
|
[connection signal="button_up" from="Panel/Back" to="." method="save"]
|
||||||
[connection signal="button_up" from="Panel/Back" to="Panel/Back" method="_on_button_up"]
|
[connection signal="button_up" from="Panel/Back" to="Panel/Back" method="_on_button_up"]
|
||||||
|
|||||||
17
src/UserInterface/Screens/MainMenu/LevelCheckBox.gd
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
extends VBoxContainer
|
||||||
|
|
||||||
|
func initialize_with_progress(levelFullName: String) -> void:
|
||||||
|
if !GlobalState.get_progress().has(levelFullName):
|
||||||
|
return
|
||||||
|
if !GlobalState.get_progress()[levelFullName].has("froggies"):
|
||||||
|
return
|
||||||
|
var froggies : Dictionary = GlobalState.get_progress()[levelFullName]["froggies"]
|
||||||
|
for key in froggies.keys():
|
||||||
|
register_froggy(int(key), froggies[key])
|
||||||
|
|
||||||
|
|
||||||
|
func register_froggy(var count : int = 0, var freed: bool = false) -> void:
|
||||||
|
var frogo: String = "FreedFroggy" + str(count + 1)
|
||||||
|
var test = self.get_children()
|
||||||
|
get_node(frogo).visible = true
|
||||||
|
get_node(frogo + "/ImprisionedFroggy").visible = !freed
|
||||||
152
src/UserInterface/Screens/MainMenu/LevelCheckBox.tscn
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
[gd_scene load_steps=5 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://assets/ui/froggy-freed-ui.png" type="Texture" id=1]
|
||||||
|
[ext_resource path="res://assets/ui/froggy-imprisoned-ui.png" type="Texture" id=2]
|
||||||
|
[ext_resource path="res://src/UserInterface/Screens/MainMenu/LevelCheckBox.gd" type="Script" id=3]
|
||||||
|
[ext_resource path="res://src/UserInterface/Buttons/AudibleCheckbox.gd" type="Script" id=4]
|
||||||
|
|
||||||
|
[node name="LevelCheckBox" type="VBoxContainer"]
|
||||||
|
margin_right = 116.0
|
||||||
|
margin_bottom = 56.0
|
||||||
|
focus_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
script = ExtResource( 3 )
|
||||||
|
|
||||||
|
[node name="CheckBox" type="CheckBox" parent="."]
|
||||||
|
margin_right = 119.0
|
||||||
|
margin_bottom = 24.0
|
||||||
|
grow_horizontal = 0
|
||||||
|
grow_vertical = 0
|
||||||
|
text = "This is a level "
|
||||||
|
align = 1
|
||||||
|
icon_align = 1
|
||||||
|
expand_icon = true
|
||||||
|
script = ExtResource( 4 )
|
||||||
|
|
||||||
|
[node name="FreedFroggy1" type="TextureRect" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
visible = false
|
||||||
|
margin_top = 28.0
|
||||||
|
margin_right = 119.0
|
||||||
|
margin_bottom = 47.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
focus_mode = 2
|
||||||
|
mouse_filter = 0
|
||||||
|
texture = ExtResource( 1 )
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
|
[node name="FreedFroggy2" type="TextureRect" parent="FreedFroggy1"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
visible = false
|
||||||
|
margin_left = 21.0
|
||||||
|
margin_right = 140.0
|
||||||
|
margin_bottom = 19.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
texture = ExtResource( 1 )
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
|
[node name="ImprisionedFroggy" type="TextureRect" parent="FreedFroggy1/FreedFroggy2"]
|
||||||
|
margin_right = 38.0
|
||||||
|
margin_bottom = 19.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
texture = ExtResource( 2 )
|
||||||
|
|
||||||
|
[node name="FreedFroggy3" type="TextureRect" parent="FreedFroggy1"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
visible = false
|
||||||
|
margin_left = 42.0
|
||||||
|
margin_right = 161.0
|
||||||
|
margin_bottom = 19.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
texture = ExtResource( 1 )
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
|
[node name="ImprisionedFroggy" type="TextureRect" parent="FreedFroggy1/FreedFroggy3"]
|
||||||
|
margin_right = 38.0
|
||||||
|
margin_bottom = 19.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
texture = ExtResource( 2 )
|
||||||
|
|
||||||
|
[node name="FreedFroggy4" type="TextureRect" parent="FreedFroggy1"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
visible = false
|
||||||
|
margin_left = 63.0
|
||||||
|
margin_right = 182.0
|
||||||
|
margin_bottom = 19.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
texture = ExtResource( 1 )
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
|
[node name="ImprisionedFroggy" type="TextureRect" parent="FreedFroggy1/FreedFroggy4"]
|
||||||
|
margin_right = 38.0
|
||||||
|
margin_bottom = 19.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
texture = ExtResource( 2 )
|
||||||
|
|
||||||
|
[node name="FreedFroggy5" type="TextureRect" parent="FreedFroggy1"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
visible = false
|
||||||
|
margin_left = 84.0
|
||||||
|
margin_right = 203.0
|
||||||
|
margin_bottom = 19.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
texture = ExtResource( 1 )
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
|
[node name="ImprisionedFroggy" type="TextureRect" parent="FreedFroggy1/FreedFroggy5"]
|
||||||
|
margin_right = 38.0
|
||||||
|
margin_bottom = 19.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
texture = ExtResource( 2 )
|
||||||
|
|
||||||
|
[node name="FreedFroggy6" type="TextureRect" parent="FreedFroggy1"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
visible = false
|
||||||
|
margin_left = 105.0
|
||||||
|
margin_right = 224.0
|
||||||
|
margin_bottom = 19.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
texture = ExtResource( 1 )
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
|
[node name="ImprisionedFroggy" type="TextureRect" parent="FreedFroggy1/FreedFroggy6"]
|
||||||
|
margin_right = 38.0
|
||||||
|
margin_bottom = 19.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
texture = ExtResource( 2 )
|
||||||
|
|
||||||
|
[node name="ImprisionedFroggy" type="TextureRect" parent="FreedFroggy1"]
|
||||||
|
margin_right = 38.0
|
||||||
|
margin_bottom = 19.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
texture = ExtResource( 2 )
|
||||||
|
|
||||||
|
[node name="HSeparator" type="HSeparator" parent="."]
|
||||||
|
margin_top = 28.0
|
||||||
|
margin_right = 119.0
|
||||||
|
margin_bottom = 32.0
|
||||||
|
|
||||||
|
[connection signal="focus_entered" from="." to="." method="_on_LevelCheckBox_focus_entered"]
|
||||||
@ -2,8 +2,11 @@ extends ScrollContainer
|
|||||||
|
|
||||||
onready var LEVELS_PATH = "res://src/Levels/"
|
onready var LEVELS_PATH = "res://src/Levels/"
|
||||||
onready var BUTTON_GROUP : ButtonGroup = load("res://src/UserInterface/Screens/MainMenu/LevelSelectButtonGroup.tres")
|
onready var BUTTON_GROUP : ButtonGroup = load("res://src/UserInterface/Screens/MainMenu/LevelSelectButtonGroup.tres")
|
||||||
|
onready var LEVEL_CHECK_BOX = load("res://src/UserInterface/Screens/MainMenu/LevelCheckBox.tscn")
|
||||||
onready var vbox: VBoxContainer = $VBoxContainer
|
onready var vbox: VBoxContainer = $VBoxContainer
|
||||||
|
|
||||||
|
var prev_checkbox
|
||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
BUTTON_GROUP.connect("pressed", $"%PlayButton", "_level_selection_changed")
|
BUTTON_GROUP.connect("pressed", $"%PlayButton", "_level_selection_changed")
|
||||||
_fill_level_list()
|
_fill_level_list()
|
||||||
@ -26,19 +29,25 @@ func _fill_level_list():
|
|||||||
func _spawn_level_options(levels: Array):
|
func _spawn_level_options(levels: Array):
|
||||||
var first = true
|
var first = true
|
||||||
for level in levels:
|
for level in levels:
|
||||||
var check_box = AudibleCheckbox.new()
|
var level_check_box = LEVEL_CHECK_BOX.instance()
|
||||||
|
vbox.add_child(level_check_box)
|
||||||
|
level_check_box.initialize_with_progress(LEVELS_PATH + level)
|
||||||
|
var check_box = level_check_box.get_node("CheckBox")
|
||||||
check_box.focus_mode = Control.FOCUS_ALL
|
check_box.focus_mode = Control.FOCUS_ALL
|
||||||
check_box.focus_neighbour_left = $"%PlayButton".get_path()
|
check_box.focus_neighbour_left = $"%PlayButton".get_path()
|
||||||
check_box.text = level.trim_suffix(".tscn")
|
check_box.text = level.trim_suffix(".tscn")
|
||||||
check_box.set_button_group(BUTTON_GROUP)
|
check_box.set_button_group(BUTTON_GROUP)
|
||||||
vbox.add_child(check_box)
|
|
||||||
if first:
|
if first:
|
||||||
$"%PlayButton".focus_neighbour_right = check_box.get_path()
|
$"%PlayButton".focus_neighbour_right = check_box.get_path()
|
||||||
$"%Controlls".focus_neighbour_right = check_box.get_path()
|
$"%Controlls".focus_neighbour_right = check_box.get_path()
|
||||||
$"%QuitButton".focus_neighbour_right = check_box.get_path()
|
$"%QuitButton".focus_neighbour_right = check_box.get_path()
|
||||||
check_box.pressed = true
|
check_box.pressed = true
|
||||||
|
prev_checkbox = check_box
|
||||||
first = false
|
first = false
|
||||||
|
else:
|
||||||
|
prev_checkbox.focus_neighbour_bottom = check_box.get_path()
|
||||||
|
check_box.focus_neighbour_top = prev_checkbox.get_path()
|
||||||
|
prev_checkbox = check_box
|
||||||
if GlobalState.gsr.last_played_level.ends_with(level):
|
if GlobalState.gsr.last_played_level.ends_with(level):
|
||||||
check_box.pressed = true
|
check_box.pressed = true
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|||||||
@ -3,3 +3,4 @@ extends Control
|
|||||||
|
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
$"%PlayButton".grab_focus()
|
$"%PlayButton".grab_focus()
|
||||||
|
GlobalAudio.play_scene_independent("res://assets/sounds/Shopping For The Future (LOOP).wav","Music", -14, true)
|
||||||
|
|||||||
@ -228,14 +228,13 @@ margin_right = 130.0
|
|||||||
margin_bottom = 110.0
|
margin_bottom = 110.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
focus_mode = 2
|
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
[node name="InvisibleCunt" type="CheckBox" parent="MenuContainer/Panel/LevelList/VBoxContainer"]
|
[node name="InvisibleCunt" type="CheckBox" parent="MenuContainer/Panel/LevelList/VBoxContainer"]
|
||||||
visible = false
|
visible = false
|
||||||
margin_right = 154.0
|
margin_right = 130.0
|
||||||
margin_bottom = 135.0
|
margin_bottom = 110.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
focus_neighbour_left = NodePath("../../../../Buttons/PlayButton")
|
focus_neighbour_left = NodePath("../../../../Buttons/PlayButton")
|
||||||
|
|||||||
@ -21,7 +21,6 @@ func _unhandled_input(event: InputEvent) -> void:
|
|||||||
if(event.is_action_pressed(action)):
|
if(event.is_action_pressed(action)):
|
||||||
press_limit -= 1
|
press_limit -= 1
|
||||||
if press_limit == 0 :
|
if press_limit == 0 :
|
||||||
# Should delete itself from the progress dictionary when destroyed
|
|
||||||
if visible:
|
if visible:
|
||||||
$Label.visible = false
|
$Label.visible = false
|
||||||
$TextureRect.visible = false
|
$TextureRect.visible = false
|
||||||
@ -76,6 +75,8 @@ func _physics_process(delta: float) -> void:
|
|||||||
|
|
||||||
|
|
||||||
func _on_Area_area_entered(area: Area2D) -> void:
|
func _on_Area_area_entered(area: Area2D) -> void:
|
||||||
|
if !area.get_parent().visible:
|
||||||
|
return
|
||||||
var d = area.global_position - position
|
var d = area.global_position - position
|
||||||
print(d)
|
print(d)
|
||||||
if(abs(d.y) > tex_size.y * 2 - 1):
|
if(abs(d.y) > tex_size.y * 2 - 1):
|
||||||
|
|||||||
@ -146,6 +146,7 @@ z_index = 10
|
|||||||
script = ExtResource( 2 )
|
script = ExtResource( 2 )
|
||||||
action = "jump"
|
action = "jump"
|
||||||
tutorial_text = "Press to Jump:"
|
tutorial_text = "Press to Jump:"
|
||||||
|
press_limit = 1
|
||||||
|
|
||||||
[node name="Button" type="Sprite" parent="."]
|
[node name="Button" type="Sprite" parent="."]
|
||||||
physics_interpolation_mode = 2
|
physics_interpolation_mode = 2
|
||||||
|
|||||||
@ -6,8 +6,7 @@ onready var levelName := get_tree().current_scene.filename
|
|||||||
#TODO Easteregg pls
|
#TODO Easteregg pls
|
||||||
var currency: = 0 setget set_currency
|
var currency: = 0 setget set_currency
|
||||||
var deaths: = 0 setget set_deaths
|
var deaths: = 0 setget set_deaths
|
||||||
var kills: = 0 setget set_kills
|
var freed_frogs := []
|
||||||
var frees: = 0 setget set_frees
|
|
||||||
# TODO Rename probs
|
# TODO Rename probs
|
||||||
var is_dead: = false setget set_dead
|
var is_dead: = false setget set_dead
|
||||||
|
|
||||||
@ -19,9 +18,8 @@ func _ready() -> void:
|
|||||||
|
|
||||||
func reset() -> void:
|
func reset() -> void:
|
||||||
deaths = 0
|
deaths = 0
|
||||||
kills = 0
|
|
||||||
currency = 0
|
currency = 0
|
||||||
frees = 0
|
freed_frogs = []
|
||||||
# TODO Maybe not the place for this?
|
# TODO Maybe not the place for this?
|
||||||
if GlobalState.gsr.progress_dict.has(levelName):
|
if GlobalState.gsr.progress_dict.has(levelName):
|
||||||
GlobalState.gsr.progress_dict[levelName].erase("savepoint")
|
GlobalState.gsr.progress_dict[levelName].erase("savepoint")
|
||||||
@ -33,17 +31,18 @@ func set_currency(value: int) -> void:
|
|||||||
func set_deaths(value: int) -> void:
|
func set_deaths(value: int) -> void:
|
||||||
deaths = value
|
deaths = value
|
||||||
|
|
||||||
func set_kills(value: int) -> void:
|
|
||||||
kills = value
|
|
||||||
signalManager.emit_signal("kills_updated")
|
|
||||||
|
|
||||||
func set_frees(value: int) -> void:
|
|
||||||
frees = value
|
|
||||||
signalManager.emit_signal("frees_updated")
|
|
||||||
|
|
||||||
func set_dead(value: bool) -> void:
|
func set_dead(value: bool) -> void:
|
||||||
is_dead = value
|
is_dead = value
|
||||||
|
|
||||||
|
func register_frog(number: int, freed: bool = false) -> void:
|
||||||
|
update_global_state()
|
||||||
|
if(!GlobalState.gsr.progress_dict[levelName]["froggies"].has(number)):
|
||||||
|
GlobalState.gsr.progress_dict[levelName]["froggies"][number] = freed
|
||||||
|
GlobalState.save()
|
||||||
|
|
||||||
|
func free_a_frog(number: int) -> void:
|
||||||
|
freed_frogs.append(number)
|
||||||
|
|
||||||
func needs_tutorial(lesson: String) -> bool:
|
func needs_tutorial(lesson: String) -> bool:
|
||||||
if(!GlobalState.gsr.tutorial_prompts.has(lesson)):
|
if(!GlobalState.gsr.tutorial_prompts.has(lesson)):
|
||||||
return false
|
return false
|
||||||
@ -64,6 +63,9 @@ func absolved_tutorial(lesson: String) -> void:
|
|||||||
# Spends the currency when enough is available
|
# Spends the currency when enough is available
|
||||||
# and returns true if so. Else it does not spend and return false.
|
# and returns true if so. Else it does not spend and return false.
|
||||||
func spend_currency(cost: int) -> bool:
|
func spend_currency(cost: int) -> bool:
|
||||||
|
# TODO member that
|
||||||
|
if(OS.is_debug_build()):
|
||||||
|
return true
|
||||||
if GlobalState.gsr.wallet + currency < cost:
|
if GlobalState.gsr.wallet + currency < cost:
|
||||||
return false
|
return false
|
||||||
var remainder = currency - cost
|
var remainder = currency - cost
|
||||||
@ -75,6 +77,8 @@ func spend_currency(cost: int) -> bool:
|
|||||||
return true
|
return true
|
||||||
|
|
||||||
func _on_level_completed():
|
func _on_level_completed():
|
||||||
|
#if(OS.is_debug_build()):
|
||||||
|
# return
|
||||||
update_global_state()
|
update_global_state()
|
||||||
reset()
|
reset()
|
||||||
|
|
||||||
@ -83,18 +87,20 @@ func update_global_state() -> void:
|
|||||||
var levelProgress : Dictionary = {}
|
var levelProgress : Dictionary = {}
|
||||||
|
|
||||||
levelProgress["currency"] = currency
|
levelProgress["currency"] = currency
|
||||||
levelProgress["kills"] = kills
|
|
||||||
levelProgress["deaths"] = deaths
|
levelProgress["deaths"] = deaths
|
||||||
levelProgress["frees"] = frees
|
|
||||||
|
|
||||||
# TODO Doesnt account for multiple plays of same level
|
# TODO Doesnt account for multiple plays of same level
|
||||||
if !progress_dict.has(levelName):
|
if !progress_dict.has(levelName):
|
||||||
progress_dict[levelName] = levelProgress
|
progress_dict[levelName] = levelProgress
|
||||||
else:
|
else:
|
||||||
progress_dict[levelName]["currency"] = GlobalState.get_property_value(levelName,"currency") + currency
|
progress_dict[levelName]["currency"] = GlobalState.get_property_value(levelName,"currency") + currency
|
||||||
progress_dict[levelName]["kills"] = GlobalState.get_property_value(levelName,"kills") + kills
|
|
||||||
progress_dict[levelName]["deaths"] = GlobalState.get_property_value(levelName,"deaths") + deaths
|
progress_dict[levelName]["deaths"] = GlobalState.get_property_value(levelName,"deaths") + deaths
|
||||||
progress_dict[levelName]["frees"] = GlobalState.get_property_value(levelName,"frees") + frees
|
if !progress_dict[levelName].has("froggies"):
|
||||||
|
progress_dict[levelName]["froggies"] = {}
|
||||||
|
else:
|
||||||
|
for frog_number in freed_frogs:
|
||||||
|
if progress_dict[levelName]["froggies"].has(frog_number):
|
||||||
|
progress_dict[levelName]["froggies"][frog_number] = true
|
||||||
|
|
||||||
# TODO Wallet is independant from progress_dict because???
|
# TODO Wallet is independant from progress_dict because???
|
||||||
GlobalState.set_wallet(GlobalState.gsr.wallet + currency)
|
GlobalState.set_wallet(GlobalState.gsr.wallet + currency)
|
||||||
@ -102,9 +108,8 @@ func update_global_state() -> void:
|
|||||||
|
|
||||||
func player_dying(animation_number: int = 0) -> void:
|
func player_dying(animation_number: int = 0) -> void:
|
||||||
currency = 0
|
currency = 0
|
||||||
kills = 0
|
|
||||||
frees = 0
|
|
||||||
is_dead = true
|
is_dead = true
|
||||||
|
freed_frogs = []
|
||||||
deaths += 1
|
deaths += 1
|
||||||
update_global_state()
|
update_global_state()
|
||||||
deaths = 0
|
deaths = 0
|
||||||
|
|||||||
25
src/Utilities/SceneAudio.gd
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
extends Node
|
||||||
|
onready var players: Dictionary = {}
|
||||||
|
var disposable_player: AudioStreamPlayer
|
||||||
|
|
||||||
|
|
||||||
|
func play_scene_dependent(sound_name: String, bus: String = "Master", attenuation: float = 0.0, singleton = false) -> void:
|
||||||
|
if singleton && players.has(sound_name):
|
||||||
|
return
|
||||||
|
disposable_player = AudioStreamPlayer.new()
|
||||||
|
add_child(disposable_player)
|
||||||
|
disposable_player.stream = GlobalState.sound_library[sound_name]
|
||||||
|
disposable_player.volume_db = attenuation
|
||||||
|
disposable_player.bus = bus
|
||||||
|
disposable_player.play()
|
||||||
|
disposable_player.connect("finished", self, "dispose_player")
|
||||||
|
players[sound_name] = disposable_player
|
||||||
|
|
||||||
|
func dispose_player(player: AudioStreamPlayer = disposable_player) -> void:
|
||||||
|
if player == null: return
|
||||||
|
player.queue_free()
|
||||||
|
|
||||||
|
func stop_scene_dependent(sound_name: String):
|
||||||
|
if players.has(sound_name):
|
||||||
|
dispose_player(players[sound_name])
|
||||||
|
players.erase(sound_name)
|
||||||
7
src/Utilities/SceneAudio.tscn
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
[gd_scene load_steps=2 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://src/Utilities/SceneAudio.gd" type="Script" id=1]
|
||||||
|
|
||||||
|
[node name="SceneAudio" type="Node"]
|
||||||
|
pause_mode = 2
|
||||||
|
script = ExtResource( 1 )
|
||||||