|
@@ -1,5 +1,7 @@
|
|
|
extends Node2D
|
|
|
|
|
|
+signal get_firing
|
|
|
+
|
|
|
enum State {
|
|
|
READY,
|
|
|
FIRING,
|
|
@@ -10,16 +12,26 @@ const BULLET_SPEED = 200.0
|
|
|
|
|
|
var _ballScene = preload("res://scenes/Ball.tscn")
|
|
|
|
|
|
+var nbAmmo = 5
|
|
|
+
|
|
|
onready var target = $Target
|
|
|
onready var source = $Source
|
|
|
+onready var shootDelay = $ShootDelay
|
|
|
+
|
|
|
+onready var current_state = State.READY
|
|
|
|
|
|
-onready var current_state = State.WAITING
|
|
|
|
|
|
func _input(event):
|
|
|
if event is InputEventMouseButton and event.is_pressed() :
|
|
|
+ trigger(event.position)
|
|
|
+
|
|
|
+
|
|
|
+func trigger(aim:Vector2):
|
|
|
+ if (current_state == State.READY):
|
|
|
current_state = State.FIRING
|
|
|
- target.position = event.position
|
|
|
- shoot()
|
|
|
+ target.position = aim
|
|
|
+ emit_signal("get_firing")
|
|
|
+
|
|
|
|
|
|
func shoot():
|
|
|
var bullet = _ballScene.instance()
|
|
@@ -27,3 +39,16 @@ func shoot():
|
|
|
bullet.linear_velocity = (target.position - source.position).normalized()
|
|
|
bullet.linear_velocity *= BULLET_SPEED
|
|
|
add_child(bullet)
|
|
|
+
|
|
|
+
|
|
|
+func _on_ShootDelay_timeout():
|
|
|
+ shoot()
|
|
|
+ nbAmmo -= 1
|
|
|
+ if (nbAmmo == 0):
|
|
|
+ current_state = State.WAITING
|
|
|
+ else:
|
|
|
+ emit_signal("get_firing")
|
|
|
+
|
|
|
+
|
|
|
+func _on_Launcher_get_firing():
|
|
|
+ shootDelay.start()
|