This commit is contained in:
2026-07-31 18:18:18 +02:00
commit a061aff066
137 changed files with 3491 additions and 0 deletions
+11
View File
@@ -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))
+1
View File
@@ -0,0 +1 @@
uid://1ihmscldye3u
+83
View File
@@ -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")
+1
View File
@@ -0,0 +1 @@
uid://de33ywim0v35a
+39
View File
@@ -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" )
+1
View File
@@ -0,0 +1 @@
uid://bw3lylyfu7lds
+89
View File
@@ -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()
+1
View File
@@ -0,0 +1 @@
uid://dcfljv6govi7a
+15
View File
@@ -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]
+1
View File
@@ -0,0 +1 @@
uid://cu2fmy0ptf48t
+12
View File
@@ -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 )
+1
View File
@@ -0,0 +1 @@
uid://d2qmolg6y1gq2