/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* game.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/26 12:59:53 by erey-bet #+# #+# */ /* Updated: 2023/06/15 12:40:32 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ #include "game.h" static void destroy(t_game *game) { if (game->textures[0]) { mlx_delete_texture(game->textures[0]); if (game->textures[1]) { mlx_delete_texture(game->textures[1]); if (game->textures[2]) { mlx_delete_texture(game->textures[2]); if (game->textures[3]) { mlx_delete_texture(game->textures[3]); if (game->mlx) mlx_terminate(game->mlx); } } } } } static void hook(void *param) { t_game *game; game = param; if (manage_keys(game)) raycasting(game); } int start_game(t_map map) { t_game game; if (init(map, &game)) { destroy(&game); return (1); } game.window = mlx_new_image(game.mlx, WIDTH, HEIGHT); if (!game.window) { mlx_terminate(game.mlx); destroy(&game); return (1); } if (mlx_image_to_window(game.mlx, game.window, 0, 0) == -1) { mlx_terminate(game.mlx); destroy(&game); return (1); } raycasting(&game); mlx_loop_hook(game.mlx, &hook, &game); mlx_loop(game.mlx); destroy(&game); return (0); }