HATPC/scenes/save_data.c

48 lines
1015 B
C

#include "save_data.h"
#include "constants.h"
// Bit flags for level completion.
// Expect 30 levels.
// Could use a 32bit integer though.
// Using array to allow arbitrary length of flags.
#define NUMBER_OF_BYTES 4
static uint8_t completion_flags[NUMBER_OF_BYTES] = {0};
int load_savedata(uint8_t* bytes, size_t len)
{
return 0;
}
int writeout_savedata(uint8_t* bytes, size_t len)
{
return 0;
}
bool is_level_completed(uint32_t level_num)
{
// 0-indexed
uint32_t byte_num = level_num >> 3;
if (byte_num >= NUMBER_OF_BYTES) return false;
uint32_t bit_num = level_num % 8;
return ((completion_flags[byte_num] >> bit_num) & 1) > 0;
}
void set_level_completed(uint32_t level_num, bool complete)
{
uint32_t byte_num = level_num >> 3;
if (byte_num >= NUMBER_OF_BYTES) return;
uint32_t bit_num = level_num % 8;
if (complete)
{
completion_flags[byte_num] |= (1 <<bit_num);
}
else
{
completion_flags[byte_num] &= ~(1 << bit_num);
}
}