diff options
-rw-r--r-- | map/img/pillar.xpm | 91 | ||||
-rw-r--r-- | map/map_one.cub | 4 | ||||
-rw-r--r-- | src/ft_draw_sprite.c | 53 | ||||
-rw-r--r-- | src/ft_key_loop.c | 2 |
4 files changed, 121 insertions, 29 deletions
diff --git a/map/img/pillar.xpm b/map/img/pillar.xpm new file mode 100644 index 0000000..4a0c656 --- /dev/null +++ b/map/img/pillar.xpm @@ -0,0 +1,91 @@ +/* XPM */ +static char *_8e53538c4e441a6b69ed6027602859e[] = { +/* columns rows colors chars-per-pixel */ +"64 64 21 1 ", +" c black", +". c #202020", +"X c #2C2C2C", +"o c gray22", +"O c gray25", +"+ c #484848", +"@ c #4C4C4C", +"# c gray33", +"$ c gray36", +"% c #646464", +"& c gray44", +"* c #7C7C7C", +"= c gray55", +"- c #989898", +"; c gray66", +": c #B4B4B4", +"> c #C0C0C0", +", c #D0D0D0", +"< c gainsboro", +"1 c #ECECEC", +"2 c gray99", +/* pixels */ +" ;;;;=======&&&&% ", +" ;;<<,,,>>>::;;--==*&&%#+## ", +" >22111<<<,,,>>::;-&>=*&%#+OooX ", +" 12222111222<<,>>::;--=**+#+Ooo.X ", +" <112222221<,>>::;;-=**&%%%%oOoX.XX ", +" <<1122211,,,>>;,;;-=**&%%#O+XX..XX ", +" ><<2122111<<,,>>::;-=*&%#+OXo..XXX ", +" >>211221122<<,>>;;-=*&%#OoX...XX ", +" :1122221<,>;:-=*&%#+OXoX.... ", +" :>>2221<,>:;-=*&%#+OoXX..X ", +" ->1221<,>:;-=*&#%+OoX..X ", +" ->1221<,>:;-=*&%#+OoX..X ", +" ->2221<,>:;=;*&%#+OXo..X ", +" ->2221<,>:=-;*&%#+OoX..X ", +" ->2221<,>:;-=*&%O%OoX..X ", +" ->2221<,>:;-=*&%#%OoX..X ", +" ->11<,>:;-=*&%#+O+X....X ", +" -=;:;;==*&&%%#+OoX...... ", +" <2<1221<,>:;-=*&#%+o.X ", +" ><2222<,>:;-=*&%#+#oXX.o ", +" ><2221<,,:;-*=&%#+OoX..X ", +" ->2221<:1:;-=&*%#+OoX..X ", +" ->2221<>1:;-=*&%#+OXo..X ", +" ->2221<,,:;-=*&#%+OoX .X ", +" ->2221<,>:;-=*&%#+X+X..X ", +" -;2221:2>:;-=*&%#+OoX..X ", +" -<2221<,>:;-*-&%#+oOX..X ", +" ->2221<:<:;-=*&%+#OoX..X ", +" ->2221<,>:;=-*&%#+OXo..X ", +" *-<1<,>:;-=*&%#+OoX..... ", +" *-;-==**&&%%#+OoX.. ", +" ;,22222><,>:;-=*&%#+oXXo ", +" ->2221<1>:;-=*&%#+OoX..X ", +" ->2221<,>:;=-*%*#+OXO .X ", +" ->2221<:1:;-=*&%#O+oX..X ", +" ->22<2<,>:;-=*&%+#Oo.X.X ", +" ->2121<:>;:-*=&%##OoX... ", +" ->2221:2>:;-=*&%#+oOX..X ", +" ->22212,>:;-=&*%#+OoX..X ", +" ->22<2<,>:;=-*&%#O+Xo..X ", +" ->2221<,:<;-=*&#%+OoX..X ", +" ->2221,1>:;-=&*%#+OXo..X ", +" *>1211<,>:--=*&%+#OoX..o ", +" ;,<>>>:;-&-&%#+OoX.... ", +" ;1:>,>-=*&#%%#+OoX...... ", +" -,212221<,>:=-=*&%#+o.XX ", +" ->2221<,>:;-*-&%#+OXO..X ", +" ->222,2,>-<-=*&%#+OoX..X ", +" ->2221<,>:;-*-&%+#OoX..X ", +" ->2221<,>:;-=*&#%+OoX..X ", +" ->2221<,>->-=*%&#+OoX..X ", +" ->2221<,;<;-=*&%#O#oX..X ", +" ->122,2,>:;-=*&%#+OoX..X ", +" ->122,2,>:;-=*&%+#OoX..X ", +" :<>2221<,>:-:=*&%#+OoXo..X ", +" :1122221<,>:;-=*&%#+OXoX...XX ", +" >>212221122<<,>>;;-=*&%#OoX...XXXO+@##$$%% ", +" ><<2122111<<,,>>::;-=*&%#+OXo..XXXooO++@##$%% ", +" <<1122211,,,>>::;;=;**&%%#O+XX..XXooooO++@#$$% ", +" <112222221<,>>::;;-=**&%%&%@@oX.XXooooO++@#$$% ", +" 12222111222<<,>>::;--=**&$O$oo.XoooOO+@@#$$% ", +" >22111<<<,,,>:,:;--=*=&%$+OooXOOO+++@#$$% ", +" ;;<<,,,>>>::;;--==*&&%#+OO+#$$$%%%%%% ", +" ;;;;=======&&&&%#OO+#$%% " +}; diff --git a/map/map_one.cub b/map/map_one.cub index 168e1e8..f47183c 100644 --- a/map/map_one.cub +++ b/map/map_one.cub @@ -4,7 +4,7 @@ NO ./map/img/BRIQUASSES.xpm SO ./map/img/BRIQUASSE_3.xpm EA ./map/img/BRIQUASSES_2.xpm WE ./map/img/MURLOL.xpm -S ./map/img/segfot.xpm +S ./map/img/pillar.xpm C 50,100,200 F 50,190,124 @@ -12,7 +12,7 @@ F 50,190,124 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1 N 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 +1 E 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 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); } |