fortunes_foundation/completion_tracker.lua

42 lines
979 B
Lua
Raw Normal View History

completion_tracker={}
add(modules,completion_tracker)
function completion_tracker:init()
cartdata("pyrex_fortunesfoundation_1")
end
2024-02-11 23:51:56 +00:00
function completion_tracker:reset()
for i=0,63 do
dset(i,0)
end
end
function completion_tracker:get_completion_level()
return dget(0)
end
function completion_tracker:advance_completion_level(clevel)
dset(0,max(dget(0), clevel))
end
2024-02-12 01:28:41 +00:00
-- TODO: Bitfield instead
function completion_tracker:mark_seen(text_id)
local ix,bit=self:_unpack_text_id(text_id)
dset(ix,dget(ix)|bit)
end
function completion_tracker:was_seen(text_id)
local ix,bit=self:_unpack_text_id(text_id)
return dget(ix)&bit !=0
end
function completion_tracker:_unpack_text_id(text_id)
assert(text_id>0)
assert(text_id<120) -- max 120 texts for now
-- using bytes 1 through 15
local ix,bit=1+text_id\8,text_id%8
assert(ix<16)
return ix,1<<bit
end
function completion_tracker:should_show_tutorial()
return self:get_completion_level() < tutorial.completion_stage
end