Exemple #1
0
    private void UpdateShooting()
    {
        CanHitEnemy = false;
        if (ShootLock || !PrimaryEnemy.vehicle)
        {
            return;
        }
        Transform currentShootTransform = Vehicle.GetCurrentShootTransform();

        if (!currentShootTransform)
        {
            return;
        }
        BulletDefinition bulletDef = Vehicle.BulletDef;
        int mask = (self.team == Team.Right) ? LayerMask.GetMask("PlayerTank") : LayerMask.GetMask("PlayerTankRight");

        if (TankGame.instance.PredictTrajectory(bulletDef, currentShootTransform.position, currentShootTransform.right, mask, PrimaryEnemy.vehicle) == float.MaxValue || !(DistanceToEnemy < 20f))
        {
            return;
        }
        CanHitEnemy = true;
        ShootLock   = true;
        float shootReactionDelay = GetShootReactionDelay();
        float afterShootDelay    = GetAfterShootDelay();

        if (bulletDef.type == BulletType.Cannon || bulletDef.type == BulletType.Grenade || bulletDef.type == BulletType.Laser || bulletDef.type == BulletType.Missile)
        {
            TankGame.instance.Delay(shootReactionDelay, delegate
            {
                Vehicle.Shoot();
            });
            if (bulletDef.type != BulletType.Missile && bulletDef.type != BulletType.Laser)
            {
                TankGame.instance.Delay(shootReactionDelay + afterShootDelay, delegate
                {
                    Vehicle.Shoot(val: false);
                });
            }
            TankGame.instance.Delay(shootReactionDelay + afterShootDelay + bulletDef.maxTime * UnityEngine.Random.value, delegate
            {
                ShootLock = false;
            });
        }
        else
        {
            TankGame.instance.Delay(shootReactionDelay, delegate
            {
                Vehicle.Shoot();
            });
            float t = bulletDef.warmupTime + Mathf.Max(0.5f, UnityEngine.Random.value) * bulletDef.maxTime;
            TankGame.instance.Delay(t, delegate
            {
                Vehicle.Shoot(val: false);
            });
            TankGame.instance.Delay(shootReactionDelay + afterShootDelay * UnityEngine.Random.value, delegate
            {
                ShootLock = false;
            });
        }
    }
Exemple #2
0
 private void OnPlayerShot(BulletDefinition bulletDef)
 {
 }