Shield Vending Prop, Frog Jumpheight fix, Demo Setup
This commit is contained in:
parent
96fe70fefc
commit
3ef7f40cae
BIN
assets/contraption/ShieldVendingMachine.aseprite
Normal file
BIN
assets/contraption/ShieldVendingMachine.aseprite
Normal file
Binary file not shown.
BIN
assets/contraption/ShieldVendingMachine.png
Normal file
BIN
assets/contraption/ShieldVendingMachine.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 350 B |
35
assets/contraption/ShieldVendingMachine.png.import
Normal file
35
assets/contraption/ShieldVendingMachine.png.import
Normal 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
|
||||
@ -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 )
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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()
|
||||
|
||||
|
||||
@ -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()
|
||||
|
||||
|
||||
@ -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()
|
||||
|
||||
|
||||
@ -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()
|
||||
|
||||
|
||||
@ -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()
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"]
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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"]
|
||||
|
||||
34
src/Contraptions/VendingMachine.gd
Normal file
34
src/Contraptions/VendingMachine.gd
Normal 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
|
||||
42
src/Contraptions/VendingMachine.tscn
Normal file
42
src/Contraptions/VendingMachine.tscn
Normal 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"]
|
||||
@ -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
|
||||
|
||||
@ -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 )
|
||||
|
||||
@ -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"]
|
||||
|
||||
|
||||
@ -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 )
|
||||
|
||||
@ -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"]
|
||||
|
||||
@ -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.
|
||||
|
||||
Loading…
Reference in New Issue
Block a user