From 1665a2d8e6864c3ce6279bd5393ca3d863079cad Mon Sep 17 00:00:00 2001 From: Quinten Mennen Date: Tue, 15 Apr 2025 19:42:39 +0200 Subject: [PATCH] added some base for the player and init --- inc/cub3d.h | 3 ++- inc/player.h | 21 +++++++++++++++++++++ inc/render.h | 3 ++- src/game.c | 5 +++-- src/main.c | 24 ++++++++++++++++-------- src/player.c | 35 +++++++++++++++++++++++++++++++++++ src/render.c | 9 +++++++-- src/screen.c | 3 ++- 8 files changed, 88 insertions(+), 15 deletions(-) create mode 100644 inc/player.h create mode 100644 src/player.c diff --git a/inc/cub3d.h b/inc/cub3d.h index 7206ffd..02286b6 100644 --- a/inc/cub3d.h +++ b/inc/cub3d.h @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/15 12:22:29 by qmennen #+# #+# */ -/* Updated: 2025/04/15 17:55:33 by qmennen ### ########.fr */ +/* Updated: 2025/04/15 18:55:25 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,6 +22,7 @@ # include "screen.h" # include "keyhandle.h" # include "render.h" +# include "player.h" # define FAILURE 0 # define SUCCESS 1 diff --git a/inc/player.h b/inc/player.h new file mode 100644 index 0000000..e5ac559 --- /dev/null +++ b/inc/player.h @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* player.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: qmennen +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/04/15 18:53:27 by qmennen #+# #+# */ +/* Updated: 2025/04/15 19:08:01 by qmennen ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef PLAYER_H +# define PLAYER_H + +# include "cub3d.h" + +int player_create(t_game **game); +void player_render(t_screen *screen, t_player *player); + +#endif diff --git a/inc/render.h b/inc/render.h index 07ae0ce..36c4f88 100644 --- a/inc/render.h +++ b/inc/render.h @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/15 16:28:16 by qmennen #+# #+# */ -/* Updated: 2025/04/15 16:30:51 by qmennen ### ########.fr */ +/* Updated: 2025/04/15 18:55:54 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,5 +16,6 @@ # include "cub3d.h" void render_clear(t_screen *screen); +void render_entities(t_game *game); #endif diff --git a/src/game.c b/src/game.c index 88beed1..92ff292 100644 --- a/src/game.c +++ b/src/game.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/15 15:46:08 by qmennen #+# #+# */ -/* Updated: 2025/04/15 18:02:09 by qmennen ### ########.fr */ +/* Updated: 2025/04/15 19:18:17 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,6 +34,7 @@ void game_loop(void *param) game = (t_game *)param; render_clear(game->screen); + render_entities(game); } void game_terminate(t_game *game) @@ -50,5 +51,5 @@ void game_terminate(t_game *game) if (game->map) free(game->map); free(game); - exit(EXIT_SUCCESS); //TODO: Make this variable on the last error + exit(EXIT_SUCCESS); } diff --git a/src/main.c b/src/main.c index f4b66f9..791eba0 100644 --- a/src/main.c +++ b/src/main.c @@ -6,24 +6,32 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/15 16:01:29 by qmennen #+# #+# */ -/* Updated: 2025/04/15 18:02:44 by qmennen ### ########.fr */ +/* Updated: 2025/04/15 19:19:00 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ # include "cub3d.h" +static int init_game(t_game **game) +{ + if (! game_create(game)) + return (FAILURE); + if (!player_create(game)) + return (FAILURE); + screen_center((*game)->screen); + mlx_key_hook((*game)->screen->mlx, keyhandle, *game); + mlx_loop_hook((*game)->screen->mlx, game_loop, *game); + return (SUCCESS); +} + int main(void) { t_game *game; + errno = 0; game = NULL; - if (! game_create(&game)){ - game_error(game, NULL); - return (EXIT_FAILURE); - } - screen_center(game->screen); - mlx_key_hook(game->screen->mlx, keyhandle, game); - mlx_loop_hook(game->screen->mlx, game_loop, game); + init_game(&game); + perror("after init"); mlx_loop(game->screen->mlx); game_terminate(game); return (EXIT_SUCCESS); diff --git a/src/player.c b/src/player.c new file mode 100644 index 0000000..e365f9d --- /dev/null +++ b/src/player.c @@ -0,0 +1,35 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* player.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: qmennen +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/04/15 18:53:19 by qmennen #+# #+# */ +/* Updated: 2025/04/15 19:11:48 by qmennen ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "player.h" +#include "types.h" + +int player_create(t_game **game) +{ + t_player *player; + + player = malloc(sizeof(t_player)); + if (!player) + return (FAILURE); + player->pos.x = 20.f; + player->pos.y = 20.f; + player->angle = 0.f; + player->speed = 10.f; + player->fov = 90.f; + (*game)->player = player; + return (SUCCESS); +} + +void player_render(t_screen *screen, t_player *player) +{ + mlx_put_pixel(screen->img, (int) player->pos.x, (int) player->pos.y, 0xFFFFFFFF); +} diff --git a/src/render.c b/src/render.c index 30f37bd..aca5b44 100644 --- a/src/render.c +++ b/src/render.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/15 16:28:10 by qmennen #+# #+# */ -/* Updated: 2025/04/15 17:41:28 by qmennen ### ########.fr */ +/* Updated: 2025/04/15 19:20:00 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,5 +19,10 @@ void render_clear(t_screen *screen) i = 0; while (i++ < screen->width * screen->height) - mlx_put_pixel(screen->img, i % screen->width, i / screen->width, 0x121212FF); + mlx_put_pixel(screen->img, i % screen->width, i / screen->width, 0x212121FF); +} + +void render_entities(t_game *game) +{ + player_render(game->screen, game->player); } diff --git a/src/screen.c b/src/screen.c index 2ffdc25..9acd38c 100644 --- a/src/screen.c +++ b/src/screen.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/15 15:30:27 by qmennen #+# #+# */ -/* Updated: 2025/04/15 16:47:25 by qmennen ### ########.fr */ +/* Updated: 2025/04/15 19:21:23 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,6 +26,7 @@ t_screen *screen_create() screen->width = WIDTH; screen->height = HEIGHT; mlx = mlx_init(WIDTH, HEIGHT, TITLE, false); + //TODO: figure out why errno = 11 after this call screen->mlx = mlx; img = mlx_new_image(screen->mlx, WIDTH, HEIGHT); screen->img = img;