public EnemyPop(EnemyAttackDataBase data, Enemy enemy) { _Data = data as EnemyPopData; _Enemy = enemy; _CompleteObserver = new Subject <Unit> (); _PopPoint = _Enemy.GetComponent <BossBehaviour> ().EnemyPopPoint; }
private static HashSet <pAvailableEnemyTypes> GetValidGroups(Dictionary <int, float> enemies) { List <pAvailableEnemyTypes> valid = new List <pAvailableEnemyTypes>(); foreach (pAvailableEnemyTypes type in EnemyPopData.GetAvailableSpawnData()) { // ToDo Check validity with EnemyGroupDataBlock if (enemies.ContainsKey((int)type.enemyID)) { valid.Add(type); } } List <pAvailableEnemyTypes> trueValid = new List <pAvailableEnemyTypes>(); EnsureGroupsOnlyContainValidIDS(enemies, valid, trueValid); CheckValidity(enemies, trueValid); return(new HashSet <pAvailableEnemyTypes>(trueValid)); }
private static void EnsureGroupsOnlyContainValidIDS(Dictionary <int, float> enemies, List <pAvailableEnemyTypes> valid, List <pAvailableEnemyTypes> trueValid) { foreach (pAvailableEnemyTypes validType in valid) { HashSet <Tuple <eEnemyRole, eEnemyRoleDifficulty> > invalidGroups = new HashSet <Tuple <eEnemyRole, eEnemyRoleDifficulty> >(); foreach (pAvailableEnemyTypes type in EnemyPopData.GetAvailableSpawnData()) { if (type.role == validType.role && type.difficulty == validType.difficulty) { if (!enemies.ContainsKey((int)type.enemyID)) { invalidGroups.Add(new Tuple <eEnemyRole, eEnemyRoleDifficulty>(type.role, type.difficulty)); } } } bool isValid = true; foreach (Tuple <eEnemyRole, eEnemyRoleDifficulty> invalidGroup in invalidGroups) { if (validType.role == invalidGroup.Item1 && validType.difficulty == invalidGroup.Item2) { isValid = false; if (!isValid) { break; } } } if (isValid) { trueValid.Add(validType); } } }