From d2f53e38cbf711e35035a4576070a5211a1d055d Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Sat, 22 Feb 2020 20:56:50 +0100 Subject: shpritz --- src/ft_draw_sprite.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/ft_draw_sprite.c (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c new file mode 100644 index 0000000..38c1fd9 --- /dev/null +++ b/src/ft_draw_sprite.c @@ -0,0 +1,44 @@ +#include +#include +#include +#include +#include + +void +ft_draw_verline_sprite(t_cub *cl, int x, int y, int tex_y) +{ + cl->img.ptr[x * 4 + (cl->img.sizeline * y)] = + (char)cl->tlist[cl->w_side].ptr[cl->tlist[cl->w_side].tex_x * 4 + 4 * + cl->tlist[cl->w_side].img_h * tex_y]; + cl->img.ptr[x * 4 + (cl->img.sizeline * y) + 1] = + (char)cl->tlist[cl->w_side].ptr[cl->tlist[cl->w_side].tex_x * 4 + 4 * + cl->tlist[cl->w_side].img_h * tex_y + 1]; + cl->img.ptr[x * 4 + (cl->img.sizeline * y) + 2] = + (char)cl->tlist[cl->w_side].ptr[cl->tlist[cl->w_side].tex_x * 4 + 4 * + cl->tlist[cl->w_side].img_h * tex_y + 2]; + cl->img.ptr[x * 4 + cl->wlist->x_size * y + 3] = (char)0; +} + +void +ft_draw_sprite(t_cub *cl, int x) +{ + int ver_it;/*stripe*/ + int hor_it;/*y*/ + int tex_x; + int tex_y; + int d; + + ver_it = cl->sp_list.s_start_x; + while (ver_it < cl->sp_list.s_end_x) + { + tex_x = (int)(256 * (ver_it - (-cl->sp_list.s_w / 2 + cl->sp_list.s_screen_x)) * cl->tlist[4].img_w / cl->sp_list.s_w) / 256; + hor_it = cl->sp_list.s_start_y; + while (hor_it < cl->sp_list.s_end_y) + { + d = hor_it * 256 - cl->wlist->y_size * 128 + cl->sp_list.s_h * 128; + tex_y = ((d * cl->tlist[4].img_h) / cl->sp_list.s_h) / 256; + ft_draw_verline_sprite(cl, x, hor_it, tex_y); + } + ver_it++; + } +} -- cgit v1.2.3 From 9fc4434c0deac6a3537183266adb9e85f3883db8 Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Mon, 24 Feb 2020 10:20:20 +0100 Subject: tests --- src/ft_draw_sprite.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 38c1fd9..e7df49b 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include @@ -29,15 +30,18 @@ ft_draw_sprite(t_cub *cl, int x) int d; ver_it = cl->sp_list.s_start_x; - while (ver_it < cl->sp_list.s_end_x) + ver_it = (ver_it < 0) ? -ver_it : ver_it ; + while (ver_it < cl->sp_list.s_end_x - 1) { tex_x = (int)(256 * (ver_it - (-cl->sp_list.s_w / 2 + cl->sp_list.s_screen_x)) * cl->tlist[4].img_w / cl->sp_list.s_w) / 256; hor_it = cl->sp_list.s_start_y; - while (hor_it < cl->sp_list.s_end_y) + while (hor_it < cl->sp_list.s_end_y - 1) { - d = hor_it * 256 - cl->wlist->y_size * 128 + cl->sp_list.s_h * 128; - tex_y = ((d * cl->tlist[4].img_h) / cl->sp_list.s_h) / 256; + d = (hor_it) * 256 - cl->wlist->y_size * 128 + cl->sp_list.s_h * 128; + tex_y = ((d * cl->tlist[4].img_w) / cl->sp_list.s_h) / 256; ft_draw_verline_sprite(cl, x, hor_it, tex_y); + hor_it++; + printf("hor_it : %d ver it : %d", hor_it, ver_it); } ver_it++; } -- cgit v1.2.3 From 84a92b0d2824a97c3358f8ce86290aa8a718618e Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Mon, 24 Feb 2020 18:19:58 +0100 Subject: very bad --- src/ft_draw_sprite.c | 53 ++++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 26 deletions(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index e7df49b..5f7fd31 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -8,41 +8,42 @@ void ft_draw_verline_sprite(t_cub *cl, int x, int y, int tex_y) { - cl->img.ptr[x * 4 + (cl->img.sizeline * y)] = - (char)cl->tlist[cl->w_side].ptr[cl->tlist[cl->w_side].tex_x * 4 + 4 * - cl->tlist[cl->w_side].img_h * tex_y]; - cl->img.ptr[x * 4 + (cl->img.sizeline * y) + 1] = - (char)cl->tlist[cl->w_side].ptr[cl->tlist[cl->w_side].tex_x * 4 + 4 * - cl->tlist[cl->w_side].img_h * tex_y + 1]; - cl->img.ptr[x * 4 + (cl->img.sizeline * y) + 2] = - (char)cl->tlist[cl->w_side].ptr[cl->tlist[cl->w_side].tex_x * 4 + 4 * - cl->tlist[cl->w_side].img_h * tex_y + 2]; - cl->img.ptr[x * 4 + cl->wlist->x_size * y + 3] = (char)0; + if (cl->tlist[4].ptr[cl->tlist[4].tex_x * 4 + 4 * + cl->tlist[4].img_h * tex_y] != 0) + { + cl->img.ptr[x * 4 + (cl->img.sizeline * y)] = + (char)cl->tlist[4].ptr[cl->tlist[4].tex_x * 4 + 4 * + cl->tlist[4].img_h * tex_y]; + cl->img.ptr[x * 4 + (cl->img.sizeline * y) + 1] = + (char)cl->tlist[4].ptr[cl->tlist[4].tex_x * 4 + 4 * + cl->tlist[4].img_h * tex_y + 1]; + cl->img.ptr[x * 4 + (cl->img.sizeline * y) + 2] = + (char)cl->tlist[4].ptr[cl->tlist[4].tex_x * 4 + 4 * + cl->tlist[4].img_h * tex_y + 2]; + cl->img.ptr[x * 4 + cl->wlist->x_size * y + 3] = (char)0; + } + else + { + cl->img.ptr[x * 4 + cl->wlist->x_size * y + 3] = (char)255; + } } void -ft_draw_sprite(t_cub *cl, int x) + ft_draw_sprite(t_cub *cl, int x) { int ver_it;/*stripe*/ int hor_it;/*y*/ - int tex_x; - int tex_y; int d; + int tex_y; ver_it = cl->sp_list.s_start_x; - ver_it = (ver_it < 0) ? -ver_it : ver_it ; - while (ver_it < cl->sp_list.s_end_x - 1) + hor_it = cl->sp_list.s_start_y; + while (hor_it < cl->sp_list.s_end_y) { - tex_x = (int)(256 * (ver_it - (-cl->sp_list.s_w / 2 + cl->sp_list.s_screen_x)) * cl->tlist[4].img_w / cl->sp_list.s_w) / 256; - hor_it = cl->sp_list.s_start_y; - while (hor_it < cl->sp_list.s_end_y - 1) - { - d = (hor_it) * 256 - cl->wlist->y_size * 128 + cl->sp_list.s_h * 128; - tex_y = ((d * cl->tlist[4].img_w) / cl->sp_list.s_h) / 256; - ft_draw_verline_sprite(cl, x, hor_it, tex_y); - hor_it++; - printf("hor_it : %d ver it : %d", hor_it, ver_it); - } - ver_it++; + d = (hor_it) * 256 - cl->wlist->y_size * 128 + cl->rlist.line_h * 128; + d = (d <= 0) ? (-d) : (d); + tex_y = ((d * cl->tlist[4].img_h) / cl->rlist.line_h) / 256; + ft_draw_verline_sprite(cl, x, hor_it, tex_y); + hor_it++; } } -- cgit v1.2.3 From 6a56c9beea934597431643994f85479bc1792466 Mon Sep 17 00:00:00 2001 From: salaaad2 Date: Mon, 24 Feb 2020 19:01:52 +0100 Subject: oy --- src/ft_draw_sprite.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) (limited to 'src/ft_draw_sprite.c') diff --git a/src/ft_draw_sprite.c b/src/ft_draw_sprite.c index 5f7fd31..c90c9ac 100644 --- a/src/ft_draw_sprite.c +++ b/src/ft_draw_sprite.c @@ -8,9 +8,7 @@ void ft_draw_verline_sprite(t_cub *cl, int x, int y, int tex_y) { - if (cl->tlist[4].ptr[cl->tlist[4].tex_x * 4 + 4 * - cl->tlist[4].img_h * tex_y] != 0) - { + if (cl->tlist[4].tex_x) cl->img.ptr[x * 4 + (cl->img.sizeline * y)] = (char)cl->tlist[4].ptr[cl->tlist[4].tex_x * 4 + 4 * cl->tlist[4].img_h * tex_y]; @@ -21,28 +19,22 @@ ft_draw_verline_sprite(t_cub *cl, int x, int y, int tex_y) (char)cl->tlist[4].ptr[cl->tlist[4].tex_x * 4 + 4 * cl->tlist[4].img_h * tex_y + 2]; cl->img.ptr[x * 4 + cl->wlist->x_size * y + 3] = (char)0; - } - else - { - cl->img.ptr[x * 4 + cl->wlist->x_size * y + 3] = (char)255; - } } void ft_draw_sprite(t_cub *cl, int x) { - int ver_it;/*stripe*/ int hor_it;/*y*/ int d; int tex_y; - ver_it = cl->sp_list.s_start_x; hor_it = cl->sp_list.s_start_y; while (hor_it < cl->sp_list.s_end_y) { - d = (hor_it) * 256 - cl->wlist->y_size * 128 + cl->rlist.line_h * 128; - d = (d <= 0) ? (-d) : (d); + d = hor_it * 256 - cl->wlist->y_size * 128 + cl->rlist.line_h * 128; + d = (d <= 0) ? (-d) : (d); tex_y = ((d * cl->tlist[4].img_h) / cl->rlist.line_h) / 256; + (tex_y < 0) ? (tex_y = 0) : 0; ft_draw_verline_sprite(cl, x, hor_it, tex_y); hor_it++; } -- cgit v1.2.3