コード例 #1
0
ファイル: WaveManager.cs プロジェクト: tomlangan/VRTD
 public void DestroyAll()
 {
     for (int i = Enemies.Count; i > 0; i--)
     {
         EnemyInstance enemy = Enemies[i - 1];
         enemy.Destroy();
         Enemies.Remove(enemy);
     }
 }
コード例 #2
0
ファイル: WaveManager.cs プロジェクト: tomlangan/VRTD
        void ApplyProjectileEffects(float waveTime)
        {
            for (int i = 0; i < Enemies.Count; i++)
            {
                EnemyInstance enemy = Enemies[i];

                if (!enemy.IsActive)
                {
                    continue;
                }

                float damage   = 0.0F;
                float slowdown = 0.0F;

                for (int j = enemy.ActiveEffects.Count; j > 0; j--)
                {
                    EffectInstance effect = enemy.ActiveEffects[j - 1];

                    float impact = effect.AdvanceAndReportImpact(waveTime);

                    switch (effect.Effect.EffectType)
                    {
                    case ProjectileEffectType.Damage:
                        damage += impact;
                        break;

                    case ProjectileEffectType.Slow:
                        slowdown += impact;
                        break;
                    }


                    if (effect.Completed)
                    {
                        effect.Destroy();
                        enemy.ActiveEffects.Remove(effect);
                        effect = null;
                    }
                }

                if (null != DamageCallback)
                {
                    DamageCallback.Invoke(enemy, damage);
                }
                else
                {
                    if (enemy.HealthRemaining <= damage)
                    {
                        // Enemy is dead
                        enemy.HealthRemaining = 0.0F;
                        enemy.Destroy();
                        CoinEarnedToReport += enemy.Desc.Coins;
                    }
                    else
                    {
                        enemy.HealthRemaining -= damage;
                    }
                }

                enemy.SpeedSlowdown = slowdown;
            }
        }