private GameObject SpawnChain(SpawnItemType spawnItemType, List <GameObject> spawnPositions = null) { _spawnChainId++; if (_spawnChainId >= 20) { _spawnChainId = 0; } int spawnChainAmount = Random.Range(5, 12); _spawnChainAmount[_spawnChainId] = spawnChainAmount; _spawnChainCount[_spawnChainId] = 0; CurrentSpawnChain _currentSpawnChain = new CurrentSpawnChain(); _currentSpawnChain.amountLeft = spawnChainAmount; _currentSpawnChain.spawnItemType = spawnItemType; _currentSpawnChain.spawnItemGameObject = GetRandomSpawnPositionGameObject(spawnPositions); _currentSpawnChain.spawnItemUpGameObject = GetSpawnPositionUpGameObject(_currentSpawnChain.spawnItemGameObject); _currentSpawnChain.spawnItemDownGameObject = GetSpawnPositionDownGameObject(_currentSpawnChain.spawnItemGameObject); //_currentSpawnChain.spawnOrder = CreateRandomSpawnOrderForChain(spawnChainAmount); _currentSpawnChain.amountTotal = spawnChainAmount; SequenceSpawnChain(_currentSpawnChain); return(_currentSpawnChain.spawnItemGameObject); }
private void SpawnGlobalBlock() { SpawnItemType spawnItemType = GetNextSpawnItemType("global_block"); List <GameObject> _tempSpawnPositions = spawnPositionGameObjects.ToList() .Except(_previousSpawnPositionGameObjects).ToList(); _previousSpawnPositionGameObjects.Clear(); SpawnNormal(spawnItemType, _tempSpawnPositions); }
private GameObject SpawnNormal(SpawnItemType spawnItemType, List <GameObject> spawnPositions = null) { GameObject spawnPositionGameObject = GetRandomSpawnPositionGameObject(spawnPositions); GameObject spawnItemGameObject = GetSpawnItemGameObject(spawnItemType.name); HellSpawn.SpawnMovingParameters spawnMovingParameters = new HellSpawn.SpawnMovingParameters(); spawnMovingParameters.flyTime = GetFlyTime(spawnPositionGameObject); spawnMovingParameters.hellSpawnSpeed = GetHellSpawnTimeScale(); SpawnObjectAndStartMoving(spawnItemGameObject, spawnPositionGameObject, spawnMovingParameters); return(spawnPositionGameObject); }
private List <GameObject> SpawnItemFromGroup(Dictionary <string, int> spawnItemGroupWeights, ref List <GameObject> _tempSpawnPositions, ref List <bool> _tempSpawnPositionIndexes) { GameObject spawnPosition; string _spawnItemGroupName = RollRandomItemGroupName(spawnItemGroupWeights); spawnItemGroupWeights.Remove(_spawnItemGroupName); SpawnItemType spawnItemType = GetNextSpawnItemType(_spawnItemGroupName); if (spawnItemType.isChain) { spawnPosition = SpawnChain(spawnItemType, _tempSpawnPositions); } else { spawnPosition = SpawnNormal(spawnItemType, _tempSpawnPositions); } _previousSpawnPositionGameObjects.Add(spawnPosition); _tempSpawnPositions = RemoveUnwantedSpawnPositions(spawnPosition, spawnPositionGameObjects.ToList(), ref _tempSpawnPositionIndexes); return(_tempSpawnPositions); }