Untested PickupableItem
This commit is contained in:
parent
a2c062e8bb
commit
63e87e86d5
19 changed files with 200 additions and 17 deletions
|
@ -5,6 +5,17 @@ class_name WeaponSlot
|
|||
var has_weapon = false
|
||||
var weapon: Weapon
|
||||
|
||||
## Contains data about swapped weapons
|
||||
class WeaponSetData:
|
||||
## New Weapon node, may be null
|
||||
var new_weapon: Weapon
|
||||
## Old weapon id, may be empty string
|
||||
var old_weapon: StringName
|
||||
|
||||
func _init(_new_weapon: Weapon, _old_weapon: StringName):
|
||||
new_weapon = _new_weapon
|
||||
old_weapon = _old_weapon
|
||||
|
||||
func _ready():
|
||||
has_weapon = get_child_count() > 0
|
||||
|
||||
|
@ -12,3 +23,20 @@ func _ready():
|
|||
var child = get_child(0)
|
||||
assert(child is Weapon)
|
||||
weapon = child as Weapon
|
||||
|
||||
func set_weapon(new_weapon: PackedScene) -> WeaponSetData:
|
||||
var weapon_inst = null
|
||||
if new_weapon != null:
|
||||
weapon_inst = new_weapon.instantiate() as Weapon
|
||||
add_child(weapon_inst)
|
||||
|
||||
var old_weapon_id = drop_weapon()
|
||||
return WeaponSetData.new(weapon_inst, old_weapon_id)
|
||||
|
||||
func drop_weapon() -> StringName:
|
||||
var id = ""
|
||||
if has_weapon:
|
||||
id = weapon.id
|
||||
weapon.queue_free()
|
||||
_ready()
|
||||
return id
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue