private Queue <byte> computeTargets(int spawnZone) { Dictionary <byte, TowerSpawnInfo> dic = _activeTowers [spawnZone]; Queue <byte> targets = new Queue <byte> (); List <byte> list = new List <byte> (); foreach (byte b in dic.Keys) { TowerSpawnInfo tsi = dic [b]; float aggroExp = tsi._aggro * 10.0f; // 1 order of precission int num = Mathf.RoundToInt(aggroExp); while (num > 0) { list.Add(b); num--; } } shuffleTargers(list); foreach (byte b in list) { targets.Enqueue(b); } return(targets); }
public void initialize(Dictionary <int, PathSolution> computedPaths) { _activeTowers.Clear(); foreach (int spawnZone in computedPaths.Keys) { PathSolution ps = computedPaths [spawnZone]; Dictionary <byte, TowerSpawnInfo> pathInfo = new Dictionary <byte, TowerSpawnInfo> (); Dictionary <byte, Queue <Vector3> > .KeyCollection kc = ps.getAllTowersInPath(); TowerSpawnInfo targetInfo = new TowerSpawnInfo(); targetInfo._active = true; targetInfo._aggro = 1.0f; pathInfo.Add(0, targetInfo); foreach (byte b in kc) { pathInfo.Add(b, new TowerSpawnInfo()); } _activeTowers.Add(spawnZone, pathInfo); } }