aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornathansmithsmith <thenathansmithsmith@gmail.com>2023-12-12 12:23:09 -0700
committernathansmithsmith <thenathansmithsmith@gmail.com>2023-12-12 12:23:09 -0700
commite5a0d7db8144af0bcc4ac6ec1d5b2a5240d051e4 (patch)
tree45d7a0e0f3f9a404d1a270c40b008f731e4af44c
parentd08baeaf02588f6ca3c6933db976b4858c539955 (diff)
Started working on level 10
-rw-r--r--src/game.c2
-rw-r--r--src/levels.c1
-rw-r--r--src/levels.h2
-rw-r--r--src/levels/level10.c66
-rw-r--r--src/levels/level10.h15
-rw-r--r--src/levelsInclude.h1
6 files changed, 85 insertions, 2 deletions
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