「✏️」 norm: Everything it normeddddd
This commit is contained in:
@ -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 */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
@ -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,10 +62,8 @@ 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);
|
||||
int key_down(int key, void *param);
|
||||
int key_up(int key, void *param);
|
||||
|
||||
/**
|
||||
* @brief This function is here to change the direction of the player
|
||||
|
@ -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
|
46
src/cub3d.c
46
src/cub3d.c
@ -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);
|
||||
}
|
||||
|
@ -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,75 +15,32 @@
|
||||
#include <game/dda.h>
|
||||
#include <game/settings.h>
|
||||
#include <game/game.h>
|
||||
#include <game/render.h>
|
||||
|
||||
void draw_floor(t_render *render)
|
||||
int get_color(t_ray *ray, t_dda *dda, t_render *render, \
|
||||
int y)
|
||||
{
|
||||
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 x;
|
||||
int h;
|
||||
int color;
|
||||
int x;
|
||||
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);
|
||||
}
|
||||
return (color);
|
||||
color = mlx_get_image_pixel(render->mlx, *texture, x, y);
|
||||
return (color);
|
||||
}
|
||||
|
||||
void print_line(t_render *render, t_ray *ray, int x, t_dda *dda)
|
||||
@ -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++;
|
||||
}
|
||||
}
|
||||
|
72
src/raycasting/utils_render.c
Normal file
72
src/raycasting/utils_render.c
Normal 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]);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user