Shield Vending Prop, Frog Jumpheight fix, Demo Setup

This commit is contained in:
Jakob Feldmann 2023-03-15 00:25:04 +01:00
parent 96fe70fefc
commit 3ef7f40cae
25 changed files with 344 additions and 79 deletions

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 B

View File

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/ShieldVendingMachine.png-fbf356a433e63de886ffa987b75faa69.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/contraption/ShieldVendingMachine.png"
dest_files=[ "res://.import/ShieldVendingMachine.png-fbf356a433e63de886ffa987b75faa69.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

View File

@ -4603,7 +4603,6 @@ frame = 8
unique_name_in_owner = true
position = Vector2( 0, -9 )
scale = Vector2( 0.48, 0.48 )
z_index = 1
[node name="BlobbyBody" type="CollisionShape2D" parent="." groups=["player"]]
position = Vector2( 0.0392303, -10.002 )

View File

@ -26,6 +26,12 @@ func _on_Level_ready() -> void:
# The old switchero
func _on_WhatAreFrog_child_exiting_tree(_node:Node) -> void:
if(is_first_signal):
disconnect_rope()
is_first_signal = false
else:
pass
func disconnect_rope() -> void:
var anchor = RopeAnchor.instance()
anchor.mode = 0
add_child(anchor)
@ -40,6 +46,10 @@ func _on_WhatAreFrog_child_exiting_tree(_node:Node) -> void:
rope.rope_end_joint = $RopeAnchor/cshape/pjoint
rope.rope_start_joint = anchor.get_node("cshape/pjoint")
rope.spawn_rope(anchor.global_position, $RopeAnchor.global_position, movement_radius, false)
is_first_signal = false
else:
pass
func _on_WhyButton_button_pushed() -> void:
$WhatAreFrog.levelState.frees += 1
$WhatAreFrog.is_bound = false
disconnect_rope()
is_first_signal = false

View File

@ -16,6 +16,7 @@ func _ready() -> void:
func _on_StompDetector_body_entered(body: Node) -> void:
if body.global_position.y > get_node("StompDetector").global_position.y:
return
$StompDetector.remove_from_group("weakpoint")
get_node("EnemyBody").disabled = true
die()

View File

@ -7,6 +7,7 @@ func _ready() -> void:
func _on_StompDetector_body_entered(body: Node) -> void:
if body.global_position.y > get_node("StompDetector").global_position.y:
return
$StompDetector.remove_from_group("weakpoint")
get_node("EnemyBody").disabled = true
die()

View File

@ -11,6 +11,7 @@ func _ready() -> void:
func _on_StompDetector_body_entered(body: Node) -> void:
if body.global_position.y > get_node("StompDetector").global_position.y:
return
$StompDetector.remove_from_group("weakpoint")
get_node("EnemyBody").disabled = true
die()

View File

@ -10,6 +10,7 @@ func _ready() -> void:
func _on_StompDetector_body_entered(body: Node) -> void:
if body.global_position.y > get_node("StompDetector").global_position.y:
return
$StompDetector.remove_from_group("weakpoint")
get_node("EnemyBody").disabled = true
die()

View File

@ -10,6 +10,7 @@ func _ready() -> void:
func _on_StompDetector_body_entered(body: Node) -> void:
if body.global_position.y > get_node("StompDetector").global_position.y:
return
$StompDetector.remove_from_group("weakpoint")
get_node("EnemyBody").disabled = true
die()

View File

@ -71,6 +71,8 @@ func _on_StompDetector_body_entered(body: Node) -> void:
return
if body.is_in_group("player"):
remove_from_group("harmful")
$StompDetector.remove_from_group("weakpoint")
$FrogSprite/AnimationTree.active = false
is_hurt = true
@ -172,6 +174,8 @@ func hunting() -> Vector2:
if(target != null && !was_target_freed &&
sign((target.global_position - global_position).x) != get_facing_direction()):
# TODO Waits in front of too small tunnels if it sees the target on the other side
# It's ok behavior for now
reverse_facing_direction()
return velocity
@ -289,16 +293,17 @@ func correct_jump_direction(v: Vector2) -> Vector2:
# Check the highest point for collision
# Calculate safe jump height and then a safe jump velocity
func consider_jump_headspace(v: Vector2) -> Vector2:
var height = calculate_jump_height(v)
var height = calculate_jump_height(v)
var distance = calculate_jump_distance(v)
var angle = (v * get_facing_direction()).angle()
# Half distance is an estimate of the jumps apex()
#TODO Consider sprite size for height
var height_collider = check_feeler(Vector2(get_facing_direction()*(distance/2), (-height)), Vector2(0,-23))
var height_collider = check_feeler(Vector2(get_facing_direction()*(distance/2), -(height+23)))
if(height_collider != null):
var collision_point = feeler_raycast.get_collision_point()
var target_height = collision_point.y - (feeler_raycast.global_position.y - 23)
var new_angle = angle * (0.75 if target_height > -26 else 0.86)
print(feeler_raycast.global_position)
var new_angle = angle * (0.75 if target_height > -26 else 0.95)
var new_distance = default_jump_distance * (0.66 if target_height > -26 else 0.75)
v = velocity_for_jump_distance(new_distance, abs(new_angle))
v = correct_jump_direction(v)

View File

@ -253,10 +253,10 @@ tracks/1/keys = {
}
[sub_resource type="AnimationNodeAnimation" id=42]
animation = "searchingLeft"
animation = "idleHappyLeft"
[sub_resource type="AnimationNodeAnimation" id=43]
animation = "searching"
animation = "idleHappy"
[sub_resource type="AnimationNodeBlendSpace1D" id=9]
blend_point_0/node = SubResource( 42 )
@ -374,6 +374,7 @@ valign = 1
[node name="FrogSprite" type="Sprite" parent="."]
unique_name_in_owner = true
position = Vector2( 0, -7 )
scale = Vector2( -1, 1 )
texture = ExtResource( 1 )
hframes = 2
vframes = 4
@ -395,7 +396,7 @@ anim_player = NodePath("../AnimationPlayer")
active = true
root_motion_track = NodePath(".:frame")
parameters/playback = SubResource( 11 )
parameters/idleHappy/blend_position = 1.0
parameters/idleHappy/blend_position = -1.00141
parameters/idleMean/blend_position = 1.0
parameters/liftOff/blend_position = 1.0
parameters/midJumping/blend_position = 1.0

View File

@ -19,16 +19,14 @@ func update_level_achievements() -> void:
levelProgress["kills"] = levelState.kills
levelProgress["deaths"] = levelState.deaths
levelProgress["frees"] = levelState.frees
progress_dict[levelName] = levelProgress
# if !progress_dict.has(levelName):
# progress_dict[levelName] = levelProgress
# else:
# progress_dict[levelName]["currency"] = progress_dict[levelName]["currency"] + levelState.currency
# progress_dict[levelName]["kills"] = progress_dict[levelName]["kills"] + levelState.kills
# progress_dict[levelName]["deaths"] = progress_dict[levelName]["deaths"] + levelState.deaths
# progress_dict[levelName]["frees"] = progress_dict[levelName]["frees"] + levelState.frees
if !progress_dict.has(levelName):
progress_dict[levelName] = levelProgress
else:
progress_dict[levelName]["currency"] = progress_dict[levelName]["currency"] + levelState.currency
progress_dict[levelName]["kills"] = progress_dict[levelName]["kills"] + levelState.kills
progress_dict[levelName]["deaths"] = progress_dict[levelName]["deaths"] + levelState.deaths
progress_dict[levelName]["frees"] = progress_dict[levelName]["frees"] + levelState.frees
GlobalState.set_progress(progress_dict)

View File

@ -7,7 +7,7 @@ onready var elevator = get_node("./Portal")
onready var signalManager := get_tree().root.get_child(1).get_node("%SignalManager")
onready var unactivatable_timer := $Timer
var activatable = true
var activatable = false
func _process(delta):
if activatable && Input.is_action_just_released("interact"):
@ -25,12 +25,12 @@ func selfActivate():
func _on_ActivatorArea_area_entered(area:Area2D) -> void:
if area.is_in_group("player"):
$Label.visible = true
activatable = true
func _on_ActivatorArea_area_exited(area:Area2D) -> void:
if area.is_in_group("player"):
unactivatable_timer.start()
func _on_Timer_timeout():
$Label.visible = false
activatable = false

View File

@ -89,6 +89,7 @@ anims/onning = SubResource( 13 )
unique_name_in_owner = true
position = Vector2( 0, -6 )
collision_layer = 24
monitorable = false
[node name="ActivatorAreaShape" type="CollisionShape2D" parent="ActivatorArea"]
unique_name_in_owner = true
@ -96,8 +97,18 @@ position = Vector2( 0, 3 )
shape = SubResource( 18 )
[node name="Timer" type="Timer" parent="."]
wait_time = 0.1
wait_time = 0.333
one_shot = true
[node name="Label" type="Label" parent="."]
visible = false
margin_left = -5.0
margin_top = -26.0
margin_right = 13.0
margin_bottom = -12.0
rect_scale = Vector2( 0.590909, 0.627907 )
text = "[e]"
[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="timeout" from="Timer" to="." method="_on_Timer_timeout"]

View File

@ -1,10 +1,12 @@
extends Node2D
onready var buttonPlayer = $"%ButtonPlayer"
onready var activatorArea = $"%ActivatorArea"
onready var indicator1Player = $"%Indicator1Player"
onready var indicator2Player = $"%Indicator2Player"
onready var indicator3Player = $"%Indicator3Player"
signal button_pushed
onready var buttonPlayer = $Button/ButtonPlayer
onready var activatorArea = $ActivatorArea
onready var indicator1Player = $Indicator1/Indicator1Player
onready var indicator2Player = $Indicator2/Indicator2Player
onready var indicator3Player = $Indicator3/Indicator3Player
export var buttonID: int;
@ -14,6 +16,7 @@ func selfActivate():
buttonPlayer.play("pushing")
#TODO dis importante
activatorArea.set_deferred("monitoring", false)
emit_signal("button_pushed")
func activateIDIndicator(id: int):
var selfPlayerString = "indicator"+String(id)+"Player"

View File

@ -1,10 +1,10 @@
[gd_scene load_steps=13 format=2]
[gd_scene load_steps=12 format=2]
[ext_resource path="res://src/Contraptions/Triggers/WhyButton.gd" type="Script" id=1]
[ext_resource path="res://assets/contraption/button.png" type="Texture" id=2]
[ext_resource path="res://assets/contraption/buttonStateIndicator.png" type="Texture" id=3]
[sub_resource type="Animation" id=2]
[sub_resource type="Animation" id=20]
resource_name = "pushing"
length = 0.5
tracks/0/type = "value"
@ -20,7 +20,7 @@ tracks/0/keys = {
"values": [ 0.0, 1.0, 2.0 ]
}
[sub_resource type="Animation" id=6]
[sub_resource type="Animation" id=21]
length = 0.1
tracks/0/type = "value"
tracks/0/path = NodePath(".:frame")
@ -113,28 +113,25 @@ tracks/0/keys = {
"values": [ 1.0, 2.0, 3.0, 4.0 ]
}
[sub_resource type="RectangleShape2D" id=4]
[sub_resource type="RectangleShape2D" id=22]
extents = Vector2( 4, 1 )
[sub_resource type="RectangleShape2D" id=3]
extents = Vector2( 6, 1 )
[node name="WhyButton" type="Node2D"]
position = Vector2( 488, 336 )
script = ExtResource( 1 )
buttonID = 2
[node name="Button" type="Sprite" parent="."]
position = Vector2( 0, -6 )
texture = ExtResource( 2 )
hframes = 2
vframes = 2
frame = 2
__meta__ = {
"_editor_description_": "YXNlcHJpdGVfd2l6YXJkX2NvbmZpZwpwbGF5ZXJ8PVNwcml0ZS9BbmltYXRpb25QbGF5ZXIKc291cmNlfD1yZXM6Ly9hc3NldHMvbmV1dHJhbCBvYmplY3QvYnV0dG9uLmFzZXByaXRlCmxheWVyfD0Kb3BfZXhwfD1GYWxzZQpvX2ZvbGRlcnw9Cm9fbmFtZXw9Cm9ubHlfdmlzaWJsZXw9RmFsc2UKb19leF9wfD0K"
}
[node name="ButtonPlayer" type="AnimationPlayer" parent="Button"]
unique_name_in_owner = true
anims/pushing = SubResource( 2 )
anims/pushing = SubResource( 20 )
[node name="Indicator1" type="Sprite" parent="."]
position = Vector2( -3, -1 )
@ -148,8 +145,7 @@ __meta__ = {
}
[node name="Indicator1Player" type="AnimationPlayer" parent="Indicator1"]
unique_name_in_owner = true
anims/offing = SubResource( 6 )
anims/offing = SubResource( 21 )
anims/onning = SubResource( 8 )
[node name="Indicator2" type="Sprite" parent="."]
@ -158,13 +154,11 @@ z_index = 1
texture = ExtResource( 3 )
hframes = 3
vframes = 3
frame = 4
__meta__ = {
"_editor_description_": "YXNlcHJpdGVfd2l6YXJkX2NvbmZpZwpwbGF5ZXJ8PUluZGljYXRvcjIvQW5pbWF0aW9uUGxheWVyCnNvdXJjZXw9cmVzOi8vYXNzZXRzL25ldXRyYWwgb2JqZWN0L2J1dHRvblN0YXRlSW5kaWNhdG9yLmFzZXByaXRlCmxheWVyfD0Kb3BfZXhwfD1GYWxzZQpvX2ZvbGRlcnw9Cm9fbmFtZXw9Cm9ubHlfdmlzaWJsZXw9RmFsc2UKb19leF9wfD0K"
}
[node name="Indicator2Player" type="AnimationPlayer" parent="Indicator2"]
unique_name_in_owner = true
anims/offing = SubResource( 10 )
anims/onning = SubResource( 13 )
@ -180,27 +174,16 @@ __meta__ = {
}
[node name="Indicator3Player" type="AnimationPlayer" parent="Indicator3"]
unique_name_in_owner = true
anims/offing = SubResource( 14 )
anims/onning = SubResource( 19 )
[node name="ActivatorArea" type="Area2D" parent="."]
unique_name_in_owner = true
position = Vector2( 0, -6 )
collision_layer = 24
[node name="ActivatorAreaShape" type="CollisionShape2D" parent="ActivatorArea"]
unique_name_in_owner = true
position = Vector2( 0, 3 )
shape = SubResource( 4 )
[node name="ButtonBody" type="StaticBody2D" parent="."]
unique_name_in_owner = true
position = Vector2( 0, -6 )
collision_layer = 64
monitorable = false
[node name="CollisionShape2D" type="CollisionShape2D" parent="ButtonBody"]
position = Vector2( 0, 5 )
shape = SubResource( 3 )
[node name="ActivatorAreaShape" type="CollisionShape2D" parent="ActivatorArea"]
position = Vector2( 0, 3 )
shape = SubResource( 22 )
[connection signal="area_entered" from="ActivatorArea" to="." method="_on_ActivatorArea_area_entered"]

View File

@ -0,0 +1,34 @@
extends Node2D
onready var activatorArea = $"%ActivatorArea"
onready var signalManager := get_tree().root.get_child(1).get_node("%SignalManager")
onready var levelState := get_tree().root.get_child(1).get_node("%LevelState")
onready var blobby := $"../%Blobby"
onready var unactivatable_timer := $Timer
var activatable = false
func _process(delta):
# TODO Global currency count?? Maybe just level intern currency
if activatable && Input.is_action_just_released("interact") && levelState.currency >= 3:
levelState.currency -= 3
selfActivate()
func selfActivate():
#TODO Is a event for blobby himself
blobby.get_node("BubbleShieldViewport/IridescenceBall").visible = true
#TODO dis importante
activatorArea.set_deferred("monitoring", false)
func _on_ActivatorArea_area_entered(area:Area2D) -> void:
$Label.visible = true
activatable = true
func _on_ActivatorArea_area_exited(area:Area2D) -> void:
unactivatable_timer.start()
func _on_Timer_timeout():
$Label.visible = false
activatable = false

View File

@ -0,0 +1,42 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://assets/contraption/ShieldVendingMachine.png" type="Texture" id=1]
[ext_resource path="res://src/Contraptions/VendingMachine.gd" type="Script" id=2]
[sub_resource type="CircleShape2D" id=1]
radius = 18.0
[node name="VendingMachine" type="Node2D"]
script = ExtResource( 2 )
[node name="Sprite" type="Sprite" parent="."]
z_index = -1
texture = ExtResource( 1 )
[node name="ActivatorArea" type="Area2D" parent="."]
unique_name_in_owner = true
position = Vector2( 0, -6 )
collision_layer = 24
monitorable = false
[node name="ActivatorAreaShape" type="CollisionShape2D" parent="ActivatorArea"]
unique_name_in_owner = true
position = Vector2( 0, 3 )
shape = SubResource( 1 )
[node name="Timer" type="Timer" parent="."]
wait_time = 0.333
one_shot = true
[node name="Label" type="Label" parent="."]
visible = false
margin_left = -5.0
margin_top = -26.0
margin_right = 13.0
margin_bottom = -12.0
rect_scale = Vector2( 0.590909, 0.627907 )
text = "[e]"
[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="timeout" from="Timer" to="." method="_on_Timer_timeout"]

View File

@ -7,9 +7,9 @@ var last_distance: Vector2 = Vector2(100,100)
# TODO Incorporate other enteties and highlight mass differences
var time = 0
var radius = 15
var v_radius = 15
var draft_radius = 20
var interact_power = 0.04
export var v_radius = 15
export var draft_radius = 20
export var interact_power = 0.04
var rand = rand_range(1,1.2)
var displacement_coeff: Vector2 = Vector2(1.0,0)
var saved_displacement

View File

@ -11,6 +11,9 @@
[node name="ShaderGrass" type="Node2D"]
script = ExtResource( 2 )
v_radius = 20
draft_radius = 30
interact_power = 0.06
[node name="StraightStraw" type="Polygon2D" parent="."]
material = ExtResource( 3 )

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=12 format=2]
[gd_scene load_steps=16 format=2]
[ext_resource path="res://src/Environment/AlienShipTileSet.tres" type="TileSet" id=1]
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=2]
@ -9,7 +9,11 @@
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=7]
[ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=8]
[ext_resource path="res://src/Utilities/LevelState.tscn" type="PackedScene" id=9]
[ext_resource path="res://src/Contraptions/VendingMachine.tscn" type="PackedScene" id=10]
[ext_resource path="res://src/NeutralObjects/Coin.tscn" type="PackedScene" id=11]
[ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=12]
[ext_resource path="res://src/Environment/ShaderGrass.tscn" type="PackedScene" id=13]
[ext_resource path="res://src/Platforms/FlyingLaserCutter.tscn" type="PackedScene" id=14]
[sub_resource type="AnimationNodeStateMachinePlayback" id=4]
@ -45,13 +49,14 @@ wait_time = 20.0
drag_margin_bottom = 0.3
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
frame = 9
frame = 13
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
frame = 6
frame = 10
[node name="Blobby" parent="." instance=ExtResource( 2 )]
unique_name_in_owner = true
material = null
position = Vector2( -70, -1.90735e-06 )
scale = Vector2( 0.878906, 0.936025 )
@ -99,14 +104,98 @@ position = Vector2( 684, 12 )
rotation = 1.57079
[node name="Terminal" parent="." instance=ExtResource( 6 )]
position = Vector2( 109, -24 )
position = Vector2( 1382, -96 )
[node name="Portal" parent="Terminal" instance=ExtResource( 5 )]
visible = false
position = Vector2( 1379, -96 )
position = Vector2( 108, -18 )
monitoring = false
next_scene = ExtResource( 4 )
[node name="Coin" parent="." instance=ExtResource( 11 )]
position = Vector2( -37, -14 )
[node name="Coin2" parent="." instance=ExtResource( 11 )]
position = Vector2( 3.05176e-05, -15 )
[node name="Coin3" parent="." instance=ExtResource( 11 )]
position = Vector2( 46, -14 )
[node name="VendingMachine" parent="." instance=ExtResource( 10 )]
position = Vector2( 335, -84 )
[node name="ShaderGrass" parent="." instance=ExtResource( 13 )]
position = Vector2( 729, -12 )
[node name="ShaderGrass2" parent="." instance=ExtResource( 13 )]
position = Vector2( 735, -14 )
[node name="ShaderGrass3" parent="." instance=ExtResource( 13 )]
position = Vector2( 740, -12 )
[node name="ShaderGrass4" parent="." instance=ExtResource( 13 )]
position = Vector2( 748, -12 )
[node name="ShaderGrass5" parent="." instance=ExtResource( 13 )]
position = Vector2( 754, -14 )
[node name="ShaderGrass6" parent="." instance=ExtResource( 13 )]
position = Vector2( 759, -12 )
[node name="ShaderGrass7" parent="." instance=ExtResource( 13 )]
position = Vector2( 766, -12 )
[node name="ShaderGrass8" parent="." instance=ExtResource( 13 )]
position = Vector2( 772, -14 )
[node name="ShaderGrass9" parent="." instance=ExtResource( 13 )]
position = Vector2( 777, -12 )
[node name="ShaderGrass10" parent="." instance=ExtResource( 13 )]
position = Vector2( 782, -12 )
[node name="ShaderGrass11" parent="." instance=ExtResource( 13 )]
position = Vector2( 788, -14 )
[node name="ShaderGrass12" parent="." instance=ExtResource( 13 )]
position = Vector2( 793, -12 )
[node name="ShaderGrass13" parent="." instance=ExtResource( 13 )]
position = Vector2( 799, -12 )
[node name="ShaderGrass14" parent="." instance=ExtResource( 13 )]
position = Vector2( 805, -14 )
[node name="ShaderGrass15" parent="." instance=ExtResource( 13 )]
position = Vector2( 810, -12 )
[node name="ShaderGrass16" parent="." instance=ExtResource( 13 )]
position = Vector2( 815, -12 )
[node name="ShaderGrass17" parent="." instance=ExtResource( 13 )]
position = Vector2( 821, -14 )
[node name="ShaderGrass18" parent="." instance=ExtResource( 13 )]
position = Vector2( 826, -12 )
[node name="ShaderGrass19" parent="." instance=ExtResource( 13 )]
position = Vector2( 831, -12 )
[node name="ShaderGrass20" parent="." instance=ExtResource( 13 )]
position = Vector2( 837, -14 )
[node name="ShaderGrass21" parent="." instance=ExtResource( 13 )]
position = Vector2( 842, -12 )
[node name="FlyingLaserCutter" parent="." instance=ExtResource( 14 )]
position = Vector2( 1007, -160 )
rotation = 1.5708
[node name="FlyingLaserCutter2" parent="." instance=ExtResource( 14 )]
position = Vector2( 1068, -159 )
rotation = 1.5708
[connection signal="tree_exiting" from="." to="LevelState" method="_on_Level_tree_exiting"]
[connection signal="timeout" from="UserInterface/HUD/HUDOverlay/GetBackTimer/Timer" to="UserInterface/HUD" method="_on_Timer_timeout"]
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=17 format=2]
[gd_scene load_steps=19 format=2]
[ext_resource path="res://src/Environment/AlienShipTileSet.tres" type="TileSet" id=1]
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=2]
@ -7,10 +7,12 @@
[ext_resource path="res://src/Platforms/FlyingPlatform.gd" type="Script" id=5]
[ext_resource path="res://src/Contraptions/Portal/Portal.tscn" type="PackedScene" id=6]
[ext_resource path="res://src/UserInterface/UserInterface.tscn" type="PackedScene" id=7]
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=8]
[ext_resource path="res://assets/contraption/FlyingPlatformClean.png" type="Texture" id=9]
[ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=10]
[ext_resource path="res://src/Utilities/LevelState.tscn" type="PackedScene" id=11]
[ext_resource path="res://src/Actors/BlobbyCam.tscn" type="PackedScene" id=12]
[ext_resource path="res://src/ObstacleObjects/Mine.tscn" type="PackedScene" id=13]
[sub_resource type="AnimationNodeStateMachinePlayback" id=4]
@ -86,12 +88,6 @@ wait_time = 20.0
[node name="BlobbyCam" parent="." instance=ExtResource( 12 )]
[node name="AnimatedSprite" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="4"]
frame = 12
[node name="AnimatedSprite2" parent="BlobbyCam/ParallaxBackground/ParallaxLayer5" index="5"]
frame = 3
[node name="Blobby" parent="." instance=ExtResource( 2 )]
unique_name_in_owner = true
position = Vector2( 36, -24 )
@ -100,8 +96,12 @@ scale = Vector2( 0.878906, 0.936025 )
[node name="AnimationTree" parent="Blobby/BlobbySprite" index="0"]
parameters/playback = SubResource( 4 )
[node name="Portal" parent="." instance=ExtResource( 6 )]
position = Vector2( 744, -288 )
[node name="Terminal" parent="." instance=ExtResource( 8 )]
position = Vector2( 648, -264 )
[node name="Portal" parent="Terminal" instance=ExtResource( 6 )]
visible = false
position = Vector2( 96, -24 )
next_scene = ExtResource( 4 )
[node name="FlyingPlatform" type="Node2D" parent="."]
@ -164,6 +164,15 @@ pause_mode = 2
playback_process_mode = 0
anims/Horizontal = SubResource( 6 )
[node name="Mine" parent="." instance=ExtResource( 13 )]
position = Vector2( 39, -192 )
[node name="Mine2" parent="." instance=ExtResource( 13 )]
position = Vector2( 75, -192 )
[node name="Mine3" parent="." instance=ExtResource( 13 )]
position = Vector2( 108, -192 )
[node name="TileMap" type="TileMap" parent="."]
unique_name_in_owner = true
tile_set = ExtResource( 1 )

View File

@ -1,5 +1,6 @@
[gd_scene load_steps=52 format=2]
[gd_scene load_steps=54 format=2]
[ext_resource path="res://src/Contraptions/Triggers/WhyButton.tscn" type="PackedScene" id=1]
[ext_resource path="res://src/Environment/AlienShipTileSet.tres" type="TileSet" id=2]
[ext_resource path="res://src/Platforms/DropThroughPlatform.tscn" type="PackedScene" id=3]
[ext_resource path="res://src/Actors/Blobby/Blobby.tscn" type="PackedScene" id=4]
@ -45,6 +46,7 @@
[ext_resource path="res://src/Actors/Enemies/Beings/BoundFrog.tscn" type="PackedScene" id=44]
[ext_resource path="res://src/Utilities/SignalManager.tscn" type="PackedScene" id=45]
[ext_resource path="res://src/Utilities/LevelState.tscn" type="PackedScene" id=46]
[ext_resource path="res://src/Contraptions/Triggers/ElevatorButton.tscn" type="PackedScene" id=47]
[sub_resource type="AnimationNodeStateMachinePlayback" id=4]
@ -139,11 +141,15 @@ shape = SubResource( 3 )
position = Vector2( 0, 1.5 )
z_index = -1
frames = SubResource( 5 )
frame = 7
frame = 10
playing = true
[node name="Portal" parent="." instance=ExtResource( 42 )]
position = Vector2( 768, 120 )
[node name="Terminal" parent="." instance=ExtResource( 47 )]
position = Vector2( 695, 144 )
[node name="Portal" parent="Terminal" instance=ExtResource( 42 )]
visible = false
position = Vector2( 73, -24 )
[node name="TileMap" type="TileMap" parent="."]
unique_name_in_owner = true
@ -161,7 +167,7 @@ tile_data = PoolIntArray( -1, 1610612751, 0, -65536, 1610612746, 0, -65535, 1610
tile_data = PoolIntArray( 851970, 1, 0, 851971, 0, 0, 851973, 0, 0, 851975, 2, 0 )
[node name="Flyer" parent="." instance=ExtResource( 41 )]
position = Vector2( 698, 294 )
position = Vector2( 496, 152 )
max_speed = 120
[node name="StateLabel" parent="Flyer" index="1"]
@ -177,13 +183,24 @@ movement_radius = 4
[node name="FlyingPlatformClean" parent="." instance=ExtResource( 43 )]
position = Vector2( 496, 220 )
[node name="WhyButton" parent="." instance=ExtResource( 1 )]
position = Vector2( 632, 336 )
[node name="Indicator1" parent="WhyButton" index="1"]
visible = false
[node name="Indicator3" parent="WhyButton" index="3"]
visible = false
[connection signal="ready" from="." to="BoundFrog" method="_on_Level_ready"]
[connection signal="body_exited" from="Blobby/BlobbySkin" to="Blobby" method="_on_BlobbySkin_body_exited"]
[connection signal="area_exited" from="Spring/SpringPlatform/SpringSkin" to="Spring/SpringPlatform" method="_on_SpringSkin_area_exited"]
[connection signal="area_entered" from="Spring/SpringPlatform/EnteringVelocityDetector" to="Spring/SpringPlatform" method="_on_EnteringVelocityDetector_area_entered"]
[connection signal="button_pushed" from="WhyButton" to="BoundFrog" method="_on_WhyButton_button_pushed"]
[editable path="UserInterface"]
[editable path="UserInterface/HUD"]
[editable path="Blobby"]
[editable path="Flyer"]
[editable path="FlyingPlatformClean"]
[editable path="WhyButton"]

View File

@ -1,6 +1,7 @@
extends Node
onready var signalManager := get_tree().root.get_child(1).get_node("%SignalManager")
onready var levelName := get_tree().get_current_scene().get_name()
#TODO Easteregg pls
var currency: = 0 setget set_currency
@ -32,3 +33,23 @@ func set_frees(value: int) -> void:
func set_dead(value: bool) -> void:
is_dead = value
func _on_Level_tree_exiting() -> void:
var progress_dict : Dictionary = GlobalState.progress_dict
var levelProgress : Dictionary = {}
levelProgress["currency"] = currency
levelProgress["kills"] = kills
levelProgress["deaths"] = deaths
levelProgress["frees"] = frees
if !progress_dict.has(levelName):
progress_dict[levelName] = levelProgress
else:
progress_dict[levelName]["currency"] = progress_dict[levelName]["currency"] + currency
progress_dict[levelName]["kills"] = progress_dict[levelName]["kills"] + kills
progress_dict[levelName]["deaths"] = progress_dict[levelName]["deaths"] + deaths
progress_dict[levelName]["frees"] = progress_dict[levelName]["frees"] + frees
GlobalState.set_progress(progress_dict)
pass # Replace with function body.