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 (); } } }
static void _game_events() { glfwPollEvents(); if (glfwWindowShouldClose(game_window)) game_quit(); }
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 }
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; }
int main() { t_game *game; game = game_create(); game_loop(game); game_quit(game); return (0); }
// 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; }
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; }
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; }
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; }
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; } } }