# Undercooked - a game about cooking # Copyright 2024 tpart # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, version 3 of the License only. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . # extends Node3D class_name Character const WALK_ANIM_STRENGTH := 0.05 const WALK_ANIM_SPEED:= 15.0 var walking := false var holding := false var boosting := false var was_boosting := boosting var current_animation := "idle" @onready var hand_animations = $HandAnimations @onready var main = $Main @onready var default_height = main.position.y @onready var main_height_target = default_height @onready var walking_particles = $Walking @onready var boosting_particles = $Boosting @onready var hairstyles = { "Brown": $Main/Head/Hair, "Blond": $Main/Head/Hair2, "E. Parsley": $Main/Head/Hair3 } func _ready(): play_animation("idle") var t := 0.0 func _process(delta): if walking: t += delta main_height_target = default_height + sin(t * WALK_ANIM_SPEED) * WALK_ANIM_STRENGTH else: t = 0 main.position.y = main_height_target # Update animation: var next_animation: String if holding: next_animation = "hold" elif walking: next_animation = "walk" else: next_animation = "idle" walking_particles.emitting = walking boosting_particles.emitting = boosting and walking and not was_boosting was_boosting = boosting and walking if current_animation != next_animation: play_animation(next_animation) func select_hairstyle(id: int): if id < 0: id *= -1 # TODO: Select customer character id = id % hairstyles.keys().size() var target = hairstyles.keys()[id] for k in hairstyles.keys(): if k == target: hairstyles[k].show() else: hairstyles[k].hide() func play_animation(name_: String): current_animation = name_ hand_animations.play(name_) func _on_hand_animations_animation_finished(_name): hand_animations.play(current_animation)