Fixed item

This commit is contained in:
2026-01-15 09:35:57 -06:00
parent 5af98a69a2
commit c48de36f2e
8 changed files with 67 additions and 39 deletions

View File

@@ -1,37 +1,62 @@
class_name Item
# Enum Types
enum ItemType {
enum Type {
NULL,
MEDICINE,
KEY_ITEM,
}
enum ItemId {
enum Id {
NULL,
POTION,
}
# Properties
var itemType:ItemType
var key:String
# Main dictionary holding all item data
static var ITEM_DATA:Array = []
# Item Constructor
func _init(key:String, itemType:ItemType) -> void:
self.key = key
self.itemType = itemType
# Class definition
static func itemDefine(params:Dictionary) -> Dictionary:
assert(params.has('id'))
assert(params.has('handle'))
assert(params.has('type'))
assert(!ITEM_DATA.has(params['id']))
func getName() -> String:
# For now just return key
return self.key
var obj:Dictionary = {}
ITEM_DATA.insert(params['id'], obj)
# Item Table
static var ITEM_DEFINITIONS = {
[ItemId.NULL]: Item.new("NULL", ItemType.NULL),
[ItemId.POTION]: Item.new("POTION", ItemType.MEDICINE),
}
obj['id'] = params['id']
obj['handle'] = params['handle']
obj['type'] = params['type']
static func getItemById(itemId:ItemId) -> Item:
assert(ITEM_DEFINITIONS.has(itemId))
return ITEM_DEFINITIONS[itemId]
return obj
# Item Data
static var ITEM_NULL = itemDefine({
'id': Id.NULL,
'handle': "unknown",
'type': Type.NULL
})
static var ITEM_POTION = itemDefine({
'id': Id.POTION,
'handle': "potion",
'type': Type.MEDICINE
})
# Item Accessors
static func getItemDef(item:Id) -> Dictionary:
if ITEM_DATA.size() <= item || item < 0:
return ITEM_NULL
return ITEM_DATA[item]
static func getType(item:Id) -> Type:
return getItemDef(item).type
static func getItemHandle(item:Id) -> String:
return getItemDef(item).handle
static func getItemName(item:Id) -> String:
var handle = Item.getItemHandle(item)
return (handle + "_name").to_upper()