Пример #1
0
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);
}
Пример #2
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);
}