「✏️」 norm: Everything it normeddddd
This commit is contained in:
@ -6,7 +6,7 @@
|
|||||||
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/10/28 13:04:36 by adjoly #+# #+# */
|
/* 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> +#+ +:+ +#+ */
|
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/09/11 16:38:40 by adjoly #+# #+# */
|
/* 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)
|
* @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_down(int key, void *param);
|
||||||
int key_up(int key, void *param);
|
int key_up(int key, void *param);
|
||||||
|
|
||||||
|
@ -1,14 +1,23 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* ::: :::::::: */
|
/* ::: :::::::: */
|
||||||
/* math.h :+: :+: :+: */
|
/* render.h :+: :+: :+: */
|
||||||
/* +:+ +:+ +:+ */
|
/* +:+ +:+ +:+ */
|
||||||
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/10/29 10:07:24 by adjoly #+# #+# */
|
/* Created: 2024/11/10 16:47:43 by adjoly #+# #+# */
|
||||||
/* Updated: 2024/10/29 10:08:53 by adjoly ### ########.fr */
|
/* Updated: 2024/11/10 16:50:37 by adjoly ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#ifndef
|
#ifndef RENDER_H
|
||||||
void fix_ang(float *ang);
|
# 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> +#+ +:+ +#+ */
|
/* By: madumerg <madumerg@42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/09/04 16:58:27 by madumerg #+# #+# */
|
/* 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 <stdlib.h>
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
|
||||||
int loop(void *param)
|
void move_for_back(t_render *render, bool forward)
|
||||||
{
|
{
|
||||||
t_render *render;
|
if (forward)
|
||||||
|
|
||||||
render = (t_render *)param;
|
|
||||||
mlx_destroy_image(render->mlx, render->img);
|
|
||||||
|
|
||||||
if (render->player->key[0])
|
|
||||||
{
|
{
|
||||||
render->player->coord.x += PLAYER_SPEED * \
|
render->player->coord.x += PLAYER_SPEED * \
|
||||||
cos(render->player->direction);
|
cos(render->player->direction);
|
||||||
render->player->coord.y += PLAYER_SPEED * \
|
render->player->coord.y += PLAYER_SPEED * \
|
||||||
-sin(render->player->direction);
|
-sin(render->player->direction);
|
||||||
}
|
}
|
||||||
if (render->player->key[2])
|
else
|
||||||
{
|
{
|
||||||
render->player->coord.x -= PLAYER_SPEED * \
|
render->player->coord.x -= PLAYER_SPEED * \
|
||||||
cos(render->player->direction);
|
cos(render->player->direction);
|
||||||
render->player->coord.y -= PLAYER_SPEED * \
|
render->player->coord.y -= PLAYER_SPEED * \
|
||||||
-sin(render->player->direction);
|
-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])
|
if (render->player->key[3])
|
||||||
change_direction(PLAYER_ROT_SPEED, false, render->player);
|
change_direction(PLAYER_ROT_SPEED, false, render->player);
|
||||||
if (render->player->key[1])
|
if (render->player->key[1])
|
||||||
@ -51,6 +58,18 @@ int loop(void *param)
|
|||||||
return (0);
|
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)
|
int main(int ac, char **av)
|
||||||
{
|
{
|
||||||
t_render render;
|
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_on_event(render.mlx, render.win, MLX_KEYUP, key_up, &render);
|
||||||
mlx_loop_hook(render.mlx, loop, &render);
|
mlx_loop_hook(render.mlx, loop, &render);
|
||||||
mlx_loop(render.mlx);
|
mlx_loop(render.mlx);
|
||||||
mlx_destroy_image(render.mlx, render.img);
|
delete_everything(&parsing, &render);
|
||||||
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);
|
|
||||||
return (EXIT_SUCCESS);
|
return (EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/10/28 15:48:39 by adjoly #+# #+# */
|
/* 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/dda.h>
|
||||||
#include <game/settings.h>
|
#include <game/settings.h>
|
||||||
#include <game/game.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 x;
|
||||||
int h;
|
|
||||||
int color;
|
int color;
|
||||||
void **texture;
|
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;
|
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)
|
if (dda->distance.y < dda->distance.x)
|
||||||
{
|
{
|
||||||
x = (int)dda->hori.x % CHUNK_SIZE;
|
x = (int)dda->hori.x % CHUNK_SIZE;
|
||||||
h = abs((line_stop - line_start) * TEXTURE_SIZE / line_size - 63);
|
texture = get_texture(true, render, ray);
|
||||||
if (ray->angle < M_PI)
|
|
||||||
texture = &render->texture[0];
|
|
||||||
else
|
|
||||||
texture = &render->texture[2];
|
|
||||||
color = mlx_get_image_pixel(render->mlx, *texture, x, h);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
x = (int)dda->vert.y % CHUNK_SIZE;
|
x = (int)dda->vert.y % CHUNK_SIZE;
|
||||||
h = abs((line_stop - line_start) * TEXTURE_SIZE / line_size - 63);
|
texture = get_texture(false, render, ray);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
color = mlx_get_image_pixel(render->mlx, *texture, x, y);
|
||||||
return (color);
|
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)
|
while (line_start < line_stop)
|
||||||
{
|
{
|
||||||
if (x < WINDOW_W && x >= 0)
|
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++;
|
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> +#+ +:+ +#+ */
|
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/10/26 15:47:29 by adjoly #+# #+# */
|
/* 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->x += second.x;
|
||||||
first->y += second.y;
|
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> +#+ +:+ +#+ */
|
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/11/06 13:01:03 by adjoly #+# #+# */
|
/* 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;
|
int i;
|
||||||
|
|
||||||
render->texture[0] = mlx_png_file_to_image(render->mlx, parsing.no_png, &i, &i);
|
render->texture[0] = mlx_png_file_to_image(render->mlx, parsing.no_png, \
|
||||||
render->texture[1] = mlx_png_file_to_image(render->mlx, parsing.we_png, &i, &i);
|
&i, &i);
|
||||||
render->texture[2] = mlx_png_file_to_image(render->mlx, parsing.so_png, &i, &i);
|
render->texture[1] = mlx_png_file_to_image(render->mlx, parsing.we_png, \
|
||||||
render->texture[3] = mlx_png_file_to_image(render->mlx, parsing.ea_png, &i, &i);
|
&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