implement drowning

This commit is contained in:
Haze Weathers 2023-06-29 23:01:59 -04:00
parent 4958c420d8
commit 325f2a6dd3
2 changed files with 63 additions and 11 deletions

View file

@ -260,6 +260,10 @@ func _on_Dead_state_entered() -> void:
#refill oxygen #refill oxygen
oxygen_timer.start() oxygen_timer.start()
func _on_Drowning_state_entered() -> void:
state_chart.send_event("died")
animation_player.play("drown")
func _on_Respawn_state_entered() -> void: func _on_Respawn_state_entered() -> void:
global_position = Game.respawn_point global_position = Game.respawn_point
graphics.visible = true graphics.visible = true
@ -394,6 +398,15 @@ func _process_movement(delta: float) -> void:
if is_on_wall(): if is_on_wall():
state_chart.send_event("push_start") state_chart.send_event("push_start")
func _process_floating_up(delta: float) -> void:
graphics.global_position.y -= 50.0 * delta
var sprite_sector = Game.get_sector(Vector2(global_position.x, graphics.global_position.y))
if sprite_sector != Game.current_sector:
graphics.visible = false
graphics.position = Vector2.ZERO
emit_signal("died")
state_chart.send_event("respawn")
# COLLISION CALLBACKS # # COLLISION CALLBACKS #
func _on_Hitbox_body_entered(body: Node) -> void: func _on_Hitbox_body_entered(body: Node) -> void:
@ -407,10 +420,9 @@ func _on_Ducking_event_received(event):
func _on_OxygenTimer_timeout(): func _on_OxygenTimer_timeout():
if underwater: die() if underwater:
state_chart.send_event("drown")
#Reset low oxygen effect when leaving level #Reset low oxygen effect when leaving level
func _on_Player_tree_exited(): func _on_Player_tree_exited():
set_underwater_audio(false) set_underwater_audio(false)

View file

@ -97,6 +97,18 @@ tracks/3/keys = {
"update": 0, "update": 0,
"values": [ 0.0 ] "values": [ 0.0 ]
} }
tracks/4/type = "value"
tracks/4/path = NodePath("Graphics/Sprite:position")
tracks/4/interp = 1
tracks/4/loop_wrap = true
tracks/4/imported = false
tracks/4/enabled = true
tracks/4/keys = {
"times": PoolRealArray( 0 ),
"transitions": PoolRealArray( 1 ),
"update": 0,
"values": [ Vector2( 0, -10 ) ]
}
[sub_resource type="Animation" id=18] [sub_resource type="Animation" id=18]
resource_name = "blink" resource_name = "blink"
@ -281,7 +293,7 @@ tracks/1/loop_wrap = true
tracks/1/imported = false tracks/1/imported = false
tracks/1/enabled = true tracks/1/enabled = true
tracks/1/keys = { tracks/1/keys = {
"times": PoolRealArray( 0, 0.05, 0.1, 0.75, 0.8, 0.85, 1.05, 1.11114 ), "times": PoolRealArray( 0, 0.05, 0.1, 0.8, 0.85, 0.9, 1.1, 1.15 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ),
"update": 1, "update": 1,
"values": [ 0, 1, 2, 3, 4, 5, 6, 7 ] "values": [ 0, 1, 2, 3, 4, 5, 6, 7 ]
@ -293,10 +305,10 @@ tracks/2/loop_wrap = true
tracks/2/imported = false tracks/2/imported = false
tracks/2/enabled = true tracks/2/enabled = true
tracks/2/keys = { tracks/2/keys = {
"times": PoolRealArray( 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.75, 1.15 ), "times": PoolRealArray( 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 1.2 ),
"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ),
"update": 0, "update": 0,
"values": [ Vector2( 1, -10 ), Vector2( 3, -10 ), Vector2( 1, -10 ), Vector2( 3, -10 ), Vector2( 1, -10 ), Vector2( 3, -10 ), Vector2( 2, -10 ), Vector2( 2, -10 ) ] "values": [ Vector2( 1, -10 ), Vector2( 3, -10 ), Vector2( 1, -10 ), Vector2( 3, -10 ), Vector2( 1, -10 ), Vector2( 3, -10 ), Vector2( 0, -10 ), Vector2( 0, -10 ) ]
} }
tracks/3/type = "value" tracks/3/type = "value"
tracks/3/path = NodePath("Graphics/Sprite:texture") tracks/3/path = NodePath("Graphics/Sprite:texture")
@ -311,17 +323,17 @@ tracks/3/keys = {
"values": [ ExtResource( 28 ) ] "values": [ ExtResource( 28 ) ]
} }
tracks/4/type = "method" tracks/4/type = "method"
tracks/4/path = NodePath(".") tracks/4/path = NodePath("StateChart")
tracks/4/interp = 1 tracks/4/interp = 1
tracks/4/loop_wrap = true tracks/4/loop_wrap = true
tracks/4/imported = false tracks/4/imported = false
tracks/4/enabled = true tracks/4/enabled = true
tracks/4/keys = { tracks/4/keys = {
"times": PoolRealArray( 1.15 ), "times": PoolRealArray( 1.3 ),
"transitions": PoolRealArray( 1 ), "transitions": PoolRealArray( 1 ),
"values": [ { "values": [ {
"args": [ ], "args": [ "float_up" ],
"method": "float_to_top" "method": "send_event"
} ] } ]
} }
@ -1001,7 +1013,7 @@ double_jump_force = 124.0
[node name="Sprite" type="Sprite" parent="Graphics"] [node name="Sprite" type="Sprite" parent="Graphics"]
unique_name_in_owner = true unique_name_in_owner = true
material = SubResource( 1 ) material = SubResource( 1 )
position = Vector2( 1, -10 ) position = Vector2( 0, -10 )
texture = ExtResource( 4 ) texture = ExtResource( 4 )
[node name="ArrowPosition" type="Position2D" parent="Graphics"] [node name="ArrowPosition" type="Position2D" parent="Graphics"]
@ -1412,6 +1424,11 @@ script = ExtResource( 10 )
to = NodePath("../../Dead") to = NodePath("../../Dead")
event = "hurt" event = "hurt"
[node name="On Drown" type="Node" parent="StateChart/Root/Health/Vulnerable"]
script = ExtResource( 10 )
to = NodePath("../../Drowning")
event = "drown"
[node name="On BecomeInvulnerable" type="Node" parent="StateChart/Root/Health/Vulnerable"] [node name="On BecomeInvulnerable" type="Node" parent="StateChart/Root/Health/Vulnerable"]
script = ExtResource( 10 ) script = ExtResource( 10 )
to = NodePath("../../Invulnerable") to = NodePath("../../Invulnerable")
@ -1443,6 +1460,27 @@ to = NodePath("../../Respawn")
event = "respawn" event = "respawn"
guard_expression = "can_respawn" guard_expression = "can_respawn"
[node name="Drowning" type="Node" parent="StateChart/Root/Health"]
script = ExtResource( 9 )
initial_state = NodePath("DrownStart")
[node name="On Respawn" type="Node" parent="StateChart/Root/Health/Drowning"]
script = ExtResource( 10 )
to = NodePath("../../Respawn")
event = "respawn"
guard_expression = "can_respawn"
[node name="DrownStart" type="Node" parent="StateChart/Root/Health/Drowning"]
script = ExtResource( 11 )
[node name="On FloatUp" type="Node" parent="StateChart/Root/Health/Drowning/DrownStart"]
script = ExtResource( 10 )
to = NodePath("../../FloatingUp")
event = "float_up"
[node name="FloatingUp" type="Node" parent="StateChart/Root/Health/Drowning"]
script = ExtResource( 11 )
[node name="StateDebugLayer" type="CanvasLayer" parent="."] [node name="StateDebugLayer" type="CanvasLayer" parent="."]
layer = 128 layer = 128
@ -1509,4 +1547,6 @@ align = 1
[connection signal="state_physics_processing" from="StateChart/Root/Movement/Climbing" to="." method="_process_climbing"] [connection signal="state_physics_processing" from="StateChart/Root/Movement/Climbing" to="." method="_process_climbing"]
[connection signal="state_entered" from="StateChart/Root/Health/Respawn" to="." method="_on_Respawn_state_entered"] [connection signal="state_entered" from="StateChart/Root/Health/Respawn" to="." method="_on_Respawn_state_entered"]
[connection signal="state_entered" from="StateChart/Root/Health/Dead" to="." method="_on_Dead_state_entered"] [connection signal="state_entered" from="StateChart/Root/Health/Dead" to="." method="_on_Dead_state_entered"]
[connection signal="state_entered" from="StateChart/Root/Health/Drowning" to="." method="_on_Drowning_state_entered"]
[connection signal="state_physics_processing" from="StateChart/Root/Health/Drowning/FloatingUp" to="." method="_process_floating_up"]
[connection signal="timeout" from="OxygenTimer" to="." method="_on_OxygenTimer_timeout"] [connection signal="timeout" from="OxygenTimer" to="." method="_on_OxygenTimer_timeout"]