a lot of doors are opening rn
This commit is contained in:
parent
483dca8711
commit
ff649d01cc
2
Makefile
2
Makefile
@ -6,7 +6,7 @@
|
|||||||
# By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ #
|
# By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ #
|
||||||
# +#+#+#+#+#+ +#+ #
|
# +#+#+#+#+#+ +#+ #
|
||||||
# Created: 2024/10/15 11:48:46 by whaffman #+# #+# #
|
# Created: 2024/10/15 11:48:46 by whaffman #+# #+# #
|
||||||
# Updated: 2025/06/03 21:48:38 by qmennen ### ########.fr #
|
# Updated: 2025/06/04 18:16:27 by qmennen ### ########.fr #
|
||||||
# #
|
# #
|
||||||
# **************************************************************************** #
|
# **************************************************************************** #
|
||||||
|
|
||||||
|
|||||||
BIN
assets/door.png
Normal file
BIN
assets/door.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 217 KiB |
13
inc/player.h
13
inc/player.h
@ -1,12 +1,12 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* :::::::: */
|
/* ::: :::::::: */
|
||||||
/* player.h :+: :+: */
|
/* player.h :+: :+: :+: */
|
||||||
/* +:+ */
|
/* +:+ +:+ +:+ */
|
||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/15 18:53:27 by qmennen #+# #+# */
|
/* Created: 2025/04/15 18:53:27 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/04 16:39:57 by whaffman ######## odam.nl */
|
/* Updated: 2025/06/04 18:42:25 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -19,5 +19,6 @@ int player_create(t_game **game);
|
|||||||
void player_update(t_game *game, double delta_time);
|
void player_update(t_game *game, double delta_time);
|
||||||
void visit_area(t_game *game);
|
void visit_area(t_game *game);
|
||||||
void rotate(t_player *player, double rot_speed, double delta);
|
void rotate(t_player *player, double rot_speed, double delta);
|
||||||
|
void interact_door(t_game *game);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
14
inc/render.h
14
inc/render.h
@ -1,12 +1,12 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* :::::::: */
|
/* ::: :::::::: */
|
||||||
/* render.h :+: :+: */
|
/* render.h :+: :+: :+: */
|
||||||
/* +:+ */
|
/* +:+ +:+ +:+ */
|
||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/15 16:28:16 by qmennen #+# #+# */
|
/* Created: 2025/04/15 16:28:16 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/03 14:47:34 by whaffman ######## odam.nl */
|
/* Updated: 2025/06/04 18:15:26 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ void render_map(t_game *game);
|
|||||||
t_render cast_ray(t_game *game, int x);
|
t_render cast_ray(t_game *game, int x);
|
||||||
void cast_rays(t_game *game);
|
void cast_rays(t_game *game);
|
||||||
void render_sprites(t_render *render, t_game *game);
|
void render_sprites(t_render *render, t_game *game);
|
||||||
double dda(t_vec2 ray_dir, t_vec2 pos, t_map *map);
|
double dda(t_render *render, t_vec2 ray_dir, t_vec2 pos, t_map *map);
|
||||||
void draw_floor(t_game *game);
|
void draw_floor(t_game *game);
|
||||||
void draw_line(t_game *game, t_render render, int x);
|
void draw_line(t_game *game, t_render render, int x);
|
||||||
unsigned int get_texture_color(mlx_texture_t *texture,
|
unsigned int get_texture_color(mlx_texture_t *texture,
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/15 15:52:44 by qmennen #+# #+# */
|
/* Created: 2025/04/15 15:52:44 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/03 21:55:47 by qmennen ### ########.fr */
|
/* Updated: 2025/06/04 18:14:36 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -22,6 +22,8 @@ typedef enum TILE
|
|||||||
TILE_EMPTY = 0,
|
TILE_EMPTY = 0,
|
||||||
TILE_WALL = 1,
|
TILE_WALL = 1,
|
||||||
TILE_PLAYER = 2,
|
TILE_PLAYER = 2,
|
||||||
|
TILE_DOOR = 3,
|
||||||
|
TILE_DOOR_OPEN = 4,
|
||||||
} t_tile;
|
} t_tile;
|
||||||
|
|
||||||
typedef enum SPRITE_TYPE
|
typedef enum SPRITE_TYPE
|
||||||
@ -94,7 +96,7 @@ typedef struct s_map
|
|||||||
t_tile **grid;
|
t_tile **grid;
|
||||||
mlx_texture_t *texture_floor;
|
mlx_texture_t *texture_floor;
|
||||||
mlx_texture_t *texture_ceiling;
|
mlx_texture_t *texture_ceiling;
|
||||||
mlx_texture_t *textures[4];
|
mlx_texture_t *textures[5];
|
||||||
t_sprite *sprites;
|
t_sprite *sprites;
|
||||||
t_sprite_lib *sprite_lib;
|
t_sprite_lib *sprite_lib;
|
||||||
unsigned int n_sprites;
|
unsigned int n_sprites;
|
||||||
@ -134,6 +136,7 @@ typedef enum e_side
|
|||||||
SIDE_SOUTH,
|
SIDE_SOUTH,
|
||||||
SIDE_WEST,
|
SIDE_WEST,
|
||||||
SIDE_EAST,
|
SIDE_EAST,
|
||||||
|
SIDE_DOOR,
|
||||||
} t_side;
|
} t_side;
|
||||||
|
|
||||||
typedef enum e_game_state
|
typedef enum e_game_state
|
||||||
@ -146,6 +149,8 @@ typedef enum e_game_state
|
|||||||
typedef struct s_render
|
typedef struct s_render
|
||||||
{
|
{
|
||||||
double perp_dist;
|
double perp_dist;
|
||||||
|
int sign;
|
||||||
|
int door;
|
||||||
t_side side;
|
t_side side;
|
||||||
double wall_x;
|
double wall_x;
|
||||||
} t_render;
|
} t_render;
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/22 14:40:59 by qmennen #+# #+# */
|
/* Created: 2025/04/22 14:40:59 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/03 22:12:38 by qmennen ### ########.fr */
|
/* Updated: 2025/06/04 18:35:34 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ int collision_horizontal(t_map *map, t_player *player, double xa)
|
|||||||
t_tile tile;
|
t_tile tile;
|
||||||
|
|
||||||
tile = get_tile(map, (int)((player->pos.x + xa)), (int)((player->pos.y)));
|
tile = get_tile(map, (int)((player->pos.x + xa)), (int)((player->pos.y)));
|
||||||
return (tile != TILE_WALL && tile != TILE_VOID);
|
return (tile != TILE_WALL && tile != TILE_VOID && tile != TILE_DOOR);
|
||||||
}
|
}
|
||||||
|
|
||||||
int collision_vertical(t_map *map, t_player *player, double ya)
|
int collision_vertical(t_map *map, t_player *player, double ya)
|
||||||
@ -68,5 +68,5 @@ int collision_vertical(t_map *map, t_player *player, double ya)
|
|||||||
t_tile tile;
|
t_tile tile;
|
||||||
|
|
||||||
tile = get_tile(map, (int)((player->pos.x)), (int)((player->pos.y + ya)));
|
tile = get_tile(map, (int)((player->pos.x)), (int)((player->pos.y + ya)));
|
||||||
return (tile != TILE_WALL && tile != TILE_VOID);
|
return (tile != TILE_WALL && tile != TILE_VOID && tile != TILE_DOOR);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,18 +6,21 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/06/03 15:53:32 by qmennen #+# #+# */
|
/* Created: 2025/06/03 15:53:32 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/03 22:18:26 by qmennen ### ########.fr */
|
/* Updated: 2025/06/04 18:42:45 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "game.h"
|
#include "cub3d.h"
|
||||||
|
|
||||||
void handle_flash(t_sprite *sprite, t_game *game)
|
void handle_flash(t_sprite *sprite, t_game *game)
|
||||||
{
|
{
|
||||||
|
if (game->screen->flash != 1)
|
||||||
|
return ;
|
||||||
if (sprite->type == SPRITE_TYPE_ENEMY && game->screen->flash == 1
|
if (sprite->type == SPRITE_TYPE_ENEMY && game->screen->flash == 1
|
||||||
&& sprite->dist < 2.0)
|
&& sprite->dist < 2.0)
|
||||||
{
|
{
|
||||||
sprite->type = SPRITE_TYPE_DISABLED;
|
sprite->type = SPRITE_TYPE_DISABLED;
|
||||||
game->scoreboard->enemies++;
|
game->scoreboard->enemies++;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1,12 +1,12 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* :::::::: */
|
/* ::: :::::::: */
|
||||||
/* moves.c :+: :+: */
|
/* moves.c :+: :+: :+: */
|
||||||
/* +:+ */
|
/* +:+ +:+ +:+ */
|
||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/05/14 20:08:27 by whaffman #+# #+# */
|
/* Created: 2025/05/14 20:08:27 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/06/04 16:39:34 by whaffman ######## odam.nl */
|
/* Updated: 2025/06/04 18:42:35 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -95,6 +95,7 @@ void player_update(t_game *game, double delta_time)
|
|||||||
{
|
{
|
||||||
game->screen->flash = 3;
|
game->screen->flash = 3;
|
||||||
game->player->battery -= 0.1f;
|
game->player->battery -= 0.1f;
|
||||||
|
interact_door(game);
|
||||||
}
|
}
|
||||||
if (game->player->hit_timer > 0)
|
if (game->player->hit_timer > 0)
|
||||||
game->player->hit_timer -= .1f;
|
game->player->hit_timer -= .1f;
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/15 18:53:19 by qmennen #+# #+# */
|
/* Created: 2025/04/15 18:53:19 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/03 15:18:22 by qmennen ### ########.fr */
|
/* Updated: 2025/06/04 18:42:13 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -28,3 +28,16 @@ int player_create(t_game **game)
|
|||||||
(*game)->player = player;
|
(*game)->player = player;
|
||||||
return (SUCCESS);
|
return (SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void interact_door(t_game *game)
|
||||||
|
{
|
||||||
|
t_vec2_int pos;
|
||||||
|
|
||||||
|
pos = vec2_to_int(add(game->player->pos, game->player->dir));
|
||||||
|
printf("Tile to flash: (%d, %d), type %d\n", pos.x, pos.y, game->map->grid[pos.y][pos.x]);
|
||||||
|
if (game->map->grid[pos.y][pos.x] == TILE_DOOR)
|
||||||
|
{
|
||||||
|
game->map->grid[pos.y][pos.x] = TILE_EMPTY;
|
||||||
|
game->scoreboard->tiles_visited++;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/22 13:10:06 by whaffman #+# #+# */
|
/* Created: 2025/04/22 13:10:06 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/06/03 16:16:56 by qmennen ### ########.fr */
|
/* Updated: 2025/06/04 17:57:29 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -29,10 +29,10 @@ mlx_texture_t *load_texture(const char *path)
|
|||||||
t_token_handler handle_config_token(const char *token, t_map *map)
|
t_token_handler handle_config_token(const char *token, t_map *map)
|
||||||
{
|
{
|
||||||
const char *config_tokens[] = {
|
const char *config_tokens[] = {
|
||||||
"NO", "SO", "WE", "EA", "F", "C", "FT", "CT", "-c", "-s", "-e", NULL
|
"NO", "SO", "WE", "EA", "D", "F", "C", "FT", "CT", "-c", "-s", "-e", NULL
|
||||||
};
|
};
|
||||||
const t_token_handler handlers[] = {
|
const t_token_handler handlers[] = {
|
||||||
handle_wall, handle_wall, handle_wall, handle_wall,
|
handle_wall, handle_wall, handle_wall, handle_wall, handle_wall,
|
||||||
handle_fc_color, handle_fc_color, handle_fc_texture, handle_fc_texture,
|
handle_fc_color, handle_fc_color, handle_fc_texture, handle_fc_texture,
|
||||||
handle_sprite, handle_sprite, handle_sprite, NULL
|
handle_sprite, handle_sprite, handle_sprite, NULL
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* :::::::: */
|
/* ::: :::::::: */
|
||||||
/* parse_handlers.c :+: :+: */
|
/* parse_handlers.c :+: :+: :+: */
|
||||||
/* +:+ */
|
/* +:+ +:+ +:+ */
|
||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/06/03 14:38:12 by whaffman #+# #+# */
|
/* Created: 2025/06/03 14:38:12 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/06/03 14:54:00 by whaffman ######## odam.nl */
|
/* Updated: 2025/06/04 17:57:18 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -15,7 +15,7 @@
|
|||||||
int handle_wall(char *token, t_map *map)
|
int handle_wall(char *token, t_map *map)
|
||||||
{
|
{
|
||||||
const char *wall_tokens[] = {
|
const char *wall_tokens[] = {
|
||||||
"NO", "SO", "WE", "EA", NULL
|
"NO", "SO", "WE", "EA", "D", NULL
|
||||||
};
|
};
|
||||||
char *texture_path;
|
char *texture_path;
|
||||||
int i;
|
int i;
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* :::::::: */
|
/* ::: :::::::: */
|
||||||
/* parse_tile.c :+: :+: */
|
/* parse_tile.c :+: :+: :+: */
|
||||||
/* +:+ */
|
/* +:+ +:+ +:+ */
|
||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/22 13:12:31 by whaffman #+# #+# */
|
/* Created: 2025/04/22 13:12:31 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/05/25 11:49:44 by whaffman ######## odam.nl */
|
/* Updated: 2025/06/04 17:50:07 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -22,6 +22,8 @@ int parse_tile(char c)
|
|||||||
return (TILE_VOID);
|
return (TILE_VOID);
|
||||||
else if (c == 'N' || c == 'S' || c == 'E' || c == 'W')
|
else if (c == 'N' || c == 'S' || c == 'E' || c == 'W')
|
||||||
return (TILE_PLAYER);
|
return (TILE_PLAYER);
|
||||||
|
else if (c == 'D')
|
||||||
|
return (TILE_DOOR);
|
||||||
else if (c >= 'a' && c <= 'z')
|
else if (c >= 'a' && c <= 'z')
|
||||||
return (TILE_EMPTY);
|
return (TILE_EMPTY);
|
||||||
else
|
else
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* :::::::: */
|
/* ::: :::::::: */
|
||||||
/* dda.c :+: :+: */
|
/* dda.c :+: :+: :+: */
|
||||||
/* +:+ */
|
/* +:+ +:+ +:+ */
|
||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/05/02 11:58:09 by whaffman #+# #+# */
|
/* Created: 2025/05/02 11:58:09 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/05/22 18:50:43 by whaffman ######## odam.nl */
|
/* Updated: 2025/06/04 18:32:57 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -74,15 +74,18 @@ int dda_main(t_vec2 ray_dir, t_vec2_int map_pos, t_vec2 *side_dist, t_map *map)
|
|||||||
printf("Out of bounds: %d %d\n", map_pos.x, map_pos.y);
|
printf("Out of bounds: %d %d\n", map_pos.x, map_pos.y);
|
||||||
if (map->grid[map_pos.y][map_pos.x] == TILE_EMPTY)
|
if (map->grid[map_pos.y][map_pos.x] == TILE_EMPTY)
|
||||||
map->grid[map_pos.y][map_pos.x] = TILE_VISITED;
|
map->grid[map_pos.y][map_pos.x] = TILE_VISITED;
|
||||||
hit = (map->grid[map_pos.y][map_pos.x] == TILE_WALL);
|
hit = (map->grid[map_pos.y][map_pos.x] == TILE_WALL) - (map->grid[map_pos.y][map_pos.x] == TILE_DOOR);
|
||||||
}
|
}
|
||||||
|
side = -1 * (1 - side) + side;
|
||||||
|
if (hit == -1)
|
||||||
|
side *= 2;
|
||||||
return (side);
|
return (side);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the distance to the wall hit if the wall is hit in y
|
// Returns the distance to the wall hit if the wall is hit in y
|
||||||
// direction the result is negative, if the wall is hit
|
// direction the result is negative, if the wall is hit
|
||||||
// in x direction the result is positive
|
// in x direction the result is positive
|
||||||
double dda(t_vec2 ray_dir, t_vec2 pos, t_map *map)
|
double dda(t_render *render, t_vec2 ray_dir, t_vec2 pos, t_map *map)
|
||||||
{
|
{
|
||||||
const t_vec2 delta_dist = get_delta_dist(ray_dir);
|
const t_vec2 delta_dist = get_delta_dist(ray_dir);
|
||||||
t_vec2 side_dist;
|
t_vec2 side_dist;
|
||||||
@ -93,6 +96,12 @@ double dda(t_vec2 ray_dir, t_vec2 pos, t_map *map)
|
|||||||
(t_vec2_int){(int)pos.x, (int)pos.y},
|
(t_vec2_int){(int)pos.x, (int)pos.y},
|
||||||
&side_dist,
|
&side_dist,
|
||||||
map);
|
map);
|
||||||
|
if (abs(side) == 2)
|
||||||
|
{
|
||||||
|
render->door = 1;
|
||||||
|
side /= 2;
|
||||||
|
}
|
||||||
|
side = (side + 1)/2;
|
||||||
return ((1 - side) * (side_dist.x - delta_dist.x)
|
return ((1 - side) * (side_dist.x - delta_dist.x)
|
||||||
- side * (side_dist.y - delta_dist.y));
|
- side * (side_dist.y - delta_dist.y));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,19 +1,21 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* :::::::: */
|
/* ::: :::::::: */
|
||||||
/* render_walls.c :+: :+: */
|
/* render_walls.c :+: :+: :+: */
|
||||||
/* +:+ */
|
/* +:+ +:+ +:+ */
|
||||||
/* By: whaffman <whaffman@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/05/14 13:05:28 by whaffman #+# #+# */
|
/* Created: 2025/05/14 13:05:28 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/05/18 12:05:07 by whaffman ######## odam.nl */
|
/* Updated: 2025/06/04 18:17:33 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "cub3d.h"
|
#include "cub3d.h"
|
||||||
|
|
||||||
t_side get_side(t_vec2 ray_dir, double perp_dist)
|
t_side get_side(t_render *render, t_vec2 ray_dir, double perp_dist)
|
||||||
{
|
{
|
||||||
|
if (render->door)
|
||||||
|
return (SIDE_DOOR);
|
||||||
if (perp_dist > 0)
|
if (perp_dist > 0)
|
||||||
{
|
{
|
||||||
if (ray_dir.x > 0)
|
if (ray_dir.x > 0)
|
||||||
@ -37,13 +39,14 @@ t_render cast_ray(t_game *game, int x)
|
|||||||
t_render render;
|
t_render render;
|
||||||
double perp_dist;
|
double perp_dist;
|
||||||
|
|
||||||
|
render.door = 0;
|
||||||
ray_dir = add(game->player->dir,
|
ray_dir = add(game->player->dir,
|
||||||
mul(game->player->camera,
|
mul(game->player->camera,
|
||||||
(2.0f * x / (double)game->screen->width - 1)));
|
(2.0f * x / (double)game->screen->width - 1)));
|
||||||
pos = game->player->pos;
|
pos = game->player->pos;
|
||||||
perp_dist = dda(ray_dir, pos, game->map);
|
perp_dist = dda(&render, ray_dir, pos, game->map);
|
||||||
render.perp_dist = fabs(perp_dist);
|
render.perp_dist = fabs(perp_dist);
|
||||||
render.side = get_side(ray_dir, perp_dist);
|
render.side = get_side(&render, ray_dir, perp_dist);
|
||||||
if (perp_dist < 0)
|
if (perp_dist < 0)
|
||||||
render.wall_x = pos.x + ray_dir.x * render.perp_dist;
|
render.wall_x = pos.x + ray_dir.x * render.perp_dist;
|
||||||
else
|
else
|
||||||
|
|||||||
5
test.cub
5
test.cub
@ -6,6 +6,7 @@ WE ./assets/bricks2.png
|
|||||||
|
|
||||||
SO ./assets/stonewall256.png
|
SO ./assets/stonewall256.png
|
||||||
EA ./assets/bricksx64.png
|
EA ./assets/bricksx64.png
|
||||||
|
D ./assets/door.png
|
||||||
|
|
||||||
F 90,30,30
|
F 90,30,30
|
||||||
|
|
||||||
@ -20,7 +21,7 @@ CT ./assets/ceiling64x64.png
|
|||||||
-s p ./assets/plant.png
|
-s p ./assets/plant.png
|
||||||
-s m ./assets/broken_mirror.png
|
-s m ./assets/broken_mirror.png
|
||||||
-s t ./assets/test.png
|
-s t ./assets/test.png
|
||||||
-e e ./assets/flying_eye.png
|
-s e ./assets/flying_eye.png
|
||||||
|
|
||||||
1111111 111 1111 111111 1111111111 111111
|
1111111 111 1111 111111 1111111111 111111
|
||||||
1000001110111001 100001 1000000001 10001
|
1000001110111001 100001 1000000001 10001
|
||||||
@ -30,7 +31,7 @@ CT ./assets/ceiling64x64.png
|
|||||||
100m00111000100000b00000b00111110p00000100p00m001
|
100m00111000100000b00000b00111110p00000100p00m001
|
||||||
10b0e0bb00001111111111100000000000111111000000001
|
10b0e0bb00001111111111100000000000111111000000001
|
||||||
1000t0bW00001 1000011111111 1000001001
|
1000t0bW00001 1000011111111 1000001001
|
||||||
10p0011111001 111111100001 1111111111110001
|
10p0011111DD1 111111100001 1111111111110001
|
||||||
100001 1001 1p00000000011111111000010111 10b01
|
100001 1001 1p00000000011111111000010111 10b01
|
||||||
111111 1001 10000010000000000010b0000101 100001
|
111111 1001 10000010000000000010b0000101 100001
|
||||||
1b01 10000p1111111111111000010001 10b00m1
|
1b01 10000p1111111111111000010001 10b00m1
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user