diff options
Diffstat (limited to 'src/levels/level1.c')
-rw-r--r-- | src/levels/level1.c | 50 |
1 files changed, 44 insertions, 6 deletions
diff --git a/src/levels/level1.c b/src/levels/level1.c index ed81ecf..06bd518 100644 --- a/src/levels/level1.c +++ b/src/levels/level1.c @@ -2,11 +2,24 @@ #include "game.h" #include "world.h" #include "entity.h" +#include "entitiesInclude.h" void initLevel1(Game * game, Levels * levels) { - WorldEntry entries[2] = { + int i; + + levels->data = KF_MALLOC(sizeof(Level1)); + + if (levels->data == NULL) { + ALLOCATION_ERROR; + return; + } + + Level1 * data = (Level1*)levels->data; + data->stage = 0; + + WorldEntry entries[] = { (WorldEntry){ENTITY_ANTIFA, (Vector3){0.0, 0.0, 0.0}, QuaternionIdentity()}, - (WorldEntry){ENTITY_GENERALE, (Vector3){0.0, 10.0, 200.0}, QuaternionIdentity()} + (WorldEntry){ENTITY_SOLDATO, (Vector3){0.0, 10.0, 800.0}, QuaternionIdentity()} }; addEntriesToWorld( @@ -18,12 +31,37 @@ void initLevel1(Game * game, Levels * levels) { } void closelevel1(Levels * levels) { + if (levels->data != NULL) + KF_FREE(levels->data); } bool updateLevel1(Game * game, Levels * levels) { - if (game->world.entitiesCount == 1) - return true; + int i; + Level1 * data = (Level1*)levels->data; + Entity * player = getEntityFromWorld(game->world, 0); + bool levelDone = false; - return IsKeyDown(KEY_G); -} + switch (data->stage) { + case 0: + // Next stage + if (game->world.entitiesCount == 1) { + Vector3 position = Vector3Add(player->position, (Vector3){0.0, 0.0, 1000.0}); + Vector3 spacing = (Vector3){0.0, 10.0, 10.0}; + addSoldatoGroupToWorld(game, 10, position, spacing); + data->stage = 1; + } + + break; + case 1: + if (game->world.entitiesCount == 1) + levelDone = true; + + break; + default: + levelDone = true; + break; + } + + return levelDone; +} |