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); }
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); }