You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
21 lines
512 B
21 lines
512 B
class_name Registry |
|
|
|
var DEFAULT : Variant |
|
var BY_ID : Array |
|
var BY_NAME : Dictionary[String, Variant] |
|
|
|
func add(name: String, obj: Variant) -> Variant: |
|
obj.id = BY_ID.size() |
|
obj.name = name |
|
|
|
if BY_ID.is_empty(): DEFAULT = obj |
|
BY_ID.append(obj) |
|
BY_NAME[obj.name] = obj |
|
|
|
return obj |
|
|
|
func lookup_by_id(id: int) -> Variant: |
|
return BY_ID[id] if (id >= 0) and (id < BY_ID.size()) else DEFAULT |
|
func lookup_by_name(name: String) -> Variant: |
|
var found = BY_NAME.get(name) |
|
return found if found else DEFAULT
|
|
|