aboutsummaryrefslogtreecommitdiff
#ifndef GAME_H
#define GAME_H

#include "tomcat/renderer/camera.h"
#include "player.h"
#include "tomcat/terrain.h"

#include "tomcat/math/vector.h"
#include "tomcat/math/matrix4x4.h"

#include "tomcat/input.h"

#include "tomcat/util/util.h"
#include "tomcat/util/util_time.h"
#include "tomcat/renderer/renderer_types.h"
#include "tomcat/renderer/window.h"

typedef enum
{
    MENU,
    RUNNING,
    EXIT
}GameState;

#define NUM_ENTITIES 1

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

typedef struct _Game
{
    GameState gameState;
    Shader *shaderProgram, *terrainProgram, *skyboxProgram, *particlesProgram;

    Entity ents[NUM_ENTITIES];
    Texture *normalMap[2];
    Texture *defaultNormalMap;
    Terrain *terrain;
    Skybox sky;

    Player player;

    Camera *camera;
    Window *window;
    ParticleSystem *s;
} Game;

extern void LoadResources(Game *game);
extern void Draw(Game *game);
extern void ProcessInput(Game *game);
extern void CleanUp(Game *game);

#endif // GAME_H