diff options
author | nathansmithsmith <thenathansmithsmith@gmail.com> | 2023-12-04 15:01:19 -0700 |
---|---|---|
committer | nathansmithsmith <thenathansmithsmith@gmail.com> | 2023-12-04 15:01:19 -0700 |
commit | 2b42a05915e0b8e08e83ff7da23d34d2e1a37ccd (patch) | |
tree | 814f95451d5c47371861459a590f53b00e84afc4 /src | |
parent | 19089d8214538c6049dbbdf7f0df4ebee215c959 (diff) |
more level 6 shit
Diffstat (limited to 'src')
-rw-r--r-- | src/levels/level2.c | 2 | ||||
-rw-r--r-- | src/levels/level4.c | 1 | ||||
-rw-r--r-- | src/levels/level6.c | 51 | ||||
-rw-r--r-- | src/levels/level6.h | 4 |
4 files changed, 56 insertions, 2 deletions
diff --git a/src/levels/level2.c b/src/levels/level2.c index 561ff75..fe9d291 100644 --- a/src/levels/level2.c +++ b/src/levels/level2.c @@ -1,4 +1,4 @@ -#include "level1.h" +#include "level2.h" #include "game.h" #include "world.h" #include "entity.h" diff --git a/src/levels/level4.c b/src/levels/level4.c index a159750..00fad0a 100644 --- a/src/levels/level4.c +++ b/src/levels/level4.c @@ -1,3 +1,4 @@ +#include "level4.h" #include "game.h" #include "world.h" #include "entity.h" diff --git a/src/levels/level6.c b/src/levels/level6.c index 37397ea..633d336 100644 --- a/src/levels/level6.c +++ b/src/levels/level6.c @@ -1,9 +1,20 @@ +#include "level6.h" #include "game.h" #include "world.h" #include "entity.h" #include "entityGrouping.h" void initLevel6(Game * game, Levels * levels) { + levels->data = KF_MALLOC(sizeof(Level6)); + + if (levels->data == NULL) { + ALLOCATION_ERROR; + return; + } + + Level6 * data = (Level6*)levels->data; + data->stage = 0; + // Add player. WorldEntry entries[] = { (WorldEntry){ENTITY_ANTIFA, (Vector3){0.0, 0.0, 0.0}, QuaternionIdentity()}, @@ -19,8 +30,46 @@ void initLevel6(Game * game, Levels * levels) { } void closelevel6(Levels * levels) { + if (levels->data != NULL) + KF_FREE(levels->data); } bool updateLevel6(Game * game, Levels * levels) { - return false; + Level6 * data = (Level6*)levels->data; + bool levelDone = false; + + switch (data->stage) { + case 0: + if (game->world.entitiesCount == 1) { + Vector3 playerPosition = getEntityFromWorld(game->world, 0)->position; + + WorldEntry entries[] = { + (WorldEntry){ENTITY_SERGENTE, + Vector3Add((Vector3){400.0, 400.0, 400.0}, playerPosition), QuaternionIdentity()}, + (WorldEntry){ENTITY_SERGENTE, + Vector3Add((Vector3){-400.0, -400.0, -400.0}, playerPosition), QuaternionIdentity()} + }; + + addEntriesToWorld( + &game->world, + game, + entries, + sizeof(entries) / sizeof(WorldEntry) + ); + + data->stage = 1; + } + + break; + case 1: + if (game->world.entitiesCount == 1) + levelDone = true; + + break; + default: + levelDone = true; + break; + } + + return levelDone; } diff --git a/src/levels/level6.h b/src/levels/level6.h index de4c747..616c471 100644 --- a/src/levels/level6.h +++ b/src/levels/level6.h @@ -4,6 +4,10 @@ #ifndef LEVEL6_H #define LEVEL6_H +typedef struct Level6 { + int stage; +} Level6; + void initLevel6(Game * game, Levels * levels); void closelevel6(Levels * levels); bool updateLevel6(Game * game, Levels * levels); |