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); }
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); }
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); }
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(); }
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(); }