wip(ecs): ludic.wildlife on a Table<WildAnimal> - UNBUILT

Written while builds are held (agents share 16 GB; no build or run until the user lifts it), so
it has not been compiled or tested. The animals are rows of a ludic.base Table: x, z, species and
alive as columns, a 32 m grid over the living, the living by species, and a nid map.
wildlife_by_nid is a map lookup instead of a scan of every animal ever made, wildlife_count walks
only its species, wildlife_nearest asks the grid, wildlife_set_alive writes the flag and the row
together, and wildlife_refile files the tick's moves once after it (wildlife_verify holds the
columns to the records). A guest puts its whole table away and brings it back. A test case covers
them; to run once builds are allowed: ludic test packages/ludic.wildlife.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-27 21:21:29 +03:00
parent ab34f8229b
commit 5ac3d488a4
8 changed files with 142 additions and 15 deletions

View file

@ -3,13 +3,13 @@
export function wildlife_put_away(wildlife_st: mut WildlifeState) -> void {
if wildlife_st.wl_own != null { return }
wildlife_st.wl_own = wildlife_all(wildlife_st)
wildlife_st.wl_list = new []WildAnimal
wildlife_st.wl_own = wildlife_st.wl
wildlife_st.wl = wl__new()
}
export function wildlife_bring_back(wildlife_st: mut WildlifeState) -> void {
if wildlife_st.wl_own == null { return }
wildlife_st.wl_list = wildlife_st.wl_own
wildlife_st.wl = wildlife_st.wl_own
wildlife_st.wl_own = null
}