void AssertPoolState(ConnectorPool pool, int idle, int busy, int waiting = 0) { var state = pool.State; Assert.That(state.Idle, Is.EqualTo(idle), $"Idle should be {idle} but is {state.Idle}"); Assert.That(state.Busy, Is.EqualTo(busy), $"Busy should be {busy} but is {state.Busy}"); Assert.That(state.Waiting, Is.EqualTo(waiting), $"Waiting should be {waiting} but is {state.Waiting}"); }
private void Spawn() { HashSet <int> sss = new HashSet <int>(); for (int i = 0; i < SpawnPoints.Length; i++) { if (Random.Range(0, 2) == 1) { sss.Add(i); } } if (!sss.Intersect(prevConnectors).Any()) { sss.Add(prevConnectors.Where(x => x >= 0).ToArray().GetRandom()); } for (int i = 0; i < SpawnPoints.Length - 2; i++) { if (!sss.Contains(i) || !sss.Any(x => x >= i + 2)) { continue; } int k = sss.Where(x => x >= i + 2).Min(); for (int j = i + 1; j <= k; j++) { sss.Add(j); } } prevConnectors.Clear(); for (int i = 0; i < SpawnPoints.Length; i++) { bool spawnHere = sss.Contains(i); if (spawnHere) { var connector = ConnectorPool.GetConnector(Connectors.GetRandomGoodConnector()); connector.transform.position = SpawnPoints[i].position; ConnectorList.Add(connector); connector.name = connector.ConnectorDef.Name; prevConnectors.Add(i); } else { if (Random.Range(0f, 1f) > 0.7f) { var connector = ConnectorPool.GetConnector(Connectors.GetRandomBadConnector()); connector.transform.position = SpawnPoints[i].position; ConnectorList.Add(connector); connector.name = connector.ConnectorDef.Name; } } } }
protected override void Awake() { base.Awake(); _instance = this; }