www.pudn.com > 2DGameAnimS60C_v1_0.zip > GameTimer.cpp
//////////////////////////////////////////////////////////////////////// // // GameTimer.cpp // // Copyright (c) 2003 Nokia Mobile Phones Ltd. All rights reserved. // //////////////////////////////////////////////////////////////////////// #include "GameTimer.h" #include#include #include "GameTimerObserver.h" const TInt KCallbackInterval = 10000; CGameTimer* CGameTimer::NewLC(MGameTimerObserver& aObserver) { CGameTimer* self = new (ELeave) CGameTimer(aObserver); CleanupStack::PushL(self); self->ConstructL(); return self; } CGameTimer* CGameTimer::NewL(MGameTimerObserver& aObserver) { CGameTimer* self = CGameTimer::NewLC(aObserver); CleanupStack::Pop(); return self; } CGameTimer::CGameTimer(MGameTimerObserver& aObserver): iObserver(aObserver) { } void CGameTimer::ConstructL() { iPeriodicTimer = CPeriodic::NewL(CActive::EPriorityIdle); // iPeriodicTimer = CPeriodic::NewL(CActive::EPriorityLow); } void CGameTimer::Restart() { iPeriodicTimer->Start(0,KCallbackInterval,TCallBack(CGameTimer::TimerCompleted,this)); } void CGameTimer::CancelTimer() { iPeriodicTimer->Cancel(); } TBool CGameTimer::IsActive() { return iPeriodicTimer->IsActive(); } CGameTimer::~CGameTimer() { delete iPeriodicTimer; iPeriodicTimer = 0; } TInt CGameTimer::TimerCompleted(TAny* aObject) { return ((CGameTimer*)aObject)->HandleGameTimerCompleted(); } TInt CGameTimer::HandleGameTimerCompleted() { TInt result = iObserver.DoGameFrame(); if(result == StopTicking) { iPeriodicTimer->Cancel(); } return result; }