ludic.ui: an unmounted component is mounted again rather than made again - its record renewed (a generated renew), its props and model kept; an action's call answers into a ring

A prompt that comes and goes as a player walks (co-op's netleak: in_get, cmp_*_new, bd_class, value_slot/put)
made a new record, props and model on every mount, and an action's call answered into a new Val (ev_call_with).
examples/library/ui_remount: two thousand comings and goings hold the heap at 0, and the counter starts at 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-28 15:25:55 +03:00
parent fc0f3d3790
commit 6cdef20cc2
14 changed files with 46052 additions and 45244 deletions

View file

@ -42,6 +42,8 @@ export state UiState {
mm_ivals: []Val = null
ev_depth: int = 0 # eval.ludic: a call's arguments, in lists kept one a depth
ev_args: []Val = new []Val
ev_ring: []Val = new []Val # eval.ludic: calls' answers while an action runs, EV_RING of them
ev_ring_at: int = 0
cv_texts: []string = new []string # units_pieces.ludic: a value's var() pieces, kept
tx_pieces: [][]string = new [][]string # eval_text.ludic: a text's pieces, a list a depth
tx_depth: int = 0
@ -117,6 +119,7 @@ export state UiState {
in_act_down: bool = false # A or Enter went down this frame, or came up
in_act_up: bool = false
in_list: []UiInst = new []UiInst
in_free: []UiInst = new []UiInst # unmounted instances, each mounted again as its class's next one
in_build: int = 0
ly_fg_a: float = 1.0
ly_lead: float = 0.0