void FairyControlPanel::changeControlPanel(FairyHero* selectHero){ if(selectHero == NULL && controlType != 1){ playAni(); initButton(); }else if(selectHero != NULL && controlType != 2){ playAni(); initHero(selectHero); } }
void draw(cursorType* cur, playField* pf, SDL_Surface* screen) { int x,y; listItem* t; //general purpose, reusable psysSet_t ps; SDL_BlitSurface(graphics.boardImg , NULL, screen, &(setting()->bgPos) ); for(x=0;x<NUMTILES;x++) { playAni(graphics.tileAni[x]); } //Draw static bricks for(y=0; y < FIELDSIZE; y++) { for(x=0; x < FIELDSIZE; x++) { //Bricks-Walls if(pf->board[x][y] && pf->board[x][y]->type != RESERVED) { //We treat walls/glue/oneways/switches/evilbricks/copybricks and rembricks as walls (they will have the walltile defined) if( isWall(pf, x, y) ) { drawSprite(screen, graphics.walls[pf->board[x][y]->wall], pf->board[x][y]->pxx, pf->board[x][y]->pxy); } if( pf->board[x][y]->type != STDWALL && graphics.tiles[pf->board[x][y]->type-1]) { //We draw the animated extra-tiles if they exist. if(graphics.tileAni[pf->board[x][y]->type-1]) { if( !isSwitch( pf->board[x][y] ) ) { drawAni(screen, graphics.tileAni[pf->board[x][y]->type-1], pf->board[x][y]->pxx-5, pf->board[x][y]->pxy-5); } else { //We only end here when it's a switch if( (pf->board[x][y]->type==SWON)?pf->board[x][y]->isActive:!pf->board[x][y]->isActive) { drawAni(screen, graphics.tileAni[SWON-1], pf->board[x][y]->pxx-5, pf->board[x][y]->pxy-5); } else { drawAni(screen, graphics.tileAni[SWOFF-1], pf->board[x][y]->pxx-5, pf->board[x][y]->pxy-5); } } //Fall back to the static non-moving tiles if no animation is found. } else { if( !isSwitch( pf->board[x][y] ) ) { drawSprite(screen, graphics.tiles[pf->board[x][y]->type-1], pf->board[x][y]->pxx, pf->board[x][y]->pxy); } else { if( (pf->board[x][y]->type==SWON)?pf->board[x][y]->isActive:!pf->board[x][y]->isActive) { drawSprite(screen, graphics.tiles[SWON-1], pf->board[x][y]->pxx, pf->board[x][y]->pxy); } else { drawSprite(screen, graphics.tiles[SWOFF-1], pf->board[x][y]->pxx, pf->board[x][y]->pxy); } } } } // not a wall. } //Not a reserved brick. /*else if( pf->board[x][y] && pf->board[x][y]->type == RESERVED ) { drawSprite(screen, graphics.tiles[RESERVED-1], x*brickSize+boardOffsetX, y*brickSize+boardOffsetY); }*/ } } //xy loop //Draw moving bricks t=pf->movingList; brickType* b; while( (t = t->next) ) { b=(brickType*)t->data; if(graphics.tileAni[b->type-1]) { drawAni(screen, graphics.tileAni[b->type-1], b->pxx-5, b->pxy-5); } else { drawSprite(screen, graphics.tiles[b->type-1], b->pxx, b->pxy); } } //Particle systems that are between bricks and die animantion runParticlesLayer(screen, PSYS_LAYER_UNDERDEATHANIM); //Draw dying bricks, animation? t=pf->removeList; while( (t = t->next) ) { b=(brickType*)t->data; //Draw base brick if time enough left if(b->tl > (pf->levelInfo->brick_die_ticks/2)) { if(graphics.tileAni[b->type-1]) { drawAni(screen, graphics.tileAni[b->type-1], b->pxx-5, b->pxy-5); } else { drawSprite(screen, graphics.tiles[b->type-1], b->pxx, b->pxy); } } int explFrame = 16*(pf->levelInfo->brick_die_ticks-b->tl)/pf->levelInfo->brick_die_ticks; drawAniFrame(screen, graphics.brickExpl[b->type-1], b->pxx-5, b->pxy-5,explFrame); //Spawn particles for brick death if(explFrame==8 && pf->levelInfo->brickDieParticles) { ps.layer=pf->levelInfo->brickDieParticles; ps.x=b->pxx; ps.y=b->pxy; ps.vel=50; ps.life=750; ps.lifeVar=1000; ps.gravity=0; ps.bounce=0; ps.srcImg=graphics.tiles[b->type-1]->img; ps.srcRect=graphics.tiles[b->type-1]->clip; spawnParticleSystem(&ps); } } //Teleport overlay t = pf->levelInfo->teleList; telePort_t* tp; while( (t=t->next) ) { tp = (telePort_t*)t->data; if(graphics.tileAni[TELESRC-1]) { drawAni(screen, graphics.tileAni[TELESRC-1], boardOffsetX+20*tp->sx-5, boardOffsetY+20*tp->sy-5); } else { drawSprite(screen, graphics.tiles[TELESRC-1], boardOffsetX+20*tp->sx, boardOffsetY+20*tp->sy); } //if cursor is on it, draw the path too if(cur->x == tp->sx && cur->y == tp->sy) { drawTelePath( screen, tp, 1 ); } } //Particles runParticles(screen); //Cursor updateCursor(cur); if(!cur->lock) drawSprite(screen, graphics.curSpr[0], cur->px, cur->py); else drawSprite(screen, graphics.curSpr[1], cur->px, cur->py); if(graphics.curSpr[0] && cur->moving ) { ps.layer=PSYS_LAYER_TOP; ps.x=cur->px; ps.y=cur->py; ps.vel=50; ps.life=100; ps.lifeVar=100; ps.gravity=0; ps.srcImg=graphics.curSpr[0]->img; ps.srcRect=graphics.curSpr[0]->clip; spawnParticleSystem(&ps); } }