25 lines
601 B
GDScript
25 lines
601 B
GDScript
class_name Equipment extends Node
|
|
|
|
signal unequipped(item: Item)
|
|
signal equipped(item: Item)
|
|
|
|
@export var initial_equipment: Usable
|
|
var current_item: Option = Option.none
|
|
|
|
func _ready() -> void:
|
|
current_item = Option.from(initial_equipment)
|
|
|
|
func unequip():
|
|
if current_item.is_some():
|
|
var item = current_item.unwrap()
|
|
current_item = Option.none
|
|
unequipped.emit(item)
|
|
|
|
func equip(item: Item):
|
|
unequip()
|
|
if item != null:
|
|
current_item = Option.some(item)
|
|
equipped.emit(item)
|
|
|
|
func use():
|
|
current_item.inspect(func(x: Variant) -> void: x.use())
|