Untested PickupableItem
This commit is contained in:
parent
a2c062e8bb
commit
63e87e86d5
19 changed files with 200 additions and 17 deletions
|
@ -1,5 +1,7 @@
|
|||
extends CharacterBody3D
|
||||
|
||||
class_name Player
|
||||
|
||||
@export var speed = 100.0
|
||||
@export var fall_acceleration = 75.0
|
||||
@export var vertical_sensivity = 0.005
|
||||
|
|
|
@ -27,3 +27,13 @@ func select_slot(index: int):
|
|||
current_slot = slots[index]
|
||||
current_weapon = current_slot.weapon
|
||||
slot_selected.emit()
|
||||
|
||||
func first_free_slot() -> WeaponSlot:
|
||||
for slot in slots:
|
||||
if not slot.has_weapon:
|
||||
return slot
|
||||
return null
|
||||
|
||||
func refresh_current_slot() -> void:
|
||||
var index = slots.find(current_slot)
|
||||
select_slot(index)
|
||||
|
|
|
@ -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