コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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;
            }
        }
コード例 #4
0
        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;
                }
            }
        }
コード例 #5
0
        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);
        }
コード例 #6
0
 // 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;
 }
コード例 #7
0
 public static void deactivateBullet(Projectile bullet)
 {
     ProjectileManager.activeProjectiles.Remove(bullet);
 }