IEnumerator SpawnMinions(GameConfig config) { Vector3 spawnPosition = RandomVector3(config.gameAreaWidth, config.gameAreaHeight); for (int i = 0; i < config.numUnitsToSpawn; i++) { GameObject go = Instantiate(minionPrefab); float radius = Random.Range(config.minUnitRadius, config.maxUnitRadius); go.transform.localScale = new Vector3(radius, radius, 1.0f); go.transform.position = spawnPosition; spawnPosition = RandomVector3(config.gameAreaWidth, config.gameAreaHeight); go.GetComponent <MinionController>().Init(Random.Range(config.minUnitSpeed, config.maxUnitSpeed), RandomVector3(config.gameAreaWidth, config.gameAreaHeight).normalized, i % System.Enum.GetNames(typeof(MinionTeamsEnum)).Length); yield return(new WaitForSeconds(config.unitSpawnDelay / 1000.0f)); } SimulationController.OnSpawnFinished?.Invoke(); OnMinionsNumberChanged?.Invoke(); }
public void RemoveMinionFromList(MinionController mc) { switch (mc.Team) { case MinionTeamsEnum.Blue: blueMinions.Remove(mc); break; case MinionTeamsEnum.Red: redMinions.Remove(mc); break; } OnMinionsNumberChanged?.Invoke(); if (redMinions.Count == 0 || blueMinions.Count == 0) { SimulationController.OnFinishSimulation?.Invoke(); } }