int main(void){ space = space_init(SCREEN_W, SCREEN_H); SDL_Event evt; if (SDL_Init(SDL_INIT_VIDEO) != 0) { return -1; } screen = SDL_SetVideoMode( SCREEN_W, SCREEN_H, 24, SDL_HWSURFACE | SDL_DOUBLEBUF); if (screen == NULL) { return -1; } while(1) { while(SDL_PollEvent(&evt)) { if(evt.type == SDL_QUIT) { goto finish; } if (evt.type == SDL_KEYUP && evt.key.keysym.sym == SDLK_ESCAPE) { goto finish; } if (evt.type == SDL_MOUSEMOTION ) space_mouse_move(space, evt.motion.x, evt.motion.y); if (evt.type == SDL_MOUSEBUTTONDOWN) space_mouse_down(space); if (evt.type == SDL_MOUSEBUTTONUP ) space_mouse_up (space); } SDL_LockSurface(screen); SDL_FillRect(screen, NULL, 0x000080); space_update(space, 0.02); DrawImpl(space); SDL_FreeSurface(screen); SDL_Flip(screen); } finish: space_destroy(space); SDL_FreeSurface(screen); SDL_Quit(); return 0; }
void space_menu() { SDL_Event e; display_menu(); SDL_RenderPresent(get_renderer()); while (get_launcher() == &space_menu) { if (SDL_WaitEvent(&e)) { if (e.type == SDL_QUIT) { space_destroy(); set_launcher(NULL); break; } if (e.type == SDL_KEYDOWN) if (!process_input(&e.key.keysym.scancode, &item)) continue; display_menu(); SDL_RenderPresent(get_renderer()); } } }
int main(int argc, char *argv[]) { const char *backend_opts = "X11"; int opt; int pause_flag = 0; int particles = 160; while ((opt = getopt(argc, argv, "b:n:")) != -1) { switch (opt) { case 'b': backend_opts = optarg; break; case 'n': particles = atoi(optarg); break; default: fprintf(stderr, "Invalid paramter '%c'\n", opt); } } // GP_SetDebugLevel(10); signal(SIGINT, sighandler); signal(SIGSEGV, sighandler); signal(SIGBUS, sighandler); signal(SIGABRT, sighandler); init_backend(backend_opts); context = backend->context; black_pixel = GP_RGBToContextPixel(0x00, 0x00, 0x00, context); white_pixel = GP_RGBToContextPixel(0xff, 0xff, 0xff, context); GP_Fill(context, black_pixel); GP_BackendFlip(backend); struct space *space; space = space_create(particles, 10<<8, 10<<8, (context->w - 10)<<8, (context->h - 10)<<8); for (;;) { if (backend->Poll) GP_BackendPoll(backend); usleep(1000); /* Read and parse events */ GP_Event ev; while (GP_BackendGetEvent(backend, &ev)) { GP_EventDump(&ev); switch (ev.type) { case GP_EV_KEY: if (ev.code != GP_EV_KEY_DOWN) continue; switch (ev.val.key.key) { case GP_KEY_ESC: case GP_KEY_ENTER: case GP_KEY_Q: GP_BackendExit(backend); return 0; break; case GP_KEY_P: pause_flag = !pause_flag; break; case GP_KEY_G: space->gay = 1; break; case GP_KEY_T: space->gay = 0; break; } break; case GP_EV_SYS: switch(ev.code) { case GP_EV_SYS_QUIT: GP_BackendExit(backend); exit(0); break; case GP_EV_SYS_RESIZE: GP_BackendResizeAck(backend); space_destroy(space); space = space_create(particles, 10<<8, 10<<8, (context->w - 10)<<8, (context->h - 10)<<8); break; } break; } } if (!pause_flag) { space_time_tick(space, 1); space_draw_particles(context, space); GP_BackendFlip(backend); } } GP_BackendExit(backend); return 0; }
int main(int argc, char *argv[]) { const char *backend_opts = "X11"; int opt; int pause_flag = 0; int particles = 160; while ((opt = getopt(argc, argv, "b:n:")) != -1) { switch (opt) { case 'b': backend_opts = optarg; break; case 'n': particles = atoi(optarg); break; default: fprintf(stderr, "Invalid paramter '%c'\n", opt); } } signal(SIGINT, sighandler); signal(SIGSEGV, sighandler); signal(SIGBUS, sighandler); signal(SIGABRT, sighandler); init_backend(backend_opts); pixmap = backend->pixmap; black_pixel = gp_rgb_to_pixmap_pixel(0x00, 0x00, 0x00, pixmap); white_pixel = gp_rgb_to_pixmap_pixel(0xff, 0xff, 0xff, pixmap); gp_fill(pixmap, black_pixel); gp_backend_flip(backend); struct space *space; space = space_create(particles, 10<<8, 10<<8, (pixmap->w - 10)<<8, (pixmap->h - 10)<<8); for (;;) { if (backend->poll) gp_backend_poll(backend); usleep(1000); /* Read and parse events */ gp_event ev; while (gp_backend_get_event(backend, &ev)) { gp_event_dump(&ev); switch (ev.type) { case GP_EV_KEY: if (ev.code != GP_EV_KEY_DOWN) continue; switch (ev.val.key.key) { case GP_KEY_ESC: case GP_KEY_ENTER: case GP_KEY_Q: gp_backend_exit(backend); return 0; break; case GP_KEY_P: pause_flag = !pause_flag; break; case GP_KEY_G: space->gay = 1; break; case GP_KEY_T: space->gay = 0; break; } break; case GP_EV_SYS: switch(ev.code) { case GP_EV_SYS_QUIT: gp_backend_exit(backend); exit(0); break; case GP_EV_SYS_RESIZE: gp_backend_resize_ack(backend); space_destroy(space); space = space_create(particles, 10<<8, 10<<8, (pixmap->w - 10)<<8, (pixmap->h - 10)<<8); break; } break; } } if (!pause_flag) { space_time_tick(space, 1); space_draw_particles(pixmap, space); gp_backend_flip(backend); } } gp_backend_exit(backend); return 0; }