public static void addBullet(string type, ContentManager content) { if(type.Equals("pistol") && !Weapon.noPistolTotalAmmo) { Vector2 shotPos = new Vector2(pistolProjectle.position.X - CameraManager.getXOffset(), pistolProjectle.position.Y - CameraManager.getYOffset()); Projectile newProj = new Projectile(content, pistolProjectle.amountOfSheets, pistolProjectle.frameAmounts, pistolProjectle.sourceRect, getImgPaths(type), /*pistolProjectle.position*/shotPos, pistolProjectle.lengthOfTimePerFrame); newProj.spriteFlipping = Hero.spriteFlipping; newProj.setBulletType(BulletType.Pistol); setNewPistolBulletPosition(newProj); newProj.setRiseRun(15, 15); newProj.hitBox = new Rectangle((int)newProj.position.X, (int)newProj.position.Y, newProj.sourceRect[(int)CurrentProjectileType.Bullet].Width, newProj.sourceRect[(int)CurrentProjectileType.Bullet].Height); activeProjectiles.AddFirst(newProj); newProj.shiftedPosition.X = newProj.position.X; newProj.shiftedPosition.Y = newProj.position.Y; Weapon.fireWeapon(type); } else if(type.Equals("rifle") && !Weapon.noRifleTotalAmmo) { Vector2 shotPos = new Vector2(pistolProjectle.position.X - CameraManager.getXOffset(), pistolProjectle.position.Y - CameraManager.getYOffset()); Projectile newProj = new Projectile(content, rifleProjectile.amountOfSheets, rifleProjectile.frameAmounts, rifleProjectile.sourceRect, getImgPaths(type), shotPos, rifleProjectile.lengthOfTimePerFrame); newProj.spriteFlipping = Hero.spriteFlipping; newProj.setBulletType(BulletType.Rifle); setNewRifleBulletPosition(newProj); newProj.setRiseRun(20, 20); newProj.hitBox = new Rectangle((int)newProj.position.X, (int)newProj.position.Y, newProj.sourceRect[(int)CurrentProjectileType.Bullet].Width, newProj.sourceRect[(int)CurrentProjectileType.Bullet].Height); activeProjectiles.AddFirst(newProj); newProj.shiftedPosition.X = newProj.position.X; newProj.shiftedPosition.Y = newProj.position.Y; Weapon.fireWeapon(type); } else if(type.Equals("rckt") && !Weapon.noRcktTotalAmmo) { Vector2 shotPos = new Vector2(pistolProjectle.position.X - CameraManager.getXOffset(), pistolProjectle.position.Y - CameraManager.getYOffset()); Projectile newProj = new Projectile(content, rcktProjectile.amountOfSheets, rcktProjectile.frameAmounts, rcktProjectile.sourceRect, getImgPaths(type), shotPos, rcktProjectile.lengthOfTimePerFrame); newProj.spriteFlipping = Hero.spriteFlipping; newProj.setBulletType(BulletType.Rocket); setNewRcktBulletPosition(newProj); newProj.setRiseRun(10, 10); newProj.hitBox = new Rectangle((int)newProj.position.X, (int)newProj.position.Y, newProj.sourceRect[(int)CurrentProjectileType.Bullet].Width, newProj.sourceRect[(int)CurrentProjectileType.Bullet].Height); activeProjectiles.AddFirst(newProj); newProj.shiftedPosition.X = newProj.position.X; newProj.shiftedPosition.Y = newProj.position.Y; Weapon.fireWeapon(type); } else if(type.Equals("energy") && Hero.getEnergy() != 0) { Vector2 shotPos = new Vector2(pistolProjectle.position.X - CameraManager.getXOffset(), pistolProjectle.position.Y - CameraManager.getYOffset()); Projectile newProj = new Projectile(content, energyProjectile.amountOfSheets, energyProjectile.frameAmounts, energyProjectile.sourceRect, getImgPaths(type), shotPos, energyProjectile.lengthOfTimePerFrame); newProj.spriteFlipping = Hero.spriteFlipping; newProj.setBulletType(BulletType.Acid); setNewEnergyBulletPosition(newProj); newProj.archingProjectile = true; if(Hero.getCurrentHeroState() == (int) BodySpriteIndex.Magic) newProj.setRiseRun(10 + random.Next(2), 14 + random.Next(2)); // this is where you can tweak the arch of the acid // else if (Hero.getCurrentHeroState() == (int)BodySpriteIndex.MagicUp) newProj.setRiseRun(15 + random.Next(2), 10 + random.Next(2)); // this is where you can tweak the arch of the acid // else if (Hero.getCurrentHeroState() == (int)BodySpriteIndex.CrouchMagic) newProj.setRiseRun(10 + random.Next(2), 18 + random.Next(2)); // this is where you can tweak the arch of the acid // else if (Hero.getCurrentHeroState() == (int)BodySpriteIndex.MagicDown) newProj.setRiseRun(-10 + random.Next(2), 14 + random.Next(2)); // this is where you can tweak the arch of the acid // else { } newProj.hitBox = new Rectangle((int)newProj.position.X, (int)newProj.position.Y, newProj.sourceRect[(int)CurrentProjectileType.Bullet].Width, newProj.sourceRect[(int)CurrentProjectileType.Bullet].Height); activeProjectiles.AddFirst(newProj); newProj.shiftedPosition.X = newProj.position.X; newProj.shiftedPosition.Y = newProj.position.Y; } }
private static void setNewRifleBulletPosition(Projectile newProj) { if (Hero.getCurrentHeroState() == (int)BodySpriteIndex.Shoot) { newProj.position.Y += 30; newProj.position.X += 45; if (newProj.spriteFlipping) newProj.position.X -= 150; // offset of the bullet to come out of the right side of the hero when he's shooting // } else if (Hero.getCurrentHeroState() == (int)BodySpriteIndex.CrouchShoot) { newProj.position.Y += 50; newProj.position.X += 45; if (newProj.spriteFlipping) newProj.position.X -= 100; // offset of the bullet to come out of the right side of the hero when he's shooting // } else if (Hero.getCurrentHeroState() == (int)BodySpriteIndex.ShootUp) { newProj.shotRight = false; newProj.shotUp = true; newProj.position.Y -= 65; newProj.position.X -= 28; if (newProj.spriteFlipping) newProj.position.X -= 20; // offset of the bullet to come out of the right side of the hero when he's shooting // } else if (Hero.getCurrentHeroState() == (int)BodySpriteIndex.ShootDown) { newProj.shotRight = false; newProj.shotUp = false; newProj.position.Y += 100; newProj.position.X -= 28; } }
private static void setNewRcktBulletPosition(Projectile newProj) { if (Hero.getCurrentHeroTransitionState() == (int)BodyTransitionIndex.ShootStart) { if (Hero.spriteFlipping) newProj.shotRight = true; newProj.position.Y -= 10; if (newProj.spriteFlipping) newProj.position.X -= 100; // offset of the bullet to come out of the right side of the hero when he's shooting // } else if (Hero.getCurrentHeroTransitionState() == (int)BodyTransitionIndex.ShootCrouchStart) { if (Hero.spriteFlipping) newProj.shotRight = true; newProj.position.Y += 20; newProj.position.X += 25; if (newProj.spriteFlipping) newProj.position.X -= 100; // offset of the bullet to come out of the right side of the hero when he's shooting // } else if (Hero.getCurrentHeroTransitionState() == (int)BodyTransitionIndex.ShootUpStart) { newProj.shotRight = false; newProj.shotUp = true; newProj.position.Y -= 65; newProj.position.X -= 50; if (newProj.spriteFlipping) newProj.position.X += 20; } else if (Hero.getCurrentHeroTransitionState() == (int)BodyTransitionIndex.ShootDownStart) { newProj.shotRight = false; newProj.shotUp = false; newProj.position.Y += 65; newProj.position.X -= 28; } }
private static void setNewEnergyBulletPosition(Projectile newProj) { if (Hero.getCurrentHeroState() == (int)BodySpriteIndex.Magic) { if (Hero.spriteFlipping) newProj.spriteFlipping = true; newProj.position.Y -= 20; newProj.position.X += 5; if (newProj.spriteFlipping) { newProj.position.X -= 100; // offset of the bullet to come out of the right side of the hero when he's shooting // newProj.run = newProj.run * -1; } } else if (Hero.getCurrentHeroState() == (int)BodySpriteIndex.CrouchMagic) { newProj.position.Y += 10; newProj.position.X += 20; if (newProj.spriteFlipping) { newProj.position.X -= 100; // offset of the bullet to come out of the right side of the hero when he's shooting // newProj.run = newProj.run*-1; } } else if (Hero.getCurrentHeroState() == (int)BodySpriteIndex.MagicUp) { newProj.shotRight = false; newProj.shotUp = true; newProj.position.Y -= 65; newProj.position.X -= 28; if (newProj.spriteFlipping) { newProj.position.X -= 50; // offset of the bullet to come out of the right side of the hero when he's shooting // newProj.run = newProj.run * -1; } } else if (Hero.getCurrentHeroState() == (int)BodySpriteIndex.MagicDown) { newProj.shotRight = false; newProj.shotUp = false; newProj.position.Y += 50; newProj.position.X += 5; if (newProj.spriteFlipping) { newProj.position.X -= 100; // offset of the bullet to come out of the right side of the hero when he's shooting // newProj.run = newProj.run * -1; } } }
public static void loadProjectiles(ContentManager content) { initalizeStagingArrays(); loadPistolBullet(); pistolProjectle = new Projectile(content, amountOfSheets, frameAmounts, frameRects, imgPaths, startingPos, spriteDelayTimes); loadRifleBullet(); rifleProjectile = new Projectile(content, amountOfSheets, frameAmounts, frameRects, imgPaths, startingPos, spriteDelayTimes); loadRcktBullet(); rcktProjectile = new Projectile(content, amountOfSheets, frameAmounts, frameRects, imgPaths, startingPos, spriteDelayTimes); loadEnergyProjectiles(); energyProjectile = new Projectile(content, amountOfSheets, frameAmounts, frameRects, imgPaths, startingPos, spriteDelayTimes); }
// returns the damage that would be dealt by the passed projectile // public static int getDmgCoefficient(Projectile projectile) { if (projectile.getBulletType() == BulletType.Pistol) return 15; // pistol dmg // else if (projectile.getBulletType() == BulletType.Rifle) return 3; else if (projectile.getBulletType() == BulletType.Rocket) return 100; else if (projectile.getBulletType() == BulletType.Acid) return 5; else return 0; }
public static void deactivateBullet(Projectile bullet) { ProjectileManager.activeProjectiles.Remove(bullet); }