aboutsummaryrefslogtreecommitdiffstats
path: root/src/ft_draw_textures.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/ft_draw_textures.c44
1 files changed, 30 insertions, 14 deletions
diff --git a/src/ft_draw_textures.c b/src/ft_draw_textures.c
index 598fd91..5fc3bdd 100644
--- a/src/ft_draw_textures.c
+++ b/src/ft_draw_textures.c
@@ -24,26 +24,42 @@
void ft_draw_texture(t_cub *cl, int x, int y, int tex_y)
{
+ float dist;
+ float calc;
+
+ if ((dist = cl->rlist.wall_dist) <= 0)
+ dist = 0.0001;
+ calc = (dist * 0.1 * cl->mlist.darklvl);
+ calc = (calc >= 255) ? (255) : (calc);
+ calc = (calc < 1) ? (1) : (calc);
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];
+ (uint8_t)cl->tlist[cl->w_side].ptr[cl->tlist[cl->w_side].tex_x * 4 + 4 *
+ cl->tlist[cl->w_side].img_h * tex_y] / calc;
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];
+ (uint8_t)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] / calc;
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;
+ (uint8_t)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] / calc;
+ cl->img.ptr[x * 4 + cl->wlist.x_size * y + 3] = (char)0;
}
void ft_choose_tex(t_cub *clist)
{
- if (clist->rlist.side == 0 && clist->rlist.x_ray_dir < 0)
- clist->w_side = 1;
- else if (clist->rlist.side == 0 && clist->rlist.x_ray_dir > 0)
- clist->w_side = 0;
- else if (clist->rlist.side == 1 && clist->rlist.y_ray_dir > 0)
- clist->w_side = 3;
+ if (clist->rlist.sqy == clist->mlist.nlx
+ && clist->rlist.sqx == clist->mlist.nly)
+ {
+ clist->w_side = 5;
+ }
else
- clist->w_side = 2;
+ {
+ if (clist->rlist.side == 0 && clist->rlist.x_ray_dir < 0)
+ clist->w_side = 1;
+ else if (clist->rlist.side == 0 && clist->rlist.x_ray_dir > 0)
+ clist->w_side = 0;
+ else if (clist->rlist.side == 1 && clist->rlist.y_ray_dir > 0)
+ clist->w_side = 3;
+ else
+ clist->w_side = 2;
+ }
}