2022-08-20 16:32:37 +02:00
|
|
|
#include "level.h"
|
|
|
|
#include "generator.h"
|
2023-06-01 01:23:57 +02:00
|
|
|
#include "util.h"
|
2022-08-20 15:06:19 +02:00
|
|
|
#include <gint/display.h>
|
|
|
|
|
2023-05-24 13:08:59 +02:00
|
|
|
struct level level_create(int level)
|
2022-08-20 15:06:19 +02:00
|
|
|
{
|
2023-05-24 13:08:59 +02:00
|
|
|
struct level l;
|
|
|
|
|
|
|
|
switch(level) {
|
2023-06-01 01:23:57 +02:00
|
|
|
default:
|
|
|
|
l.gen = std::make_unique<struct gen1>();
|
|
|
|
l.bgcolor = RGB24(0x49759f);
|
|
|
|
break;
|
2023-05-24 13:08:59 +02:00
|
|
|
case 2:
|
2023-05-24 18:15:39 +02:00
|
|
|
l.gen = std::make_unique<AcceleronGenerator>();
|
2023-06-01 01:23:57 +02:00
|
|
|
l.bgcolor = RGB24(0xe7c272);
|
2023-05-24 13:08:59 +02:00
|
|
|
break;
|
|
|
|
case 3:
|
|
|
|
l.gen = std::make_unique<struct gen3>();
|
2023-06-01 01:23:57 +02:00
|
|
|
l.bgcolor = C_WHITE;
|
2023-05-24 13:08:59 +02:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
return l;
|
2022-08-20 15:06:19 +02:00
|
|
|
}
|
|
|
|
|
2023-05-24 13:08:59 +02:00
|
|
|
void level_update(struct level *level, num z)
|
2022-08-20 15:06:19 +02:00
|
|
|
{
|
2023-05-24 13:08:59 +02:00
|
|
|
while(!level->platform_buffer.size()
|
|
|
|
|| level->platform_buffer[level->platform_buffer.size() - 1].z
|
|
|
|
< z + RENDER_DEPTH)
|
|
|
|
level->gen->generate(level);
|
2022-08-20 15:06:19 +02:00
|
|
|
}
|