]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/16_sprit.c
I THINK I GOT THE ANIMATION FIXED AGAINrm data/spri/chikyuu.vrs
[16.git] / src / lib / 16_sprit.c
index 311a3dd73a5f60954a35f3ddf378e1a02e174539..0be43073a11528728aeaf7fb1ee606b0e45f9865 100755 (executable)
@@ -107,6 +107,41 @@ void animate_spri(entity_t *enti, video_t *video)
                                                // if the sprite's edge pixels are clear anyway, you can set this to 0.\r
        VGA_RAM_PTR omemptr;\r
 \r
+       // Depending on delay, update indices\r
+//#define FRAME1 modexDrawSpriteRegion(pip[(pip->video->p)].page, x, y, 48, player[pn].enti.dire, 24, 32,      PLAYERBMPDATAPTR);\r
+//#define FRAME2 modexDrawSpriteRegion(pip[(pip->video->p)].page, x, y, 24, player[pn].enti.dire, 24, 32,      PLAYERBMPDATAPTR); stand\r
+//#define FRAME3 modexDrawSpriteRegion(pip[(pip->video->p)].page, x, y, 0, player[pn].enti.dire, 24, 32,       PLAYERBMPDATAPTR);\r
+//#define FRAME4 modexDrawSpriteRegion(pip[(pip->video->p)].page, x, y, 24, player[pn].enti.dire, 24, 32,      PLAYERBMPDATAPTR); stand\r
+       switch(enti->spri->delay)\r
+{\r
+               // Delay = 0 means that sprite should loop. Nothing to change here\r
+               case 0:\r
+               break;\r
+\r
+               // Delay = 1 means that on next time unit sprite should be changed\r
+               case 1:\r
+                       if(enti->invq)  enti->spri->curr_anim_spri++;\r
+                       else                    enti->spri->curr_anim_spri--;\r
+//printf("1[%u]        %u", enti->invq, enti->spri->curr_anim_spri);\r
+                       // If we hit the end of an animation sequence, restart it\r
+                       if(!(   enti->spri->curr_spri_id = enti->spri->curr_anim_list[enti->spri->curr_anim_spri].sprite_id)){\r
+                               //enti->spri->curr_anim_spri = 1;\r
+                               enti->invq=!enti->invq;\r
+                               if(enti->invq)                          enti->spri->curr_anim_spri+=2;\r
+                               else if(enti->spri->curr_anim_spri)     enti->spri->curr_anim_spri-=2;\r
+                               enti->spri->curr_spri_id = enti->spri->curr_anim_list[enti->spri->curr_anim_spri].sprite_id;\r
+//printf("     enti->spri->curr_anim_spri=%u   ", enti->spri->curr_anim_spri);\r
+                       }\r
+                       enti->spri->delay = enti->spri->curr_anim_list[enti->spri->curr_anim_spri].delay;\r
+//printf("\n");\r
+//break;\r
+               // Delay > 1 means that we should not change sprite yet. Decrease delay\r
+               default:\r
+//printf("2[%u]        %u\n", enti->invq, enti->spri->curr_anim_spri);\r
+                       enti->spri->delay--;\r
+               break;\r
+       }\r
+\r
        // Events go here\r
 \r
 \r
@@ -176,34 +211,5 @@ void animate_spri(entity_t *enti, video_t *video)
        // restore stride\r
        vga_state.vga_draw_stride_limit = vga_state.vga_draw_stride = GVARVIDEO->page[0].stridew;\r
 \r
-       // Depending on delay, update indices\r
-//#define FRAME1 modexDrawSpriteRegion(pip[(pip->video->p)].page, x, y, 48, player[pn].enti.dire, 24, 32,      PLAYERBMPDATAPTR);\r
-//#define FRAME2 modexDrawSpriteRegion(pip[(pip->video->p)].page, x, y, 24, player[pn].enti.dire, 24, 32,      PLAYERBMPDATAPTR); stand\r
-//#define FRAME3 modexDrawSpriteRegion(pip[(pip->video->p)].page, x, y, 0, player[pn].enti.dire, 24, 32,       PLAYERBMPDATAPTR);\r
-//#define FRAME4 modexDrawSpriteRegion(pip[(pip->video->p)].page, x, y, 24, player[pn].enti.dire, 24, 32,      PLAYERBMPDATAPTR); stand\r
-       switch(enti->spri->delay)\r
-{\r
-               // Delay = 0 means that sprite should loop. Nothing to change here\r
-               case 0:\r
-               break;\r
-\r
-               // Delay = 1 means that on next time unit sprite should be changed\r
-               case 1:\r
-                       if(enti->invq)  enti->spri->curr_anim_spri++;\r
-                       else                    enti->spri->curr_anim_spri--;\r
-\r
-                       // If we hit the end of an animation sequence, restart it\r
-                       if(!(   enti->spri->curr_spri_id = enti->spri->curr_anim_list[enti->spri->curr_anim_spri].sprite_id)){\r
-                               enti->spri->curr_anim_spri = 1;\r
-                               enti->spri->curr_spri_id = enti->spri->curr_anim_list[enti->spri->curr_anim_spri].sprite_id;\r
-                               enti->invq=!enti->invq;\r
-                       }\r
-                       enti->spri->delay = enti->spri->curr_anim_list[enti->spri->curr_anim_spri].delay;\r
-\r
-               // Delay > 1 means that we should not change sprite yet. Decrease delay\r
-               default:\r
-                       enti->spri->delay--;\r
-               break;\r
-       }\r
        vga_state.vga_graphics_ram = video->omemptr;\r
 }\r