From 62f29e8a18e53c581da0aa9d4e865e822c4eb536 Mon Sep 17 00:00:00 2001 From: Nitsud Yarg Date: Sun, 23 Jun 2024 11:50:53 -0700 Subject: [PATCH] Player now jumps to a level start position. Level has a base class now. --- Main.tscn | 30 +-------------- project.godot | 7 ++++ src/CameraControl-Position2D.gd | 6 ++- src/Level.gd | 19 ++++++++++ src/Levels/Level.tscn | 57 ++++++++++++++++++++++++---- src/playerD/Player.gd | 3 ++ src/playerD/Player.tscn | 2 +- src/playerD/states/die.gd | 12 ++++++ src/singleton_autoloads/LevelInfo.gd | 13 +++++++ 9 files changed, 111 insertions(+), 38 deletions(-) create mode 100644 src/Level.gd create mode 100644 src/playerD/states/die.gd create mode 100644 src/singleton_autoloads/LevelInfo.gd diff --git a/Main.tscn b/Main.tscn index 7728e4c..41cfb40 100644 --- a/Main.tscn +++ b/Main.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=11 format=2] +[gd_scene load_steps=10 format=2] [ext_resource path="res://src/Levels/Level.tscn" type="PackedScene" id=1] [ext_resource path="res://src/CameraControl-Position2D.gd" type="Script" id=5] @@ -10,10 +10,6 @@ [ext_resource path="res://icon.png" type="Texture" id=13] [ext_resource path="res://src/playerD/Player.tscn" type="PackedScene" id=14] -[sub_resource type="SegmentShape2D" id=13] -a = Vector2( -1, -68 ) -b = Vector2( -1, 349 ) - [node name="Main" type="Node2D"] [node name="Level" parent="." instance=ExtResource( 1 )] @@ -22,7 +18,7 @@ __meta__ = { } [node name="Player" parent="." instance=ExtResource( 14 )] -position = Vector2( 1063, 116 ) +position = Vector2( 859, 236 ) [node name="CameraControl" type="Position2D" parent="."] pause_mode = 2 @@ -96,31 +92,9 @@ __meta__ = { [node name="Timer" type="Timer" parent="CameraControl"] wait_time = 1.5 -[node name="CameraBoundaries" type="Area2D" parent="."] -collision_layer = 256 -collision_mask = 0 -__meta__ = { -"_edit_lock_": true -} - -[node name="CollisionShape2D" type="CollisionShape2D" parent="CameraBoundaries"] -position = Vector2( 0, 66 ) -shape = SubResource( 13 ) -__meta__ = { -"_edit_lock_": true -} - -[node name="CollisionShape2D2" type="CollisionShape2D" parent="CameraBoundaries"] -position = Vector2( 1281, 68 ) -shape = SubResource( 13 ) -__meta__ = { -"_edit_lock_": true -} - [node name="UI_Layer" type="CanvasLayer" parent="."] pause_mode = 2 layer = 2 -visible = false script = ExtResource( 9 ) [node name="PanelContainer" type="PanelContainer" parent="UI_Layer"] diff --git a/project.godot b/project.godot index 9f9b604..d02ae5d 100644 --- a/project.godot +++ b/project.godot @@ -39,6 +39,11 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://src/templates/Interactable/Interactable_Receiver.gd" }, { +"base": "Node2D", +"class": "Level", +"language": "GDScript", +"path": "res://src/Level.gd" +}, { "base": "Node", "class": "MovementComponent", "language": "GDScript", @@ -81,6 +86,7 @@ _global_script_class_icons={ "HealthPickup": "", "Interactable": "", "Interactable_Receiver": "", +"Level": "", "MovementComponent": "", "State": "", "StateAnimatedActor": "", @@ -105,6 +111,7 @@ animation/layers/only_include_visible_layers_by_default=true PlayerInfo="*res://src/singleton_autoloads/PlayerInfo.gd" UiManager="*res://src/singleton_autoloads/UIManager.gd" +LevelInfo="*res://src/singleton_autoloads/LevelInfo.gd" [debug] diff --git a/src/CameraControl-Position2D.gd b/src/CameraControl-Position2D.gd index 3ea6bf9..81a28f9 100644 --- a/src/CameraControl-Position2D.gd +++ b/src/CameraControl-Position2D.gd @@ -24,7 +24,10 @@ func _ready(): #grid_size = get_node("/root").get_visible_rect().size print(grid_size) set_as_toplevel(true) - update_grid_position() + #update_grid_position() + ##TODO: Can't seem to get first load grid snap not to happen. + grid_position = calculate_grid_position() + jump_to_grid_position() print("Camera Set: ",grid_position, position) print("Ray Left: ", $Left.global_position, $Left.cast_to) @@ -96,6 +99,7 @@ func update_grid_position(): grid_position.x = new_grid_position.x jump_to_grid_position() else: + grid_position = new_grid_position jump_to_grid_position() #$Left.position = Vector2(grid_position * grid_size) #print("Ray Left: ", $Left.global_position, $Left.cast_to) diff --git a/src/Level.gd b/src/Level.gd new file mode 100644 index 0000000..367ce33 --- /dev/null +++ b/src/Level.gd @@ -0,0 +1,19 @@ +class_name Level +extends Node2D + + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + +onready var player_start = $PlayerStart + + +# Called when the node enters the scene tree for the first time. +func _ready(): + LevelInfo.player_start_position = player_start + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass diff --git a/src/Levels/Level.tscn b/src/Levels/Level.tscn index 6f7ac2b..586a0c8 100644 --- a/src/Levels/Level.tscn +++ b/src/Levels/Level.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=2] +[gd_scene load_steps=14 format=2] [ext_resource path="res://src/templates/Actor/ActorTemplate.tscn" type="PackedScene" id=1] [ext_resource path="res://assets/Tiles/Assets/Demo TileSet.tres" type="TileSet" id=2] @@ -8,11 +8,51 @@ [ext_resource path="res://assets/Music/platformer_level03_loop.ogg" type="AudioStream" id=6] [ext_resource path="res://src/enemyC/EnemyC.tscn" type="PackedScene" id=7] [ext_resource path="res://src/Interactables/Door.tscn" type="PackedScene" id=8] +[ext_resource path="res://src/components/Hitbox_Component.tscn" type="PackedScene" id=9] +[ext_resource path="res://src/Level.gd" type="Script" id=10] [sub_resource type="SegmentShape2D" id=1] b = Vector2( 1500, 0 ) +[sub_resource type="SegmentShape2D" id=2] +a = Vector2( -1, -68 ) +b = Vector2( -1, 349 ) + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 50, 2 ) + [node name="Level" type="Node2D"] +script = ExtResource( 10 ) + +[node name="PlayerStart" type="Position2D" parent="."] +position = Vector2( 590, 271 ) + +[node name="CameraBoundaries" type="Area2D" parent="."] +collision_layer = 256 +collision_mask = 0 +__meta__ = { +"_edit_lock_": true +} + +[node name="CollisionShape2D3" type="CollisionShape2D" parent="CameraBoundaries"] +modulate = Color( 0.431373, 0.431373, 1, 1 ) +shape = SubResource( 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="CameraBoundaries"] +modulate = Color( 0.431373, 0.431373, 1, 1 ) +position = Vector2( 0, 66 ) +shape = SubResource( 2 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="CameraBoundaries"] +modulate = Color( 0.431373, 0.431373, 1, 1 ) +position = Vector2( 1281, 68 ) +shape = SubResource( 2 ) +__meta__ = { +"_edit_lock_": true +} [node name="ParallaxBackground" type="ParallaxBackground" parent="."] scroll_base_scale = Vector2( 0.4, 1 ) @@ -66,7 +106,7 @@ __meta__ = { } [node name="EnemyC2" parent="." instance=ExtResource( 7 )] -position = Vector2( 787, 132 ) +position = Vector2( 494, 39 ) [node name="ActorTemplate" parent="." instance=ExtResource( 1 )] position = Vector2( 262, 44 ) @@ -87,12 +127,13 @@ position = Vector2( 187, 144 ) [node name="Door" parent="." instance=ExtResource( 8 )] position = Vector2( 866, 120 ) -[node name="CameraBoundaries" type="Area2D" parent="."] -collision_layer = 256 -collision_mask = 0 +[node name="Hitbox_Component" parent="." instance=ExtResource( 9 )] +position = Vector2( 766, 334 ) +damage_amount = 50 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox_Component"] +modulate = Color( 1, 0, 0, 1 ) +shape = SubResource( 3 ) __meta__ = { "_edit_lock_": true } - -[node name="CollisionShape2D3" type="CollisionShape2D" parent="CameraBoundaries"] -shape = SubResource( 1 ) diff --git a/src/playerD/Player.gd b/src/playerD/Player.gd index 7f71ff1..b7a7064 100644 --- a/src/playerD/Player.gd +++ b/src/playerD/Player.gd @@ -9,6 +9,7 @@ onready var gun = $Gun func _ready() -> void: PlayerInfo.player_health = $Health_Component.health + global_position = LevelInfo.player_start_position.transform.origin movement_component.player_number = player_number @@ -21,6 +22,8 @@ func hit_Receiver(damage): if $Health_Component.health > 0: movement_state_machine.change_state($movement_state_machine/hurt) PlayerInfo.player_health = $Health_Component.health + if PlayerInfo.player_health <= 0: + return yield( get_tree().create_timer(2 + $movement_state_machine/hurt.timeout_seconds), "timeout") $Hurtbox_Component.set_hurtbox(true) diff --git a/src/playerD/Player.tscn b/src/playerD/Player.tscn index b72c85f..e06b891 100644 --- a/src/playerD/Player.tscn +++ b/src/playerD/Player.tscn @@ -14,7 +14,7 @@ [ext_resource path="res://src/playerD/states/hurt.gd" type="Script" id=12] [ext_resource path="res://src/Gun.gd" type="Script" id=13] [ext_resource path="res://src/playerD/states/roll.gd" type="Script" id=14] -[ext_resource path="res://src/state_animated_actor.gd" type="Script" id=15] +[ext_resource path="res://src/playerD/states/die.gd" type="Script" id=15] [ext_resource path="res://src/templates/Interactable/Interactable_Receiver.gd" type="Script" id=16] [sub_resource type="StreamTexture" id=90] diff --git a/src/playerD/states/die.gd b/src/playerD/states/die.gd new file mode 100644 index 0000000..1ef2744 --- /dev/null +++ b/src/playerD/states/die.gd @@ -0,0 +1,12 @@ +extends StateAnimatedActor + +func enter() -> void: + modifier_stack_ref.clear() + .enter() + move_component.velocity.x = 0 + + +func process_physics(_delta: float) -> State: + #Dead Dead dead. + #move_actor_as_desired(_delta) + return null diff --git a/src/singleton_autoloads/LevelInfo.gd b/src/singleton_autoloads/LevelInfo.gd new file mode 100644 index 0000000..87d2e4c --- /dev/null +++ b/src/singleton_autoloads/LevelInfo.gd @@ -0,0 +1,13 @@ +extends Node + + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" +var player_start_position: Position2D + + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +#func _process(delta): +# pass