コード例 #1
0
ファイル: game.c プロジェクト: mefistotelis/swars
void
game_handle_sdl_events (void)
{
  const size_t max_events = 256;
  size_t event;
  SDL_Event ev;

  for (event = 0; event < max_events; event++)
    {
      if (SDL_PollEvent (&ev) == 0)
	break;

      switch (ev.type)
	{
	case SDL_MOUSEMOTION:
	case SDL_MOUSEBUTTONUP:
	case SDL_MOUSEBUTTONDOWN:
	  mouse_handle_event (&ev);
	  break;

	case SDL_KEYUP:
	case SDL_KEYDOWN:
	  keyboard_handle_event (&ev);
	  break;

	case SDL_QUIT:
	  game_quit ();
	}
    }
}
コード例 #2
0
ファイル: game.c プロジェクト: truongascii/cgame
static void _game_events()
{
    glfwPollEvents();

    if (glfwWindowShouldClose(game_window))
        game_quit();
}
コード例 #3
0
void Quit(int returnCode) {
	game_quit();
	log("\nIT'S OVER\n");
	fclose(the_log);											// close the log
    SDL_Quit();													// clean up the window
    exit(returnCode);											// and exit appropriately
}
コード例 #4
0
ファイル: ggzclient.c プロジェクト: ralight/ggz
static GGZHookReturn ggz_table_left(GGZRoomEvent id,
				    const void *event_data,
				    const void *user_data)
{
	const GGZTableLeaveEventData *data = event_data;
	char *message = g_strdup(_("Unknown reason"));;

	switch (data->reason) {
	case GGZ_LEAVE_BOOT:
		message = g_strdup_printf(_("You have been booted "
					    "from the table by %s."),
					  data->player);
		break;
	case GGZ_LEAVE_NORMAL:
		message = g_strdup(_("You have left the table."));
		break;
	case GGZ_LEAVE_GAMEOVER:
		message = g_strdup(_("The game is over."));
		break;
	case GGZ_LEAVE_GAMEERROR:
		message = g_strdup(_("There was an error with "
				     "the game server."));
		break;
	}
	chat_display_local(CHAT_LOCAL_NORMAL, NULL, message);
	g_free(message);

	game_quit();

	return GGZ_HOOK_OK;
}
コード例 #5
0
ファイル: main.c プロジェクト: paul-maxime/merreles
int		main()
{
  t_game	*game;

  game = game_create();
  game_loop(game);
  game_quit(game);
  return (0);
}
コード例 #6
0
ファイル: engine.c プロジェクト: BonsaiDen/Norum
// Engine ----------------------------------------------------------------------
// -----------------------------------------------------------------------------
int engine_create(const int width, const int height, const int scale, const int fps) {
    engine = (struct Engine*)malloc(sizeof(struct Engine));
    
    if (!engine_init(width, height, scale, fps)) {
        free(engine);
        return 1;
    }
    game_init();
    
    // Main Loop, o'rly?
    int render_start = 0, render_diff = 0, render_wait = 0;
    int fps_count = 0, fps_time = 0;
    while (engine->running) {
        render_start = SDL_GetTicks();
        
        engine_events();
        if (key_pressed(SDLK_p)) {
            engine_pause(!engine->paused);
        }
        if (!engine->paused) {
            game_update();
        }
        engine_clear_keys();
        engine_clear_mouse();
        game_render(engine->screen);
        SDL_Flip(engine->screen->bg);
        
        // Limit FPS
        render_diff = SDL_GetTicks() - render_start;
        if (render_diff > 0) {
            render_wait = engine->fps_wait - render_diff;
            if (render_wait > 0) {
                SDL_Delay(render_wait);
            }
            if (!engine->paused) {
                engine->time += SDL_GetTicks() - render_start;
            }
        }
        
        // Count FPS
        if (!engine->paused) {
            fps_count++;
            if (fps_count >= 10) {
                engine->fps_current = 1000 / ((engine->time - fps_time) / fps_count);
                fps_count = 0;
                fps_time = engine->time;
            }
        }
    }
    
    // Cleanup
    game_quit();
    engine_cleanup();
    return 0;
}
コード例 #7
0
ファイル: keyboard.c プロジェクト: spippolatore/swars
static bool
handle_custom_key_press (const SDL_KeyboardEvent *ev)
{
  if (ev->type != SDL_KEYDOWN)
    return false;

  if ((is_key_pressed (SDLK_LCTRL) || is_key_pressed (SDLK_RCTRL)))
    {
      if (ev->keysym.sym == SDLK_q)
	{
	  game_quit ();
	  return true;
	}
    }

  return false;
}
コード例 #8
0
ファイル: ggzclient.c プロジェクト: ralight/ggz
static GGZHookReturn ggz_table_join_fail(GGZRoomEvent id,
					 const void *event_data,
					 const void *user_data)
{
	gchar *msg;
	const char *event_message = event_data;

	msg = g_strdup_printf(_("Error joining table: %s"),
			      event_message);
	msgbox(msg, _("Error"),
	       MSGBOX_OKONLY, MSGBOX_STOP, MSGBOX_NORMAL);
	g_free(msg);

	game_quit();

	return GGZ_HOOK_OK;
}
コード例 #9
0
int main() {
  SDL_Event event;
  SDL_Window* window;
  t_game* game;
  int cont;

  window = create_window();
  game = game_init(window);
  for (cont = 1; cont;) {
    while (SDL_PollEvent(&event))
      if (event.type == SDL_QUIT)
        cont = 0;
      else if (event.type == SDL_KEYDOWN)
        event_keydown(event, game);
    if (cont)
      game_tick(game);
  }
  game_quit(game);
  return 0;
}
コード例 #10
0
ファイル: game.c プロジェクト: heisvoid/WarGS
static void
handle_events ()
{
  SDL_Event event;

  while (1 == SDL_PollEvent (&event))
    {
      switch (event.type)
        {
        case SDL_KEYDOWN:
        case SDL_KEYUP:
          if (keyboard_isr_is_installed)
            {
              keyboard_handle_event (&event.key);
            }
          break;
        case SDL_MOUSEBUTTONDOWN:
        case SDL_MOUSEBUTTONUP:
        case SDL_MOUSEMOTION:
          if (mouse_isr_is_installed)
            {
              mouse_handle_event (&event);
            }
          break;
        case SDL_QUIT:
          {
            enum
            {
              EXIT_STATUS = 10
            };

            exit_write (EXIT_STATUS);
            game_quit ();

            exit (EXIT_STATUS);
          }
        default:
          break;
        }
    }
}