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;
        }
Exemple #3
0
 public PickupInfo(int id, SpawnerTypes pickupType)
 {
     pickupID = id;
     type     = pickupType;
 }