int main(void) { int w; int i; assert((win = bunny_start(800, 600, false, "The Lapins Noirs")) != NULL); assert((pic[0] = bunny_new_picture(NORM(800, 600), NORM(800, 600))) != NULL); assert((pic[1] = bunny_new_picture(NORM(800, 600), NORM(800, 600))) != NULL); assert((bunny = bunny_load_picture("bigbunny.png")) != NULL); bunny->origin.x = bunny->buffer.width / 2; bunny->origin.y = bunny->buffer.height / 2; pic[0]->origin.x = pic[0]->buffer.width / 2; pic[0]->origin.y = pic[0]->buffer.height / 2; pic[1]->origin.x = pic[1]->buffer.width / 2; pic[1]->origin.y = pic[1]->buffer.height / 2; bunny_clear(&pic[0]->buffer, 0); bunny_clear(&pic[1]->buffer, 0); for (i = 0, w = 50; i < pic[0]->buffer.width; i += 100) { square(pic[0], i, 0, w, pic[0]->buffer.height, ALPHA(150, rand())); square(pic[1], i, 0, w, pic[1]->buffer.height, ALPHA(150, rand())); } reset(pic[0]); reset(pic[1]); bunny_set_loop_main_function(loop); bunny_set_key_response(key); bunny_loop(win, 50, NULL); bunny_delete_clipable(pic[0]); bunny_delete_clipable(pic[1]); bunny_stop(win); return (EXIT_FAILURE); }
t_bunny_response loop(void *data) { (void)data; bunny_clear(&win->buffer, (inc += 10) | BLACK); bunny_display(win); return (GO_ON); }
void kala_afterslam(t_kala *data) { if (data->intro.state == 4) { bunny_fill(&data->shard->buffer, data->intro.black.full); bunny_clear(&data->win->buffer, 0xFF000000); data->intro.blit.x = (data->win->buffer.width / 2 - data->shard->buffer.width / 2) + ((rand() % (int)(data->intro.slam + 1)) - data->intro.slam / 2) + data->shard->origin.x; data->intro.blit.y = (data->win->buffer.height / 2 - data->shard->buffer.height / 2) + ((rand() % (int)(data->intro.slam + 1)) - data->intro.slam / 2) + data->shard->origin.y; data->shard->rotation = (rand() % (int)((data->intro.slam / 5) + 1) - data->intro.slam / 10); bunny_blit(&data->win->buffer, data->shard, &data->intro.blit); kala_afterslam_second(data); if (data->intro.black.argb[3] >= 50) { data->intro.state = 5; data->intro.black.full = 0x00000000; } } }
int main(void) { t_bunny_loading_screen loading_screen; t_bunny_window *win; int i; memset(&loading_screen, 0, sizeof(loading_screen)); for (i = 0; i < 10; ++i) { char *s; asprintf(&s, "./picture%d.png", i); gl_pictures_to_load[i].file = s; gl_pictures_to_load[i].target = (void**)&gl_pictures[i]; asprintf(&s, "./snd%d.wav", i); gl_effects_to_load[i].file = s; gl_effects_to_load[i].target = (void**)&gl_effects[i]; } loading_screen.head.main_structure = &loading_screen; loading_screen.head.subcontext.display = &display; loading_screen.head.subcontext.async_computation_response = &async; assert(loading_screen.head.screen = (t_bunny_buffer*)(win = bunny_start(400, 300, false, "Loading screen"))); assert(bunny_init_loading_context(&loading_screen)); assert(bunny_add_to_ressource_list (loading_screen.pictures, &gl_pictures_to_load[0], NBRCELL(gl_pictures)) ); assert(bunny_add_to_ressource_list (loading_screen.effects, &gl_effects_to_load[0], NBRCELL(gl_effects)) ); bunny_clear(loading_screen.head.screen, BLACK); bunny_display((t_bunny_window*)loading_screen.head.screen); bunny_set_context(&gl_bunny_loading_context); bunny_loop(win, 25, &loading_screen); bunny_clear_all_loaded_ressources(&loading_screen); bunny_stop((t_bunny_window*)loading_screen.head.screen); for (i = 0; i < 10; ++i) { free((char*)gl_pictures_to_load[i].file); free((char*)gl_effects_to_load[i].file); } return (EXIT_SUCCESS); }
t_bunny_response loop(void *data) { t_bunny_window *win = data; t_bunny_position screen; t_bunny_position tmp; screen = bunny_get_screen_size(); tmp.x = rand() % screen.x * 0.2 + 50; tmp.y = rand() % screen.y * 0.2 + 50; bunny_resize_window(win, tmp); tmp.x = rand() % (screen.x - win->buffer.width); tmp.y = rand() % (screen.y - win->buffer.height); bunny_move_window(win, tmp); bunny_clear(&win->buffer, rand() | BLACK); bunny_display(win); return (GO_ON); }
t_bunny_response display(void *data) { t_bunny_loading_screen *ld = (t_bunny_loading_screen*)data; t_bunny_position pos[2]; unsigned int col[2] = {WHITE, PINK2}; int limit; int i; bunny_clear(ld->head.screen, BLACK); limit = ld->percent_completion * ld->head.screen->width; for (i = 0; i < limit; ++i) { pos[0].x = pos[1].x = i; pos[0].y = 0; pos[1].y = ld->head.screen->height; bunny_set_line(ld->head.screen, &pos[0], &col[0]); } bunny_display((t_bunny_window*)ld->head.screen); return (GO_ON); }
void kala_slam(t_kala *data) { if (data->intro.state == 3) { bunny_clear(&data->win->buffer, 0xFF000000); data->intro.blit.x = (data->win->buffer.width / 2 - data->shard->buffer.width / 2) + ((rand() % (int)(data->intro.slam + 1)) - data->intro.slam / 2) + data->shard->origin.x; data->intro.blit.y = (data->win->buffer.height / 2 - data->shard->buffer.height / 2) + ((rand() % (int)(data->intro.slam + 1)) - data->intro.slam / 2) + data->shard->origin.y; data->shard->rotation = (rand() % (int)((data->intro.slam / 5) + 1) - data->intro.slam / 10); kala_slam_second(data); if (data->intro.slam <= 0.0) { data->intro.state = 4; data->intro.slam = 0.0; data->intro.black.full = 0; } } }