//Macros should be defined for each of the enemy types public EnemyFactory SelectFactory(Property.EnemyType type) { switch (type) { case Property.EnemyType.Grunt1: { return(new grunt1Factory()); } case Property.EnemyType.Grunt2: { return(new grunt2Factory()); } case Property.EnemyType.MidBoss: { return(new midbossFactory()); } case Property.EnemyType.FinalBoss: { return(new finalbossFactory()); } default: return(new grunt1Factory()); } }
public static Enemy CreateEnemey(Vector2 pos, Property.EnemyType t, int movementStrategy, int bulletStrategy) { EnemyFactorySelector enemySelection = new EnemyFactorySelector(); EnemyFactory enemyFactory = enemySelection.SelectFactory(t); // enemy factory will become the necessary factory depending on what enemy type is passed in Enemy newEnemy = enemyFactory.CreateEnemy(pos, movementStrategy, bulletStrategy); // A unique ID must be set in the factory return(newEnemy); }