IEnumerator SpawnBonusItemsInterval(int interval, SpawnerTypes bonusType, int spawnerID) { while (true) { yield return(new WaitForSeconds(interval)); SpawnBonusItem(bonusType, spawnerID); } }
void SpawnBonusItem(SpawnerTypes bonusType, int spawnerID) { var bonusSpanwerComponent = _bonusSpawnerEntityViews[spawnerID].bonusSpawnerComponent; var prefab = bonusSpanwerComponent.prefab; var points = bonusSpanwerComponent.points; int random = FindRandomPoint(points.Length - 1, bonusSpanwerComponent.spawnedPoints); var point = points[random]; if (!(bonusSpanwerComponent.bonusItemsSpawned < _maxItemsToSpawn)) { return; } bonusSpanwerComponent.spawnedPoints.Add(random); var go = _gameObjectFactory.Build(prefab); List <IImplementor> implementors = new List <IImplementor>(); go.GetComponentsInChildren(implementors); switch (bonusType) { case SpawnerTypes.Ammobox: _entityFactory.BuildEntity <PlayerAmmoboxEntityDescriptor>( go.GetInstanceID(), implementors.ToArray()); break; case SpawnerTypes.Medkit: _entityFactory.BuildEntity <PlayerMedkitEntityDescriptor>( go.GetInstanceID(), implementors.ToArray()); break; } go.transform.position = point.transform.position; go.transform.rotation = Quaternion.identity; bonusSpanwerComponent.bonusItemsSpawned += 1; }
public PickupInfo(int id, SpawnerTypes pickupType) { pickupID = id; type = pickupType; }