Esempio n. 1
0
int	gere_mouse(int button, int x, int y, t_mlx **p)
{
  int	i;
  int	j;
  t_mlx	*tmp;

  i = (int) ((x - WINX_RAY) / (200 / my_strlen((*p)->tab[0])));
  j = (int) ((y - WINY_RAY) / (200 / my_strlen((*p)->tab[0])));
  if (button == 1 && i < (my_strlen((*p)->tab[0]) - 1) &&
      j < (my_strlen((*p)->tab[0]) - 2) && i > 0 && j > 0)
    {
      if ((*p)->tab[j][i] == '1')
	(*p)->tab[j][i] = '0';
      else if ((*p)->tab[j][i] == '0')
	(*p)->tab[j][i] = '1';
      tmp = (*p);
      tmp = put_sol_and_sky(tmp);
      calcul(&tmp);
      cadre(&tmp);
      map(&tmp);
      viseur(&tmp);
      weapon(&tmp);
      pos_map(&tmp);
      (*p) = tmp;
      mlx_put_image_to_window(tmp->mlx_ptr, tmp->win_ptr, tmp->img, 0, 0);
    }
  return (0);
}
Esempio n. 2
0
int	gere_key(int keycode, t_mlx **s)
{
  int		i;
  t_mlx		*tmp;

  i = 0;
  tmp = (*s);
  reduckey(keycode, &tmp);
  reduckeytwo(keycode, &tmp);
  tmp = put_sol_and_sky(tmp);
  calcul(&tmp);
  cadre(&tmp);
  map(&tmp);
  viseur(&tmp);
  weapon(&tmp);
  pos_map(&tmp);
  (*s) = tmp;
  mlx_put_image_to_window(tmp->mlx_ptr, tmp->win_ptr, tmp->img, 0, 0);
  return (0);
}
Esempio n. 3
0
void sulfateuse_HUD(Game* game, int color,double time_offset){

	#ifdef VISEUR_ENABLED
	viseur(game);
	#endif

	double oscill_force=.5*sin(SDL_GetTicks()*.001)+.5*sin(SDL_GetTicks()*.00085);

	if(n==1){
		angle+=game->trigger_value*16.;
	}else{
		angle+=game->trigger_value*10.;
	}
	glGetError();
	for(int i=0;i<n;i++){
		double x=1-i*1./n;
		glPushMatrix();
				double real_rho=game->player->rho    +fake_rho;
				double real_theta=game->player->theta+fake_theta;
				glRotated(real_rho*(-4),1,0,0);
				glRotated(real_theta*.5, 0, 1, 0);
				double real_HUD_drho_compensation=HUD_drho_compensation+fake_HUD_drho_compensation;
				glTranslated(real_theta*(.05)+5,0,-real_HUD_drho_compensation*real_HUD_drho_compensation*0.0007-3);
				glRotated(80, 0, 1, 0);
				glRotated(70, 1, 0, 0);
				glRotated(real_theta*(1),0,0,1);
				glRotated(real_HUD_drho_compensation,0,1,0);

				// if(game->weapon==2){
					glTranslated(0,0,-1);
				// }else if (game->weapon==3){
					// glTranslated(0,1,-1);
				// }
				if(x*game->trigger_value){
					glTranslated(0,-x*game->fire_value,0);
					glRotated(-2*x*game->fire_value,0,0,1);
				}
				glLineWidth(3.0);

			// double c=.2;
			// switch(i){
			// 	case 0:
			// 		break;
			// 	case 1:
			// 		glTranslated(0,0,c);
			// 		break;
			// 	case 2:
			// 		glTranslated(0,c,0);
			// 		break;
			// 	case 3:
			// 		glTranslated(c,0,0);
			// 		break;
			// 	case 4:
			// 		glTranslated(0,c,c);
			// 		break;
			// 	case 5:
			// 		glTranslated(c,0,c);
			// 		break;
			// 	case 6:
			// 		glTranslated(c,c,0);
			// 		break;
			// 	case 7:
			// 		glTranslated(c,c,c);
			// 		break;
			// 	case 8:
			// 		// glTranslated();
			// 		break;
			// 	case 9:
			// 		// glTranslated();
			// 		break;
			// }
				draw_hand(  .3+.1*oscill_force,0,FALSE);
				// printf("%lf\n",i*game->trigger_value );
				draw_sulfateuse(0,angle-4*i*game->trigger_value,color);
				// draw_sulfateuse(0,angle-time_offset*game->trigger_value,color);
		// glTranslated(                               0, 1, -5+1*oscill_force);
		// glTranslated(-.3+.1*sin(SDL_GetTicks()*.0017), 0, 0);
		// draw_arrow(.2);
		glPopMatrix();

		if(i == 0)
			glAccum(GL_LOAD, 1.0 / n);
		else
			glAccum(GL_ACCUM, 1.0 / n);

	}
	glAccum(GL_RETURN, 1.0);
	if(glGetError()&GL_INVALID_OPERATION) {
		// gl accum not avaiable
		// printf("GLACCUM UNAVAIABLE\n");
		n=1;
	}

	// int n=20;
	// for(int i=0;i<n;i++){
	// 	draw();
	// 	if(i == 0)
	// 		glAccum(GL_LOAD, 1.0 / n);
	// 	else
	// 		glAccum(GL_ACCUM, 1.0 / n);
	// }
	// glAccum(GL_RETURN, 1.0);

}
Esempio n. 4
0
void weapon_HUD_FIRE(Game* game, int mode,double time_offset){
	#ifdef VISEUR_ENABLED
	viseur(game);
	#endif


	glPushMatrix();
	BOW_GL_MATRIX();

	double time_pos=game->fire_value;
	time_pos=1-time_pos + time_offset;

	// time_pos=1;

	//FIRE
	if(time_pos<.1){
	// else {

		//time_pos entre 0 et 1
		time_pos=(time_pos)/.1;
		//time_pos exp entre 0 et 1
		time_pos=(exp( 1-time_pos )-1)/(exp(1)-1);

		// double time_pos=.5*((int)(time_/.15)%152)/152.;

		glTranslated(1*time_pos, 1.5-1+1*time_pos, 2.5);
		glRotated(-130*.5, 0, 1, 0);
		glRotated(-30*.5, 0, 0, 1);
		glRotated(10, 0, 1, 0);

		//ARROW
		glPushMatrix();
			glRotated(90, 0, 1, 0);
			glRotated(90, 1, 0, 0);
			glRotated(3, 1, 0, 0);
			glTranslated(0,.3,-8+5*time_pos);

			glTranslated(0,0,-1*(1-time_pos));

			draw_arrow_high_quality();
		glPopMatrix();

		//BOW + HAND
		draw_hand(.5*time_pos,2.+2-2*time_pos,TRUE);
		if(mode==2){
			draw_bow_v3(.2,.5*time_pos);
		}else if(mode==1){
			draw_bow_v2(.2,.5*time_pos);
		}else{
			draw_bow(.2,.5*time_pos);
		}



	}else if(time_pos<.3){
		//time_pos entre 0 et 1
		time_pos=(time_pos-.1)/.2;

		// double time_pos=.5*((int)(time_/.15)%152)/152.;

		glTranslated(0, 1.5-1, 2.5);
		glRotated(-130*.5, 0, 1, 0);
		glRotated(-30*.5, 0, 0, 1);
		glRotated(10, 0, 1, 0);

		glRotated(-40*time_pos, 1, 0, 0);
		// glRotated(-40*time_pos, 0, 0, 1);


		glTranslated(0, 0, -3*time_pos);

		draw_hand(0,2.+2,TRUE);
		if (mode==2){
			draw_bow_v3(.2,0);
		}else if(mode==1){
			draw_bow_v2(.2,0);
		}else{
			draw_bow(.2,0);
		}


	}else if(time_pos<.6){

		//time_pos entre 0 et 1
		time_pos=(time_pos-.3)/.3;
		// time_pos =1;

		// double time_pos=.5*((int)(time_/.15)%152)/152.;

				// glTranslated(-2*time_pos, 2*time_pos,3*time_pos);

		glTranslated(0, 1.5-1, 2.5);
		glRotated(-130*.5, 0, 1, 0);
		glRotated(-30*.5, 0, 0, 1);
		glRotated(10, 0, 1, 0);

		glRotated(-40, 1, 0, 0);

		glTranslated(0, 0, -3*time_pos);
		glRotated(20*time_pos, 0, 1, 0);

		// glTranslated(-2*time_pos, 0, 2*time_pos);

		// glRotated(-20*time_pos, 0, 1, 1);

		glRotated(20*time_pos, 1, 1, 0);

				// glRotated(30*time_pos, 0, 0, 1);

		glTranslated(0, 0, -3);

		draw_hand(0,2.+2-2*time_pos,TRUE);
		if (mode==2){
			draw_bow_v3(.2,0);
		}else if(mode==1){
			draw_bow_v2(.2,0);
		}else{
			draw_bow(.2,0);
		}

	}else{

		double oscill_force=.5*sin(SDL_GetTicks()*.001)+.5*sin(SDL_GetTicks()*.00085);
	
		//time_pos entre 0 et 1
		time_pos=(time_pos-.6)/.4;

		time_pos=1-time_pos;


		glTranslated(2*time_pos, 0, 0);
		glRotated(30*(time_pos), 0, 1, 0);
		glRotated(-0, 0, 0, 1);


		glPushMatrix();
			//ARROW
			glRotated(60, 0, 1, 0);
			glRotated(60, 1, 0, 0);
			// glTranslated(
			// 	-.3+.1*sin(SDL_GetTicks()*.0017*(1-time_pos)),
			// 	1-.7*time_pos,
			// 	-5+1*oscill_force*(1-time_pos)+2*time_pos
			// 	);
			glTranslated(
				-.3+.1*sin(SDL_GetTicks()*.0017),
				1,
				-5+1*oscill_force
				);

			glTranslated(5*time_pos,5*time_pos,0);

			glTranslated(-10*time_pos,0,0);
			// glRotated(-20+20*cos(SDL_GetTicks()*0.01), 1,-.3,0);
			glRotated(-40*time_pos, 1,0,0);
			glTranslated(10*time_pos,0,0);

			glTranslated(0,2*time_pos,2*time_pos);

			glTranslated(-3*time_pos,0,0);

			draw_arrow_high_quality();
				if(mode){
					glPushMatrix();
						glTranslated(-1.3,0,1.7);
						glRotated(10,0,1,0);
						draw_arrow_high_quality();
					glPopMatrix();
					glPushMatrix();
						glTranslated(1.3,0,1);
						glRotated(-10,0,1,0);
						draw_arrow_high_quality();
					glPopMatrix();

				}
		glPopMatrix();

		draw_hand(  .3+.1*oscill_force,0,FALSE);
		if(mode==2){
			draw_bow_v3(.2,.2+.1*oscill_force);
		}else if(mode==1){
			draw_bow_v2(.2,.2+.1*oscill_force);
		}else{
			draw_bow(.2,.2+.1*oscill_force);
		}


	}


	glPopMatrix();
}
Esempio n. 5
0
void weapon_HUD_ARM(Game* game,int mode,double time_offset){
#define BOW_GL_MATRIX() \
	double real_rho=game->player->rho    +fake_rho;\
	double real_theta=game->player->theta+fake_theta;\
	glRotated(real_rho*(-4),1,0,0);\
	glRotated(real_theta*.5, 0.0, 1.0, 0.0);\
	double real_HUD_drho_compensation=HUD_drho_compensation+fake_HUD_drho_compensation;\
	glTranslated(0,0,-real_HUD_drho_compensation*real_HUD_drho_compensation*0.0007);\
	glTranslated(5,0,-3);\
	glTranslated(real_theta*(.05),0,0);\
	glRotated(80, 0, 1, 0);\
	glRotated(70, 1, 0, 0);\
	glRotated(real_theta*(1),0,0,1);\
	glRotated(real_HUD_drho_compensation,0,1,0);\
	glTranslated(0,0,-1);\
	glLineWidth(3.0)

	double time_pos=game->trigger_value+time_offset;


	#ifdef VISEUR_ENABLED
	viseur(game);
	#endif

	double oscill_force=.5*sin(SDL_GetTicks()*.001)+.5*sin(SDL_GetTicks()*.00085);

	glPushMatrix();
	BOW_GL_MATRIX();
			#define TEMP_MACRO() \
			glTranslated(0, 1.5*time_pos, 2*time_pos);\
			glRotated(-130*.5*time_pos, 0, 1, 0);\
			glRotated(-30*.5*time_pos, 0, 0, 1);

			glPushMatrix();
				TEMP_MACRO();

				//ARROW
				glRotated(60+30*time_pos, 0, 1, 0);
				glRotated(60+30*time_pos, 1, 0, 0);
				// glTranslated(
				// 	-.3+.1*sin(SDL_GetTicks()*.0017*(1-time_pos)),
				// 	1-.7*time_pos,
				// 	-5+1*oscill_force*(1-time_pos)+2*time_pos
				// 	);
				glTranslated(
					-.3+.1*sin(SDL_GetTicks()*.0017)*(1-time_pos)-.7*time_pos,
					1-.8*time_pos,
					-5+1*oscill_force*(1-time_pos)+2*time_pos
					);

				glScaled(1,1,1+.2*time_pos);
				draw_arrow_high_quality();
				if(mode){
					glPushMatrix();
						glTranslated(-1.7,0,1.5);
						glRotated(10,0,1,0);
						draw_arrow_high_quality();
					glPopMatrix();
					glPushMatrix();
						glTranslated(1.7,0,0.75);
						glRotated(-10,0,1,0);
						draw_arrow_high_quality();
					glPopMatrix();
					// glPushMatrix();
					// 	glTranslated(-1.3,0,1.7);
					// 	glRotated(10,0,1,0);
					// 	draw_arrow_high_quality();
					// glPopMatrix();
					// glPushMatrix();
					// 	glTranslated(1.3,0,1);
					// 	glRotated(-10,0,1,0);
					// 	draw_arrow_high_quality();
					// glPopMatrix();
				}if(mode==2){
					glPushMatrix();
						glTranslated(-3.2,0,3);
						glRotated(20,0,1,0);
						draw_arrow_high_quality();
					glPopMatrix();
					glPushMatrix();
						glTranslated(3.2,0,1.5);
						glRotated(-20,0,1,0);
						draw_arrow_high_quality();
					glPopMatrix();
				}
				glClear(GL_DEPTH_BUFFER_BIT);

			glPopMatrix();

			TEMP_MACRO();
			if(time_pos){//stable hands
				draw_hand(.3*time_pos,2*time_pos,TRUE);
				if(mode==2){
					draw_bow_v3(.2,.2+.6*time_pos);
				}else if(mode==1){
					draw_bow_v2(.2,.2+.6*time_pos);
				}else{
					draw_bow(.2,.2+.6*time_pos);
				}
			}else{//shaking hands
				draw_hand(  .3+.1*oscill_force,0,FALSE);
				if(mode==2){
					draw_bow_v3(.2,.2+.1*oscill_force);
				}else if(mode==1){
					draw_bow_v2(.2,.2+.1*oscill_force);
				}else{
					draw_bow(.2,.2+.1*oscill_force);
				}
					
					
			}

			#undef TEMP_MACRO


	// glTranslated(                               0, 1, -5+1*oscill_force);
	// glTranslated(-.3+.1*sin(SDL_GetTicks()*.0017), 0, 0);

	// draw_arrow(.2);
	glPopMatrix();
}