aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornathansmithsmith <thenathansmithsmith@gmail.com>2023-12-04 15:01:19 -0700
committernathansmithsmith <thenathansmithsmith@gmail.com>2023-12-04 15:01:19 -0700
commit2b42a05915e0b8e08e83ff7da23d34d2e1a37ccd (patch)
tree814f95451d5c47371861459a590f53b00e84afc4 /src
parent19089d8214538c6049dbbdf7f0df4ebee215c959 (diff)
more level 6 shit
Diffstat (limited to 'src')
-rw-r--r--src/levels/level2.c2
-rw-r--r--src/levels/level4.c1
-rw-r--r--src/levels/level6.c51
-rw-r--r--src/levels/level6.h4
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);