[gd_scene load_steps=20 format=3 uid="uid://bwtpsjpe2lf7l"] [ext_resource type="Script" uid="uid://dhyi4yn0xleoy" path="res://objects/new_player/new_player.gd" id="1_xs4s5"] [ext_resource type="Texture2D" uid="uid://c71nqfyw4a3v4" path="res://assets/textures/player/capri.png" id="3_trcll"] [ext_resource type="Script" uid="uid://cv55s54clajw5" path="res://scripts/spritesheet_animation/spritesheet_animation.gd" id="4_bsdw5"] [ext_resource type="Script" uid="uid://bhrh1qkv7nlyl" path="res://addons/godot_state_charts/state_chart.gd" id="5_bcjtl"] [ext_resource type="Script" uid="uid://b11v7h3ny6kh1" path="res://addons/godot_state_charts/compound_state.gd" id="6_jnxnd"] [ext_resource type="Script" uid="uid://rrj3six8lu8p" path="res://addons/godot_state_charts/transition.gd" id="7_rgjdc"] [ext_resource type="Script" uid="uid://b6u7unac5srh0" path="res://addons/godot_state_charts/expression_guard.gd" id="8_8i2im"] [ext_resource type="AudioStream" uid="uid://7be7ts3rdegh" path="res://assets/audio/vox/capri_jump.ogg" id="9_8c74o"] [ext_resource type="Script" uid="uid://cyvphy8py4ntr" path="res://addons/godot_state_charts/atomic_state.gd" id="10_mvu25"] [sub_resource type="CircleShape2D" id="CircleShape2D_tvyy1"] radius = 6.0 [sub_resource type="Resource" id="Resource_sfpnl"] resource_name = "Not On Floor" script = ExtResource("8_8i2im") expression = "not on_floor" metadata/_custom_type_script = "uid://b6u7unac5srh0" [sub_resource type="Resource" id="Resource_mq184"] resource_name = "Horizontal Input" script = ExtResource("8_8i2im") expression = "input_dir.x != 0.0" metadata/_custom_type_script = "uid://b6u7unac5srh0" [sub_resource type="Resource" id="Resource_nye2q"] resource_name = "Horizontal Movement" script = ExtResource("8_8i2im") expression = "velocity.x != 0.0" metadata/_custom_type_script = "uid://b6u7unac5srh0" [sub_resource type="Resource" id="Resource_n665q"] resource_name = "No Horizontal Movement" script = ExtResource("8_8i2im") expression = "velocity.x == 0.0" metadata/_custom_type_script = "uid://b6u7unac5srh0" [sub_resource type="Resource" id="Resource_8c74o"] resource_name = "No Horizontal Input" script = ExtResource("8_8i2im") expression = "input_dir.x == 0.0" metadata/_custom_type_script = "uid://b6u7unac5srh0" [sub_resource type="Resource" id="Resource_xs4s5"] resource_name = "Opposite Input" script = ExtResource("8_8i2im") expression = "input_dir.x != signf(velocity.x)" metadata/_custom_type_script = "uid://b6u7unac5srh0" [sub_resource type="Resource" id="Resource_e1cbd"] resource_name = "Aligned Input" script = ExtResource("8_8i2im") expression = "input_dir.x == signf(velocity.x)" metadata/_custom_type_script = "uid://b6u7unac5srh0" [sub_resource type="Resource" id="Resource_163ft"] resource_name = "On Floor" script = ExtResource("8_8i2im") expression = "on_floor" metadata/_custom_type_script = "uid://b6u7unac5srh0" [sub_resource type="Resource" id="Resource_whx0j"] resource_name = "Falling Down" script = ExtResource("8_8i2im") expression = "velocity.y > 0.0" metadata/_custom_type_script = "uid://b6u7unac5srh0" [node name="Player" type="CharacterBody2D" node_paths=PackedStringArray("state_chart", "graphics", "run_animation")] collision_layer = 16 collision_mask = 3 floor_snap_length = 3.0 script = ExtResource("1_xs4s5") run_acceleration = 150.0 max_run_speed = 100.0 turn_acceleration = 250.0 stopping_force = 200.0 gravity = 450.0 jump_power = 180.0 state_chart = NodePath("StateChart") graphics = NodePath("Graphics") run_animation = NodePath("Graphics/Sprite/Run") [node name="CollisionShape" type="CollisionShape2D" parent="."] shape = SubResource("CircleShape2D_tvyy1") debug_color = Color(3.32102e-06, 0.648976, 0.161954, 0.42) [node name="Graphics" type="Node2D" parent="."] [node name="Sprite" type="Sprite2D" parent="Graphics"] texture = ExtResource("3_trcll") offset = Vector2(0, -2) hframes = 4 vframes = 4 region_rect = Rect2(0, 0, 64, 64) [node name="Idle" type="Node" parent="Graphics/Sprite"] script = ExtResource("4_bsdw5") [node name="Bark" type="Node" parent="Graphics/Sprite"] script = ExtResource("4_bsdw5") first_frame = Vector2i(1, 0) [node name="Skid" type="Node" parent="Graphics/Sprite"] script = ExtResource("4_bsdw5") first_frame = Vector2i(2, 0) [node name="Run" type="Node" parent="Graphics/Sprite"] script = ExtResource("4_bsdw5") first_frame = Vector2i(0, 1) frames = 4 fps = 16.0 loop = true [node name="Fall" type="Node" parent="Graphics/Sprite"] script = ExtResource("4_bsdw5") first_frame = Vector2i(0, 2) [node name="Jump" type="Node" parent="Graphics/Sprite"] script = ExtResource("4_bsdw5") first_frame = Vector2i(1, 2) [node name="Missile" type="Node" parent="Graphics/Sprite"] script = ExtResource("4_bsdw5") first_frame = Vector2i(2, 2) [node name="Sounds" type="Node" parent="."] [node name="Voice" type="AudioStreamPlayer" parent="Sounds"] stream = ExtResource("9_8c74o") bus = &"Capri" [node name="StateChart" type="Node" parent="."] script = ExtResource("5_bcjtl") track_in_editor = true initial_expression_properties = { &"input_dir": Vector2(0, 0), &"on_floor": false, &"velocity": Vector2(0, 0) } [node name="Root" type="Node" parent="StateChart"] script = ExtResource("6_jnxnd") initial_state = NodePath("Grounded") [node name="Grounded" type="Node" parent="StateChart/Root"] editor_description = "Player is standing on a floor." script = ExtResource("6_jnxnd") initial_state = NodePath("Standing") [node name="on JumpPressed" type="Node" parent="StateChart/Root/Grounded"] script = ExtResource("7_rgjdc") to = NodePath("../../Airborne/Jumping") event = &"jump_pressed" delay_in_seconds = "0.0" [node name="if NotOnFloor" type="Node" parent="StateChart/Root/Grounded"] editor_description = "Transition to falling state if not touching a floor." script = ExtResource("7_rgjdc") to = NodePath("../../Airborne/Falling") event = &"tick" guard = SubResource("Resource_sfpnl") delay_in_seconds = "0.0" [node name="Standing" type="Node" parent="StateChart/Root/Grounded"] editor_description = "Player is standing still or coming to a stop." script = ExtResource("6_jnxnd") initial_state = NodePath("Idle") metadata/_custom_type_script = "uid://b11v7h3ny6kh1" [node name="if WalkHeld" type="Node" parent="StateChart/Root/Grounded/Standing"] editor_description = "Transition to running state if a horizontal direction is being held." script = ExtResource("7_rgjdc") to = NodePath("../../Running") guard = SubResource("Resource_mq184") delay_in_seconds = "0.0" [node name="Idle" type="Node" parent="StateChart/Root/Grounded/Standing"] editor_description = "Player is stopped, standing still." script = ExtResource("10_mvu25") [node name="if Moving" type="Node" parent="StateChart/Root/Grounded/Standing/Idle"] editor_description = "Transition to stopping state if the player has horizontal velocity." script = ExtResource("7_rgjdc") to = NodePath("../../Stopping") guard = SubResource("Resource_nye2q") delay_in_seconds = "0.0" [node name="Stopping" type="Node" parent="StateChart/Root/Grounded/Standing"] editor_description = "Player is slowing to a stop naturally." script = ExtResource("10_mvu25") [node name="if Stopped" type="Node" parent="StateChart/Root/Grounded/Standing/Stopping"] editor_description = "Transition to idle state when the player has come to a full stop." script = ExtResource("7_rgjdc") to = NodePath("../../Idle") guard = SubResource("Resource_n665q") delay_in_seconds = "0.0" [node name="Running" type="Node" parent="StateChart/Root/Grounded"] editor_description = "Player is accelerating in the held input direction." script = ExtResource("10_mvu25") [node name="if WalkReleased" type="Node" parent="StateChart/Root/Grounded/Running"] editor_description = "Transition to standing state if no input direction is held." script = ExtResource("7_rgjdc") to = NodePath("../../Standing") guard = SubResource("Resource_8c74o") delay_in_seconds = "0.0" [node name="if OppositeInput" type="Node" parent="StateChart/Root/Grounded/Running"] editor_description = "Transition to turning state if the held input dir is opposite the horizontal velocity." script = ExtResource("7_rgjdc") to = NodePath("../../Turning") guard = SubResource("Resource_xs4s5") delay_in_seconds = "0.0" [node name="Turning" type="Node" parent="StateChart/Root/Grounded"] editor_description = "Player is more quickly accelerating in the held input direction to slow and turn around." script = ExtResource("10_mvu25") [node name="if WalkReleased" type="Node" parent="StateChart/Root/Grounded/Turning"] editor_description = "Transition to standing state if no input direction is held." script = ExtResource("7_rgjdc") to = NodePath("../../Standing") guard = SubResource("Resource_8c74o") delay_in_seconds = "0.0" [node name="if AlignedInput" type="Node" parent="StateChart/Root/Grounded/Turning"] editor_description = "Transition to running state when input direction matches horizontal velocity." script = ExtResource("7_rgjdc") to = NodePath("../../Running") guard = SubResource("Resource_e1cbd") delay_in_seconds = "0.0" [node name="Airborne" type="Node" parent="StateChart/Root"] editor_description = "Player is in the air." script = ExtResource("6_jnxnd") initial_state = NodePath("Falling") [node name="if OnFloor" type="Node" parent="StateChart/Root/Airborne"] editor_description = "Transition to grounded state if touching a floor." script = ExtResource("7_rgjdc") to = NodePath("../../Grounded") event = &"tick" guard = SubResource("Resource_163ft") delay_in_seconds = "0.0" [node name="Falling" type="Node" parent="StateChart/Root/Airborne"] editor_description = "Player is falling down." script = ExtResource("10_mvu25") [node name="Jumping" type="Node" parent="StateChart/Root/Airborne"] editor_description = "Player has jumped and is rising." script = ExtResource("10_mvu25") [node name="if DownVelocity" type="Node" parent="StateChart/Root/Airborne/Jumping"] editor_description = "Transition to the falling state if moving downwards." script = ExtResource("7_rgjdc") to = NodePath("../../Falling") guard = SubResource("Resource_whx0j") delay_in_seconds = "0.0" [node name="Missile" type="Node" parent="StateChart/Root/Airborne"] editor_description = "Player is hurtling through the air and ricocheting off of surfaces." script = ExtResource("10_mvu25") [connection signal="state_entered" from="StateChart/Root/Grounded/Standing/Idle" to="Graphics/Sprite/Idle" method="play"] [connection signal="state_entered" from="StateChart/Root/Grounded/Standing/Stopping" to="Graphics/Sprite/Run" method="play"] [connection signal="state_physics_processing" from="StateChart/Root/Grounded/Standing/Stopping" to="." method="_scale_run_animation"] [connection signal="state_physics_processing" from="StateChart/Root/Grounded/Standing/Stopping" to="." method="_slow_to_stop"] [connection signal="state_entered" from="StateChart/Root/Grounded/Running" to="Graphics/Sprite/Run" method="play"] [connection signal="state_physics_processing" from="StateChart/Root/Grounded/Running" to="." method="_scale_run_animation"] [connection signal="state_physics_processing" from="StateChart/Root/Grounded/Running" to="." method="_apply_run_acceleration"] [connection signal="state_entered" from="StateChart/Root/Grounded/Turning" to="Graphics/Sprite/Skid" method="play"] [connection signal="state_physics_processing" from="StateChart/Root/Grounded/Turning" to="." method="_apply_turn_acceleration"] [connection signal="state_physics_processing" from="StateChart/Root/Airborne" to="." method="_apply_gravity"] [connection signal="state_entered" from="StateChart/Root/Airborne/Falling" to="Graphics/Sprite/Fall" method="play"] [connection signal="state_entered" from="StateChart/Root/Airborne/Jumping" to="." method="_start_jump"] [connection signal="state_entered" from="StateChart/Root/Airborne/Jumping" to="Graphics/Sprite/Jump" method="play"] [connection signal="state_entered" from="StateChart/Root/Airborne/Jumping" to="Sounds/Voice" method="play"] [connection signal="state_entered" from="StateChart/Root/Airborne/Missile" to="Graphics/Sprite/Missile" method="play"] [connection signal="state_exited" from="StateChart/Root/Airborne/Missile" to="." method="_restore_graphics_rotation"] [connection signal="state_physics_processing" from="StateChart/Root/Airborne/Missile" to="." method="_face_towards_velocity"]