- Edited
At the Moment my Shop script works great, however ive noticed that when i select an item the only way i know which item i selected is by the output log in the editor, so my question is, is there a way to have a selection mask over the item in the ItemList, or would it be easier to have a separate Label that showed which item was selected on screen? edit : oops forgot to add the code :smile: extends ItemList
export (NodePath) var path_to_buystuff_node
var buystuff
var SHOP_ITEMS = {
#Swords
"LongSword":{"sold":false,"Damage":4, "type":"Sword", "cost":10},
"Rapier":{"sold":false, "Damage":7, "type":"Sword", "cost":25},
"Scimitar":{"sold":false, "Damage":12, "type":"Sword", "cost":40},
"BroadSword":{"sold":false, "Damage":20, "type":"Sword", "cost":60},
"BastardSword":{"sold":false, "Damage":35, "type":"Sword", "cost":100},
"Excalibur":{"sold":false, "Damage":150, "type":"Sword", "cost":500},
#Daggers
"RogueDagger":{"sold":false, "Damage":3, "type":"Dagger", "cost":10},
"Shank":{"sold":false, "Damage":10, "type":"Dagger", "cost":20},
"LongKnife":{"sold":false, "Damage":18, "type":"Dagger", "cost":30},
"AssassinBlade":{"sold":false, "Damage":30, "type":"Dagger", "cost":50},
"MurderWeapon":{"sold":false, "Damage":60, "type":"Dagger", "cost":80},
}
var selected_item_name = null;
func _ready():
buystuff = get_node(path_to_buystuff_node)
add_item("Weapon Name", null, false);
add_item("Damage", null, false);
add_item("Weapon Type", null, false);
add_item("Cost", null, false);
# Add each item.
for item_name in SHOP_ITEMS:
add_item(item_name, null, SHOP_ITEMS[item_name]["sold"]);
add_item(str(SHOP_ITEMS[item_name]["Damage"]), null, false);
add_item(SHOP_ITEMS[item_name]["type"], null, false);
add_item(str(SHOP_ITEMS[item_name]["cost"]), null, false);
# Connect the item_selected signal so we know when a item in the list is selected.
connect("item_selected", self, "shop_item_selected");
func shop_item_selected(index):
# Get the name of the selected item
selected_item_name = get_item_text(index);
# Check if name is a name of a item in the shop (and the type/cost of a item)
if (SHOP_ITEMS.has(selected_item_name) == true):
print ("Item selected: ", selected_item_name, " | Cost: ", SHOP_ITEMS[selected_item_name]["cost"]);
func _on_Button_pressed():
get_node("/root/global").goto_scene("res://TownMap.tscn")
func _on_Buy_pressed():
if (buystuff.current_tab == 0) && Coins.warrior_coins >= SHOP_ITEMS[selected_item_name]["cost"]:
Coins.warrior_coins -= SHOP_ITEMS[selected_item_name]["cost"]
if (buystuff.current_tab == 1) && Coins.mage_coins >= SHOP_ITEMS[selected_item_name]["cost"]:
Coins.mage_coins -= SHOP_ITEMS[selected_item_name]["cost"]
if (buystuff.current_tab == 2) && Coins.thief_coins >= SHOP_ITEMS[selected_item_name]["cost"]:
Coins.thief_coins -= SHOP_ITEMS[selected_item_name]["cost"]