mtd/Scripts/inventory.gd

58 lines
1.1 KiB
GDScript3
Raw Normal View History

extends Node
class_name Inventory
signal item_added(item)
signal item_removed(item)
@export var max_size := 0
var contents = {}
var size : int :
get:
var x = 0
for key in contents:
x += contents[key]
return x
set(_value):
return
func add(item : Item) -> bool:
if item != null and max_size == 0 or size < max_size:
if contents.has(item):
contents[item] += 1
else:
contents[item] = 1
item_added.emit(item)
networked_add.rpc(Data.cards.find(item))
return true
return false
func remove_at(index : int) -> Item:
var item = contents.keys()[index]
contents[item] -= 1
if contents[item] == 0:
contents.erase(item)
item_removed.emit(item)
networked_remove_at.rpc(index)
return item
@rpc("reliable", "any_peer")
func networked_add(value):
var item = Data.cards[value]
if contents.has(item):
contents[item] += 1
else:
contents[item] = 0
item_added.emit(item)
@rpc("reliable", "any_peer")
func networked_remove_at(value):
var item = contents.keys[value]
contents[item] -= 1
if contents[item] == 0:
contents.erase(item)
item_removed.emit(item)