Esempio n. 1
0
    private void HandleShieldHitMessage(ShieldHitMessage shieldHitMessage)
    {
        if (!Stats.HasEnough(StatsEnum.Energy, shieldHitMessage.EnergyDamage))
        {
            Stats.AddAmount(StatsEnum.Health, -shieldHitMessage.OriginalDamage);
            _isShielded = false;
            _shieldScript.ShieldDown();
        }
        else
        {
            Stats.AddAmount(StatsEnum.Energy, -shieldHitMessage.EnergyDamage);
        }

        _characterDamage.RegisterNewBlockedDamageSource(shieldHitMessage.Weapon.GetInstanceID());
    }
Esempio n. 2
0
        private bool FireAttack(IAttack attack)
        {
            if (Stats == null && attack.RequiredEnergy > 0)
            {
                Debug.Log("Weapon requires energy to use, but no energy component attached.");
                return(false);
            }

            if (Stats != null && Stats.IsStatDefined(StatsEnum.Energy) && !Stats.HasEnough(StatsEnum.Energy, attack.RequiredEnergy))
            {
                Debug.Log("Not enaugh energy.");
                return(false);
            }

            if (!attack.CanFire(Stats))
            {
                return(false);
            }

            attack.Fire(Stats);
            if (Stats != null && Stats.IsStatDefined(StatsEnum.Energy))
            {
                Stats.AddAmount(StatsEnum.Energy, -attack.RequiredEnergy);
            }

            return(true);
        }
Esempio n. 3
0
 private void Fire(Vector2 position, float degAngle, Stats stats)
 {
     if (stats == null)
     {
         Debug.LogWarning("No attached 'stats' object not found for this gun!");
     }
     else if (stats.HasEnough(StatsEnum.Bullets, BulletsRequired))
     {
         if (!_weaponStateMachine.TryFire())
         {
             return;
         }
         Bullet.CreateBullet(position, degAngle, BulletPrototype, Layers.GetLayer(LayerName.PlayerBullets), _dynamicGameObjects.transform);
         stats.AddAmount(StatsEnum.Bullets, -BulletsRequired);
     }
 }
Esempio n. 4
0
 private void HandleWeaponHit(WeaponHitMessage weaponHitMessage)
 {
     Stats.AddAmount(StatsEnum.Health, -weaponHitMessage.Damage);
     Stats.AddAmount(StatsEnum.Stability, -weaponHitMessage.StabilityDamage);
 }