public static void Attach(Observer pObserver)
        {
            // protection
            Debug.Assert(pObserver != null);

            DelayedObjectManager pDelayMan = DelayedObjectManager.privGetInstance();

            DLink.AddToFront(ref pDelayMan.pHead, pObserver);
        }
        public static void PurgeAll()
        {
            DelayedObjectManager pDelayMan = DelayedObjectManager.privGetInstance();

            // remove all from list
            while (pDelayMan.pHead != null)
            {
                DLink.RemoveFront(ref pDelayMan.pHead);
            }
        }
        static public void Process()
        {
            DelayedObjectManager pDelayMan = DelayedObjectManager.privGetInstance();

            Observer pObserver = (Observer)pDelayMan.pHead;

            while (pObserver != null)
            {
                // Fire off remove method
                pObserver.Execute();

                pObserver = (Observer)pObserver.GetNext();
            }

            // remove all from list
            while (pDelayMan.pHead != null)
            {
                DLink.RemoveFront(ref pDelayMan.pHead);
            }
        }
Пример #4
0
        static public void Attach(ColObserver observer)
        {
            // protection
            Debug.Assert(observer != null);

            DelayedObjectManager pDelayMan = DelayedObjectManager.privGetInstance();

            // add to front
            if (pDelayMan.pHeadColObserver == null)
            {
                pDelayMan.pHeadColObserver = observer;
                observer.pMNext            = null;
                observer.pMPrev            = null;
            }
            else
            {
                observer.pMNext = pDelayMan.pHeadColObserver;
                observer.pMPrev = null;
                pDelayMan.pHeadColObserver.pMPrev = observer;
                pDelayMan.pHeadColObserver        = observer;
            }
        }
Пример #5
0
        //process any observers in the update loop of main game
        static public void Process()
        {
            //get the manager instance
            DelayedObjectManager pDelayMan = DelayedObjectManager.privGetInstance();

            //First - Fire off all the observers currently on the list

            //get the head observer
            ColObserver pNode = pDelayMan.pHeadColObserver;

            //iterate through the observer list
            while (pNode != null)
            {
                // Fire off listener
                pNode.Execute();

                //get the next observer
                pNode = (ColObserver)pNode.pMNext;
            }


            //done executing all observers - now remove them
            pNode = pDelayMan.pHeadColObserver;
            ColObserver pTmp = null;

            //iterate through the observer list
            while (pNode != null)
            {
                //hold current observer in pTmp for reference after removal
                pTmp  = pNode;
                pNode = (ColObserver)pNode.pMNext;

                // remove observer
                pDelayMan.privDetach(pTmp, ref pDelayMan.pHeadColObserver);
            }
        }