1
0

Initial commit

This commit is contained in:
FoxSpellCaster
2025-04-16 18:12:10 -04:00
commit 99bea1a1f0
53 changed files with 4804 additions and 0 deletions

81
Inventory/Inventory.gd Normal file
View File

@@ -0,0 +1,81 @@
class_name Inventory
extends Node
var slots : Array[InventorySlot]
@onready var window : Panel = get_node("InventoryWindow")
@onready var info_text : Label = get_node("InventoryWindow/InfoText")
@export var starter_items : Array[Item]
func _ready() -> void:
toggle_window(false)
for child in get_node("InventoryWindow/SlotContainer").get_children():
slots.append(child)
child.set_item(null)
child.inventory = self
for item in starter_items:
add_item(item)
func _process(delta: float) -> void:
if Input.is_action_just_pressed("inventory"):
toggle_window(!window.visible)
func toggle_window(open : bool):
window.visible = open
if open:
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
else:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
func on_give_player_item (item : Item, amount : int):
for i in range(amount):
add_item(item)
func add_item (item : Item):
var slot = get_slot_to_add(item)
if slot == null:
return
if slot.item == null:
slot.set_item(item)
elif slot.item == item:
slot.add_item()
func remove_item (item : Item):
var slot = get_slot_to_remove(item)
if slot == null or slot.item == null:
return
slot.remove_item()
func get_slot_to_add (item : Item) -> InventorySlot:
for slot in slots:
if slot.item == item and slot.quantity < item.max_stack_size:
return slot
for slot in slots:
if slot.item == null:
return slot
return null
func get_slot_to_remove (item : Item) -> InventorySlot:
for slot in slots:
if slot.item == item:
return slot
return null
func get_number_of_item (item : Item) -> int:
var total = 0
for slot in slots:
if slot.item == item:
total += slot.quantity
return total