aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ft_exit.c2
-rw-r--r--src/ft_get_music.c4
-rw-r--r--src/ft_init_lists.c1
-rw-r--r--src/ft_music.c2
-rw-r--r--src/ft_warp_level.c28
5 files changed, 31 insertions, 6 deletions
diff --git a/src/ft_exit.c b/src/ft_exit.c
index a19bff3..c022627 100644
--- a/src/ft_exit.c
+++ b/src/ft_exit.c
@@ -63,7 +63,7 @@ int
mlx_destroy_window(clist->wlist->wlx, clist->wlist->winptr);
clist->wlist->winptr = NULL;
}
- if (clist->mlist->ismusic)
+ if (clist->isoldmus && clist->wlist->inited)
{
pthread_cancel(clist->tid);
pthread_join(clist->tid, NULL);
diff --git a/src/ft_get_music.c b/src/ft_get_music.c
index 21c6331..df65a7f 100644
--- a/src/ft_get_music.c
+++ b/src/ft_get_music.c
@@ -30,8 +30,8 @@ static void
return ;
if (FT_OS == 2)
{
- ft_sprintf(mlist->music_cmd,
- "aplay -f cd -t wav -q %s", mlist->music_path);
+ ft_sprintf(mlist->music_cmd, "aplay -f cd -t wav -q %s",
+ mlist->music_path);
}
else {}
}
diff --git a/src/ft_init_lists.c b/src/ft_init_lists.c
index fd8c75d..eec8d5d 100644
--- a/src/ft_init_lists.c
+++ b/src/ft_init_lists.c
@@ -81,6 +81,7 @@ static t_cub
while (++i < 5)
clist->key_input[i] = -1;
clist->ishud = 0;
+ clist->isoldmus = 0;
clist->f_rgb = ft_init_rgb();
clist->c_rgb = ft_init_rgb();
clist->rlist = ft_init_s_ray();
diff --git a/src/ft_music.c b/src/ft_music.c
index 5eed915..d110256 100644
--- a/src/ft_music.c
+++ b/src/ft_music.c
@@ -22,7 +22,7 @@ void
t_cub *cl;
cl = (t_cub *)vargp;
- ft_printf("%s\n", cl->mlist->music_cmd);
+ cl->isoldmus = 1;
system(cl->mlist->music_cmd);
return (NULL);
}
diff --git a/src/ft_warp_level.c b/src/ft_warp_level.c
index 41d1a45..de87187 100644
--- a/src/ft_warp_level.c
+++ b/src/ft_warp_level.c
@@ -53,23 +53,41 @@ static void
cl->c_rgb = ft_init_rgb();
cl->rlist = ft_init_s_ray();
i = 0;
- while (i < 5)
+ while (i <= 5)
{
mlx_destroy_image(cl->wlist->wlx, cl->tlist[i].img);
cl->tlist[i].img = NULL;
i++;
}
- if (cl->mlist->ismusic)
+}
+
+static void
+ ft_treat_music(uint8_t isoldmus, char *tmp_mup, t_cub *cl)
+{
+ if (isoldmus && !cl->mlist->ismusic)
+ {
+ pthread_cancel(cl->tid);
+ pthread_join(cl->tid, NULL);
+ cl->isoldmus = 0;
+ }
+ else if (isoldmus && cl->mlist->ismusic
+ && ft_strncmp(tmp_mup, cl->mlist->music_path, ft_strlen(tmp_mup) + 1))
{
pthread_cancel(cl->tid);
pthread_join(cl->tid, NULL);
+ pthread_create(&cl->tid, NULL, ft_music_thread, cl);
}
+ else if (isoldmus && cl->mlist->ismusic
+ && !ft_strncmp(tmp_mup, cl->mlist->music_path, ft_strlen(tmp_mup) + 1))
+ return ;
}
int8_t
ft_warp_level(t_cub *cl)
{
char *next_path;
+ char *tmp_mup;
+ uint8_t isoldmus;
if ((uint32_t)cl->plist->pos_x == cl->mlist->nlx &&
(uint32_t)cl->plist->pos_y == cl->mlist->nly)
@@ -78,11 +96,17 @@ int8_t
cl->mlist->nlevel_path) + 1) * sizeof(char))))
return (-1);
ft_sprintf(next_path, "%s", cl->mlist->nlevel_path);
+ isoldmus = cl->mlist->ismusic;
+ if (isoldmus)
+ tmp_mup = ft_strdup(cl->mlist->music_path);
ft_del_some(cl);
ft_del_map(cl->mlist);
if (!(cl->mlist = ft_init_map()))
return (-1);
ft_parse_map(next_path, cl);
+ ft_treat_music(isoldmus, tmp_mup, cl);
+ if (isoldmus)
+ ft_memdel((void**)&tmp_mup);
ft_wall_tex_init(cl);
ft_memdel((void**)&next_path);
}