#include "level.h" #include "generator.h" #include level_t level_create(int level) { level_t l; switch(level) { case 2: l.gen = std::make_unique(); break; case 3: l.gen = std::make_unique(); break; default: l.gen = std::make_unique(); } return l; } void level_update(level_t *level) { while (level->section_buffer.size() < LEVEL_BUFFER_LENGTH) { level->gen->generate(level); } } void level_advance(level_t *level) { if(level->section_buffer.size()) level->section_buffer.erase(level->section_buffer.begin()); } void level_display(level_t *level) { int w; int h; int sx; int sy; dsize("@", NULL, &w, &h); sx = (DWIDTH - (PLATFORM_COUNT * w)) / 2; sy = (DHEIGHT - (LEVEL_BUFFER_LENGTH * h)) / 2; drect_border( sx, sy, sx + (PLATFORM_COUNT * w), sy + (LEVEL_BUFFER_LENGTH * h), C_NONE, 2, C_BLACK ); for (int i = 4; i >= 0; --i) { for (int j = 0; j < PLATFORM_COUNT; ++j) { if (level->section_buffer[i].platforms[j].type != PLATFORM_EMPTY) dtext(sx + (w * j), sy + (h * i), C_BLACK, "@"); } } }