www.pudn.com > Tetris.rar > CGameTimer.cpp
#include#include #include "CGameTimer.h" #include "MGameTimerObserver.h" //////////////////////////////////////////////////////////////////////////// // construct and destruct // NewL() CGameTimer* CGameTimer::NewL(MGameTimerObserver& aObserver) { CGameTimer* self = new (ELeave) CGameTimer(aObserver); CleanupStack::PushL(self); self->ConsturctL(); CleanupStack::Pop(); return self; } // ConstructL() void CGameTimer::ConsturctL() { iTick = 100000; iPeriodicTimer = CPeriodic::NewL(CActive::EPriorityStandard); } // CGameTimer() CGameTimer::CGameTimer(MGameTimerObserver& aObserver) : iObserver( aObserver ) {} // ~ CGameTimer::~CGameTimer() { iPeriodicTimer->Cancel(); delete iPeriodicTimer; iPeriodicTimer = NULL; } ///////////////////////////////////////////////////////////////////////////// // Other Method // Start() void CGameTimer::Start() { if( !iPeriodicTimer->IsActive() ) iPeriodicTimer->Start(iTick, iTick, TCallBack(CGameTimer::Period, this) ); } // Cancel() void CGameTimer::Cancel() { iPeriodicTimer->Cancel(); } // SetTickTime void CGameTimer::SetTickTime(TTimeIntervalMicroSeconds32 aTickTime) { iTick = aTickTime; Cancel(); Start(); } // Period() TInt CGameTimer::Period(TAny* aPtr) { return ((CGameTimer*)aPtr)->DoCall(); } // DoCall() TInt CGameTimer::DoCall() { return iObserver.DoGameFrameL(); }