The wurst standard library provides a convenience wrapper for iterating over units.
ForUnitsInXXX function family creates an abstraction over the
group handle type.
The only thing you really need to understand is the interface:
interface ForGroupCallback function callback(unit u)
ClosureForGroups package provides functions that give you a
group.forEachFrom() u -> // Removes units from the group, providing a reference to each in turn as // `u`.
forUnitsOfPlayer(player p) u -> // Anonymously iterates over all the units `u` in turn owned by player `p`. // Note that as this method wraps `GroupEnumUnitsOfPlayer`, it includes // locust units.
forUnitsAll() u -> // Iterates over all units by iterating over each player's units in turn.
forUnitsInRect(rect r) u -> // Iterates over units in rect `r`.
forUnitsInRange(vec2 pos, real radius) u -> // Iterates over all the units within `radius` distance from `pos`.
The standard library provides some slightly more powerful tools:
forNearestUnit(vec2 pos, real range, filterfunc filter) u -> // Only called for the single closest unit to `pos` matching the `filter`.
And a handful of similar closure wrappers for destructables:
forDestructablesInRect(r) d -> forNearestDestructable(pos, range) ->