timer.h

来自「奇迹世界公用文件源代码,研究网络游戏的朋友可以研究下」· C头文件 代码 · 共 113 行

H
113
字号
#ifndef __TIMER_H__
#define __TIMER_H__
//=======================================================================================================================
/// Timer 努贰胶
/**
	@history
			- 2005.2.28 : Timer based time 栏肺 官操菌促!
*/
//=======================================================================================================================
#pragma once

namespace util
{
class Timer
{
public: 
	Timer():m_dwExpireTime(0),m_dwIntervalTime(0),m_bCheckTime(FALSE) {}
	~Timer(){}

public: 

	inline void SetTimer( DWORD dwIntervalTime )
	{
		m_dwIntervalTime	= dwIntervalTime;
		Reset();
	}

	inline DWORD GetIntervalTime() { return m_dwIntervalTime;	}
	// m_dwIntervalTime 矫埃 埃拜阑 弊措肺 蜡瘤窍绊 促矫 鸥捞赣甫 倒赴促.
	inline void Reset(/*m_dwIntervalTime*/)
	{
		m_dwExpireTime		= GetTickCount() + m_dwIntervalTime;
		EnableCheckTime();
	}

	// 鸥捞赣甫 resume
	inline VOID EnableCheckTime()
	{
		m_bCheckTime = TRUE;
	}

	// 鸥捞赣甫 吝瘤茄促.
	inline VOID DisableCheckTime()
	{
		m_bCheckTime = FALSE;
	}
	inline VOID IncreasingExpireTime( DWORD dwExpireTime )
	{
		m_dwExpireTime += dwExpireTime;
	}

	// 父丰鸥烙捞 登扁鳖瘤狼 泅犁 柳青伏
	 float GetProgressRatio()
	{
		
		int dwProgressTime = GetTickCount() - (m_dwExpireTime - m_dwIntervalTime);
		return min(1.0f,((float)dwProgressTime / (float)m_dwIntervalTime));
	}

	// problem : 捞 窃荐甫 啊阐 龋免且 版快 IsExpired() == TRUE啊 登绰 版快啊 积变促.
	// 恐唱搁 1 Tick捞扼档 坷瞒啊 积扁瘤 臼扁 困秦 IsExpired()龋免茄 矫埃阑 利侩窍瘤 臼绰促.
	// Therefore, 捞凡版快 IsExpired() == TRUE等 饶俊 Reset()甫 茄锅 龋免秦 霖促!
	inline BOOL IsExpired( BOOL bReset=TRUE )
	{
		DWORD dwCurTime;
		if( m_bCheckTime && ( dwCurTime = GetTickCount() ) >= m_dwExpireTime ) 
		{
			if( bReset )
			{
				m_dwExpireTime = dwCurTime + m_dwIntervalTime;
			}
			return TRUE;
		}
		else 
			return FALSE;
	}

	// 茄锅父 鸥捞赣甫 倒府扁 困秦
	inline BOOL IsExpiredManual( BOOL bReset=TRUE )
	{
		DWORD dwCurTime;
		if( m_bCheckTime && ( dwCurTime = GetTickCount() ) >= m_dwExpireTime ) 
		{
			if( bReset )
			{
				m_dwExpireTime = dwCurTime + m_dwIntervalTime;
			}
			DisableCheckTime();
			return TRUE;
		}
		else 
			return FALSE;
	}

	void InitCoolTime()
	{
		m_dwExpireTime = 0;
	}

	inline DWORD GetExpireTime()	{ return m_dwExpireTime; }

private:
	BOOL		m_bCheckTime;
	DWORD		m_dwExpireTime;
	DWORD		m_dwIntervalTime;

};

}//End of namespace util

#endif //__TIMER_H__

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?