working on items and inventory
This commit is contained in:
@@ -2,18 +2,87 @@ extends Control
|
||||
|
||||
|
||||
@export var items:Array = []
|
||||
@export var current_slot:int = 0
|
||||
|
||||
|
||||
@export var active_item:Dictionary = {}
|
||||
|
||||
@onready var old_slot:int = 0
|
||||
@onready var current_slot:int = 0
|
||||
@onready var slot_container = $Panel/HBoxContainer
|
||||
|
||||
signal active_item_changed(active_item)
|
||||
|
||||
func _process(_delta):
|
||||
if current_slot == 0:
|
||||
return
|
||||
if Input.is_action_just_pressed("drop_item"):
|
||||
if items[current_slot]:
|
||||
print("ITEM IN SLOT: ", items[current_slot])
|
||||
|
||||
drop_item()
|
||||
if Input.is_action_just_released("cycle_down"):
|
||||
var new_slot = current_slot + 1
|
||||
if new_slot == 6:
|
||||
new_slot = 1
|
||||
if new_slot > len(items):
|
||||
new_slot = 1
|
||||
set_active_slot(new_slot)
|
||||
if Input.is_action_just_released("cycle_up"):
|
||||
var new_slot = current_slot - 1
|
||||
if new_slot == 0:
|
||||
new_slot = len(items)
|
||||
set_active_slot(new_slot)
|
||||
|
||||
|
||||
func add_inventory_item(new_item: Dictionary):
|
||||
if len(items) == 6:
|
||||
drop_item(true)
|
||||
items.append(new_item)
|
||||
var slot = get_node("Panel/HBoxContainer/InventorySlot" + str(len(items)))
|
||||
slot.setup_slot(new_item)
|
||||
if len(items) == 1:
|
||||
set_active_slot(len(items))
|
||||
|
||||
|
||||
func drop_item(replace: bool = false):
|
||||
print("CURRENT SLOT: ", current_slot)
|
||||
var clear_slot = current_slot
|
||||
if items[clear_slot]:
|
||||
# TODO: Here we would spawn the item in
|
||||
items.remove_at(clear_slot)
|
||||
print("NEW ITEM ARRAY! ", items)
|
||||
if not replace:
|
||||
# old_slot = current_slot
|
||||
# current_slot = current_slot - 1
|
||||
# if current_slot > -1:
|
||||
# active_item = items[current_slot]
|
||||
# else:
|
||||
# active_item = {}
|
||||
var slot = get_node("$Panel/HBoxContainer/InventorySlot" + str(current_slot))
|
||||
slot.clear_slot()
|
||||
set_active_slot(clear_slot)
|
||||
|
||||
func set_active_slot(slot_index: int):
|
||||
print("CURRENT SLOT: ", current_slot, " SLOT INDEX: ", slot_index)
|
||||
if current_slot != slot_index and current_slot != 0:
|
||||
var old_slot = get_node("Panel/HBoxContainer/InventorySlot" + str(current_slot))
|
||||
old_slot.slot_deselected()
|
||||
#old_slot.slot_deselected.rpc_id(multiplayer.get_unique_id())
|
||||
if len(items) == 0:
|
||||
active_item = {}
|
||||
current_slot = 0
|
||||
else:
|
||||
var slot = get_node("Panel/HBoxContainer/InventorySlot" + str(slot_index))
|
||||
slot.slot_selected()
|
||||
#slot.slot_selected.rpc_id(multiplayer.get_unique_id())
|
||||
current_slot = slot_index
|
||||
active_item = items[current_slot - 1]
|
||||
emit_signal("active_item_changed", active_item)
|
||||
|
||||
|
||||
|
||||
|
||||
#func set_active_slot():
|
||||
# if current_slot == -1:
|
||||
# return
|
||||
# var old_slot = get_node("Panel/HBoxContainer/InventorySlot" + str(old_slot))
|
||||
# old_slot.slot_deselected.rpc_id(get_multiplayer_authority())
|
||||
# var slot = get_node("Panel/HBoxContainer/InventorySlot" + str(current_slot))
|
||||
# slot.slot_selected.rpc_id(get_multiplayer_authority())
|
||||
|
||||
|
Reference in New Issue
Block a user