public void Draw(SpriteBatch sb, Moveable_Object.CardinalDirection direction) { switch (direction) { case Moveable_Object.CardinalDirection.up: sb.Draw(spriteSheet.texture, position, null, new Rectangle(spriteSheet.frameSize.X * currentFrame.X, spriteSheet.frameSize.Y * currentFrame.Y, spriteSheet.frameSize.X, spriteSheet.frameSize.Y), new Vector2(spriteSheet.frameSize.X / 2, spriteSheet.frameSize.Y / 2), 0, Vector2.One, color, SpriteEffects.None, 1f); break; case Moveable_Object.CardinalDirection.down: sb.Draw(spriteSheet.texture, position, null, new Rectangle(spriteSheet.frameSize.X * currentFrame.X, spriteSheet.frameSize.Y * currentFrame.Y, spriteSheet.frameSize.X, spriteSheet.frameSize.Y), new Vector2(spriteSheet.frameSize.X / 2, spriteSheet.frameSize.Y / 2), (float)Math.PI / 2f * 2, Vector2.One, color, SpriteEffects.None, 1f); break; case Moveable_Object.CardinalDirection.right: sb.Draw(spriteSheet.texture, position, null, new Rectangle(spriteSheet.frameSize.X * currentFrame.X, spriteSheet.frameSize.Y * currentFrame.Y, spriteSheet.frameSize.X, spriteSheet.frameSize.Y), new Vector2(spriteSheet.frameSize.X / 2, spriteSheet.frameSize.Y / 2), (float)Math.PI / 2f, Vector2.One, color, SpriteEffects.None, 1f); break; case Moveable_Object.CardinalDirection.left: sb.Draw(spriteSheet.texture, position, null, new Rectangle(spriteSheet.frameSize.X * currentFrame.X, spriteSheet.frameSize.Y * currentFrame.Y, spriteSheet.frameSize.X, spriteSheet.frameSize.Y), new Vector2(spriteSheet.frameSize.X / 2, spriteSheet.frameSize.Y / 2), (float)Math.PI / 2f * 3, Vector2.One, color, SpriteEffects.None, 1f); break; } }
/// <summary> /// Fires a new projectile. /// </summary> /// <param name="playerDamageMultiplyier">Damage multiplier of the player upon firing.</param> /// <param name="direction">The direction of the Projectile.</param> public void CreateNewProjectile(float playerDamageMultiplyier, Moveable_Object.CardinalDirection direction) { Projectile newProjectile = new Projectile(projectileType.hitboxLength, projectileType.hitboxWidth, projectileType.spriteSheet, projectileType.timeBetweenFrames, projectileType.speed, middlepos, direction, baseDamage, baseRange, rangeMultiplyier, playerDamageMultiplyier); Level.projectilesOnScreenList.Add(newProjectile); }