ludic migrate state packages <every example program> packages/ludic.lab/example/plate.ludic 1804 vars into 126 states, 64 into lets; 23498 edits in 460 files Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
53 lines
1.9 KiB
Text
53 lines
1.9 KiB
Text
# system.ludic - the map as a system: what has been seen and the marks, in its own save section by
|
|
# key. The view is where the player left it this session and is not saved.
|
|
export function minimap_reset(minimap_st: mut MinimapState) -> void {
|
|
mm_grid(minimap_st)
|
|
for c in 0 .. len(minimap_st.mm_seen) { minimap_st.mm_seen[c] = 0 }
|
|
minimap_st.mm_version += 1
|
|
minimap_pins_clear(minimap_st)
|
|
minimap_st.mm_have_view = false
|
|
minimap_st.mm_panning = false
|
|
}
|
|
|
|
export function minimap_save(minimap_st: mut MinimapState) -> Val {
|
|
let v = Value.object()
|
|
sv_put_str(v, "seen", minimap_seen_text(minimap_st))
|
|
let l = Value.list()
|
|
for i in 0 .. minimap_pin_count(minimap_st) {
|
|
let p = minimap_st.mm_pins[i]
|
|
let o = Value.object()
|
|
sv_put_float(o, "x", p.x)
|
|
sv_put_float(o, "z", p.z)
|
|
sv_put_int(o, "icon", p.icon)
|
|
sv_put_int(o, "colour", p.colour)
|
|
sv_put_int(o, "day", p.day)
|
|
sv_put_str(o, "label", p.label)
|
|
Value.add(l, o)
|
|
}
|
|
Value.put(v, "pins", l)
|
|
sv_put_int(v, "followed", minimap_pin_followed(minimap_st))
|
|
sv_put_int(v, "last", minimap_st.mm_last)
|
|
return v
|
|
}
|
|
|
|
export function minimap_load(minimap_st: mut MinimapState, v: Val, version: int) -> void {
|
|
minimap_reset(minimap_st)
|
|
minimap_seen_from_text(minimap_st, sv_str(v, "seen", ""))
|
|
if Value.has(v, "pins") != 0 {
|
|
let l = Value.get(v, "pins")
|
|
for i in 0 .. Value.count(l) {
|
|
let o = Value.at(l, i)
|
|
minimap_pin_put(minimap_st, sv_float(o, "x", 0.0), sv_float(o, "z", 0.0), sv_int(o, "icon", 0), sv_int(o, "colour", 0), sv_int(o, "day", 1), sv_str(o, "label", ""))
|
|
}
|
|
}
|
|
minimap_pin_follow(minimap_st, sv_int(v, "followed", -1))
|
|
minimap_st.mm_last = Math.clamp(sv_int(v, "last", 0), 0, minimap_st.mm_symbols - 1)
|
|
}
|
|
|
|
export function minimap_system() -> System {
|
|
let s = system_new("minimap", PH_COMMIT)
|
|
s.reset = fn minimap_reset
|
|
s.save = fn minimap_save
|
|
s.load = fn minimap_load
|
|
return s
|
|
}
|