예제 #1
0
 private void _registerType(Type type)
 {
     if (!Spawned.ContainsKey(type))
     {
         Spawned.Add(type, new List <IPoolable>());
     }
     if (!Despawned.ContainsKey(type))
     {
         Despawned.Add(type, new List <IPoolable>());
     }
 }
예제 #2
0
        public void Update(double deltaTime)
        {
            var currentWave = Waves[Level];

            while (Spawned.Count < currentWave.SpawnCount)
            {
                float spawnRange   = Vrax.Game.Screen.Height * 0.8f;
                float spawnYOffset = Vrax.Game.Screen.Height * 0.1f;
                // Spawn
                var spawn = currentWave.Table.Select(Rand.Next()).SpawnMethod.Invoke();
                spawn.Position   = new Point(Vrax.Game.Screen.Width, (float)(spawnRange * Rand.NextDouble()) + spawnYOffset);
                spawn.Disposed  += OnEntityDisposed;
                spawn.Destroyed += OnEntityDestroyed;

                Spawned.Add(spawn);
                Vrax.World.AddEntity(spawn);
            }
        }