# system.ludic - the fire as a system: PH_SIMULATE, and its own save section function fire_tick(fire_st: mut FireState, t: Tick) -> void { fire_run(fire_st, t.hours) } export function fire_save(fire_st: FireState) -> Val { let v = Value.object() sv_put_bool(v, "lit", fire_st.fr_lit) sv_put_float(v, "fuel", fire_st.fr_fuel) sv_put_float(v, "rain_h", fire_st.fr_rain_h) return v } export function fire_load(fire_st: mut FireState, v: Val, version: int) -> void { fire_reset(fire_st) fire_st.fr_lit = sv_bool(v, "lit", false) fire_st.fr_fuel = sv_float(v, "fuel", 0.0) fire_st.fr_rain_h = sv_float(v, "rain_h", 0.0) } export function fire_system() -> System { let s = system_new("fire", PH_SIMULATE) s.reset = fn fire_reset s.tick = fn fire_tick s.save = fn fire_save s.load = fn fire_load return s }