sunder/scenes/multiplayer/match/scripts/modes.gd
2026-02-18 18:33:17 -05:00

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