Пример #1
0
 /// <summary>
 /// Public spawn interface implementation, calls the callback of the subclasses.
 /// Automatically removes the Spawner from the Field after it has no more enemies to produce because of the RemainingEnemies setter action.
 /// </summary>
 /// <param name="spawnCallback">Callback that runs if the conditions for the spawn get fulfilled, e.g. there are remaining enemies.</param>
 public void Spawn(SpawnCallbackDelegate spawnCallback)
 {
     if (UnlimitedEnemies)
     {
         spawnCallback(this);
     }
     else if (RemainingEnemies > 0)
     {
         spawnCallback(this);
         RemainingEnemies--;
     }
 }
Пример #2
0
        protected void AddDualSpawner(float percentDelay, float y, int enemies, SpawnCallbackDelegate spawnCallback)
        {
            //Half the enemies for each side
            int enemiesLeft  = enemies / 2;
            int enemiesRight = enemies - enemiesLeft;

            //Adds the Spawner to the list of Spawners intended for the game round
            Spawners.Add
            (
                new DelayedStart
                (
                    actsDelay: 0
                    , percentDelay: percentDelay
                    , spawner: new DualSymmetrySpawner
                    (
                        y: y
                        , remainingEnemiesLeft: enemiesLeft
                        , remainingEnemiesRight: enemiesRight
                        , equalSpawnCallback: spawnCallback
                    )
                )
            );
        }
 public virtual void Spawn(SpawnCallbackDelegate spawnCallback)
 {
     Spawner.Spawn(spawnCallback);
 }
 protected AbstractSpawnerStrategy(ISpawner spawner, SpawnCallbackDelegate spawnCallback)
 {
     Spawner       = spawner;
     SpawnCallback = spawnCallback;
 }
Пример #5
0
 public EveryNActs(ISpawner spawner, SpawnCallbackDelegate spawnCallback, int interval) : base(spawner, spawnCallback)
 {
     EveryNActsStrategy = new ActorStrategy.EveryNActs(Spawn, interval);
 }
Пример #6
0
 public EnemySpawner(float x, float y, int remainingEnemies, SpawnCallbackDelegate spawnCallback) : base(x, y, remainingEnemies)
 {
     SpawnCallback = spawnCallback;
 }
Пример #7
0
 public void SetSpawnCallback(SpawnCallbackDelegate equalSpawnCallback)
 {
     SetSpawnCallback(equalSpawnCallback, equalSpawnCallback);
 }
Пример #8
0
 /// <summary>
 /// Sets new Callbacks, overwriting old ones.
 /// This is useful for delayed construction of the Spawner when its fields are required within the callback definition.
 /// </summary>
 /// <param name="leftSpawnCallback">callback used in the left Spawner</param>
 /// <param name="rightSpawnCallback">callback used in the right Spawner</param>
 public void SetSpawnCallback(SpawnCallbackDelegate leftSpawnCallback, SpawnCallbackDelegate rightSpawnCallback)
 {
     LeftSpawnCallback  = leftSpawnCallback;
     RightSpawnCallback = rightSpawnCallback;
 }
Пример #9
0
 //Implicitly uses equal callback on both sides
 public DualSymmetrySpawner(float y, int remainingEnemiesLeft, int remainingEnemiesRight, SpawnCallbackDelegate equalSpawnCallback)
     : this(y, remainingEnemiesLeft, remainingEnemiesRight, equalSpawnCallback, equalSpawnCallback)
 {
 }
Пример #10
0
 public DualSymmetrySpawner(float y, int remainingEnemiesLeft, int remainingEnemiesRight, SpawnCallbackDelegate leftSpawnCallback, SpawnCallbackDelegate rightSpawnCallback)
     : base(0, y, remainingEnemiesLeft + remainingEnemiesRight)
 {
     RemainingEnemiesLeft  = remainingEnemiesLeft;
     RemainingEnemiesRight = remainingEnemiesRight;
     SetSpawnCallback(leftSpawnCallback, rightSpawnCallback);
 }
Пример #11
0
 //Implicitly spawns on top of the game field where y=0
 protected void AddDualSpawner(float percentDelay, int enemies, SpawnCallbackDelegate spawnCallback)
 {
     AddDualSpawner(percentDelay, 0, enemies, spawnCallback);
 }
Пример #12
0
 public EveryNPercent(ISpawner spawner, SpawnCallbackDelegate spawnCallback, float percent) : base(spawner, spawnCallback)
 {
     this.IntervalPercent = percent;
     this.StartPercent    = Spawner.Field.Percent;
 }