38 lines
1,020 B
GDScript
38 lines
1,020 B
GDScript
extends RigidBody2D
|
|
|
|
class_name Hull
|
|
|
|
## Shortcut to get_parent()
|
|
@onready var ship: Ship = 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()
|
|
|
|
## 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
|