int aff_all(Map *map) { SDL_Event event; Case *tab = get_tab(map->map); dijkstra(tab, map->pacman.pos.x/IMG, map->pacman.pos.y/IMG, map->enemy.pos.x/IMG, map->enemy.pos.y/IMG, map->map); while (1) { SDL_PollEvent(&event); if (Update(map, event)) return (1); player_Update(map); aff_map(map); aff_number(map, tab); aff_path(map, tab); aff_player(map); aff_ghost(map); SDL_Flip(map->ecran); } return (0); }
void Update (GameState gameState) { /*Update - Updates the games state via gameObjects.*/ key key; if(gameState->gamePhase == game && gameState->gameStartTime == -1){ gameState->gameStartTime = SDL_GetTicks(); } switch (gameState->gamePhase){ case titleScreen: OBJECTS->titleMenu->active = true; menu_Update(OBJECTS->titleMenu, OBJECTS->code); if(OBJECTS->titleMenu->active == false){ gameState->gamePhase = game; } DrawMenu(OBJECTS->gameDisplay, OBJECTS->titleMenu, OBJECTS->code, OBJECTS->gameScore); break; case game: key = Get_Key(&OBJECTS->gameDisplay->playerFacing); if(key == PAUSE){ gameState->gamePhase = paused; } player_Update(OBJECTS->player, key, OBJECTS->entities->startPlatform); entity_Update(OBJECTS->entities, gameState->gameStartTime, SDL_GetTicks()); code_Update(OBJECTS->code, SDL_GetTicks()); display_ScoreUpdate(OBJECTS->gameScore, OBJECTS->player, OBJECTS->entities, OBJECTS->gameSounds, \ gameState->gameStartTime, OBJECTS->pauseMenu->menuTimeElapsed); display_Update(OBJECTS->gameDisplay, player_Get_Player_X(OBJECTS->player), \ player_Get_Player_Y(OBJECTS->player), player_Get_Player_Lives(OBJECTS->player), \ OBJECTS->entities, OBJECTS->gameScore); if(player_Get_Player_Lives(OBJECTS->player) < 0){ Mix_PlayChannel(-1, OBJECTS->gameSounds->death, 0); gameState->gamePhase = gameOver; } break; case paused: OBJECTS->pauseMenu->active = true; menu_Update(OBJECTS->pauseMenu, OBJECTS->code); if(OBJECTS->pauseMenu->active == false){ gameState->gamePhase = game; } DrawMenu(OBJECTS->gameDisplay, OBJECTS->pauseMenu, OBJECTS->code, OBJECTS->gameScore); break; case gameOver: display_RecordScore(OBJECTS->gameScore->scorePoints); SDL_Delay(3000); gameState->gamePhase = titleScreen; player_GameOverReset(OBJECTS->player); enitity_GameOverReset(OBJECTS->entities); free(OBJECTS->gameScore); OBJECTS->gameScore = display_ScoreInitialise(OBJECTS->gameDisplay); gameState->gameStartTime = -1; display_ResetBaseItems(OBJECTS->gameDisplay); break; } }