class_name Modes extends Resource var _iterable:Array[Mode] # This is the iterator index cursor. var _iter_cursor : int = 0 # This method is an iterator initializer. func _iter_init(_arg : Variant) -> bool: _iter_cursor = 0 # array return len(_iterable) # This method checks if the iterator has a next value. func _iter_next(_arg : Variant) -> bool: _iter_cursor += 1 return _iter_cursor < len(_iterable) # This method gets the next iterator value. func _iter_get(_arg : Variant) -> Mode: return _iterable[_iter_cursor] func _set(name:StringName, value:Variant) -> bool: var index:int = -1 for mode:Mode in _iterable: if mode.name == name: index = _iterable.find(mode) if index > -1: # @NOTE: here would be a good place to avoid adding a null value in the # array in case it is the current behavior _iterable[index] = value return true else: return false func _get(name:StringName) -> Variant: for mode:Mode in _iterable: if mode.name == name: return mode return null func size() -> int: return len(_iterable) func append(mode:Mode) -> void: _iterable.append(mode) func erase(name:String) -> void: for mode in _iterable: if mode.name == name: _iterable.erase(mode) break