63 lines
1.2 KiB
GDScript
63 lines
1.2 KiB
GDScript
class_name Item
|
|
|
|
# Enum Types
|
|
enum Type {
|
|
NULL,
|
|
|
|
MEDICINE,
|
|
KEY_ITEM,
|
|
}
|
|
|
|
enum Id {
|
|
NULL,
|
|
POTION,
|
|
}
|
|
|
|
# Main dictionary holding all item data
|
|
static var ITEM_DATA:Array = []
|
|
|
|
# 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']))
|
|
|
|
var obj:Dictionary = {}
|
|
ITEM_DATA.insert(params['id'], obj)
|
|
|
|
obj['id'] = params['id']
|
|
obj['handle'] = params['handle']
|
|
obj['type'] = params['type']
|
|
|
|
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()
|