diff options
author | sanine <sanine.not@pm.me> | 2023-11-09 15:25:33 -0600 |
---|---|---|
committer | sanine <sanine.not@pm.me> | 2023-11-09 15:25:33 -0600 |
commit | 819d8a51c5ba8b1bec06163dba9c3e0212f1120a (patch) | |
tree | 275316506cf85392d4cdd9a6eacb4a247f842c7d | |
parent | 5f2683c0aff63880794b2f3262e0d6abc76bd80a (diff) |
add world.js
-rw-r--r-- | src/world/world.js | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/world/world.js b/src/world/world.js new file mode 100644 index 0000000..c824e91 --- /dev/null +++ b/src/world/world.js @@ -0,0 +1,19 @@ +export function world_update(world, postprocess=[]) { + const lattice_props = lattice_update(world.lattice, world.lattice_rules); + const intermediate_lattice = lattice_apply(world.lattice, lattice_props); + + const agent_props = world.agents + .map(a => agent_decide(world.lattice, agent, world.senses, world.actions)) + .flat() + .reduce((acc, prop) => proposal_merge(acc, prop), []) + .filter(prop => lattice_valid(intermediate_lattice, prop)) + + const lattice = lattice_apply(intermediate_lattice, agent_props); + const agents = world.agents.map(a => agent_apply(a, agent_props)); + + const world = {...world, lattice, agents}; + return postprocess.reduce( + (acc, f) => f(acc), + world + ); +} |