1
0

✏️」 norm: Everything it normeddddd

This commit is contained in:
2024-11-10 16:58:44 +01:00
parent 7a2f42c276
commit c37faa03b6
8 changed files with 145 additions and 107 deletions

View File

@ -6,7 +6,7 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/10/28 13:04:36 by adjoly #+# #+# */
/* Updated: 2024/11/06 12:30:52 by adjoly ### ########.fr */
/* Updated: 2024/11/10 16:48:23 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */

View File

@ -6,7 +6,7 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/09/11 16:38:40 by adjoly #+# #+# */
/* Updated: 2024/11/09 16:03:52 by madumerg ### ########.fr */
/* Updated: 2024/11/10 16:41:35 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
@ -62,8 +62,6 @@ typedef struct s_render
*
* @return Minilibx go brrrr(useless always 0)
*/
int key_hook(int key, void *param);
int key_down(int key, void *param);
int key_down(int key, void *param);
int key_up(int key, void *param);

View File

@ -1,14 +1,23 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* math.h :+: :+: :+: */
/* render.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/10/29 10:07:24 by adjoly #+# #+# */
/* Updated: 2024/10/29 10:08:53 by adjoly ### ########.fr */
/* Created: 2024/11/10 16:47:43 by adjoly #+# #+# */
/* Updated: 2024/11/10 16:50:37 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef
void fix_ang(float *ang);
#ifndef RENDER_H
# define RENDER_H
# include "game.h"
# include "dda.h"
void *get_texture(bool hor, t_render *render, t_ray *ray);
void draw_celling(t_render *render);
void draw_floor(t_render *render);
#endif

View File

@ -6,7 +6,7 @@
/* By: madumerg <madumerg@42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/09/04 16:58:27 by madumerg #+# #+# */
/* Updated: 2024/11/07 12:21:41 by adjoly ### ########.fr */
/* Updated: 2024/11/10 16:57:46 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
@ -20,27 +20,34 @@
#include <stdlib.h>
#include "utils.h"
int loop(void *param)
void move_for_back(t_render *render, bool forward)
{
t_render *render;
render = (t_render *)param;
mlx_destroy_image(render->mlx, render->img);
if (render->player->key[0])
if (forward)
{
render->player->coord.x += PLAYER_SPEED * \
cos(render->player->direction);
render->player->coord.y += PLAYER_SPEED * \
-sin(render->player->direction);
}
if (render->player->key[2])
else
{
render->player->coord.x -= PLAYER_SPEED * \
cos(render->player->direction);
render->player->coord.y -= PLAYER_SPEED * \
-sin(render->player->direction);
}
}
int loop(void *param)
{
t_render *render;
render = (t_render *)param;
mlx_destroy_image(render->mlx, render->img);
if (render->player->key[0])
move_for_back(render, true);
if (render->player->key[2])
move_for_back(render, false);
if (render->player->key[3])
change_direction(PLAYER_ROT_SPEED, false, render->player);
if (render->player->key[1])
@ -51,6 +58,18 @@ int loop(void *param)
return (0);
}
void delete_everything(t_pars *parsing, t_render *render)
{
mlx_destroy_image(render->mlx, render->img);
mlx_destroy_image(render->mlx, render->texture[0]);
mlx_destroy_image(render->mlx, render->texture[1]);
mlx_destroy_image(render->mlx, render->texture[2]);
mlx_destroy_image(render->mlx, render->texture[3]);
mlx_destroy_window(render->mlx, render->win);
mlx_destroy_display(render->mlx);
free_pars(parsing);
}
int main(int ac, char **av)
{
t_render render;
@ -76,13 +95,6 @@ int main(int ac, char **av)
mlx_on_event(render.mlx, render.win, MLX_KEYUP, key_up, &render);
mlx_loop_hook(render.mlx, loop, &render);
mlx_loop(render.mlx);
mlx_destroy_image(render.mlx, render.img);
mlx_destroy_image(render.mlx, render.texture[0]);
mlx_destroy_image(render.mlx, render.texture[1]);
mlx_destroy_image(render.mlx, render.texture[2]);
mlx_destroy_image(render.mlx, render.texture[3]);
mlx_destroy_window(render.mlx, render.win);
mlx_destroy_display(render.mlx);
free_pars(&parsing);
delete_everything(&parsing, &render);
return (EXIT_SUCCESS);
}

View File

@ -6,7 +6,7 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/10/28 15:48:39 by adjoly #+# #+# */
/* Updated: 2024/11/10 15:44:00 by adjoly ### ########.fr */
/* Updated: 2024/11/10 16:49:53 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
@ -15,74 +15,31 @@
#include <game/dda.h>
#include <game/settings.h>
#include <game/game.h>
#include <game/render.h>
void draw_floor(t_render *render)
{
size_t x;
size_t y;
y = WINDOW_H / 2;
while (y < WINDOW_H)
{
x = 0;
while (x < WINDOW_W)
{
mlx_set_image_pixel(render->mlx, render->img, x, y, \
render->world->floor);
x++;
}
y++;
}
}
void draw_celling(t_render *render)
{
size_t x;
size_t y;
y = 0;
while (y < WINDOW_H / 2)
{
x = 0;
while (x < WINDOW_W)
{
mlx_set_image_pixel(render->mlx, render->img, x, y, \
render->world->celling);
x++;
}
y++;
}
}
int get_color(t_ray *ray, t_dda *dda, t_render *render, int line_start, int line_stop, int line_size)
int get_color(t_ray *ray, t_dda *dda, t_render *render, \
int y)
{
int x;
int h;
int color;
void **texture;
int line_stop;
int line_size;
(void)ray;
line_size = (CHUNK_SIZE * WINDOW_H) / ray->distance;
line_stop = line_size / 2 + WINDOW_H / 2;
y = abs((line_stop - y) * TEXTURE_SIZE / line_size - 63);
if (dda->distance.y < dda->distance.x)
{
x = (int)dda->hori.x % CHUNK_SIZE;
h = abs((line_stop - line_start) * TEXTURE_SIZE / line_size - 63);
if (ray->angle < M_PI)
texture = &render->texture[0];
else
texture = &render->texture[2];
color = mlx_get_image_pixel(render->mlx, *texture, x, h);
texture = get_texture(true, render, ray);
}
else
{
x = (int)dda->vert.y % CHUNK_SIZE;
h = abs((line_stop - line_start) * TEXTURE_SIZE / line_size - 63);
if (ray->angle <= 3 * M_PI / 2 && ray->angle >= M_PI / 2)
texture = &render->texture[1];
else
texture = &render->texture[3];
color = mlx_get_image_pixel(render->mlx, *texture, x, h);
texture = get_texture(false, render, ray);
}
color = mlx_get_image_pixel(render->mlx, *texture, x, y);
return (color);
}
@ -102,7 +59,8 @@ void print_line(t_render *render, t_ray *ray, int x, t_dda *dda)
while (line_start < line_stop)
{
if (x < WINDOW_W && x >= 0)
mlx_set_image_pixel(render->mlx, render->img, x, line_start, get_color(ray, dda, render, line_start, line_stop, line_size));
mlx_set_image_pixel(render->mlx, render->img, x, line_start, \
get_color(ray, dda, render, line_start));
line_start++;
}
}

View File

@ -0,0 +1,72 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* utils_render.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/11/10 16:46:57 by adjoly #+# #+# */
/* Updated: 2024/11/10 16:49:17 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
#include "game/game.h"
#include "game/dda.h"
#include "game/render.h"
#include <mlx.h>
void draw_floor(t_render *render)
{
size_t x;
size_t y;
y = WINDOW_H / 2;
while (y < WINDOW_H)
{
x = 0;
while (x < WINDOW_W)
{
mlx_set_image_pixel(render->mlx, render->img, x, y, \
render->world->floor);
x++;
}
y++;
}
}
void draw_celling(t_render *render)
{
size_t x;
size_t y;
y = 0;
while (y < WINDOW_H / 2)
{
x = 0;
while (x < WINDOW_W)
{
mlx_set_image_pixel(render->mlx, render->img, x, y, \
render->world->celling);
x++;
}
y++;
}
}
void *get_texture(bool hor, t_render *render, t_ray *ray)
{
if (hor)
{
if (ray->angle < M_PI)
return (&render->texture[0]);
else
return (&render->texture[2]);
}
else
{
if (ray->angle <= 3 * M_PI / 2 && ray->angle >= M_PI / 2)
return (&render->texture[1]);
else
return (&render->texture[3]);
}
}

View File

@ -6,7 +6,7 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/10/26 15:47:29 by adjoly #+# #+# */
/* Updated: 2024/11/02 15:42:28 by adjoly ### ########.fr */
/* Updated: 2024/11/10 16:33:54 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
@ -23,19 +23,4 @@ void vec2_add(t_vec2 *first, t_vec2 second)
{
first->x += second.x;
first->y += second.y;
}
// to be removed
void vec2_sub(t_vec2 *first, t_vec2 second)
{
first->x -= second.x;
first->y -= second.y;
}
t_vec2 vec2_mul_ret(t_vec2 vec, float n)
{
t_vec2 ret;
ret.x = vec.x * n;
ret.y = vec.y * n;
return (ret);
}

View File

@ -6,7 +6,7 @@
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/11/06 13:01:03 by adjoly #+# #+# */
/* Updated: 2024/11/09 15:49:41 by madumerg ### ########.fr */
/* Updated: 2024/11/10 16:32:18 by adjoly ### ########.fr */
/* */
/* ************************************************************************** */
@ -50,8 +50,12 @@ void init_texture(t_render *render, t_pars parsing)
{
int i;
render->texture[0] = mlx_png_file_to_image(render->mlx, parsing.no_png, &i, &i);
render->texture[1] = mlx_png_file_to_image(render->mlx, parsing.we_png, &i, &i);
render->texture[2] = mlx_png_file_to_image(render->mlx, parsing.so_png, &i, &i);
render->texture[3] = mlx_png_file_to_image(render->mlx, parsing.ea_png, &i, &i);
render->texture[0] = mlx_png_file_to_image(render->mlx, parsing.no_png, \
&i, &i);
render->texture[1] = mlx_png_file_to_image(render->mlx, parsing.we_png, \
&i, &i);
render->texture[2] = mlx_png_file_to_image(render->mlx, parsing.so_png, \
&i, &i);
render->texture[3] = mlx_png_file_to_image(render->mlx, parsing.ea_png, \
&i, &i);
}