cub3d/src/manager/game_manager.c
Quinten Mennen 27550d497d merge
2025-06-03 14:59:06 +02:00

67 lines
2.0 KiB
C

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* game_manager.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: qmennen <qmennen@student.codam.nl> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2025/05/27 13:48:18 by qmennen #+# #+# */
/* Updated: 2025/06/03 14:55:46 by qmennen ### ########.fr */
/* */
/* ************************************************************************** */
#include "game_manager.h"
t_game_manager *game_manager_create(t_game *game)
{
t_game_manager *manager;
manager = malloc(sizeof(t_game_manager));
if (!manager)
return (NULL);
manager->game = game;
manager->menu = NULL;
manager->state = GAME_STATE_MENU;
return (manager);
}
void game_manager_display(t_game_manager *manager)
{
t_game *game;
if (!manager || !manager->game)
return ;
game = manager->game;
if (manager->state == GAME_STATE_MENU)
menu_display(*(manager->active_menu), game->screen);
else if (manager->state == GAME_STATE_PLAYING)
game_run(game);
}
void game_manager_update(void *param)
{
t_game_manager *manager;
manager = (t_game_manager *)param;
game_manager_handle_input(manager);
game_manager_display(manager);
keyboard_update(manager->game);
}
void game_manager_destroy(t_game_manager *manager)
{
if (!manager)
return ;
if (manager->menu)
menu_free(manager->menu, manager->game->screen);
if (manager->end_screen)
menu_free(manager->end_screen, manager->game->screen);
print_scores(manager->game);
if (manager->game)
{
game_free(manager->game);
}
free(manager);
exit(EXIT_SUCCESS);
}