home *** CD-ROM | disk | FTP | other *** search
/ AI Game Programming Wisdom / AIGameProgrammingWisdom.iso / SourceCode / 11 Learning / 04 Mommersteeg / Tennis / Observer.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-23  |  1.8 KB  |  48 lines

  1. //----------------------------------------------------------------------------------------------
  2. // Sequential Prediction Demo: The positioning pattern
  3. // 
  4. // Author:  Fri Mommersteeg
  5. // Date:    10-09-2001
  6. // File:    Observer.cpp
  7. //----------------------------------------------------------------------------------------------
  8.  
  9. //----------------------------------------------------------------------------------------------
  10. // Include files
  11. //----------------------------------------------------------------------------------------------
  12.  
  13. #include "stdafx.h"
  14. #include "observer.h"
  15.  
  16. //----------------------------------------------------------------------------------------------
  17. // RegisterObserver(): Registers a new observer with the subject
  18. //----------------------------------------------------------------------------------------------
  19.  
  20. void CSubject::RegisterObserver(CObserver * pObserver) { 
  21.     observers.Add(pObserver); 
  22. }
  23.  
  24. //----------------------------------------------------------------------------------------------
  25. // UnregisterObserver(): Unregisters an observer with the subject
  26. //----------------------------------------------------------------------------------------------
  27.  
  28. void CSubject::UnregisterObserver(CObserver * pObserver) {    
  29.     observers.Remove(pObserver);
  30. }
  31.  
  32. //----------------------------------------------------------------------------------------------
  33. // NotifyAll(): Notifies all observers of a certain event
  34. //----------------------------------------------------------------------------------------------
  35.  
  36. BOOL CSubject::NotifyAll(int msg, DWORD param) {
  37.     int i = 0;
  38.     BOOL proceed = TRUE;
  39.     while (i<observers.GetSize() && proceed) {
  40.         CObserver * obs = observers[i];
  41.         proceed = obs->Notify(msg, param);
  42.         i++;
  43.     }
  44.     return !proceed; // did some observer react?
  45.  
  46.     return FALSE;
  47. }
  48.