Merge remote-tracking branch 'origin/quinten' into willem

This commit is contained in:
whaffman 2025-06-05 17:36:21 +02:00
commit a848815c49
4 changed files with 32 additions and 26 deletions

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/06/04 18:14:36 by qmennen ### ########.fr */ /* Updated: 2025/06/05 17:08:34 by qmennen ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -168,10 +168,13 @@ typedef struct s_scoreboard
int total_tiles; int total_tiles;
int collectibles; int collectibles;
int enemies; int enemies;
int start_time;
int end_time;
mlx_image_t *tiles_text; mlx_image_t *tiles_text;
mlx_image_t *collectibles_text; mlx_image_t *collectibles_text;
mlx_image_t *battery_text; mlx_image_t *battery_text;
mlx_image_t *enemies_text; mlx_image_t *enemies_text;
mlx_image_t *time_text;
} t_scoreboard; } t_scoreboard;
typedef struct s_game typedef struct s_game

View File

@ -1,12 +1,12 @@
/* ************************************************************************** */ /* ************************************************************************** */
/* */ /* */
/* :::::::: */ /* ::: :::::::: */
/* game.c :+: :+: */ /* game.c :+: :+: :+: */
/* +:+ */ /* +:+ +:+ +:+ */
/* 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/04 16:43:14 by whaffman ######## odam.nl */ /* Updated: 2025/06/05 17:09:48 by qmennen ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -35,6 +35,7 @@ void game_over(t_game_manager *manager)
game->screen->hud->instances[0].enabled = false; game->screen->hud->instances[0].enabled = false;
game->screen->minimap->instances[0].enabled = false; game->screen->minimap->instances[0].enabled = false;
game->screen->img->instances[0].enabled = false; game->screen->img->instances[0].enabled = false;
game->scoreboard->end_time = mlx_get_time();
manager->state = GAME_STATE_END_SCREEN; manager->state = GAME_STATE_END_SCREEN;
manager->active_menu = &manager->end_screen; manager->active_menu = &manager->end_screen;
set_uniforms(game); set_uniforms(game);

View File

@ -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/04 19:53:34 by qmennen ### ########.fr */ /* Updated: 2025/06/05 17:12:02 by qmennen ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -49,15 +49,12 @@ char *get_score_text(char *prefix, char *suffix, int score)
return (score_complete); return (score_complete);
} }
static mlx_image_t *draw_score_line(mlx_t *mlx, char *text, int x, int y) static void draw_score_line(mlx_t *mlx, mlx_image_t **img, char *text, t_vec2_int pos)
{ {
mlx_image_t *image; if (!text || *img != NULL)
return ;
if (!text) *img = mlx_put_string(mlx, text, pos.x, pos.y);
return (NULL);
image = mlx_put_string(mlx, text, x, y);
free(text); free(text);
return (image);
} }
void draw_end_screen(t_game_manager *manager, t_menu *menu) void draw_end_screen(t_game_manager *manager, t_menu *menu)
@ -66,6 +63,7 @@ void draw_end_screen(t_game_manager *manager, t_menu *menu)
char *battery_percentage; char *battery_percentage;
char *collectibles_score; char *collectibles_score;
char *enemies_score; char *enemies_score;
char *time_text;
t_game *game; t_game *game;
if (!manager || !manager->game) if (!manager || !manager->game)
@ -81,21 +79,24 @@ void draw_end_screen(t_game_manager *manager, t_menu *menu)
+ menu->selected_option * 50; + menu->selected_option * 50;
tiles_score = get_score_text("Discovered area: ", "%", tiles_score = get_score_text("Discovered area: ", "%",
(double) game->scoreboard->tiles_visited / game->scoreboard->total_tiles * 100); (double) game->scoreboard->tiles_visited / game->scoreboard->total_tiles * 100);
if (! game->scoreboard->tiles_text) draw_score_line(game->screen->mlx, &game->scoreboard->tiles_text,
game->scoreboard->tiles_text = draw_score_line(game->screen->mlx, tiles_score, (t_vec2_int){350, game->screen->height / 2 - 150});
tiles_score, 100, game->screen->height / 2 - 50);
battery_percentage = get_score_text("Battery percentage: ", battery_percentage = get_score_text("Battery percentage: ",
"%", (double) game->player->battery * 100); "%", (double) game->player->battery * 100);
game->scoreboard->battery_text = draw_score_line(game->screen->mlx, draw_score_line(game->screen->mlx, &game->scoreboard->battery_text,
battery_percentage, 100, game->screen->height / 2); battery_percentage, (t_vec2_int){350, game->screen->height / 2 - 100});
collectibles_score = get_score_text("Batteries found: ", NULL, collectibles_score = get_score_text("Batteries found: ", NULL,
game->scoreboard->collectibles); game->scoreboard->collectibles);
game->scoreboard->collectibles_text = draw_score_line(game->screen->mlx, draw_score_line(game->screen->mlx, &game->scoreboard->collectibles_text,
collectibles_score, 100, game->screen->height / 2 + 50); collectibles_score, (t_vec2_int){350, game->screen->height / 2 - 50});
enemies_score = get_score_text("Enemies defeated: ", NULL, enemies_score = get_score_text("Enemies defeated: ", NULL,
game->scoreboard->enemies); game->scoreboard->enemies);
game->scoreboard->enemies_text = draw_score_line(game->screen->mlx, draw_score_line(game->screen->mlx, &game->scoreboard->enemies_text,
enemies_score, 100, game->screen->height / 2 + 100); 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)

View File

@ -6,7 +6,7 @@
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */ /* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2025/05/28 14:14:11 by qmennen #+# #+# */ /* Created: 2025/05/28 14:14:11 by qmennen #+# #+# */
/* Updated: 2025/06/04 19:53:06 by qmennen ### ########.fr */ /* Updated: 2025/06/05 17:09:25 by qmennen ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -28,6 +28,7 @@ static void game_start(struct s_menu_item *item, t_game_manager *manager)
screen = game->screen; screen = game->screen;
game->screen->minimap->instances[0].enabled = true; game->screen->minimap->instances[0].enabled = true;
game->screen->hud->instances[0].enabled = true; game->screen->hud->instances[0].enabled = true;
game->scoreboard->start_time = mlx_get_time();
menu_toggle(*(manager->active_menu), screen); menu_toggle(*(manager->active_menu), screen);
manager->state = GAME_STATE_PLAYING; manager->state = GAME_STATE_PLAYING;
} }