public DrawFallingAnimation(int posX, int posY, int screenHeight, int duration, DrawElement element)
     : base(posX, posY)
 {
     this.duration = duration;
     this.sourceElement = element;
     this.screenHeight = screenHeight;
 }
 public DrawBouncingAnimation(int posX, int posY, int screenHeight, DrawElement element)
     : base(posX, posY)
 {
     this.sourceElement = element;
     this.screenHeight = screenHeight;
     this.posX = posX;
     this.posY = -element.getHeight();
     this.velocityX = posY % 30 - 15;
 }
        public DrawSpinAnimation(int posX, int posY, DrawElement element, int speed, bool turnRight)
            : base(posX, posY)
        {
            this.sourceElement = element;
            this.speed = speed;
            this.turnRight = turnRight;

            cacheRotation();
        }
 public DrawSpiralAnimation(int posX, int posY, int screenWidth, int screenHeight, DrawElement element)
     : base(posX, posY)
 {
     this.sourceElement = element;
     this.screenHeight = screenHeight;
     this.screenWidth = screenWidth;
     this.posX = posX;
     this.posY = posY;
 }
 public DrawTeleportAnimation(int posX, int posY, int screenWidth, int screenHeight, DrawElement element)
     : base(posX, posY)
 {
     this.sourceElement = element;
     this.screenHeight = screenHeight;
     this.screenWidth = screenWidth;
     this.posX = posX;
     this.posY = posY;
     lastX = random.Next(20) - 10;
     lastY = random.Next(20) - 10;
 }
 public DrawBorderBounceAnimation(int posX, int posY, int screenWidth, int screenHeight, DrawElement element)
     : base(posX, posY)
 {
     this.sourceElement = element;
     this.screenWidth = screenWidth;
     this.screenHeight = screenHeight;
     this.posX = posX;
     this.posY = posY;
     velocityX = random.Next(40) - 20;
     velocityY = random.Next(40) - 20;
 }
 public DrawSpinAnimation(int posX, int posY, DrawElement element)
     : this(posX, posY, element, 1, true)
 {
 }