Esempio n. 1
0
 /// <summary>
 /// Statischer Konstruktor, der das PowerUp beim <c>PowerUpGenerator</c> registriert.
 /// </summary>
 static SlowMotion()
 {
     PowerUpGenerator.AddAvailablePowerUp(PowerUpEnum.SlowMotion,
                                          GameItemConstants.SlowMotionFrequency,
                                          delegate(Vector2 pos, Vector2 vel)
     {
         new SlowMotion(pos, vel);
     });
 }
Esempio n. 2
0
 /// <summary>
 /// Statischer Konstruktor, der das PowerUp beim <c>PowerUpGenerator</c> registriert.
 /// </summary>
 static Deflector()
 {
     PowerUpGenerator.AddAvailablePowerUp(PowerUpEnum.Deflector,
                                          GameItemConstants.DeflectorFrequency,
                                          delegate(Vector2 pos, Vector2 vel)
     {
         new Deflector(pos, vel);
     });
 }
 /// <summary>
 /// Statischer Konstruktor, der das PowerUp beim <c>PowerUpGenerator</c> registriert.
 /// </summary>
 static Rapidfire()
 {
     PowerUpGenerator.AddAvailablePowerUp(PowerUpEnum.Rapidfire,
                                          GameItemConstants.RapidfireFrequency,
                                          delegate(Vector2 pos, Vector2 vel)
     {
         new Rapidfire(pos, vel);
     });
 }
 /// <summary>
 /// Statischer Konstruktor, der das PowerUp beim <c>PowerUpGenerator</c> registriert.
 /// </summary>
 static Speedboost()
 {
     PowerUpGenerator.AddAvailablePowerUp(PowerUpEnum.Speedboost,
                                          GameItemConstants.SpeedboostFrequency,
                                          delegate(Vector2 pos, Vector2 vel)
     {
         new Speedboost(pos, vel);
     });
 }
Esempio n. 5
0
 /// <summary>
 /// Statischer Konstruktor, der das PowerUp beim <c>PowerUpGenerator</c> registriert.
 /// </summary>
 static MultiShot()
 {
     PowerUpGenerator.AddAvailablePowerUp(PowerUpEnum.MultiShot,
                                          GameItemConstants.MultiShotFrequency,
                                          delegate(Vector2 pos, Vector2 vel)
     {
         new MultiShot(pos, vel);
     });
 }
Esempio n. 6
0
        /// <summary>
        /// Diese Methode wird bei einer Kollision mit einem anderen Objekt aufgerufen.
        /// Innerhalb der Methode wird der Schaden am übergebenen Objekt berechnet,
        /// oder PowerUps angewendet. Außerdem wird das <c>Hit</c>-Event ausgelöst.
        /// </summary>
        /// <remarks>
        /// Bei der Kollisionsprüfung wird nur verhindert, dass zwei gleichartige Objekte kollidieren.
        /// Deshalb muss in dieser Methode geprüft werden, ob eine Kollision mit dem übergebenen Objekt überhaupt sinnvoll ist.
        /// </remarks>
        /// <param name="collisionPartner">Das GameItem mit dem die Kollision stattfand.</param>
        public override void IsCollidedWith(IGameItem collisionPartner)
        {
            // Aliens können mit dem Spieler, Spielerprojektilen und Schilden kollidieren

            if (!(collisionPartner is Player) &&
                !(collisionPartner is Projectile) &&
                !(collisionPartner is Shield))
            {
                return;
            }

            if (collisionPartner is Projectile)
            {
                Projectile projectile = (Projectile)collisionPartner;

                if (!(projectile.ProjectileType == ProjectileTypeEnum.PlayerNormalProjectile) &&
                    !(projectile.ProjectileType == ProjectileTypeEnum.PiercingProjectile))
                {
                    return;
                }
            }

            // Wenn der Programmfluss hier ankommt, gibt es eine Kollision.

            if (Alien.Hit != null)
            {
                Alien.Hit(this, EventArgs.Empty);
            }
            Hitpoints -= collisionPartner.Damage;

            if (Hitpoints <= 0)
            {
                if (Alien.ScoreGained != null)
                {
                    Alien.ScoreGained(this, EventArgs.Empty);
                }

                PowerUpGenerator.GeneratePowerUp(PowerUpEnum.Random, Position);
            }
        }