mirror of
https://codeberg.org/sunder/sunder.git
synced 2026-03-07 10:50:25 +00:00
51 lines
1.2 KiB
GDScript
51 lines
1.2 KiB
GDScript
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
|