init
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
extends Camera3D
|
||||
|
||||
@onready var player: CharacterBody3D = $".."
|
||||
|
||||
var sensitivity = 0.008
|
||||
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
if event is InputEventMouseMotion and not get_tree().paused:
|
||||
player.rotate_y(-event.relative.x * sensitivity)
|
||||
player.camera_pov.rotate_x(-event.relative.y * sensitivity)
|
||||
player.camera_pov.rotation.x=clamp(player.camera_pov.rotation.x,deg_to_rad(-90),deg_to_rad(90))
|
||||
@@ -0,0 +1 @@
|
||||
uid://1ihmscldye3u
|
||||
@@ -0,0 +1,83 @@
|
||||
extends Node3D
|
||||
|
||||
@onready var camera: Camera3D = $Camera3D
|
||||
|
||||
# BOUTONS
|
||||
@onready var start: Button = $HBoxContainer/Start
|
||||
@onready var quit: Button = $HBoxContainer/Quit
|
||||
@onready var credit: Button = $HBoxContainer/Credit
|
||||
|
||||
@onready var fr: TextureButton = $HBoxContainer/fr
|
||||
@onready var en: TextureButton = $HBoxContainer/en
|
||||
@onready var screen: Button = $HBoxContainer2/Screen
|
||||
|
||||
@onready var credit_label: Label = $Sprite3D/SubViewport/credit_label
|
||||
|
||||
var but_credit_exist : bool = true
|
||||
|
||||
var cible_rot_y
|
||||
var cible_rot_x
|
||||
|
||||
func _ready() -> void:
|
||||
Sauvegarde.is_in_menu = true
|
||||
|
||||
load_lang(Sauvegarde.language)
|
||||
if Sauvegarde.language == "en":
|
||||
en.texture_normal = preload("uid://bdcehsogmfiv2")
|
||||
fr.texture_normal = preload("uid://dusujvur4igj4")
|
||||
screen.text = Sauvegarde.get_text("window_screen")
|
||||
|
||||
cible_rot_y = deg_to_rad( 147.8 )
|
||||
cible_rot_x = deg_to_rad( -6.1 )
|
||||
|
||||
|
||||
func _on_start_pressed() -> void:
|
||||
get_tree().change_scene_to_file( "res://scenes/main.scn" )
|
||||
Sauvegarde.is_in_menu = false
|
||||
|
||||
func _on_quit_pressed() -> void:
|
||||
get_tree().quit()
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
camera.rotation.y = lerp_angle(camera.rotation.y, cible_rot_y, 3 * delta)
|
||||
camera.rotation.x = lerp_angle(camera.rotation.x, cible_rot_x, 3 * delta)
|
||||
|
||||
func _on_credit_pressed() -> void:
|
||||
cible_rot_y = deg_to_rad(100)
|
||||
cible_rot_x = deg_to_rad(16)
|
||||
credit.queue_free()
|
||||
but_credit_exist = false
|
||||
|
||||
|
||||
func _on_fr_pressed() -> void:
|
||||
fr.texture_normal = preload("uid://cdnkgbmh886ry")
|
||||
en.texture_normal = preload("uid://mpo1px8jnlyq")
|
||||
|
||||
load_lang("fr")
|
||||
|
||||
func _on_en_pressed() -> void:
|
||||
en.texture_normal = preload("uid://bdcehsogmfiv2")
|
||||
fr.texture_normal = preload("uid://dusujvur4igj4")
|
||||
|
||||
load_lang("en")
|
||||
|
||||
func _on_screen_pressed() -> void:
|
||||
if get_window().mode == Window.MODE_FULLSCREEN:
|
||||
get_window().mode = Window.MODE_WINDOWED
|
||||
screen.text = Sauvegarde.get_text("full_screen")
|
||||
else:
|
||||
get_window().mode = Window.MODE_FULLSCREEN
|
||||
screen.text = Sauvegarde.get_text("window_screen")
|
||||
|
||||
func load_lang(l):
|
||||
Sauvegarde.language = l
|
||||
start.text = Sauvegarde.get_text("start")
|
||||
quit.text = Sauvegarde.get_text("quit")
|
||||
if but_credit_exist :
|
||||
credit.text = Sauvegarde.get_text("credit")
|
||||
if get_window().mode == Window.MODE_FULLSCREEN:
|
||||
screen.text = Sauvegarde.get_text("window_screen")
|
||||
else:
|
||||
screen.text = Sauvegarde.get_text("full_screen")
|
||||
|
||||
credit_label.text = Sauvegarde.get_text("credit_detail")
|
||||
@@ -0,0 +1 @@
|
||||
uid://de33ywim0v35a
|
||||
@@ -0,0 +1,39 @@
|
||||
extends Control
|
||||
|
||||
# Buttons
|
||||
@onready var resume_but: Button = $ColorRect/PanelContainer/VBoxContainer/Resume
|
||||
@onready var restart: Button = $ColorRect/PanelContainer/VBoxContainer/Restart
|
||||
@onready var menu: Button = $ColorRect/PanelContainer/VBoxContainer/Menu
|
||||
|
||||
func _ready() -> void:
|
||||
hide()
|
||||
$AnimationPlayer.play("RESET")
|
||||
|
||||
resume_but.text = Sauvegarde.get_text("resume")
|
||||
restart.text = Sauvegarde.get_text("restart")
|
||||
menu.text = Sauvegarde.get_text("menu")
|
||||
|
||||
|
||||
func resume():
|
||||
get_tree().paused = false
|
||||
hide()
|
||||
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
|
||||
$AnimationPlayer.play_backwards("blur")
|
||||
|
||||
func pause():
|
||||
get_tree().paused = true
|
||||
show()
|
||||
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
|
||||
$AnimationPlayer.play("blur")
|
||||
|
||||
func _on_resume_pressed() -> void:
|
||||
resume()
|
||||
|
||||
func _on_restart_pressed() -> void:
|
||||
resume()
|
||||
get_tree().reload_current_scene()
|
||||
|
||||
|
||||
func _on_menu_pressed() -> void:
|
||||
get_tree().paused = false
|
||||
get_tree().change_scene_to_file( "res://scenes/menu.tscn" )
|
||||
@@ -0,0 +1 @@
|
||||
uid://bw3lylyfu7lds
|
||||
@@ -0,0 +1,89 @@
|
||||
extends CharacterBody3D
|
||||
|
||||
|
||||
var SPEED = 20
|
||||
var JUMP_VELOCITY = 8
|
||||
|
||||
@onready var arm: Node3D = $arm
|
||||
@onready var model: Node3D = $model
|
||||
|
||||
# GESTION CAMERA --------------------------
|
||||
@onready var spring_arm: SpringArm3D = $arm/SpringArm3D
|
||||
@onready var camera: Camera3D = $arm/SpringArm3D/Camera3D
|
||||
@onready var camera_pov: Camera3D = $Camera3D_POV
|
||||
var third_person : bool = true
|
||||
|
||||
@onready var sprite_tuto: Sprite3D = $SpriteTuto
|
||||
@onready var label_tuto: Label = $SpriteTuto/SubViewport/Label
|
||||
|
||||
@onready var audio_footstep: AudioStreamPlayer3D = $Audio_Footstep
|
||||
var footstep_sounds: Array[AudioStream] = [
|
||||
preload("res://assets/audio/footsteps/dirt_step_1.wav"),
|
||||
preload("res://assets/audio/footsteps/dirt_step_2.wav"),
|
||||
preload("res://assets/audio/footsteps/dirt_step_3.wav"),
|
||||
preload("res://assets/audio/footsteps/dirt_step_4.wav")
|
||||
]
|
||||
var footstep_timer: float = 0.0
|
||||
const FOOTSTEP_DELAY: float = 0.15
|
||||
|
||||
@onready var pause: Control = $pause
|
||||
|
||||
var can_play : bool = true
|
||||
|
||||
|
||||
func _ready():
|
||||
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
|
||||
label_tuto.text = Sauvegarde.get_text("tuto_1")
|
||||
|
||||
if third_person:
|
||||
camera.make_current()
|
||||
else:
|
||||
camera_pov.make_current()
|
||||
model.visible = false
|
||||
|
||||
func _input(_event):
|
||||
if Input.is_action_just_pressed("ui_cancel"):
|
||||
if !get_tree().paused:
|
||||
pause.pause()
|
||||
else:
|
||||
pause.resume()
|
||||
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
# Add the gravity.
|
||||
if not is_on_floor():
|
||||
velocity += get_gravity() * delta
|
||||
|
||||
# Handle jump
|
||||
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
|
||||
velocity.y = JUMP_VELOCITY
|
||||
|
||||
# Get the input direction and handle the movement/deceleration.
|
||||
var input_dir := Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")
|
||||
var direction := (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
|
||||
if direction:
|
||||
velocity.x = direction.x * SPEED
|
||||
velocity.z = direction.z * SPEED
|
||||
else:
|
||||
velocity.x = move_toward(velocity.x, 0, SPEED)
|
||||
velocity.z = move_toward(velocity.z, 0, SPEED)
|
||||
|
||||
# footstep sounds
|
||||
if is_on_floor() and Vector2(velocity.x, velocity.z).length() > 0.5:
|
||||
footstep_timer -= delta
|
||||
if footstep_timer <= 0.0:
|
||||
play_random_footstep()
|
||||
footstep_timer = FOOTSTEP_DELAY
|
||||
else:
|
||||
footstep_timer = 0.0
|
||||
|
||||
if can_play:
|
||||
move_and_slide()
|
||||
|
||||
|
||||
func play_random_footstep( pitch=[0.85, 1.15] ) -> void:
|
||||
var random_index = randi() % footstep_sounds.size()
|
||||
audio_footstep.stream = footstep_sounds[random_index]
|
||||
|
||||
audio_footstep.pitch_scale = randf_range( pitch[0], pitch[1] )
|
||||
audio_footstep.play()
|
||||
@@ -0,0 +1 @@
|
||||
uid://dcfljv6govi7a
|
||||
@@ -0,0 +1,15 @@
|
||||
extends Node
|
||||
var is_in_menu : bool = false
|
||||
|
||||
var language = "fr"
|
||||
|
||||
var trad
|
||||
func _ready() -> void:
|
||||
var file = FileAccess.open("res://lang.json", FileAccess.READ)
|
||||
var json_text = file.get_as_text()
|
||||
var json = JSON.new()
|
||||
var error = json.parse(json_text)
|
||||
trad = json.data
|
||||
|
||||
func get_text(key):
|
||||
return trad[language][key]
|
||||
@@ -0,0 +1 @@
|
||||
uid://cu2fmy0ptf48t
|
||||
@@ -0,0 +1,12 @@
|
||||
extends SpringArm3D
|
||||
|
||||
@onready var player: CharacterBody3D = $"../.."
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
if player.third_person and event is InputEventMouseMotion :
|
||||
player.rotation.y -= event.relative.x * 0.005
|
||||
player.rotation.y = wrapf( player.rotation.y, 0.0, TAU )
|
||||
|
||||
rotation.x -= event.relative.y * 0.005
|
||||
rotation.x = clamp( rotation.x, -PI/2, PI/4 )
|
||||
@@ -0,0 +1 @@
|
||||
uid://d2qmolg6y1gq2
|
||||
Reference in New Issue
Block a user