Shaping out the games structure

This commit is contained in:
KikooDX 2020-09-11 18:07:53 +02:00
parent a496f428ce
commit d95c1b6cb3
9 changed files with 107 additions and 9 deletions

16
include/camera.h Normal file
View File

@ -0,0 +1,16 @@
#ifndef _DEF_CAMERA
#define _DEF_CAMERA
#include "vec.h"
typedef struct Camera
{
Vec position;
Vec *follow; /* the target position to lerp on */
float speed; /* camera lerp speed with 0 < speed <= 1 */
} Camera;
void camera_step(Camera *camera);
/* camera is invisible */
#endif /* _DEF_CAMERA */

16
include/level.h Normal file
View File

@ -0,0 +1,16 @@
#ifndef _DEF_LEVEL
#define _DEF_LEVEL
#include "camera.h"
typedef struct Level
{
unsigned char tiles[64 * 64]; /* max level size */
unsigned int width; /* in tiles */
unsigned int height; /* in tiles */
} Level;
void level_step(Level *level);
void level_draw(Level *level, Camera *camera);
#endif /* _DEF_LEVEL */

10
include/main.h Normal file
View File

@ -0,0 +1,10 @@
#include "player.h"
#include "level.h"
#ifndef _DEF_MAIN
#define _DEF_MAIN
void step_event(Player *player, Level *level, Camera *camera);
void draw_event(Player *player, Level *level, Camera *camera);
#endif

View File

@ -2,13 +2,14 @@
#define _DEF_PLAYER
#include "vec.h"
#include "camera.h"
typedef struct Player
{
Vec position;
} Player;
/* draw the player */
void draw_player(Player *player);
void player_step(Player *player);
void player_draw(Player *player, Camera *camera);
#endif
#endif /* _DEF_PLAYER */

View File

@ -13,4 +13,4 @@ void vec_add(Vec *vector, Vec force);
/* apply the opposite of a force on a vector */
void vec_sub(Vec *vector, Vec force);
#endif
#endif /* _DEF_VEC */

5
src/camera.c Normal file
View File

@ -0,0 +1,5 @@
#include "camera.h"
void camera_step(Camera *camera)
{
}

11
src/level.c Normal file
View File

@ -0,0 +1,11 @@
#include "level.h"
#include "camera.h"
void level_step(Level *level)
{
}
void level_draw(Level *level, Camera *camera)
{
/* TODO */
}

View File

@ -1,8 +1,13 @@
#include <gint/display.h>
#include <gint/keyboard.h>
#include <gint/std/string.h>
#include "main.h"
#include "init.h"
#include "vec.h"
#include "player.h"
#include "level.h"
#include "camera.h"
int main(void)
{
@ -13,10 +18,38 @@ int main(void)
.position = (Vec){32, 32}
};
dclear(C_WHITE);
draw_player(&player);
dupdate();
/* create level */
Level level = {
.width = 0,
.height = 0
};
/* create camera */
Camera camera = {
.follow = &player.position
};
camera.position.x = player.position.x;
camera.position.y = player.position.y;
/* main game loop */
step_event(&player, &level, &camera);
draw_event(&player, &level, &camera);
getkey();
return 1;
}
void step_event(Player *player, Level *level, Camera *camera)
{
player_step(player);
level_step(level);
camera_step(camera);
}
void draw_event(Player *player, Level *level, Camera *camera)
{
dclear(C_WHITE);
level_draw(level, camera);
player_draw(player, camera);
dupdate();
}

View File

@ -1,7 +1,13 @@
#include "player.h"
#include <gint/display.h>
void draw_player(Player *player)
#include "player.h"
#include "camera.h"
void player_step(Player *player)
{
}
void player_draw(Player *player, Camera *camera)
{
dpixel(player->position.x, player->position.y, C_BLACK);
}