* Changements de la texture des cristaux de Talion dans tous les assets 3D pour correspondre aux assets 2D * Ajout d'un évenement en fin de région, une résurgence de Talion qui décontamine et fait looter les plantes mature aux alentours * Ajout d'un path finding sur le mouvement du robot * Modification du flow des actions à la souris : ajout d'un nouveau son, d'un icône à l'emplacement de l'action * Modification du nombre et de l'ordre de mutation débloquées * Augmentation de la valeur maximale de zoom * Modification des scores à atteindre dans les premières régions * Modification de l'interface du vaisseau, laissant apparaitre une roadmap plus claire, et laissant inspecter l'inventaire actuel * Modification de l'icône d'action dans les scènes 3D * Augmentation de la zone d'écart entre les plantes, et augmentation du taux de zone fertile en conséquence * La station de recharge devient inutilisable après la fin de la région * Ajout d'une transparence lors de la sélection d'objets derrières d'autres objets * Les plantes juvéniles donneront toujours une graine si coupées * Ajout d'un bouclage sur les couleurs des mutations * Fix des hitbox des plantes pour l'inspection à la souris * Fix de plusieurs bugs sur la manipulation de l'inventaire * Ajout de nombreux screenshots d'utilisation des outils lors du tutoriel * Amélioration mineure de la traduction/wording
53 lines
1.5 KiB
GDScript
53 lines
1.5 KiB
GDScript
extends Camera2D
|
|
class_name RegionCamera
|
|
|
|
const MOVE_LERP_WEIGHT = 0.9
|
|
const ZOOM_LERP_WEIGHT = 0.05
|
|
|
|
const SHAKE_INTENSITY = 10.0
|
|
const SHAKE_SPEED = 500.0
|
|
|
|
const ZOOM_STEP = 0.1
|
|
|
|
@export var following : Node2D
|
|
@export var should_follow : bool = true
|
|
@onready var settings = GameInfo.settings_data
|
|
|
|
@export var shake_active_time = -1
|
|
var shake_noise := FastNoiseLite.new()
|
|
|
|
func _input(_e):
|
|
if Input.is_action_just_pressed("zoom_in"):
|
|
settings.zoom = settings.zoom + ZOOM_STEP
|
|
GameInfo.save_settings()
|
|
if Input.is_action_just_pressed("zoom_out"):
|
|
settings.zoom = settings.zoom - ZOOM_STEP
|
|
GameInfo.save_settings()
|
|
|
|
func _ready():
|
|
if following and should_follow:
|
|
zoom = Vector2.ONE * settings.zoom
|
|
global_position = following.global_position
|
|
|
|
func _process(delta):
|
|
if following and should_follow:
|
|
global_position = following.global_position.lerp(global_position, MOVE_LERP_WEIGHT)
|
|
|
|
zoom = zoom.lerp(Vector2.ONE * settings.zoom, MOVE_LERP_WEIGHT)
|
|
|
|
if shake_active_time > 0.:
|
|
print(shake_noise.get_noise_2d(shake_active_time * SHAKE_SPEED, 0) * SHAKE_INTENSITY)
|
|
shake_active_time -= delta
|
|
|
|
offset = Vector2(
|
|
shake_noise.get_noise_2d(shake_active_time * SHAKE_SPEED, 0) * SHAKE_INTENSITY,
|
|
shake_noise.get_noise_2d(0, shake_active_time * SHAKE_SPEED) * SHAKE_INTENSITY,
|
|
)
|
|
else :
|
|
offset = lerp(offset, Vector2.ZERO, 10.5 * delta)
|
|
|
|
func shake(time := 5):
|
|
shake_noise.seed = randi()
|
|
|
|
shake_active_time = time
|