probleme leaks bizarre, reorganiser le code, mettre enemie et assets
This commit is contained in:
parent
5c39daa38c
commit
6b216f73b1
55
so_long.c
Normal file → Executable file
55
so_long.c
Normal file → Executable file
|
@ -20,13 +20,23 @@ void all_free(t_data *data)
|
|||
|
||||
int quit(t_data *data)
|
||||
{
|
||||
mlx_destroy_image(data->mlx, data->mlx_img);
|
||||
int i;
|
||||
|
||||
mlx_destroy_image(data->mlx, data->imgs.ply);
|
||||
mlx_destroy_image(data->mlx, data->imgs.bg);
|
||||
mlx_destroy_image(data->mlx, data->imgs.wall);
|
||||
mlx_destroy_image(data->mlx, data->imgs.col);
|
||||
mlx_destroy_image(data->mlx, data->imgs.exit);
|
||||
mlx_destroy_image(data->mlx, data->imgs.ene);
|
||||
mlx_clear_window(data->mlx, data->mlx_win);
|
||||
mlx_destroy_window(data->mlx, data->mlx_win);
|
||||
mlx_destroy_display(data->mlx);
|
||||
mlx_loop_end(data->mlx);
|
||||
i = 0;
|
||||
while (data->map[i])
|
||||
free(data->map[i++]);
|
||||
free(data->map);
|
||||
free(data->mlx);
|
||||
//free(data);
|
||||
exit(0);
|
||||
return (0);
|
||||
}
|
||||
|
@ -111,16 +121,16 @@ int key_hook(int key, t_data *data)
|
|||
return (0);
|
||||
}
|
||||
|
||||
char *assets(char c)
|
||||
void *assets(t_data *data, char c)
|
||||
{
|
||||
if (c == '0' || c == 'P')
|
||||
return ("assets/background.xpm");
|
||||
return (data->imgs.bg);
|
||||
else if (c == '1')
|
||||
return ("assets/wall.xpm");
|
||||
return (data->imgs.wall);
|
||||
else if (c == 'C')
|
||||
return ("assets/collectible.xpm");
|
||||
return (data->imgs.col);
|
||||
else if (c == 'E')
|
||||
return ("assets/exit.xpm");
|
||||
return (data->imgs.exit);
|
||||
return (NULL);
|
||||
}
|
||||
|
||||
|
@ -142,22 +152,11 @@ void draw(t_data *data)
|
|||
while (y < -1)
|
||||
y++;
|
||||
if (x == data->x_player && y == data->y_player)
|
||||
{
|
||||
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->w_screen / 2, data->h_screen / 2);
|
||||
}
|
||||
mlx_put_image_to_window(data->mlx, data->mlx_win, data->imgs.ply, data->w_screen / 2, data->h_screen / 2);
|
||||
else if (y < 0 || x < 0 || y >= data->h_map || data->map[y][x] == '\n' || data->map[y][x] == '\0')
|
||||
{
|
||||
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, (data->w_screen / 2) + ((x - data->x_player) * data->size), (data->h_screen / 2) + ((y - data->y_player) * data->size));
|
||||
}
|
||||
mlx_put_image_to_window(data->mlx, data->mlx_win, data->imgs.bg, (data->w_screen / 2) + ((x - data->x_player) * data->size), (data->h_screen / 2) + ((y - data->y_player) * data->size));
|
||||
else
|
||||
{
|
||||
data->mlx_img = mlx_xpm_file_to_image(data->mlx, assets(data->map[y][x]), &data->size, &data->size);
|
||||
//if (!data->mlx_img)
|
||||
//data->mlx_img = mlx_xpm_file_to_image(data->mlx, assets('0'), &data->size, &data->size);
|
||||
mlx_put_image_to_window(data->mlx, data->mlx_win, data->mlx_img, (data->w_screen / 2) + ((x - data->x_player) * data->size), (data->h_screen / 2) + ((y - data->y_player) * data->size));
|
||||
}
|
||||
mlx_put_image_to_window(data->mlx, data->mlx_win, assets(data, data->map[y][x]), (data->w_screen / 2) + ((x - data->x_player) * data->size), (data->h_screen / 2) + ((y - data->y_player) * data->size));
|
||||
y++;
|
||||
}
|
||||
x++;
|
||||
|
@ -183,12 +182,17 @@ void init_data(t_data *data)
|
|||
data->y_player = 0;
|
||||
data->mlx = mlx_init();
|
||||
mlx_get_screen_size(data->mlx, &data->w_screen, &data->h_screen);
|
||||
data->imgs.ply = mlx_xpm_file_to_image(data->mlx, "assets/player.xpm", &data->size, &data->size);
|
||||
data->imgs.bg = mlx_xpm_file_to_image(data->mlx, "assets/background.xpm", &data->size, &data->size);
|
||||
data->imgs.wall = mlx_xpm_file_to_image(data->mlx, "assets/wall.xpm", &data->size, &data->size);
|
||||
data->imgs.col = mlx_xpm_file_to_image(data->mlx, "assets/collectible.xpm", &data->size, &data->size);
|
||||
data->imgs.exit = mlx_xpm_file_to_image(data->mlx, "assets/exit.xpm", &data->size, &data->size);
|
||||
data->imgs.ene = mlx_xpm_file_to_image(data->mlx, "assets/enemy.xpm", &data->size, &data->size);
|
||||
}
|
||||
|
||||
void get_map(char *argv[], t_data *data)
|
||||
{
|
||||
char *tmp_map;
|
||||
//char *tmp_map2;
|
||||
char *map;
|
||||
int i;
|
||||
int fd;
|
||||
|
@ -201,19 +205,14 @@ void get_map(char *argv[], t_data *data)
|
|||
tmp_map = NULL;
|
||||
while (i == 0 || tmp_map != NULL)
|
||||
{
|
||||
if (tmp_map)
|
||||
free(tmp_map);
|
||||
tmp_map = get_next_line(fd);
|
||||
if (tmp_map && map)
|
||||
{
|
||||
map = ft_strjoin_free(map, tmp_map, 1);
|
||||
}
|
||||
else if (tmp_map)
|
||||
map = ft_strdup(tmp_map);
|
||||
free(tmp_map);
|
||||
i++;
|
||||
}
|
||||
if (tmp_map)
|
||||
free(tmp_map);
|
||||
data->map = ft_split(map, '\n');
|
||||
data->h_map = i - 1;
|
||||
free(map);
|
||||
|
|
Loading…
Reference in a new issue