diff options
author | nathansmithsmith <thenathansmithsmith@gmail.com> | 2023-12-04 11:47:23 -0700 |
---|---|---|
committer | nathansmithsmith <thenathansmithsmith@gmail.com> | 2023-12-04 11:47:23 -0700 |
commit | a3957cac6cbc33f5ec88b9c15aeaf267f2bcd6b8 (patch) | |
tree | fa7e1b96442c4b1db00202dde879225ee5150346 /src | |
parent | 305fb5484044dd17d3db21930882ba7ba541bf7f (diff) |
Made level 5
Diffstat (limited to 'src')
-rw-r--r-- | src/entities/sergente.c | 6 | ||||
-rw-r--r-- | src/game.c | 2 | ||||
-rw-r--r-- | src/gameScreen.c | 2 | ||||
-rw-r--r-- | src/levels.c | 1 | ||||
-rw-r--r-- | src/levels.h | 2 | ||||
-rw-r--r-- | src/levels/level5.c | 86 | ||||
-rw-r--r-- | src/levels/level5.h | 15 | ||||
-rw-r--r-- | src/levelsInclude.h | 1 |
8 files changed, 108 insertions, 7 deletions
diff --git a/src/entities/sergente.c b/src/entities/sergente.c index 0721d1e..39baf85 100644 --- a/src/entities/sergente.c +++ b/src/entities/sergente.c @@ -1,10 +1,6 @@ #include "sergente.h" #include "assets.h" #include "game.h" -#include <float.h> -#include <limits.h> -#include <raylib.h> -#include <raymath.h> void initSergente(Entity * entity, Game * game) { entity->model = &game->assets.models[SERGENTE_ASSET]; @@ -12,6 +8,8 @@ void initSergente(Entity * entity, Game * game) { entity->transformedCollisionModel = entityCreateCollisionModel(*entity->model); setEntityRadius(entity); + entity->health = 0.375; + // Allocate data. entity->data = KF_MALLOC(sizeof(Sergente)); @@ -33,7 +33,7 @@ void initGame(Game * game) { // Levels. initLevels(&game->levels); - startLevel(game, &game->levels, 3); + startLevel(game, &game->levels, 4); } void closeGame(Game * game) { diff --git a/src/gameScreen.c b/src/gameScreen.c index 82e96f2..ff9b4d3 100644 --- a/src/gameScreen.c +++ b/src/gameScreen.c @@ -217,7 +217,7 @@ void drawNextLevelScreen(Game * game, GameScreen * gameScreen) { buf, bufSize, "Level %d complete", - game->levels.currentLevel + 1 + gameScreen->lastLevel + 1 ); DrawText( diff --git a/src/levels.c b/src/levels.c index c41456f..3eee7c4 100644 --- a/src/levels.c +++ b/src/levels.c @@ -9,6 +9,7 @@ const LevelInfo levelInfoList[LEVELS_COUNT] = { (LevelInfo){initLevel2, closelevel2, updateLevel2}, (LevelInfo){initLevel3, closelevel3, updateLevel3}, (LevelInfo){initLevel4, closelevel4, updateLevel4}, + (LevelInfo){initLevel5, closelevel5, updateLevel5}, (LevelInfo){initTestLevel, closeTestLevel, updateTestLevel} }; diff --git a/src/levels.h b/src/levels.h index 2c24536..d9230a8 100644 --- a/src/levels.h +++ b/src/levels.h @@ -5,7 +5,7 @@ #ifndef LEVELS_H #define LEVELS_H -#define LEVELS_COUNT 5 +#define LEVELS_COUNT 6 #define NO_LEVEL -1 diff --git a/src/levels/level5.c b/src/levels/level5.c new file mode 100644 index 0000000..d08cec6 --- /dev/null +++ b/src/levels/level5.c @@ -0,0 +1,86 @@ +#include "level5.h" +#include "game.h" +#include "world.h" +#include "entityGrouping.h" + +void initLevel5(Game * game, Levels * levels) { + levels->data = KF_MALLOC(sizeof(Level5)); + + if (levels->data == NULL) { + ALLOCATION_ERROR; + return; + } + + Level5 * data = (Level5*)levels->data; + data->stage = 0; + + WorldEntry entries[] = { + (WorldEntry){ENTITY_ANTIFA, (Vector3){0.0, 0.0, 0.0}, QuaternionIdentity()}, + (WorldEntry){ENTITY_SERGENTE, (Vector3){0.0, 0.0, 300.0}, QuaternionIdentity()} + }; + + addEntriesToWorld( + &game->world, + game, + entries, + sizeof(entries) / sizeof(WorldEntry) + ); +} + +void closelevel5(Levels * levels) { + if (levels->data != NULL) + KF_FREE(levels->data); +} + +bool updateLevel5(Game * game, Levels * levels) { + Level5 * data = (Level5*)levels->data; + bool levelDone = false; + Vector3 playerPosition = getEntityFromWorld(game->world, 0)->position; + + switch (data->stage) { + case 0: + if (game->world.entitiesCount == 1) { + WorldEntry entries[] = { + (WorldEntry){ENTITY_SERGENTE, Vector3Add((Vector3){0.0, 0.0, 800.0}, playerPosition), QuaternionIdentity()}, + (WorldEntry){ENTITY_SERGENTE, Vector3Add((Vector3){0.0, 0.0, -800.0}, playerPosition), QuaternionIdentity()}, + (WorldEntry){ENTITY_SERGENTE, Vector3Add((Vector3){0.0, 800.0, 0.0}, playerPosition), QuaternionIdentity()}, + (WorldEntry){ENTITY_SERGENTE, Vector3Add((Vector3){0.0, -800.0, 0.0}, playerPosition), QuaternionIdentity()} + }; + + addEntriesToWorld( + &game->world, + game, + entries, + sizeof(entries) / sizeof(WorldEntry) + ); + + data->stage = 1; + } + + break; + case 1: + if (game->world.entitiesCount == 1) { + addEntityGroupToWorld( + game, + ENTITY_SOLDATO, + 10, + Vector3Add((Vector3){1000.0, 0.0, 1000.0}, playerPosition), + (Vector3){0.0, 10.0, 10.0} + ); + + data->stage = 2; + } + + break; + case 2: + if (game->world.entitiesCount == 1) + levelDone = true; + + break; + default: + levelDone = true; + break; + } + + return levelDone; +} diff --git a/src/levels/level5.h b/src/levels/level5.h new file mode 100644 index 0000000..ecf60df --- /dev/null +++ b/src/levels/level5.h @@ -0,0 +1,15 @@ +#include "gameCommon.h" +#include "levels.h" + +#ifndef LEVEL5_H +#define LEVEL5_H + +typedef struct Level5 { + int stage; +} Level5; + +void initLevel5(Game * game, Levels * levels); +void closelevel5(Levels * levels); +bool updateLevel5(Game * game, Levels * levels); + +#endif diff --git a/src/levelsInclude.h b/src/levelsInclude.h index 15a2988..6d76c7c 100644 --- a/src/levelsInclude.h +++ b/src/levelsInclude.h @@ -3,5 +3,6 @@ #include "levels/level2.h" #include "levels/level3.h" #include "levels/level4.h" +#include "levels/level5.h" // As you can tell I fucking hate your stupid fat ass |