diff --git a/.vscode/settings.json b/.vscode/settings.json index 17ab4fd..62a4eeb 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,7 +11,9 @@ "render.h": "c", "math.h": "c", "mlx42_int.h": "c", - "glad.h": "c" + "glad.h": "c", + "game_menu.h": "c", + "game_manager.h": "c" }, "cmake.ignoreCMakeListsMissing": true } \ No newline at end of file diff --git a/Makefile b/Makefile index 9e80189..bc23d75 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,12 @@ # **************************************************************************** # # # -# :::::::: # -# Makefile :+: :+: # -# +:+ # -# By: qmennen +#+ # -# +#+ # -# Created: 2024/10/15 11:48:46 by whaffman #+# #+# # -# Updated: 2025/05/23 11:22:47 by whaffman ######## odam.nl # +# ::: :::::::: # +# Makefile :+: :+: :+: # +# +:+ +:+ +:+ # +# By: qmennen +#+ +:+ +#+ # +# +#+#+#+#+#+ +#+ # +# Created: 2024/10/15 11:48:46 by whaffman #+# #+# # +# Updated: 2025/05/27 17:00:58 by qmennen ### ########.fr # # # # **************************************************************************** # diff --git a/README.md b/README.md index efeb187..6394f6f 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,16 @@ # Cub3d (by Quinten & Willem) ## TODO -- [ ] **Config Parsing:** support inclusion of sprites in the format (-{type: c, s} {identifier} {path}) -- [ ] **Map Parsing:** Keep in mind the possible addition of sprites / collectibles -- [ ] **Gameplay:** Allow sprites to be collected (stopping them from being rendered) +- [x] **Config Parsing:** support inclusion of sprites in the format (-{type: c, s} {identifier} {path}) +- [x] **Map Parsing:** Keep in mind the possible addition of sprites / collectibles +- [x] **Gameplay:** Allow sprites to be collected (stopping them from being rendered) - [ ] **Rendering:** Allow for either floor/ceiling textures *or* colors. - [ ] **Gameplay:** Implement doors/exits - [ ] **UX:** Allow user to capture moues and use it for looking. Also allow capture release. -- [ ] **UX:** Title / end screen +- [x] **UX:** Title / end screen - [ ] **Map Design:** Design a map for captivating gameplay. +- [ ] **Map Parsing:** When unidentified character appears, seg fault does too +- [ ] **Map Parsing:** Able to run the game with no player ## Gameplay - Your on surveillance and you need diff --git a/assets/menu.xcf b/assets/menu.xcf new file mode 100644 index 0000000..4f0652d Binary files /dev/null and b/assets/menu.xcf differ diff --git a/assets/menu_background.png b/assets/menu_background.png new file mode 100644 index 0000000..3d77a52 Binary files /dev/null and b/assets/menu_background.png differ diff --git a/big.cub b/big.cub new file mode 100644 index 0000000..6276727 --- /dev/null +++ b/big.cub @@ -0,0 +1,89 @@ + + +NO ./assets/tiles256.png + +WE ./assets/bricks2.png + +SO ./assets/stonewall256.png +EA ./assets/bricksx64.png + +F 90,30,30 + + +C 100,100,200 + +FT ./assets/tiles3.png +CT ./assets/ceiling64x64.png + +-s a ./assets/lamp.png +-c b ./assets/accu.png +-s p ./assets/plant.png +-s m ./assets/broken_mirror.png +-s t ./assets/test.png + +1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +10000000000N0000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 +1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 \ No newline at end of file diff --git a/inc/cub3d.h b/inc/cub3d.h index ffa4a22..90306e3 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/05/27 15:24:09 by qmennen ### ########.fr */ +/* Updated: 2025/05/27 18:14:06 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -37,9 +37,10 @@ # define NUM_KEYS 300 # define TILE_SIZE 8 # define MINIMAP_SIZE 300 -# define NUM_MENU_OPTIONS 2 +# define MAX_MENU_OPTIONS 3 # define MENU_OPTION_START 0 -# define MENU_OPTION_EXIT 1 +# define MENU_OPTION_SCOREBOARD 1 +# define MENU_OPTION_EXIT 2 # include "MLX42.h" # include "allowed.h" diff --git a/inc/game_manager.h b/inc/game_manager.h index 5bee6cc..b424cd3 100644 --- a/inc/game_manager.h +++ b/inc/game_manager.h @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/05/27 13:40:20 by qmennen #+# #+# */ -/* Updated: 2025/05/27 15:22:43 by qmennen ### ########.fr */ +/* Updated: 2025/05/27 18:34:07 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,5 +20,6 @@ void game_manager_display(t_game_manager *manager); void game_manager_update(void *param); void game_manager_select(t_game_manager *manager); void game_manager_handle_input(t_game_manager *manager); +void game_manager_destroy(t_game_manager *manager); #endif \ No newline at end of file diff --git a/inc/game_menu.h b/inc/game_menu.h index 9e7debb..0eff555 100644 --- a/inc/game_menu.h +++ b/inc/game_menu.h @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/05/27 15:07:48 by qmennen #+# #+# */ -/* Updated: 2025/05/27 15:08:37 by qmennen ### ########.fr */ +/* Updated: 2025/05/27 18:41:31 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,8 +15,9 @@ # include "cub3d.h" -void menu_create(t_game_manager **manager); void menu_display(t_menu *menu, t_screen *screen); +t_menu *menu_create(t_game_manager *manager, char *background_path, const char *options[]); void menu_free(t_menu *menu, t_screen *screen); +void menu_toggle(t_menu *menu, t_screen *screen); #endif \ No newline at end of file diff --git a/inc/types.h b/inc/types.h index 8833248..2f984cc 100644 --- a/inc/types.h +++ b/inc/types.h @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/15 15:52:44 by qmennen #+# #+# */ -/* Updated: 2025/05/27 15:18:58 by qmennen ### ########.fr */ +/* Updated: 2025/05/27 18:42:09 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -58,7 +58,6 @@ typedef struct s_player float battery; } t_player; - typedef struct s_sprite { int n_frames; @@ -108,7 +107,6 @@ typedef struct s_screen mlx_image_t *minimap; mlx_image_t *background; mlx_image_t *hud; - mlx_image_t *menu; unsigned int width; unsigned int height; } t_screen; @@ -152,13 +150,15 @@ typedef struct s_game t_game_state state; } t_game; - typedef struct s_menu { - mlx_texture_t *background; - mlx_image_t *options[NUM_MENU_OPTIONS]; - mlx_image_t *selector; int selected_option; + int num_options; + int hidden; + char *options[MAX_MENU_OPTIONS]; + mlx_image_t *option_images[MAX_MENU_OPTIONS]; + mlx_image_t *selector; + mlx_image_t *background_image; } t_menu; @@ -166,6 +166,8 @@ typedef struct s_game_manager { t_game *game; t_menu *menu; + t_menu *end_screen; + t_menu **active_menu; } t_game_manager; #endif diff --git a/src/main.c b/src/main.c index d3680cd..b89981a 100644 --- a/src/main.c +++ b/src/main.c @@ -6,12 +6,11 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/15 16:01:29 by qmennen #+# #+# */ -/* Updated: 2025/05/27 15:08:44 by qmennen ### ########.fr */ +/* Updated: 2025/05/27 18:40:16 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ #include "cub3d.h" -#include "glad.h" int main(int argc, char **argv) { @@ -30,10 +29,14 @@ int main(int argc, char **argv) return (EXIT_FAILURE); } manager = game_manager_create(game); - menu_create(&manager); + manager->menu = menu_create(manager, "./assets/menu_background.png", + (const char *[]){"Start Game", "Scoreboard", "Exit", NULL}); + manager->end_screen = menu_create(manager, "./assets/menu_background.png", + (const char *[]){"Game Over", "Exit", NULL}); + manager->active_menu = &manager->end_screen; mlx_key_hook(game->screen->mlx, keyhandle, game); mlx_loop_hook(game->screen->mlx, game_manager_update, manager); mlx_loop(game->screen->mlx); - game_terminate(game); + game_manager_destroy(manager); return (EXIT_SUCCESS); } diff --git a/src/manager/game_manager.c b/src/manager/game_manager.c index 4a7e31f..6f867ee 100644 --- a/src/manager/game_manager.c +++ b/src/manager/game_manager.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/05/27 13:48:18 by qmennen #+# #+# */ -/* Updated: 2025/05/27 15:23:04 by qmennen ### ########.fr */ +/* Updated: 2025/05/27 18:39:36 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,7 +32,7 @@ void game_manager_display(t_game_manager *manager) game = manager->game; if (game->state == GAME_STATE_MENU) { - menu_display(manager->menu, game->screen); + menu_display(*(manager->active_menu), game->screen); } else if (game->state == GAME_STATE_PLAYING) { @@ -49,3 +49,20 @@ void game_manager_update(void *param) game_manager_display(manager); keyboard_update(manager->game); } + +void game_manager_destroy(t_game_manager *manager) +{ + if (!manager) + return; + if (manager->menu) + menu_free(manager->menu, manager->game->screen); + if (manager->end_screen) + menu_free(manager->end_screen, manager->game->screen); + print_scores(manager->game); + if (manager->game) + { + game_free(manager->game); + } + free(manager); + exit(EXIT_SUCCESS); +} \ No newline at end of file diff --git a/src/manager/game_manager_utils.c b/src/manager/game_manager_utils.c index 581b143..c9230ad 100644 --- a/src/manager/game_manager_utils.c +++ b/src/manager/game_manager_utils.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/05/27 15:22:15 by qmennen #+# #+# */ -/* Updated: 2025/05/27 15:23:11 by qmennen ### ########.fr */ +/* Updated: 2025/05/27 18:40:45 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -32,16 +32,18 @@ static void game_start(t_game *game) void game_manager_select(t_game_manager *manager) { - if (manager->menu->selected_option == 0) + int selected_option; + int menu_screen; + + menu_screen = manager->game->state == GAME_STATE_MENU; + selected_option = (*manager->active_menu)->selected_option; + if (menu_screen && selected_option == 0) { - menu_free(manager->menu, manager->game->screen); + menu_toggle(*(manager->active_menu), manager->game->screen); game_start(manager->game); + return ; } - else if (manager->menu->selected_option == 1) - { - menu_free(manager->menu, manager->game->screen); - game_terminate(manager->game); - } + } void game_manager_handle_input(t_game_manager *manager) @@ -53,14 +55,14 @@ void game_manager_handle_input(t_game_manager *manager) } if (get_key_up(manager->game, MLX_KEY_DOWN)) { - manager->menu->selected_option++; - if (manager->menu->selected_option >= NUM_MENU_OPTIONS) - manager->menu->selected_option = 0; + (*manager->active_menu)->selected_option++; + if ((*manager->active_menu)->selected_option >= (*manager->active_menu)->num_options) + (*manager->active_menu)->selected_option = 0; } if (get_key_up(manager->game, MLX_KEY_UP)) { - manager->menu->selected_option--; + (*manager->active_menu)->selected_option--; if (manager->menu->selected_option < 0) - manager->menu->selected_option = NUM_MENU_OPTIONS - 1; + manager->menu->selected_option = manager->menu->num_options - 1; } } \ No newline at end of file diff --git a/src/menu/menu.c b/src/menu/menu.c index 501fd0c..db85e45 100644 --- a/src/menu/menu.c +++ b/src/menu/menu.c @@ -6,63 +6,130 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/05/27 14:31:53 by qmennen #+# #+# */ -/* Updated: 2025/05/27 15:09:11 by qmennen ### ########.fr */ +/* Updated: 2025/05/27 18:37:03 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ # include "game_menu.h" -void menu_create(t_game_manager **manager) +static mlx_image_t *menu_load_background(mlx_t *mlx, char *background_path) { - t_menu *menu; + mlx_texture_t *background_texture; + mlx_image_t *background_image; + + if (!background_path) + return (NULL); + background_texture = mlx_load_png(background_path); + if (!background_texture) + { + printf("Failed to load background texture from %s\n", background_path); + return (NULL); + } + background_image = mlx_texture_to_image(mlx, background_texture); + return (mlx_delete_texture(background_texture), background_image); +} + +t_menu *menu_create(t_game_manager *manager, char *background_path, const char *options[]) +{ + t_menu *menu; + int i; menu = malloc(sizeof(t_menu)); if (!menu) - return; - menu->background = NULL; - ft_memset(menu->options, 0, sizeof(menu->options)); + return (NULL); + menu->background_image = menu_load_background(manager->game->screen->mlx, background_path); + if (mlx_image_to_window(manager->game->screen->mlx, menu->background_image, 0, 0) < 0) + { + printf("Failed to display background image\n"); + mlx_delete_image(manager->game->screen->mlx, menu->background_image); + return (free(menu), NULL); + } + menu->background_image->instances[0].enabled = false; + ft_memset(menu->option_images, 0, sizeof(menu->option_images)); menu->selector = 0; menu->selected_option = 0; - (*manager)->menu = menu; + menu->num_options = 0; + menu->hidden = 1; + i = -1; + while (options[++i] != NULL) + { + menu->options[i] = (char *)options[i]; + menu->num_options++; + } + return (menu); } void menu_display(t_menu *menu, t_screen *screen) { - const char *options[NUM_MENU_OPTIONS] = { - "Start Game", - "Exit" - }; int i; + if (menu->hidden) + { + menu_toggle(menu, screen); + } if (menu->selector == 0) { menu->selector = mlx_put_string(screen->mlx, ">", screen->width / 2 - 100, 0); } i = 0; - while (i < NUM_MENU_OPTIONS) + while (i < menu->num_options) { if (i == menu->selected_option && menu->selector) { menu->selector->instances[0].y = (screen->height - 100) / 2 + i * 50; } - if (menu->options[i] == 0) + if (menu->option_images[i] == 0) { - menu->options[i] = mlx_put_string(screen->mlx, options[i], - (screen->width - ft_strlen(options[i]) * 10) / 2, + menu->option_images[i] = mlx_put_string(screen->mlx, menu->options[i], + (screen->width - ft_strlen(menu->options[i]) * 10) / 2, (screen->height - 100) / 2 + i * 50); } i++; } } -void menu_free(t_menu *menu, t_screen *screen) +void menu_toggle(t_menu *menu, t_screen *screen) { + int i; + if (!menu) return; - if (menu->options[0]) - mlx_delete_image(screen->mlx, menu->options[0]); - if (menu->options[1]) - mlx_delete_image(screen->mlx, menu->options[1]); + menu->hidden = !menu->hidden; + if (menu->selector) + { + menu->selector->instances[0].enabled = !menu->hidden; + } + if (menu->background_image) + { + menu->background_image->instances[0].enabled = !menu->hidden; + } + i = -1; + while (i++ < menu->num_options) + { + if (menu->option_images[i]) + { + menu->option_images[i]->instances[0].enabled = !menu->hidden; + } + } +} + +void menu_free(t_menu *menu, t_screen *screen) +{ + int i; + + i = 0; + if (!menu) + return; + while (i < menu->num_options) + { + if (menu->option_images[i]) + { + mlx_delete_image(screen->mlx, menu->option_images[i]); + } + i++; + } if (menu->selector) mlx_delete_image(screen->mlx, menu->selector); + if (menu->background_image) + mlx_delete_image(screen->mlx, menu->background_image); free(menu); } diff --git a/src/screen.c b/src/screen.c index ff9f601..1660d6a 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/05/27 14:18:53 by qmennen ### ########.fr */ +/* Updated: 2025/05/27 16:59:17 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -23,6 +23,7 @@ int screen_create(t_game **game) screen->width = WIDTH; screen->height = HEIGHT; mlx_set_setting(MLX_FULLSCREEN, 0); + mlx_set_setting(MLX_STRETCH_IMAGE, 1); mlx = mlx_init(WIDTH, HEIGHT, TITLE, true); if (!mlx) return (FAILURE); @@ -36,9 +37,6 @@ int screen_create(t_game **game) screen->background = mlx_new_image(screen->mlx, WIDTH, HEIGHT); if (!screen->background) return (FAILURE); - screen->menu = mlx_new_image(screen->mlx, WIDTH, HEIGHT); - if (!screen->menu) - return (FAILURE); (*game)->screen = screen; return (SUCCESS); } @@ -92,16 +90,6 @@ int screen_display(t_screen *screen) printf(RED"Failed to display buffer image\n"RESET); return (FAILURE); } - // if (mlx_image_to_window(screen->mlx, screen->minimap, 175, 575) < 0) - // { - // printf(RED"Failed to display buffer image\n"RESET); - // return (FAILURE); - // } - // if (mlx_image_to_window(screen->mlx, screen->hud, 0, 0) < 0) - // { - // printf(RED"Failed to display buffer image\n"RESET); - // return (FAILURE); - // } if (!center_window(screen)) return (FAILURE); return (SUCCESS); diff --git a/src/shader/shaders.c b/src/shader/shaders.c index c6b56ff..6becdce 100644 --- a/src/shader/shaders.c +++ b/src/shader/shaders.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/05/08 18:27:59 by qmennen #+# #+# */ -/* Updated: 2025/05/27 13:39:41 by qmennen ### ########.fr */ +/* Updated: 2025/05/27 18:45:57 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -41,27 +41,20 @@ const char *read_shader(int type) fd = open(target, O_RDONLY); if (fd < 0) { - perror("Error opening shader file"); - return (NULL); + return (perror("Error opening shader file"), NULL); } shader = malloc(4096); if (!shader) { - perror("Error allocating memory for shader"); - close(fd); - return (NULL); + return (perror("Error allocating memory for shader"), close(fd), NULL); } bytes_read = read(fd, shader, 4096); if (bytes_read < 0) { - perror("Error reading shader file"); - free(shader); - close(fd); - return (NULL); + return (perror("Error reading shader file"), free(shader), close(fd), NULL); } shader[bytes_read] = '\0'; - close(fd); - return (shader); + return (close(fd), shader); } int shader_init(t_game **game)