コード例 #1
0
 /// <summary>
 /// Erzeugt ein Mutterschiff
 /// </summary>
 /// <param name="position">Startposition</param>
 /// <param name="velocity">maximale Geschwindigkeit</param>
 /// <param name="hitpoints">Lebenspunkte</param>
 /// <param name="damage">Schaden, der anderen zugefügt wird</param>
 /// <param name="weapon">Waffe</param>
 /// <param name="scoreGain">Punktwert des Mutterschiffs</param>
 public Mothership(Vector2 position, Vector2 velocity, int hitpoints, int damage, Weapon weapon, int scoreGain)
     : base(position, velocity, hitpoints, damage, weapon, scoreGain)
 {
     if (Mothership.Created != null)
     {
         Mothership.Created(this, EventArgs.Empty);
     }
 }
コード例 #2
0
        /// <summary>
        /// Diese Methode wird aufgerufen, wenn die Lebenspunkte auf den Wert 0 oder darunter sinken.
        /// Sie sorgt dafür, dass das <c>Destroyed</c>-Event ausgelöst wird.
        /// </summary>
        protected override void Destroy()
        {
            IsAlive = false;

            if (Mothership.Destroyed != null)
            {
                Mothership.Destroyed(this, EventArgs.Empty);
            }
        }
コード例 #3
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)
        {
            // Mutterschiffe 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 (Mothership.Hit != null)
            {
                Mothership.Hit(this, EventArgs.Empty);
            }
            Hitpoints -= collisionPartner.Damage;

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