diff options
Diffstat (limited to '')
-rw-r--r-- | src/ft_draw_sprite.c | 45 | ||||
-rw-r--r-- | src/ft_draw_sprite_extra.c | 5 | ||||
-rw-r--r-- | src/ft_tex_init.c | 6 |
3 files changed, 35 insertions, 21 deletions
diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index fcb2166..fbe7961 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -39,17 +39,24 @@ void { float dist_tab[4096]; int32_t it; + int32_t jt; it = 0; - while (it < cl->mlist.sprite_nbr) - { - dist_tab[it] = ((cl->plist.pos_x - cl->sprites[0][it].s_pos_x) * - (cl->plist.pos_x - cl->sprites[0][it].s_pos_x) + - (cl->plist.pos_y - cl->sprites[0][it].s_pos_y) * - (cl->plist.pos_y - cl->sprites[0][it].s_pos_y)); - cl->mlist.sprite_order[it] = it; - it++; - } + jt = 0; + while (jt < cl->mlist.sprite_var) + { + while (it < cl->mlist.sprite_nbr) + { + dist_tab[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[it] = it; + it++; + } + it = 0; + jt++; + } it = 0; while (it < cl->mlist.sprite_nbr) { @@ -69,14 +76,14 @@ static void calc = (calc >= 255) ? (255) : (calc); calc = (calc < 1) ? (1) : (calc); cl->img.ptr[sprite->x * 4 + (sprite->y * cl->img.sizeline)] = - (uint8_t)cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * - cl->tlist[4].img_h * sprite->tex_y] / calc; + (uint8_t)cl->tlist[sprite->current_sprite].ptr[sprite->tex_x * 4 + 4 * + cl->tlist[sprite->current_sprite].img_h * sprite->tex_y] / calc; cl->img.ptr[sprite->x * 4 + (sprite->y * cl->img.sizeline) + 1] = - (uint8_t)cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * - cl->tlist[4].img_h * sprite->tex_y + 1] / calc; + (uint8_t)cl->tlist[sprite->current_sprite].ptr[sprite->tex_x * 4 + 4 * + cl->tlist[sprite->current_sprite].img_h * sprite->tex_y + 1] / calc; cl->img.ptr[sprite->x * 4 + (sprite->y * cl->img.sizeline) + 2] = - (uint8_t)cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * - cl->tlist[4].img_h * sprite->tex_y + 2] / calc; + (uint8_t)cl->tlist[sprite->current_sprite].ptr[sprite->tex_x * 4 + 4 * + cl->tlist[sprite->current_sprite].img_h * sprite->tex_y + 2] / calc; cl->img.ptr[sprite->x * 4 + cl->wlist.x_size * sprite->y + 3] = (char)0; } @@ -89,16 +96,16 @@ void while (sprite->x < sprite->drawendx) { sprite->tex_x = (int32_t)((sprite->x - (-sprite->spritewidth / 2 + - sprite->spritescreenx)) * cl->tlist[4].img_w / sprite->spritewidth); + 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[4].img_h / 2) / + sprite->tex_y = ((d * cl->tlist[sprite->current_sprite].img_h / 2) / sprite->spriteheight) / 128; - if (sprite->transformy > 0 && cl->tlist[4].ptr[sprite->tex_x * 4 + 4 * - cl->tlist[4].img_h * sprite->tex_y] + 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_sprite(sprite, cl); diff --git a/src/ft_draw_sprite_extra.c b/src/ft_draw_sprite_extra.c index f3cdf08..45f0dd5 100644 --- a/src/ft_draw_sprite_extra.c +++ b/src/ft_draw_sprite_extra.c @@ -13,6 +13,7 @@ #include <libft.h> #include <cub3d.h> #include <stdint.h> +#include <stdio.h> #include <stdlib.h> #include <math.h> @@ -49,11 +50,13 @@ void i = 0; j = 0; - while (j < cl->mlist.sprite_var) + while (j < 4) { while (i < cl->mlist.sprite_nbr) { sprite = cl->sprites[j][i]; + sprite.current_sprite = (j == 0) ? 4 : j + 7; + printf("%d\n", 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); sprite.invdet = 1.0 / (cl->plist.plane_x * cl->plist.dir_y diff --git a/src/ft_tex_init.c b/src/ft_tex_init.c index 6c9edce..e27ffbe 100644 --- a/src/ft_tex_init.c +++ b/src/ft_tex_init.c @@ -52,9 +52,13 @@ static void cl->tlist[7].ptr = mlx_get_data_addr(cl->tlist[7].img, &cl->tlist[7].bpp, &cl->tlist[7].sizeline, &cl->tlist[7].endian); cl->tlist[8].img = mlx_xpm_file_to_image(cl->wlist.wlx, - cl->mlist.sprite_path, &cl->tlist[4].img_w, &cl->tlist[4].img_h); + "./media/img/hey.xpm", &cl->tlist[8].img_w, &cl->tlist[8].img_h); cl->tlist[8].ptr = mlx_get_data_addr(cl->tlist[8].img, &cl->tlist[8].bpp, &cl->tlist[8].sizeline, &cl->tlist[8].endian); + cl->tlist[9].img = mlx_xpm_file_to_image(cl->wlist.wlx, + "./media/img/crapaud.xpm", &cl->tlist[9].img_w, &cl->tlist[9].img_h); + cl->tlist[9].ptr = mlx_get_data_addr(cl->tlist[9].img, + &cl->tlist[9].bpp, &cl->tlist[9].sizeline, &cl->tlist[9].endian); } static void |