diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ft_draw_sprite.c | 53 | ||||
-rw-r--r-- | src/ft_key_loop.c | 2 |
2 files changed, 28 insertions, 27 deletions
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++; } } diff --git a/src/ft_key_loop.c b/src/ft_key_loop.c index b902e33..aa7017f 100644 --- a/src/ft_key_loop.c +++ b/src/ft_key_loop.c @@ -46,8 +46,8 @@ int { (*fun_ptr[cl->key_input[i]])(cl); ft_collision(old_y, old_x, cl->plist, cl->mlist); - ft_draw_scene(cl); i++; } + ft_draw_scene(cl); return (0); } |