Esempio n. 1
0
int main()
{
    int level;

    puts("Enter a negative integer to exit.");
    for (;;)
    {
        printf("Enter level: ");
        if (scanf("%d", &level) != 1)
        {
            puts("Please try again.");
            flush_stdin();
        }
        else if (level < 0)
        {
            puts("Goodbye!");
            break;
        }
        else
        {
            run_level(level);
            flush_stdin();
        }
    }

    return 0;
}
Esempio n. 2
0
void game_loop(void)
{
 int playing = 1;
 
 counter = 0;

 do
 {
  if (player[0].link_toggle_delay > 0)
    player[0].link_toggle_delay --;
  if (player[1].link_toggle_delay > 0)
    player[1].link_toggle_delay --;

  reset_lights();  
  get_input();
  enact_commands();
  run_actors();
  run_bullets(); // should be between actors and enemies for orbitals to work
  arena.waver_on_level = 0;
  run_clouds();
//  run_stars();
  run_enemies();
  run_pickups();
  play_beats();
  if (counter % 35 == 0)
   run_level();
  if (arena.game_over > 0)
  {
   arena.game_over --;
   if (arena.game_over == 1)
   {
    playing = 0;
    kill_gameover_loop();
   } 
   if (arena.game_over == 120)
    play_gameover_loop(1000);
  } else
   {
    if (arena.new_level_sign > 0)
     arena.new_level_sign --;
    if (arena.time_left > 0)
    {
     if (game.type != GAME_DUEL
       || (game.duel_mode != DUEL_10_POINTS && game.duel_mode != DUEL_30_POINTS))
     arena.time_left --;
     if (game.type == GAME_TIME_ATTACK || game.type == GAME_TIME_ATTACK_COOP)
      game.ta_total_time ++;
    }
      else
      {
       if (game.type == GAME_TIME_ATTACK || game.type == GAME_TIME_ATTACK_COOP)
       {
         arena.game_over = 132;
         hurt_actor(0, 0, 100000);
         hurt_actor(1, 0, 100000);
         // it's okay to call hurt_actor on non-existent actors.
       }
       if (game.type == GAME_DUEL)
       {
        if (arena.game_over == 0)
        {
         arena.game_over = 132;
         game.duel_winner = -1;
         if (player[0].duel_score > player[1].duel_score)
          game.duel_winner = 0;
         if (player[1].duel_score > player[0].duel_score)
          game.duel_winner = 1;
        }
       }
        else
        {
         if (arena.level_finished == 1)
         {
          if (arena.level == 15)
          {
           arena.level = 16;
//           play_gameover_loop(2200);
//           play_wavf(NWAV_SWARBLE, 1500);
           playing = 0;
           break;
          }
          init_level();
          if (actor[0].in_play == 1)
           actor_new_level(0);
          if (actor[1].in_play == 1)
           actor_new_level(1);
          ticked = 0;
         }
         else
         {
          if (arena.hostile == 0)
          {
           make_arena_hostile();
          }
           else
            {
             if (arena.hostile < 10000)
              arena.hostile ++;
             run_hostile_level();
            }
         }
        }
      }
/*    if (arena.time_left == 334)
    {
     send_message(0, "Hurry} Up}!", STYLE_HURRY);
     send_message(1, "Hurry} Up}!", STYLE_HURRY);
    }*/
    if (arena.time_left == 330 && (game.type != GAME_DUEL
       || (game.duel_mode != DUEL_10_POINTS && game.duel_mode != DUEL_30_POINTS)))
     play_wavf(NWAV_ALARM, 900);
    
    if (arena.hostile == 10 || arena.hostile == 40 || arena.hostile == 70)
     play_wavf(NWAV_ALARM, 700);

     
   }
   
  if (ticked == 0)
  {
   run_display();
   framecounter++;
  }
  
  init_effects();

  slacktime = 0;
  
  do
  {
   slacktime ++;
  } while(ticked == 0);
  ticked --;

  counter ++;
  
  if (counter % 32 == 0)
  {
   long_slacktime_store = long_slacktime;
   long_slacktime = 0;
  } 
   
   long_slacktime += slacktime / 100;
  

  if (key [KEY_ESC])
   quit_query();
  
 } while(playing == 1);

}
Esempio n. 3
0
void game_loop(void)
{
 int playing = 1;
 
 counter = 0;

 do
 {
  if (player[0].link_toggle_delay > 0)
    player[0].link_toggle_delay --;
  if (player[1].link_toggle_delay > 0)
    player[1].link_toggle_delay --;

    
  get_input();
  enact_commands();
  run_actors();
  run_bullets(); // should be between actors and enemies for orbitals to work
  run_clouds();
  run_enemies();
  run_pickups();
  play_ambience();
  if (counter % 35 == 0)
   run_level();
  if (arena.game_over > 0)
  {
   arena.game_over --;
   if (arena.game_over == 1)
    playing = 0;
   if (arena.game_over == 120)
    play_sound(WAV_GAME_OVER);
  } else
   {
    if (arena.time_left > 0)
    {
     if (game.type != GAME_DUEL
       || (game.duel_mode != DUEL_10_POINTS && game.duel_mode != DUEL_30_POINTS))
     arena.time_left --;
    }
      else
      {
       if (game.type == GAME_DUEL)
       {
        if (arena.game_over == 0)
        {
         arena.game_over = 132;
         game.duel_winner = -1;
         if (player[0].duel_score > player[1].duel_score)
          game.duel_winner = 0;
         if (player[1].duel_score > player[0].duel_score)
          game.duel_winner = 1;
        }
       }
        else
        {
         if (arena.level_finished == 1)
         {
          if (arena.level == 16)
          {
           arena.level = 17;
           play_soundf(WAV_LEVEL_END, 1500);
           playing = 0;
           break;
          }
          init_level();
          if (actor[0].in_play == 1)
           actor_new_level(0);
          if (actor[1].in_play == 1)
           actor_new_level(1);
          ticked = 0;
         }
         else
         {
          if (arena.hostile == 0)
          {
           make_arena_hostile();
          }
           else
            {
             if (arena.hostile < 10000)
              arena.hostile ++;
             run_hostile_level();
            }
         }
        }
      }
/*    if (arena.time_left == 334)
    {
     send_message(0, "Hurry} Up}!", STYLE_HURRY);
     send_message(1, "Hurry} Up}!", STYLE_HURRY);
    }*/
    if (arena.time_left == 330 && (game.type != GAME_DUEL
       || (game.duel_mode != DUEL_10_POINTS && game.duel_mode != DUEL_30_POINTS)))
     play_soundf(WAV_ALARM, 800);
    
    if (arena.hostile == 10 || arena.hostile == 40 || arena.hostile == 70)
     play_sound(WAV_ALARM);

     
   }
   
  if (ticked == 0)
  {
   run_display();
//   framecounter++;
  }

  slacktime = 0;
  
  do
  {
   slacktime ++;
  } while(ticked == 0);
  ticked --;

  counter ++;

  if (key [KEY_ESC])
   quit_query();
  
 } while(playing == 1);

}
Esempio n. 4
0
void
GameManager::start_level(World* world, const std::string& level_filename)
{
  run_level(world, level_filename);
}
Esempio n. 5
0
void
GameManager::start_level(std::unique_ptr<World> world, const std::string& level_filename)
{
  m_world = std::move(world);
  run_level(m_world.get(), level_filename);
}