Ejemplo n.º 1
0
void particle_simple_think(particle_t* self) {
  float tmp = self->color[0];
  self->color[0] = self->color[1];
  self->color[1] = self->color[2];
  self->color[2] = tmp;
  self->box = box_rotate(self->box, 2.5);
}
Ejemplo n.º 2
0
static void trail_action(particle_t *p){
	p->color[3] *= 0.93;
	p->color[2] *= 0.85;
	p->color[1] *= 0.5;
	p->altcolor[3] *= 0.9;
	p->altcolor[2] *= 0.7;
	p->altcolor[1] *= 0.5;
	p->param[0] = p->param[0] -1;
	p->box = box_rotate(p->box,random()%11 - 5);
	if(p->param[0] < 0 ){
		p->life = -1;
	}
	return;
}
Ejemplo n.º 3
0
box_t box_direct(box_t b, vec_t direction){
	return box_rotate(b, vec_angle(direction) - vec_angle(b.axis0) );
}
Ejemplo n.º 4
0
static void ship_action(particle_t*p){
#define MISSILE 0
#define SHIP_SPEED 350
#define SHIP_ACCEL 2000
#define SHIP_VSPEED 0
#define SHIP_HSPEED 1
	particle_t * missile = NULL;
	particle_t * trail = NULL;
	vec_t spread = vec_new(random()%100 - 50,random()%100 -50);
	int boost = 0;
	
	nprop_t vspeed = particle_get_nprop(p,SHIP_VSPEED);
	nprop_t hspeed = particle_get_nprop(p,SHIP_HSPEED);
	if(!key_pressed('y')){
	if(key_pressed('a')){
		if(nprop_get(hspeed) > 100 ){
			hspeed = nprop_set_hard(hspeed,0);
			boost = 1;
		}
		hspeed = nprop_set(hspeed,-SHIP_SPEED);
	}else if(key_pressed('d')){
		if(nprop_get(hspeed) < -100 ){
			hspeed = nprop_set_hard(hspeed,0);
			boost = 1;
		}
		hspeed = nprop_set(hspeed,SHIP_SPEED);
	}else{
		hspeed = nprop_set(hspeed,0);
	}
	if(key_pressed('w')){
		if(nprop_get(vspeed) < -100 ){
			vspeed = nprop_set_hard(vspeed,0);
			boost = 1;
		}
		vspeed = nprop_set(vspeed,SHIP_SPEED);
	}else if(key_pressed('s')){
		if(nprop_get(vspeed) > 100 ){
			vspeed = nprop_set_hard(vspeed,0);
			boost = 1;
		}
		vspeed = nprop_set(vspeed,-SHIP_SPEED);
	}else{
		vspeed = nprop_set(vspeed,0);
	}
	}
	if (key_pressed('y') && (nprop_get(vspeed) < 700 && nprop_get(vspeed) > - 700 &&
				nprop_get(hspeed) < 700 && nprop_get(hspeed) > -700) ){
		vspeed = nprop_set(vspeed,1.5*nprop_get(vspeed));
		hspeed = nprop_set(hspeed,1.5*nprop_get(hspeed));
	}

	
	particle_set_nprop(p,SHIP_VSPEED,vspeed);
	particle_set_nprop(p,SHIP_HSPEED,hspeed);
	p->v = vec_new(nprop_get(hspeed),nprop_get(vspeed));
	if(boost){
		trail = factory_create_v(p->box.pos,P_SHIP_BOOST);
		trail->box = box_direct(trail->box,p->box.axis0);
	}
	if(vec_len(p->v) > 10.0){
		p->box = box_direct(p->box,p->v);
		p->vector[MISSILE] = p->v;
		trail =  factory_create_v(p->box.pos,P_SHIP_TRAIL);
		trail->box = box_scale(p->box,0.5);
		if(key_pressed('y')){
			particle_set_color(trail,1,1,1,0.3);
			particle_set_alt_color(trail,1,1,1,0.3);
		}
	}
	if(key_pressed('g') && !key_pressed('y') &&  get_time() > p->time[MISSILE]){
		p->time[MISSILE] = get_time() + 100;
		missile = factory_create_v(p->box.pos,P_MISSILE);
		missile->v = vec_add(p->vector[MISSILE],p->v);
		missile->v = vec_add(missile->v,spread);
		missile->box = box_direct(missile->box,missile->v);
		missile->die_time = get_time() + random()%1000+1000;
		particle_set_solid(p,0);
	}
	if(!key_pressed('g')){
		particle_set_solid(p,1);
	}
	if(key_pressed('r') && get_time() > p->time[MISSILE]){
		trail = factory_create_v(p->box.pos,P_WALL);
		trail = factory_create_v(vec_add(p->box.pos,vec_new(10,-10)),P_BG);
		p->time[MISSILE] = get_time() + 500;
	}
	if(key_pressed('f')){
		p->box = box_rotate(p->box,1);
	}
}