103 lines
3.4 KiB
GDScript
103 lines
3.4 KiB
GDScript
extends Node
|
|
|
|
export (PackedScene) var Ennemi
|
|
export (PackedScene) var Coin
|
|
var score
|
|
var vie = 3
|
|
var content_music
|
|
var content
|
|
|
|
func _ready():
|
|
var file = File.new()
|
|
var difficulty = "0.2"
|
|
file.open("res://settings_difficulty.txt", File.WRITE)
|
|
file.store_string(difficulty)
|
|
file.close()
|
|
$TimerEnnemi.set_wait_time(float(difficulty))
|
|
file.open("res://settings_music.txt", File.WRITE)
|
|
file.store_string("on")
|
|
file.close()
|
|
randomize()
|
|
|
|
func perdu():
|
|
$TimerScore.stop()
|
|
$TimerEnnemi.stop()
|
|
$TimerCoin.stop()
|
|
get_tree().call_group("ennemis", "queue_free") # supprime tous les ennemis restants dans le groupe "ennemis"
|
|
get_tree().call_group("coins", "queue_free") # pareil pour les pieces
|
|
$AudioStreamPlayer.stop()
|
|
if content_music == "on":
|
|
$AudioGameOver.play()
|
|
$Menu.show_partie_perdue()
|
|
$TextureRect.texture = load("res://imgs/background.png")
|
|
|
|
func nouvelle_partie():
|
|
score = 0
|
|
$Joueur.start($PositionDebut.position)
|
|
$TimerDebut.start()
|
|
vie = 3
|
|
$Vie.update_health(vie)
|
|
$Menu.update_score(score)
|
|
var file_music = File.new()
|
|
file_music.open("res://settings_music.txt", File.READ)
|
|
content_music = file_music.get_as_text()
|
|
file_music.close()
|
|
if content_music == "on":
|
|
$AudioStreamPlayer.play()
|
|
$AudioGameOver.stop()
|
|
$Menu.show_message("Des ennemis arrivent...")
|
|
$TextureRect.texture = load("res://imgs/background_ig.png")
|
|
# lecture des paramètres
|
|
|
|
var file = File.new()
|
|
file.open("res://settings_difficulty.txt", File.READ)
|
|
content = file.get_as_text()
|
|
file.close()
|
|
$TimerEnnemi.set_wait_time(float(content))
|
|
|
|
func _on_TimerEnnemi_timeout():
|
|
$Path2D/SpawnEnnemi.offset = randi() # Choisi un endroit aléatoire sur Path2D (autour de l'écran)
|
|
var ennemi = Ennemi.instance() # créer une instance d'un ennemi
|
|
add_child(ennemi) # ajout de l'ennemi à la scène
|
|
var direction = $Path2D/SpawnEnnemi.rotation + PI / 2 # direction de l'ennemi perpendiculaire à sa trajectoire
|
|
ennemi.position = $Path2D/SpawnEnnemi.position # fait spawn l'ennemi à l'endroit aléatoire
|
|
direction += rand_range(-deg2rad(45), deg2rad(45)) # ajout d'un aléatoire de 90° dans la direction
|
|
if ennemi.type_ennemi == "oeil":
|
|
ennemi.rotation = direction # l'ennemi regarde devant lui
|
|
ennemi.linear_velocity = Vector2(rand_range(ennemi.min_vitesse, ennemi.max_vitesse), 0) # vitesse de l'ennemi
|
|
ennemi.linear_velocity = ennemi.linear_velocity.rotated(direction) # direction de l'ennemi
|
|
|
|
func _on_TimerDebut_timeout(): # démarre les autres timers
|
|
$TimerEnnemi.start()
|
|
$TimerCoin.start()
|
|
$TimerScore.start()
|
|
|
|
func _on_TimerCoin_timeout():
|
|
$Path2D/SpawnEnnemi.offset = randi()
|
|
var coin = Coin.instance()
|
|
add_child(coin)
|
|
var direction = $Path2D/SpawnEnnemi.rotation + PI / 2
|
|
coin.position = $Path2D/SpawnEnnemi.position
|
|
direction += rand_range(-deg2rad(45), deg2rad(45))
|
|
coin.linear_velocity = Vector2(rand_range(coin.min_vitesse, coin.max_vitesse), 0)
|
|
coin.linear_velocity = coin.linear_velocity.rotated(direction)
|
|
|
|
func _on_TimerScore_timeout(): # augmente le score de 1 toutes les secondes (correspond au wait time)
|
|
score += 1
|
|
$Menu.update_score(score)
|
|
|
|
func piece():
|
|
score += 5
|
|
if content_music == "on":
|
|
$AudioPiece.play()
|
|
$Menu.update_score(score)
|
|
get_tree().call_group("coins", "queue_free") # supprime les pieces
|
|
|
|
func _on_Joueur_touche():
|
|
if not $TimerIsostasieVie.time_left > 0:
|
|
vie -= 1
|
|
$Vie.update_health(vie)
|
|
$TimerIsostasieVie.start()
|
|
|
|
func _on_Menu_musicoff():
|
|
$AudioGameOver.stop()
|