ludic.update: whether this copy can update itself is worked out once, when the updater is configured (the panel asked every frame, building the path to the executable each time); the notes are a list the state keeps, filled by update_notes_for when the version or the language changes, which the game calls from its update tick. The feed's address is declared (once, when a check starts). ludic.steps, ludic.effects, ludic.telemetry: what is left is made on an event and declared with its bound - an arc's tables, a chapter's columns, a step's fact, an effect's start, end and clear, the fact pool's growth, the player id, a props record's nesting stack - and two pushes into a caller's kept list, at most a chapter's steps and the ring's size. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
18 lines
935 B
Text
18 lines
935 B
Text
# facts.ludic - a fact's record reused (the ludic.wildlife idiom): a batch sent or failed is a fact
|
|
# a fact record no drain holds any more, made (and kept) only when every one is held
|
|
function telemetry__fact_record(telemetry_st: mut TelemetryState) -> TelemetryFact {
|
|
if telemetry_st.telemetry__fnext[0] >= len(telemetry_st.telemetry__ffree) {
|
|
q_unheld(telemetry_st.telemetry__facts, telemetry_st.telemetry__fpool, telemetry_st.telemetry__ffree)
|
|
telemetry_st.telemetry__fnext[0] = 0
|
|
}
|
|
if telemetry_st.telemetry__fnext[0] < len(telemetry_st.telemetry__ffree) {
|
|
let f = telemetry_st.telemetry__ffree[telemetry_st.telemetry__fnext[0]]
|
|
telemetry_st.telemetry__fnext[0] += 1
|
|
return f
|
|
}
|
|
@alloc_ok("the fact pool grows to the most facts in flight at once")
|
|
let f = new TelemetryFact
|
|
@alloc_ok("the fact pool grows to the most facts in flight at once")
|
|
push(telemetry_st.telemetry__fpool, f)
|
|
return f
|
|
}
|