From e5a0d7db8144af0bcc4ac6ec1d5b2a5240d051e4 Mon Sep 17 00:00:00 2001 From: nathansmithsmith Date: Tue, 12 Dec 2023 12:23:09 -0700 Subject: Started working on level 10 --- src/game.c | 2 +- src/levels.c | 1 + src/levels.h | 2 +- src/levels/level10.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/levels/level10.h | 15 ++++++++++++ src/levelsInclude.h | 1 + 6 files changed, 85 insertions(+), 2 deletions(-) create mode 100644 src/levels/level10.c create mode 100644 src/levels/level10.h diff --git a/src/game.c b/src/game.c index dad6f39..cf2a2d5 100644 --- a/src/game.c +++ b/src/game.c @@ -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 -- cgit v1.2.3