aboutsummaryrefslogtreecommitdiff
#ifndef GAME_H
#define GAME_H

#include "camera.h"
#include "graphics/window.h"
#include "renderer/entity.h"
#include "player.h"
#include "terrain.h"
#include "texture.h"
#include "renderer/shape.h"
#include "graphics/shaders.h"
#include "renderer/skybox.h"

typedef enum
{
    MENU,
    RUNNING,
    EXIT
}GameState_t;

#define NUM_ENTITIES 1

#define WINDOW_WIDTH  1024
#define WINDOW_HEIGHT 768
#define WINDOW_ASPECT_RATIO ( (float)WINDOW_WIDTH / (float)WINDOW_HEIGHT )

typedef struct
{
    GameState_t gameState;
    Shader_Layout shaderProgram, terrainProgram, skyboxProgram;

    entity_t ents[NUM_ENTITIES];
    shape_t *entsShape;
    GLuint entsTexture;
    GLuint normalMap;
    GLuint defaultNormalMap;
    terrain_t *terrain;
    skybox_t sky;

    player_t player;

    camera_t camera;
    window_t *window;
} game_t;

#endif // GAME_H