Advertisement
Guest User

Untitled

a guest
Jul 18th, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.89 KB | None | 0 0
  1.   // On parcoure la liste des plateformes
  2.   for (t_object *tmp = decors->first; tmp != NULL; tmp = tmp->next)
  3.   {
  4.     // On définie la frame et la visibilité des sprites des plateformes ici
  5.     if (((t_decor*)tmp->data)->sprite != NULL)
  6.     {
  7.         // Distance entre la plateforme et le centre de la tour
  8.         platform_distance = abs(tower_center - (((t_decor*)tmp->data)->posx + ((t_decor*)tmp->data)->real_width/ 2));
  9.         // Est on a gauche ou a droite du centre ? Flip le sprite selon
  10.         if ((((t_decor*)tmp->data)->posx + ((t_decor*)tmp->data)->real_width/ 2) > tower_center)
  11.           SPR_setHFlip(((t_decor*)tmp->data)->sprite, TRUE);
  12.         else
  13.           SPR_setHFlip(((t_decor*)tmp->data)->sprite, FALSE);
  14.         // Calcul de la bonne frame a donner au sprite en fonction de la distance par rapport au centre de la tour
  15.         u16 frameToset = ((t_decor*)tmp->data)->sprite->animation->numFrame - fix32ToInt(fix32Div(FIX32(platform_distance),FIX32(3.5)));
  16.         if (frameToset >= 0 && frameToset < ((t_decor*)tmp->data)->sprite->animation->numFrame)
  17.         {
  18.           SPR_setFrame(((t_decor*)tmp->data)->sprite, frameToset);
  19.         }
  20.         // Si la plateforme va trop loin on la rend invisible
  21.         if(((t_decor*)tmp->data)->posx < 12 || ((t_decor*)tmp->data)->posx > 238)
  22.           SPR_setVisibility(((t_decor*)tmp->data)->sprite, 1);
  23.         else
  24.           SPR_setVisibility(((t_decor*)tmp->data)->sprite, 0);
  25.       }
  26.       // Déplacement de la plateforme
  27.       if (players[0].yorder != 1)
  28.         ((t_decor*)tmp->data)->posx -= players[0].xorder * 2;
  29.       // On téléporte la plateforme de l'autre coté de la tour pour simuler un tour entier de déplacement
  30.       if(((t_decor*)tmp->data)->posx >= 320){
  31.         ((t_decor*)tmp->data)->posx = 1;
  32.       } else if(((t_decor*)tmp->data)->posx <= 0){
  33.         ((t_decor*)tmp->data)->posx = 319;
  34.       }
  35.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement