/*アイテムを使う、削除、確認などを行ないます*/ 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; }
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; }
/*アイテム画像の表示、制御を行ないます*/ 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; }
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; }