Files
2026-07-09 08:18:48 +02:00

30 lines
769 B
GDScript

class_name WeaponSlot
extends Node3D
@export var allowed_sizes: Array[WeaponDef.Size] = [WeaponDef.Size.MEDIUM]
@export var allowed_types: Array[WeaponDef.Type] = [WeaponDef.Type.BALLISTIC]
var weapon: Weapon = null # currently mounted, if any
func can_mount(def: WeaponDef) -> bool:
return def != null and def.weapon_scene != null \
and def.size in allowed_sizes and def.type in allowed_types
func mount(def: WeaponDef) -> bool:
if not can_mount(def):
push_warning("%s can't mount %s" % [
name,
def.display_name if def != null else "<null def>"
])
return false
unmount()
weapon = def.weapon_scene.instantiate()
weapon.def = def
add_child(weapon)
return true
func unmount() -> void:
if weapon != null:
weapon.queue_free()
weapon = null