Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Rename Script File to Script_PlayerInventory.gd
- extends Node
- onready var itemList = get_node("Panel/ItemList")
- # WindowDialog_AddItemWindow Variables.
- onready var addItemWindow = get_node("Panel/WindowDialog_AddItemWindow")
- onready var addItemWindow_SpinBox_ItemId = get_node("Panel/WindowDialog_AddItemWindow/AddItemWindow_SpinBox_ItemID")
- # WindowDialog_ItemMenu Variables.
- onready var itemMenu = get_node("Panel/WindowDialog_ItemMenu")
- onready var itemMenu_TextureFrame_Icon = get_node("Panel/WindowDialog_ItemMenu/ItemMenu_TextureFrame_Icon")
- onready var itemMenu_RichTextLabel_ItemInfo = get_node("Panel/WindowDialog_ItemMenu/ItemMenu_RichTextLabel_ItemInfo")
- onready var itemMenu_Button_Move = get_node("Panel/WindowDialog_ItemMenu/ItemMenu_Button_Move")
- onready var itemMenu_Button_DropItem = get_node("Panel/WindowDialog_ItemMenu/ItemMenu_Button_DropItem")
- var activeItemIndex = -1
- var isMovingItem = false
- func _ready():
- # Initialize Item List
- itemList.set_max_columns(9)
- itemList.set_fixed_icon_size(Vector2(48,48))
- itemList.set_icon_mode(ItemList.ICON_MODE_TOP)
- itemList.set_select_mode(ItemList.SELECT_SINGLE)
- itemList.set_same_column_width(true)
- itemList.set_allow_rmb_select(true)
- func load_items():
- itemList.clear()
- for slot in range(0, Global_Player.inventory_maxSlots):
- var inventoryItem = Global_Player.inventory[String(slot)]
- var itemMetaData = Global_ItemDatabase.get_item(inventoryItem["id"])
- var icon = ResourceLoader.load(itemMetaData["icon"])
- var amount = int(inventoryItem["amount"])
- itemMetaData["amount"] = amount
- if !itemMetaData["stackable"]: amount = " "
- itemList.add_item(String(amount), icon, true)
- itemList.set_item_metadata(slot, itemMetaData)
- itemList.set_item_tooltip(slot, itemMetaData["name"])
- if inventoryItem["id"] == "0":
- itemList.set_item_text(slot, " ")
- itemList.set_item_tooltip_enabled(slot, false)
- itemList.set_item_selectable(slot, false)
- func _on_Button_Load_pressed():
- load_items()
- func _on_Button_AddItem_pressed():
- addItemWindow.popup()
- func _on_AddItemWindow_Button_Close_pressed():
- addItemWindow.hide()
- func _on_AddItemWindow_Button_AddItem_pressed():
- Global_Player.inventory_addItem(addItemWindow_SpinBox_ItemId.get_value())
- load_items()
- func _on_ItemList_item_rmb_selected( index, atpos ):
- if isMovingItem: return
- var itemData = itemList.get_item_metadata(index)
- if int(itemData["id"]) < 1: return
- var strItemInfo = ""
- itemMenu.set_pos(get_viewport().get_mouse_pos())
- itemMenu.set_title(itemData["name"])
- itemMenu_TextureFrame_Icon.set_texture(itemList.get_item_icon(index))
- strItemInfo = "Name: [color=#00aedb] " + itemData["name"] + "[/color]\n"
- strItemInfo = strItemInfo + "Type: [color=#f37735] " + itemData["type"] + "[/color]\n"
- strItemInfo = strItemInfo + "Weight: [color=#00b159] " + String(itemData["weight"]) + "[/color]\n"
- strItemInfo = strItemInfo + "Sell Price: [color=#ffc425] " + String(itemData["sell_price"]) + "[/color] gold\n"
- strItemInfo = strItemInfo + "\n[color=#b3cde0]" + itemData["description"] + "[/color]"
- itemMenu_RichTextLabel_ItemInfo.set_bbcode(strItemInfo)
- itemMenu_Button_DropItem.set_text("(" + String(itemData["amount"]) + ") Drop" )
- activeItemIndex = index
- itemMenu.popup()
- func _on_WindowDialog_ItemMenu_popup_hide():
- if !isMovingItem: activeItemIndex = -1
- func _on_ItemMenu_Button_DropItem_pressed():
- var newAmount = Global_Player.inventory_removeItem(activeItemIndex)
- if newAmount < 1:
- itemMenu.hide()
- else:
- itemMenu_Button_DropItem.set_text("(" + String(newAmount) + ") Drop")
- load_items()
- func _on_ItemMenu_Button_Move_pressed():
- isMovingItem = true
- itemMenu.hide()
- func _on_ItemList_item_selected( index ):
- if !isMovingItem: return
- isMovingItem = false
- Global_Player.inventory_moveItem(activeItemIndex, index)
- load_items()
- func _on_Button_Save_pressed():
- Global_Player.save_data()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement