예제 #1
0
/*アイテムを使う、削除、確認などを行ないます*/
int Item_Manipulate::ItemUsingSystem( const int ChoseItem){

	/* 変数の宣言 */
	int ech = 0;//エラーチェック変数
	D3DXVECTOR3 ItemIconPos( 0.0, 0.0, 0.0);//アイテム操作アイコンの位置
	
	/* アイテムアイコンを左からどの画像を描画するか決める変数 */
	const int ItemIconIDToRight[5][4] = {
		{ 8, 6, 7},
		{ 6, 7},
		{ 5, 6, 7},
		{ 7},
		{ 8, 6, 7}
	};

	/* アイテムアイコンを何個表示させるのか定義する変数 */
	const int ItemIconNumber[5] = { 3, 2, 3, 1, 3};

	// 座標操作
	ItemIconPos.x = ItemSysSetPos.x + 10.0f;
	ItemIconPos.y = ItemSysSetPos.y + 30.0f;

	//アイテム操作アイコンの描画
	for( int i=0; i < ItemIconNumber[(ChoseItem)]; i++ ){

			ech = E3DRenderSprite( MenuSpriteIDs[(ItemIconIDToRight[(ChoseItem)][i])], 1, 1, ItemIconPos);//背景の位置
			_ASSERT( ech != 1 );//エラーチェック
			
			ItemIconPos.x = ItemIconPos.x + 40;
	 }




	return 0;
}
예제 #2
0
int Render3DEnvironment()
{
	int ret;
	int curframe;
	ret = E3DSetNewPose( hsid1, &curframe );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}

	//テクスチャにシーンをレンダリング
	ret = E3DBeginScene( scid_org, 0 );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}
	int status;
	ret = E3DChkInView( scid_org, hsid1, &status );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}
	ret = E3DRender( scid_org, hsid1, 0, 1, 0, 0 );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}
	ret = DrawText();
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}
	ret = E3DEndScene();
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}


	//サイズの小さいテクスチャにレンダリング
	E3DCOLOR4F col1 = { 1.0f, 1.0f, 1.0f, 1.0f };
	ret = E3DBlendRTTexture( scid_small, texid_org, col1, D3DTEXF_LINEAR, 
		-1, col1, D3DTEXF_LINEAR, 
		D3DBLENDOP_ADD, D3DBLEND_ONE, D3DBLEND_ONE, 1 );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}


	//ぼかし処理
//	ret = E3DBlurTexture16Box( scid_blur, texid_small );
//	ret = E3DBlurTextureGauss5x5( scid_blur, texid_small, 10.0 );
	ret = E3DBlurTextureGauss( scid_blur, scid_work, texid_work, texid_small, 20.0f, 1 );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}


	//ぼかしと元画像をアッドモードでブレンド
	E3DCOLOR4F col2 = { 1.0f, 1.0f, 1.0f, 1.0f };
	E3DCOLOR4F col3 = { 1.0f, 1.0f, 1.0f, 1.0f };
	ret = E3DBlendRTTexture( scid_final, texid_org, col2, D3DTEXF_POINT,
		texid_blur, col3, D3DTEXF_LINEAR,
		D3DBLENDOP_ADD, D3DBLEND_ONE, D3DBLEND_ONE, 1 );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}



	//メイン画面に表示
	ret = E3DBeginScene( scid, 0 );
	_ASSERT( !ret );
	ret = E3DBeginSprite();
	_ASSERT( !ret );
	
	//元画像を表示
	float scalex = 1.0f;
	float scaley = 1.0f;
	D3DXVECTOR3 tra = D3DXVECTOR3( 0.0f, 0.0f, 0.1f );
	ret = E3DRenderSprite( spid1, scalex, scaley, tra );
	_ASSERT( !ret );

	//ぼかし画像を表示
	tra.x = 256.0f;
	tra.y = 0.0f;
	ret = E3DRenderSprite( spid2, scalex, scaley, tra );
	_ASSERT( !ret );

	//ブレンド画像を表示
	tra.x = 0.0f;
	tra.y = 256.0f;
	ret = E3DRenderSprite( spid3, scalex, scaley, tra );
	_ASSERT( !ret );

	ret = E3DEndSprite();
	_ASSERT( !ret );
	ret = E3DEndScene();
	_ASSERT( !ret );

	ret = E3DPresent( scid );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}

	ret = E3DWaitbyFPS( 60, &retfps );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}


	return 0;
}
예제 #3
0
/*アイテム画像の表示、制御を行ないます*/
int Item_Manipulate::PutItemSprite( const int ChoseItem, const int MenuMode, const POINT ItemSysSetPos){

	/* 変数の宣言 */
	int ech = 0;// エラーチェック変数
	int ItemNumber = -1;//どのアイテムを選んだか、代入します

	/* 武器画像位置配列変数 */
	const float ItemSpritePosition[3][2][6] = {
		{ { 280, 440, 280, 440} , {100 , 100, 190, 190} },// 武器メニュー
		{ { 280, 440, 280, 440} , {100 , 100, 190, 190}  },// 弾薬メニュー
		{ { 280, 440, 280, 440 , 360} , {90 , 90, 170, 170 , 250}  } // 回復系メニュー
	};
	D3DXVECTOR3 ItemSpritePos( 0.0, 0.0, 0.0);// アイテム画像の位置
	D3DXVECTOR3 DatilSpritePos( 0.0, 0.0, 0.0);//説明バーの位置



	/* ///////////////////////////////////// */
	// すべての画像スプライトの描画を行ないます
	/* ///////////////////////////////////// */
	switch( ChoseItem ){
		case 0:{//武器のメニュー
				for(int i=0; i<4; i++){
						ItemSpritePos.x = ItemSpritePosition[0][0][i];/**/ItemSpritePos.y = ItemSpritePosition[0][1][i];
						ech = E3DRenderSprite( BackPack_Weapon[i][0], 1, 1, ItemSpritePos);//上部の白いバー
						_ASSERT( ech != 1 );//エラーチェック
				}					
				break;
		}
		case 1:{//弾薬のメニュー
				for(int i=0; i<4; i++){
						ItemSpritePos.x = ItemSpritePosition[1][0][i];/**/ItemSpritePos.y = ItemSpritePosition[1][1][i];
						ech = E3DRenderSprite( BackPack_Ammo[i][0], 1, 1, ItemSpritePos);//上部の白いバー
						_ASSERT( ech != 1 );//エラーチェック
				}
				break;
		}
		case 2:{//回復系のメニュー
				for(int i=0; i<5; i++){
						ItemSpritePos.x = ItemSpritePosition[2][0][i];/**/ItemSpritePos.y = ItemSpritePosition[2][1][i];
						ech = E3DRenderSprite( BackPack_Recovery[i][0], 1, 1, ItemSpritePos);//上部の白いバー
						_ASSERT( ech != 1 );//エラーチェック
				}
				break;
			}
	}

	/* ここまで */


	/* ///////////////////////////////////////// */
	//  アイテム画像の上にマウスポインタがあるなら。
	//	その、画像IDを取得する
	// ///////////////////////////////////////// */
	if( MenuMode == 0){// モードが「アイテムを選択してない」なら
			switch( ChoseItem ){
					case 0:{//武器のメニュー
						for(int i=0; i<4; i++){
							if(( ItemSpritePosition[0][0][i] < System::MousePos.x ) && ( System::MousePos.x < ItemSpritePosition[0][0][i] + 128.0f )
									&& ( ItemSpritePosition[0][1][i]  + 16.0f < System::MousePos.y ) && ( System::MousePos.y < ItemSpritePosition[0][1][i] + 90.0f)){
										ItemNumber = i;//カーソルと重なっていた画像のIDを代入
							}
						}
						break;
					}
					case 1:{//弾薬のメニュー
						for(int i=0; i<4; i++){
							if(( ItemSpritePosition[1][0][i] < System::MousePos.x ) && ( System::MousePos.x < ItemSpritePosition[1][0][i] + 128.0f )
									&& ( ItemSpritePosition[1][1][i] + 16.0f < System::MousePos.y ) && ( System::MousePos.y < ItemSpritePosition[1][1][i] + 90.0f)){
										ItemNumber = i;//カーソルと重なっていた画像のIDを代入
							}
						}
						break;
					}
					case 2:{//回復系のメニュー
						for(int i=0; i<5; i++){
							if(( ItemSpritePosition[2][0][i] < System::MousePos.x ) && ( System::MousePos.x < ItemSpritePosition[2][0][i] + 128.0f )
									&& ( ItemSpritePosition[2][1][i] + 16.0f < System::MousePos.y ) && ( System::MousePos.y < ItemSpritePosition[2][1][i] + 90.0f)){
										ItemNumber = i;//カーソルと重なっていた画像のIDを代入
							}
						}
						break;
					}
			}

			/* //////////////////////////////////// */
			//  説明バーを表示させないといけないならば
			/* //////////////////////////////////// */
			if( ItemNumber != -1 ){

					//バーが右にはみ出ないのなら
					if( ( System::MousePos.x + 256 ) < 640 ){
							DatilSpritePos.x = float( System::MousePos.x ); /**/ DatilSpritePos.y = float( System::MousePos.y );
					}
					//バーが右にはみ出るのなら
					else{
							DatilSpritePos.x = 384.0f; /**/ DatilSpritePos.y = float( System::MousePos.y );
					}
					/* スプライトの描画 */
					ech = E3DRenderSprite( MenuSpriteIDs[4], 1, 1, DatilSpritePos);//上部の白いバー
					_ASSERT( ech != 1 );//エラーチェック
			};
	}
	else if( MenuMode == 1){// モードが「アイテムを選択している」なら

			/* 座標の指定 */
			DatilSpritePos.x = float( ItemSysSetPos.x ); /**/ DatilSpritePos.y = float( ItemSysSetPos.y );
			
			/* スプライトの描画 */
			ech = E3DRenderSprite( MenuSpriteIDs[4], 1, 1, DatilSpritePos);//上部の白いバー
			_ASSERT( ech != 1 );//エラーチェック
	}


	/* ここまで */



	return ItemNumber;
}
예제 #4
0
int Render3DEnvironment()
{
	int ret;

	ret = E3DGetKeyboardCnt( keybuf );
	_ASSERT( !ret );

	ret = ChangeMiddleGray();
	_ASSERT( !ret );

	//テクスチャにシーンをレンダリング
	ret = E3DBeginScene( scid_org, 0 );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}
	int status;
	ret = E3DChkInView( scid_org, hsid0, &status );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}
	ret = E3DRender( scid_org, hsid0, 0, 1, 0, 0 );//不透明
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}
	ret = E3DRender( scid_org, hsid0, 1, 1, 0, 0 );//半透明
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}
	ret = E3DEndScene();
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}

	//ダウンスケール
	ret = E3DDownScaleRTTexture4x4( scid_small, texid_org );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}

	//トーンマップでシーンの明るさを計測
	ret = E3DRenderToneMap( tonemapid, texid_small );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}

	//HDRの明るい部分を抜き出してLDRに変換
	ret = E3DBrightPassRTTextureHDR( scid_bright, texid_small, middlegray, threshold, offset, tonemapid );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}

	//ダウンスケール
	ret = E3DDownScaleRTTexture2x2( scid_bloom0, texid_bright );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}

	//ガウスぼかしその1
	ret = E3DBlurTextureGauss5x5( scid_bloom1, texid_bloom0, 10.0f );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}

	//ガウスぼかしその2
	ret = E3DBlurTextureGauss( scid_bloom2, scid_work, texid_work, texid_bloom1, 1.0f );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}

	//元画像と明るい部分のぼかし画像とシーンの明るさ情報から最終イメージをレンダー
	ret = E3DRenderHDRFinal( scid_final, texid_org, texid_bloom2, tonemapid, middlegray );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}


	//メイン画面に表示
	ret = E3DBeginScene( scid, 0 );
	_ASSERT( !ret );
	ret = E3DBeginSprite();
	_ASSERT( !ret );
	
	//元画像を表示
	float scalex = 1.0f;
	float scaley = 1.0f;
	D3DXVECTOR3 tra = D3DXVECTOR3( 0.0f, 0.0f, 0.1f );
	ret = E3DRenderSprite( spid1, scalex, scaley, tra );
	_ASSERT( !ret );

	//ブルーム処理後の最終イメージを表示
	tra.x = (float)spw1;
	tra.y = 0.0f;
	ret = E3DRenderSprite( spid2, scalex, scaley, tra );
	_ASSERT( !ret );

	ret = E3DEndSprite();
	_ASSERT( !ret );
	ret = DrawText();
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}
	ret = E3DEndScene();
	_ASSERT( !ret );
	ret = E3DPresent( scid );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}

	ret = E3DWaitbyFPS( 60, &retfps );
	if( ret ){
		_ASSERT( 0 );
		return 1;
	}


	return 0;
}