From 58b408a130b2bec0d401b43d77ded34c9a8d34f9 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Wed, 25 Mar 2020 18:46:15 +0100 Subject: Fixed sprite parse --- src/ft_get_map.c | 7 +++++-- src/ft_get_sprite.c | 2 ++ src/ft_tex_sprites_extra_init.c | 1 - 3 files changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/ft_get_map.c b/src/ft_get_map.c index 4cb4941..d2f0a31 100644 --- a/src/ft_get_map.c +++ b/src/ft_get_map.c @@ -17,7 +17,7 @@ #include static void - ft_linecpy(char *line, char *mapl, size_t start) + ft_linecpy(char *line, char *mapl, size_t start, t_cub *cl) { size_t i; size_t j; @@ -29,6 +29,9 @@ static void while (i < slen && line[i]) { mapl[j] = line[i]; + if (mapl[j] - 48 > 2 && mapl[j] - 48 < 10 + && mapl[j] - 48 > cl->mlist.topsp) + ft_error(FT_RET_MAP_ERR, FT_ERR_UNDEF_SPRITE, cl); i++; j++; } @@ -47,7 +50,7 @@ static int8_t return (-1); } ft_linecpy(line, clist->mlist.mapl, - clist->mlist.mapl_len); + clist->mlist.mapl_len, clist); clist->mlist.mapl_len += ft_strlen(line) + 1; return (0); } diff --git a/src/ft_get_sprite.c b/src/ft_get_sprite.c index 05b13b2..9e84e93 100644 --- a/src/ft_get_sprite.c +++ b/src/ft_get_sprite.c @@ -46,6 +46,8 @@ static int8_t return (-1); i++; } + if (i + 2 > clist->mlist.topsp) + clist->mlist.topsp = i + 2; return (0); } diff --git a/src/ft_tex_sprites_extra_init.c b/src/ft_tex_sprites_extra_init.c index 9ff7612..84684be 100644 --- a/src/ft_tex_sprites_extra_init.c +++ b/src/ft_tex_sprites_extra_init.c @@ -31,5 +31,4 @@ void &cl->tlist[i + 7].endian); i++; } - cl->mlist.topsp = i + 1; } -- cgit v1.2.3 From 94c06bc705b8598eb9ce30514f14f583f2538de8 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Wed, 25 Mar 2020 19:27:47 +0100 Subject: Solved segfault, fuck stack --- src/ft_draw_sprite.c | 3 ++- src/ft_sort_s_t.c | 31 +++++++++++++++++++++++++++---- 2 files changed, 29 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 5c0fe41..7f4e913 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -39,8 +39,9 @@ static void void ft_sort_sprites(t_cub *cl, int16_t it, int16_t jt) { - float dist_tab[8][4096]; + float **dist_tab; + ft_alloc_dist_tab(&dist_tab, cl); while (++jt < cl->mlist.sprite_var) { while (++it < cl->mlist.sprite_nbr[jt]) diff --git a/src/ft_sort_s_t.c b/src/ft_sort_s_t.c index 24ed358..6af1d43 100644 --- a/src/ft_sort_s_t.c +++ b/src/ft_sort_s_t.c @@ -12,10 +12,27 @@ #include #include +#include #include +void + ft_alloc_dist_tab(float ***dist_tab, t_cub *cl) +{ + uint16_t i; + + if (!(*dist_tab = (float **)malloc(8 * sizeof(float*)))) + ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, cl); + i = 0; + while (i < 8) + { + if (!((*dist_tab)[i] = (float *)malloc(4096 * sizeof(float)))) + ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, cl); + i++; + } +} + static void - ft_init_st(uint16_t sprite_var, int32_t st_o[8]) + ft_init_st(uint16_t sprite_var, int32_t *st_o) { int8_t i; @@ -25,16 +42,17 @@ static void } void - ft_sort_s_t(t_cub *cl, float dist_tab[8][4096]) + ft_sort_s_t(t_cub *cl, float **dist_tab) { - int16_t i; + int16_t i; int32_t tmp; float tmp_i[4096]; i = -1; ft_init_st(cl->mlist.sprite_var, cl->mlist.st_o); while (++i < cl->mlist.sprite_var) - if (dist_tab[i][0] < dist_tab[i + 1][0]) + { + if (i < 7 && dist_tab[i][0] < dist_tab[i + 1][0]) { tmp = cl->mlist.st_o[i]; cl->mlist.st_o[i] = cl->mlist.st_o[i + 1]; @@ -44,4 +62,9 @@ void ft_memcpy(dist_tab[i + 1], tmp_i, 4096); i = -1; } + } + i = -1; + while (++i < 8) + ft_memdel((void*)&dist_tab[i]); + ft_memdel((void*)&dist_tab); } -- cgit v1.2.3 From fe2d41368dce9f3594aee2491a36841a88a6a28d Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Thu, 26 Mar 2020 13:24:41 +0100 Subject: wqe --- src/ft_draw_sprite.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 7f4e913..0c5a8b2 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -51,7 +51,6 @@ void (cl->plist.pos_x - cl->sprites[jt][it].s_pos_x) + (cl->plist.pos_y - cl->sprites[jt][it].s_pos_y) * (cl->plist.pos_y - cl->sprites[jt][it].s_pos_y)); - cl->mlist.sprite_order[jt][it] = it; } it = -1; } -- cgit v1.2.3 From 18bfbab89a7ceace062e973d5f629a02c58c4f39 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Thu, 26 Mar 2020 13:31:39 +0100 Subject: tabs --- src/ft_sort_s_t.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/ft_sort_s_t.c b/src/ft_sort_s_t.c index 6af1d43..6a74c61 100644 --- a/src/ft_sort_s_t.c +++ b/src/ft_sort_s_t.c @@ -18,7 +18,7 @@ void ft_alloc_dist_tab(float ***dist_tab, t_cub *cl) { - uint16_t i; + uint16_t i; if (!(*dist_tab = (float **)malloc(8 * sizeof(float*)))) ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, cl); @@ -34,7 +34,7 @@ void static void ft_init_st(uint16_t sprite_var, int32_t *st_o) { - int8_t i; + int8_t i; i = -1; while (++i < sprite_var) -- cgit v1.2.3 From 68c97dfbf8da75a180a2996ee8c6a0861638220b Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Thu, 26 Mar 2020 13:32:29 +0100 Subject: tab --- src/ft_get_sprite.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/ft_get_sprite.c b/src/ft_get_sprite.c index 9e84e93..64a8284 100644 --- a/src/ft_get_sprite.c +++ b/src/ft_get_sprite.c @@ -47,7 +47,7 @@ static int8_t i++; } if (i + 2 > clist->mlist.topsp) - clist->mlist.topsp = i + 2; + clist->mlist.topsp = i + 2; return (0); } -- cgit v1.2.3 From d29165bbb95aef86aeb9d9d9668d035b4430769f Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Thu, 26 Mar 2020 14:15:26 +0100 Subject: Cool malloc --- src/ft_draw_sprite.c | 3 ++- src/ft_sort_s_t.c | 14 ++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 0c5a8b2..423080d 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -41,7 +41,8 @@ void { float **dist_tab; - ft_alloc_dist_tab(&dist_tab, cl); + if (!(dist_tab = ft_alloc_dist_tab())) + ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, cl); while (++jt < cl->mlist.sprite_var) { while (++it < cl->mlist.sprite_nbr[jt]) diff --git a/src/ft_sort_s_t.c b/src/ft_sort_s_t.c index 6a74c61..6c08882 100644 --- a/src/ft_sort_s_t.c +++ b/src/ft_sort_s_t.c @@ -15,20 +15,22 @@ #include #include -void - ft_alloc_dist_tab(float ***dist_tab, t_cub *cl) +float + **ft_alloc_dist_tab(void) { uint16_t i; + float **dist_tab; - if (!(*dist_tab = (float **)malloc(8 * sizeof(float*)))) - ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, cl); + if (!(dist_tab = (float **)malloc(8 * sizeof(float*)))) + return (NULL); i = 0; while (i < 8) { - if (!((*dist_tab)[i] = (float *)malloc(4096 * sizeof(float)))) - ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, cl); + if (!(dist_tab[i] = (float *)malloc(4096 * sizeof(float)))) + return (NULL); i++; } + return (dist_tab); } static void -- cgit v1.2.3 From 9967f9792bf4c828dd805a8e65cf20aabcf05f31 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Thu, 26 Mar 2020 14:33:15 +0100 Subject: important bug fix --- src/ft_draw_sprite.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 423080d..19ceb9f 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -52,6 +52,7 @@ void (cl->plist.pos_x - cl->sprites[jt][it].s_pos_x) + (cl->plist.pos_y - cl->sprites[jt][it].s_pos_y) * (cl->plist.pos_y - cl->sprites[jt][it].s_pos_y)); + cl->mlist.sprite_order[jt][it] = it; } it = -1; } -- cgit v1.2.3 From b5982b835d46ba6ae7363b60254ebfa2c3439a4d Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Thu, 26 Mar 2020 14:58:02 +0100 Subject: Solved 9th sprite problem --- src/ft_draw_sprite.c | 3 +-- src/ft_draw_sprite_extra.c | 5 +++-- src/ft_get_sprite_spawns.c | 2 +- src/ft_init_map.c | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 19ceb9f..615bbd3 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -56,13 +56,12 @@ void } it = -1; } - it = -1; jt = -1; while (++jt < cl->mlist.sprite_var) { + it = -1; while (++it < cl->mlist.sprite_nbr[jt] - 1) ft_sort_sprites_norme(dist_tab[jt], &it, jt, cl); - it = -1; } ft_sort_s_t(cl, dist_tab); } diff --git a/src/ft_draw_sprite_extra.c b/src/ft_draw_sprite_extra.c index 0830d2c..e592da0 100644 --- a/src/ft_draw_sprite_extra.c +++ b/src/ft_draw_sprite_extra.c @@ -61,8 +61,9 @@ void { while (++i < cl->mlist.sprite_nbr[j]) { - sprite = cl->sprites[cl->mlist.st_o[j]][cl->mlist.sprite_order[cl->mlist - .st_o[j]][i]]; + sprite = + cl->sprites[cl->mlist.st_o[j]][cl->mlist.sprite_order[ + cl->mlist.st_o[j]][i]]; sprite.current_sprite = (cl->mlist.st_o[j] == 0) ? 4 : cl->mlist.st_o[j] + 7; sprite.spritey = sprite.s_pos_x - (cl->plist.pos_x - 0.5); diff --git a/src/ft_get_sprite_spawns.c b/src/ft_get_sprite_spawns.c index f4d7e1e..e8eafa9 100644 --- a/src/ft_get_sprite_spawns.c +++ b/src/ft_get_sprite_spawns.c @@ -38,7 +38,7 @@ void x = 0; } if (clist->sprites[s_n][(i - 1 < 0) ? (0) : (i - 1)].s_pos_x != 0 - && s_n + 1 < 7) + && s_n + 1 <= 7) { ft_get_next_sprite(clist, s_n + 1, c + 1, 0); } diff --git a/src/ft_init_map.c b/src/ft_init_map.c index d252f2e..fb03bfd 100644 --- a/src/ft_init_map.c +++ b/src/ft_init_map.c @@ -64,7 +64,7 @@ int8_t mlist->sprite_var = 0; mlist->weapon_var = 0; mlist->topsp = 0; - ft_bzero(mlist->sprite_nbr, 4096); + ft_bzero(mlist->sprite_nbr, 8); ft_bzero(mlist->sprite_order, 4096); ft_bzero(mlist->st_o, 4096); ft_bzero(mlist->traps_order, 512); -- cgit v1.2.3 From dff28bcd5f1c5ab1f5ed2f8158782ac332bda6c3 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Thu, 26 Mar 2020 15:09:26 +0100 Subject: Ok --- src/ft_draw_sprite_extra.c | 1 + src/ft_get_sprite_spawns.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/ft_draw_sprite_extra.c b/src/ft_draw_sprite_extra.c index e592da0..180702b 100644 --- a/src/ft_draw_sprite_extra.c +++ b/src/ft_draw_sprite_extra.c @@ -47,6 +47,7 @@ static void (1 + sprite->transformx / sprite->transformy); } +#include void ft_calc_sprite(t_cub *cl) { diff --git a/src/ft_get_sprite_spawns.c b/src/ft_get_sprite_spawns.c index e8eafa9..affcf57 100644 --- a/src/ft_get_sprite_spawns.c +++ b/src/ft_get_sprite_spawns.c @@ -37,8 +37,8 @@ void } x = 0; } - if (clist->sprites[s_n][(i - 1 < 0) ? (0) : (i - 1)].s_pos_x != 0 - && s_n + 1 <= 7) + if (/* clist->sprites[s_n][(i - 1 < 0) ? (0) : (i - 1)].s_pos_x != 0 + && */ s_n + 1 <= 7) { ft_get_next_sprite(clist, s_n + 1, c + 1, 0); } -- cgit v1.2.3 From 7f57c427d26d8b0c63feac5d0e7b8249707913eb Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Thu, 26 Mar 2020 16:11:56 +0100 Subject: Stack overflow fix --- src/ft_del_tex.c | 2 +- src/ft_draw_sprite_extra.c | 1 - src/ft_init_map.c | 6 +++--- src/ft_select_get.c | 4 ++-- src/ft_warp_level.c | 2 ++ 5 files changed, 8 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/ft_del_tex.c b/src/ft_del_tex.c index 70f23fa..fc0cf99 100644 --- a/src/ft_del_tex.c +++ b/src/ft_del_tex.c @@ -86,7 +86,7 @@ static void void ft_del_tex(t_cub *cl) { - if (cl->wlist.inited) + if (cl->walltexgood == 1) { if (cl->tlist[0].img) mlx_destroy_image(cl->wlist.wlx, cl->tlist[0].img); diff --git a/src/ft_draw_sprite_extra.c b/src/ft_draw_sprite_extra.c index 180702b..e592da0 100644 --- a/src/ft_draw_sprite_extra.c +++ b/src/ft_draw_sprite_extra.c @@ -47,7 +47,6 @@ static void (1 + sprite->transformx / sprite->transformy); } -#include void ft_calc_sprite(t_cub *cl) { diff --git a/src/ft_init_map.c b/src/ft_init_map.c index fb03bfd..b3bfa46 100644 --- a/src/ft_init_map.c +++ b/src/ft_init_map.c @@ -45,7 +45,7 @@ static int8_t uint8_t i; i = 0; - while (i < 9) + while (i < 8) { if (!(mlist->sprite_path[i] = (char*)ft_calloc(1, sizeof(char)))) return (-1); @@ -65,8 +65,8 @@ int8_t mlist->weapon_var = 0; mlist->topsp = 0; ft_bzero(mlist->sprite_nbr, 8); - ft_bzero(mlist->sprite_order, 4096); - ft_bzero(mlist->st_o, 4096); + ft_bzero(mlist->sprite_order, 8); + ft_bzero(mlist->st_o, 8); ft_bzero(mlist->traps_order, 512); ft_bzero(mlist->heals_order, 64); mlist->weaps_nbr[0] = 0; diff --git a/src/ft_select_get.c b/src/ft_select_get.c index 143dc09..88507a3 100644 --- a/src/ft_select_get.c +++ b/src/ft_select_get.c @@ -33,10 +33,10 @@ static int8_t return (-1); else if (ret == 5 && (clist->mlist.sprite_path[0][0])) return (-1); - else if (ret == 6 && ((clist->f_rgb.r != -1) || (clist->f_rgb.g != -1) + if (ret == 6 && ((clist->f_rgb.r != -1) || (clist->f_rgb.g != -1) || (clist->f_rgb.b != -1))) return (-1); - else if (ret == 7 && ((clist->c_rgb.r != -1) || (clist->c_rgb.g != -1) + if (ret == 7 && ((clist->c_rgb.r != -1) || (clist->c_rgb.g != -1) || (clist->c_rgb.b != -1))) return (-1); return (ret); diff --git a/src/ft_warp_level.c b/src/ft_warp_level.c index 5055445..b6d1c38 100644 --- a/src/ft_warp_level.c +++ b/src/ft_warp_level.c @@ -64,6 +64,7 @@ static int8_t return (-1); if (ft_init_map(&cl->mlist) < 0) return (-1); + ft_printf("[r %d] [g %d] [b %d]\n", cl->c_rgb.r, cl->c_rgb.g, cl->c_rgb.b); i = 0; while (i < 5) { @@ -101,6 +102,7 @@ int8_t char *tmp_mup; uint8_t isoldmus; + cl->walltexgood = 0; if (!(next_path = (char *)malloc((ft_strlen(path) + 1) * sizeof(char)))) return (-1); ft_sprintf(next_path, "%s", path); -- cgit v1.2.3 From fe1ebcad396caed49253df48ad87ccd9261246bf Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Thu, 26 Mar 2020 16:26:01 +0100 Subject: Better parse --- src/ft_init_map.c | 2 +- src/ft_select_get.c | 8 ++++---- src/ft_warp_level.c | 1 - 3 files changed, 5 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/ft_init_map.c b/src/ft_init_map.c index b3bfa46..f2f2d94 100644 --- a/src/ft_init_map.c +++ b/src/ft_init_map.c @@ -45,7 +45,7 @@ static int8_t uint8_t i; i = 0; - while (i < 8) + while (i < 9) { if (!(mlist->sprite_path[i] = (char*)ft_calloc(1, sizeof(char)))) return (-1); diff --git a/src/ft_select_get.c b/src/ft_select_get.c index 88507a3..a2bd257 100644 --- a/src/ft_select_get.c +++ b/src/ft_select_get.c @@ -33,11 +33,11 @@ static int8_t return (-1); else if (ret == 5 && (clist->mlist.sprite_path[0][0])) return (-1); - if (ret == 6 && ((clist->f_rgb.r != -1) || (clist->f_rgb.g != -1) - || (clist->f_rgb.b != -1))) + if (ret == 6 && (((clist->f_rgb.r != -1) || (clist->f_rgb.g != -1) + || (clist->f_rgb.b != -1)) || clist->mlist.fl_tex_path[0])) return (-1); - if (ret == 7 && ((clist->c_rgb.r != -1) || (clist->c_rgb.g != -1) - || (clist->c_rgb.b != -1))) + if (ret == 7 && (((clist->c_rgb.r != -1) || (clist->c_rgb.g != -1) + || (clist->c_rgb.b != -1)) || clist->mlist.ce_tex_path[0])) return (-1); return (ret); } diff --git a/src/ft_warp_level.c b/src/ft_warp_level.c index b6d1c38..90bd9f7 100644 --- a/src/ft_warp_level.c +++ b/src/ft_warp_level.c @@ -64,7 +64,6 @@ static int8_t return (-1); if (ft_init_map(&cl->mlist) < 0) return (-1); - ft_printf("[r %d] [g %d] [b %d]\n", cl->c_rgb.r, cl->c_rgb.g, cl->c_rgb.b); i = 0; while (i < 5) { -- cgit v1.2.3 From 7bb6cbe6543ebae891dfd0c495602ca6dfce5a93 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Fri, 27 Mar 2020 13:09:41 +0100 Subject: Ready to try traps --- src/ft_get_sprite_spawns.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src') diff --git a/src/ft_get_sprite_spawns.c b/src/ft_get_sprite_spawns.c index affcf57..8a92a3c 100644 --- a/src/ft_get_sprite_spawns.c +++ b/src/ft_get_sprite_spawns.c @@ -14,6 +14,24 @@ #include #include +/* +** cl->sprite[] index summary +** -------------------------- +** 0: sprite 2 - tlist[4] +** 1: sprite 3 - tlist[8] +** 2: sprite 4 - tlist[9] +** 3: sprite 5 - tlist[10] +** 4: sprite 6 - tlist[11] +** 5: sprite 7 - tlist[12] +** 6: sprite 8 - tlist[13] +** 7: sprite 9 - tlist[14] +** 8: trap - tlist[15] +** 9: heal - tlist[17] +** 10: weapon one - tlist[18] +** 11: weapon two - tlist[19] +** 12: weapon three - tlist[20] +*/ + void ft_get_next_sprite(t_cub *clist, int s_n, char c, size_t x) { -- cgit v1.2.3 From b626f171f26f709b27e790911b48f7a4272dc707 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Fri, 27 Mar 2020 13:55:24 +0100 Subject: In progress --- src/ft_del_sprites_lists.c | 4 ++-- src/ft_get_spawns.c | 2 +- src/ft_get_sprite_spawns.c | 59 +++++++++++++++++++++++++++++++++------------- src/ft_get_traps.c | 56 +++++++++++++++++++++---------------------- src/ft_init_map.c | 13 ++++++---- src/ft_init_sprites.c | 29 +++++++++++++++++++---- src/ft_raycasting.c | 2 +- 7 files changed, 106 insertions(+), 59 deletions(-) (limited to 'src') diff --git a/src/ft_del_sprites_lists.c b/src/ft_del_sprites_lists.c index bb382e6..613ac82 100644 --- a/src/ft_del_sprites_lists.c +++ b/src/ft_del_sprites_lists.c @@ -17,10 +17,10 @@ void ft_del_sprites_lists(t_cub *clist) { - uint8_t i; + int8_t i; i = 0; - while (i < 8) + while (i < FT_TOTAL_SPRT) { ft_memdel((void*)&clist->sprites[i]); i++; diff --git a/src/ft_get_spawns.c b/src/ft_get_spawns.c index 6422785..9bd7040 100644 --- a/src/ft_get_spawns.c +++ b/src/ft_get_spawns.c @@ -19,7 +19,7 @@ void { ft_get_player_spawn(&cl->plist, cl); ft_get_sprite_spawn(cl); - ft_get_trap_spawn(cl); + /* ft_get_trap_spawn(cl); */ ft_get_heal_spawn(cl); if (cl->isdead == 0) ft_get_weapon_spawn(cl); diff --git a/src/ft_get_sprite_spawns.c b/src/ft_get_sprite_spawns.c index 8a92a3c..047523a 100644 --- a/src/ft_get_sprite_spawns.c +++ b/src/ft_get_sprite_spawns.c @@ -17,22 +17,47 @@ /* ** cl->sprite[] index summary ** -------------------------- -** 0: sprite 2 - tlist[4] -** 1: sprite 3 - tlist[8] -** 2: sprite 4 - tlist[9] -** 3: sprite 5 - tlist[10] -** 4: sprite 6 - tlist[11] -** 5: sprite 7 - tlist[12] -** 6: sprite 8 - tlist[13] -** 7: sprite 9 - tlist[14] -** 8: trap - tlist[15] -** 9: heal - tlist[17] -** 10: weapon one - tlist[18] -** 11: weapon two - tlist[19] -** 12: weapon three - tlist[20] +** 0: sprite 2 - tlist[4] - 4096 +** 1: sprite 3 - tlist[8] - 4096 +** 2: sprite 4 - tlist[9] - 4096 +** 3: sprite 5 - tlist[10] - 4096 +** 4: sprite 6 - tlist[11] - 4096 +** 5: sprite 7 - tlist[12] - 4096 +** 6: sprite 8 - tlist[13] - 4096 +** 7: sprite 9 - tlist[14] - 4096 +** 8: trap - tlist[15] - 512 +** 9: heal - tlist[17] - 64 +** 10: weapon one - tlist[18] - 4 +** 11: weapon two - tlist[19] - 4 +** 12: weapon three - tlist[20] - 4 */ -void +static void + ft_check_amount(t_cub *cl, int s_n) +{ + if (s_n < 8 && cl->mlist.sprite_nbr[s_n] >= 4096) + ft_map_error(FT_ERR_TOO_MUCH_SPRT, cl); + else if (s_n == 8 && cl->mlist.sprite_nbr[s_n] >= 512) + ft_map_error(FT_ERR_TOO_MUCH_TRAPS, cl); + else if (s_n == 9 && cl->mlist.sprite_nbr[s_n] >= 64) + ft_map_error(FT_ERR_TOO_MUCH_HEALS, cl); + else if (s_n == 10 && cl->mlist.sprite_nbr[s_n] >= 4) + ft_map_error(FT_ERR_TOO_MUCH_W_ONE, cl); + else if (s_n == 11 && cl->mlist.sprite_nbr[s_n] >= 4) + ft_map_error(FT_ERR_TOO_MUCH_W_TWO, cl); + else if (s_n == 12 && cl->mlist.sprite_nbr[s_n] >= 4) + ft_map_error(FT_ERR_TOO_MUCH_W_THREE, cl); +} + +static int8_t + ft_other_next_sprite(t_cub *cl, int s_n) +{ + if (s_n == 7) + return (ft_get_next_sprite(cl, 8, 'T', 0)); + return (0); +} + +int8_t ft_get_next_sprite(t_cub *clist, int s_n, char c, size_t x) { size_t y; @@ -55,11 +80,11 @@ void } x = 0; } + ft_check_amount(clist, s_n); if (/* clist->sprites[s_n][(i - 1 < 0) ? (0) : (i - 1)].s_pos_x != 0 && */ s_n + 1 <= 7) - { - ft_get_next_sprite(clist, s_n + 1, c + 1, 0); - } + return (ft_get_next_sprite(clist, s_n + 1, c + 1, 0)); + return (ft_other_next_sprite(clist, s_n)); } void diff --git a/src/ft_get_traps.c b/src/ft_get_traps.c index fef3179..db0699c 100644 --- a/src/ft_get_traps.c +++ b/src/ft_get_traps.c @@ -14,35 +14,35 @@ #include #include -void - ft_get_trap_spawn(t_cub *clist) -{ - size_t x; - size_t y; - uint16_t i; +/* void */ +/* ft_get_trap_spawn(t_cub *clist) */ +/* { */ +/* size_t x; */ +/* size_t y; */ +/* uint16_t i; */ - x = 1; - y = 1; - i = 0; - while (clist->mlist.map[y]) - { - while (clist->mlist.map[y][x]) - { - if (clist->mlist.map[y][x] == 'T') - { - clist->mlist.traps_nbr++; - if (clist->mlist.traps_nbr > 512) - ft_map_error(FT_ERR_TOO_MUCH_TRAPS, clist); - clist->traps[i].s_pos_x = x; - clist->traps[i].s_pos_y = y; - i++; - } - x++; - } - x = 1; - y++; - } -} +/* x = 1; */ +/* y = 1; */ +/* i = 0; */ +/* while (clist->mlist.map[y]) */ +/* { */ +/* while (clist->mlist.map[y][x]) */ +/* { */ +/* if (clist->mlist.map[y][x] == 'T') */ +/* { */ +/* clist->mlist.traps_nbr++; */ +/* if (clist->mlist.traps_nbr > 512) */ +/* ft_map_error(FT_ERR_TOO_MUCH_TRAPS, clist); */ +/* clist->traps[i].s_pos_x = x; */ +/* clist->traps[i].s_pos_y = y; */ +/* i++; */ +/* } */ +/* x++; */ +/* } */ +/* x = 1; */ +/* y++; */ +/* } */ +/* } */ int8_t ft_get_traps(char **words, t_cub *clist) diff --git a/src/ft_init_map.c b/src/ft_init_map.c index f2f2d94..e85c6a6 100644 --- a/src/ft_init_map.c +++ b/src/ft_init_map.c @@ -57,6 +57,8 @@ static int8_t int8_t ft_init_map_norme(t_map *mlist) { + int8_t i; + mlist->darklvl = 0; mlist->scale = 0; mlist->nlx = 0; @@ -64,10 +66,12 @@ int8_t mlist->sprite_var = 0; mlist->weapon_var = 0; mlist->topsp = 0; - ft_bzero(mlist->sprite_nbr, 8); - ft_bzero(mlist->sprite_order, 8); - ft_bzero(mlist->st_o, 8); - ft_bzero(mlist->traps_order, 512); + ft_bzero(mlist->sprite_nbr, FT_TOTAL_SPRT); + ft_bzero(mlist->sprite_order, FT_TOTAL_SPRT); + i = -1; + while (++i < FT_TOTAL_SPRT) + ft_bzero(mlist->sprite_order[i], 4096); + ft_bzero(mlist->st_o, FT_TOTAL_SPRT); ft_bzero(mlist->heals_order, 64); mlist->weaps_nbr[0] = 0; mlist->weaps_nbr[1] = 0; @@ -99,7 +103,6 @@ int8_t mlist->isskybox = 0; mlist->istraps = 0; mlist->isheals = 0; - mlist->traps_nbr = 0; mlist->heals_nbr = 0; return (ft_init_map_norme(mlist)); } diff --git a/src/ft_init_sprites.c b/src/ft_init_sprites.c index 2099089..1a23c26 100644 --- a/src/ft_init_sprites.c +++ b/src/ft_init_sprites.c @@ -16,19 +16,38 @@ #include #include +/* +** cl->sprite[] index summary +** -------------------------- +** 0: sprite 2 - tlist[4] - 4096 +** 1: sprite 3 - tlist[8] - 4096 +** 2: sprite 4 - tlist[9] - 4096 +** 3: sprite 5 - tlist[10] - 4096 +** 4: sprite 6 - tlist[11] - 4096 +** 5: sprite 7 - tlist[12] - 4096 +** 6: sprite 8 - tlist[13] - 4096 +** 7: sprite 9 - tlist[14] - 4096 +** 8: trap - tlist[15] - 512 +** 9: heal - tlist[17] - 64 +** 10: weapon one - tlist[18] - 4 +** 11: weapon two - tlist[19] - 4 +** 12: weapon three - tlist[20] - 4 +*/ + int8_t ft_init_sprites(t_sprite ***sprites) { - uint8_t i; + int8_t i; - if (!(*sprites = (t_sprite**)ft_calloc(8, sizeof(t_sprite*)))) + if (!(*sprites = (t_sprite**)ft_calloc(FT_TOTAL_SPRT, sizeof(t_sprite*)))) return (-1); - i = 0; - while (i < 8) + i = -1; + while (++i < 8) { if (!(*((*sprites) + i) = (t_sprite*)ft_calloc(4096, sizeof(t_sprite)))) return (-1); - i++; } + if (!(*((*sprites) + 8) = (t_sprite*)ft_calloc(512, sizeof(t_sprite)))) + return (-1); return (0); } diff --git a/src/ft_raycasting.c b/src/ft_raycasting.c index 8a79154..0a1acac 100644 --- a/src/ft_raycasting.c +++ b/src/ft_raycasting.c @@ -108,7 +108,7 @@ void pthread_join(tid[1], 0x0); ft_calc_sprite(cl); ft_calc_heal(cl); - ft_calc_trap(cl); + /* ft_calc_trap(cl); */ ft_calc_weaps(cl); if (cl->plist.handles_weapon > -1) ft_draw_handweap(cl); -- cgit v1.2.3 From a713e118950f62700a43d21aa33fd2e3d7673af9 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Fri, 27 Mar 2020 15:07:32 +0100 Subject: Problem --- src/ft_draw_sprite.c | 4 ++-- src/ft_draw_sprite_extra.c | 23 ++++++++++++++++++----- src/ft_extra_keys.c | 1 - src/ft_init_map.c | 1 - src/ft_sort_s_t.c | 37 ++++++++++++++++++++++++------------- 5 files changed, 44 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 615bbd3..2aa1b43 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -43,7 +43,7 @@ void if (!(dist_tab = ft_alloc_dist_tab())) ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, cl); - while (++jt < cl->mlist.sprite_var) + while (++jt < FT_TOTAL_SPRT) { while (++it < cl->mlist.sprite_nbr[jt]) { @@ -57,7 +57,7 @@ void it = -1; } jt = -1; - while (++jt < cl->mlist.sprite_var) + while (++jt < FT_TOTAL_SPRT) { it = -1; while (++it < cl->mlist.sprite_nbr[jt] - 1) diff --git a/src/ft_draw_sprite_extra.c b/src/ft_draw_sprite_extra.c index e592da0..5133231 100644 --- a/src/ft_draw_sprite_extra.c +++ b/src/ft_draw_sprite_extra.c @@ -47,25 +47,38 @@ static void (1 + sprite->transformx / sprite->transformy); } +static int8_t + ft_set_current_sprite(t_cub *cl, int8_t j) +{ + const int8_t st_o = cl->mlist.st_o[j]; + + if (st_o == 0) + return (4); + else if (st_o >= 1 && st_o <= 7) + return (st_o + 7); + else if (st_o == 8) + return (15); + return (0); +} + void ft_calc_sprite(t_cub *cl) { t_sprite sprite; - int32_t i; - int32_t j; + int16_t i; + int8_t j; i = -1; j = -1; ft_sort_sprites(cl, -1, -1); - while (++j < cl->mlist.sprite_var) + while (++j < FT_TOTAL_SPRT) { while (++i < cl->mlist.sprite_nbr[j]) { sprite = cl->sprites[cl->mlist.st_o[j]][cl->mlist.sprite_order[ cl->mlist.st_o[j]][i]]; - sprite.current_sprite = (cl->mlist.st_o[j] == 0) ? - 4 : cl->mlist.st_o[j] + 7; + sprite.current_sprite = ft_set_current_sprite(cl, j); sprite.spritey = sprite.s_pos_x - (cl->plist.pos_x - 0.5); sprite.spritex = sprite.s_pos_y - (cl->plist.pos_y - 0.5); ft_init_sprite(cl, &sprite); diff --git a/src/ft_extra_keys.c b/src/ft_extra_keys.c index f8a6db8..1a71402 100644 --- a/src/ft_extra_keys.c +++ b/src/ft_extra_keys.c @@ -12,7 +12,6 @@ #include #include -#include #include #include #include diff --git a/src/ft_init_map.c b/src/ft_init_map.c index e85c6a6..72a02fd 100644 --- a/src/ft_init_map.c +++ b/src/ft_init_map.c @@ -67,7 +67,6 @@ int8_t mlist->weapon_var = 0; mlist->topsp = 0; ft_bzero(mlist->sprite_nbr, FT_TOTAL_SPRT); - ft_bzero(mlist->sprite_order, FT_TOTAL_SPRT); i = -1; while (++i < FT_TOTAL_SPRT) ft_bzero(mlist->sprite_order[i], 4096); diff --git a/src/ft_sort_s_t.c b/src/ft_sort_s_t.c index 6c08882..9cbde8b 100644 --- a/src/ft_sort_s_t.c +++ b/src/ft_sort_s_t.c @@ -21,10 +21,10 @@ float uint16_t i; float **dist_tab; - if (!(dist_tab = (float **)malloc(8 * sizeof(float*)))) + if (!(dist_tab = (float **)malloc((FT_TOTAL_SPRT + 1) * sizeof(float*)))) return (NULL); i = 0; - while (i < 8) + while (i < FT_TOTAL_SPRT + 1) { if (!(dist_tab[i] = (float *)malloc(4096 * sizeof(float)))) return (NULL); @@ -34,13 +34,26 @@ float } static void - ft_init_st(uint16_t sprite_var, int32_t *st_o) + ft_init_st(int32_t *st_o) { int8_t i; - i = -1; - while (++i < sprite_var) + i = 0; + while (i < FT_TOTAL_SPRT) + { st_o[i] = i; + i++; + } +} + +static void + ft_swap_them(int16_t i, float **dist_tab) +{ + float tmp_i[4096]; + + ft_memcpy(tmp_i, dist_tab[i], 4096); + ft_memcpy(dist_tab[i], dist_tab[i + 1], 4096); + ft_memcpy(dist_tab[i + 1], tmp_i, 4096); } void @@ -48,25 +61,23 @@ void { int16_t i; int32_t tmp; - float tmp_i[4096]; i = -1; - ft_init_st(cl->mlist.sprite_var, cl->mlist.st_o); - while (++i < cl->mlist.sprite_var) + ft_init_st(cl->mlist.st_o); + while (++i < FT_TOTAL_SPRT) { - if (i < 7 && dist_tab[i][0] < dist_tab[i + 1][0]) + if (i < FT_TOTAL_SPRT && dist_tab[i][0] + && dist_tab[i][0] < dist_tab[i + 1][0]) { tmp = cl->mlist.st_o[i]; cl->mlist.st_o[i] = cl->mlist.st_o[i + 1]; cl->mlist.st_o[i + 1] = tmp; - ft_memcpy(tmp_i, dist_tab[i], 4096); - ft_memcpy(dist_tab[i], dist_tab[i + 1], 4096); - ft_memcpy(dist_tab[i + 1], tmp_i, 4096); + ft_swap_them(i, dist_tab); i = -1; } } i = -1; - while (++i < 8) + while (++i < FT_TOTAL_SPRT + 1) ft_memdel((void*)&dist_tab[i]); ft_memdel((void*)&dist_tab); } -- cgit v1.2.3 From 44d5f7f4da8465f4829de1232e4cf2c6c2bf76bc Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Fri, 27 Mar 2020 16:44:30 +0100 Subject: Segv fix --- src/ft_draw_sprite.c | 8 ++++---- src/ft_init_map.c | 2 +- src/ft_sort_s_t.c | 18 ++---------------- 3 files changed, 7 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 2aa1b43..1b3f912 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -76,11 +76,11 @@ static void + powf(cl->plist.pos_y - sprite->s_pos_y, 2))) <= 0) dist = 0.0001; rgb.r = (uint8_t)cl->tlist[sprite->current_sprite].ptr[sprite->tex_x - * 4 + 4 * cl->tlist[sprite->current_sprite].img_h * sprite->tex_y + 2]; + * 4 + 4 * cl->tlist[sprite->current_sprite].img_w * sprite->tex_y + 2]; rgb.g = (uint8_t)cl->tlist[sprite->current_sprite].ptr[sprite->tex_x - * 4 + 4 * cl->tlist[sprite->current_sprite].img_h * sprite->tex_y + 1]; + * 4 + 4 * cl->tlist[sprite->current_sprite].img_w * sprite->tex_y + 1]; rgb.b = (uint8_t)cl->tlist[sprite->current_sprite].ptr[sprite->tex_x - * 4 + 4 * cl->tlist[sprite->current_sprite].img_h * sprite->tex_y]; + * 4 + 4 * cl->tlist[sprite->current_sprite].img_w * sprite->tex_y]; *(int*)(cl->img.ptr + ((uint16_t)sprite->x * 4 + (sprite->y * cl->img.sizeline))) = ft_rgb_to_hex(dist, rgb, cl); } @@ -105,7 +105,7 @@ void sprite->spriteheight) / 128; if (sprite->transformy > 0 && cl->tlist[sprite->current_sprite].ptr[sprite->tex_x * 4 + 4 * - cl->tlist[sprite->current_sprite].img_h * sprite->tex_y] + cl->tlist[sprite->current_sprite].img_w * sprite->tex_y] && cl->rlist.wall_dist_tab[sprite->x] > sprite->transformy) ft_put_sprite(sprite, cl); sprite->y++; diff --git a/src/ft_init_map.c b/src/ft_init_map.c index 72a02fd..1859afe 100644 --- a/src/ft_init_map.c +++ b/src/ft_init_map.c @@ -70,7 +70,7 @@ int8_t i = -1; while (++i < FT_TOTAL_SPRT) ft_bzero(mlist->sprite_order[i], 4096); - ft_bzero(mlist->st_o, FT_TOTAL_SPRT); + ft_bzero(mlist->st_o, FT_TOTAL_SPRT + 1); ft_bzero(mlist->heals_order, 64); mlist->weaps_nbr[0] = 0; mlist->weaps_nbr[1] = 0; diff --git a/src/ft_sort_s_t.c b/src/ft_sort_s_t.c index 9cbde8b..31ae237 100644 --- a/src/ft_sort_s_t.c +++ b/src/ft_sort_s_t.c @@ -33,19 +33,6 @@ float return (dist_tab); } -static void - ft_init_st(int32_t *st_o) -{ - int8_t i; - - i = 0; - while (i < FT_TOTAL_SPRT) - { - st_o[i] = i; - i++; - } -} - static void ft_swap_them(int16_t i, float **dist_tab) { @@ -63,11 +50,10 @@ void int32_t tmp; i = -1; - ft_init_st(cl->mlist.st_o); while (++i < FT_TOTAL_SPRT) { - if (i < FT_TOTAL_SPRT && dist_tab[i][0] - && dist_tab[i][0] < dist_tab[i + 1][0]) + cl->mlist.st_o[i] = i; + if (dist_tab[i][0] < dist_tab[i + 1][0]) { tmp = cl->mlist.st_o[i]; cl->mlist.st_o[i] = cl->mlist.st_o[i + 1]; -- cgit v1.2.3 From 82a55e7b0758f1b0afa45ac19953a9eb398f3771 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Fri, 27 Mar 2020 17:04:08 +0100 Subject: Fixed shit --- src/ft_sort_s_t.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/ft_sort_s_t.c b/src/ft_sort_s_t.c index 31ae237..9cbde8b 100644 --- a/src/ft_sort_s_t.c +++ b/src/ft_sort_s_t.c @@ -33,6 +33,19 @@ float return (dist_tab); } +static void + ft_init_st(int32_t *st_o) +{ + int8_t i; + + i = 0; + while (i < FT_TOTAL_SPRT) + { + st_o[i] = i; + i++; + } +} + static void ft_swap_them(int16_t i, float **dist_tab) { @@ -50,10 +63,11 @@ void int32_t tmp; i = -1; + ft_init_st(cl->mlist.st_o); while (++i < FT_TOTAL_SPRT) { - cl->mlist.st_o[i] = i; - if (dist_tab[i][0] < dist_tab[i + 1][0]) + if (i < FT_TOTAL_SPRT && dist_tab[i][0] + && dist_tab[i][0] < dist_tab[i + 1][0]) { tmp = cl->mlist.st_o[i]; cl->mlist.st_o[i] = cl->mlist.st_o[i + 1]; -- cgit v1.2.3 From 415d4203ed42e77af5d7da73bc9edcfdbe743ea8 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Fri, 27 Mar 2020 17:09:10 +0100 Subject: kk --- src/ft_sort_s_t.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/ft_sort_s_t.c b/src/ft_sort_s_t.c index 9cbde8b..0f14d35 100644 --- a/src/ft_sort_s_t.c +++ b/src/ft_sort_s_t.c @@ -66,7 +66,7 @@ void ft_init_st(cl->mlist.st_o); while (++i < FT_TOTAL_SPRT) { - if (i < FT_TOTAL_SPRT && dist_tab[i][0] + if (dist_tab[i][0] && dist_tab[i][0] < dist_tab[i + 1][0]) { tmp = cl->mlist.st_o[i]; -- cgit v1.2.3 From dbf44b886eb6340ce1611d95d869aa4a42e116b5 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Fri, 27 Mar 2020 17:12:57 +0100 Subject: cleaner --- src/ft_sort_s_t.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/ft_sort_s_t.c b/src/ft_sort_s_t.c index 0f14d35..8b70fe5 100644 --- a/src/ft_sort_s_t.c +++ b/src/ft_sort_s_t.c @@ -51,6 +51,7 @@ static void { float tmp_i[4096]; + ft_bzero(tmp_i, 4096); ft_memcpy(tmp_i, dist_tab[i], 4096); ft_memcpy(dist_tab[i], dist_tab[i + 1], 4096); ft_memcpy(dist_tab[i + 1], tmp_i, 4096); -- cgit v1.2.3 From 96534d2121cd9097da83b69ea5947ea93b736edc Mon Sep 17 00:00:00 2001 From: salad Date: Fri, 27 Mar 2020 22:23:03 +0100 Subject: jattend que ca clique --- src/ft_draw_sprite_extra.c | 2 +- src/ft_get_sprite_spawns.c | 2 ++ src/ft_sort_s_t.c | 23 +++++++++++++++++------ 3 files changed, 20 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/ft_draw_sprite_extra.c b/src/ft_draw_sprite_extra.c index 5133231..287d46f 100644 --- a/src/ft_draw_sprite_extra.c +++ b/src/ft_draw_sprite_extra.c @@ -73,7 +73,7 @@ void ft_sort_sprites(cl, -1, -1); while (++j < FT_TOTAL_SPRT) { - while (++i < cl->mlist.sprite_nbr[j]) + while (++i < cl->mlist.sprite_nbr[j]) { sprite = cl->sprites[cl->mlist.st_o[j]][cl->mlist.sprite_order[ diff --git a/src/ft_get_sprite_spawns.c b/src/ft_get_sprite_spawns.c index 047523a..0dc0f7a 100644 --- a/src/ft_get_sprite_spawns.c +++ b/src/ft_get_sprite_spawns.c @@ -73,6 +73,7 @@ int8_t if (clist->mlist.map[y][x] == c) { clist->mlist.sprite_nbr[s_n]++; + clist->sprites[s_n][i].exists = 1; clist->sprites[s_n][i].s_pos_x = x; clist->sprites[s_n][i].s_pos_y = y; i++; @@ -105,6 +106,7 @@ void if (ft_ischarset("2", clist->mlist.map[y][x])) { clist->mlist.sprite_nbr[0]++; + clist->sprites[0][i].exists = 1; clist->sprites[0][i].s_pos_x = x; clist->sprites[0][i].s_pos_y = y; i++; diff --git a/src/ft_sort_s_t.c b/src/ft_sort_s_t.c index 8b70fe5..8b05f07 100644 --- a/src/ft_sort_s_t.c +++ b/src/ft_sort_s_t.c @@ -34,16 +34,28 @@ float } static void - ft_init_st(int32_t *st_o) + ft_init_st(t_cub *cl, int32_t *st_o) { int8_t i; + int8_t j; i = 0; + j = 0; while (i < FT_TOTAL_SPRT) { - st_o[i] = i; - i++; + if (cl->sprites[i][0].exists == 1) + { + st_o[j] = i; + j++; + i++; + } + else + i++; } + i = -1; + ft_printf("------------------------------\n"); + while (++i < FT_TOTAL_SPRT + 1) + ft_printf("%d\n", cl->mlist.st_o[i]); } static void @@ -64,11 +76,10 @@ void int32_t tmp; i = -1; - ft_init_st(cl->mlist.st_o); + ft_init_st(cl, cl->mlist.st_o); while (++i < FT_TOTAL_SPRT) { - if (dist_tab[i][0] - && dist_tab[i][0] < dist_tab[i + 1][0]) + if (dist_tab[i][0] < dist_tab[i + 1][0]) { tmp = cl->mlist.st_o[i]; cl->mlist.st_o[i] = cl->mlist.st_o[i + 1]; -- cgit v1.2.3 From 5f0d3fb28218ce5ce079683ddf3202d741dd210b Mon Sep 17 00:00:00 2001 From: salad Date: Sat, 28 Mar 2020 14:50:36 +0100 Subject: 8 still doesnt swap but its cool --- src/ft_draw_sprite_extra.c | 24 ++++++++++++------------ src/ft_sort_s_t.c | 19 ++++++++++++------- 2 files changed, 24 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/ft_draw_sprite_extra.c b/src/ft_draw_sprite_extra.c index 287d46f..da7a37b 100644 --- a/src/ft_draw_sprite_extra.c +++ b/src/ft_draw_sprite_extra.c @@ -72,18 +72,18 @@ void j = -1; ft_sort_sprites(cl, -1, -1); while (++j < FT_TOTAL_SPRT) - { - while (++i < cl->mlist.sprite_nbr[j]) - { - sprite = - cl->sprites[cl->mlist.st_o[j]][cl->mlist.sprite_order[ - cl->mlist.st_o[j]][i]]; - sprite.current_sprite = ft_set_current_sprite(cl, j); - sprite.spritey = sprite.s_pos_x - (cl->plist.pos_x - 0.5); - sprite.spritex = sprite.s_pos_y - (cl->plist.pos_y - 0.5); - ft_init_sprite(cl, &sprite); - ft_sprite_h_w(cl, &sprite); - ft_draw_sprite(cl, &sprite); + { + while (cl->mlist.st_o[j] != -1 && ++i < cl->mlist.sprite_nbr[j]) + { + sprite = + cl->sprites[cl->mlist.st_o[j]][cl->mlist.sprite_order[ + cl->mlist.st_o[j]][i]]; + sprite.current_sprite = ft_set_current_sprite(cl, j); + sprite.spritey = sprite.s_pos_x - (cl->plist.pos_x - 0.5); + sprite.spritex = sprite.s_pos_y - (cl->plist.pos_y - 0.5); + ft_init_sprite(cl, &sprite); + ft_sprite_h_w(cl, &sprite); + ft_draw_sprite(cl, &sprite); } i = -1; } diff --git a/src/ft_sort_s_t.c b/src/ft_sort_s_t.c index 8b05f07..6ce1ff3 100644 --- a/src/ft_sort_s_t.c +++ b/src/ft_sort_s_t.c @@ -39,11 +39,16 @@ static void int8_t i; int8_t j; - i = 0; j = 0; + i = -1; + while (++i < FT_TOTAL_SPRT) + { + st_o[i] = -1; + } + i = 0; while (i < FT_TOTAL_SPRT) { - if (cl->sprites[i][0].exists == 1) + if (cl->sprites[i]->exists == 1) { st_o[j] = i; j++; @@ -52,10 +57,6 @@ static void else i++; } - i = -1; - ft_printf("------------------------------\n"); - while (++i < FT_TOTAL_SPRT + 1) - ft_printf("%d\n", cl->mlist.st_o[i]); } static void @@ -79,7 +80,7 @@ void ft_init_st(cl, cl->mlist.st_o); while (++i < FT_TOTAL_SPRT) { - if (dist_tab[i][0] < dist_tab[i + 1][0]) + if (cl->mlist.st_o[i] != -1 && dist_tab[i][0] < dist_tab[i + 1][0]) { tmp = cl->mlist.st_o[i]; cl->mlist.st_o[i] = cl->mlist.st_o[i + 1]; @@ -89,6 +90,10 @@ void } } i = -1; + ft_printf("------------------------------\n"); + while (++i < FT_TOTAL_SPRT + 1) + ft_printf("%d\n", cl->mlist.st_o[i]); + i = -1; while (++i < FT_TOTAL_SPRT + 1) ft_memdel((void*)&dist_tab[i]); ft_memdel((void*)&dist_tab); -- cgit v1.2.3 From 8fa58fb7a2a363534468ddbb0f0dafe6f577b3fd Mon Sep 17 00:00:00 2001 From: salad Date: Sat, 28 Mar 2020 15:50:34 +0100 Subject: ez --- src/ft_draw_sprite_extra.c | 6 ++++-- src/ft_sort_s_t.c | 14 ++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/ft_draw_sprite_extra.c b/src/ft_draw_sprite_extra.c index da7a37b..4599ff4 100644 --- a/src/ft_draw_sprite_extra.c +++ b/src/ft_draw_sprite_extra.c @@ -12,6 +12,7 @@ #include #include +#include #include void @@ -71,10 +72,11 @@ void i = -1; j = -1; ft_sort_sprites(cl, -1, -1); - while (++j < FT_TOTAL_SPRT) + while (++j < 9) { - while (cl->mlist.st_o[j] != -1 && ++i < cl->mlist.sprite_nbr[j]) + while (++i < cl->mlist.sprite_nbr[cl->mlist.st_o[j]] && cl->mlist.st_o[j] != -1 ) { + /* printf("j : %d tab : [%d]\n", j, cl->mlist.st_o[j]); */ sprite = cl->sprites[cl->mlist.st_o[j]][cl->mlist.sprite_order[ cl->mlist.st_o[j]][i]]; diff --git a/src/ft_sort_s_t.c b/src/ft_sort_s_t.c index 6ce1ff3..0f87e9f 100644 --- a/src/ft_sort_s_t.c +++ b/src/ft_sort_s_t.c @@ -34,7 +34,7 @@ float } static void - ft_init_st(t_cub *cl, int32_t *st_o) +ft_init_st(t_cub *cl, int32_t *st_o, float **dist_tab) { int8_t i; int8_t j; @@ -45,17 +45,15 @@ static void { st_o[i] = -1; } - i = 0; - while (i < FT_TOTAL_SPRT) + i = -1; + while (++i < FT_TOTAL_SPRT) { - if (cl->sprites[i]->exists == 1) + if (cl->sprites[i][0].exists == 1) { st_o[j] = i; + ft_memcpy(dist_tab[j], dist_tab[i], 4096); j++; - i++; } - else - i++; } } @@ -77,7 +75,7 @@ void int32_t tmp; i = -1; - ft_init_st(cl, cl->mlist.st_o); + ft_init_st(cl, cl->mlist.st_o, dist_tab); while (++i < FT_TOTAL_SPRT) { if (cl->mlist.st_o[i] != -1 && dist_tab[i][0] < dist_tab[i + 1][0]) -- cgit v1.2.3 From 25020e81ba926f3dbcae8feaf0ac1c558177e6cf Mon Sep 17 00:00:00 2001 From: salad Date: Sat, 28 Mar 2020 15:55:53 +0100 Subject: normed --- src/ft_draw_sprite_extra.c | 26 ++++++++++++-------------- src/ft_sort_s_t.c | 26 ++++++++++---------------- 2 files changed, 22 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/src/ft_draw_sprite_extra.c b/src/ft_draw_sprite_extra.c index 4599ff4..57b0b86 100644 --- a/src/ft_draw_sprite_extra.c +++ b/src/ft_draw_sprite_extra.c @@ -12,7 +12,6 @@ #include #include -#include #include void @@ -73,19 +72,18 @@ void j = -1; ft_sort_sprites(cl, -1, -1); while (++j < 9) - { - while (++i < cl->mlist.sprite_nbr[cl->mlist.st_o[j]] && cl->mlist.st_o[j] != -1 ) - { - /* printf("j : %d tab : [%d]\n", j, cl->mlist.st_o[j]); */ - sprite = - cl->sprites[cl->mlist.st_o[j]][cl->mlist.sprite_order[ - cl->mlist.st_o[j]][i]]; - sprite.current_sprite = ft_set_current_sprite(cl, j); - sprite.spritey = sprite.s_pos_x - (cl->plist.pos_x - 0.5); - sprite.spritex = sprite.s_pos_y - (cl->plist.pos_y - 0.5); - ft_init_sprite(cl, &sprite); - ft_sprite_h_w(cl, &sprite); - ft_draw_sprite(cl, &sprite); + { + while (++i < cl->mlist.sprite_nbr[cl->mlist.st_o[j]] && cl->mlist.st_o[j] != -1 ) + { + sprite = + cl->sprites[cl->mlist.st_o[j]][cl->mlist.sprite_order[ + cl->mlist.st_o[j]][i]]; + sprite.current_sprite = ft_set_current_sprite(cl, j); + sprite.spritey = sprite.s_pos_x - (cl->plist.pos_x - 0.5); + sprite.spritex = sprite.s_pos_y - (cl->plist.pos_y - 0.5); + ft_init_sprite(cl, &sprite); + ft_sprite_h_w(cl, &sprite); + ft_draw_sprite(cl, &sprite); } i = -1; } diff --git a/src/ft_sort_s_t.c b/src/ft_sort_s_t.c index 0f87e9f..28a372d 100644 --- a/src/ft_sort_s_t.c +++ b/src/ft_sort_s_t.c @@ -34,26 +34,24 @@ float } static void -ft_init_st(t_cub *cl, int32_t *st_o, float **dist_tab) + ft_init_st(t_cub *cl, int32_t *st_o, float **dist_tab) { int8_t i; int8_t j; j = 0; - i = -1; + i = -1; while (++i < FT_TOTAL_SPRT) - { - st_o[i] = -1; - } - i = -1; + st_o[i] = -1; + i = -1; while (++i < FT_TOTAL_SPRT) { - if (cl->sprites[i][0].exists == 1) - { - st_o[j] = i; - ft_memcpy(dist_tab[j], dist_tab[i], 4096); - j++; - } + if (cl->sprites[i][0].exists == 1) + { + st_o[j] = i; + ft_memcpy(dist_tab[j], dist_tab[i], 4096); + j++; + } } } @@ -88,10 +86,6 @@ void } } i = -1; - ft_printf("------------------------------\n"); - while (++i < FT_TOTAL_SPRT + 1) - ft_printf("%d\n", cl->mlist.st_o[i]); - i = -1; while (++i < FT_TOTAL_SPRT + 1) ft_memdel((void*)&dist_tab[i]); ft_memdel((void*)&dist_tab); -- cgit v1.2.3 From b3aecb150f55ebc9dde7c1b09559d1566e9e92a6 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Sat, 28 Mar 2020 16:46:40 +0100 Subject: All in sprites --- src/ft_del_sprites_lists.c | 7 ------- src/ft_draw_sprite_extra.c | 6 +++++- src/ft_find_item.c | 11 ++++++----- src/ft_get_spawns.c | 6 +++--- src/ft_get_sprite_spawns.c | 13 ++++++++++++- src/ft_init_lists.c | 2 -- src/ft_init_map.c | 7 ------- src/ft_init_sprites.c | 8 ++++++++ src/ft_raycasting.c | 4 ++-- src/ft_warp_level.c | 2 -- 10 files changed, 36 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/src/ft_del_sprites_lists.c b/src/ft_del_sprites_lists.c index 613ac82..6a1a662 100644 --- a/src/ft_del_sprites_lists.c +++ b/src/ft_del_sprites_lists.c @@ -26,11 +26,4 @@ void i++; } ft_memdel((void*)&clist->sprites); - i = 0; - while (i < 3) - { - ft_memdel((void*)&clist->weaps[i]); - i++; - } - ft_memdel((void*)&clist->weaps); } diff --git a/src/ft_draw_sprite_extra.c b/src/ft_draw_sprite_extra.c index 57b0b86..c64d2c1 100644 --- a/src/ft_draw_sprite_extra.c +++ b/src/ft_draw_sprite_extra.c @@ -58,6 +58,10 @@ static int8_t return (st_o + 7); else if (st_o == 8) return (15); + else if (st_o == 9) + return (17); + else if (st_o >= 10) + return (st_o + 8); return (0); } @@ -71,7 +75,7 @@ void i = -1; j = -1; ft_sort_sprites(cl, -1, -1); - while (++j < 9) + while (++j < FT_TOTAL_SPRT) { while (++i < cl->mlist.sprite_nbr[cl->mlist.st_o[j]] && cl->mlist.st_o[j] != -1 ) { diff --git a/src/ft_find_item.c b/src/ft_find_item.c index 59b4a4f..2d6f272 100644 --- a/src/ft_find_item.c +++ b/src/ft_find_item.c @@ -22,7 +22,8 @@ static uint16_t id = 0; while (id <= 64) { - if (cl->heals[id].s_pos_y == pos_y && cl->heals[id].s_pos_x == pos_x) + if (cl->sprites[9][id].s_pos_y == pos_y && + cl->sprites[9][id].s_pos_x == pos_x) return (id); id++; } @@ -55,8 +56,8 @@ static void else if (map_char == '#') weap_id = 2; cl->mlist.map[(uint64_t)pl->pos_y][(uint64_t)pl->pos_x] = '0'; - cl->weaps[weap_id][0].s_pos_x = 0; - cl->weaps[weap_id][0].s_pos_y = 0; + cl->sprites[10 + weap_id][0].s_pos_x = 0; + cl->sprites[10 + weap_id][0].s_pos_y = 0; pl->has_weapon[weap_id] = 1; pl->handles_weapon = (weap_id == 0) ? (0) : (pl->handles_weapon); pl->handles_weapon = (weap_id == 1) ? (2) : (pl->handles_weapon); @@ -86,8 +87,8 @@ void ml->map[(uint64_t)pl->pos_y][(uint64_t)pl->pos_x] = '0'; id = ft_fetch_heals_id((uint64_t)pl->pos_y, (uint64_t)pl->pos_x, cl); - cl->heals[id].s_pos_x = 0; - cl->heals[id].s_pos_y = 0; + cl->sprites[9][id].s_pos_x = 0; + cl->sprites[9][id].s_pos_y = 0; cl->sfx[5].sfx_play(cl->sfx); } ft_weapon_check(map_char, pl, cl); diff --git a/src/ft_get_spawns.c b/src/ft_get_spawns.c index 9bd7040..0caedf3 100644 --- a/src/ft_get_spawns.c +++ b/src/ft_get_spawns.c @@ -20,7 +20,7 @@ void ft_get_player_spawn(&cl->plist, cl); ft_get_sprite_spawn(cl); /* ft_get_trap_spawn(cl); */ - ft_get_heal_spawn(cl); - if (cl->isdead == 0) - ft_get_weapon_spawn(cl); + /* ft_get_heal_spawn(cl); */ + /* if (cl->isdead == 0) */ + /* ft_get_weapon_spawn(cl); */ } diff --git a/src/ft_get_sprite_spawns.c b/src/ft_get_sprite_spawns.c index 0dc0f7a..0d20664 100644 --- a/src/ft_get_sprite_spawns.c +++ b/src/ft_get_sprite_spawns.c @@ -52,8 +52,19 @@ static void static int8_t ft_other_next_sprite(t_cub *cl, int s_n) { - if (s_n == 7) + if (s_n + 1 == 8) return (ft_get_next_sprite(cl, 8, 'T', 0)); + if (s_n + 1 == 9) + return (ft_get_next_sprite(cl, 9, '+', 0)); + if (cl->isdead == 0) + { + if (s_n + 1 == 10) + return (ft_get_next_sprite(cl, 10, '!', 0)); + if (s_n + 1 == 11) + return (ft_get_next_sprite(cl, 11, '@', 0)); + if (s_n + 1 == 12) + return (ft_get_next_sprite(cl, 12, '#', 0)); + } return (0); } diff --git a/src/ft_init_lists.c b/src/ft_init_lists.c index 942b9a4..25b8eb6 100644 --- a/src/ft_init_lists.c +++ b/src/ft_init_lists.c @@ -115,8 +115,6 @@ int8_t return (-1); if (ft_init_sprites(&clist->sprites) < 0) return (-1); - if (ft_init_weaps(&clist->weaps) < 0) - return (-1); ft_sprintf(clist->fps_count, "fps: 60"); clist->isdead = 0; clist->moves = 0; diff --git a/src/ft_init_map.c b/src/ft_init_map.c index 1859afe..a7f82f5 100644 --- a/src/ft_init_map.c +++ b/src/ft_init_map.c @@ -64,18 +64,12 @@ int8_t mlist->nlx = 0; mlist->nly = 0; mlist->sprite_var = 0; - mlist->weapon_var = 0; mlist->topsp = 0; ft_bzero(mlist->sprite_nbr, FT_TOTAL_SPRT); i = -1; while (++i < FT_TOTAL_SPRT) ft_bzero(mlist->sprite_order[i], 4096); ft_bzero(mlist->st_o, FT_TOTAL_SPRT + 1); - ft_bzero(mlist->heals_order, 64); - mlist->weaps_nbr[0] = 0; - mlist->weaps_nbr[1] = 0; - mlist->weaps_nbr[2] = 0; - ft_bzero(mlist->weaps_order, 1); return (0); } @@ -102,6 +96,5 @@ int8_t mlist->isskybox = 0; mlist->istraps = 0; mlist->isheals = 0; - mlist->heals_nbr = 0; return (ft_init_map_norme(mlist)); } diff --git a/src/ft_init_sprites.c b/src/ft_init_sprites.c index 1a23c26..ee9506f 100644 --- a/src/ft_init_sprites.c +++ b/src/ft_init_sprites.c @@ -49,5 +49,13 @@ int8_t } if (!(*((*sprites) + 8) = (t_sprite*)ft_calloc(512, sizeof(t_sprite)))) return (-1); + if (!(*((*sprites) + 9) = (t_sprite*)ft_calloc(64, sizeof(t_sprite)))) + return (-1); + i = 9; + while (++i < 13) + { + if (!(*((*sprites) + i) = (t_sprite*)ft_calloc(4, sizeof(t_sprite)))) + return (-1); + } return (0); } diff --git a/src/ft_raycasting.c b/src/ft_raycasting.c index 0a1acac..f9a0e45 100644 --- a/src/ft_raycasting.c +++ b/src/ft_raycasting.c @@ -107,9 +107,9 @@ void pthread_join(tid[0], 0x0); pthread_join(tid[1], 0x0); ft_calc_sprite(cl); - ft_calc_heal(cl); + /* ft_calc_heal(cl); */ /* ft_calc_trap(cl); */ - ft_calc_weaps(cl); + /* ft_calc_weaps(cl); */ if (cl->plist.handles_weapon > -1) ft_draw_handweap(cl); ft_del_tabs(cl); diff --git a/src/ft_warp_level.c b/src/ft_warp_level.c index 90bd9f7..f9fac3e 100644 --- a/src/ft_warp_level.c +++ b/src/ft_warp_level.c @@ -60,8 +60,6 @@ static int8_t ft_del_sprites_lists(cl); if (ft_init_sprites(&cl->sprites) < 0) return (-1); - if (ft_init_weaps(&cl->weaps) < 0) - return (-1); if (ft_init_map(&cl->mlist) < 0) return (-1); i = 0; -- cgit v1.2.3 From bd24c47c257ad9c4873207ea131371ad0309f84d Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Sat, 28 Mar 2020 17:02:58 +0100 Subject: Awesome --- src/ft_find_item.c | 30 ++++++++++++++++++++++-------- src/ft_get_sprite_spawns.c | 27 ++++++++++++--------------- 2 files changed, 34 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/ft_find_item.c b/src/ft_find_item.c index 2d6f272..394e060 100644 --- a/src/ft_find_item.c +++ b/src/ft_find_item.c @@ -30,6 +30,22 @@ static uint16_t return (0); } +static uint16_t + ft_fetch_weaps_id(int8_t weap_id, uint64_t pos_y, uint64_t pos_x, t_cub *cl) +{ + uint16_t id; + + id = 0; + while (id <= 64) + { + if (cl->sprites[10 + weap_id][id].s_pos_y == pos_y && + cl->sprites[10 + weap_id][id].s_pos_x == pos_x) + return (id); + id++; + } + return (0); +} + static void ft_set_ammo(uint8_t weap_id, t_player *pl) { @@ -47,6 +63,7 @@ static void ft_weapon_check(const char map_char, t_player *pl, t_cub *cl) { uint8_t weap_id; + uint8_t that_id; if (ft_ischarset(FT_CHRST_WEAPONS, map_char)) { @@ -56,19 +73,16 @@ static void else if (map_char == '#') weap_id = 2; cl->mlist.map[(uint64_t)pl->pos_y][(uint64_t)pl->pos_x] = '0'; - cl->sprites[10 + weap_id][0].s_pos_x = 0; - cl->sprites[10 + weap_id][0].s_pos_y = 0; + that_id = ft_fetch_weaps_id(weap_id, (uint64_t)pl->pos_y, + (uint64_t)pl->pos_x, cl); + cl->sprites[10 + weap_id][that_id].s_pos_x = 0; + cl->sprites[10 + weap_id][that_id].s_pos_y = 0; pl->has_weapon[weap_id] = 1; pl->handles_weapon = (weap_id == 0) ? (0) : (pl->handles_weapon); pl->handles_weapon = (weap_id == 1) ? (2) : (pl->handles_weapon); pl->handles_weapon = (weap_id == 2) ? (4) : (pl->handles_weapon); ft_set_ammo(weap_id, pl); - if (weap_id == 0) - cl->sfx[6].sfx_play(cl->sfx); - else if (weap_id == 1) - cl->sfx[8].sfx_play(cl->sfx); - else if (weap_id == 2) - cl->sfx[10].sfx_play(cl->sfx); + cl->sfx[6 + (weap_id * 2)].sfx_play(cl->sfx); } } diff --git a/src/ft_get_sprite_spawns.c b/src/ft_get_sprite_spawns.c index 0d20664..9329c51 100644 --- a/src/ft_get_sprite_spawns.c +++ b/src/ft_get_sprite_spawns.c @@ -35,17 +35,17 @@ static void ft_check_amount(t_cub *cl, int s_n) { - if (s_n < 8 && cl->mlist.sprite_nbr[s_n] >= 4096) + if (s_n < 8 && cl->mlist.sprite_nbr[s_n] > 4096) ft_map_error(FT_ERR_TOO_MUCH_SPRT, cl); - else if (s_n == 8 && cl->mlist.sprite_nbr[s_n] >= 512) + else if (s_n == 8 && cl->mlist.sprite_nbr[s_n] > 512) ft_map_error(FT_ERR_TOO_MUCH_TRAPS, cl); - else if (s_n == 9 && cl->mlist.sprite_nbr[s_n] >= 64) + else if (s_n == 9 && cl->mlist.sprite_nbr[s_n] > 64) ft_map_error(FT_ERR_TOO_MUCH_HEALS, cl); - else if (s_n == 10 && cl->mlist.sprite_nbr[s_n] >= 4) + else if (s_n == 10 && cl->mlist.sprite_nbr[s_n] > 4) ft_map_error(FT_ERR_TOO_MUCH_W_ONE, cl); - else if (s_n == 11 && cl->mlist.sprite_nbr[s_n] >= 4) + else if (s_n == 11 && cl->mlist.sprite_nbr[s_n] > 4) ft_map_error(FT_ERR_TOO_MUCH_W_TWO, cl); - else if (s_n == 12 && cl->mlist.sprite_nbr[s_n] >= 4) + else if (s_n == 12 && cl->mlist.sprite_nbr[s_n] > 4) ft_map_error(FT_ERR_TOO_MUCH_W_THREE, cl); } @@ -56,15 +56,12 @@ static int8_t return (ft_get_next_sprite(cl, 8, 'T', 0)); if (s_n + 1 == 9) return (ft_get_next_sprite(cl, 9, '+', 0)); - if (cl->isdead == 0) - { - if (s_n + 1 == 10) - return (ft_get_next_sprite(cl, 10, '!', 0)); - if (s_n + 1 == 11) - return (ft_get_next_sprite(cl, 11, '@', 0)); - if (s_n + 1 == 12) - return (ft_get_next_sprite(cl, 12, '#', 0)); - } + if (s_n + 1 == 10) + return (ft_get_next_sprite(cl, 10, '!', 0)); + if (s_n + 1 == 11) + return (ft_get_next_sprite(cl, 11, '@', 0)); + if (s_n + 1 == 12) + return (ft_get_next_sprite(cl, 12, '#', 0)); return (0); } -- cgit v1.2.3 From 76cefdc4dc3efa6eb410574a0f5ec42188ba11bd Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Sun, 29 Mar 2020 15:42:37 +0200 Subject: Almost --- src/ft_death_hooks.c | 2 +- src/ft_draw_scene.c | 2 +- src/ft_draw_sprite.c | 2 +- src/ft_draw_sprite_extra.c | 42 ++++++-------------- src/ft_error.c | 11 +++++- src/ft_exit.c | 9 +++++ src/ft_init_lists.c | 5 +++ src/ft_init_map.c | 2 +- src/ft_parse_map.c | 2 +- src/ft_raycasting.c | 6 +-- src/ft_sort_s_t.c | 96 ++++++++++++++++++++++++++++++++-------------- 11 files changed, 110 insertions(+), 69 deletions(-) (limited to 'src') diff --git a/src/ft_death_hooks.c b/src/ft_death_hooks.c index 1f0cb6c..c6705b0 100644 --- a/src/ft_death_hooks.c +++ b/src/ft_death_hooks.c @@ -26,7 +26,7 @@ static int if (keycode == FT_RET_KEY) { if (ft_warp_level(clist->mlist.filename, clist) < 0) - return (ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, clist)); + return (ft_alloc_error(clist)); ft_draw_scene(clist); ft_hooks_and_loops(&clist->wlist, clist); return (0); diff --git a/src/ft_draw_scene.c b/src/ft_draw_scene.c index 86009f6..74b8315 100644 --- a/src/ft_draw_scene.c +++ b/src/ft_draw_scene.c @@ -75,7 +75,7 @@ void { ft_put_fps(clist); if (clist->mlist.isnlvl && ft_put_stage(clist) < 0) - ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, clist); + ft_alloc_error(clist); } } diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 1b3f912..dc6f54f 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -42,7 +42,7 @@ void float **dist_tab; if (!(dist_tab = ft_alloc_dist_tab())) - ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, cl); + ft_alloc_error(cl); while (++jt < FT_TOTAL_SPRT) { while (++it < cl->mlist.sprite_nbr[jt]) diff --git a/src/ft_draw_sprite_extra.c b/src/ft_draw_sprite_extra.c index c64d2c1..598f637 100644 --- a/src/ft_draw_sprite_extra.c +++ b/src/ft_draw_sprite_extra.c @@ -47,24 +47,7 @@ static void (1 + sprite->transformx / sprite->transformy); } -static int8_t - ft_set_current_sprite(t_cub *cl, int8_t j) -{ - const int8_t st_o = cl->mlist.st_o[j]; - - if (st_o == 0) - return (4); - else if (st_o >= 1 && st_o <= 7) - return (st_o + 7); - else if (st_o == 8) - return (15); - else if (st_o == 9) - return (17); - else if (st_o >= 10) - return (st_o + 8); - return (0); -} - +#include void ft_calc_sprite(t_cub *cl) { @@ -75,20 +58,17 @@ void i = -1; j = -1; ft_sort_sprites(cl, -1, -1); - while (++j < FT_TOTAL_SPRT) + while (++j < cl->big_t_val) { - while (++i < cl->mlist.sprite_nbr[cl->mlist.st_o[j]] && cl->mlist.st_o[j] != -1 ) - { - sprite = - cl->sprites[cl->mlist.st_o[j]][cl->mlist.sprite_order[ - cl->mlist.st_o[j]][i]]; - sprite.current_sprite = ft_set_current_sprite(cl, j); - sprite.spritey = sprite.s_pos_x - (cl->plist.pos_x - 0.5); - sprite.spritex = sprite.s_pos_y - (cl->plist.pos_y - 0.5); - ft_init_sprite(cl, &sprite); - ft_sprite_h_w(cl, &sprite); - ft_draw_sprite(cl, &sprite); - } + sprite = + cl->sprites[(int8_t)cl->big_t[j][2]] + [(int16_t)cl->big_t[j][3]]; + sprite.current_sprite = (int8_t)cl->big_t[j][1]; + sprite.spritey = sprite.s_pos_x - (cl->plist.pos_x - 0.5); + sprite.spritex = sprite.s_pos_y - (cl->plist.pos_y - 0.5); + ft_init_sprite(cl, &sprite); + ft_sprite_h_w(cl, &sprite); + ft_draw_sprite(cl, &sprite); i = -1; } } diff --git a/src/ft_error.c b/src/ft_error.c index 0f2bc97..a643b5c 100644 --- a/src/ft_error.c +++ b/src/ft_error.c @@ -35,11 +35,20 @@ int return (ft_exit(FT_RET_MAP_ERR, clist)); } +int + ft_alloc_error(t_cub *clist) +{ + ft_dprintf(STDERR_FILENO, "Error\n"); + ft_dprintf(STDERR_FILENO, + "\033[1;31m%s\033[0m\n", FT_ERR_ALLOCATE); + return (ft_exit(FT_RET_ALLOC_ERR, clist)); +} + int ft_missing_error(const char *err, t_cub *clist) { ft_dprintf(STDERR_FILENO, "Error\n"); ft_dprintf(STDERR_FILENO, - "\033[1;31m%s %s\033[0m\n", FT_ERR_MISS_ELEMENT, err); + "\033[1;31m%s %s\033[0m\n", FT_ERR_MISS_ELEMENT, err); return (ft_exit(FT_ERR_MISSING, clist)); } diff --git a/src/ft_exit.c b/src/ft_exit.c index ed1191c..79b3068 100644 --- a/src/ft_exit.c +++ b/src/ft_exit.c @@ -21,6 +21,15 @@ static void ft_del_last_remains(t_cub *clist) { + uint16_t i; + + i = 0; + while (i < clist->big_t_val) + { + ft_memdel((void*)&clist->big_t[i]); + i++; + } + ft_memdel((void*)&clist->big_t); if (!clist->wlist.inited) { ft_memdel((void*)&clist->wlist.winptr); diff --git a/src/ft_init_lists.c b/src/ft_init_lists.c index 25b8eb6..2105a64 100644 --- a/src/ft_init_lists.c +++ b/src/ft_init_lists.c @@ -115,6 +115,11 @@ int8_t return (-1); if (ft_init_sprites(&clist->sprites) < 0) return (-1); + if (!(clist->big_t = (float**)ft_calloc(2, sizeof(float*))) || + !(clist->big_t[0] = (float*)ft_calloc(1, sizeof(float))) || + !(clist->big_t[1] = (float*)ft_calloc(1, sizeof(float)))) + return (-1); + clist->big_t_val = 2; ft_sprintf(clist->fps_count, "fps: 60"); clist->isdead = 0; clist->moves = 0; diff --git a/src/ft_init_map.c b/src/ft_init_map.c index a7f82f5..0abfcb1 100644 --- a/src/ft_init_map.c +++ b/src/ft_init_map.c @@ -65,7 +65,7 @@ int8_t mlist->nly = 0; mlist->sprite_var = 0; mlist->topsp = 0; - ft_bzero(mlist->sprite_nbr, FT_TOTAL_SPRT); + ft_bzero(mlist->sprite_nbr, FT_TOTAL_SPRT * sizeof(int16_t)); i = -1; while (++i < FT_TOTAL_SPRT) ft_bzero(mlist->sprite_order[i], 4096); diff --git a/src/ft_parse_map.c b/src/ft_parse_map.c index 46fe022..3141171 100644 --- a/src/ft_parse_map.c +++ b/src/ft_parse_map.c @@ -80,7 +80,7 @@ static void ft_memdel((void*)&clist->mlist.filename); if (!(clist->mlist.filename = (char*)malloc((ft_strlen(map_path) + 1) * sizeof(char)))) - ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, clist); + ft_alloc_error(clist); ft_sprintf(clist->mlist.filename, "%s", map_path); } diff --git a/src/ft_raycasting.c b/src/ft_raycasting.c index f9a0e45..3bfd038 100644 --- a/src/ft_raycasting.c +++ b/src/ft_raycasting.c @@ -32,18 +32,18 @@ static void !(rl->fc_tex_x_tab = (int32_t***)malloc(2 * sizeof(int32_t**))) || !(rl->fc_tex_y_tab = (int32_t***)malloc(2 * sizeof(int32_t**))) || !(rl->row_dist_tab = (float*)malloc(y_s * sizeof(float)))) - ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, cl); + ft_alloc_error(cl); x = -1; while (++x < 2) { if (!(rl->fc_tex_x_tab[x] = (int**)malloc(y_s * sizeof(int*))) || !(rl->fc_tex_y_tab[x] = (int**)malloc(y_s * sizeof(int*)))) - ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, cl); + ft_alloc_error(cl); y = -1; while (++y < y_s) if (!(rl->fc_tex_x_tab[x][y] = (int*)malloc(x_s * sizeof(int))) || !(rl->fc_tex_y_tab[x][y] = (int*)malloc(x_s * sizeof(int)))) - ft_error(FT_RET_ALLOC_ERR, FT_ERR_ALLOCATE, cl); + ft_alloc_error(cl); } } diff --git a/src/ft_sort_s_t.c b/src/ft_sort_s_t.c index 28a372d..bcf033f 100644 --- a/src/ft_sort_s_t.c +++ b/src/ft_sort_s_t.c @@ -33,58 +33,96 @@ float return (dist_tab); } +static int8_t + ft_set_current_sprite(t_cub *cl, int8_t j) +{ + const int8_t st_o = cl->mlist.st_o[j]; + + if (st_o == 0) + return (4); + else if (st_o >= 1 && st_o <= 7) + return (st_o + 7); + else if (st_o == 8) + return (15); + else if (st_o == 9) + return (17); + else if (st_o >= 10) + return (st_o + 8); + return (0); +} + +static void + ft_alloc_and_fill_big_t(float **dist_tab, t_cub *cl) +{ + int32_t i; + int32_t j; + int32_t k; + + if (!(cl->big_t = (float**)malloc(cl->big_t_val * sizeof(float*)))) + ft_alloc_error(cl); + i = -1; + while (++i < cl->big_t_val) + if (!(cl->big_t[i] = (float*)malloc(4 * sizeof(float)))) + ft_alloc_error(cl); + i = 0; + j = 0; + k = 0; + while (i < cl->big_t_val) + { + if (dist_tab[j][k]) + { + ft_printf("%d\n", j); + cl->big_t[i][0] = dist_tab[j][k]; + cl->big_t[i][1] = (float)ft_set_current_sprite(cl, j); + cl->big_t[i][2] = (float)j; + cl->big_t[i][3] = (float)k; + k++; + } + else + { + k = 0; + j++; + } + i++; + } +} + static void ft_init_st(t_cub *cl, int32_t *st_o, float **dist_tab) { int8_t i; int8_t j; - j = 0; + j = -1; i = -1; while (++i < FT_TOTAL_SPRT) st_o[i] = -1; i = -1; while (++i < FT_TOTAL_SPRT) { - if (cl->sprites[i][0].exists == 1) + if (cl->mlist.sprite_nbr[i] > 0) { - st_o[j] = i; - ft_memcpy(dist_tab[j], dist_tab[i], 4096); - j++; + st_o[++j] = i; + ft_memcpy(dist_tab[j], dist_tab[i], 4096 * sizeof(float)); } } } -static void - ft_swap_them(int16_t i, float **dist_tab) -{ - float tmp_i[4096]; - - ft_bzero(tmp_i, 4096); - ft_memcpy(tmp_i, dist_tab[i], 4096); - ft_memcpy(dist_tab[i], dist_tab[i + 1], 4096); - ft_memcpy(dist_tab[i + 1], tmp_i, 4096); -} - void ft_sort_s_t(t_cub *cl, float **dist_tab) { - int16_t i; - int32_t tmp; + int32_t i; - i = -1; ft_init_st(cl, cl->mlist.st_o, dist_tab); + i = -1; + while (++i < cl->big_t_val) + ft_memdel((void*)&cl->big_t[i]); + ft_memdel((void*)&cl->big_t); + i = -1; + cl->big_t_val = 0; while (++i < FT_TOTAL_SPRT) - { - if (cl->mlist.st_o[i] != -1 && dist_tab[i][0] < dist_tab[i + 1][0]) - { - tmp = cl->mlist.st_o[i]; - cl->mlist.st_o[i] = cl->mlist.st_o[i + 1]; - cl->mlist.st_o[i + 1] = tmp; - ft_swap_them(i, dist_tab); - i = -1; - } - } + cl->big_t_val += cl->mlist.sprite_nbr[i]; + ft_alloc_and_fill_big_t(dist_tab, cl); i = -1; while (++i < FT_TOTAL_SPRT + 1) ft_memdel((void*)&dist_tab[i]); -- cgit v1.2.3 From fe29469eee3a78905e05ab95ea20e1c9ed7045fe Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Sun, 29 Mar 2020 16:05:58 +0200 Subject: I must be close --- src/ft_draw_sprite.c | 52 ++++++++++++++++++++++++++-------------------------- src/ft_sort_s_t.c | 9 +++++---- 2 files changed, 31 insertions(+), 30 deletions(-) (limited to 'src') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index dc6f54f..fcc2a8b 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -16,25 +16,25 @@ #include #include -static void - ft_sort_sprites_norme(float *dist_tab, int16_t *i, uint16_t j, t_cub *cl) -{ - uint32_t tmp; - uint32_t it; +/* static void */ +/* ft_sort_sprites_norme(float *dist_tab, int16_t *i, uint16_t j, t_cub *cl) */ +/* { */ +/* uint32_t tmp; */ +/* uint32_t it; */ - it = *i; - tmp = 0; - if (dist_tab[it] < dist_tab[it + 1]) - { - tmp = dist_tab[it]; - dist_tab[it] = dist_tab[it + 1]; - dist_tab[it + 1] = tmp; - tmp = cl->mlist.sprite_order[j][it]; - cl->mlist.sprite_order[j][it] = cl->mlist.sprite_order[j][it + 1]; - cl->mlist.sprite_order[j][it + 1] = tmp; - *i = -1; - } -} +/* it = *i; */ +/* tmp = 0; */ +/* if (dist_tab[it] < dist_tab[it + 1]) */ +/* { */ +/* tmp = dist_tab[it]; */ +/* dist_tab[it] = dist_tab[it + 1]; */ +/* dist_tab[it + 1] = tmp; */ +/* tmp = cl->mlist.sprite_order[j][it]; */ +/* cl->mlist.sprite_order[j][it] = cl->mlist.sprite_order[j][it + 1]; */ +/* cl->mlist.sprite_order[j][it + 1] = tmp; */ +/* *i = -1; */ +/* } */ +/* } */ void ft_sort_sprites(t_cub *cl, int16_t it, int16_t jt) @@ -52,17 +52,17 @@ void (cl->plist.pos_x - cl->sprites[jt][it].s_pos_x) + (cl->plist.pos_y - cl->sprites[jt][it].s_pos_y) * (cl->plist.pos_y - cl->sprites[jt][it].s_pos_y)); - cl->mlist.sprite_order[jt][it] = it; + /* cl->mlist.sprite_order[jt][it] = it; */ } it = -1; } - jt = -1; - while (++jt < FT_TOTAL_SPRT) - { - it = -1; - while (++it < cl->mlist.sprite_nbr[jt] - 1) - ft_sort_sprites_norme(dist_tab[jt], &it, jt, cl); - } + /* jt = -1; */ + /* while (++jt < FT_TOTAL_SPRT) */ + /* { */ + /* it = -1; */ + /* while (++it < cl->mlist.sprite_nbr[jt] - 1) */ + /* ft_sort_sprites_norme(dist_tab[jt], &it, jt, cl); */ + /* } */ ft_sort_s_t(cl, dist_tab); } diff --git a/src/ft_sort_s_t.c b/src/ft_sort_s_t.c index bcf033f..f51437e 100644 --- a/src/ft_sort_s_t.c +++ b/src/ft_sort_s_t.c @@ -21,12 +21,12 @@ float uint16_t i; float **dist_tab; - if (!(dist_tab = (float **)malloc((FT_TOTAL_SPRT + 1) * sizeof(float*)))) + if (!(dist_tab = (float **)ft_calloc((FT_TOTAL_SPRT + 1), sizeof(float*)))) return (NULL); i = 0; while (i < FT_TOTAL_SPRT + 1) { - if (!(dist_tab[i] = (float *)malloc(4096 * sizeof(float)))) + if (!(dist_tab[i] = (float *)ft_calloc(4096, sizeof(float)))) return (NULL); i++; } @@ -67,11 +67,11 @@ static void i = 0; j = 0; k = 0; + ft_printf("%d %d %d %d %d %d %d %d\n", (int32_t)dist_tab[8][0], (int32_t)dist_tab[8][1], (int32_t)dist_tab[8][2], (int32_t)dist_tab[8][3], (int32_t)dist_tab[8][4], (int32_t)dist_tab[8][5], (int32_t)dist_tab[8][6], (int32_t)dist_tab[8][7]); while (i < cl->big_t_val) { if (dist_tab[j][k]) { - ft_printf("%d\n", j); cl->big_t[i][0] = dist_tab[j][k]; cl->big_t[i][1] = (float)ft_set_current_sprite(cl, j); cl->big_t[i][2] = (float)j; @@ -95,6 +95,7 @@ static void j = -1; i = -1; + (void)dist_tab; while (++i < FT_TOTAL_SPRT) st_o[i] = -1; i = -1; @@ -103,7 +104,7 @@ static void if (cl->mlist.sprite_nbr[i] > 0) { st_o[++j] = i; - ft_memcpy(dist_tab[j], dist_tab[i], 4096 * sizeof(float)); + /* ft_memcpy(dist_tab[j], dist_tab[i], 4096 * sizeof(float)); */ } } } -- cgit v1.2.3 From 1d0be73de37e2b60ecc7babbbdf385e24e86dfee Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Sun, 29 Mar 2020 17:07:09 +0200 Subject: litteral god --- src/ft_draw_sprite.c | 21 +++++++----- src/ft_draw_sprite_extra.c | 1 - src/ft_sort_s_t.c | 79 ++++++++++++++++++++++++++++++++-------------- 3 files changed, 69 insertions(+), 32 deletions(-) (limited to 'src') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index fcc2a8b..41daec4 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -45,16 +45,21 @@ void ft_alloc_error(cl); while (++jt < FT_TOTAL_SPRT) { - while (++it < cl->mlist.sprite_nbr[jt]) + if (cl->mlist.sprite_nbr[jt] == 0) + dist_tab[jt][0] = 0; + else { - dist_tab[jt][it] = - ((cl->plist.pos_x - cl->sprites[jt][it].s_pos_x) * - (cl->plist.pos_x - cl->sprites[jt][it].s_pos_x) + - (cl->plist.pos_y - cl->sprites[jt][it].s_pos_y) * - (cl->plist.pos_y - cl->sprites[jt][it].s_pos_y)); - /* cl->mlist.sprite_order[jt][it] = it; */ + while (++it < cl->mlist.sprite_nbr[jt]) + { + dist_tab[jt][it] = + ((cl->plist.pos_x - cl->sprites[jt][it].s_pos_x) * + (cl->plist.pos_x - cl->sprites[jt][it].s_pos_x) + + (cl->plist.pos_y - cl->sprites[jt][it].s_pos_y) * + (cl->plist.pos_y - cl->sprites[jt][it].s_pos_y)); + /* cl->mlist.sprite_order[jt][it] = it; */ + } + it = -1; } - it = -1; } /* jt = -1; */ /* while (++jt < FT_TOTAL_SPRT) */ diff --git a/src/ft_draw_sprite_extra.c b/src/ft_draw_sprite_extra.c index 598f637..ba2dac5 100644 --- a/src/ft_draw_sprite_extra.c +++ b/src/ft_draw_sprite_extra.c @@ -47,7 +47,6 @@ static void (1 + sprite->transformx / sprite->transformy); } -#include void ft_calc_sprite(t_cub *cl) { diff --git a/src/ft_sort_s_t.c b/src/ft_sort_s_t.c index f51437e..00627e5 100644 --- a/src/ft_sort_s_t.c +++ b/src/ft_sort_s_t.c @@ -52,22 +52,35 @@ static int8_t } static void - ft_alloc_and_fill_big_t(float **dist_tab, t_cub *cl) + ft_alloc_big_t(t_cub *cl) { int32_t i; - int32_t j; - int32_t k; - if (!(cl->big_t = (float**)malloc(cl->big_t_val * sizeof(float*)))) + if (!(cl->big_t = (float**)malloc((cl->big_t_val) * sizeof(float*)))) + { ft_alloc_error(cl); - i = -1; - while (++i < cl->big_t_val) + } + i = 0; + while (i < cl->big_t_val) + { if (!(cl->big_t[i] = (float*)malloc(4 * sizeof(float)))) + { ft_alloc_error(cl); + } + i++; + } +} + +static void + ft_fill_big_t(float **dist_tab, t_cub *cl) +{ + int32_t i; + int32_t j; + int32_t k; + i = 0; j = 0; k = 0; - ft_printf("%d %d %d %d %d %d %d %d\n", (int32_t)dist_tab[8][0], (int32_t)dist_tab[8][1], (int32_t)dist_tab[8][2], (int32_t)dist_tab[8][3], (int32_t)dist_tab[8][4], (int32_t)dist_tab[8][5], (int32_t)dist_tab[8][6], (int32_t)dist_tab[8][7]); while (i < cl->big_t_val) { if (dist_tab[j][k]) @@ -77,35 +90,53 @@ static void cl->big_t[i][2] = (float)j; cl->big_t[i][3] = (float)k; k++; + i++; } else { k = 0; j++; } - i++; } } static void - ft_init_st(t_cub *cl, int32_t *st_o, float **dist_tab) + ft_sort_big_t(t_cub *cl) { - int8_t i; - int8_t j; + int32_t i; + int8_t j; + float tmp[4]; - j = -1; - i = -1; - (void)dist_tab; - while (++i < FT_TOTAL_SPRT) - st_o[i] = -1; - i = -1; - while (++i < FT_TOTAL_SPRT) + i = 0; + while (i < cl->big_t_val - 1) { - if (cl->mlist.sprite_nbr[i] > 0) + if (cl->big_t[i][0] < cl->big_t[i + 1][0]) { - st_o[++j] = i; - /* ft_memcpy(dist_tab[j], dist_tab[i], 4096 * sizeof(float)); */ + j = -1; + while (++j < 4) + tmp[j] = cl->big_t[i][j]; + j = -1; + while (++j < 4) + cl->big_t[i][j] = cl->big_t[i + 1][j]; + j = -1; + while (++j < 4) + cl->big_t[i + 1][j] = tmp[j]; + i = -1; } + i++; + } +} + +static void + ft_init_st(int32_t *st_o) +{ + int8_t i; + + i = 0; + while (i < FT_TOTAL_SPRT) + { + st_o[i] = i; + i++; } } @@ -114,7 +145,7 @@ void { int32_t i; - ft_init_st(cl, cl->mlist.st_o, dist_tab); + ft_init_st(cl->mlist.st_o); i = -1; while (++i < cl->big_t_val) ft_memdel((void*)&cl->big_t[i]); @@ -123,7 +154,9 @@ void cl->big_t_val = 0; while (++i < FT_TOTAL_SPRT) cl->big_t_val += cl->mlist.sprite_nbr[i]; - ft_alloc_and_fill_big_t(dist_tab, cl); + ft_alloc_big_t(cl); + ft_fill_big_t(dist_tab, cl); + ft_sort_big_t(cl); i = -1; while (++i < FT_TOTAL_SPRT + 1) ft_memdel((void*)&dist_tab[i]); -- cgit v1.2.3 From f51e891abeb7459a236e5b74d3a864834c5c8a80 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Sun, 29 Mar 2020 17:08:57 +0200 Subject: The greatest --- src/ft_sort_s_t.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/ft_sort_s_t.c b/src/ft_sort_s_t.c index 00627e5..433fd07 100644 --- a/src/ft_sort_s_t.c +++ b/src/ft_sort_s_t.c @@ -114,13 +114,11 @@ static void { j = -1; while (++j < 4) + { tmp[j] = cl->big_t[i][j]; - j = -1; - while (++j < 4) cl->big_t[i][j] = cl->big_t[i + 1][j]; - j = -1; - while (++j < 4) cl->big_t[i + 1][j] = tmp[j]; + } i = -1; } i++; -- cgit v1.2.3 From 69ca60b6f989dedc94c2e25ab9927b26d63cbdf8 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Sun, 29 Mar 2020 17:34:48 +0200 Subject: Norm --- src/ft_big_t.c | 108 ++++++++++++++++++++++++++++++++++++++++++ src/ft_draw_heals.c | 106 ------------------------------------------ src/ft_draw_heals_extra.c | 40 ---------------- src/ft_draw_sprite.c | 42 +++++++---------- src/ft_draw_sprite_extra.c | 4 +- src/ft_draw_traps.c | 104 ----------------------------------------- src/ft_draw_traps_extra.c | 40 ---------------- src/ft_draw_weapons.c | 111 -------------------------------------------- src/ft_draw_weapons_extra.c | 42 ----------------- src/ft_get_heal_spawn.c | 45 ------------------ src/ft_get_weapon_spawn.c | 59 ----------------------- src/ft_init_weaps.c | 34 -------------- src/ft_raycasting.c | 3 -- src/ft_sort_s_t.c | 110 ------------------------------------------- 14 files changed, 125 insertions(+), 723 deletions(-) create mode 100644 src/ft_big_t.c delete mode 100644 src/ft_draw_heals.c delete mode 100644 src/ft_draw_heals_extra.c delete mode 100644 src/ft_draw_traps.c delete mode 100644 src/ft_draw_traps_extra.c delete mode 100644 src/ft_draw_weapons.c delete mode 100644 src/ft_draw_weapons_extra.c delete mode 100644 src/ft_get_heal_spawn.c delete mode 100644 src/ft_get_weapon_spawn.c delete mode 100644 src/ft_init_weaps.c (limited to 'src') diff --git a/src/ft_big_t.c b/src/ft_big_t.c new file mode 100644 index 0000000..e01bed7 --- /dev/null +++ b/src/ft_big_t.c @@ -0,0 +1,108 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ft_sort_s_t.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: rbousset +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/24 20:22:45 by rbousset #+# #+# */ +/* Updated: 2020/03/09 18:56:01 by rbousset ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include +#include + +static int8_t + ft_set_current_sprite(t_cub *cl, int8_t j) +{ + const int8_t st_o = cl->mlist.st_o[j]; + + if (st_o == 0) + return (4); + else if (st_o >= 1 && st_o <= 7) + return (st_o + 7); + else if (st_o == 8) + return (15); + else if (st_o == 9) + return (17); + else if (st_o >= 10) + return (st_o + 8); + return (0); +} + +void + ft_alloc_big_t(t_cub *cl) +{ + int32_t i; + + if (!(cl->big_t = (float**)malloc((cl->big_t_val) * sizeof(float*)))) + { + ft_alloc_error(cl); + } + i = 0; + while (i < cl->big_t_val) + { + if (!(cl->big_t[i] = (float*)malloc(4 * sizeof(float)))) + { + ft_alloc_error(cl); + } + i++; + } +} + +void + ft_fill_big_t(float **dist_tab, t_cub *cl) +{ + int32_t i; + int32_t j; + int32_t k; + + i = 0; + j = 0; + k = 0; + while (i < cl->big_t_val) + { + if (dist_tab[j][k]) + { + cl->big_t[i][0] = dist_tab[j][k]; + cl->big_t[i][1] = (float)ft_set_current_sprite(cl, j); + cl->big_t[i][2] = (float)j; + cl->big_t[i][3] = (float)k; + k++; + i++; + } + else + { + k = 0; + j++; + } + } +} + +void + ft_sort_big_t(t_cub *cl) +{ + int32_t i; + int8_t j; + float tmp[4]; + + i = 0; + while (i < cl->big_t_val - 1) + { + if (cl->big_t[i][0] < cl->big_t[i + 1][0]) + { + j = -1; + while (++j < 4) + { + tmp[j] = cl->big_t[i][j]; + cl->big_t[i][j] = cl->big_t[i + 1][j]; + cl->big_t[i + 1][j] = tmp[j]; + } + i = -1; + } + i++; + } +} + diff --git a/src/ft_draw_heals.c b/src/ft_draw_heals.c deleted file mode 100644 index 0ef9590..0000000 --- a/src/ft_draw_heals.c +++ /dev/null @@ -1,106 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_draw_heals.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: rbousset +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2020/02/24 20:22:45 by rbousset #+# #+# */ -/* Updated: 2020/03/09 18:56:01 by rbousset ### ########lyon.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include -#include -#include -#include - -static void - ft_sort_heals_norme(float *dist_tab, int32_t it, t_cub *cl) -{ - uint32_t tmp; - - tmp = 0; - if (dist_tab[it] > dist_tab[it + 1]) - { - tmp = dist_tab[it]; - dist_tab[it] = dist_tab[it + 1]; - dist_tab[it + 1] = tmp; - tmp = cl->mlist.heals_order[it]; - cl->mlist.heals_order[it] = cl->mlist.heals_order[it + 1]; - cl->mlist.heals_order[it + 1] = tmp; - it = 0; - } -} - -void - ft_sort_heals(t_cub *cl) -{ - float dist_tab[4096]; - int32_t it; - - it = 0; - while (it < cl->mlist.heals_nbr) - { - dist_tab[it] = ((cl->plist.pos_x - cl->heals[it].s_pos_x) * - (cl->plist.pos_x - cl->heals[it].s_pos_x) + - (cl->plist.pos_y - cl->heals[it].s_pos_y) * - (cl->plist.pos_y - cl->heals[it].s_pos_y)); - cl->mlist.heals_order[it] = it; - it++; - } - it = 0; - while (it < cl->mlist.heals_nbr) - { - ft_sort_heals_norme(dist_tab, it, cl); - } -} - -static void - ft_put_heal(t_sprite *sprite, t_cub *cl) -{ - float dist; - t_rgb rgb; - - if ((dist = sqrtf(powf(cl->plist.pos_x - sprite->s_pos_x, 2) - + powf(cl->plist.pos_y - sprite->s_pos_y, 2))) <= 0) - dist = 0.0001; - rgb.r = (uint8_t)cl->tlist[17].ptr[sprite->tex_x * 4 + 4 * - cl->tlist[17].img_h * sprite->tex_y + 2]; - rgb.g = (uint8_t)cl->tlist[17].ptr[sprite->tex_x * 4 + 4 * - cl->tlist[17].img_h * sprite->tex_y + 1]; - rgb.b = (uint8_t)cl->tlist[17].ptr[sprite->tex_x * 4 + 4 * - cl->tlist[17].img_h * sprite->tex_y]; - *(int*)(cl->img.ptr + ((uint16_t)sprite->x * 4 + - (sprite->y * cl->img.sizeline))) = ft_rgb_to_hex(dist, rgb, cl); -} - -void - ft_draw_heals(t_cub *cl, t_sprite *sprite) -{ - int32_t d; - - sprite->x = sprite->drawstartx; - while (sprite->x < sprite->drawendx) - { - sprite->tex_x = (int32_t)((sprite->x - (-sprite->spritewidth / 2 + - sprite->spritescreenx)) - * cl->tlist[17].img_w / sprite->spritewidth); - sprite->y = sprite->drawstarty; - while (sprite->y < sprite->drawendy) - { - d = sprite->y * 256 - cl->wlist.y_size * 128 + - sprite->spriteheight * 128; - sprite->tex_y = ((d * cl->tlist[17].img_h / 2) / - sprite->spriteheight) / 128; - if (sprite->transformy > 0 - && cl->tlist[17].ptr[sprite->tex_x * 4 + 4 * - cl->tlist[17].img_h * sprite->tex_y] - && cl->rlist.wall_dist_tab[sprite->x] > sprite->transformy) - ft_put_heal(sprite, cl); - sprite->y++; - } - sprite->x++; - } -} diff --git a/src/ft_draw_heals_extra.c b/src/ft_draw_heals_extra.c deleted file mode 100644 index 1e5a775..0000000 --- a/src/ft_draw_heals_extra.c +++ /dev/null @@ -1,40 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_draw_heals_extra.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: rbousset +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2020/02/24 20:22:45 by rbousset #+# #+# */ -/* Updated: 2020/03/09 18:56:01 by rbousset ### ########lyon.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include - -void - ft_calc_heal(t_cub *cl) -{ - t_sprite sprite; - int32_t i; - - i = 0; - while (i < cl->mlist.heals_nbr) - { - sprite = cl->heals[i]; - sprite.spritey = sprite.s_pos_x - (cl->plist.pos_x - 0.5); - sprite.spritex = sprite.s_pos_y - (cl->plist.pos_y - 0.5); - sprite.invdet = 1.0 / (cl->plist.plane_x * cl->plist.dir_y - - cl->plist.dir_x * cl->plist.plane_y); - sprite.transformx = sprite.invdet * (cl->plist.dir_y * sprite.spritex - - cl->plist.dir_x * sprite.spritey); - sprite.transformy = sprite.invdet * (-cl->plist.plane_y * sprite.spritex - + cl->plist.plane_x * sprite.spritey); - sprite.spritescreenx = (int)(cl->wlist.x_size / 2) * - (1 + sprite.transformx / sprite.transformy); - ft_sprite_h_w(cl, &sprite); - ft_draw_heals(cl, &sprite); - i++; - } -} diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 41daec4..e41484e 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -16,25 +16,23 @@ #include #include -/* static void */ -/* ft_sort_sprites_norme(float *dist_tab, int16_t *i, uint16_t j, t_cub *cl) */ -/* { */ -/* uint32_t tmp; */ -/* uint32_t it; */ +static float + **ft_alloc_dist_tab(void) +{ + uint16_t i; + float **dist_tab; -/* it = *i; */ -/* tmp = 0; */ -/* if (dist_tab[it] < dist_tab[it + 1]) */ -/* { */ -/* tmp = dist_tab[it]; */ -/* dist_tab[it] = dist_tab[it + 1]; */ -/* dist_tab[it + 1] = tmp; */ -/* tmp = cl->mlist.sprite_order[j][it]; */ -/* cl->mlist.sprite_order[j][it] = cl->mlist.sprite_order[j][it + 1]; */ -/* cl->mlist.sprite_order[j][it + 1] = tmp; */ -/* *i = -1; */ -/* } */ -/* } */ + if (!(dist_tab = (float **)ft_calloc((FT_TOTAL_SPRT + 1), sizeof(float*)))) + return (NULL); + i = 0; + while (i < FT_TOTAL_SPRT + 1) + { + if (!(dist_tab[i] = (float *)ft_calloc(4096, sizeof(float)))) + return (NULL); + i++; + } + return (dist_tab); +} void ft_sort_sprites(t_cub *cl, int16_t it, int16_t jt) @@ -56,18 +54,10 @@ void (cl->plist.pos_x - cl->sprites[jt][it].s_pos_x) + (cl->plist.pos_y - cl->sprites[jt][it].s_pos_y) * (cl->plist.pos_y - cl->sprites[jt][it].s_pos_y)); - /* cl->mlist.sprite_order[jt][it] = it; */ } it = -1; } } - /* jt = -1; */ - /* while (++jt < FT_TOTAL_SPRT) */ - /* { */ - /* it = -1; */ - /* while (++it < cl->mlist.sprite_nbr[jt] - 1) */ - /* ft_sort_sprites_norme(dist_tab[jt], &it, jt, cl); */ - /* } */ ft_sort_s_t(cl, dist_tab); } diff --git a/src/ft_draw_sprite_extra.c b/src/ft_draw_sprite_extra.c index ba2dac5..c201566 100644 --- a/src/ft_draw_sprite_extra.c +++ b/src/ft_draw_sprite_extra.c @@ -59,9 +59,7 @@ void ft_sort_sprites(cl, -1, -1); while (++j < cl->big_t_val) { - sprite = - cl->sprites[(int8_t)cl->big_t[j][2]] - [(int16_t)cl->big_t[j][3]]; + sprite = cl->sprites[(int8_t)cl->big_t[j][2]][(int32_t)cl->big_t[j][3]]; sprite.current_sprite = (int8_t)cl->big_t[j][1]; sprite.spritey = sprite.s_pos_x - (cl->plist.pos_x - 0.5); sprite.spritex = sprite.s_pos_y - (cl->plist.pos_y - 0.5); diff --git a/src/ft_draw_traps.c b/src/ft_draw_traps.c deleted file mode 100644 index ed53dc0..0000000 --- a/src/ft_draw_traps.c +++ /dev/null @@ -1,104 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_draw_traps.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: rbousset +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2020/02/24 20:22:45 by rbousset #+# #+# */ -/* Updated: 2020/03/09 18:56:01 by rbousset ### ########lyon.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include -#include - -static void - ft_sort_traps_norme(float *dist_tab, int32_t it, t_cub *cl) -{ - uint32_t tmp; - - tmp = 0; - if (dist_tab[it] > dist_tab[it + 1]) - { - tmp = dist_tab[it]; - dist_tab[it] = dist_tab[it + 1]; - dist_tab[it + 1] = tmp; - tmp = cl->mlist.traps_order[it]; - cl->mlist.traps_order[it] = cl->mlist.traps_order[it + 1]; - cl->mlist.traps_order[it + 1] = tmp; - it = 0; - } -} - -void - ft_sort_traps(t_cub *cl) -{ - float dist_tab[4096]; - int32_t it; - - it = 0; - while (it < cl->mlist.traps_nbr) - { - dist_tab[it] = ((cl->plist.pos_x - cl->traps[it].s_pos_x) * - (cl->plist.pos_x - cl->traps[it].s_pos_x) + - (cl->plist.pos_y - cl->traps[it].s_pos_y) * - (cl->plist.pos_y - cl->traps[it].s_pos_y)); - cl->mlist.traps_order[it] = it; - it++; - } - it = 0; - while (it < cl->mlist.traps_nbr) - { - ft_sort_traps_norme(dist_tab, it, cl); - } -} - -static void - ft_put_trap(t_sprite *sprite, t_cub *cl) -{ - float dist; - t_rgb rgb; - - if ((dist = sqrtf(powf(cl->plist.pos_x - sprite->s_pos_x, 2) - + powf(cl->plist.pos_y - sprite->s_pos_y, 2))) <= 0) - dist = 0.0001; - rgb.r = (uint8_t)cl->tlist[15].ptr[sprite->tex_x * 4 + 4 * - cl->tlist[15].img_h * sprite->tex_y + 2]; - rgb.g = (uint8_t)cl->tlist[15].ptr[sprite->tex_x * 4 + 4 * - cl->tlist[15].img_h * sprite->tex_y + 1]; - rgb.b = (uint8_t)cl->tlist[15].ptr[sprite->tex_x * 4 + 4 * - cl->tlist[15].img_h * sprite->tex_y]; - *(int*)(cl->img.ptr + ((uint16_t)sprite->x * 4 + - (sprite->y * cl->img.sizeline))) = ft_rgb_to_hex(dist, rgb, cl); -} - -void - ft_draw_traps(t_cub *cl, t_sprite *sprite) -{ - int32_t d; - - sprite->x = sprite->drawstartx; - while (sprite->x < sprite->drawendx) - { - sprite->tex_x = (int32_t)((sprite->x - (-sprite->spritewidth / 2 + - sprite->spritescreenx)) - * cl->tlist[15].img_w / sprite->spritewidth); - sprite->y = sprite->drawstarty; - while (sprite->y < sprite->drawendy) - { - d = sprite->y * 256 - cl->wlist.y_size * 128 + - sprite->spriteheight * 128; - sprite->tex_y = ((d * cl->tlist[15].img_h / 2) / - sprite->spriteheight) / 128; - if (sprite->transformy > 0 - && cl->tlist[15].ptr[sprite->tex_x * 4 + 4 * - cl->tlist[15].img_h * sprite->tex_y] - && cl->rlist.wall_dist_tab[sprite->x] > sprite->transformy) - ft_put_trap(sprite, cl); - sprite->y++; - } - sprite->x++; - } -} diff --git a/src/ft_draw_traps_extra.c b/src/ft_draw_traps_extra.c deleted file mode 100644 index cbeffe1..0000000 --- a/src/ft_draw_traps_extra.c +++ /dev/null @@ -1,40 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_draw_traps_extra.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: rbousset +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2020/02/24 20:22:45 by rbousset #+# #+# */ -/* Updated: 2020/03/09 18:56:01 by rbousset ### ########lyon.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include - -void - ft_calc_trap(t_cub *cl) -{ - t_sprite sprite; - int32_t i; - - i = 0; - while (i < cl->mlist.traps_nbr) - { - sprite = cl->traps[i]; - sprite.spritey = sprite.s_pos_x - (cl->plist.pos_x - 0.5); - sprite.spritex = sprite.s_pos_y - (cl->plist.pos_y - 0.5); - sprite.invdet = 1.0 / (cl->plist.plane_x * cl->plist.dir_y - - cl->plist.dir_x * cl->plist.plane_y); - sprite.transformx = sprite.invdet * (cl->plist.dir_y * sprite.spritex - - cl->plist.dir_x * sprite.spritey); - sprite.transformy = sprite.invdet * (-cl->plist.plane_y * sprite.spritex - + cl->plist.plane_x * sprite.spritey); - sprite.spritescreenx = (int)(cl->wlist.x_size / 2) * - (1 + sprite.transformx / sprite.transformy); - ft_sprite_h_w(cl, &sprite); - ft_draw_traps(cl, &sprite); - i++; - } -} diff --git a/src/ft_draw_weapons.c b/src/ft_draw_weapons.c deleted file mode 100644 index c527987..0000000 --- a/src/ft_draw_weapons.c +++ /dev/null @@ -1,111 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_draw_weapons.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: rbousset +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2020/02/24 20:22:45 by rbousset #+# #+# */ -/* Updated: 2020/03/09 18:56:01 by rbousset ### ########lyon.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include -#include - -static void - ft_sort_weapons_norme(float *dist_tab, int16_t *i, uint16_t j, t_cub *cl) -{ - uint32_t tmp; - uint32_t it; - - it = *i; - tmp = 0; - if (dist_tab[it] < dist_tab[it + 1]) - { - tmp = dist_tab[it]; - dist_tab[it] = dist_tab[it + 1]; - dist_tab[it + 1] = tmp; - tmp = cl->mlist.weaps_order[j][it]; - cl->mlist.weaps_order[j][it] = cl->mlist.weaps_order[j][it + 1]; - cl->mlist.weaps_order[j][it + 1] = tmp; - *i = -1; - } -} - -void - ft_sort_weapons(t_cub *cl, int16_t it, int16_t jt) -{ - float dist_tab[2][1]; - - while (++jt <= cl->mlist.weapon_var) - { - while (++it <= cl->mlist.weaps_nbr[jt]) - { - dist_tab[jt][it] = - ((cl->plist.pos_x - cl->weaps[jt][it].s_pos_x) * - (cl->plist.pos_x - cl->weaps[jt][it].s_pos_x) + - (cl->plist.pos_y - cl->weaps[jt][it].s_pos_y) * - (cl->plist.pos_y - cl->weaps[jt][it].s_pos_y)); - cl->mlist.weaps_order[jt][it] = it; - } - it = -1; - } - it = -1; - jt = -1; - while (++jt < cl->mlist.weapon_var) - { - while (++it < cl->mlist.weaps_nbr[jt] - 1) - ft_sort_weapons_norme(dist_tab[jt], &it, jt, cl); - it = -1; - } -} - -static void - ft_put_weapon(t_sprite *sprite, t_cub *cl) -{ - float dist; - t_rgb rgb; - - if ((dist = sqrtf(powf(cl->plist.pos_x - sprite->s_pos_x, 2) - + powf(cl->plist.pos_y - sprite->s_pos_y, 2))) <= 0) - dist = 0.0001; - rgb.r = (uint8_t)cl->tlist[sprite->current_sprite].ptr[sprite->tex_x - * 4 + 4 * cl->tlist[sprite->current_sprite].img_h * sprite->tex_y + 2]; - rgb.g = (uint8_t)cl->tlist[sprite->current_sprite].ptr[sprite->tex_x - * 4 + 4 * cl->tlist[sprite->current_sprite].img_h * sprite->tex_y + 1]; - rgb.b = (uint8_t)cl->tlist[sprite->current_sprite].ptr[sprite->tex_x - * 4 + 4 * cl->tlist[sprite->current_sprite].img_h * sprite->tex_y]; - *(int*)(cl->img.ptr + ((uint16_t)sprite->x * 4 + - (sprite->y * cl->img.sizeline))) = ft_rgb_to_hex(dist, rgb, cl); -} - -void - ft_draw_weapon(t_cub *cl, t_sprite *sprite) -{ - int32_t d; - - sprite->x = sprite->drawstartx; - while (sprite->x < sprite->drawendx) - { - sprite->tex_x = (int32_t)((sprite->x - (-sprite->spritewidth / 2 + - sprite->spritescreenx)) - * cl->tlist[sprite->current_sprite].img_w / sprite->spritewidth); - sprite->y = sprite->drawstarty; - while (sprite->y < sprite->drawendy) - { - d = sprite->y * 256 - cl->wlist.y_size * 128 + - sprite->spriteheight * 128; - sprite->tex_y = ((d * cl->tlist[sprite->current_sprite].img_h / 2) / - sprite->spriteheight) / 128; - if (sprite->transformy > 0 && - cl->tlist[sprite->current_sprite].ptr[sprite->tex_x * 4 + 4 * - cl->tlist[sprite->current_sprite].img_h * sprite->tex_y] - && cl->rlist.wall_dist_tab[sprite->x] > sprite->transformy) - ft_put_weapon(sprite, cl); - sprite->y++; - } - sprite->x++; - } -} diff --git a/src/ft_draw_weapons_extra.c b/src/ft_draw_weapons_extra.c deleted file mode 100644 index ed3ed53..0000000 --- a/src/ft_draw_weapons_extra.c +++ /dev/null @@ -1,42 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_draw_weapons_extra.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: rbousset +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2020/02/24 20:22:45 by rbousset #+# #+# */ -/* Updated: 2020/03/09 18:56:01 by rbousset ### ########lyon.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include - -static void - ft_calc_weapon(uint8_t id, t_cub *cl) -{ - t_sprite sprite; - - sprite = cl->weaps[id][0]; - sprite.spritey = sprite.s_pos_x - (cl->plist.pos_x - 0.5); - sprite.spritex = sprite.s_pos_y - (cl->plist.pos_y - 0.5); - sprite.invdet = 1.0 / (cl->plist.plane_x * cl->plist.dir_y - - cl->plist.dir_x * cl->plist.plane_y); - sprite.transformx = sprite.invdet * (cl->plist.dir_y * sprite.spritex - - cl->plist.dir_x * sprite.spritey); - sprite.transformy = sprite.invdet * (-cl->plist.plane_y * sprite.spritex - + cl->plist.plane_x * sprite.spritey); - sprite.spritescreenx = (int)(cl->wlist.x_size / 2) * - (1 + sprite.transformx / sprite.transformy); - ft_sprite_h_w(cl, &sprite); - ft_draw_weapon(cl, &sprite); -} - -void - ft_calc_weaps(t_cub *cl) -{ - ft_calc_weapon(0, cl); - ft_calc_weapon(1, cl); - ft_calc_weapon(2, cl); -} diff --git a/src/ft_get_heal_spawn.c b/src/ft_get_heal_spawn.c deleted file mode 100644 index 142709b..0000000 --- a/src/ft_get_heal_spawn.c +++ /dev/null @@ -1,45 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_get_traps.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: rbousset +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2020/02/28 18:24:52 by rbousset #+# #+# */ -/* Updated: 2020/02/28 18:24:56 by rbousset ### ########lyon.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include -#include - -void - ft_get_heal_spawn(t_cub *clist) -{ - size_t x; - size_t y; - uint8_t i; - - x = 1; - y = 1; - i = 0; - while (clist->mlist.map[y]) - { - while (clist->mlist.map[y][x]) - { - if (clist->mlist.map[y][x] == '+') - { - clist->mlist.heals_nbr++; - if (clist->mlist.heals_nbr > 64) - ft_map_error(FT_ERR_TOO_MUCH_HEALS, clist); - clist->heals[i].s_pos_x = x; - clist->heals[i].s_pos_y = y; - i++; - } - x++; - } - x = 1; - y++; - } -} diff --git a/src/ft_get_weapon_spawn.c b/src/ft_get_weapon_spawn.c deleted file mode 100644 index 1ed4c7d..0000000 --- a/src/ft_get_weapon_spawn.c +++ /dev/null @@ -1,59 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_get_weapon_spawn.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: rbousset +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2020/02/28 20:54:28 by rbousset #+# #+# */ -/* Updated: 2020/02/28 20:54:29 by rbousset ### ########lyon.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include -#include - -static void - ft_get_weapon_id_spawn(uint8_t id, size_t y, size_t x, t_cub *clist) -{ - clist->mlist.weaps_nbr[id]++; - if (clist->mlist.weaps_nbr[id] > 1) - { - if (id == 0) - ft_map_error(FT_ERR_TOO_MUCH_W_ONE, clist); - else if (id == 1) - ft_map_error(FT_ERR_TOO_MUCH_W_TWO, clist); - else - ft_map_error(FT_ERR_TOO_MUCH_W_THREE, clist); - } - clist->weaps[id][0].s_pos_x = x; - clist->weaps[id][0].s_pos_y = y; - clist->weaps[id][0].current_sprite = 18 + id; - clist->mlist.weapon_var++; -} - -void - ft_get_weapon_spawn(t_cub *clist) -{ - size_t x; - size_t y; - - x = 1; - y = 1; - while (clist->mlist.map[y]) - { - while (clist->mlist.map[y][x]) - { - if (clist->mlist.map[y][x] == '!') - ft_get_weapon_id_spawn(0, y, x, clist); - else if (clist->mlist.map[y][x] == '@') - ft_get_weapon_id_spawn(1, y, x, clist); - else if (clist->mlist.map[y][x] == '#') - ft_get_weapon_id_spawn(2, y, x, clist); - x++; - } - x = 1; - y++; - } -} diff --git a/src/ft_init_weaps.c b/src/ft_init_weaps.c deleted file mode 100644 index f3f7452..0000000 --- a/src/ft_init_weaps.c +++ /dev/null @@ -1,34 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* ft_init_weaps.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: rbousset +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2020/02/14 17:28:53 by rbousset #+# #+# */ -/* Updated: 2020/02/14 17:28:53 by rbousset ### ########lyon.fr */ -/* */ -/* ************************************************************************** */ - -#include -#include -#include -#include -#include - -int8_t - ft_init_weaps(t_sprite ***weaps) -{ - uint8_t i; - - if (!(*weaps = (t_sprite**)ft_calloc(3, sizeof(t_sprite*)))) - return (-1); - i = 0; - while (i < 3) - { - if (!(*((*weaps) + i) = (t_sprite*)ft_calloc(1, sizeof(t_sprite)))) - return (-1); - i++; - } - return (0); -} diff --git a/src/ft_raycasting.c b/src/ft_raycasting.c index 3bfd038..67c3f4e 100644 --- a/src/ft_raycasting.c +++ b/src/ft_raycasting.c @@ -107,9 +107,6 @@ void pthread_join(tid[0], 0x0); pthread_join(tid[1], 0x0); ft_calc_sprite(cl); - /* ft_calc_heal(cl); */ - /* ft_calc_trap(cl); */ - /* ft_calc_weaps(cl); */ if (cl->plist.handles_weapon > -1) ft_draw_handweap(cl); ft_del_tabs(cl); diff --git a/src/ft_sort_s_t.c b/src/ft_sort_s_t.c index 433fd07..18007dd 100644 --- a/src/ft_sort_s_t.c +++ b/src/ft_sort_s_t.c @@ -15,116 +15,6 @@ #include #include -float - **ft_alloc_dist_tab(void) -{ - uint16_t i; - float **dist_tab; - - if (!(dist_tab = (float **)ft_calloc((FT_TOTAL_SPRT + 1), sizeof(float*)))) - return (NULL); - i = 0; - while (i < FT_TOTAL_SPRT + 1) - { - if (!(dist_tab[i] = (float *)ft_calloc(4096, sizeof(float)))) - return (NULL); - i++; - } - return (dist_tab); -} - -static int8_t - ft_set_current_sprite(t_cub *cl, int8_t j) -{ - const int8_t st_o = cl->mlist.st_o[j]; - - if (st_o == 0) - return (4); - else if (st_o >= 1 && st_o <= 7) - return (st_o + 7); - else if (st_o == 8) - return (15); - else if (st_o == 9) - return (17); - else if (st_o >= 10) - return (st_o + 8); - return (0); -} - -static void - ft_alloc_big_t(t_cub *cl) -{ - int32_t i; - - if (!(cl->big_t = (float**)malloc((cl->big_t_val) * sizeof(float*)))) - { - ft_alloc_error(cl); - } - i = 0; - while (i < cl->big_t_val) - { - if (!(cl->big_t[i] = (float*)malloc(4 * sizeof(float)))) - { - ft_alloc_error(cl); - } - i++; - } -} - -static void - ft_fill_big_t(float **dist_tab, t_cub *cl) -{ - int32_t i; - int32_t j; - int32_t k; - - i = 0; - j = 0; - k = 0; - while (i < cl->big_t_val) - { - if (dist_tab[j][k]) - { - cl->big_t[i][0] = dist_tab[j][k]; - cl->big_t[i][1] = (float)ft_set_current_sprite(cl, j); - cl->big_t[i][2] = (float)j; - cl->big_t[i][3] = (float)k; - k++; - i++; - } - else - { - k = 0; - j++; - } - } -} - -static void - ft_sort_big_t(t_cub *cl) -{ - int32_t i; - int8_t j; - float tmp[4]; - - i = 0; - while (i < cl->big_t_val - 1) - { - if (cl->big_t[i][0] < cl->big_t[i + 1][0]) - { - j = -1; - while (++j < 4) - { - tmp[j] = cl->big_t[i][j]; - cl->big_t[i][j] = cl->big_t[i + 1][j]; - cl->big_t[i + 1][j] = tmp[j]; - } - i = -1; - } - i++; - } -} - static void ft_init_st(int32_t *st_o) { -- cgit v1.2.3