blood.c|blood.cNHhdB@LLLPTEXTCWIE??|\#include #include #include #include #include "blood.h" #include "sprite.h" #include "global.h" #include "addrs.h" #include "assert.h" typedef struct bloodentry { long x,y; // Position of blood char frame,framedel; struct bloodentry *next; } blood; static blood *bloodsplats = NULL; void WipeBlood(void) { blood *temp; while (bloodsplats!=NULL) { temp = bloodsplats; bloodsplats = bloodsplats->next; free(temp); } } void AddBlood(long x, long y) { blood *temp; temp = (blood*)malloc(sizeof(blood)); temp->x = x; temp->y = y; temp->frame = 8 + (rand() & 1); temp->framedel = 0; temp->next = bloodsplats; bloodsplats = temp; } void Blood(GsOT* OT) { blood *bloodptr = bloodsplats; blood *temp, *last = NULL; GsSPRITE bloodspr; InitSpr(&bloodspr); bloodspr.w = 16; bloodspr.h = 16; bloodspr.mx = 1; bloodspr.my = 1; while (bloodptr!=NULL) { if (bloodptr->framedel-- == 0) { // Move onto next frame bloodptr->framedel = 3; bloodptr->frame-=2; } if (bloodptr->frame<0) { // Delete blood splat if (last==NULL) { bloodsplats = bloodptr->next; } else last->next = bloodptr->next; temp = bloodptr; bloodptr = bloodptr->next; free(temp); } else { // Plot blood bloodspr.x = bloodptr->x; bloodspr.y = bloodptr->y; CalcSprPos(bloodspr, 640 + (bloodptr->frame*16), 144); last = bloodptr; bloodptr = bloodptr->next; GsSortSprite(&bloodspr, OT, 8); } } } ZZRNavigator 3.01 %blood.cr Itemstsx.harozentallerETEXTCWIE??cache27443.gifNetscape Navigator 3.01 %ˋϳC>H Monaco3m3miE%ZZRtX3 RMPSRMWBB*LR