/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* so_long.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2022/12/09 14:18:18 by erey-bet #+# #+# */ /* Updated: 2022/12/11 18:48:15 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ #include "so_long.h" #include void free_img(t_data *data) { mlx_destroy_image(data->mlx, data->mlx_img); free(data->mlx_img); } int quit(t_data *data) { if (data->mlx_img != NULL) free_img(data); free(data->mlx_win); free(data->mlx); exit(0); return (0); } int key_hook(int key, t_data *data) { if (key == K_ESC) quit(data); else if (key == K_LEFT) data->x_player -= 128; else if (key == K_RIGHT) data->x_player += 128; else if (key == K_UP) data->y_player -= 128; else if (key == K_DOWN) data->y_player += 128; data->update = 1; return (0); } int render(t_data *data) { int x; int y; if (data->update == 1) { x = -1; while (++x < (data->w_screen / 128)) { y = -1; while (++y < (data->h_screen / 128)) { if (x * 128 != data->x_player || y * 128 != data->y_player) { data->mlx_img = mlx_xpm_file_to_image(data->mlx, "assets/background.xpm", &data->size, &data->size); mlx_put_image_to_window(data->mlx, data->mlx_win, data->mlx_img, x * 128, y *128); } } } data->mlx_img = mlx_xpm_file_to_image(data->mlx, "assets/player.xpm", &data->size, &data->size); mlx_put_image_to_window(data->mlx, data->mlx_win, data->mlx_img, data->x_player, data->y_player); data->update = 0; } return (0); } void init_data(t_data *data) { data->update = 1; data->size = 128; data->x_player = 0; data->y_player = 0; data->h_screen = 768; data->w_screen = 768; data->mlx = mlx_init(); data->mlx_win = mlx_new_window(data->mlx, data->w_screen, data->h_screen, "lili meli"); } int main(int argc, char *argv[]) { t_data data; (void)argc; (void)argv; map = get_map(argc, argv); init_data(&data); mlx_hook(data.mlx_win, 17, 0, quit, &data); mlx_key_hook(data.mlx_win, key_hook, &data); mlx_loop_hook(data.mlx, render, &data); mlx_loop(data.mlx); return (0); }