void DrawChunks( int player, int x, int y, int level, int style ) { int count, color, type; SDL_Rect chunkRect; if( flashyAnimation ) { SDLU_AcquireSurface( playerSpriteSurface[player] ); for( count=-3; count<=3; count++ ) { if( count != 0 ) { CalcBlobRect( x, y, &chunkRect ); color = grid[player][x][y]; GetZapStyle( player, &chunkRect, &color, &type, count, level, style ); SurfaceDrawSprite( &chunkRect, color, type ); } } SDLU_ReleaseSurface( playerSpriteSurface[player] ); } }
void DrawSpriteBlobs( int player, int type ) { MRect firstRect, secondRect, thirdRect; const int repeat = 0xFF, forever = 0xFE; static const unsigned char blobAnimation[6][2][25] = { { { kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kFlashBrightBlob, kFlashBrightBlob, kFlashBrightBlob, kFlashBrightBlob, kFlashBrightBlob, kFlashBrightBlob, kFlashBrightBlob, kFlashBrightBlob, kFlashBrightBlob, kFlashBrightBlob, kFlashBrightBlob, kFlashBrightBlob, repeat }, { kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, kNoSuction, repeat } }, { { kNoSuction, kSquish, kNoSuction, kSquash, kNoSuction, kSquish, kNoSuction, kSquash, kNoSuction, forever }, { kNoSuction, kSquish, kNoSuction, kSquash, kNoSuction, kSquish, kNoSuction, kSquash, kNoSuction, forever } }, { { kSobBlob, kSobBlob, kSobBlob, kSobBlob, kSob2Blob, kSob2Blob, kSob2Blob, kSob2Blob, repeat }, { kSobBlob, kSobBlob, kSobBlob, kSobBlob, kSob2Blob, kSob2Blob, kSob2Blob, kSob2Blob, repeat } }, { { kBombFuse1, kBombFuse2, kBombFuse3, repeat }, { kBombFuse1, kBombFuse2, kBombFuse3, repeat } }, { { kBlinkBomb1, kBombFuse2, kBlinkBomb3, kBombFuse1, kBlinkBomb2, kBombFuse3, repeat }, { kBlinkBomb1, kBombFuse2, kBlinkBomb3, kBombFuse1, kBlinkBomb2, kBombFuse3, repeat } } }; if( grenade[player] ) type += 3; SDLU_AcquireSurface( playerSpriteSurface[player] ); if( blobAnimation[type][0][anim[player]] == forever ) anim[player]--; if( blobAnimation[type][0][anim[player]] == repeat ) anim[player] = 0; CalcBlobRect( blobX[player], blobY[player], &firstRect ); if( halfway[player] ) OffsetMRect( &firstRect, 0, kBlobVertSize / 2 ); TweakFirstBlob ( player, &firstRect ); secondRect = firstRect; TweakSecondBlob( player, &secondRect ); thirdRect = firstRect; thirdRect.top -= kBlobShadowError; thirdRect.left -= kBlobShadowError; thirdRect.right += kBlobShadowDepth + kBlobShadowError; thirdRect.bottom += kBlobShadowDepth + kBlobShadowError; CleanSpriteArea( player, &thirdRect ); thirdRect = secondRect; thirdRect.top -= kBlobShadowError; thirdRect.left -= kBlobShadowError; thirdRect.right += kBlobShadowDepth + kBlobShadowError; thirdRect.bottom += kBlobShadowDepth + kBlobShadowError; CleanSpriteArea( player, &thirdRect ); thirdRect = firstRect; OffsetMRect( &thirdRect, shadowDepth[player], shadowDepth[player] ); SurfaceDrawShadow( &thirdRect, colorA[player], blobAnimation[type][0][anim[player]] ); thirdRect = secondRect; OffsetMRect( &thirdRect, shadowDepth[player], shadowDepth[player] ); SurfaceDrawShadow( &thirdRect, colorB[player], blobAnimation[type][1][anim[player]] ); SurfaceDrawSprite( &firstRect, colorA[player], blobAnimation[type][0][anim[player]] ); SurfaceDrawSprite( &secondRect, colorB[player], blobAnimation[type][1][anim[player]] ); SDLU_ReleaseSurface( playerSpriteSurface[player] ); }