Esempio n. 1
0
        protected override void ProcessOneEntity(int entityId, float deltaTime)
        {
            // gather data for selection
            var enemySpawner = GameState.GameData.EnemySpawner[entityId];

            // selection
            if (enemySpawner == null)
            {
                return;
            }

            // process data
            var es         = enemySpawner.Value;
            var onCooldown = es.SpawnOnCooldown;

            if (onCooldown)
            {
                es.SpawnCooldownTime -= deltaTime;
                es.SpawnCooldownTime  = MathHelper.Clamp(es.SpawnCooldownTime, 0.0f, _cooldownTime);
            }
            else
            {
                // spawn enemy
                var   spawnPosition = new Vector2(RandomGenerator.Instance.GetRandomFloat(0, DeviceManager.Instance.ScreenWidth), -_distanceAboveScreenToSpawn);
                float velocity      = RandomGenerator.Instance.GetRandomFloat(_minimumEnemyVelocity, _maximumEnemyVelocity);
                EnemyCreator.Create(spawnPosition, new Vector2(0.0f, velocity), GameState);

                // put on cooldown
                es.SpawnCooldownTime = _cooldownTime;
            }

            // update data
            GameState.GameData.EnemySpawner[entityId] = es;
        }