A bit of cleanup

master
outfrost 2020-07-14 23:46:16 +02:00
parent b89e6619af
commit 9562d38144
4 changed files with 38 additions and 26 deletions

View File

@ -1,12 +1,14 @@
#ifndef ENGINE_LOGGER_H_
#define ENGINE_LOGGER_H_
typedef enum {
enum LogLevel {
LOGLEVEL_ERROR,
LOGLEVEL_WARNING,
LOGLEVEL_INFO,
LOGLEVEL_DEBUG
} LogLevel;
};
typedef enum LogLevel LogLevel;
extern LogLevel logLevel;

View File

@ -3,8 +3,11 @@
#include <GL/gl.h>
typedef struct TgaHeader TgaHeader;
typedef struct TgaImage TgaImage;
#pragma pack(push, 1)
typedef struct {
struct TgaHeader {
GLubyte idLength;
GLbyte colorMapType;
GLbyte imageType;
@ -17,15 +20,15 @@ typedef struct {
GLushort imageHeight;
GLubyte imageBpp;
GLbyte imageDescriptor;
} TgaHeader;
};
#pragma pack(pop)
typedef struct {
struct TgaImage {
TgaHeader header;
GLenum imageFormat;
GLint imageComponents;
GLbyte* bytes;
} TgaImage;
};
TgaImage* readTga(const char* path);

View File

@ -5,11 +5,14 @@
#include "engine/logger.h"
#include "engine/scene.h"
#include "engine/tga.h"
#include "player.h"
BlockGrid levelGrid;
static const float BLOCKGRID_CELL_SIZE = 2.5f;
static Block blockEmpty = { .type = BLOCKTYPE_SPACE,
.solid = NULL };
static Block blockWall01 = { .type = BLOCKTYPE_OBSTACLE,
@ -17,6 +20,10 @@ static Block blockWall01 = { .type = BLOCKTYPE_OBSTACLE,
static Transform playerSpawnTransform;
static void buildLevelFromImage(const TgaImage* image);
static inline Block* getBlockFromGrid(BlockGrid grid, size_t x, size_t z);
static inline void setBlockInGrid(BlockGrid grid, size_t x, size_t z, Block* block);
void initLevel() {
@ -49,7 +56,7 @@ void startLevel() {
spawnPlayer(playerSpawnTransform);
}
void buildLevelFromImage(TgaImage* image) {
static void buildLevelFromImage(const TgaImage* image) {
if (image == NULL) {
logError("Null image received, cannot build level");
return;
@ -94,3 +101,11 @@ void buildLevelFromImage(TgaImage* image) {
levelGrid = newGrid;
}
static inline Block* getBlockFromGrid(BlockGrid grid, size_t x, size_t z) {
return grid.blocks[(z * grid.width) + x];
}
static inline void setBlockInGrid(BlockGrid grid, size_t x, size_t z, Block* block) {
grid.blocks[(z * grid.width) + x] = block;
}

View File

@ -4,40 +4,32 @@
#include <stdint.h>
#include "engine/asset.h"
#include "engine/tga.h"
typedef enum {
enum BlockType {
BLOCKTYPE_SPACE,
BLOCKTYPE_OBSTACLE_X,
BLOCKTYPE_OBSTACLE_Z,
BLOCKTYPE_OBSTACLE
} BlockType;
};
typedef struct {
const BlockType type;
typedef enum BlockType BlockType;
typedef struct Block Block;
typedef struct BlockGrid BlockGrid;
struct Block {
BlockType type;
const Solid* solid;
} Block;
};
typedef struct {
struct BlockGrid {
size_t width;
size_t depth;
Block** blocks;
} BlockGrid;
#define BLOCKGRID_CELL_SIZE 2.5f
};
extern BlockGrid levelGrid;
void initLevel();
void startLevel();
void buildLevelFromImage(TgaImage* image);
static inline Block* getBlockFromGrid(BlockGrid grid, size_t x, size_t z) {
return grid.blocks[(z * grid.width) + x];
}
static inline void setBlockInGrid(BlockGrid grid, size_t x, size_t z, Block* block) {
grid.blocks[(z * grid.width) + x] = block;
}
#endif // LEVEL_H_