feat: final cutscene and full game loop
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 2m26s

This commit is contained in:
2025-08-03 11:25:21 +02:00
parent 3e0f1c99d5
commit 2d44a2da05
17 changed files with 694 additions and 199 deletions

View File

@ -14,6 +14,7 @@ var gravity_modifier = 1
@onready var hitting: Timer = $Hitting
@onready var hitbox: Area2D = $Hitbox
@onready var armor: AnimatedSprite2D = $Armor
@onready var sword: AnimatedSprite2D = $Sword
@onready var damageable: Damageable = $Damageable
@onready var shield: AnimatedSprite2D = $Shield
@ -33,15 +34,19 @@ func play_anim():
func play_anim_run():
current_animation = "run"
current_sprite.play("run")
func play_anim_idle():
current_animation = "idle"
current_sprite.play("idle")
func play_anim_jump():
current_animation = "jump"
current_animation = "walk"
current_sprite.play("walk")
func play_anim_dance():
current_animation = "dance"
current_sprite.play("dance")
func set_in_cutscene():
is_in_cutscene = true
@ -60,11 +65,11 @@ func _ready() -> void:
current_sprite = base
func _physics_process(delta: float) -> void:
play_anim()
if is_in_cutscene:
velocity.x = move_toward(velocity.x, 0, speed)
move_and_slide()
return
play_anim()
if is_hitting:
current_animation = "hit"
@ -77,7 +82,11 @@ func _physics_process(delta: float) -> void:
var direction := Input.get_axis("move_left", "move_right")
damageable.set_active(has_shield and direction != 0)
if(has_shield and not has_sword and direction == 0):
damageable.set_active(false)
else:
damageable.set_active(true)
if direction > 0 and is_on_floor():
look_right()
if direction < 0 and is_on_floor():
@ -107,13 +116,12 @@ func _physics_process(delta: float) -> void:
func hit():
is_hitting = true
hitting.start()
hitbox.monitorable = true
hitbox.monitoring = true
func _on_hitting_timeout() -> void:
is_hitting = false
hitbox.monitorable = false
hitbox.monitoring = false
damageable.set_active(true)
func _on_dialogue_manager_dialogue_ended() -> void:
set_in_play()
@ -139,3 +147,17 @@ func _on_red_hood_sword_dialogue_dialogue_ended() -> void:
current_sprite.play("idle")
current_sprite.visible = true
has_sword = true
func _on_put_on_armor() -> void:
current_sprite.visible = false
current_sprite = armor
current_sprite.play("power_up")
current_sprite.visible = true
has_armor = true
func _on_final_armor_dialogue_ended() -> void:
set_in_play()
current_sprite.play("idle")
func _on_trigger_final_dialogue_body_entered(body: Node2D) -> void:
set_in_cutscene()