spacegame/parts/weapons/canon.gd
2025-05-03 18:46:56 +02:00

35 lines
984 B
GDScript

extends Weapon
@export var bullet: PackedScene
@export var speed: float = 100.0
@export var knockback: float = 30.0
@export var energy_cost: float = 0.5
@onready var flash: Flash = %flash
@export var sprite_scale: Vector2
var can_shoot: bool = true
func _process(_delta: float) -> void:
player.parts.sprite_scale = sprite_scale
func try_start_shooting() -> void:
if not can_shoot or $animations.is_playing():
return
$animations.play("shoot")
func do_shoot() -> void:
if not can_shoot:
return
if player.parts.reactor.try_drain(energy_cost):
var instance : Bullet = bullet.instantiate() as Bullet
player.get_parent().add_child(instance)
instance.global_position = global_position
instance.apply_central_impulse(Vector2.UP.rotated(global_rotation) * speed)
instance.player = player
player.apply_central_impulse(Vector2.DOWN.rotated(global_rotation) * knockback)
flash.flash()
can_shoot = false
await get_tree().create_timer(0.5).timeout
can_shoot = true