ludic/packages/ludic.minimap/system.ludic
Orkuncakilkaya 19fcf60599 wip(0.S3): packages and examples migrated again from their pre-0.S sources in one run
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>
2026-09-25 15:31:34 +03:00

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
}