aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--inc/cub3d.h2
-rw-r--r--inc/cub3d_structs.h1
-rw-r--r--src/ft_darken_rgb.c14
-rw-r--r--src/ft_draw_textures.c21
-rw-r--r--src/ft_draw_verline.c6
5 files changed, 32 insertions, 12 deletions
diff --git a/inc/cub3d.h b/inc/cub3d.h
index 87444aa..da57cb7 100644
--- a/inc/cub3d.h
+++ b/inc/cub3d.h
@@ -128,7 +128,7 @@ uint8_t ft_free_words(char **words);
int8_t ft_warp_level(t_cub *cl);
int ft_exit(uint8_t exit_code, t_cub *clist);
uint32_t ft_rgb_to_hex(t_rgb rgb);
-uint32_t ft_darken_rgb(t_rgb rgb);
+uint32_t ft_darken_rgb(t_rgb rgb, t_cub *cl);
t_bmp_rgb ft_hex_to_rgb(uint32_t color);
# endif
diff --git a/inc/cub3d_structs.h b/inc/cub3d_structs.h
index ab99f7b..c74a9e0 100644
--- a/inc/cub3d_structs.h
+++ b/inc/cub3d_structs.h
@@ -120,7 +120,6 @@ typedef struct s_ray
{
uint16_t line_h;
float wall_dist;
- float mid_dist;
float x_ray_pos;
float y_ray_pos;
float x_ray_dir;
diff --git a/src/ft_darken_rgb.c b/src/ft_darken_rgb.c
index 3e61f49..03f8bb5 100644
--- a/src/ft_darken_rgb.c
+++ b/src/ft_darken_rgb.c
@@ -14,10 +14,20 @@
#include <stdint.h>
uint32_t
- ft_darken_rgb(t_rgb rgb)
+ ft_darken_rgb(t_rgb rgb, t_cub *cl)
{
- t_rgb darker;
+ t_rgb darker;
+ float dist;
+ float calc;
+ if ((dist = cl->rlist.wall_dist) <= 0)
+ dist = 0.0001;
+ calc = (dist * 0.2);
+ calc = (calc >= 255) ? (255) : (calc);
+ calc = (calc < 1) ? (1) : (calc);
darker = rgb;
+ darker.r /= calc;
+ darker.g /= calc;
+ darker.b /= calc;
return (ft_rgb_to_hex(darker));
}
diff --git a/src/ft_draw_textures.c b/src/ft_draw_textures.c
index 00f8e5a..766c039 100644
--- a/src/ft_draw_textures.c
+++ b/src/ft_draw_textures.c
@@ -24,15 +24,24 @@
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.2);
+ 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];
+ (unsigned 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] / 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];
+ (unsigned 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] / 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];
+ (unsigned 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]
+ / calc;
cl->img.ptr[x * 4 + cl->wlist.x_size * y + 3] = (char)0;
}
diff --git a/src/ft_draw_verline.c b/src/ft_draw_verline.c
index 89eedea..deb5721 100644
--- a/src/ft_draw_verline.c
+++ b/src/ft_draw_verline.c
@@ -19,7 +19,8 @@ static void
while ((uint32_t)y < cl->wlist.y_size)
{
*(int*)(cl->img.ptr +
- (x * 4 + (y * cl->img.sizeline))) = ft_darken_rgb(cl->f_rgb);
+ (x * 4 + (y * cl->img.sizeline)))
+ = ft_rgb_to_hex(cl->f_rgb);
y++;
}
}
@@ -33,7 +34,8 @@ static void
while (i <= y)
{
*(int*)(cl->img.ptr +
- (x * 4 + (i * cl->img.sizeline))) = ft_rgb_to_hex(cl->c_rgb);
+ (x * 4 + (i * cl->img.sizeline)))
+ = ft_rgb_to_hex(cl->c_rgb);
i++;
}
}