public static IDifficultyCalculator GetCalculator(HashSet <Type> blockTypes) { bool containsChangeDirection = blockTypes.Contains(typeof(GameBlockChangeDirection)); bool containsExtraMove = blockTypes.Contains(typeof(GameBlockExtraMove)); bool containsMultipleMoves = blockTypes.Contains(typeof(GameBlockMultipleMoves)); IDifficultyCalculator calculator; if (!containsChangeDirection && !containsExtraMove && !containsMultipleMoves) { calculator = new NormalOnlyDifficultyCalculator(); } else if (containsChangeDirection && !containsExtraMove && !containsMultipleMoves) { calculator = new ChangeDirectionDifficultyCalculator(); } else { calculator = new DefaultDifficultyCalculator(); } return(calculator); }
public static IDifficultyCalculator GetCalculator(HashSet<Type> blockTypes) { bool containsChangeDirection = blockTypes.Contains(typeof(GameBlockChangeDirection)); bool containsExtraMove = blockTypes.Contains(typeof(GameBlockExtraMove)); bool containsMultipleMoves = blockTypes.Contains(typeof(GameBlockMultipleMoves)); IDifficultyCalculator calculator; if (!containsChangeDirection && !containsExtraMove && !containsMultipleMoves) { calculator = new NormalOnlyDifficultyCalculator(); } else if (containsChangeDirection && !containsExtraMove && !containsMultipleMoves) { calculator = new ChangeDirectionDifficultyCalculator(); } else { calculator = new DefaultDifficultyCalculator(); } return calculator; }