Exemple #1
0
 //----------------------------------------------------------------------------------
 // Constructor
 //----------------------------------------------------------------------------------
 public ExplosionSpriteObserver(GameSprite.Name spriteName, float delay = 0.2f)
 {
     this.pTargetObj       = null;
     this.pExplosionSprite = null;
     this.name             = spriteName;
     this.timeDelay        = delay;
 }
Exemple #2
0
        //----------------------------------------------------------------------------------
        // Abstract Methods
        //----------------------------------------------------------------------------------
        public override void Notify()
        {
            // Delete missile
            //Debug.WriteLine("RemoveBombObserver: {0} {1}", this.pSubject.pObjA, this.pSubject.pObjB);


            // Need to separate out collision-pairs since this class can handle multiple Explosion cases.
            switch (this.name)
            {
            case GameSprite.Name.AlienExplosion:
                this.pTargetObj = this.pSubject.pObjB;
                break;

            case GameSprite.Name.MissileExplosion:
                this.pTargetObj = this.pSubject.pObjA;
                break;

            case GameSprite.Name.BombExplosion:
                this.pTargetObj = this.pSubject.pObjA;
                break;

            case GameSprite.Name.SaucerExplosion:
                this.pTargetObj = this.pSubject.pObjB;
                break;

            case GameSprite.Name.ShipExplosionA:
                this.pTargetObj = this.pSubject.pObjB;
                break;

            case GameSprite.Name.ShipExplosionB:
                this.pTargetObj = this.pSubject.pObjB;
                break;

            default:
                Debug.WriteLine("There is no Default explosion.  Make sure you enter the name you want.");
                Debug.Assert(false);
                break;
            }

            Debug.Assert(this.pTargetObj != null);


            float px = this.pTargetObj.x;
            float py = this.pTargetObj.y;

            // Factor attaches to the correct sprite batches
            // Could be an AlienExplosion, BombExplosion, MissileExplosion
            // Should be explosion sprites

            this.pExplosionSprite = EF.Create(this.name, px, py);
            this.pExplosionSprite.SetPosition(px, py);


            //   Delay
            ExplosionSpriteObserver pObserver = new ExplosionSpriteObserver(this);

            DelayedObjectManager.Attach(pObserver);
        }
        //----------------------------------------------------------------------------------
        // Constructor
        //----------------------------------------------------------------------------------
        public ExplosionSprite Create(GameSprite.Name theName, float posx = 0.0f, float posy = 0.0f)
        {
            ExplosionSprite pSprite = null;

            switch (theName)
            {
            case GameSprite.Name.AlienExplosion:
                pSprite = this.Grab(theName);
                // If not there then create.
                if (pSprite == null)
                {
                    pSprite = new ExplosionSprite(GameSprite.Name.AlienExplosion, posx, posy);
                    DLink.AddToFront(ref this.pHead, pSprite);
                    ExplosionSpriteCreationCount++;
                }
                break;

            case GameSprite.Name.MissileExplosion:
                pSprite = this.Grab(theName);
                // If not there then create.
                if (pSprite == null)
                {
                    pSprite = new ExplosionSprite(GameSprite.Name.MissileExplosion, posx, posy);
                    DLink.AddToFront(ref this.pHead, pSprite);
                    ExplosionSpriteCreationCount++;
                }
                break;

            case GameSprite.Name.BombExplosion:
                pSprite = this.Grab(theName);
                // If not there then create.
                if (pSprite == null)
                {
                    pSprite = new ExplosionSprite(GameSprite.Name.BombExplosion, posx, posy);
                    DLink.AddToFront(ref this.pHead, pSprite);
                    ExplosionSpriteCreationCount++;
                }
                break;

            case GameSprite.Name.SaucerExplosion:
                pSprite = this.Grab(theName);
                // If not there then create.
                if (pSprite == null)
                {
                    pSprite = new ExplosionSprite(GameSprite.Name.SaucerExplosion, posx, posy);
                    DLink.AddToFront(ref this.pHead, pSprite);
                    ExplosionSpriteCreationCount++;
                }
                break;

            case GameSprite.Name.ShipExplosionA:
                pSprite = this.Grab(theName);
                // If not there then create.
                if (pSprite == null)
                {
                    pSprite = new ExplosionSprite(GameSprite.Name.ShipExplosionA, posx, posy);
                    DLink.AddToFront(ref this.pHead, pSprite);
                    ExplosionSpriteCreationCount++;
                }
                break;

            case GameSprite.Name.ShipExplosionB:
                pSprite = this.Grab(theName);
                // If not there then create.
                if (pSprite == null)
                {
                    pSprite = new ExplosionSprite(GameSprite.Name.ShipExplosionB, posx, posy);
                    DLink.AddToFront(ref this.pHead, pSprite);
                    ExplosionSpriteCreationCount++;
                }
                break;

            default:
                Debug.WriteLine("Choose the Explosion you want by name.");
                Debug.Assert(false);
                break;
            }

            pSprite.AddExplosion();

            Debug.Assert(pSprite != null);
            return(pSprite);
        }
Exemple #4
0
 //----------------------------------------------------------------------------------
 // Constructor
 //----------------------------------------------------------------------------------
 public ExplosionSpriteEvent(ExplosionSprite expSprite)
 {
     this.pExplosionSprite = expSprite;
 }