Norm work:
Refactor code for improved readability and maintainability, including function signature updates, new utility functions for score handling, and removal of unused error handling code.
This commit is contained in:
parent
62f20996d0
commit
3c4b3803c9
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/15 12:22:29 by qmennen #+# #+# */
|
/* Created: 2025/04/15 12:22:29 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/10 14:42:13 by qmennen ### ########.fr */
|
/* Updated: 2025/06/10 15:48:20 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -71,7 +71,7 @@
|
|||||||
# include "monster.h"
|
# include "monster.h"
|
||||||
|
|
||||||
int initialize_cub3d(t_game **game, const char *mapfile);
|
int initialize_cub3d(t_game **game, const char *mapfile);
|
||||||
int shader_init();
|
int shader_init(void);
|
||||||
void set_uniforms(t_game *game);
|
void set_uniforms(t_game *game);
|
||||||
int load_uniforms(t_game **game);
|
int load_uniforms(t_game **game);
|
||||||
void count_scores(t_game *game);
|
void count_scores(t_game *game);
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/05/27 15:07:48 by qmennen #+# #+# */
|
/* Created: 2025/05/27 15:07:48 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/10 14:28:20 by qmennen ### ########.fr */
|
/* Updated: 2025/06/10 15:20:30 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -27,5 +27,11 @@ t_menu_item *menu_item_create(t_screen *screen, const char *text,
|
|||||||
void (*act)(struct s_menu_item *item, t_game_manager *manager));
|
void (*act)(struct s_menu_item *item, t_game_manager *manager));
|
||||||
void menu_free(t_menu *menu, t_screen *screen);
|
void menu_free(t_menu *menu, t_screen *screen);
|
||||||
void menu_toggle(t_menu *menu);
|
void menu_toggle(t_menu *menu);
|
||||||
|
char *get_score_prefix(int index);
|
||||||
|
char *get_score_suffix(int index);
|
||||||
|
void draw_score_line(
|
||||||
|
mlx_t *mlx, mlx_image_t **img, char *text, t_vec2_int pos
|
||||||
|
);
|
||||||
|
char *get_score_text(char *prefix, char *suffix, int score);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/19 14:41:55 by whaffman #+# #+# */
|
/* Created: 2025/04/19 14:41:55 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/06/03 15:49:59 by qmennen ### ########.fr */
|
/* Updated: 2025/06/10 15:46:42 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -48,5 +48,6 @@ 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(t_sprite_lib *def, double x, double y);
|
t_sprite make_sprite(t_sprite_lib *def, double x, double y);
|
||||||
|
int parse_map_line_sprites(char *line, t_game *game, int y);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@ -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/05 17:08:34 by qmennen ### ########.fr */
|
/* Updated: 2025/06/10 15:06:16 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -170,11 +170,7 @@ typedef struct s_scoreboard
|
|||||||
int enemies;
|
int enemies;
|
||||||
int start_time;
|
int start_time;
|
||||||
int end_time;
|
int end_time;
|
||||||
mlx_image_t *tiles_text;
|
mlx_image_t *texts[5];
|
||||||
mlx_image_t *collectibles_text;
|
|
||||||
mlx_image_t *battery_text;
|
|
||||||
mlx_image_t *enemies_text;
|
|
||||||
mlx_image_t *time_text;
|
|
||||||
} t_scoreboard;
|
} t_scoreboard;
|
||||||
|
|
||||||
typedef struct s_game
|
typedef struct s_game
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/15 15:46:08 by qmennen #+# #+# */
|
/* Created: 2025/04/15 15:46:08 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/05 18:43:54 by qmennen ### ########.fr */
|
/* Updated: 2025/06/10 15:25:17 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -64,16 +64,22 @@ void game_run(t_game *game)
|
|||||||
game_over(game->manager);
|
game_over(game->manager);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void scoreboard_free(mlx_t *mlx, t_scoreboard *scoreboard)
|
static void free_scoreboard(mlx_t *mlx, t_scoreboard *scoreboard)
|
||||||
{
|
{
|
||||||
if (scoreboard->tiles_text)
|
int i;
|
||||||
mlx_delete_image(mlx, scoreboard->tiles_text);
|
|
||||||
if (scoreboard->collectibles_text)
|
if (!scoreboard)
|
||||||
mlx_delete_image(mlx, scoreboard->collectibles_text);
|
return ;
|
||||||
if (scoreboard->battery_text)
|
i = 0;
|
||||||
mlx_delete_image(mlx, scoreboard->battery_text);
|
while (i < 5)
|
||||||
if (scoreboard->enemies_text)
|
{
|
||||||
mlx_delete_image(mlx, scoreboard->enemies_text);
|
if (scoreboard->texts[i])
|
||||||
|
{
|
||||||
|
mlx_delete_image(mlx, scoreboard->texts[i]);
|
||||||
|
scoreboard->texts[i] = NULL;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
free(scoreboard);
|
free(scoreboard);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,6 +101,6 @@ void game_free(t_game *game)
|
|||||||
if (game->keyboard)
|
if (game->keyboard)
|
||||||
free(game->keyboard);
|
free(game->keyboard);
|
||||||
if (game->scoreboard)
|
if (game->scoreboard)
|
||||||
scoreboard_free(game->screen->mlx, game->scoreboard);
|
free_scoreboard(game->screen->mlx, game->scoreboard);
|
||||||
game->scoreboard = NULL;
|
game->scoreboard = NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/05/27 13:48:18 by qmennen #+# #+# */
|
/* Created: 2025/05/27 13:48:18 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/04 18:52:53 by qmennen ### ########.fr */
|
/* Updated: 2025/06/10 15:19:59 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/06/03 16:20:35 by qmennen #+# #+# */
|
/* Created: 2025/06/03 16:20:35 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/10 14:29:07 by qmennen ### ########.fr */
|
/* Updated: 2025/06/10 15:30:05 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -21,49 +21,47 @@ static void slideshow(t_game *game)
|
|||||||
game->screenshots[frame_idx]->instances[0].enabled = true;
|
game->screenshots[frame_idx]->instances[0].enabled = true;
|
||||||
if (last_frame_time == 0)
|
if (last_frame_time == 0)
|
||||||
last_frame_time = mlx_get_time();
|
last_frame_time = mlx_get_time();
|
||||||
if (mlx_get_time() - last_frame_time > 5 && frame_idx < game->screenshot_idx && frame_idx < MAX_SCREENSHOTS) {
|
if (mlx_get_time() - last_frame_time > 5 && frame_idx < game->screenshot_idx
|
||||||
|
&& frame_idx < MAX_SCREENSHOTS)
|
||||||
|
{
|
||||||
game->screenshots[frame_idx++]->instances[0].enabled = true;
|
game->screenshots[frame_idx++]->instances[0].enabled = true;
|
||||||
game->screenshots[frame_idx - 1]->instances[0].enabled = false;
|
game->screenshots[frame_idx - 1]->instances[0].enabled = false;
|
||||||
last_frame_time = mlx_get_time();
|
last_frame_time = mlx_get_time();
|
||||||
frame_idx %= (MAX_SCREENSHOTS < game->screenshot_idx) * MAX_SCREENSHOTS + (MAX_SCREENSHOTS >= game->screenshot_idx) * game->screenshot_idx;
|
frame_idx %= (MAX_SCREENSHOTS < game->screenshot_idx) * MAX_SCREENSHOTS
|
||||||
|
+ (MAX_SCREENSHOTS >= game->screenshot_idx) * game->screenshot_idx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char *get_score_text(char *prefix, char *suffix, int score)
|
static void draw_scoreboard(t_game_manager *manager)
|
||||||
{
|
{
|
||||||
char *score_text;
|
const int s_val[] = {
|
||||||
char *score_complete;
|
(int)(manager->game->scoreboard->tiles_visited
|
||||||
char *score_value;
|
/ (double)manager->game->scoreboard->total_tiles * 100),
|
||||||
|
(int)(manager->game->player->battery * 100),
|
||||||
|
manager->game->scoreboard->collectibles,
|
||||||
|
manager->game->scoreboard->enemies,
|
||||||
|
manager->game->scoreboard->end_time
|
||||||
|
- manager->game->scoreboard->start_time
|
||||||
|
};
|
||||||
|
t_game *game;
|
||||||
|
int i;
|
||||||
|
char *s_text;
|
||||||
|
|
||||||
score_text = ft_itoa(score);
|
i = -1;
|
||||||
if (!score_text)
|
game = manager->game;
|
||||||
return (NULL);
|
while (++i < 5)
|
||||||
score_value = ft_strjoin(prefix, score_text);
|
{
|
||||||
free(score_text);
|
s_text = get_score_text(get_score_prefix(i), get_score_suffix(i),
|
||||||
if (!score_value)
|
s_val[i]);
|
||||||
return (NULL);
|
if (s_text)
|
||||||
if (!suffix)
|
draw_score_line(game->screen->mlx, &game->scoreboard->texts[i],
|
||||||
return (score_value);
|
s_text, (t_vec2_int){350,
|
||||||
score_complete = ft_strjoin(score_value, suffix);
|
game->screen->height / 2 - 150 + i * 50});
|
||||||
free(score_value);
|
}
|
||||||
return (score_complete);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void draw_score_line(mlx_t *mlx, mlx_image_t **img, char *text, t_vec2_int pos)
|
|
||||||
{
|
|
||||||
if (!text || *img != NULL)
|
|
||||||
return ;
|
|
||||||
*img = mlx_put_string(mlx, text, pos.x, pos.y);
|
|
||||||
free(text);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void draw_end_screen(t_game_manager *manager, t_menu *menu)
|
void draw_end_screen(t_game_manager *manager, t_menu *menu)
|
||||||
{
|
{
|
||||||
char *tiles_score;
|
|
||||||
char *battery_percentage;
|
|
||||||
char *collectibles_score;
|
|
||||||
char *enemies_score;
|
|
||||||
char *time_text;
|
|
||||||
t_game *game;
|
t_game *game;
|
||||||
|
|
||||||
if (!manager || !manager->game)
|
if (!manager || !manager->game)
|
||||||
@ -75,28 +73,8 @@ void draw_end_screen(t_game_manager *manager, t_menu *menu)
|
|||||||
menu_toggle(menu);
|
menu_toggle(menu);
|
||||||
count_scores(game);
|
count_scores(game);
|
||||||
}
|
}
|
||||||
menu->selector->instances[0].y = manager->game->screen->height / 2
|
menu->selector->instances[0].enabled = false;
|
||||||
+ menu->selected_option * 50;
|
draw_scoreboard(manager);
|
||||||
tiles_score = get_score_text("Discovered area: ", "%",
|
|
||||||
(double) game->scoreboard->tiles_visited / game->scoreboard->total_tiles * 100);
|
|
||||||
draw_score_line(game->screen->mlx, &game->scoreboard->tiles_text,
|
|
||||||
tiles_score, (t_vec2_int){350, game->screen->height / 2 - 150});
|
|
||||||
battery_percentage = get_score_text("Battery percentage: ",
|
|
||||||
"%", (double) game->player->battery * 100);
|
|
||||||
draw_score_line(game->screen->mlx, &game->scoreboard->battery_text,
|
|
||||||
battery_percentage, (t_vec2_int){350, game->screen->height / 2 - 100});
|
|
||||||
collectibles_score = get_score_text("Batteries found: ", NULL,
|
|
||||||
game->scoreboard->collectibles);
|
|
||||||
draw_score_line(game->screen->mlx, &game->scoreboard->collectibles_text,
|
|
||||||
collectibles_score, (t_vec2_int){350, game->screen->height / 2 - 50});
|
|
||||||
enemies_score = get_score_text("Enemies defeated: ", NULL,
|
|
||||||
game->scoreboard->enemies);
|
|
||||||
draw_score_line(game->screen->mlx, &game->scoreboard->enemies_text,
|
|
||||||
enemies_score, (t_vec2_int){350, game->screen->height / 2});
|
|
||||||
time_text = get_score_text("Play time: ", " seconds",
|
|
||||||
game->scoreboard->end_time - game->scoreboard->start_time);
|
|
||||||
draw_score_line(game->screen->mlx, &game->scoreboard->time_text,
|
|
||||||
time_text, (t_vec2_int){350, game->screen->height / 2 + 50});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void game_exit(struct s_menu_item *item, t_game_manager *manager)
|
static void game_exit(struct s_menu_item *item, t_game_manager *manager)
|
||||||
|
|||||||
79
src/menu/end_screen_utils.c
Normal file
79
src/menu/end_screen_utils.c
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* end_screen_utils.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2025/06/10 14:54:49 by qmennen #+# #+# */
|
||||||
|
/* Updated: 2025/06/10 15:30:18 by qmennen ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "game_menu.h"
|
||||||
|
|
||||||
|
char *get_score_prefix(int index)
|
||||||
|
{
|
||||||
|
const char *score_prefix[] = {
|
||||||
|
"Discovered area: ",
|
||||||
|
"Battery percentage: ",
|
||||||
|
"Batteries found: ",
|
||||||
|
"Enemies defeated: ",
|
||||||
|
"Play time: "
|
||||||
|
};
|
||||||
|
|
||||||
|
if (index < 0 || index >= 5)
|
||||||
|
return (NULL);
|
||||||
|
return ((char *)score_prefix[index]);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *get_score_suffix(int index)
|
||||||
|
{
|
||||||
|
const char *score_suffix[] = {
|
||||||
|
"%",
|
||||||
|
"%",
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
" seconds"
|
||||||
|
};
|
||||||
|
|
||||||
|
if (index < 0 || index >= 5)
|
||||||
|
return (NULL);
|
||||||
|
return ((char *)score_suffix[index]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw_score_line(
|
||||||
|
mlx_t *mlx, mlx_image_t **img, char *text, t_vec2_int pos
|
||||||
|
)
|
||||||
|
{
|
||||||
|
if (!text)
|
||||||
|
return ;
|
||||||
|
if (*img != NULL)
|
||||||
|
{
|
||||||
|
free(text);
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
printf("Drawing score line: %s at (%d, %d)\n", text, pos.x, pos.y);
|
||||||
|
*img = mlx_put_string(mlx, text, pos.x, pos.y);
|
||||||
|
free(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
char *get_score_text(char *prefix, char *suffix, int score)
|
||||||
|
{
|
||||||
|
char *score_text;
|
||||||
|
char *score_complete;
|
||||||
|
char *score_value;
|
||||||
|
|
||||||
|
score_text = ft_itoa(score);
|
||||||
|
if (!score_text)
|
||||||
|
return (NULL);
|
||||||
|
score_value = ft_strjoin(prefix, score_text);
|
||||||
|
free(score_text);
|
||||||
|
if (!score_value)
|
||||||
|
return (NULL);
|
||||||
|
if (!suffix)
|
||||||
|
return (score_value);
|
||||||
|
score_complete = ft_strjoin(score_value, suffix);
|
||||||
|
free(score_value);
|
||||||
|
return (score_complete);
|
||||||
|
}
|
||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/23 12:14:58 by whaffman #+# #+# */
|
/* Created: 2025/04/23 12:14:58 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/06/10 14:38:14 by qmennen ### ########.fr */
|
/* Updated: 2025/06/10 15:42:03 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -14,7 +14,8 @@
|
|||||||
|
|
||||||
int floodfill(t_map *map, int x, int y)
|
int floodfill(t_map *map, int x, int y)
|
||||||
{
|
{
|
||||||
if (!map || x < 0 || y < 0 || x >= (int) map->width || y >= (int) map->height)
|
if (!map || x < 0 || y < 0
|
||||||
|
|| x >= (int) map->width || y >= (int) map->height)
|
||||||
return (FAILURE);
|
return (FAILURE);
|
||||||
if (map->grid[y][x] == TILE_VOID)
|
if (map->grid[y][x] == TILE_VOID)
|
||||||
return (FAILURE);
|
return (FAILURE);
|
||||||
|
|||||||
@ -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/10 14:39:39 by qmennen ### ########.fr */
|
/* Updated: 2025/06/10 15:47:23 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -27,7 +27,6 @@ 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)
|
||||||
{
|
{
|
||||||
(void)map;
|
|
||||||
const char *config_tokens[] = {
|
const char *config_tokens[] = {
|
||||||
"NO", "SO", "WE", "EA", "D", "F", "C", "FT", "CT", "-c", "-s", "-e",
|
"NO", "SO", "WE", "EA", "D", "F", "C", "FT", "CT", "-c", "-s", "-e",
|
||||||
NULL
|
NULL
|
||||||
@ -39,6 +38,7 @@ t_token_handler handle_config_token(const char *token, t_map *map)
|
|||||||
};
|
};
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
(void)map;
|
||||||
i = 0;
|
i = 0;
|
||||||
while (config_tokens[i] != NULL)
|
while (config_tokens[i] != NULL)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -6,22 +6,13 @@
|
|||||||
/* 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/06/10 14:39:03 by qmennen ### ########.fr */
|
/* Updated: 2025/06/10 15:45:35 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "cub3d.h"
|
#include "cub3d.h"
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
t_vec2 parse_dir(int x, int y)
|
|
||||||
{
|
|
||||||
t_vec2 dir;
|
|
||||||
|
|
||||||
dir.x = (double)x;
|
|
||||||
dir.y = (double)y;
|
|
||||||
return (dir);
|
|
||||||
}
|
|
||||||
|
|
||||||
int parse_player(t_game *game, int y, int x, char c)
|
int parse_player(t_game *game, int y, int x, char c)
|
||||||
{
|
{
|
||||||
t_player *player;
|
t_player *player;
|
||||||
@ -35,13 +26,13 @@ int parse_player(t_game *game, int y, int x, char c)
|
|||||||
player->pos.x = ((double)x + 0.5f);
|
player->pos.x = ((double)x + 0.5f);
|
||||||
player->pos.y = ((double)y + 0.5f);
|
player->pos.y = ((double)y + 0.5f);
|
||||||
if (c == 'N')
|
if (c == 'N')
|
||||||
player->dir = parse_dir(0, -1);
|
player->dir = (t_vec2){0.0, -1.0};
|
||||||
else if (c == 'E')
|
else if (c == 'E')
|
||||||
player->dir = parse_dir(1, 0);
|
player->dir = (t_vec2){1.0, 0.0};
|
||||||
else if (c == 'S')
|
else if (c == 'S')
|
||||||
player->dir = parse_dir(0, 1);
|
player->dir = (t_vec2){0.0, 1.0};
|
||||||
else if (c == 'W')
|
else if (c == 'W')
|
||||||
player->dir = parse_dir(-1, 0);
|
player->dir = (t_vec2){-1.0, 0.0};
|
||||||
player->camera = rot(player->dir, 0.5f * M_PI);
|
player->camera = rot(player->dir, 0.5f * M_PI);
|
||||||
return (SUCCESS);
|
return (SUCCESS);
|
||||||
}
|
}
|
||||||
@ -74,22 +65,6 @@ int parse_map_line(char **lines, t_game *game, int y)
|
|||||||
return (SUCCESS);
|
return (SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
int count_sprites(char *line)
|
|
||||||
{
|
|
||||||
int count;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
count = 0;
|
|
||||||
i = 0;
|
|
||||||
while (line[i])
|
|
||||||
{
|
|
||||||
if (line[i] >= 'a' && line[i] <= 'z')
|
|
||||||
count++;
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
return (count);
|
|
||||||
}
|
|
||||||
|
|
||||||
int prepare_map(char **lines, t_game *game)
|
int prepare_map(char **lines, t_game *game)
|
||||||
{
|
{
|
||||||
int y;
|
int y;
|
||||||
@ -118,34 +93,6 @@ int prepare_map(char **lines, t_game *game)
|
|||||||
return (SUCCESS);
|
return (SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
int parse_map_line_sprites(char *line, t_game *game, int y)
|
|
||||||
{
|
|
||||||
int x;
|
|
||||||
t_map *map;
|
|
||||||
t_sprite_lib *sprite_lib;
|
|
||||||
|
|
||||||
map = game->map;
|
|
||||||
sprite_lib = map->sprite_lib;
|
|
||||||
x = 0;
|
|
||||||
while (line[x])
|
|
||||||
{
|
|
||||||
if (line[x] >= 'a' && line[x] <= 'z')
|
|
||||||
{
|
|
||||||
if (sprite_lib[line[x] - 'a'].texture == NULL)
|
|
||||||
{
|
|
||||||
ft_putstr_fd("Error: Undefined sprite symbol\n", 2);
|
|
||||||
return (FAILURE);
|
|
||||||
}
|
|
||||||
map->sprites[map->n_sprites] = make_sprite(
|
|
||||||
&sprite_lib[line[x] - 'a'],
|
|
||||||
(double)x + 0.5f, (double)y + 0.5f);
|
|
||||||
map->n_sprites++;
|
|
||||||
}
|
|
||||||
x++;
|
|
||||||
}
|
|
||||||
return (SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
int parse_map(char **lines, t_game *game)
|
int parse_map(char **lines, t_game *game)
|
||||||
{
|
{
|
||||||
unsigned int y;
|
unsigned int y;
|
||||||
|
|||||||
57
src/parser/parse_map_sprites.c
Normal file
57
src/parser/parse_map_sprites.c
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
/* ************************************************************************** */
|
||||||
|
/* */
|
||||||
|
/* ::: :::::::: */
|
||||||
|
/* parse_map_sprites.c :+: :+: :+: */
|
||||||
|
/* +:+ +:+ +:+ */
|
||||||
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
|
/* +#+#+#+#+#+ +#+ */
|
||||||
|
/* Created: 2025/06/10 15:45:12 by qmennen #+# #+# */
|
||||||
|
/* Updated: 2025/06/10 15:47:07 by qmennen ### ########.fr */
|
||||||
|
/* */
|
||||||
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
#include "cub3d.h"
|
||||||
|
|
||||||
|
int count_sprites(char *line)
|
||||||
|
{
|
||||||
|
int count;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
count = 0;
|
||||||
|
i = 0;
|
||||||
|
while (line[i])
|
||||||
|
{
|
||||||
|
if (line[i] >= 'a' && line[i] <= 'z')
|
||||||
|
count++;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return (count);
|
||||||
|
}
|
||||||
|
|
||||||
|
int parse_map_line_sprites(char *line, t_game *game, int y)
|
||||||
|
{
|
||||||
|
int x;
|
||||||
|
t_map *map;
|
||||||
|
t_sprite_lib *sprite_lib;
|
||||||
|
|
||||||
|
map = game->map;
|
||||||
|
sprite_lib = map->sprite_lib;
|
||||||
|
x = 0;
|
||||||
|
while (line[x])
|
||||||
|
{
|
||||||
|
if (line[x] >= 'a' && line[x] <= 'z')
|
||||||
|
{
|
||||||
|
if (sprite_lib[line[x] - 'a'].texture == NULL)
|
||||||
|
{
|
||||||
|
ft_putstr_fd("Error: Undefined sprite symbol\n", 2);
|
||||||
|
return (FAILURE);
|
||||||
|
}
|
||||||
|
map->sprites[map->n_sprites] = make_sprite(
|
||||||
|
&sprite_lib[line[x] - 'a'],
|
||||||
|
(double)x + 0.5f, (double)y + 0.5f);
|
||||||
|
map->n_sprites++;
|
||||||
|
}
|
||||||
|
x++;
|
||||||
|
}
|
||||||
|
return (SUCCESS);
|
||||||
|
}
|
||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/23 12:11:12 by whaffman #+# #+# */
|
/* Created: 2025/04/23 12:11:12 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/06/10 14:40:11 by qmennen ### ########.fr */
|
/* Updated: 2025/06/10 15:47:33 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
void print_map(t_map *map)
|
void print_map(t_map *map)
|
||||||
{
|
{
|
||||||
const int chars[] = {'X', ' ', '.', '#', 'P'};
|
const int chars[] = {'X', ' ', '.', '#', 'P'};
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
unsigned int j;
|
unsigned int j;
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@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/06/10 14:35:17 by qmennen ### ########.fr */
|
/* Updated: 2025/06/10 15:40:24 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -67,14 +67,13 @@ int dda_main(t_vec2 ray_dir, t_vec2_int map_pos, t_vec2 *side_dist, t_map *map)
|
|||||||
side_dist->y += delta_dist.y * side;
|
side_dist->y += delta_dist.y * side;
|
||||||
map_pos.x += step.x * (1 - side);
|
map_pos.x += step.x * (1 - side);
|
||||||
map_pos.y += step.y * side;
|
map_pos.y += step.y * side;
|
||||||
if (map_pos.x < 0
|
if (map_pos.x < 0 || map_pos.x >= (int) map->width
|
||||||
|| map_pos.x >= (int) map->width
|
|| map_pos.y < 0 || map_pos.y >= (int) map->height)
|
||||||
|| map_pos.y < 0
|
break ;
|
||||||
|| map_pos.y >= (int) map->height)
|
|
||||||
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) - (map->grid[map_pos.y][map_pos.x] == TILE_DOOR);
|
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;
|
side = -1 * (1 - side) + side;
|
||||||
if (hit == -1)
|
if (hit == -1)
|
||||||
@ -99,9 +98,9 @@ double dda(t_render *render, t_vec2 ray_dir, t_vec2 pos, t_map *map)
|
|||||||
if (abs(side) == 2)
|
if (abs(side) == 2)
|
||||||
{
|
{
|
||||||
render->door = 1;
|
render->door = 1;
|
||||||
side /= 2;
|
side /= 2;
|
||||||
}
|
}
|
||||||
side = (side + 1)/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));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,50 +6,59 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/15 16:28:10 by qmennen #+# #+# */
|
/* Created: 2025/04/15 16:28:10 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/10 14:34:55 by qmennen ### ########.fr */
|
/* Updated: 2025/06/10 15:36:55 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "cub3d.h"
|
#include "cub3d.h"
|
||||||
|
|
||||||
void create_screenshot(t_game *game)
|
static void cut_image(t_screen *screen, mlx_image_t **canvas)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
unsigned int j;
|
unsigned int j;
|
||||||
int idx1;
|
unsigned int idx1;
|
||||||
int idx2;
|
unsigned int idx2;
|
||||||
mlx_image_t *screenshot;
|
|
||||||
|
|
||||||
if (!game->screenshots[game->screenshot_idx % MAX_SCREENSHOTS])
|
|
||||||
{
|
|
||||||
game->screenshots[game->screenshot_idx % MAX_SCREENSHOTS] = mlx_new_image(game->screen->mlx, game->screen->width / 3, game->screen->height / 3);
|
|
||||||
mlx_image_to_window(game->screen->mlx, game->screenshots[game->screenshot_idx % MAX_SCREENSHOTS], 1000, 250);
|
|
||||||
game->screenshots[game->screenshot_idx % MAX_SCREENSHOTS]->instances[0].enabled = false;
|
|
||||||
}
|
|
||||||
screenshot = game->screenshots[game->screenshot_idx % MAX_SCREENSHOTS];
|
|
||||||
if (!screenshot)
|
|
||||||
return ;
|
|
||||||
i = 0;
|
i = 0;
|
||||||
while (i < game->screen->height / 3)
|
while (i < screen->height / 3)
|
||||||
{
|
{
|
||||||
j = 0;
|
j = 0;
|
||||||
while (j < game->screen->width / 3)
|
while (j < screen->width / 3)
|
||||||
{
|
{
|
||||||
idx1 = (i * game->screen->width / 3 + j) * 4;
|
idx1 = (i * screen->width / 3 + j) * 4;
|
||||||
idx2 = (i * game->screen->img->width + j) * 12;
|
idx2 = (i * screen->img->width + j) * 12;
|
||||||
screenshot->pixels[idx1] = game->screen->img->pixels[idx2];
|
(*canvas)->pixels[idx1] = screen->img->pixels[idx2];
|
||||||
screenshot->pixels[idx1 + 1] = game->screen->img->pixels[idx2 + 1];
|
(*canvas)->pixels[idx1 + 1] = screen->img->pixels[idx2 + 1];
|
||||||
screenshot->pixels[idx1 + 2] = game->screen->img->pixels[idx2 + 2];
|
(*canvas)->pixels[idx1 + 2] = screen->img->pixels[idx2 + 2];
|
||||||
screenshot->pixels[idx1 + 3] = game->screen->img->pixels[idx2 + 3];
|
(*canvas)->pixels[idx1 + 3] = screen->img->pixels[idx2 + 3];
|
||||||
j++;
|
j++;
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
printf("Screenshot %d taken\n", game->screenshot_idx);
|
}
|
||||||
|
|
||||||
|
void create_screenshot(t_game *game)
|
||||||
|
{
|
||||||
|
mlx_image_t *screenshot;
|
||||||
|
|
||||||
|
if (!game->screenshots[game->screenshot_idx % MAX_SCREENSHOTS])
|
||||||
|
{
|
||||||
|
game->screenshots[game->screenshot_idx % MAX_SCREENSHOTS]
|
||||||
|
= mlx_new_image(game->screen->mlx, game->screen->width / 3,
|
||||||
|
game->screen->height / 3);
|
||||||
|
mlx_image_to_window(game->screen->mlx, game->screenshots[
|
||||||
|
game->screenshot_idx % MAX_SCREENSHOTS], 1000, 250);
|
||||||
|
game->screenshots[game->screenshot_idx % MAX_SCREENSHOTS]
|
||||||
|
->instances[0].enabled = false;
|
||||||
|
}
|
||||||
|
screenshot = game->screenshots[game->screenshot_idx % MAX_SCREENSHOTS];
|
||||||
|
if (!screenshot)
|
||||||
|
return ;
|
||||||
|
cut_image(game->screen, &screenshot);
|
||||||
game->screenshot_idx++;
|
game->screenshot_idx++;
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
void flash(t_game *game)
|
void flash(t_game *game)
|
||||||
{
|
{
|
||||||
mlx_image_t *img;
|
mlx_image_t *img;
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/05/14 13:06:39 by whaffman #+# #+# */
|
/* Created: 2025/05/14 13:06:39 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/06/10 14:45:54 by qmennen ### ########.fr */
|
/* Updated: 2025/06/10 15:41:41 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -26,21 +26,24 @@ static t_vec2 calc_floor_step(t_game *game,
|
|||||||
static void draw_floor_ceiling_pixel(t_game *game,
|
static void draw_floor_ceiling_pixel(t_game *game,
|
||||||
t_vec2_int coord, double row_dist, t_vec2 floor_pos)
|
t_vec2_int coord, double row_dist, t_vec2 floor_pos)
|
||||||
{
|
{
|
||||||
const t_vec2_int tex = vec2_to_int(mul(get_fraction(floor_pos), game->map->texture_floor->width));
|
const t_vec2_int tex = vec2_to_int(
|
||||||
|
mul(get_fraction(floor_pos), game->map->texture_floor->width));
|
||||||
int color;
|
int color;
|
||||||
|
|
||||||
if (game->map->texture_floor == NULL)
|
if (game->map->texture_floor == NULL)
|
||||||
color = game->map->floor_color << 8 | (int)(1.0 / row_dist * 255);
|
color = game->map->floor_color << 8 | (int)(1.0 / row_dist * 255);
|
||||||
else
|
else
|
||||||
color = get_texture_color(game->map->texture_floor,
|
color = get_texture_color(game->map->texture_floor,
|
||||||
(t_render){.perp_dist = row_dist, .sign = 0, .door = 0, .side = SIDE_DOOR, .wall_x = 0}, tex);
|
(t_render){.perp_dist = row_dist, .sign = 0, .door = 0,
|
||||||
|
.side = SIDE_DOOR, .wall_x = 0}, tex);
|
||||||
mlx_put_pixel(game->screen->img,
|
mlx_put_pixel(game->screen->img,
|
||||||
coord.x, coord.y, color);
|
coord.x, coord.y, color);
|
||||||
if (game->map->texture_ceiling == NULL)
|
if (game->map->texture_ceiling == NULL)
|
||||||
color = game->map->ceiling_color << 8 | (int)(1.0 / row_dist * 255);
|
color = game->map->ceiling_color << 8 | (int)(1.0 / row_dist * 255);
|
||||||
else
|
else
|
||||||
color = get_texture_color(game->map->texture_ceiling,
|
color = get_texture_color(game->map->texture_ceiling,
|
||||||
(t_render){.perp_dist = row_dist, .sign = 0, .door = 0, .side = SIDE_DOOR, .wall_x = 0}, tex);
|
(t_render){.perp_dist = row_dist, .sign = 0, .door = 0,
|
||||||
|
.side = SIDE_DOOR, .wall_x = 0}, tex);
|
||||||
mlx_put_pixel(game->screen->img,
|
mlx_put_pixel(game->screen->img,
|
||||||
coord.x, game->screen->height - coord.y - 1, color);
|
coord.x, game->screen->height - coord.y - 1, color);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/05/08 18:27:59 by qmennen #+# #+# */
|
/* Created: 2025/05/08 18:27:59 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/10 14:42:39 by qmennen ### ########.fr */
|
/* Updated: 2025/06/10 15:48:16 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -105,7 +105,7 @@ static const char *read_fragment_shader(void)
|
|||||||
return (close(fd), shader);
|
return (close(fd), shader);
|
||||||
}
|
}
|
||||||
|
|
||||||
int shader_init()
|
int shader_init(void)
|
||||||
{
|
{
|
||||||
vert_shader = read_vertex_shader();
|
vert_shader = read_vertex_shader();
|
||||||
if (!vert_shader)
|
if (!vert_shader)
|
||||||
|
|||||||
@ -1,35 +0,0 @@
|
|||||||
/* ************************************************************************** */
|
|
||||||
/* */
|
|
||||||
/* :::::::: */
|
|
||||||
/* errors.c :+: :+: */
|
|
||||||
/* +:+ */
|
|
||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
|
||||||
/* +#+ */
|
|
||||||
/* Created: 2025/04/15 15:40:14 by qmennen #+# #+# */
|
|
||||||
/* Updated: 2025/05/07 11:34:57 by whaffman ######## odam.nl */
|
|
||||||
/* */
|
|
||||||
/* ************************************************************************** */
|
|
||||||
|
|
||||||
#include "MLX42.h"
|
|
||||||
#include "cub3d.h"
|
|
||||||
|
|
||||||
const char *last_error(void)
|
|
||||||
{
|
|
||||||
if (mlx_errno > 0)
|
|
||||||
return (mlx_strerror(mlx_errno));
|
|
||||||
else if (errno > 0)
|
|
||||||
return (strerror(errno));
|
|
||||||
else
|
|
||||||
return (NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
void game_error(t_game *game, const char *msg)
|
|
||||||
{
|
|
||||||
const char *last_err = last_error();
|
|
||||||
|
|
||||||
if (msg == NULL && last_err)
|
|
||||||
printf(RED"%s\n"RESET, last_err);
|
|
||||||
else
|
|
||||||
printf(RED"%s\n"RESET, msg);
|
|
||||||
game_terminate(game);
|
|
||||||
}
|
|
||||||
@ -1,12 +1,12 @@
|
|||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
/* */
|
/* */
|
||||||
/* :::::::: */
|
/* ::: :::::::: */
|
||||||
/* hooks.c :+: :+: */
|
/* hooks.c :+: :+: :+: */
|
||||||
/* +:+ */
|
/* +:+ +:+ +:+ */
|
||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/04/15 17:51:26 by qmennen #+# #+# */
|
/* Created: 2025/04/15 17:51:26 by qmennen #+# #+# */
|
||||||
/* Updated: 2025/06/04 16:48:57 by whaffman ######## odam.nl */
|
/* Updated: 2025/06/10 15:48:10 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ void keyhandle(mlx_key_data_t keydata, void *param)
|
|||||||
game_manager_destroy(manager);
|
game_manager_destroy(manager);
|
||||||
}
|
}
|
||||||
|
|
||||||
void handle_mouse(t_game *game)
|
void handle_mouse(t_game *game)
|
||||||
{
|
{
|
||||||
t_vec2_int mouse_pos;
|
t_vec2_int mouse_pos;
|
||||||
mlx_t *mlx;
|
mlx_t *mlx;
|
||||||
@ -31,4 +31,4 @@ void handle_mouse(t_game *game)
|
|||||||
mlx_get_mouse_pos(mlx, &mouse_pos.x, &mouse_pos.y);
|
mlx_get_mouse_pos(mlx, &mouse_pos.x, &mouse_pos.y);
|
||||||
rotate(game->player, 0.1 * (mouse_pos.x - mlx->width / 2), mlx->delta_time);
|
rotate(game->player, 0.1 * (mouse_pos.x - mlx->width / 2), mlx->delta_time);
|
||||||
mlx_set_mouse_pos(mlx, mlx->width / 2, mlx->height / 2);
|
mlx_set_mouse_pos(mlx, mlx->width / 2, mlx->height / 2);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2025/05/25 20:54:23 by whaffman #+# #+# */
|
/* Created: 2025/05/25 20:54:23 by whaffman #+# #+# */
|
||||||
/* Updated: 2025/06/10 14:40:40 by qmennen ### ########.fr */
|
/* Updated: 2025/06/10 15:47:55 by qmennen ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -67,9 +67,10 @@ void print_scores(t_game *game)
|
|||||||
void count_scores(t_game *game)
|
void count_scores(t_game *game)
|
||||||
{
|
{
|
||||||
t_scoreboard *scoreboard;
|
t_scoreboard *scoreboard;
|
||||||
|
|
||||||
scoreboard = game->scoreboard;
|
scoreboard = game->scoreboard;
|
||||||
scoreboard->tiles_visited = count_tiles(game->map, TILE_VISITED);
|
scoreboard->tiles_visited = count_tiles(game->map, TILE_VISITED);
|
||||||
scoreboard->total_tiles = count_tiles(game->map, TILE_EMPTY) + scoreboard->tiles_visited;
|
scoreboard->total_tiles = count_tiles(game->map, TILE_EMPTY)
|
||||||
|
+ scoreboard->tiles_visited;
|
||||||
scoreboard->collectibles = count_collected(game);
|
scoreboard->collectibles = count_collected(game);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user