diff options
Diffstat (limited to 'src/levels/level10.c')
-rw-r--r-- | src/levels/level10.c | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/levels/level10.c b/src/levels/level10.c new file mode 100644 index 0000000..371928a --- /dev/null +++ b/src/levels/level10.c @@ -0,0 +1,66 @@ +#include "level10.h" +#include "game.h" +#include "world.h" +#include "entity.h" +#include "entityGrouping.h" + +void initLevel10(Game * game, Levels * levels) { + levels->data = KF_MALLOC(sizeof(Level10)); + + if (levels->data == NULL) { + ALLOCATION_ERROR; + return; + } + + Level10 * data = (Level10*)levels->data; + data->stage = 0; + + WorldEntry entries[] = { + (WorldEntry){ENTITY_ANTIFA, (Vector3){0.0, 0.0, 0.0}, QuaternionIdentity()}, + (WorldEntry){ENTITY_GENERALE, (Vector3){0.0, 0.0, -800.0}, QuaternionIdentity()}, + (WorldEntry){ENTITY_GENERALE, (Vector3){-800.0, -800.0, -800.0}, QuaternionIdentity()} + }; + + addEntriesToWorld( + &game->world, + game, + entries, + sizeof(entries) / sizeof(WorldEntry) + ); +} + +void closelevel10(Levels * levels) { + if (levels->data != NULL) + KF_FREE(levels->data); +} + +bool updateLevel10(Game * game, Levels * levels) { + Level10 * data = (Level10*)levels->data; + bool levelDone = false; + + switch (data->stage) { + case 0: + if (game->world.entitiesCount == 1) { + data->stage = 1; + } + + break; + case 1: + if (game->world.entitiesCount == 1) { + data->stage = 2; + } + + break; + case 2: + if (game->world.entitiesCount == 1) { + levelDone = true; + } + + break; + default: + levelDone = true; + break; + } + + return levelDone; +} |