diff options
author | nathansmithsmith <thenathansmithsmith@gmail.com> | 2023-12-12 12:23:09 -0700 |
---|---|---|
committer | nathansmithsmith <thenathansmithsmith@gmail.com> | 2023-12-12 12:23:09 -0700 |
commit | e5a0d7db8144af0bcc4ac6ec1d5b2a5240d051e4 (patch) | |
tree | 45d7a0e0f3f9a404d1a270c40b008f731e4af44c | |
parent | d08baeaf02588f6ca3c6933db976b4858c539955 (diff) |
Started working on level 10
-rw-r--r-- | src/game.c | 2 | ||||
-rw-r--r-- | src/levels.c | 1 | ||||
-rw-r--r-- | src/levels.h | 2 | ||||
-rw-r--r-- | src/levels/level10.c | 66 | ||||
-rw-r--r-- | src/levels/level10.h | 15 | ||||
-rw-r--r-- | src/levelsInclude.h | 1 |
6 files changed, 85 insertions, 2 deletions
@@ -33,7 +33,7 @@ void initGame(Game * game) { // Levels. initLevels(&game->levels); - startLevel(game, &game->levels, 8); + startLevel(game, &game->levels, 9); } void closeGame(Game * game) { diff --git a/src/levels.c b/src/levels.c index 90221d4..11cdaba 100644 --- a/src/levels.c +++ b/src/levels.c @@ -14,6 +14,7 @@ const LevelInfo levelInfoList[LEVELS_COUNT] = { (LevelInfo){initLevel7, closelevel7, updateLevel7}, (LevelInfo){initLevel8, closelevel8, updateLevel8}, (LevelInfo){initLevel9, closelevel9, updateLevel9}, + (LevelInfo){initLevel10, closelevel10, updateLevel10}, (LevelInfo){initTestLevel, closeTestLevel, updateTestLevel} }; diff --git a/src/levels.h b/src/levels.h index 5ee1231..132a05d 100644 --- a/src/levels.h +++ b/src/levels.h @@ -5,7 +5,7 @@ #ifndef LEVELS_H #define LEVELS_H -#define LEVELS_COUNT 10 +#define LEVELS_COUNT 11 #define NO_LEVEL -1 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; +} diff --git a/src/levels/level10.h b/src/levels/level10.h new file mode 100644 index 0000000..32c7811 --- /dev/null +++ b/src/levels/level10.h @@ -0,0 +1,15 @@ +#include "gameCommon.h" +#include "levels.h" + +#ifndef LEVEL10_H +#define LEVEL10_H + +typedef struct Level10 { + int stage; +} Level10; + +void initLevel10(Game * game, Levels * levels); +void closelevel10(Levels * levels); +bool updateLevel10(Game * game, Levels * levels); + +#endif diff --git a/src/levelsInclude.h b/src/levelsInclude.h index 48a6559..2a7d598 100644 --- a/src/levelsInclude.h +++ b/src/levelsInclude.h @@ -8,5 +8,6 @@ #include "levels/level7.h" #include "levels/level8.h" #include "levels/level9.h" +#include "levels/level10.h" // As you can tell I fucking hate your stupid fat ass |