-
Notifications
You must be signed in to change notification settings - Fork 0
Helpful functions
Have you ever searched the Godot docs looking for a function and thinking "surely there has to be a function to..." only to not find what you're looking for? ProtoJam comes packed with a variety of commonly needed static functions to help fill that gap, including:
- Graceful shutdown
- Framerate independent lerps
- Time formatting
- and more...
The CollectionUtils class provides supplemental functions for Dictionary and Array.
Returns a copy of a dictionary with only the filtered entries remaining similar to Array.filter. Returning true from the filter callable will retain the key/value pair it was called with.
var items: Dictionary[StringName, int] = {
&"egg": 2,
&"bullet": 20,
&"herb": 0,
&"key": -1,
}
# Remove egg items
var egg_filter: Callable = func(key: Variant, _value: Variant) -> bool:
return &"egg" != key
# Prints { "bullet": 20, "herb": 0, "key": -1 }
print(CollectionUtils.filterd(items, egg_filter))Performs the same function as Dictionary.get_or_add(key, default) but defers to a callable to produce the default value. This is ideal for situations where the default value requires initialization beyond its construction or should not be constructed when not required.
var _npcs: Dictionary[String, NonPlayerCharacter] = {}
func _ready() -> void:
CollectionUtils.get_or_add(_npcs, "blacksmith", _spawn_blacksmith) # Invokes _spawn_blacksmith and stores the result
CollectionUtils.get_or_add(_npcs, "blacksmith", _spawn_blacksmith) # Returns the previously created blacksmith
func _spawn_blacksmith() -> NonPlayerCharacter:
var npc: BlacksmithCharacter= BlacksmithCharacter.new()
add_child(npc)
return npcRemoves all entries from the first array that are also in the second array.
var a: Array[int] = [1, 2, 3, 4, 5]
var b: Array[int] = [2, 4]
# Prints [ 1, 3, 5 ]
print(CollectionUtils.remove_all(a, b))π§ WIP
π§ WIP
π§ WIP
π§ WIP
π§ WIP
π§ WIP
π§ WIP
π§ WIP
π§ WIP
π§ WIP
π§ WIP
π§ WIP
π§ WIP
π§ WIP
π§ WIP
π§ WIP
π§ WIP
π§ WIP
π§ WIP
π§ WIP
π§ WIP
π§ WIP
Contributions are always welcome! Check out the contributing guide to get started.
Made with β€οΈ for humans by humans.