function CountUnitsInGroupEnum takes nothing returns nothing
set bj_groupCountUnits = bj_groupCountUnits + 1
endfunction
function CountUnitsInGroup takes group g returns integer
// If the user wants the group destroyed, remember that fact and clear
// the flag, in case it is used again in the callback.
local boolean wantDestroy = bj_wantDestroyGroup
set bj_wantDestroyGroup = false
set bj_groupCountUnits = 0
call ForGroup(g, function CountUnitsInGroupEnum)
// If the user wants the group destroyed, do so now.
if (wantDestroy) then
call DestroyGroup(g)
endif
return bj_groupCountUnits
endfunction
function GetUnitsInRectMatching takes rect r, boolexpr filter returns group
local group g = CreateGroup()
call GroupEnumUnitsInRect(g, r, filter)
call DestroyBoolExpr(filter)
return g
endfunction
function GetUnitsInRectAll takes rect r returns group
return GetUnitsInRectMatching(r, null)
endfunction
function Trig_SomeTrigger_Conditions takes nothing returns boolean
if ( not ( CountUnitsInGroup(GetUnitsInRectAll(SomeRect)) == 4 ) ) then
return false
endif
return true
endfunction