public static AbstractGameObject Create(ProjectileType type, AbstractGameObject player, Vector2 position) { switch (type) { case ProjectileType.FireBall: return(new FireBall(ProjectileSpriteFactory.Create(type), player, position)); case ProjectileType.BigFireBall: return(new BigFireBall(ProjectileSpriteFactory.Create(type), player, position)); case ProjectileType.CannonFireBall: return(new CannonFireBall(ProjectileSpriteFactory.Create(type), player, position)); default: return(new FireBall(ProjectileSpriteFactory.Create(type), player, position)); } }