From 6e10d35ca6dc47b2b3ad47dbce0f5c6245a8da72 Mon Sep 17 00:00:00 2001 From: nathansmithsmith Date: Fri, 17 Nov 2023 18:47:34 -0700 Subject: Starting on level 1 --- src/levels/level1.c | 50 ++++++++++++++++++++++++++++++++++++++++++++------ src/levels/level1.h | 4 ++++ src/levels/level2.c | 34 ++++++++++++++++++++++++++++++++++ src/levels/level2.h | 11 +++++++++++ 4 files changed, 93 insertions(+), 6 deletions(-) create mode 100644 src/levels/level2.c create mode 100644 src/levels/level2.h (limited to 'src/levels') 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; +} diff --git a/src/levels/level1.h b/src/levels/level1.h index 58a7b2c..ed72f5f 100644 --- a/src/levels/level1.h +++ b/src/levels/level1.h @@ -4,6 +4,10 @@ #ifndef LEVEL1_H #define LEVEL1_H +typedef struct Level1 { + int stage; +} Level1; + void initLevel1(Game * game, Levels * levels); void closelevel1(Levels * levels); bool updateLevel1(Game * game, Levels * levels); diff --git a/src/levels/level2.c b/src/levels/level2.c new file mode 100644 index 0000000..4e5dded --- /dev/null +++ b/src/levels/level2.c @@ -0,0 +1,34 @@ +#include "level1.h" +#include "game.h" +#include "world.h" +#include "entity.h" + +void initLevel2(Game * game, Levels * levels) { + int i; + + WorldEntry entries[11] = { + (WorldEntry){ENTITY_ANTIFA, (Vector3){0.0, 0.0, 0.0}, QuaternionIdentity()} + }; + + for (i = 1; i < 11; ++i) { + entries[i] = (WorldEntry){ENTITY_SOLDATO, (Vector3){0.0, i * 10.0, i * 10.0 + 200.0}, QuaternionIdentity()}; + } + + addEntriesToWorld( + &game->world, + game, + entries, + sizeof(entries) / sizeof(WorldEntry) + ); +} + +void closelevel2(Levels * levels) { +} + +bool updateLevel2(Game * game, Levels * levels) { + if (game->world.entitiesCount == 1) + return true; + + return false; +} + diff --git a/src/levels/level2.h b/src/levels/level2.h new file mode 100644 index 0000000..06e1c17 --- /dev/null +++ b/src/levels/level2.h @@ -0,0 +1,11 @@ +#include "gameCommon.h" +#include "levels.h" + +#ifndef LEVEL2_H +#define LEVEL2_H + +void initLevel2(Game * game, Levels * levels); +void closelevel2(Levels * levels); +bool updateLevel2(Game * game, Levels * levels); + +#endif -- cgit v1.2.3