Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ New here? Read our new [Documentation](https://expressobits.com/inventory-system
✔️ Multiplayer compatible (Including example).

✔️ Loot System (https://github.com/expressobits/inventory-system/issues/152).

✔️ Hotbar.

✔️ Craft System.
Expand Down Expand Up @@ -70,7 +70,7 @@ The grid system and its UI were based on this repository.
## CMake support

### git submodule setup in main repository
`git submodule init`
`git submodule init`
`git submodule update`

### cmake configure in main repository
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ func inventory_inputs():
if not is_any_station_or_inventory_opened():
open_main_craft_station()


func pick_to_inventory(node : Node):
if main_inventory == null:
return
Expand All @@ -145,6 +146,7 @@ func pick_to_inventory(node : Node):

printerr("pick_to_inventory return false");


func transfer(inventory: GridInventory, origin_pos: Vector2i, destination: GridInventory, amount: int):
var stack_index = inventory.get_stack_index_at(origin_pos)
if stack_index == -1:
Expand Down Expand Up @@ -184,12 +186,10 @@ func drop_all_items():
main_inventory.drop_all_stacks()
equipment_inventory.drop_all_stacks()

#endregion

#region Crafter
func craft(craft_station : CraftStation, recipe_index : int):
craft_station.craft(recipe_index)

#endregion

#region Hotbar
Expand Down Expand Up @@ -226,6 +226,7 @@ func hotbar_next_item():
func is_open_inventory(inventory : Inventory):
return opened_inventories.find(inventory) != -1


func open_inventory(inventory : Inventory):
if is_open_inventory(inventory):
return
Expand All @@ -239,6 +240,7 @@ func add_open_inventory(inventory : Inventory):
#inventory.request_drop_obj.connect(_on_request_drop_obj)
open_main_inventory()


func open_main_inventory():
open_inventory(main_inventory)

Expand All @@ -265,6 +267,7 @@ func close_inventories():
func is_open_any_inventory():
return !opened_inventories.is_empty()


func is_open_main_inventory():
return is_open_inventory(main_inventory)
#endregion
Expand Down Expand Up @@ -307,6 +310,7 @@ func close_craft_stations():
for index in range(opened_stations.size() - 1, -1, -1):
close_station(opened_stations[index])


func is_open_any_station():
return !opened_stations.is_empty()
#endregion
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ func _on_connected(id):
if is_open:
_opened_rpc.rpc_id(id)


func _on_opened(character : Node):
if not multiplayer.is_server():
return
Expand Down
2 changes: 2 additions & 0 deletions addons/inventory-system-demos/character/openable.gd
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,15 @@ signal closed(character : Node)

var characters : Array[Node] = []


func open(character : Node):
if is_open:
return
characters.append(character)
is_open = true
opened.emit(character)


func close(character : Node):
if !is_open:
return
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ var interactor : Interactor

var preview : Node3D


func _ready():
preview = self.duplicate(0)
preview.rotation = Vector3.ZERO
Expand Down
1 change: 1 addition & 0 deletions addons/inventory-system-demos/fps/box_inventory.gd
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ func _ready():
openable.opened.connect(_on_openable_opened)
inventory.grid_constraints = constraints


func get_inventory() -> Inventory:
return $Inventory

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ class_name CategoryGridInventoryConstraint
@export var is_only_one_category_for_slots: bool
@export var one_category_for_slots: String


func _can_add_on_position(inventory: Node, position: Vector2i, item_id: String, _amount: int, _properties: Dictionary, _is_rotated: bool):
var def: ItemDefinition = inventory.database.get_item(item_id)
if def == null:
Expand Down Expand Up @@ -34,6 +35,7 @@ func contains_category(def: ItemDefinition, category: String):
else:
return true


func get_category(position: Vector2i) -> String:
if is_only_one_category_for_slots:
return one_category_for_slots
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@ class_name StackSizeConstraint

@export var max_size_stack: int = 2


func _can_add_new_stack_on_inventory(inventory: Node, _item_id: String, _amount: int, _properties: Dictionary) -> bool:
if inventory.stacks.size() >= max_size_stack:
return false
return true


func _get_max_stack(_inventory: Node, item_id: String, _amount: int, _properties: Dictionary, max_stack: int) -> int:
if item_id == "wood":
return 32
Expand Down
3 changes: 2 additions & 1 deletion addons/inventory-system-demos/fps/fps_demo.gd
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ extends Node

var main_inventory : Inventory


func _ready():
$"UI/Inventory System UI".setup($"Player/CharacterInventorySystem")
main_inventory = $"Player/CharacterInventorySystem".main_inventory
Expand All @@ -13,7 +14,7 @@ func _ready():
main_inventory.add("wood", 16)
main_inventory.add("stone", 8)

#

func _process(_delta):
pass
if Input.is_action_just_released("add_item_a"):
Expand Down
2 changes: 2 additions & 0 deletions addons/inventory-system-demos/fps/props/shelf.gd
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ func get_interaction_position(interaction_point : Vector3) -> Vector3:
slot_index = i
return near_position


func interact_with_slot(character : Node, action_index : int = 0, actual_slot_index := 0):
if openable.is_open:
return
Expand All @@ -49,6 +50,7 @@ func interact_with_slot(character : Node, action_index : int = 0, actual_slot_in
char_inventory.transfer_at(char_slot_index, inventory, actual_slot_index)
return


func interact(character : Node, action_index : int = 0):
interact_with_slot(character, action_index, slot_index)

Expand Down
1 change: 1 addition & 0 deletions addons/inventory-system-demos/fps/use_items_example.gd
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ extends Node3D

@export var hotbar : Hotbar


func use_item_selected_in_hotbar():
var stack : ItemStack = hotbar.get_stack_on_selection()
if stack == null:
Expand Down
2 changes: 2 additions & 0 deletions addons/inventory-system-demos/fps/workbench.gd
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,10 @@ func interact(_character : Node, action_index : int = 0):
else:
self.rotate(Vector3.UP, 90)


func open(_character : Node):
openable.open(_character)


func close(_character : Node):
openable.close(_character)
1 change: 1 addition & 0 deletions addons/inventory-system-demos/mp/dropped_item_spawner.gd
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ extends MultiplayerSpawner

@export var database : InventoryDatabase


func _init():
spawn_function = _spawn_custom

Expand Down
1 change: 1 addition & 0 deletions addons/inventory-system-demos/mp/lag_test.gd
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ class_name LagTest

@export var actived := false


func _process(_delta: float) -> void:
if not actived:
return
Expand Down
1 change: 1 addition & 0 deletions addons/inventory-system-demos/mp/mp_demo.gd
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ var connected_peer_ids : Array
var players : Array
var peer : ENetMultiplayerPeer


func _ready():
multiplayer.peer_connected.connect(_player_connected)
multiplayer.peer_disconnected.connect(_player_disconnected)
Expand Down
2 changes: 2 additions & 0 deletions addons/inventory-system-demos/mp/networked_box_inventory.gd
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
extends BoxInventory
class_name NetworkedBoxInventory


func interact(character : Node, _action_index : int = 0):
if multiplayer.is_server():
interact_rpc(character.get_path(), _action_index)
else:
interact_rpc.rpc_id(1, character.get_path(), _action_index)


@rpc("any_peer")
func interact_rpc(character_path : NodePath, _action_index : int = 0):
super.interact(get_node(character_path), _action_index)
1 change: 1 addition & 0 deletions addons/inventory-system-demos/mp/networked_campfire.gd
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ func interact(character : Node, _action_index : int = 0):
else:
interact_rpc.rpc_id(1, character.get_path(), _action_index)


@rpc("any_peer")
func interact_rpc(character_path : NodePath, _action_index : int = 0):
super.interact(get_node(character_path), _action_index)
1 change: 1 addition & 0 deletions addons/inventory-system-demos/mp/networked_shelf.gd
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ func interact(character : Node, action_index : int = 0):
else:
interact_rpc(character.get_path(), action_index, slot_index)


@rpc("any_peer")
@warning_ignore("shadowed_variable_base_class")
func interact_rpc(character_node_path : NodePath, action_index : int, slot_index):
Expand Down
1 change: 1 addition & 0 deletions addons/inventory-system-demos/mp/networked_workbench.gd
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ func interact(character : Node, _action_index : int = 0):
else:
interact_rpc.rpc_id(1, character.get_path(), _action_index)


@rpc("any_peer")
func interact_rpc(character_path : NodePath, _action_index : int = 0):
super.interact(get_node(character_path), _action_index)
5 changes: 4 additions & 1 deletion addons/inventory-system-demos/mp/sync_craft_station.gd
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ func _on_crafting_added(crafting_index : int):
craftings_data.append(crafting.serialize())



func _on_crafting_removed(crafting_index : int):
if not multiplayer.is_server():
return
Expand All @@ -58,12 +57,14 @@ func crafting_added_rpc(recipe_index : int):
var recipe = craft_station.database.recipes[recipe_index]
craft_station.add_crafting(recipe_index, recipe)


@rpc
func crafting_removed_rpc(crafting_index : int):
if multiplayer.is_server():
return
craft_station.remove_crafting(crafting_index)


@rpc
@warning_ignore("shadowed_variable")
func _update_craftings_rpc(craftings_data : Array):
Expand All @@ -73,10 +74,12 @@ func _update_craftings_rpc(craftings_data : Array):
crafting.deserialize(data)
craft_station.craftings.append(crafting)


@rpc
func input_inventory_added_rpc(inventory_path : NodePath):
craft_station.add_input_inventory(craft_station.get_node(inventory_path))


@rpc
func input_inventory_removed_rpc(inventory_path : NodePath):
craft_station.remove_input_inventory(craft_station.get_node(inventory_path))
3 changes: 2 additions & 1 deletion addons/inventory-system-demos/mp/sync_grid_inventory.gd
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ extends Node
##
## Note: Slot categories are not synced


func _ready():
if Engine.is_editor_hint():
return
Expand All @@ -36,7 +37,6 @@ func setup():
inventory.stack_removed.connect(_on_stack_removed)



func _on_contents_changed():
if not multiplayer.is_server():
return
Expand Down Expand Up @@ -98,6 +98,7 @@ func _updated_slot_rpc(stack_index : int, slot_data : Array):
stack.deserialize(slot_data)
inventory.updated_stack.emit(stack_index)


@rpc
func _stack_removed_rpc(stack_index : int):
if multiplayer.is_server():
Expand Down
4 changes: 2 additions & 2 deletions addons/inventory-system-demos/tests/test_suite.gd
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ func cleanup_suite() -> void:
# Called before a unit test is run
func init_test() -> void:
pass


# Called after a unit test is run
func cleanup_test() -> void:
pass
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ func _process(_delta: float):
inventory.remove(item_id, 1)
print_inventory()


func print_inventory():
print("Inventory Items:")
for item in inventory.stacks:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ func _process(_delta: float):
inventory.remove(item_id, 1)
print_inventory()


func print_inventory():
print("Inventory Items:")
for item in inventory.stacks:
Expand Down
Loading