add sprite types

This commit is contained in:
Quinten Mennen 2025-05-28 17:08:10 +02:00
parent c252a9bed1
commit e3ae7b1092
7 changed files with 35 additions and 21 deletions

View File

@ -1,12 +1,12 @@
/* ************************************************************************** */ /* ************************************************************************** */
/* */ /* */
/* :::::::: */ /* ::: :::::::: */
/* map.h :+: :+: */ /* map.h :+: :+: :+: */
/* +:+ */ /* +:+ +:+ +:+ */
/* By: whaffman <whaffman@student.codam.nl> +#+ */ /* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
/* +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2025/04/17 19:19:19 by qmennen #+# #+# */ /* Created: 2025/04/17 19:19:19 by qmennen #+# #+# */
/* Updated: 2025/05/25 13:39:13 by whaffman ######## odam.nl */ /* Updated: 2025/05/28 17:07:28 by qmennen ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -26,6 +26,6 @@ int parse_args(const char *mapfile, t_game *game);
t_tile **create_grid(int width, int height); t_tile **create_grid(int width, int height);
int find_player_or_empty(t_map *map, int *x, int *y); int find_player_or_empty(t_map *map, int *x, int *y);
int floodfill(t_map *map, int x, int y); int floodfill(t_map *map, int x, int y);
t_sprite make_sprite(mlx_texture_t *texture, double x, double y, int collectible); t_sprite make_sprite(t_sprite_lib *def, double x, double y);
#endif #endif

View File

@ -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/05/28 16:44:33 by qmennen ### ########.fr */ /* Updated: 2025/05/28 17:04:35 by qmennen ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -24,6 +24,14 @@ typedef enum TILE
TILE_PLAYER = 2, TILE_PLAYER = 2,
} t_tile; } t_tile;
typedef enum SPRITE_TYPE
{
SPRITE_TYPE_DEFAULT = 0,
SPRITE_TYPE_COLLECTIBLE = 1,
SPRITE_TYPE_COLLECTED = 2,
SPRITE_TYPE_ENEMY = 3,
} t_sprite_type;
typedef struct s_vec2 typedef struct s_vec2
{ {
double x; double x;
@ -68,12 +76,14 @@ typedef struct s_sprite
int visible; int visible;
int collectible; int collectible;
mlx_texture_t *texture; mlx_texture_t *texture;
t_sprite_type type;
t_vec2 pos; t_vec2 pos;
} t_sprite; } t_sprite;
typedef struct s_sprite_lib typedef struct s_sprite_lib
{ {
mlx_texture_t *texture; mlx_texture_t *texture;
t_sprite_type type;
int collectible; int collectible;
} t_sprite_lib; } t_sprite_lib;

View File

@ -6,7 +6,7 @@
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */ /* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2025/05/28 14:26:29 by qmennen #+# #+# */ /* Created: 2025/05/28 14:26:29 by qmennen #+# #+# */
/* Updated: 2025/05/28 16:03:03 by qmennen ### ########.fr */ /* Updated: 2025/05/28 17:01:42 by qmennen ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View File

@ -6,7 +6,7 @@
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */ /* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2025/04/15 16:01:29 by qmennen #+# #+# */ /* Created: 2025/04/15 16:01:29 by qmennen #+# #+# */
/* Updated: 2025/05/28 14:24:29 by qmennen ### ########.fr */ /* Updated: 2025/05/28 17:02:03 by qmennen ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View File

@ -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/05/28 16:42:59 by qmennen ### ########.fr */ /* Updated: 2025/05/28 17:04:39 by qmennen ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -105,9 +105,15 @@ int handle_sprite(char *token, t_map *map)
char *texture_path; char *texture_path;
if (token[1] == 'c') if (token[1] == 'c')
{
sprite.collectible = 1; sprite.collectible = 1;
sprite.type = SPRITE_TYPE_COLLECTIBLE;
}
else else
{
sprite.collectible = 0; sprite.collectible = 0;
sprite.type = SPRITE_TYPE_DEFAULT;
}
symbol = *ft_strtok(NULL, " "); symbol = *ft_strtok(NULL, " ");
if (symbol < 'a' || symbol > 'z') if (symbol < 'a' || symbol > 'z')
return (ft_putstr_fd("Error: Invalid sprite symbol\n", 2), FAILURE); return (ft_putstr_fd("Error: Invalid sprite symbol\n", 2), FAILURE);

View File

@ -6,7 +6,7 @@
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */ /* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2025/04/22 13:12:04 by whaffman #+# #+# */ /* Created: 2025/04/22 13:12:04 by whaffman #+# #+# */
/* Updated: 2025/05/28 14:34:38 by qmennen ### ########.fr */ /* Updated: 2025/05/28 17:07:32 by qmennen ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -137,9 +137,8 @@ int parse_map_line_sprites(char *line, t_game *game, int y)
return (FAILURE); return (FAILURE);
} }
map->sprites[map->n_sprites] = make_sprite( map->sprites[map->n_sprites] = make_sprite(
sprite_lib[line[x] - 'a'].texture, &sprite_lib[line[x] - 'a'],
(double)x + 0.5f, (double)y + 0.5f, (double)x + 0.5f, (double)y + 0.5f);
sprite_lib[line[x] - 'a'].collectible);
map->n_sprites++; map->n_sprites++;
} }
x++; x++;

View File

@ -6,19 +6,18 @@
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */ /* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2025/04/22 17:08:26 by qmennen #+# #+# */ /* Created: 2025/04/22 17:08:26 by qmennen #+# #+# */
/* Updated: 2025/05/28 16:44:40 by qmennen ### ########.fr */ /* Updated: 2025/05/28 17:07:26 by qmennen ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
#include "cub3d.h" #include "cub3d.h"
t_sprite make_sprite(mlx_texture_t *texture, double x, double y, t_sprite make_sprite(t_sprite_lib *def, double x, double y)
int collectible)
{ {
t_sprite sprite; t_sprite sprite;
ft_memset(&sprite, 0, sizeof(t_sprite)); ft_memset(&sprite, 0, sizeof(t_sprite));
sprite.texture = texture; sprite.texture = def->texture;
// if (sprite.texture->width % 64 != 0) // if (sprite.texture->width % 64 != 0)
// { // {
// ft_putstr_fd("Error: Texture width is not a multiple of 64\n", 2); // ft_putstr_fd("Error: Texture width is not a multiple of 64\n", 2);
@ -34,7 +33,7 @@ t_sprite make_sprite(mlx_texture_t *texture, double x, double y,
sprite.pos.x = x; sprite.pos.x = x;
sprite.pos.y = y; sprite.pos.y = y;
sprite.visible = 1; sprite.visible = 1;
sprite.collectible = collectible; sprite.collectible = def->type == SPRITE_TYPE_COLLECTIBLE;
return (sprite); return (sprite);
} }