123 lines
3.7 KiB
GDScript
123 lines
3.7 KiB
GDScript
extends Node3D
|
|
|
|
@onready var label = $CanvasLayer/Panel/Label
|
|
@onready var player = $"../Player"
|
|
@onready var balloons = $"../Objects/Balloons"
|
|
|
|
var current_step = 0
|
|
var time_start = 0.0
|
|
var current_time_passed = 0.0
|
|
|
|
# Track which directions were used
|
|
var walked = {
|
|
"ui_left": false,
|
|
"ui_right": false,
|
|
"ui_up": false,
|
|
"ui_down": false
|
|
}
|
|
# Track which directions were used
|
|
var turned = {
|
|
"cam_right": false,
|
|
"cam_left": false
|
|
}
|
|
|
|
var steps = [
|
|
"Nutzen Sie die Pfeiltasten (oder a,s,d,w), um einmal in alle Richtungen zu laufen.
|
|
Sie können sie bei längeren Strecken auch gedrückt halten.",
|
|
"Mit der Leertaste können Sie springen.",
|
|
"Durch Bewegen der Maus lässt sich die Kamera steuern. Mit [r] können Sie zwischen dem Kamera und Wurfmodus wechseln.",
|
|
"Im Wurfmodus können Sie mit der Maus zielen und durch Klicken Bälle werfen (Sie sollten dabei ein Fadenkreuz sehen).
|
|
Versuchen Sie, die Ballons zum platzen zu bringen.",
|
|
"Um Objekte, wie z.B. die blauen Blöcke, aufzuheben, nutzen Sie die Taste [e] (sobald Sie nah genug davor stehen)",
|
|
"Ablegen geht mit [q]",
|
|
"Um mit anderen Lebewesen zu reden, drücken Sie [Enter] oder [t]."
|
|
]
|
|
|
|
func _ready():
|
|
time_start = Time.get_unix_time_from_system()
|
|
update_label()
|
|
$CanvasLayer/SubViewportContainer/SubViewport/helper/AnimationPlayer.play('happy')
|
|
|
|
|
|
func _process(delta):
|
|
check_time()
|
|
match current_step:
|
|
0:
|
|
check_walk_directions()
|
|
1:
|
|
if Input.is_action_just_pressed("ui_accept"):
|
|
#$"../Objects/Balloons".position.y = 6.0
|
|
next_step()
|
|
2:
|
|
if Input.is_action_just_pressed("throw"):
|
|
next_step()
|
|
3:
|
|
if balloons.get_child_count() < 3:
|
|
next_step()
|
|
4:
|
|
if Input.is_action_just_pressed("grab") and player.grabbed_item:
|
|
next_step()
|
|
5:
|
|
if Input.is_action_just_pressed("drop"):
|
|
next_step()
|
|
6:
|
|
if player.dialogueActive:
|
|
next_step()
|
|
|
|
|
|
func check_walk_directions():
|
|
for action in walked.keys():
|
|
if Input.is_action_just_pressed(action):
|
|
walked[action] = true
|
|
|
|
if walked.values().all(func(v): return v):
|
|
$"../Objects/Bridges/walls_tutorial/walls_to_bridge".queue_free()
|
|
$"../Objects/Chip0/block".position.y = 0.0
|
|
$"../Objects/arrows/help1".position.y = 4.892
|
|
next_step()
|
|
|
|
|
|
func check_camera_turned():
|
|
for action in turned.keys():
|
|
if Input.is_action_just_pressed(action):
|
|
turned[action] = true
|
|
|
|
if turned.values().all(func(v): return v):
|
|
next_step()
|
|
|
|
func next_step():
|
|
current_step += 1
|
|
time_start = Time.get_unix_time_from_system()
|
|
$AnimationPlayer.play('RESET')
|
|
$CanvasLayer/Panel.get_theme_stylebox('panel').border_color = Color('cccccc')
|
|
$CanvasLayer/Panel.get_theme_stylebox('panel').border_width_left = 5
|
|
$CanvasLayer/Panel.get_theme_stylebox('panel').border_width_right = 5
|
|
$CanvasLayer/Panel.get_theme_stylebox('panel').border_width_top = 5
|
|
$CanvasLayer/Panel.get_theme_stylebox('panel').border_width_bottom = 5
|
|
$CanvasLayer/Panel.size.y = 150
|
|
update_label()
|
|
|
|
|
|
func update_label():
|
|
if current_step < steps.size():
|
|
label.text = steps[current_step]
|
|
await get_tree().process_frame
|
|
var text_size = label.get_minimum_size()
|
|
$CanvasLayer/Panel.custom_minimum_size = text_size + Vector2(40, 40)
|
|
else:
|
|
label.text = ""
|
|
queue_free()
|
|
|
|
func check_time() -> void:
|
|
current_time_passed = Time.get_unix_time_from_system() - time_start
|
|
if current_time_passed > 15.0:
|
|
pulse_panel()
|
|
|
|
func pulse_panel() -> void:
|
|
$CanvasLayer/Panel.get_theme_stylebox('panel').border_color = Color('30e7f2')
|
|
$CanvasLayer/Panel.get_theme_stylebox('panel').border_width_left = 8
|
|
$CanvasLayer/Panel.get_theme_stylebox('panel').border_width_right = 8
|
|
$CanvasLayer/Panel.get_theme_stylebox('panel').border_width_top = 8
|
|
$CanvasLayer/Panel.get_theme_stylebox('panel').border_width_bottom = 8
|
|
$AnimationPlayer.play('pulse')
|