diff options
author | JozanLeClerc <bousset.rudy@gmail.com> | 2020-03-29 17:38:46 +0200 |
---|---|---|
committer | JozanLeClerc <bousset.rudy@gmail.com> | 2020-03-29 17:38:46 +0200 |
commit | a07392fc219afc45000201d2f495694ad9b82763 (patch) | |
tree | 0eb3f2b9003ad7ceae4692242e46de56e55053b0 /src/ft_big_t.c | |
parent | Removed skybox shit (diff) | |
parent | Norm (diff) | |
download | 42-cub3d-a07392fc219afc45000201d2f495694ad9b82763.tar.gz 42-cub3d-a07392fc219afc45000201d2f495694ad9b82763.tar.bz2 42-cub3d-a07392fc219afc45000201d2f495694ad9b82763.tar.xz 42-cub3d-a07392fc219afc45000201d2f495694ad9b82763.tar.zst 42-cub3d-a07392fc219afc45000201d2f495694ad9b82763.zip |
Merge branch 'fix-details'
Diffstat (limited to 'src/ft_big_t.c')
-rw-r--r-- | src/ft_big_t.c | 108 |
1 files changed, 108 insertions, 0 deletions
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 <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/24 20:22:45 by rbousset #+# #+# */ +/* Updated: 2020/03/09 18:56:01 by rbousset ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include <cub3d.h> +#include <stdlib.h> +#include <stdint.h> + +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++; + } +} + |