コード例 #1
0
 private void InitialiseUI()
 {
     OnScoreChanged?.Invoke(newText: _currentGameStats.Score.ToString());
     OnCountDown?.Invoke(newText: "");
     StartPauseWatch?.Invoke("");
     OnAmmoChange?.Invoke(newText: _currentGameStats.Ammo.ToString());
 }
コード例 #2
0
ファイル: Gun.cs プロジェクト: vrtex/Astro-Monkey
        public void Shoot(Vector2 targetPosition)
        {
            shooting = true;
            if (delayLeft > 0 || IsReloading())
            {
                return;
            }
            BaseProjectile projectile =
                currentClip.GetProjectile(parent.transform);

            if (projectile == null)
            {
                return;
            }

            ShootSoundComponent.SoundEffect = projectile.shootSound;

            GameManager.SpawnObject(projectile);
            projectile.Start(targetPosition, parent);

            ShootSoundComponent.Play();

            OnAmmoChange?.Invoke(this);

            delayLeft = ammoClips[currentClipIndex].fireDelay;
            if (currentClip.GetAmmoInfo().loaded == 0)
            {
                StopShooting();
            }
        }
コード例 #3
0
        private IEnumerator StartReloadingCoroutine()
        {
            _reloading = true;
            OnStartReloading?.Invoke();
            yield return(_reloadingWaitTime);

            _currentClipAmmo = maxClipAmmo;
            OnStopReloading?.Invoke();
            OnAmmoChange?.Invoke(_currentClipAmmo);
            _reloading = false;
        }
コード例 #4
0
ファイル: Weapon.cs プロジェクト: sultim-t/ShootAndDrive
        /// <summary>
        /// Must be called when weapons' controller is reinitting
        /// </summary>
        public void Reinit()
        {
            wasJammed = State == WeaponState.ReadyForUnjam;
            State     = WeaponState.Nothing;

            OnAmmoChange?.Invoke(-1);

            gameObject.SetActive(false);
            Deactivate();

            RestoreTransforms();
        }
コード例 #5
0
ファイル: Weapon.cs プロジェクト: sultim-t/ShootAndDrive
        protected void ReduceAmmo()
        {
            int newAmount = ammo.Get(AmmoType).CurrentAmount - AmmoConsumption;

            ammo.Get(AmmoType).CurrentAmount = newAmount;
            OnAmmoChange?.Invoke(newAmount);

            // if run out of ammo, send event
            if (newAmount == 0)
            {
                OnAmmoRunOut?.Invoke(WeaponIndex);
            }
        }
コード例 #6
0
ファイル: Weapon.cs プロジェクト: sultim-t/ShootAndDrive
        public void Enable()
        {
            if (State != WeaponState.Nothing)
            {
                Debug.LogWarning("Wrong weapon state");
                return;
            }

            State = WeaponState.Enabling;

            gameObject.SetActive(true);
            Activate();

            // this weapon is activating,
            // show its ammo
            OnAmmoChange?.Invoke(ammo.Get(AmmoType).CurrentAmount);

            // pose hand
            if (handPivot != null)
            {
                //handPivot.PoseHand();
            }
            else
            {
                if (handsController == null)
                {
                    handsController = FindObjectOfType <HandsController>();
                }

                if (handsController != null)
                {
                    // if doesn't exist, dont render it
                    handsController.RenderRightHand = false;
                }
            }

            // wait for enabling
            if (!wasJammed)
            {
                StartCoroutine(Wait(TakingOutTime, WeaponState.Ready));
            }
            else
            {
                StartCoroutine(Wait(TakingOutTime, WeaponState.ReadyForUnjam));
            }
        }
コード例 #7
0
ファイル: Gun.cs プロジェクト: vrtex/Astro-Monkey
        public bool RestoreAmmo(Type ammoType, int amount)
        {
            AmmoClip clip = ammoClips.Find(x => x.clip.ammoType == ammoType);

            if (clip == null)
            {
                throw new ApplicationException("restoring unexisting ammo");
            }

            if (clip.IsFull())
            {
                return(false);
            }

            clip.RestoreAmmo(amount);
            OnAmmoChange?.Invoke(this);

            return(true);
        }
コード例 #8
0
ファイル: Weapon.cs プロジェクト: sultim-t/ShootAndDrive
        void Disable()
        {
            if (State != WeaponState.Breaking &&
                State != WeaponState.Ready &&
                State != WeaponState.ReadyForUnjam)
            {
                Debug.LogWarning("Wrong weapon state");
                return;
            }

            // mark, it will be used when weapon will be enabled
            wasJammed = State == WeaponState.ReadyForUnjam;

            State = WeaponState.Disabling;

            // disable current ammo amount
            OnAmmoChange?.Invoke(-1);

            // wait for disabling
            StartCoroutine(WaitForDisabling(HidingTime));
        }
コード例 #9
0
        public void Shoot()
        {
            var now = Time.time;

            if (!CanShoot(now))
            {
                return;
            }
            _lastShoot        = now;
            _currentClipAmmo -= 1;
            OnAmmoChange?.Invoke(_currentClipAmmo);
            var shootingPosition = ShootingPoints[_currentShootingPoint].Transform.position;

            photonView.RPC(nameof(RPC_SpawnBullet), RpcTarget.MasterClient,
                           PhotonNetwork.LocalPlayer.UserId,
                           addForceVelocity,
                           PhotonNetwork.LocalPlayer.GetPlayerNumber(),
                           shootingPosition,
                           GetShootingDirection()
                           );
            shootCue.Execute(shootingPosition, Quaternion.identity);
            _currentShootingPoint = (_currentShootingPoint + 1) % ShootingPoints.Length;
        }
コード例 #10
0
ファイル: Gun.cs プロジェクト: vrtex/Astro-Monkey
 private void ReloadHandler(AmmoClip clip)
 {
     OnAmmoChange?.Invoke(this);
 }
コード例 #11
0
 public void UpdateAmmoAmount(int _amount)
 {
     _currentGameStats.DecrementAmmo(_amount);
     OnAmmoChange?.Invoke(newText: _currentGameStats.Ammo.ToString());
 }