Example #1
0
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);
}
Example #2
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;
  }
}