void SiegeTank::blitToScreen() { SDL_Surface* pUnitGraphic = graphic[currentZoomlevel]; int imageW1 = pUnitGraphic->w/numImagesX; int x1 = screenborder->world2screenX(realX); int y1 = screenborder->world2screenY(realY); SDL_Rect source1 = { drawnAngle * imageW1, 0, imageW1, pUnitGraphic->h }; SDL_Rect dest1 = { x1 - imageW1/2, y1 - pUnitGraphic->h/2, imageW1, pUnitGraphic->h }; SDL_BlitSurface(pUnitGraphic, &source1, screen, &dest1); const Coord siegeTankTurretOffset[] = { Coord(8, -12), Coord(0, -20), Coord(0, -20), Coord(-4, -20), Coord(-8, -12), Coord(-8, -4), Coord(-4, -12), Coord(8, -4) }; SDL_Surface* pTurretGraphic = turretGraphic[currentZoomlevel]; int imageW2 = pTurretGraphic->w/NUM_ANGLES; int x2 = screenborder->world2screenX(realX + siegeTankTurretOffset[drawnTurretAngle].x); int y2 = screenborder->world2screenY(realY + siegeTankTurretOffset[drawnTurretAngle].y); SDL_Rect source2 = { drawnTurretAngle * imageW2, 0, imageW2, pTurretGraphic->h }; SDL_Rect dest2 = { x2 - imageW2/2, y2 - pTurretGraphic->h/2, imageW2, pTurretGraphic->h }; SDL_BlitSurface(pTurretGraphic, &source2, screen, &dest2); if(isBadlyDamaged()) { drawSmoke(x1, y1); } }
void UnitBase::blitToScreen() { SDL_Surface* pUnitGraphic = graphic[currentZoomlevel]; int imageW = pUnitGraphic->w/numImagesX; int imageH = pUnitGraphic->h/numImagesY; int x = screenborder->world2screenX(realX); int y = screenborder->world2screenY(realY); SDL_Rect source = { drawnAngle * imageW, drawnFrame * imageH, imageW, imageH }; SDL_Rect dest = { x - imageW/2, y - imageH/2, imageW, imageH }; SDL_BlitSurface(pUnitGraphic, &source, screen, &dest); if(isBadlyDamaged()) { drawSmoke(x, y); } }
void SiegeTankClass::blitToScreen() { SDL_Rect dest, source; dest.x = getDrawnX(); dest.y = getDrawnY(); dest.w = source.w = imageW; dest.h = source.h = imageH; source.y = 0; source.x = drawnAngle*imageW; SDL_BlitSurface(graphic, &source, screen, &dest); //blit base source.x = drawnTurretAngle*source.w; source.y = 0; dest.x = getDrawnX() + TurretOffset[drawnTurretAngle].x; dest.y = getDrawnY() + TurretOffset[drawnTurretAngle].y; SDL_BlitSurface(turretGraphic, &source, screen, &dest); //blit turret if(isBadlyDamaged()) drawSmoke(screenborder->world2screenX(realX), screenborder->world2screenY(realY)); }