cosmic/scripts/Ship/hull.gd

47 lines
1.3 KiB
GDScript

extends RigidBody2D
class_name Hull
## Shortcut to get_parent().get_parent()
@onready var ship: Ship = get_parent().get_parent()
## Hull ID to use with the Game.get_module func
@export var id: String = "hull"
## Max HP of the hull
@export var max_hp: float = 30.0
## Maximum amount of ammunition to be carried
@export var max_ammunition: Dictionary = {
"n/a": 0, # don't change this k thx
"Laser Energy": 100.0,
"Rockets": 10,
}
## Current ammunition. Change this with set_ammunition
@onready var ammunition: Dictionary = max_ammunition
## Current HP of the hull. If it reaches zero, it emits parent's destroyed signal
@onready var hp: float = max_hp:
set(new_hp):
if new_hp > 0:
hp = new_hp
else:
ship.destroyed.emit()
## Length of linear_velocity vector
var scalar_velocity: float = 0.0
## Adds amount to ammunition, returns true if it was successful
func add_ammunition(which: String, value: float) -> bool:
if ammunition[which] + value < 0:
return false
ammunition[which] += value;
if ammunition[which] > max_ammunition[which]:
ammunition[which] = max_ammunition[which]
return true
## Update ship's position and rotation
func _physics_process(_delta):
ship.position = position
ship.rotation = rotation
scalar_velocity = linear_velocity.length()