aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornathansmithsmith <nathansmith7@mailfence.com>2023-10-02 11:51:45 -0600
committernathansmithsmith <nathansmith7@mailfence.com>2023-10-02 11:51:45 -0600
commit5b03b11020a39790b81a00cf5cae8f04bc4caffa (patch)
tree51648dc53d017c613bbffad56fca6fc7133a761f /src
parentf22a4557c99a8541d2ce3e3f8b61db5a33f4240b (diff)
Started using the level handler
Diffstat (limited to 'src')
-rw-r--r--src/levels.c13
-rw-r--r--src/levels.h4
-rw-r--r--src/levels/level1.c26
-rw-r--r--src/levels/level1.h11
-rw-r--r--src/levelsInclude.h3
-rw-r--r--src/world.c2
6 files changed, 53 insertions, 6 deletions
diff --git a/src/levels.c b/src/levels.c
index 221da15..c5083eb 100644
--- a/src/levels.c
+++ b/src/levels.c
@@ -1,4 +1,6 @@
#include "levels.h"
+#include "game.h"
+#include "world.h"
const LevelInfo levelInfoList[LEVELS_COUNT] = {
};
@@ -10,19 +12,22 @@ void initLevels(Levels * levels) {
void startLevel(Game * game, Levels * levels, int levelNum) {
levels->currentLevel = levelNum;
+ initWorld(&game->world);
levelInfoList[levelNum].initCb(game, levels);
}
-void updateLevel(Game * game, Levels * levels) {
+bool updateLevel(Game * game, Levels * levels) {
if (levels->currentLevel != NO_LEVEL)
- levelInfoList[levels->currentLevel].updateCb(game, levels);
+ return levelInfoList[levels->currentLevel].updateCb(game, levels);
+
+ return false;
}
-void endLevel(Levels * levels) {
+void endLevel(Game * game, Levels * levels) {
if (levels->currentLevel != NO_LEVEL)
levelInfoList[levels->currentLevel].closeCb(levels);
+ freeWorld(&game->world);
levels->currentLevel = NO_LEVEL;
levels->data = NULL;
}
-
diff --git a/src/levels.h b/src/levels.h
index 5d0546f..3277f62 100644
--- a/src/levels.h
+++ b/src/levels.h
@@ -30,7 +30,7 @@ extern const LevelInfo levelInfoList[LEVELS_COUNT];
void initLevels(Levels * levels);
void startLevel(Game * game, Levels * levels, int levelNum);
-void updateLevel(Game * game, Levels * levels);
-void endLevel(Levels * levels);
+bool updateLevel(Game * game, Levels * levels); // Returns true on end of level
+void endLevel(Game * game, Levels * levels);
#endif
diff --git a/src/levels/level1.c b/src/levels/level1.c
new file mode 100644
index 0000000..eb9695e
--- /dev/null
+++ b/src/levels/level1.c
@@ -0,0 +1,26 @@
+#include "level1.h"
+#include "game.h"
+#include "world.h"
+#include "entity.h"
+
+void initLevel1(Game * game, Levels * levels) {
+ WorldEntry entries[] = {
+ (WorldEntry){ENTITY_ANTIFA, (Vector3){0.0, 0.0, 0.0}, QuaternionIdentity()},
+ (WorldEntry){ENTITY_MUSSOLINI, (Vector3){0.0, 0.0, 200.0}, QuaternionIdentity()}
+ };
+
+ addEntriesToWorld(
+ &game->world,
+ game,
+ entries,
+ sizeof(entries) / sizeof(WorldEntry)
+ );
+}
+
+void closelevel1(Levels * levels) {
+}
+
+bool updateLevel1(Game * game, Levels * levels) {
+ return false;
+}
+
diff --git a/src/levels/level1.h b/src/levels/level1.h
new file mode 100644
index 0000000..58a7b2c
--- /dev/null
+++ b/src/levels/level1.h
@@ -0,0 +1,11 @@
+#include "gameCommon.h"
+#include "levels.h"
+
+#ifndef LEVEL1_H
+#define LEVEL1_H
+
+void initLevel1(Game * game, Levels * levels);
+void closelevel1(Levels * levels);
+bool updateLevel1(Game * game, Levels * levels);
+
+#endif
diff --git a/src/levelsInclude.h b/src/levelsInclude.h
new file mode 100644
index 0000000..54e6c5f
--- /dev/null
+++ b/src/levelsInclude.h
@@ -0,0 +1,3 @@
+#include "levels/level1.h"
+
+// As you can tell I fucking hate your stupid fat ass
diff --git a/src/world.c b/src/world.c
index c34f17b..0148043 100644
--- a/src/world.c
+++ b/src/world.c
@@ -40,6 +40,8 @@ void freeWorld(World * world) {
if (world->vacantIds != NULL)
KF_FREE(world->vacantIds);
+
+ world->entities = NULL;
}
// Not for direct use.