Example #1
0
//==============================================================================
// Brief  : 要素の生成処理
// Return : int							: 登録ID
// Arg    : int type						: 種類
// Arg    : int priorityUpdate				: 更新優先度
// Arg    : int priorityDraw				: 描画優先度
//==============================================================================
int CManagerObjectImage::Create( int type, int priorityUpdate, int priorityDraw )
{
	// 種類ごとの処理
	CTexture*	pTexture = nullptr;
	switch( type )
	{
	// タイトル・ロゴ
	case TYPE_TITLE_LOGO:
		pTexture = m_pTexture->Get( m_pTexture->Load( _T( "title/title_logo.png" ) ) );
		break;

	// タイトル・プレスキー
	case TYPE_TITLE_PRESS_KEY:
		pTexture = m_pTexture->Get( m_pTexture->Load( _T( "title/PressStart.png" ) ) );
		break;

	// タイトル・ゲームスタート
	case TYPE_TITLE_GAME_START:
		pTexture = m_pTexture->Get( m_pTexture->Load( _T( "title/GameStart.png" ) ) );
		break;

	// タイトル・チュートリアル
	case TYPE_TITLE_GAME_TUTORIAL:
		pTexture = m_pTexture->Get( m_pTexture->Load( _T( "title/Tutorial.png" ) ) );
		break;

	// タイトル・ランキング
	case TYPE_TITLE_GAME_RANKING:
		pTexture = m_pTexture->Get( m_pTexture->Load( _T( "title/Ranking.png" ) ) );
		break;

	// タイトル・設定
	case TYPE_TITLE_GAME_OPTION:
		pTexture = m_pTexture->Get( m_pTexture->Load( _T( "title/Option.png" ) ) );
		break;

	// タイトル・終了
	case TYPE_TITLE_GAME_EXIT:
		pTexture = m_pTexture->Get( m_pTexture->Load( _T( "title/Exit.png" ) ) );
		break;

	// リザルト・ロゴ
	case TYPE_RESULT_LOGO:
		pTexture = m_pTexture->Get( m_pTexture->Load( _T( "result/Result.png" ) ) );
		break;

	// ポーズ・ロゴ
	case TYPE_PAUSE_LOGO:
		pTexture = m_pTexture->Get( m_pTexture->Load( _T( "game/PauseLogo.png" ) ) );
		break;

	// ポーズ・メニュー
	case TYPE_PAUSE_MENU:
		pTexture = m_pTexture->Get( m_pTexture->Load( _T( "game/PauseMenu.png" ) ) );
		break;

	// ポーズ・カーソル
	case TYPE_PAUSE_CURSOR:
		pTexture = m_pTexture->Get( m_pTexture->Load( _T( "game/pause_arrow.png" ) ) );
		break;


	//	NAGASAKI追加
	//	丸いエフェクト
	case TYPE_EFFECT:
		pTexture = m_pTexture->Get( m_pTexture->Load( _T( "game/effect.jpg" ) ) );
		break;

	// その他
	default:
		break;
	}

	// オブジェクトの生成
	CObjectImage*	pObject = nullptr;
	pObject = new CObjectImage();
	if( pObject == nullptr )
	{
		ThrowExceptionBadAllocation();
	}
	pObject->SetSize( pTexture->m_width, pTexture->m_height );

	// ステートテーブルの設定
	pObject->SetStateTable( m_ppTableState );

	// 種類ごとの処理
	switch( type )
	{
	// ポーズカーソル
	case TYPE_PAUSE_CURSOR:
		pObject->ShiftState( CObjectImage::STATE_CURSOR );
		break;

	// その他
	default:
		pObject->ShiftState( CObjectImage::STATE_NONE );
		break;
	}

	// 描画オブジェクトの生成
	CGraphicSet2D*		pGraphic = nullptr;
	pGraphic = new CGraphicSet2D( 1, m_pRenderMatrix, m_pDraw->GetGraphicDevice(), m_pPolygon, pTexture );
	if( pGraphic == nullptr )
	{
		ThrowExceptionBadAllocation();
	}
	pGraphic->SetRenderParameter( 0, m_pRenderParameterPolygon );
	pObject->SetGraphic( pGraphic );

	// 更新リストへ登録
	pObject->SetIdUpdate( m_pUpdate->RegisterItem( pObject, priorityUpdate ) );

	// 描画リストへ登録
	pObject->SetIdDraw( m_pDraw->RegisterItem( pGraphic, priorityDraw ) );

	// 要素の登録
	int		idRegister = m_idCurrent;		// 返却ID
	m_pImage->Register( m_idCurrent, type, pObject, pGraphic );
	++m_idCurrent;
	return idRegister;
}