public BrownBoomerangProjectile(Texture2D spritesheet, LinkStateMachine stateMachine)
 {
     this.spritesheet    = spritesheet;
     this.stateMachine   = stateMachine;
     projectileDirection = stateMachine.getDirection();
     if (projectileDirection == Direction.MoveUp)
     {
         xLoc = stateMachine.getXLoc() + xSize / 2;
         yLoc = stateMachine.getYLoc() - ySize;
     }
     else if (projectileDirection == Direction.MoveDown)
     {
         xLoc = stateMachine.getXLoc() + xSize / 2;
         yLoc = stateMachine.getYLoc() + ySize;
     }
     else if (projectileDirection == Direction.MoveLeft)
     {
         xLoc = stateMachine.getXLoc() - xSize;
         yLoc = stateMachine.getYLoc();
     }
     else //MoveRight
     {
         xLoc = stateMachine.getXLoc() + xSize * 2;
         yLoc = stateMachine.getYLoc();
     }
     goBack               = false;
     flip                 = SpriteEffects.None;
     sourceRectangle      = new Rectangle(64, 185, 8, 15);
     destinationRectangle = new Rectangle(xLoc, yLoc, xSize, ySize);
     frame                = 0;
 }
Exemplo n.º 2
0
 public BombProjectile(Texture2D spritesheet, LinkStateMachine stateMachine)
 {
     this.stateMachine   = stateMachine;
     projectileDirection = stateMachine.getDirection();
     if (projectileDirection == Direction.MoveUp)
     {
         xLoc = stateMachine.getXLoc() + bombSizeX / 2;
         yLoc = stateMachine.getYLoc() - bombSizeY;
     }
     else if (projectileDirection == Direction.MoveDown)
     {
         xLoc = stateMachine.getXLoc() + bombSizeX / 2;
         yLoc = stateMachine.getYLoc() + bombSizeY;
     }
     else if (projectileDirection == Direction.MoveLeft)
     {
         xLoc = stateMachine.getXLoc() - bombSizeX;
         yLoc = stateMachine.getYLoc();
     }
     else //MoveRight
     {
         xLoc = stateMachine.getXLoc() + bombSizeX * 2;
         yLoc = stateMachine.getYLoc();
     }
     sourceRectangle      = new Rectangle(129, 185, 8, 15);
     destinationRectangle = new Rectangle(xLoc, yLoc, bombSizeX, bombSizeY);
     frame            = 0;
     this.spritesheet = spritesheet;
 }
 public CandleFireProjectile(Texture2D spritesheet, LinkStateMachine stateMachine)
 {
     this.stateMachine   = stateMachine;
     projectileDirection = stateMachine.getDirection();
     if (projectileDirection == Direction.MoveUp)
     {
         xLoc = stateMachine.getXLoc();
         yLoc = stateMachine.getYLoc() - candleSize;
     }
     else if (projectileDirection == Direction.MoveDown)
     {
         xLoc = stateMachine.getXLoc();
         yLoc = stateMachine.getYLoc() + candleSize;
     }
     else if (projectileDirection == Direction.MoveLeft)
     {
         xLoc = stateMachine.getXLoc() - candleSize;
         yLoc = stateMachine.getYLoc();
     }
     else //MoveRight
     {
         xLoc = stateMachine.getXLoc() + candleSize;
         yLoc = stateMachine.getYLoc();
     }
     flip                 = false;
     sourceRectangle      = new Rectangle(191, 185, 15, 15);
     destinationRectangle = new Rectangle(xLoc, yLoc, candleSize, candleSize);
     frame                = 0;
     this.spritesheet     = spritesheet;
 }
 public BrownArrowProjectile(Texture2D spritesheet, LinkStateMachine stateMachine)
 {
     this.spritesheet    = spritesheet;
     this.stateMachine   = stateMachine;
     projectileDirection = stateMachine.getDirection();
     if (projectileDirection == Direction.MoveUp)
     {
         xSize = ArrowWidth;
         ySize = ArrowLength;
         xLoc  = stateMachine.getXLoc() + xSize / 2;
         yLoc  = stateMachine.getYLoc() - ySize;
         flip  = SpriteEffects.None;
     }
     else if (projectileDirection == Direction.MoveDown)
     {
         xSize = ArrowWidth;
         ySize = ArrowLength;
         xLoc  = stateMachine.getXLoc() + xSize / 2;
         yLoc  = stateMachine.getYLoc() + ySize;
         flip  = SpriteEffects.FlipVertically;
     }
     else if (projectileDirection == Direction.MoveLeft)
     {
         xSize = ArrowLength;
         ySize = ArrowWidth;
         xLoc  = stateMachine.getXLoc() - xSize;
         yLoc  = stateMachine.getYLoc() + ySize / 2;
         flip  = SpriteEffects.FlipHorizontally;
     }
     else //MoveRight
     {
         xSize = ArrowLength;
         ySize = ArrowWidth;
         xLoc  = stateMachine.getXLoc() + xSize;
         yLoc  = stateMachine.getYLoc() + ySize / 2;
         flip  = SpriteEffects.None;
     }
     if (projectileDirection == Direction.MoveUp || projectileDirection == Direction.MoveDown)
     {
         sourceRectangle = new Rectangle(1, 185, 8, 15);
     }
     else
     {
         sourceRectangle = new Rectangle(10, 188, 15, 8);
     }
     destinationRectangle = new Rectangle(xLoc, yLoc, xSize, ySize);
     frame = 0;
 }
 public void Update()
 {
     if (boomerangSpeed > 0 && !goBack)
     {
         if (projectileDirection == Direction.MoveUp)
         {
             yLoc -= boomerangSpeed;
         }
         else if (projectileDirection == Direction.MoveDown)
         {
             yLoc += boomerangSpeed;
         }
         else if (projectileDirection == Direction.MoveLeft)
         {
             xLoc -= boomerangSpeed;
         }
         else //MoveRight
         {
             xLoc += boomerangSpeed;
         }
         boomerangSpeed -= 1;
     }
     else
     {
         goBack          = true;
         boomerangSpeed += 1;
         if (xLoc - stateMachine.getXLoc() >= boomerangSpeed)
         {
             xLoc -= boomerangSpeed;
         }
         else if (xLoc - stateMachine.getXLoc() <= boomerangSpeed * -1)
         {
             xLoc += boomerangSpeed;
         }
         if (yLoc - stateMachine.getYLoc() >= boomerangSpeed)
         {
             yLoc -= boomerangSpeed;
         }
         else if (yLoc - stateMachine.getYLoc() <= boomerangSpeed * -1)
         {
             yLoc += boomerangSpeed;
         }
         if (Math.Abs(xLoc - stateMachine.getXLoc()) <= boomerangSpeed && Math.Abs(yLoc - stateMachine.getYLoc()) <= boomerangSpeed)
         {
             stateMachine.RemoveProjectile(this);
         }
     }
     destinationRectangle = new Rectangle(xLoc, yLoc, xSize, ySize);
     if (frame % 4 == 0)
     {
         sourceRectangle = new Rectangle(64, 185, 8, 15);
     }
     else if (frame % 4 == 1 || frame % 4 == 3)
     {
         sourceRectangle = new Rectangle(73, 185, 8, 15);
     }
     else if (frame % 4 == 2)
     {
         sourceRectangle = new Rectangle(82, 185, 8, 15);
     }
     if (frame % 8 == 0 || frame % 8 == 1 || frame % 8 == 2)
     {
         flip = SpriteEffects.None;
     }
     else if (frame % 8 == 3 || frame % 8 == 4)
     {
         flip = SpriteEffects.FlipHorizontally;
     }
     else if (frame % 8 == 5)
     {
         flip = SpriteEffects.FlipHorizontally | SpriteEffects.FlipVertically;
     }
     else if (frame % 8 == 6 || frame % 8 == 7)
     {
         flip = SpriteEffects.FlipVertically;
     }
     frame++;
 }