
//==============================================================
//! @file      CAllKeysState.cpp
//! @brief     CAllKeysStateクラスの定義
//==============================================================

#include "..\..\00_HeaderFiles\03_OtherClasses\CAllKeysState.h"

CAllKeysState::CAllKeysState( void )
{
	// 生成を二度しようとしたときはプログラムを終了させる。
	static bool bFirstGeneration = true;
	if ( bFirstGeneration )
	{
		bFirstGeneration = false;
		return;
	}
	
	throw( false );
}

CAllKeysState::~CAllKeysState(void)
{
}

void CAllKeysState::Record( void )
{
	GetHitKeyStateAll( m_achTempKeysState );
	
	for( int i = 0; i < 256; i++ )
	{
		if( m_achTempKeysState[ i ] != '\0' )   // i番のキーコードに対応するキーが押されていたら
		{
			m_aiAllKeysState[ i ]++;            // 加算
		}
		else                                    // 押されていなければ
		{
			m_aiAllKeysState[ i ] = 0;          // 0にする
		}
	}
}

// 
bool CAllKeysState::IsKeyPushed( const int arg_KEY_ID )
{
	// 整数との比較式では左辺に整数を置いたほうがバグ防止のためによい。
	if ( 1 == m_aiAllKeysState[ arg_KEY_ID ] )
	{
		return true;
	}
	else
	{
		return false;
	}
}

// 
bool CAllKeysState::IsKeyHold( const int arg_KEY_ID )
{
	// 60フレーム以上キーが押されていたら
	if ( m_aiAllKeysState[ arg_KEY_ID ] <= 60 )
	{
		return true;
	}
	else
	{
		return false;
	}
}


