CGameTimer.cpp
上传用户:snevogroup
上传日期:2008-06-06
资源大小:432k
文件大小:1k
源码类别:

Symbian

开发平台:

C/C++

  1. #include <e32svr.h>
  2. #include <coemain.h>
  3. #include "CGameTimer.h"
  4. #include "MGameTimerObserver.h"
  5. ////////////////////////////////////////////////////////////////////////////
  6. // construct and destruct
  7. // NewL()
  8. CGameTimer* CGameTimer::NewL(MGameTimerObserver& aObserver)
  9. {
  10. CGameTimer* self = new (ELeave) CGameTimer(aObserver);
  11. CleanupStack::PushL(self);
  12. self->ConsturctL();
  13. CleanupStack::Pop();
  14. return self;
  15. }
  16. // ConstructL()
  17. void CGameTimer::ConsturctL()
  18. {
  19. iTick = 100000;
  20. iPeriodicTimer = CPeriodic::NewL(CActive::EPriorityStandard);
  21. }
  22. // CGameTimer()
  23. CGameTimer::CGameTimer(MGameTimerObserver& aObserver) : iObserver( aObserver )
  24. {}
  25. // ~
  26. CGameTimer::~CGameTimer()
  27. {
  28. iPeriodicTimer->Cancel();
  29. delete iPeriodicTimer;
  30. iPeriodicTimer = NULL;
  31. }
  32. /////////////////////////////////////////////////////////////////////////////
  33. // Other Method
  34. // Start()
  35. void CGameTimer::Start()
  36. {
  37. if( !iPeriodicTimer->IsActive() )
  38. iPeriodicTimer->Start(iTick, iTick, TCallBack(CGameTimer::Period, this) );
  39. }
  40. // Cancel()
  41. void CGameTimer::Cancel()
  42. {
  43. iPeriodicTimer->Cancel();
  44. }
  45. // SetTickTime
  46. void CGameTimer::SetTickTime(TTimeIntervalMicroSeconds32 aTickTime)
  47. {
  48. iTick = aTickTime;
  49. Cancel();
  50. Start();
  51. }
  52. // Period()
  53. TInt CGameTimer::Period(TAny* aPtr)
  54. {
  55. return ((CGameTimer*)aPtr)->DoCall();
  56. }
  57. // DoCall()
  58. TInt CGameTimer::DoCall()
  59. {
  60. return iObserver.DoGameFrameL();
  61. }