public static void AddEnemy(string featureName)
        {
            EnemyType enemy = (EnemyType)Log.EnumPrompt(typeof(EnemyType));

            EnemyBuilder feature = new EnemyBuilder(featureName, enemy);

            Action <EnemyBuilder> add;

            switch (enemy)
            {
            case EnemyType.LoopingVariantFireStrategyEnemy:
                add = AddLoopingVariantFireStrategyEnemy;
                break;

            case EnemyType.CustomFireStrategyEnemy:
                add = AddCustomFireStrategyEnemy;
                break;

            case EnemyType.NoFireStrategyEnemy:
                add = AddNoFireStrategyEnemy;
                break;

            default:
                throw new ArgumentException($"UNKNOWN ENEMY {enemy}");
            }

            if (ConfirmFeature(feature, add.Method.Name))
            {
                add(feature);
            }
        }
        private static void AddEnemyWithFireStrategy(EnemyBuilder feature)
        {
            AddFeatureWithPrefab(feature);

            EnemyBulletBuilder bullet = new EnemyBulletBuilder(feature.FeatureName);

            AddEnemyBullet(bullet);

            EnemyFireStrategyBuilder strategy = new EnemyFireStrategyBuilder(feature.FeatureName);

            AddEnemyFireStrategy(strategy);
        }
Beispiel #3
0
        public static void RunEnemyTests(string featureName)
        {
            EnemyBuilder CreateEnemy(string nameSuffix, EnemyType type)
            {
                string       name    = $"{featureName}{nameSuffix}";
                EnemyBuilder feature = new EnemyBuilder(name, type);

                return(feature);
            }

            EnemyBuilder looping = CreateEnemy("LoopingStrategy", EnemyType.LoopingVariantFireStrategyEnemy);

            AddLoopingVariantFireStrategyEnemy(looping);

            EnemyBuilder custom = CreateEnemy("CustomStrategy", EnemyType.CustomFireStrategyEnemy);

            AddCustomFireStrategyEnemy(custom);

            EnemyBuilder noStrategy = CreateEnemy("NoStrategy", EnemyType.NoFireStrategyEnemy);

            AddNoFireStrategyEnemy(noStrategy);
        }
 public static void AddNoFireStrategyEnemy(EnemyBuilder feature)
 {
     LogProgress("Enemy without FireStrategy", feature);
     AddFeatureWithPrefab(feature);
 }
 public static void AddCustomFireStrategyEnemy(EnemyBuilder feature)
 {
     LogProgress("Enemy with custom FireStrategy", feature);
     AddEnemyWithFireStrategy(feature);
 }
 public static void AddLoopingVariantFireStrategyEnemy(EnemyBuilder feature)
 {
     LogProgress("LoopingVariantFireStrategyEnemy", feature);
     AddEnemyWithFireStrategy(feature);
 }