int main() { _delay_ms(100); gc_init(); sp_init(); i2c_init(); as_init(); motor_init(); boom_init(); analog_init(); sei(); printPgmString(PSTR("Shuttleboom!\n\r")); for(;;){sp_process(); sleep_mode();} return(0); }
void missile_frag(struct missile *m) { const float theta = 360.0/m->fragments; const float delta = 0.015 * m->fragments / 4.0 * world_scale; for (int i = 0; i < m->fragments; i++) { struct bullet *b = malloc(sizeof(*b)); m->vel = (struct xy_d){0.0, 0.0}; bullet_init(b, (void*)m, 0.0); b->pos.x += vector_x(delta, theta * i); b->pos.y += vector_y(delta, theta * i); float x_angl = i*theta + theta*drand()/2; float y_angl = i*theta + theta*drand()/2; b->vel.x = vector_x(FRAGMENT_SPEED*world_scale, x_angl); b->vel.y = vector_y(FRAGMENT_SPEED*world_scale, y_angl); b->type = OBJ_GENERIC; spawn_phys_obj((void*)b); draw_buffer_push((void*)b); } } void explode(struct missile *m) { void *v; if (m->explosion_type == BOOM) { struct boom *b = malloc(sizeof(*b)); v = b; boom_init(b, m->pos, m->rad, m->rad, 500); } else { struct mc_explosion *b = malloc(sizeof(*b)); v = b; mc_explosion_init(b, m->pos, 0.0, m->rad, 800); } spawn_phys_obj(v); draw_buffer_push(v); particle_spawn_cloud(m->pos, 50 + m->rad * 10, 500, 10.0); }