I just figured out the problem by making my DataContainer variable a onready var, however here's the rest of the code.
extends Control
onready var EquipTab = get_node("Background/TabContainer/EquipTab")
onready var ConsumablesTab = get_node("Background/TabContainer/ConsumblesTab")
onready var ItemsTab = get_node("Background/TabContainer/ItemsTab")
onready var Equip = get_node("Equip")
onready var Food = get_node("Food")
onready var Item = get_node("Item")
onready var EquipContainer = get_node("Equip/EquipContainer/")
onready var FoodContainer = get_node("Food/FoodContainer/")
onready var ItemContainer = get_node("Item/ItemContainer/")
onready var DataType = PlayerData
onready var DataContainer = EquipContainer
func _ready():
for i in DataType.inv_data.keys():
var inv_slot = DataContainer.get_node(i)
if DataType.inv_data[i]["Item"] != null:
var item_name = GameData.item_data[str(DataType.inv_data[i]["Item"])]["Name"]
inv_slot.set_text(item_name)
inv_slot.visible = true
for button in EquipContainer.get_children():
button.connect("pressed", self, "_on_Inv_pressed", [button])
func _on_Inv_pressed(button):
var ItemImage = get_node("Background/ItemImage")
var SelectedItem = get_node("Background/ItemInfo/SelectedItem")
var ItemDescription = get_node("Background/ItemInfo/Description")
for i in DataType.inv_data.keys():
var inv_slot = DataContainer.get_node(i)
if inv_slot == button:
var item_name = GameData.item_data[str(DataType.inv_data[i]["Item"])]["Name"]
var item_description = GameData.item_data[str(PlayerData.inv_data[i]["Item"])]["Description"]
var icon_texture = load("res://Assets/Icon_items/" + item_name + ".png")
SelectedItem.set_text(item_name)
ItemDescription.set_text(item_description)
ItemImage.set_texture(icon_texture)
DataType.inv_data stores the Inv slot which holds the Item number. So like
inv_data = {
"Inv1": {
"Item": 10001
},
"Inv2": {
"Item": 10002
},
. Here's how the nodes look. 