Exemple #1
0
 private void OnBodyDamage(TurretDamage damage, string displayText)
 {
     Game.PlayEffect(EffectName.CustomFloatText, RotationCenter + Vector2.UnitY * 5, displayText);
     Game.PlayEffect(EffectName.Electric, RotationCenter);
     Game.PlayEffect(EffectName.Electric, RotationCenter);
     Game.PlaySound("ElectricSparks", RotationCenter);
     m_damage = m_damage | damage;
 }
Exemple #2
0
        public override void OnDamage(IObject obj, ObjectDamageArgs args)
        {
            foreach (var dc in m_damageableComponents)
            {
                if (dc.Object.UniqueID == obj.UniqueID)
                {
                    // barrel component is indestructible and there are 4 dc. A cheap solution is
                    // to randomize to have barrel damage instead when other dc takes damage
                    if (RandomHelper.Between(0, 1) < (1f / 3f) - (1f / 4f))
                    {
                        m_damageableComponents.First().OnDamage(args);
                    }

                    dc.OnDamage(args);
                    break;
                }
            }

            // https://www.alanzucconi.com/2015/07/26/enum-flags-and-bitwise-operators/
            if (m_barrel.Health == 0 && !HasDamage(TurretDamage.BarrelDamaged))
            {
                Game.PlayEffect(EffectName.CustomFloatText, RotationCenter + Vector2.UnitY * 5, "Barrel Damaged");
                m_damage = m_damage | TurretDamage.BarrelDamaged;
            }
            if (m_rotor.Health == 0 && !HasDamage(TurretDamage.RotorDamaged))
            {
                OnBodyDamage(TurretDamage.RotorDamaged, "Rotor Damaged");
            }
            if (m_sensor.Health == 0 && !HasDamage(TurretDamage.SensorDamaged))
            {
                OnBodyDamage(TurretDamage.SensorDamaged, "Sensor Damaged");
            }
            if (m_controller.Health == 0 && !HasDamage(TurretDamage.ControllerDamaged))
            {
                OnBodyDamage(TurretDamage.ControllerDamaged, "Controller Damaged");
            }

            if (Totaled() && !IsDestroyed)
            {
                Destroy();
            }
        }
Exemple #3
0
 public bool HasDamage(TurretDamage damage)
 {
     return((m_damage & damage) == damage);
 }