2024-02-11 06:19:54 +00:00
|
|
|
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
|
|
|
|
|
2024-02-11 06:19:54 +00:00
|
|
|
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
|
2024-02-11 06:19:54 +00:00
|
|
|
|
|
|
|
function completion_tracker:should_show_tutorial()
|
|
|
|
return self:get_completion_level() < tutorial.completion_stage
|
|
|
|
end
|