26 lines
592 B
GDScript
26 lines
592 B
GDScript
class_name IndexedIterator extends Iterator
|
|
|
|
class Indexed extends RefCounted:
|
|
var value: Variant
|
|
var index: int
|
|
|
|
func _init(_value: Variant, _index: int) -> void:
|
|
value = _value
|
|
index = _index
|
|
|
|
var _iter: Iterator
|
|
var _index: int = 0
|
|
|
|
func _init(iter: Iterator) -> void:
|
|
_iter = iter
|
|
|
|
func _add_index(value: Variant) -> Indexed:
|
|
return Indexed.new(value, _index)
|
|
|
|
func clone() -> IndexedIterator:
|
|
return IndexedIterator.new(_iter.clone())
|
|
|
|
func next() -> Option:
|
|
var next_value = _iter.next().map(_add_index)
|
|
_index += 1
|
|
return next_value
|