예제 #1
0
        //----------------------------------------------------------------------------------
        // Abstract Methods
        //----------------------------------------------------------------------------------

        public override void Notify()
        {
            // Delete missile
            //Debug.WriteLine("RemoveBrickObserver: {0} {1}", this.pSubject.pObjA, this.pSubject.pObjB);

            this.pAlien = (AlienGO)this.pSubject.pObjB;


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

            if (pAlien.bMarkForDeath == false)
            {
                //Award points
                int points = ((AlienGO)this.pAlien).GetPoints();
                Debug.WriteLine(" +{0} points!", points);
                Score.IncreaseScore(points);
                Score.Refresh();

                pAlien.bMarkForDeath = true;
                //   Delay
                RemoveUFOObserver pObserver = new RemoveUFOObserver(this);
                DelayedObjectManager.Attach(pObserver);
            }
            else
            {
                pAlien.bMarkForDeath = true;
            }
        }
        private RemoveUFOObserver(RemoveUFOObserver m)
        {
            Debug.Assert(m.pAlien != null);
            this.pAlien = m.pAlien;

            this.pEvent = new RemoveAlienEvent();
        }
예제 #3
0
        public RemoveUFOObserver(RemoveUFOObserver m)
        {
            Debug.Assert(m.pUFO != null);
            this.pUFO = m.pUFO;

            this.pSB_Aliens = SpriteBatchMan.Find(SpriteBatch.Name.Aliens);
            Debug.Assert(this.pSB_Aliens != null);

            this.pSB_Boxes = SpriteBatchMan.Find(SpriteBatch.Name.Boxes);
            Debug.Assert(this.pSB_Boxes != null);
        }
예제 #4
0
        public override void notify()
        {
            this.pUFO = this.pSubject.pObjB;
            Debug.Assert(this.pUFO != null);

            if (pUFO.bMarkForDeath == false)
            {
                pUFO.bMarkForDeath = true;
                //   Delay
                RemoveUFOObserver pObserver = new RemoveUFOObserver(this);
                DelayedObjectMan.Attach(pObserver);
            }
        }
        public override void Notify()
        {
            this.pAlien = (OrangeSaucer)this.pSubject.pObjB;

            if (this.pAlien.bMarkForDeath == false)
            {
                this.pAlien.bMarkForDeath = true;

                // Delay - remove object later
                // TODO - reduce the new functions
                RemoveUFOObserver pObserver = new RemoveUFOObserver(this);
                DelayedObjectManager.Attach(pObserver);
            }
        }
예제 #6
0
        public override void Notify()
        {
            // At this point we have two game objects
            // Actually we can control the objects in the visitor
            // Alphabetical ordering... A is missile,  B is wall

            // This cast will throw an exception if I'm wrong
            this.pUFO = (UFO)this.pSubject.pObjB;

            if (pUFO.bMarkForDeath == false)
            {
                pUFO.bMarkForDeath = true;

                // Delay - remove object later
                // TODO - reduce the new functions
                RemoveUFOObserver pObserver = new RemoveUFOObserver(this);
                DelayedObjectMan.Attach(pObserver);
            }
        }
예제 #7
0
        public override void Notify()
        {
            this.pUFO = (UFO)this.pSubject.pObjA;
            Debug.Assert(this.pUFO != null);

            if (pUFO.bMarkForDeath == false)
            {
                pUFO.bMarkForDeath = true;
                //   Delay
                //AnimationSprite pAnimUFODies = new AnimationSprite(GameSprite.Name.UFO);

                //pAnimUFODies.Attach(Image.Name.UFODies);
                //pAnimUFODies.Attach(Image.Name.UFO);

                //TimerMan.Add(TimerEvent.Name.SquidAnimation, pAnimUFODies, 0.01f, false);

                RemoveUFOObserver pObserver = new RemoveUFOObserver(this);
                DelayedObjectMan.Attach(pObserver);
            }
        }
예제 #8
0
        protected override void derivedUpdate(ColSubject pColSubject)
        {
            //Debug.WriteLine("RemoveInvaderObserver: {0} vs {1}", pColSubject.pObjA.name, pColSubject.pObjB.name);

            if (pColSubject.pObjA.name == GameObject.Name.UFO)
            {
                this.pInvader = (InvaderCategory)pColSubject.pObjA;
            }
            else if (pColSubject.pObjB.name == GameObject.Name.UFO)
            {
                this.pInvader = (InvaderCategory)pColSubject.pObjB;
            }
            else
            {
                Debug.Assert(false, "Neither Object is not a UFO!");
            }

            Debug.Assert(this.pInvader != null);
            if (pInvader.bMarkForDeath == false)
            {
                pInvader.bMarkForDeath = true;

                if (pColSubject.pObjA.name == GameObject.Name.Missle || pColSubject.pObjB.name == GameObject.Name.Missle)
                {
                    OneTimeAnimation pDeathAnimation = new OneTimeAnimation(Sprite.Name.InvaderDeath, this.pInvader.x, this.pInvader.y);
                    pDeathAnimation.Attach(Image.Name.InvaderDeath2);
                    pDeathAnimation.Attach(Image.Name.InvaderDeath1);
                    TimerManager.Add(TimeEvent.Name.InvaderDeath, pDeathAnimation, 0.05f);
                }

                pHardwareSound.Stop();
                // Delay - remove object later
                RemoveUFOObserver pObserver = new RemoveUFOObserver(this);
                DelayedObjectManager.Attach(pObserver);
            }
        }
예제 #9
0
 public RemoveUFOObserver(RemoveUFOObserver u)
 {
     Debug.Assert(u != null);
     this.pUFO = u.pUFO;
 }
예제 #10
0
 public RemoveUFOObserver(RemoveUFOObserver m)
 {
     Debug.Assert(m != null);
 }
예제 #11
0
 public RemoveUFOObserver(RemoveUFOObserver b)
 {
     Debug.Assert(b != null);
     this.pUFO     = b.pUFO;
     this.pGameObj = b.pGameObj;
 }
예제 #12
0
 public RemoveUFOObserver(RemoveUFOObserver pRUObserver)
 {
     this.pInvader = pRUObserver.pInvader;
 }
예제 #13
0
 public RemoveUFOObserver(RemoveUFOObserver b)
 {
     this.pUFO = b.pUFO;
 }
예제 #14
0
 public RemoveUFOObserver(RemoveUFOObserver a)
 {
     Debug.Assert(a != null);
     this.pAlien = a.pAlien;
 }