From 2b42a05915e0b8e08e83ff7da23d34d2e1a37ccd Mon Sep 17 00:00:00 2001
From: nathansmithsmith <thenathansmithsmith@gmail.com>
Date: Mon, 4 Dec 2023 15:01:19 -0700
Subject: more level 6 shit

---
 src/levels/level6.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 50 insertions(+), 1 deletion(-)

(limited to 'src/levels/level6.c')

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;
 }
-- 
cgit v1.2.3