void ControlGunWithMouse()
    {
        // Get the mouse position
        cameraRay = Camera.main.ScreenPointToRay(Input.mousePosition);
        mouseRealWorldPosition = cameraRay.GetPoint(cameraToGunDistance);

        // Find the direction from mouse to gun
        gunDirection.x = mouseRealWorldPosition.x - gun.transform.position.x;
        gunDirection.y = mouseRealWorldPosition.y - gun.transform.position.y;

        // Turn the gun around
        gun.transform.rotation = LookRotation2D(gunDirection);

        // Check if we want to fire a bullet
        if (Input.GetMouseButtonDown(0) == true)
        {
            isFiring = true;
            gunType.Fire(gun.transform);
            gunParticles.Emit(50);
            lastFired = Time.time;
        }
        else if (isFiring == true)
        {
            if (Input.GetMouseButtonUp(0) == true)
            {
                isFiring = false;
            }
            else if ((Time.time - lastFired) > gunType.GapBetweenFire)
            {
                gunType.Fire(gun.transform);
                gunParticles.Emit(50);
                lastFired = Time.time;
            }
        }
    }
        public void Action(IPlayer mainPlayer, ICollection <IPlayer> civilPlayers)
        {
            IPlayer aliveCivilPlayer = civilPlayers.FirstOrDefault(cp => cp.IsAlive);
            IGun    loadedGun        = mainPlayer.GunRepository.Models.FirstOrDefault(g => g.CanFire);

            while (aliveCivilPlayer != null && loadedGun != null)
            {
                int shots = loadedGun.Fire();
                aliveCivilPlayer.TakeLifePoints(shots);

                aliveCivilPlayer = civilPlayers.FirstOrDefault(cp => cp.IsAlive);
                loadedGun        = mainPlayer.GunRepository.Models.FirstOrDefault(g => g.CanFire);
            }

            List <IPlayer> alivePlayers = civilPlayers.Where(p => p.IsAlive).ToList();

            foreach (IPlayer player in alivePlayers)
            {
                loadedGun = player.GunRepository.Models.FirstOrDefault(g => g.CanFire);
                while (mainPlayer.IsAlive && loadedGun != null)
                {
                    int shots = loadedGun.Fire();
                    mainPlayer.TakeLifePoints(shots);
                }
            }
        }
示例#3
0
        public void Action(IPlayer mainPlayer, ICollection <IPlayer> civilPlayers)
        {
            IGun gun = mainPlayer.GunRepository.Models.FirstOrDefault();

            if (gun != null)
            {
                foreach (var player in civilPlayers)
                {
                    while (gun.CanFire && player.IsAlive)
                    {
                        int bulletsFired = gun.Fire();
                        player.TakeLifePoints(bulletsFired);
                    }

                    if (!gun.CanFire)
                    {
                        this.gunRepository.Remove(gun);
                        gun = mainPlayer.GunRepository.Models.FirstOrDefault();
                    }
                }
            }

            List <IPlayer> alivePlayers = civilPlayers
                                          .Where(x => x.IsAlive)
                                          .ToList();

            foreach (var player in alivePlayers)
            {
                IGun civilGun = player.GunRepository.Models.FirstOrDefault();

                if (civilGun != null)
                {
                    while (player.GunRepository.Models.Count > 0 && mainPlayer.IsAlive)
                    {
                        while (gun.TotalBullets > 0 && mainPlayer.IsAlive)
                        {
                            int bulletsFired = gun.Fire();
                            player.TakeLifePoints(bulletsFired);
                        }

                        this.gunRepository.Remove(gun);
                        gun = mainPlayer.GunRepository.Models.FirstOrDefault();
                    }

                    if (mainPlayer.IsAlive)
                    {
                        break;
                    }
                }
            }
        }
示例#4
0
        public void Action(IPlayer mainPlayer, ICollection <IPlayer> civilPlayers)
        {
            while (true)
            {
                IGun    gun    = mainPlayer.GunRepository.Models.FirstOrDefault(g => g.CanFire == true);
                IPlayer target = civilPlayers.FirstOrDefault(t => t.IsAlive == true);

                if (gun == null || target == null)
                {
                    break;
                }

                int damagePoints = gun.Fire();
                target.TakeLifePoints(damagePoints);
            }

            while (true)
            {
                IPlayer player = civilPlayers.FirstOrDefault(t => t.IsAlive == true);
                IGun    gun    = player.GunRepository.Models.FirstOrDefault(g => g.CanFire == true);

                if (player == null || gun == null)
                {
                    break;
                }

                int damagePoints = gun.Fire();
                mainPlayer.TakeLifePoints(damagePoints);

                if (mainPlayer.IsAlive == false)
                {
                    break;
                }
            }
        }
        private void PlayerAttack(IPlayer mainPlayer, ICollection <IPlayer> civilPlayers)
        {
            var players = civilPlayers.Where(x => x.IsAlive == true).Where(x => x.GunRepository.Models.Count > 0);

            foreach (IPlayer player in players)
            {
                IGun gun = player.GunRepository.Models.FirstOrDefault(x => x.CanFire == true);

                while (true)
                {
                    mainPlayer.TakeLifePoints(gun.Fire());

                    if (!gun.CanFire)
                    {
                        player.GunRepository.Remove(gun);

                        gun = player.GunRepository.Models.FirstOrDefault(x => x.CanFire == true);
                    }

                    if (!mainPlayer.IsAlive)
                    {
                        return;
                    }

                    if (gun == null)
                    {
                        break;
                    }
                }
            }
        }
        private void MainPlayerAttack(IPlayer mainPlayer, ICollection <IPlayer> civilPlayers)
        {
            IGun    gun    = mainPlayer.GunRepository.Models.FirstOrDefault(x => x.CanFire == true);
            IPlayer player = civilPlayers.FirstOrDefault(x => x.IsAlive == true);

            while (true)
            {
                if (player == null || gun == null)
                {
                    break;
                }

                player.TakeLifePoints(gun.Fire());

                if (!gun.CanFire)
                {
                    player.GunRepository.Remove(gun);

                    gun = mainPlayer.GunRepository.Models.FirstOrDefault(x => x.CanFire == true);
                }

                if (!player.IsAlive)
                {
                    civilPlayers.Remove(player);
                    this.deadCivilPlayers++;

                    player = civilPlayers.FirstOrDefault(x => x.IsAlive == true);
                }

                if (player == null || gun == null)
                {
                    break;
                }
            }
        }
示例#7
0
        protected override void Update()
        {
            if (controlEnabled)
            {
                m_Move.x = Input.GetAxis("Horizontal");

                if (m_JumpState == JumpState.Grounded && Input.GetButtonDown("Jump"))
                {
                    m_JumpState = JumpState.PrepareToJump;
                }
                else if (Input.GetButtonUp("Jump"))
                {
                    m_IsStopJump = true;
                }
                else if (Input.GetButton("Fire1"))
                {
                    if (m_Gun != null)
                    {
                        m_Gun.Fire();
                    }
                    else
                    {
                        Debug.LogError("检查是否添加了枪械");
                    }
                }
            }
            else if (m_Move.x != 0)
            {
                m_Move.x = Mathf.Lerp(m_Move.x, 0, Time.deltaTime);
            }

            UpdateJumpState();
            base.Update();
        }
示例#8
0
        public void HandleInput(TouchCollection previousTouchCollection, TouchCollection currentTouchCollection, GameTime gameTime)
        {
            if (currentTouchCollection.Count > 0 && (currentTouchCollection[0].Position.Y / ScaleY) < Defaults.GraphicsHeight - ContentHandler.Images["ColorButton_Off"].Height)
            {
                Gun.Fire(new Vector2(Position.X, Position.Y), new Vector2(0, -1));

                Position = new Vector2((int)(currentTouchCollection[0].Position.X / ScaleX), (int)(currentTouchCollection[0].Position.Y / ScaleY));
            }
        }
        public void Shoot()
        {
            Debug.Log("Trying to make a shoot");

            if (_isArmed)
            {
                _weapon.Fire();
            }
        }
示例#10
0
        public void Action(IPlayer mainPlayer, ICollection <IPlayer> civilPlayers)
        {
            IGun    gun   = mainPlayer.GunRepository.Models.FirstOrDefault(g => g.CanFire);
            IPlayer civil = civilPlayers.FirstOrDefault(c => c.IsAlive);

            if (gun == null)
            {
                return;
            }

            if (civil == null)
            {
                return;
            }

            while (civilPlayers.Count > 0 && mainPlayer.GunRepository.Models.Any(g => g.CanFire))
            {
                civil.TakeLifePoints(gun.Fire());
                if (!gun.CanFire)
                {
                    gun = mainPlayer.GunRepository.Models.FirstOrDefault(g => g.CanFire);
                }
                else if (!civil.IsAlive)
                {
                    civilPlayers.Remove(civil);
                    civil = civilPlayers.FirstOrDefault(c => c.IsAlive);
                }
            }

            while (mainPlayer.IsAlive)
            {
                mainPlayer.TakeLifePoints(gun.Fire());
                if (!gun.CanFire)
                {
                    gun = civil.GunRepository.Models.FirstOrDefault(g => g.CanFire);
                }
                else if (civil.GunRepository.Models.Count == 0)
                {
                    civil = civilPlayers.FirstOrDefault(c => c.IsAlive);
                }
            }
        }
示例#11
0
        public void Action(IPlayer mainPlayer, ICollection <IPlayer> civilPlayers)
        {
            IGun    currGun    = mainPlayer.GunRepository.Models.First();
            IPlayer currPlayer = civilPlayers.First();

            while ((mainPlayer.GunRepository.Models.Count != 0 && currGun.CanFire) ||
                   (civilPlayers.Count != 0 && !currPlayer.IsAlive))
            {
                if (!currGun.CanFire)
                {
                    currGun = mainPlayer.GunRepository.Models.First();
                    mainPlayer.GunRepository.Remove(currGun);
                }

                if (!currPlayer.IsAlive)
                {
                    currPlayer = civilPlayers.First();
                    civilPlayers.Remove(currPlayer);
                }

                while (currPlayer.IsAlive && currGun.CanFire)
                {
                    currPlayer.TakeLifePoints(currGun.Fire());
                }
            }
            if (currPlayer.IsAlive)
            {
                while (civilPlayers.Count != 0 && currPlayer.GunRepository.Models.Count != 0 && !mainPlayer.IsAlive)
                {
                    while (currPlayer.GunRepository.Models.Count != 0 || !mainPlayer.IsAlive)
                    {
                        currGun = currPlayer.GunRepository.Models.First();
                        currPlayer.GunRepository.Remove(currGun);
                        while (!mainPlayer.IsAlive || !currGun.CanFire)
                        {
                            mainPlayer.TakeLifePoints(currGun.Fire());
                        }
                    }
                }
            }
        }
        public void Action(IPlayer mainPlayer, ICollection <IPlayer> civilPlayers)
        {
            while (mainPlayer.GunRepository.Models.Count > 0 && civilPlayers.Count > 0)
            {
                IGun mainPlayerGun = mainPlayer.GunRepository.Models.ToList()[0];

                while (mainPlayerGun.CanFire && civilPlayers.Count > 0)
                {
                    IPlayer player = civilPlayers.ToList()[0];

                    int bullets = mainPlayerGun.Fire();
                    player.TakeLifePoints(bullets);

                    if (!player.IsAlive)
                    {
                        civilPlayers.Remove(player);
                    }
                }

                mainPlayer.GunRepository.Remove(mainPlayerGun);
            }

            List <IPlayer> players = new List <IPlayer>();

            players = civilPlayers.ToList();

            while (mainPlayer.IsAlive && players.Count > 0)
            {
                IPlayer player = players.ToList()[0];

                if (player.GunRepository.Models.Count > 0)
                {
                    IGun playerGun = player.GunRepository.Models.ToList()[0];

                    while (playerGun.CanFire && mainPlayer.IsAlive)
                    {
                        int bullets = playerGun.Fire();
                        mainPlayer.TakeLifePoints(bullets);
                    }

                    player.GunRepository.Remove(playerGun);

                    if (player.GunRepository.Models.Count == 0)
                    {
                        players.Remove(player);
                    }
                }
                else
                {
                    players.Remove(player);
                }
            }
        }
示例#13
0
        public void Action(IPlayer mainPlayer, ICollection <IPlayer> civilPlayers)
        {
            while (mainPlayer.GunRepository.Models.Any() && civilPlayers.Any())
            {
                IGun    gun    = mainPlayer.GunRepository.Models.First();
                IPlayer player = civilPlayers.First();

                while (gun.CanFire && player.IsAlive)
                {
                    int currentPoints = gun.Fire();
                    player.TakeLifePoints(currentPoints);
                }

                if (!gun.CanFire)
                {
                    mainPlayer.GunRepository.Remove(gun);
                }

                if (!player.IsAlive)
                {
                    civilPlayers.Remove(player);
                }
            }

            foreach (IPlayer player in civilPlayers)
            {
                while (player.GunRepository.Models.Any())
                {
                    IGun gun = player.GunRepository.Models.First();

                    while (gun.CanFire && mainPlayer.IsAlive)
                    {
                        int currentPoints = gun.Fire();
                        mainPlayer.TakeLifePoints(currentPoints);
                    }

                    if (!gun.CanFire)
                    {
                        player.GunRepository.Remove(gun);
                    }

                    if (!mainPlayer.IsAlive)
                    {
                        return;
                    }
                }
            }
        }
示例#14
0
        public void Action(IPlayer mainPlayer, ICollection <IPlayer> civilPlayers)
        {
            while (true)
            {
                IPlayer currentCivilPlayer = civilPlayers.FirstOrDefault(p => p.IsAlive == true);

                if (currentCivilPlayer == null)
                {
                    break;
                }

                IGun gun = mainPlayer.GunRepository.Models.FirstOrDefault(g => g.CanFire == true);

                if (gun == null)
                {
                    break;
                }


                currentCivilPlayer.TakeLifePoints(gun.Fire());
            }

            while (true)
            {
                IPlayer currentCivilPlayer = civilPlayers.FirstOrDefault(p => p.IsAlive == true);

                if (currentCivilPlayer == null)
                {
                    break;
                }

                IGun gun = currentCivilPlayer.GunRepository.Models.FirstOrDefault(g => g.CanFire == true);

                if (gun == null)
                {
                    break;
                }

                mainPlayer.TakeLifePoints(gun.Fire());

                if (mainPlayer.IsAlive == false)
                {
                    break;
                }
            }
        }
示例#15
0
        public void Action(IPlayer mainPlayer, ICollection <IPlayer> civilPlayers)
        {
            while (true)
            {
                IGun currentGun = mainPlayer.GunRepository.Models.FirstOrDefault(g => g.CanFire || g.TotalBullets > 0);
                if (currentGun == null)
                {
                    break;
                }

                IPlayer civilPlayer = civilPlayers.FirstOrDefault(p => p.IsAlive);
                if (civilPlayer == null)
                {
                    break;
                }

                civilPlayer.TakeLifePoints(currentGun.Fire());
                //if (civilPlayer.IsAlive == false)
                //{
                //    break;
                //}
            }

            foreach (IPlayer civilPlayer in civilPlayers.Where(p => p.IsAlive))
            {
                while (true)
                {
                    IGun currentGun = civilPlayer.GunRepository.Models.FirstOrDefault(g => g.CanFire || g.TotalBullets > 0);
                    if (currentGun == null)
                    {
                        break;
                    }

                    mainPlayer.TakeLifePoints(currentGun.Fire());
                    if (!mainPlayer.IsAlive)
                    {
                        return;
                    }
                }
            }
        }
示例#16
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Mouse0))
        {
            //startAudio
            gunSoundSource.Play();
        }
        if (Input.GetKey(KeyCode.Mouse0))
        {
            m_gunScript.Fire();
        }
        Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hitInfo;

        if (Physics.Raycast(ray, out hitInfo))
        {
            m_gunScript.LookAt(hitInfo.point);
        }
        if (Input.GetKeyUp(KeyCode.Mouse0))
        {
            gunSoundSource.Pause();
            //stop audio
        }
    }
        public void Action(IPlayer mainPlayer, ICollection <IPlayer> civilPlayers)
        {
            Queue <IGun>    guns    = new Queue <IGun>(mainPlayer.GunRepository.Models);
            Queue <IPlayer> victims = new Queue <IPlayer>(civilPlayers);

            while (victims.Count > 0 && guns.Count > 0)
            {
                IPlayer victim = victims.Peek();
                IGun    gun    = guns.Peek();

                while (victim.IsAlive && (gun.BulletsPerBarrel > 0 || gun.TotalBullets > 0))
                {
                    victim.TakeLifePoints(gun.Fire());
                }

                if (victim.IsAlive)
                {
                    guns.Dequeue();
                }
                else
                {
                    if (gun.BulletsPerBarrel <= 0 && gun.TotalBullets <= 0)
                    {
                        guns.Dequeue();
                    }

                    victims.Dequeue();
                    civilPlayers.Remove(victim);
                }
            }

            while (victims.Count > 0)
            {
                IPlayer victim = victims.Peek();

                while (victim.GunRepository.Models.Count > 0)
                {
                    IGun gun = victim.GunRepository.Models.First();

                    while ((gun.BulletsPerBarrel > 0 || gun.TotalBullets > 0) && mainPlayer.IsAlive)
                    {
                        mainPlayer.TakeLifePoints(gun.Fire());
                    }

                    if (mainPlayer.IsAlive)
                    {
                        victim.GunRepository.Remove(gun);
                    }
                    else
                    {
                        break;
                    }
                }

                if (!mainPlayer.IsAlive)
                {
                    break;
                }

                victims.Dequeue();
                civilPlayers.Remove(victim);
            }
        }
        public void Action(IPlayer mainPlayer, ICollection <IPlayer> civilPlayers)
        {
            List <IGun> repository = mainPlayer.GunRepository.Models.ToList();

            while (civilPlayers.Count != 0)
            {
                if (repository.Count == 0)
                {
                    break;
                }

                IGun    gun    = repository.First();
                IPlayer player = civilPlayers.First();

                while (gun.CanFire && player.IsAlive)
                {
                    player.TakeLifePoints(gun.Fire());
                }

                if (player.IsAlive == false)
                {
                    civilPlayers.Remove(player);
                }

                if (gun.CanFire == false)
                {
                    mainPlayer.GunRepository.Remove(gun);
                    repository.Remove(gun);
                }
            }

            if (civilPlayers.Count != 0)
            {
                bool alive = true;

                foreach (var player in civilPlayers)
                {
                    List <IGun> playerRepo = player.GunRepository.Models.ToList();

                    if (playerRepo.Count != 0)
                    {
                        foreach (var gun in playerRepo)
                        {
                            while (gun.CanFire && mainPlayer.IsAlive)
                            {
                                mainPlayer.TakeLifePoints(gun.Fire());
                            }

                            if (mainPlayer.IsAlive == false)
                            {
                                alive = false;
                                break;
                            }
                        }
                    }

                    if (!alive)
                    {
                        break;
                    }
                }
            }
        }
示例#19
0
        public void Action(IPlayer mainPlayer, ICollection <IPlayer> civilPlayers)
        {
            IGun gun = null;

            #region MainPlayer
            while (mainPlayer.GunRepository.Models.Count > 0)
            {
                foreach (var firstGun in mainPlayer.GunRepository.Models)
                {
                    gun = firstGun;
                    break;
                }

                while (true)
                {
                    if (civilPlayers.Count == 0)
                    {
                        return;
                    }
                    if (gun.CanFire)
                    {
                        var dmg = gun.Fire();
                        civilPlayers.First().TakeLifePoints(dmg);

                        if (!civilPlayers.First().IsAlive)
                        {
                            civilPlayers.Remove(civilPlayers.First());
                        }
                    }
                    else
                    {
                        break;
                    }
                }
            }
            #endregion

            #region CivilPlayers
            var currentCivilPlayers = civilPlayers.ToList();
            for (int i = 0; i < civilPlayers.Count; i++)
            {
                var player = currentCivilPlayers[i];

                foreach (var firstGun in player.GunRepository.Models)
                {
                    gun = firstGun;
                    break;
                }

                while (true)
                {
                    if (!mainPlayer.IsAlive)
                    {
                        return;
                    }

                    if (gun.CanFire)
                    {
                        var dmg = gun.Fire();
                        mainPlayer.TakeLifePoints(dmg);
                    }
                    else
                    {
                        break;
                    }
                }
            }
            #endregion
        }
示例#20
0
        public void Action(IPlayer mainPlayer, ICollection <IPlayer> civilPlayers)
        {
            IGun currentGun = null;


            foreach (var civilian in civilPlayers)
            {
                if (mainPlayer.GunRepository.Models.Count > 0)
                {
                    currentGun = mainPlayer.GunRepository.Models.FirstOrDefault(x => x.CanFire);
                }
                while (civilian.IsAlive)
                {
                    if (currentGun == null)
                    {
                        break;
                    }
                    if (!currentGun.CanFire)
                    {
                        mainPlayer.GunRepository.Remove(currentGun);
                        if (mainPlayer.GunRepository.Models.Count == 0)
                        {
                            break;
                        }

                        currentGun = mainPlayer.GunRepository.Models.FirstOrDefault(x => x.CanFire);
                    }

                    civilian.TakeLifePoints(currentGun.Fire());
                }
            }
            var survivedCivilians = civilPlayers.Where(x => x.IsAlive).ToList();

            if (survivedCivilians.Count > 0)
            {
                foreach (var survivor in survivedCivilians)
                {
                    IGun civilianGun = survivor.GunRepository.Models.FirstOrDefault(g => g.CanFire);
                    while (mainPlayer.IsAlive)
                    {
                        if (civilianGun == null)
                        {
                            break;
                        }
                        if (!civilianGun.CanFire)
                        {
                            survivor.GunRepository.Remove(civilianGun);

                            civilianGun = survivor.GunRepository.Models.FirstOrDefault(g => g.CanFire);
                        }

                        mainPlayer.TakeLifePoints(civilianGun.Fire());
                    }
                }
            }
            //var currentGun = mainPlayer.GunRepository.Models.FirstOrDefault(x => x.CanFire);
            //foreach (var civilPlayer in civilPlayers)
            //{
            //	while (civilPlayer.IsAlive)
            //	{


            //		if (currentGun == null)
            //		{
            //			break;
            //		}

            //		while (currentGun.CanFire)
            //		{
            //			int lifeToTake = currentGun.Fire();

            //			civilPlayer.TakeLifePoints(lifeToTake);
            //		}

            //	}

            //}

            //foreach (var civilPlayer in civilPlayers.Where(x => x.IsAlive))
            //{
            //	while (mainPlayer.IsAlive)
            //	{
            //		var currentGun2 = civilPlayer.GunRepository.Models.FirstOrDefault(x => x.CanFire);

            //		if (currentGun2 == null)
            //		{
            //			break;
            //		}

            //		while (currentGun2.CanFire)
            //		{
            //			int lifeToTake = currentGun2.Fire();

            //			mainPlayer.TakeLifePoints(lifeToTake);
            //		}

            //	}
            //}
        }
示例#21
0
        public void Fire()
        {
            _gun.Fire();

            ShowBulletsInfo();
        }
示例#22
0
 private void Shoot()
 {
     _gun.Fire(_ammoManager.Ammo.gameObject);
 }