Exemple #1
0
        // Rate Of Fire
        protected IEnumerator FireRate(float rateTime)
        {
            weaponReady = false;

            //yield return new WaitForSeconds( rateTime );

            for (float el = 0f; el < rateTime; el += Time.deltaTime)
            {
                yield return(null);
            }

            weaponReady = true;

            if (owner.isPlayer)
            {
                if (checkAmmo && shotsNumber > 0)
                {
                    SecondStageShooting();
                    shotsNumber--;
                }

                if (checkAmmo == false)
                {
                    WeaponsManager.ChangeEmptyToFirstAvaliable();
                }
            }
        }
Exemple #2
0
        // Add Ammo
        public static bool AddAmmo(int index, ref int addАmount)
        {
            if ((index < 0) || (index >= size))
            {
                Debug.LogError("AddAmmo ERROR: Array index out of range.");
                return(false);
            }

            int currentAmmo = GetCurrentAmmo(index);
            int maxAmmo     = GetMaxAmmo(index);

            if (currentAmmo >= maxAmmo)
            {
                return(false);
            }

            //
            int missingAmmo = Mathf.Max(0, maxAmmo - currentAmmo);

            currentAmmo += Mathf.Min(Mathf.Max(0, addАmount), missingAmmo);
            addАmount    = Mathf.Max(0, addАmount -= missingAmmo);
            SetCurrentAmmo(index, currentAmmo);

            WeaponsManager.UpdateHud();
            return(true);
        }
Exemple #3
0
        // Pickup Item
        public void PickupItem()
        {
            Pickuped.Invoke();

            switch (pickupType)
            {
            case EPickupType.Health:
                if (PlayerCharacter.Instance.IncrementHealth(amount))
                {
                    DestroyIt();
                }
                break;

            case EPickupType.Melee:
            case EPickupType.Firearms:
                if (WeaponsManager.PickupWeapon(weaponIndex, (pickupType == EPickupType.Firearms), amount))
                {
                    DestroyIt();
                }
                else
                {
                    PickupAmmo();
                }
                break;

            case EPickupType.Ammo:
                PickupAmmo();
                break;

            case EPickupType.Thrown:
                if (WeaponsManager.PickupWeapon(weaponIndex, true, amount))
                {
                    amount--;

                    if (amount > 0)
                    {
                        PickupAmmo();
                    }
                    else
                    {
                        DestroyIt();
                    }
                }
                else
                {
                    PickupAmmo();
                }
                break;
            }
        }
Exemple #4
0
            // Set PointSprite
            internal static void SetPointSprite(ECrosshairMode mode)
            {
                if (mode == ECrosshairMode.Point)
                {
                    m_Instance.pointRT.sizeDelta = Vector2.one * 2f;
                    WeaponsManager.UpdateHud(true);
                }
                else if (mode == ECrosshairMode.None)
                {
                    m_Instance.pointRT.sizeDelta = Vector2.zero;
                    WeaponsManager.UpdateHud(true);
                }
                else
                {
                    m_Instance.pointRT.sizeDelta = Vector2.one * 64f;
                    SetActive(ECrosshairView.OnlyPoint);
                }

                switch (mode)
                {
                case ECrosshairMode.None:
                case ECrosshairMode.Point:
                    m_Instance.pointImg.sprite = m_Instance.pointIcon;
                    break;

                case ECrosshairMode.Cancel:
                    m_Instance.pointImg.sprite = m_Instance.cancelIcon;
                    break;

                case ECrosshairMode.Hand:
                    m_Instance.pointImg.sprite = m_Instance.handIcon;
                    break;

                case ECrosshairMode.Swap:
                    m_Instance.pointImg.sprite = m_Instance.swapIcon;
                    break;

                case ECrosshairMode.Ammo:
                    m_Instance.pointImg.sprite = m_Instance.ammoIcon;
                    break;

                case ECrosshairMode.Health:
                    m_Instance.pointImg.sprite = m_Instance.healthIcon;
                    break;

                default:
                    break;
                }
            }
Exemple #5
0
        // Awake
        void Awake()
        {
            weaponIndex  = -1;
            weaponsCount = 0;
            isSubweapon  = false;

            instance = this;

            maxWeapons = Mathf.Clamp(1, maxWeapons, weapons.Length);

            m_Audio = this.GetComponent <AudioSource>();
            m_Audio.outputAudioMixerGroup = GameSettings.SFXOutput;

            m_Weapon  = weapons[0].weapon;
            weaponGo  = m_Weapon.gameObject;
            m_Firearm = m_Weapon as Firearms;
        }
Exemple #6
0
        // Switch ProjectileType
        internal bool SwitchProjectileType()
        {
            if (projectiles.Length < 2)
            {
                return(false);
            }

            projectileIndex++;

            if (projectileIndex >= projectiles.Length)
            {
                projectileIndex = 0;
            }

            currentSlot = projectiles[projectileIndex];
            WeaponsManager.UpdateHud();
            return(true);
        }
Exemple #7
0
        // Switch ShootingMode
        internal bool SwitchShootingMode()
        {
            if (firingModes.Length < 2)
            {
                return(false);
            }

            firingModeIndex++;

            if (firingModeIndex >= firingModes.Length)
            {
                firingModeIndex = 0;
            }

            firingMode = firingModes[firingModeIndex];
            WeaponsManager.UpdateHud();
            return(true);
        }
Exemple #8
0
        // Pickup Activity
        private static void PickupActivity()
        {
            if (inputUse)
            {
                if (checkPickup)
                {
                    tmpPickup.PickupItem();
                }

                inputUse = false;
                ResetPickup();
            }
            else
            {
                if (hitCollider != prevHitCollider || tmpPickup == null)
                {
                    tmpPickup = hitCollider.GetComponent <IPickup>();
                    HudElements.Crosshair.SetColor(ECrosshairColor.Normal);
                }

                if (!checkPickup)
                {
                    return;
                }

                switch (tmpPickup.PickupType)
                {
                case EPickupType.Melee:
                case EPickupType.Firearms:
                case EPickupType.Thrown:
                    if (WeaponsManager.WeaponIsAvailable(tmpPickup.WeaponIndex))
                    {
                        if ((tmpPickup.PickupType != EPickupType.Melee) && (tmpPickup.Amount > 0) && !AmmoBackpack.IsFull(tmpPickup.AmmoIndex))
                        {
                            crosshairMode = ECrosshairMode.Ammo;
                        }
                        else
                        {
                            crosshairMode = ECrosshairMode.Cancel;
                        }
                    }
                    else if (WeaponsManager.WeaponTypeIsStandart(tmpPickup.WeaponIndex) && WeaponsManager.crowded)
                    {
                        crosshairMode = ECrosshairMode.Swap;
                    }
                    else
                    {
                        crosshairMode = ECrosshairMode.Hand;
                    }
                    break;

                case EPickupType.Ammo:
                    if (AmmoBackpack.IsFull(tmpPickup.AmmoIndex))
                    {
                        crosshairMode = ECrosshairMode.Cancel;
                    }
                    else
                    {
                        crosshairMode = ECrosshairMode.Ammo;
                    }
                    break;

                case EPickupType.Health:
                    if (PlayerCharacter.Instance.isFull)
                    {
                        crosshairMode = ECrosshairMode.Cancel;
                    }
                    else
                    {
                        crosshairMode = ECrosshairMode.Health;
                    }
                    break;

                default:
                    crosshairMode = ECrosshairMode.Hand;
                    break;
                }

                //crosshairMode
                HudElements.Crosshair.SetPointSprite(crosshairMode);
            }
        }
Exemple #9
0
        // TouchKit Input
        private void TouchKitInput()
        {
            if (TCKInput.CheckController(actions.pause) && TCKInput.GetAction(actions.pause, TCKActionEvent.Down))
            {
                Pause();
            }

            runAction = (TCKInput.CheckController(actions.run) && TCKInput.GetAction(actions.run, TCKActionEvent.Press));

            if (TCKInput.CheckController(actions.jump) && TCKInput.GetAction(actions.jump, TCKActionEvent.Down))
            {
                FirstPersonController.Jump();
            }
            if (TCKInput.CheckController(actions.crouch) && TCKInput.GetAction(actions.crouch, TCKActionEvent.Down))
            {
                FirstPersonController.Crouch();
            }

            if (TCKInput.CheckController(actions.use) && TCKInput.GetAction(actions.use, TCKActionEvent.Down))
            {
                PlayerCamera.UseItem();
            }

            if (TCKInput.CheckController(actions.reloadWeapon) && TCKInput.GetAction(actions.reloadWeapon, TCKActionEvent.Down))
            {
                WeaponsManager.ReloadWeapon();
            }
            if (TCKInput.CheckController(actions.nextFiremode) && TCKInput.GetAction(actions.nextFiremode, TCKActionEvent.Down))
            {
                WeaponsManager.SwitchFiremode();
            }
            if (TCKInput.CheckController(actions.nextAmmotype) && TCKInput.GetAction(actions.nextAmmotype, TCKActionEvent.Down))
            {
                WeaponsManager.SwitchAmmotype();
            }
            if (TCKInput.CheckController(actions.toSubweapon) && TCKInput.GetAction(actions.toSubweapon, TCKActionEvent.Down))
            {
                WeaponsManager.SwitchToSubWeapon();
            }
            if (TCKInput.CheckController(actions.dropWeapon) && TCKInput.GetAction(actions.dropWeapon, TCKActionEvent.Down))
            {
                WeaponsManager.DropCurrentWeapon();
            }
            if (TCKInput.CheckController(actions.prevWeapon) && TCKInput.GetAction(actions.prevWeapon, TCKActionEvent.Down))
            {
                WeaponsManager.SelectPreviousWeapon();
            }
            if (TCKInput.CheckController(actions.nextWeapon) && TCKInput.GetAction(actions.nextWeapon, TCKActionEvent.Down))
            {
                WeaponsManager.SelectNextWeapon();
            }


            if (TCKInput.CheckController(axes.moveJoystick))
            {
                moveHorizontal = Mathf.Clamp(TCKInput.GetAxis(axes.moveJoystick, TCKAxisType.Horizontal), -1f, 1f);
                moveVertical   = runAction ? 1f : Mathf.Clamp(TCKInput.GetAxis(axes.moveJoystick, TCKAxisType.Vertical), -1f, 1f);
            }

            if (TCKInput.CheckController(axes.lookTouchpad))
            {
                lookHorizontal = TCKInput.GetAxis(axes.lookTouchpad, TCKAxisType.Horizontal) * GameSettings.GetLookSensitivityByInvert_X;
                lookVertical   = TCKInput.GetAxis(axes.lookTouchpad, TCKAxisType.Vertical) * GameSettings.GetLookSensitivityByInvert_Y;
            }

            if (TCKInput.CheckController(actions.zoom))
            {
                zoomAction     = TCKInput.GetAction(actions.zoom, TCKActionEvent.Press);
                zoomActionDown = TCKInput.GetAction(actions.zoom, TCKActionEvent.Down);
                zoomActionUp   = TCKInput.GetAction(actions.zoom, TCKActionEvent.Up);
            }

            if (TCKInput.CheckController(actions.fire))
            {
                bool fireAction = TCKInput.GetAction(actions.fire, TCKActionEvent.Press);
                // Fire and Reset Weapon
                if (fireAction && !FirstPersonController.isRunning)
                {
                    WeaponsManager.WeaponFire();
                }
                else
                {
                    WeaponsManager.WeaponReset();
                }
            }
        }
Exemple #10
0
        // Standalone Input
        private void StandaloneInput()
        {
            if (InputSettings.GetAction(actions.pause, EActionEvent.Down))
            {
                Pause();
            }

            InputSettings.RunActions();
            InputSettings.RunActionAxis();
            InputSettings.RunAxis();


            // Cursor lock
            if (cursorIsBlocked && Time.timeSinceLevelLoad > .1f)
            {
                Cursor.lockState = CursorLockMode.Locked;
                Cursor.visible   = false;
            }


            moveHorizontal = InputSettings.GetAxis(axes.moveX);
            moveVertical   = InputSettings.GetAxis(axes.moveY);
            lookHorizontal = InputSettings.GetAxis(axes.lookX) * GameSettings.GetLookSensitivityByInvert_X;
            lookVertical   = InputSettings.GetAxis(axes.lookY) * GameSettings.GetLookSensitivityByInvert_Y;

            runAction = InputSettings.GetAction(actions.run, EActionEvent.Press);

            zoomAction     = InputSettings.GetAction(actions.zoom, EActionEvent.Press);
            zoomActionDown = InputSettings.GetAction(actions.zoom, EActionEvent.Down);
            zoomActionUp   = InputSettings.GetAction(actions.zoom, EActionEvent.Up);

            bool fireAction = InputSettings.GetAction(actions.fire, EActionEvent.Press);

            // Fire and Reset Weapon
            if (fireAction && !FirstPersonController.isRunning)
            {
                WeaponsManager.WeaponFire();
            }
            else
            {
                WeaponsManager.WeaponReset();
            }


            // Select Weapon ByIndex
            if (Input.GetKeyDown(KeyCode.Alpha1))
            {
                WeaponsManager.SelectWeaponByIndex(0);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha2))
            {
                WeaponsManager.SelectWeaponByIndex(1);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha3))
            {
                WeaponsManager.SelectWeaponByIndex(2);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha4))
            {
                WeaponsManager.SelectWeaponByIndex(3);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha5))
            {
                WeaponsManager.SelectWeaponByIndex(4);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha6))
            {
                WeaponsManager.SelectWeaponByIndex(5);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha7))
            {
                WeaponsManager.SelectWeaponByIndex(6);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha8))
            {
                WeaponsManager.SelectWeaponByIndex(7);
            }
            else if (Input.GetKeyDown(KeyCode.Alpha9))
            {
                WeaponsManager.SelectWeaponByIndex(8);
            }
        }