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> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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 collectibles;
int enemies;
int start_time;
int end_time;
mlx_image_t *tiles_text;
mlx_image_t *collectibles_text;
mlx_image_t *battery_text;
mlx_image_t *enemies_text;
mlx_image_t *time_text;
} t_scoreboard;
typedef struct s_game

View File

@ -1,12 +1,12 @@
/* ************************************************************************** */
/* */
/* :::::::: */
/* game.c :+: :+: */
/* +:+ */
/* By: qmennen <qmennen@student.codam.nl> +#+ */
/* +#+ */
/* Created: 2025/04/15 15:46:08 by qmennen #+# #+# */
/* Updated: 2025/06/04 16:43:14 by whaffman ######## odam.nl */
/* ::: :::::::: */
/* game.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/04/15 15:46:08 by qmennen #+# #+# */
/* 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->minimap->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->active_menu = &manager->end_screen;
set_uniforms(game);

View File

@ -6,7 +6,7 @@
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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);
}
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)
return (NULL);
image = mlx_put_string(mlx, text, x, y);
if (!text || *img != NULL)
return ;
*img = mlx_put_string(mlx, text, pos.x, pos.y);
free(text);
return (image);
}
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 *collectibles_score;
char *enemies_score;
char *time_text;
t_game *game;
if (!manager || !manager->game)
@ -81,21 +79,24 @@ void draw_end_screen(t_game_manager *manager, t_menu *menu)
+ menu->selected_option * 50;
tiles_score = get_score_text("Discovered area: ", "%",
(double) game->scoreboard->tiles_visited / game->scoreboard->total_tiles * 100);
if (! game->scoreboard->tiles_text)
game->scoreboard->tiles_text = draw_score_line(game->screen->mlx,
tiles_score, 100, game->screen->height / 2 - 50);
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);
game->scoreboard->battery_text = draw_score_line(game->screen->mlx,
battery_percentage, 100, game->screen->height / 2);
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);
game->scoreboard->collectibles_text = draw_score_line(game->screen->mlx,
collectibles_score, 100, game->screen->height / 2 + 50);
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);
game->scoreboard->enemies_text = draw_score_line(game->screen->mlx,
enemies_score, 100, game->screen->height / 2 + 100);
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)

View File

@ -6,7 +6,7 @@
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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;
game->screen->minimap->instances[0].enabled = true;
game->screen->hud->instances[0].enabled = true;
game->scoreboard->start_time = mlx_get_time();
menu_toggle(*(manager->active_menu), screen);
manager->state = GAME_STATE_PLAYING;
}