/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* main.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: kcolin +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/07/17 14:14:30 by kcolin #+# #+# */ /* Updated: 2025/08/18 20:05:29 by tchampio ### ########.fr */ /* */ /* ************************************************************************** */ #include "../libft/includes/libft.h" #include "../mlx/mlx.h" #include "consts.h" #include "cub3d_data.h" #include "player/move.h" #include "draw/draw_map.h" #include "raycast/raycaster.h" #include "renderer/render.h" #include "raycast/ray.h" #include "sprites/sprite_caster.h" #include "utils/inits.h" #include "sprites/sprite.h" #include "utils/hooks.h" #include "utils/inits.h" #include #include #include #include #include #include #include "utils/time.h" #include "sprites/move_sprites.h" int game_loop(t_cub3d_data *data) { t_ray ray; int fps; char *fps_string; data->last_tick = get_milliseconds(); reset_matrix(data); move_player(data); move_sprites(data); raycaster(data, &ray); sprite_caster(data); matrix_to_image(data); draw_map(data->map, &data->player, data->img_data); mlx_put_image_to_window(data->mlx, data->mlx_win, data->img_data->img, 0, 0); mlx_string_put(data->mlx, data->mlx_win, 10, 10, 0x00FFFFFF, COMPILED_TEXT); data->delta = (get_milliseconds() - data->last_tick); fps = 1000000.0 / data->delta; fps_string = ft_itoa(fps); mlx_string_put(data->mlx, data->mlx_win, WIDTH - 20, 15, 0xFF0000, fps_string); free(fps_string); return (0); } int main(int argc, char **argv) { t_cub3d_data data; ft_printf("Cub3d - Call of Duty Zombies shareware edition. Credits to " "\e[0;32mkcolin\e[0m, \e[0;32mB.\e[0m (for some textures) and " "\e[0;32mtchampio\e[0m\n"); if (argc < 2) return (ft_printf("Error: Missing cub3d file\n"), 1); init_cub3d_data(&data, argv); mlx_hook(data.mlx_win, KeyPress, KeyPressMask, keypress_handler, &data); mlx_hook(data.mlx_win, KeyRelease, KeyReleaseMask, keyrelease_handler, &data); mlx_loop_hook(data.mlx, game_loop, &data); mlx_loop(data.mlx); }