1 Commits

Author SHA1 Message Date
f3288698fe 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
2025-08-01 15:28:17 +02:00
24 changed files with 850 additions and 204 deletions

View File

@ -0,0 +1,107 @@
extends Node
@onready var bubbles: HBoxContainer = %Bubbles
@onready var bubbles_back: TileMapLayer = %BubblesBack
@onready var bubbles_interior: TileMapLayer = %BubblesInterior
@onready var bubble_label: RichTextLabel = %BubbleLabel
@onready var left_speaker: TextureRect = %LeftSpeaker
@onready var right_speaker: TextureRect = %RightSpeaker
@onready var time_between_letters: Timer = $TimeBetweenLetters
@onready var ui_flicker_timer: Timer = $UIFlickerTimer
@onready var e_ui_button: TextureRect = %E
@onready var next_label: Label = %NextLabel
@export_multiline var dialogue = ""
@export var start_with_left = false
@export var left_picture: Texture2D
@export var right_picture: Texture2D
signal dialogue_ended
var dialogue_steps = []
var current_dialogue = ""
var current_dialogue_split: PackedStringArray = []
var is_dialogue_ongoing = false
var is_left_speaking = false
func _ready() -> void:
is_left_speaking = start_with_left
left_speaker.texture = left_picture
right_speaker.texture = right_picture
display_profiles()
e_ui_button.visible = false
next_label.visible = false
var steps = dialogue.split("---")
for step: String in steps:
dialogue_steps.append(step.strip_edges())
func display_profiles():
left_speaker.visible = is_left_speaking
right_speaker.visible = not is_left_speaking
func toggle_ui():
e_ui_button.visible = not e_ui_button.visible
func _process(delta: float) -> void:
if not is_dialogue_ongoing:
return
if Input.is_action_just_pressed("interact"):
if not current_dialogue_split.is_empty():
return
if dialogue_steps.is_empty():
end_dialogue()
return
else:
# toggle speakers
is_left_speaking = not is_left_speaking
display_profiles()
load_next_dialogue()
func load_next_dialogue():
var next_dialogue = dialogue_steps.pop_front()
current_dialogue = ""
current_dialogue_split = next_dialogue.split("")
func on_dialogue_started():
bubbles.visible = true
bubbles_back.visible = true
bubbles_interior.visible = true
is_dialogue_ongoing = true
time_between_letters.start()
load_next_dialogue()
func end_dialogue():
bubbles.visible = false
bubbles_back.visible = false
bubbles_interior.visible = false
e_ui_button.visible = false
next_label.visible = false
is_dialogue_ongoing = false
time_between_letters.stop()
dialogue_ended.emit()
func _on_next_letter() -> void:
if not current_dialogue_split.is_empty():
ui_flicker_timer.stop()
e_ui_button.visible = false
next_label.visible = false
var next_letter = current_dialogue_split.get(0)
current_dialogue_split.remove_at(0)
current_dialogue += next_letter
bubble_label.text = current_dialogue
else:
if next_label.visible:
return
next_label.visible = true
ui_flicker_timer.start()

View File

@ -0,0 +1 @@
uid://k2r3aatbbyie

View File

@ -0,0 +1,17 @@
[gd_scene load_steps=2 format=3 uid="uid://bmng6wjt0paof"]
[ext_resource type="Script" uid="uid://k2r3aatbbyie" path="res://dialogues/dialogue_manager.gd" id="1_6nn6f"]
[node name="DialogueManager" type="Node"]
script = ExtResource("1_6nn6f")
[node name="UIFlickerTimer" type="Timer" parent="."]
wait_time = 0.5
ignore_time_scale = true
[node name="TimeBetweenLetters" type="Timer" parent="."]
wait_time = 0.05
ignore_time_scale = true
[connection signal="timeout" from="UIFlickerTimer" to="." method="toggle_ui"]
[connection signal="timeout" from="TimeBetweenLetters" to="." method="_on_next_letter"]

12
ennemy/armored_ennemy.gd Normal file
View File

@ -0,0 +1,12 @@
extends CharacterBody2D
@onready var animated_sprite: AnimatedSprite2D = $AnimatedSprite2D
func play_anim_run():
animated_sprite.play("run")
func play_anim_idle():
animated_sprite.play("idle")
func hit():
animated_sprite.play("hit")

View File

@ -0,0 +1 @@
uid://dailpwkay2nu5

View File

@ -0,0 +1,18 @@
[gd_scene load_steps=4 format=3 uid="uid://c5ruphrd8ebuu"]
[ext_resource type="Script" uid="uid://dailpwkay2nu5" path="res://ennemy/armored_ennemy.gd" id="1_f4v0e"]
[ext_resource type="SpriteFrames" uid="uid://i6035vm5ited" path="res://player/armored_spritesheet.tres" id="1_k1sc2"]
[ext_resource type="Shape2D" uid="uid://6rhdwj5jxbxn" path="res://player/player_collision.tres" id="2_f4v0e"]
[node name="ArmoredEnnemy" type="CharacterBody2D"]
script = ExtResource("1_f4v0e")
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
position = Vector2(1, -28)
sprite_frames = ExtResource("1_k1sc2")
animation = &"jump"
autoplay = "idle"
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
position = Vector2(0, -13)
shape = ExtResource("2_f4v0e")

21
main.gd
View File

@ -1,35 +1,28 @@
extends Node2D extends Node2D
@onready var next_dialogue: MarginContainer = %NextDialogue
@onready var bubbles: HBoxContainer = $Bubbles @onready var bubbles: HBoxContainer = $Bubbles
@onready var bubbles_back: TileMapLayer = $BubblesBack @onready var bubbles_back: TileMapLayer = $BubblesBack
@onready var bubbles_interior: TileMapLayer = $BubblesInterior @onready var bubbles_interior: TileMapLayer = $BubblesInterior
var active_camera: SuperCamera var active_camera: SuperCamera
@onready var opening_cutscene: AnimationPlayer = $OpeningCutscene
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready() -> void: func _ready() -> void:
for child in get_children(): for child in get_children():
if is_instance_of(child, SuperCamera): if is_instance_of(child, SuperCamera):
child.became_active.connect(on_camera_became_active) child.became_active.connect(on_camera_became_active)
opening_cutscene.play("opening_cutscene")
func on_camera_became_active(camera: SuperCamera): func on_camera_became_active(camera: SuperCamera):
active_camera = camera active_camera = camera
func on_dialogue_started():
bubbles.visible = true
bubbles_back.visible = true
bubbles_interior.visible = true
func on_dialogue_ended():
bubbles.visible = false
bubbles_back.visible = false
bubbles_interior.visible = false
# Called every frame. 'delta' is the elapsed time since the previous frame. # Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void: func _process(delta: float) -> void:
bubbles.global_position.x = active_camera.global_position.x - 270.0
next_dialogue.global_position.x = active_camera.global_position.x + 133.0
bubbles_back.global_position.x = active_camera.global_position.x bubbles_back.global_position.x = active_camera.global_position.x
bubbles_interior.global_position.x = active_camera.global_position.x bubbles_interior.global_position.x = active_camera.global_position.x

235
main.tscn

File diff suppressed because one or more lines are too long

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 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: func _ready() -> void:
animated_sprites = [ animated_sprites = [
knight, knight,
@ -23,6 +53,12 @@ func _ready() -> void:
] ]
func _physics_process(delta: float) -> void: func _physics_process(delta: float) -> void:
play_anim()
if is_in_cutscene:
move_and_slide()
return
if not is_on_floor(): if not is_on_floor():
velocity += get_gravity() * delta * gravity_modifier 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") var direction := Input.get_axis("move_left", "move_right")
if direction > 0: if direction > 0:
for sprite in animated_sprites: look_right()
sprite.flip_h = false
if direction < 0: if direction < 0:
for sprite in animated_sprites: look_left()
sprite.flip_h = true
if velocity.x != 0: if velocity.x != 0:
for sprite in animated_sprites: play_anim_run()
sprite.play("run")
else: else:
for sprite in animated_sprites: play_anim_idle()
sprite.play("idle")
if direction: if direction:
var smoothed_speed = speed * smoothstep(0, 1, acceleration) 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) velocity.x = move_toward(velocity.x, 0, speed)
move_and_slide() 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="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="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://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"] [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_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
}]
[sub_resource type="AtlasTexture" id="AtlasTexture_g6k8r"] [sub_resource type="AtlasTexture" id="AtlasTexture_g6k8r"]
atlas = ExtResource("1_g1dw6") atlas = ExtResource("1_g1dw6")
@ -235,6 +79,50 @@ region = Rect2(1280, 0, 80, 80)
atlas = ExtResource("1_g1dw6") atlas = ExtResource("1_g1dw6")
region = Rect2(1360, 0, 80, 80) 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"] [sub_resource type="AtlasTexture" id="AtlasTexture_g4c7l"]
atlas = ExtResource("2_yw30f") atlas = ExtResource("2_yw30f")
region = Rect2(0, 0, 80, 80) region = Rect2(0, 0, 80, 80)
@ -394,6 +282,44 @@ animations = [{
}, { }, {
"frames": [{ "frames": [{
"duration": 1.0, "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") "texture": SubResource("AtlasTexture_g4c7l")
}, { }, {
"duration": 1.0, "duration": 1.0,
@ -470,10 +396,6 @@ animations = [{
"speed": 30.0 "speed": 30.0
}] }]
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_g1dw6"]
radius = 6.0
height = 26.0
[node name="Player" type="CharacterBody2D"] [node name="Player" type="CharacterBody2D"]
collision_layer = 3 collision_layer = 3
script = ExtResource("1_yw30f") script = ExtResource("1_yw30f")
@ -483,17 +405,18 @@ acceleration = 0.177
[node name="Knight" type="AnimatedSprite2D" parent="."] [node name="Knight" type="AnimatedSprite2D" parent="."]
visible = false visible = false
position = Vector2(1, -28) position = Vector2(1, -28)
sprite_frames = SubResource("SpriteFrames_7l6ig") sprite_frames = ExtResource("2_qjkh3")
animation = &"idle" animation = &"idle"
autoplay = "idle" autoplay = "idle"
[node name="RedHood" type="AnimatedSprite2D" parent="."] [node name="RedHood" type="AnimatedSprite2D" parent="."]
position = Vector2(11, -19) position = Vector2(11, -19)
sprite_frames = SubResource("SpriteFrames_mmwog") sprite_frames = SubResource("SpriteFrames_mmwog")
animation = &"idle" animation = &"jump"
autoplay = "idle" autoplay = "idle"
frame_progress = 0.749354
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
visible = false visible = false
position = Vector2(0, -13) 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

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://hk7gv0ck7odb"
path="res://.godot/imported/tilemap_black.png-b89824c7dd01aaa69ee250fc21b3012c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://ui/kenney_1-bit-input-prompts-pixel-16/Tilemap/tilemap_black.png"
dest_files=["res://.godot/imported/tilemap_black.png-b89824c7dd01aaa69ee250fc21b3012c.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dbly5mbs11hek"
path="res://.godot/imported/tilemap_black_packed.png-268181d103bcebeab5df34abeebba388.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://ui/kenney_1-bit-input-prompts-pixel-16/Tilemap/tilemap_black_packed.png"
dest_files=["res://.godot/imported/tilemap_black_packed.png-268181d103bcebeab5df34abeebba388.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c12l1hvmwmcns"
path="res://.godot/imported/tilemap_white_packed.png-58e2bcb32ac9f4de978b9824458cf8e7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://ui/kenney_1-bit-input-prompts-pixel-16/Tilemap/tilemap_white_packed.png"
dest_files=["res://.godot/imported/tilemap_white_packed.png-58e2bcb32ac9f4de978b9824458cf8e7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

BIN
ui/kenney_1-bit-input-prompts-pixel-16/tilemap_white.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://deu2palri4pji"
path="res://.godot/imported/tilemap_white.png-0f5dc5834cef2c9b1022ca2dd8356f54.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://ui/kenney_1-bit-input-prompts-pixel-16/tilemap_white.png"
dest_files=["res://.godot/imported/tilemap_white.png-0f5dc5834cef2c9b1022ca2dd8356f54.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@ -3,12 +3,12 @@
importer="font_data_dynamic" importer="font_data_dynamic"
type="FontFile" type="FontFile"
uid="uid://dgdurp0mujjjv" uid="uid://dgdurp0mujjjv"
path="res://.godot/imported/m6x11.ttf-320f9d6ef26922ee8a43f6dace8debd0.fontdata" path="res://.godot/imported/m6x11.ttf-2d62e7302f2ed70796487cab6df55017.fontdata"
[deps] [deps]
source_file="res://fonts/m6x11.ttf" source_file="res://ui/m6x11.ttf"
dest_files=["res://.godot/imported/m6x11.ttf-320f9d6ef26922ee8a43f6dace8debd0.fontdata"] dest_files=["res://.godot/imported/m6x11.ttf-2d62e7302f2ed70796487cab6df55017.fontdata"]
[params] [params]