90 lines
2.4 KiB
GDScript
90 lines
2.4 KiB
GDScript
extends CharacterBody3D
|
|
|
|
@onready var sprite_label: Sprite3D = $Sprite3D
|
|
@onready var label: Label = $Sprite3D/SubViewport/Label
|
|
@onready var area_3d: Area3D = $Area3D
|
|
@onready var collision_shape_3d: CollisionShape3D = $Area3D/CollisionShape3D
|
|
|
|
@onready var anim_player: AnimationPlayer = $character/AnimationPlayer
|
|
@onready var camera_zoom: Camera3D = $CameraZoom
|
|
@onready var player: CharacterBody3D = $"../../Player"
|
|
@onready var frog: CharacterBody3D = $"../../frog"
|
|
@onready var area_3d_zoom: Area3D = $Area3DZoom
|
|
|
|
@onready var indicateur_tarte: CSGTorus3D = $"../indicateur_tarte"
|
|
@onready var client_spawner: Node3D = $"../client_spawner"
|
|
|
|
@onready var fox: CharacterBody3D = $"../../Animals/Foxes/fox"
|
|
@onready var fox_2: CharacterBody3D = $"../../Animals/Foxes/fox2"
|
|
|
|
var zoom_active : bool = false
|
|
|
|
func zoom_dialog():
|
|
label.text = Sauvegarde.get_text("coco" + str( 0 ) )
|
|
camera_zoom.make_current()
|
|
zoom_active = true
|
|
anim_player.play("talking")
|
|
|
|
func _process(delta: float) -> void:
|
|
if zoom_active:
|
|
camera_zoom.position.z += 25 * delta
|
|
if camera_zoom.position.z > -4:
|
|
zoom_active = false
|
|
await get_tree().create_timer( 6 ).timeout
|
|
player.camera.make_current()
|
|
player.can_play = true
|
|
|
|
anim_player.play("Idling")
|
|
|
|
|
|
func dialog():
|
|
if !player.is_client_game_launched:
|
|
rotation.y = deg_to_rad( 180 )
|
|
anim_player.play("talking")
|
|
|
|
var p
|
|
if player.is_client_game_launched:
|
|
p = range(4, 8)
|
|
else:
|
|
p = range(1, 4)
|
|
for i in p:
|
|
label.text = Sauvegarde.get_text("coco" + str( i ) )
|
|
await get_tree().create_timer( 6 ).timeout
|
|
|
|
anim_player.play("Idling")
|
|
|
|
if !player.is_client_game_launched:
|
|
rotation.y = deg_to_rad( -90 )
|
|
anim_player.stop()
|
|
sprite_label.visible = false
|
|
player.set_dialog_mode()
|
|
player.is_client_game_launched = true
|
|
|
|
indicateur_tarte.visible = true
|
|
client_spawner.start_timer()
|
|
await get_tree().create_timer( 10 ).timeout
|
|
indicateur_tarte.visible = false
|
|
|
|
|
|
func _on_area_3d_body_entered(body: Node3D) -> void:
|
|
if body.is_in_group("player"):
|
|
sprite_label.visible = true
|
|
player.set_dialog_mode( global_position, 0)
|
|
dialog()
|
|
collision_shape_3d.disabled = true
|
|
|
|
|
|
func _on_area_3d_zoom_body_entered(body: Node3D) -> void:
|
|
if body.is_in_group("player"):
|
|
player.can_play = false
|
|
area_3d_zoom.queue_free()
|
|
zoom_dialog()
|
|
|
|
func reactivate_area3D():
|
|
collision_shape_3d.disabled = false
|
|
anim_player.stop()
|
|
fox.flee_enabled = true
|
|
fox_2.flee_enabled = true
|
|
player.can_run = true
|
|
|