Fixed item
This commit is contained in:
65
item/Item.gd
65
item/Item.gd
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user