feat: basic dialogue system and opening cutscene
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 6s
Create tag and build when new code gets to main / Export (push) Successful in 2m5s

This commit is contained in:
2025-08-01 15:28:17 +02:00
parent d34f0749bd
commit f3288698fe
24 changed files with 850 additions and 204 deletions

View File

@ -0,0 +1,173 @@
[gd_resource type="SpriteFrames" load_steps=23 format=3 uid="uid://i6035vm5ited"]
[ext_resource type="Texture2D" uid="uid://dbruj2bdtjfmd" path="res://player/assets/char_blue.png" id="1_pbrcr"]
[sub_resource type="AtlasTexture" id="AtlasTexture_8pxes"]
atlas = ExtResource("1_pbrcr")
region = Rect2(0, 56, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_fmu53"]
atlas = ExtResource("1_pbrcr")
region = Rect2(56, 56, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_w7j2h"]
atlas = ExtResource("1_pbrcr")
region = Rect2(112, 56, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_n0b8q"]
atlas = ExtResource("1_pbrcr")
region = Rect2(168, 56, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_jfgyi"]
atlas = ExtResource("1_pbrcr")
region = Rect2(224, 56, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_237xx"]
atlas = ExtResource("1_pbrcr")
region = Rect2(280, 56, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_wpyo2"]
atlas = ExtResource("1_pbrcr")
region = Rect2(0, 0, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_7crtr"]
atlas = ExtResource("1_pbrcr")
region = Rect2(56, 0, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_vgvch"]
atlas = ExtResource("1_pbrcr")
region = Rect2(112, 0, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_a1u5o"]
atlas = ExtResource("1_pbrcr")
region = Rect2(168, 0, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_3dxkp"]
atlas = ExtResource("1_pbrcr")
region = Rect2(224, 0, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_6wior"]
atlas = ExtResource("1_pbrcr")
region = Rect2(280, 0, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_pbrcr"]
atlas = ExtResource("1_pbrcr")
region = Rect2(392, 168, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_p5tca"]
atlas = ExtResource("1_pbrcr")
region = Rect2(0, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_jbx34"]
atlas = ExtResource("1_pbrcr")
region = Rect2(56, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_s3g0c"]
atlas = ExtResource("1_pbrcr")
region = Rect2(112, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_35wys"]
atlas = ExtResource("1_pbrcr")
region = Rect2(168, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_pjwc4"]
atlas = ExtResource("1_pbrcr")
region = Rect2(224, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_or4qq"]
atlas = ExtResource("1_pbrcr")
region = Rect2(280, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_hggc2"]
atlas = ExtResource("1_pbrcr")
region = Rect2(336, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_b2j0d"]
atlas = ExtResource("1_pbrcr")
region = Rect2(392, 112, 56, 56)
[resource]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_8pxes")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fmu53")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_w7j2h")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_n0b8q")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jfgyi")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_237xx")
}],
"loop": true,
"name": &"hit",
"speed": 12.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_wpyo2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7crtr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vgvch")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_a1u5o")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_3dxkp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6wior")
}],
"loop": true,
"name": &"idle",
"speed": 8.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_pbrcr")
}],
"loop": true,
"name": &"jump",
"speed": 5.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_p5tca")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jbx34")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_s3g0c")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_35wys")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_pjwc4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_or4qq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hggc2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_b2j0d")
}],
"loop": true,
"name": &"run",
"speed": 14.0
}]

View File

@ -16,6 +16,36 @@ var gravity_modifier = 1
var animated_sprites = []
var is_in_cutscene = false
var current_animation = "idle"
func play_anim():
for sprite in animated_sprites:
sprite.play(current_animation)
func play_anim_run():
current_animation = "run"
func play_anim_idle():
current_animation = "idle"
func play_anim_jump():
current_animation = "jump"
func set_in_cutscene():
is_in_cutscene = true
func set_in_play():
is_in_cutscene = false
func look_left():
for sprite in animated_sprites:
sprite.flip_h = true
func look_right():
for sprite in animated_sprites:
sprite.flip_h = false
func _ready() -> void:
animated_sprites = [
knight,
@ -23,6 +53,12 @@ func _ready() -> void:
]
func _physics_process(delta: float) -> void:
play_anim()
if is_in_cutscene:
move_and_slide()
return
if not is_on_floor():
velocity += get_gravity() * delta * gravity_modifier
@ -32,19 +68,14 @@ func _physics_process(delta: float) -> void:
var direction := Input.get_axis("move_left", "move_right")
if direction > 0:
for sprite in animated_sprites:
sprite.flip_h = false
look_right()
if direction < 0:
for sprite in animated_sprites:
sprite.flip_h = true
look_left()
if velocity.x != 0:
for sprite in animated_sprites:
sprite.play("run")
play_anim_run()
else:
for sprite in animated_sprites:
sprite.play("idle")
play_anim_idle()
if direction:
var smoothed_speed = speed * smoothstep(0, 1, acceleration)
@ -54,3 +85,7 @@ func _physics_process(delta: float) -> void:
velocity.x = move_toward(velocity.x, 0, speed)
move_and_slide()
func _on_dialogue_manager_dialogue_ended() -> void:
set_in_play()

View File

@ -1,167 +1,11 @@
[gd_scene load_steps=70 format=3 uid="uid://yvp44oauis4n"]
[gd_scene load_steps=61 format=3 uid="uid://yvp44oauis4n"]
[ext_resource type="Texture2D" uid="uid://d3t1fn35skpip" path="res://player/assets/idle sheet-Sheet.png" id="1_g1dw6"]
[ext_resource type="Script" uid="uid://c1fqj3lba7wik" path="res://player/player.gd" id="1_yw30f"]
[ext_resource type="SpriteFrames" uid="uid://i6035vm5ited" path="res://player/armored_spritesheet.tres" id="2_qjkh3"]
[ext_resource type="Texture2D" uid="uid://besci6tw4jtou" path="res://player/assets/itch run-Sheet sheet.png" id="2_yw30f"]
[ext_resource type="Texture2D" uid="uid://dbruj2bdtjfmd" path="res://player/assets/char_blue.png" id="3_qjkh3"]
[sub_resource type="AtlasTexture" id="AtlasTexture_8pxes"]
atlas = ExtResource("3_qjkh3")
region = Rect2(0, 56, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_fmu53"]
atlas = ExtResource("3_qjkh3")
region = Rect2(56, 56, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_w7j2h"]
atlas = ExtResource("3_qjkh3")
region = Rect2(112, 56, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_n0b8q"]
atlas = ExtResource("3_qjkh3")
region = Rect2(168, 56, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_jfgyi"]
atlas = ExtResource("3_qjkh3")
region = Rect2(224, 56, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_237xx"]
atlas = ExtResource("3_qjkh3")
region = Rect2(280, 56, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_wpyo2"]
atlas = ExtResource("3_qjkh3")
region = Rect2(0, 0, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_7crtr"]
atlas = ExtResource("3_qjkh3")
region = Rect2(56, 0, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_vgvch"]
atlas = ExtResource("3_qjkh3")
region = Rect2(112, 0, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_a1u5o"]
atlas = ExtResource("3_qjkh3")
region = Rect2(168, 0, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_3dxkp"]
atlas = ExtResource("3_qjkh3")
region = Rect2(224, 0, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_6wior"]
atlas = ExtResource("3_qjkh3")
region = Rect2(280, 0, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_p5tca"]
atlas = ExtResource("3_qjkh3")
region = Rect2(0, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_jbx34"]
atlas = ExtResource("3_qjkh3")
region = Rect2(56, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_s3g0c"]
atlas = ExtResource("3_qjkh3")
region = Rect2(112, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_35wys"]
atlas = ExtResource("3_qjkh3")
region = Rect2(168, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_pjwc4"]
atlas = ExtResource("3_qjkh3")
region = Rect2(224, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_or4qq"]
atlas = ExtResource("3_qjkh3")
region = Rect2(280, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_hggc2"]
atlas = ExtResource("3_qjkh3")
region = Rect2(336, 112, 56, 56)
[sub_resource type="AtlasTexture" id="AtlasTexture_b2j0d"]
atlas = ExtResource("3_qjkh3")
region = Rect2(392, 112, 56, 56)
[sub_resource type="SpriteFrames" id="SpriteFrames_7l6ig"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_8pxes")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fmu53")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_w7j2h")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_n0b8q")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jfgyi")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_237xx")
}],
"loop": true,
"name": &"hit",
"speed": 12.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_wpyo2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7crtr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vgvch")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_a1u5o")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_3dxkp")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_6wior")
}],
"loop": true,
"name": &"idle",
"speed": 8.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_p5tca")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jbx34")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_s3g0c")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_35wys")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_pjwc4")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_or4qq")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_hggc2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_b2j0d")
}],
"loop": true,
"name": &"run",
"speed": 14.0
}]
[ext_resource type="Texture2D" uid="uid://lew1m4dpw2ss" path="res://player/assets/itch jump sheet-Sheet.png" id="4_g6k8r"]
[ext_resource type="Shape2D" uid="uid://6rhdwj5jxbxn" path="res://player/player_collision.tres" id="5_qjkh3"]
[sub_resource type="AtlasTexture" id="AtlasTexture_g6k8r"]
atlas = ExtResource("1_g1dw6")
@ -235,6 +79,50 @@ region = Rect2(1280, 0, 80, 80)
atlas = ExtResource("1_g1dw6")
region = Rect2(1360, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_mmwog"]
atlas = ExtResource("4_g6k8r")
region = Rect2(0, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_8pxes"]
atlas = ExtResource("4_g6k8r")
region = Rect2(80, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_fmu53"]
atlas = ExtResource("4_g6k8r")
region = Rect2(320, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_w7j2h"]
atlas = ExtResource("4_g6k8r")
region = Rect2(400, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_n0b8q"]
atlas = ExtResource("4_g6k8r")
region = Rect2(480, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_jfgyi"]
atlas = ExtResource("4_g6k8r")
region = Rect2(640, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_237xx"]
atlas = ExtResource("4_g6k8r")
region = Rect2(720, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_wpyo2"]
atlas = ExtResource("4_g6k8r")
region = Rect2(960, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_7crtr"]
atlas = ExtResource("4_g6k8r")
region = Rect2(1120, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_vgvch"]
atlas = ExtResource("4_g6k8r")
region = Rect2(1200, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_a1u5o"]
atlas = ExtResource("4_g6k8r")
region = Rect2(1360, 0, 80, 80)
[sub_resource type="AtlasTexture" id="AtlasTexture_g4c7l"]
atlas = ExtResource("2_yw30f")
region = Rect2(0, 0, 80, 80)
@ -394,6 +282,44 @@ animations = [{
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_mmwog")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_8pxes")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_fmu53")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_w7j2h")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_n0b8q")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_jfgyi")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_237xx")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_wpyo2")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_7crtr")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_vgvch")
}, {
"duration": 1.0,
"texture": SubResource("AtlasTexture_a1u5o")
}],
"loop": true,
"name": &"jump",
"speed": 10.0
}, {
"frames": [{
"duration": 1.0,
"texture": SubResource("AtlasTexture_g4c7l")
}, {
"duration": 1.0,
@ -470,10 +396,6 @@ animations = [{
"speed": 30.0
}]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_g1dw6"]
radius = 6.0
height = 26.0
[node name="Player" type="CharacterBody2D"]
collision_layer = 3
script = ExtResource("1_yw30f")
@ -483,17 +405,18 @@ acceleration = 0.177
[node name="Knight" type="AnimatedSprite2D" parent="."]
visible = false
position = Vector2(1, -28)
sprite_frames = SubResource("SpriteFrames_7l6ig")
sprite_frames = ExtResource("2_qjkh3")
animation = &"idle"
autoplay = "idle"
[node name="RedHood" type="AnimatedSprite2D" parent="."]
position = Vector2(11, -19)
sprite_frames = SubResource("SpriteFrames_mmwog")
animation = &"idle"
animation = &"jump"
autoplay = "idle"
frame_progress = 0.749354
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
visible = false
position = Vector2(0, -13)
shape = SubResource("CapsuleShape2D_g1dw6")
shape = ExtResource("5_qjkh3")

View File

@ -0,0 +1,5 @@
[gd_resource type="CapsuleShape2D" format=3 uid="uid://6rhdwj5jxbxn"]
[resource]
radius = 6.0
height = 26.0