aboutsummaryrefslogtreecommitdiff
path: root/src/levels/level1.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/levels/level1.c')
-rw-r--r--src/levels/level1.c50
1 files changed, 44 insertions, 6 deletions
diff --git a/src/levels/level1.c b/src/levels/level1.c
index ed81ecf..06bd518 100644
--- a/src/levels/level1.c
+++ b/src/levels/level1.c
@@ -2,11 +2,24 @@
#include "game.h"
#include "world.h"
#include "entity.h"
+#include "entitiesInclude.h"
void initLevel1(Game * game, Levels * levels) {
- WorldEntry entries[2] = {
+ int i;
+
+ levels->data = KF_MALLOC(sizeof(Level1));
+
+ if (levels->data == NULL) {
+ ALLOCATION_ERROR;
+ return;
+ }
+
+ Level1 * data = (Level1*)levels->data;
+ data->stage = 0;
+
+ WorldEntry entries[] = {
(WorldEntry){ENTITY_ANTIFA, (Vector3){0.0, 0.0, 0.0}, QuaternionIdentity()},
- (WorldEntry){ENTITY_GENERALE, (Vector3){0.0, 10.0, 200.0}, QuaternionIdentity()}
+ (WorldEntry){ENTITY_SOLDATO, (Vector3){0.0, 10.0, 800.0}, QuaternionIdentity()}
};
addEntriesToWorld(
@@ -18,12 +31,37 @@ void initLevel1(Game * game, Levels * levels) {
}
void closelevel1(Levels * levels) {
+ if (levels->data != NULL)
+ KF_FREE(levels->data);
}
bool updateLevel1(Game * game, Levels * levels) {
- if (game->world.entitiesCount == 1)
- return true;
+ int i;
+ Level1 * data = (Level1*)levels->data;
+ Entity * player = getEntityFromWorld(game->world, 0);
+ bool levelDone = false;
- return IsKeyDown(KEY_G);
-}
+ switch (data->stage) {
+ case 0:
+ // Next stage
+ if (game->world.entitiesCount == 1) {
+ Vector3 position = Vector3Add(player->position, (Vector3){0.0, 0.0, 1000.0});
+ Vector3 spacing = (Vector3){0.0, 10.0, 10.0};
+ addSoldatoGroupToWorld(game, 10, position, spacing);
+ data->stage = 1;
+ }
+
+ break;
+ case 1:
+ if (game->world.entitiesCount == 1)
+ levelDone = true;
+
+ break;
+ default:
+ levelDone = true;
+ break;
+ }
+
+ return levelDone;
+}