diff options
author | nathansmithsmith <thenathansmithsmith@gmail.com> | 2023-11-17 18:47:34 -0700 |
---|---|---|
committer | nathansmithsmith <thenathansmithsmith@gmail.com> | 2023-11-17 18:47:34 -0700 |
commit | 6e10d35ca6dc47b2b3ad47dbce0f5c6245a8da72 (patch) | |
tree | dc1601132a1d908c9b51eed56f456b472fcdaddd /src/levels/level1.c | |
parent | e7008ea5e51d657782d8facbf52e988bf3f9f7e1 (diff) |
Starting on level 1
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; +} |