# world_query.ludic — EV2b reflection: iterate the world by property (replaces # tests/mod_c/world_query.c). world_query_next(prop, from) returns the next live # entity (>= from) that has the property, or -1 — so a mod walks all bearers of a # component without knowing the models. Two Units (hp 50, 60) → count 2, sum 110. program WorldQuery { property Health { hp: int = 0, max: int = 0 } model Unit { Health } @Public @OnSpawn(Unit) handler Init { Health.hp = Health.max } entry { spawn Unit { Health { max: 50 } } spawn Unit { Health { max: 60 } } let H = world_prop_id("Health") let hp = world_field_id(H, "hp") var count = 0 var sum = 0 var e = world_query_next(H, 0) while e >= 0 { count = count + 1 sum = sum + world_get(e, H, hp) e = world_query_next(H, e + 1) } print(count) # 2 print(sum) # 110 } }