/* ************************************************************************** */ /* */ /* :::::::: */ /* game_manager.c :+: :+: */ /* +:+ */ /* By: qmennen +#+ */ /* +#+ */ /* Created: 2025/05/27 13:48:18 by qmennen #+# #+# */ /* Updated: 2025/06/10 20:24:00 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ #include "game_manager.h" t_game_manager *game_manager_create(t_game *game, int state) { t_game_manager *manager; manager = malloc(sizeof(t_game_manager)); if (!manager) return (NULL); manager->game = game; manager->menu = NULL; manager->state = state; game->manager = manager; 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); else if (manager->state == GAME_STATE_END_SCREEN) draw_end_screen(manager, manager->end_screen); } 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); mlx_close_window(manager->game->screen->mlx); mlx_terminate(manager->game->screen->mlx); if (manager->game) game_free(manager->game); free(manager); exit(EXIT_SUCCESS); }