Ejemplo n.º 1
0
//=============================================================================
//処理
//=============================================================================
//[input]
//	pScene:設定するシーン
//=============================================================================
void CSceneMissionSelect::Exec( CScene *pScene )
{
	static Sint32 Cursor = 0;
	
	const int MISSION_MAX = 5;
	
	Selene::Renderer::IRender *pRender = pScene->GetAppDevice()->GetRenderer();
	
	CSprite *pBG = dynamic_cast<CSprite *>( pScene->Get2DObject()->FindObjectFromName("MissionSelect") );
	
	CSprite *pPin = dynamic_cast<CSprite *>( pScene->Get2DObject()->FindObjectFromName("Pin") );
	
	CFontSprite *pNumFont = dynamic_cast<CFontSprite *>( pScene->GetGameObject()->FindObjectFromName("NumFont") );
	
	CFontSprite *pMiContFont = dynamic_cast<CFontSprite *>( pScene->GetGameObject()->FindObjectFromName("ContentFont") );
	
	CFontSprite *pExpFont = dynamic_cast<CFontSprite *>( pScene->GetGameObject()->FindObjectFromName("ExplainFont") );
	
	
	pNumFont->SetPosition( Math::Vector3D( 80, 520, 0 ) );
	pMiContFont->SetPosition( Math::Vector3D( 340, 490, 0 ) );
	
	//pExpFont->SetPosition( Math::Vector3D( 600, 10 )
	
	Math::Point2DF vPos[] =
	{
		Math::Point2DF( 600, 10 ),
	};
	
	vector< string > vecText;
	
	vecText.push_back( "R2 ミッション決定" );
	
	pExpFont->SetVecTextChat( vecText );
	
	/*画面のクリア*/
	pRender->Clear();
	
	/*描画開始*/
	pRender->Begin();
	
	pBG->Rendering();
	
	CBGM *pTitleMusic = dynamic_cast<CBGM *>( pScene->GetSoundObj()->FindObjectFromName("TitleBGM") );
	
	if( pScene->GetSceneState() == STATE_STANDBY )
	{
		if( !pTitleMusic->GetBGMDevice()->IsPlay() )
		{	
			pTitleMusic->GetBGMDevice()->Play( );
		}
		
	}
	
	if( pScene->GetSceneState() == STATE_FADEOUT )
	{
		pTitleMusic->GetBGMDevice()->Stop();
	}
	
	
	int MissionClrCount = 0;//ミッションのクリア数カウント
	
	#if defined(DEBUG) | (_DEBUG)  
	
		MissionClrCount = 4;
	
	#else
				
		/*ミッションクリア数のカウントアップ*/
		for( int i = 0; i < pScene->GetMissionMgr()->GetMissionNum(); ++i )
		{
			CMission *pMission = pScene->GetMissionMgr()->GetMission(i);
			
			if( pMission->GetGameClearFlag() )
			{
				MissionClrCount++;
				
			}
		}
		
		//MissionClrCount = 4;
		
		if( MissionClrCount >= 4 )
		{
			MissionClrCount = 4;
		}
				
				
	#endif
	
	for( int i = 0; i < MissionClrCount+1; ++i )
	{
		CMission *pMission = pScene->GetMissionMgr()->GetMission(i);
		
		pMission->GetMissionData().m_pPhotoSpr->DrawGrayScale( pRender );
		
	}
	
	for( int i = 0;i < MISSION_MAX;++i )
	{
		CMission *pMission = pScene->GetMissionMgr()->GetMission(i);
		
		if( Cursor == i )
		{
			pMission->GetMissionData().m_pPhotoSpr->Rendering();
			
			char Temp[10];
			
			sprintf( Temp, "%d", pMission->GetHiScore() );
			
			/*文字列の設定*/
			pMiContFont->SetVecTextChat( pMission->GetMissionData().m_vecMissionContent );
			
			pNumFont->SetDrawString( Temp ) ;
		}
		
	}
	
	/*ピン表示用ID*/
	Math::Point2DF Anim[] =
	{
		Math::Point2DF( 0, 0 ),
		Math::Point2DF( 0, 0 ),
		Math::Point2DF( 0, 0 ),
		Math::Point2DF( 0, 0 ),
		Math::Point2DF( 0, 0 ),
	};
	
	
	for( int i = 0; i < MissionClrCount+1; ++i )
	{	
		Math::Point2DF Pos[] =
		{
			Math::Point2DI( 383, 142 ),
			Math::Point2DI( 228, 232 ),
			Math::Point2DI( 583, 62 ),
			Math::Point2DI( 178, 72 ),
			Math::Point2DI( 543, 252 ),
		};

		CMission *pMission = pScene->GetMissionMgr()->GetMission(i);
		
		pPin->Rendering();
		
		pMiContFont->Rendering();
		
		/*ハイスコアの描画*/
		pNumFont->Rendering();
	
		if( pMission->GetGameClearFlag() )	
		{
			Anim[i].x = 1;
			
		}
		
		else
		{
			Anim[i].x = 0;
		}
		
		pPin->DrawMultiGraph( Pos, Anim,  MissionClrCount + 1 );		
		
	}
	
	
	for( int i = 0; i < MissionClrCount+1; ++i )
	{	
		CMission *pMission = pScene->GetMissionMgr()->GetMission(i);
		
		if( Cursor == i )
		{
			pMission->GetMissionData().m_pFontSpr->Rendering();
		}
		
	}
	
	//pExpFont->Rendering();
	
	pNumFont->Exec();
	
	pMiContFont->DrawMultiLine();
	
	pExpFont->DrawMultiLine( vPos );
	//pMiContFont->Exec();
	
	/*操作説明の文字描画*/
	//pScene->GetAppDevice()->GetRenderer()->DrawTextA( Math::Point2DI( 600, 10 ), CColor( 255, 255, 255 ), "R2ボタン ミッション決定" );
	
	
	/*ミッション概要の描画*/
	
	/*描画終了*/
	pRender->End();
	
	for( int i = 0; i < MissionClrCount+1; ++i )
	{
		CMission *pMission = pScene->GetMissionMgr()->GetMission(i);
		
		pMission->Exec();
	}
	
	pBG->Exec();
	
	static bool IsFade = false;
	
	/*ミッションの決定*/
	if( pScene->GetJoyPad()->GetController()->GetState( BUTTON_STATE_PUSH, BUTTON_R2 ) )
	{
		pTitleMusic->GetBGMDevice()->Stop();
		
		/*ミッション番号の設定*/
		pScene->GetMissionMgr()->SetMissionNo( Cursor );
		
		CSoundEffect *sndDecide	= dynamic_cast<CSoundEffect *>( pScene->GetSoundObj()->FindObjectFromName("Decide") );
			
			
		/*ミニキャラの最大*/
		const int FLASH_CHARA = 9;
		
		/*ミニキャラのオブジェクト名*/
		const char *MiniObjName[] =
		{
			"Mini_Bird1",
			"Mini_Bird2",
			"Mini_Bird3",
			"Mini_Bird4",
			"Mini_Bird5",
			"Mini_Bird6",
			"Mini_Mouse1",
			"Mini_Mouse2",
			"Mini_Mouse3",
		};
			
		/*一旦全ミニキャラを非表示にする*/
		for( int i = 0;i < FLASH_CHARA;++i )
		{	
			CSprite *objMiniSpr = dynamic_cast<CSprite *>( pScene->Get2DObject()->FindObjectFromName(MiniObjName[i]) ); 
			objMiniSpr->SetVisibleFlag( false );
			objMiniSpr->SetMissionVisible( false );
		}
		
		/*ミッションによって、表示させるミニキャラを変える*/
			
		/*鳥使うミッション*/
		if( Cursor == 2 )
		{
			for( int BirdNum = 0;BirdNum < BIRD_MAX;++BirdNum )
			{
				CSprite *objMiniSpr = dynamic_cast<CSprite *>( pScene->Get2DObject()->FindObjectFromName(MiniObjName[BirdNum]) ); 
				
				objMiniSpr->SetMissionVisible( true );
			}
		}
		
		/*ねずみつかうミッション*/
		else if( Cursor == 3 )
		{
			for( int MouseNum = BIRD_MAX; MouseNum < FLASH_CHARA;++MouseNum )
			{
				CSprite *objMiniSpr = dynamic_cast<CSprite *>( pScene->Get2DObject()->FindObjectFromName(MiniObjName[MouseNum]) ); 
				
				objMiniSpr->SetMissionVisible( true );
				
			}
		}
			
		pBG->SetVisibleFlag( false );
		
		for( int i = 0; i < MISSION_MAX; ++i )
		{
			CMission *pMission = pScene->GetMissionMgr()->GetMission(i);
			
			pMission->GetMissionData().m_pFontSpr->SetVisibleFlag( false );
			
			pMission->GetMissionData().m_pPhotoSpr->SetVisibleFlag( false );
			
			pPin->SetVisibleFlag( false );
			
			
		}
		
		pScene->SetNextScene( SCENE_CHAT );
		
		
		//if( pScene->GetSceneState() == STATE_FADEOUT )
		//{
		//	pTitleMusic->FadeOut();
		//}
		//
		//else
		//{
		//	pTitleMusic->GetBGMDevice()->SetVolume( 100 );
		//}
		
		
		vecText.clear();
		
		pExpFont->SetVecTextChat( vecText );
		
		pScene->SetSceneState( STATE_FADEOUT );	
		
		if( pScene->GetSceneState() == STATE_STANDBY )
		{	
			sndDecide->GetSEDevice()->Play( 0 );
		}
		
			
	}
	
	
	eInputButtonType eButtonUpDown = pScene->GetJoyPad()->GetController()->CursorRepeatUpDown( 0, Cursor, MissionClrCount+1 );
	
	if( pScene->GetJoyPad()->GetController()->GetState( BUTTON_STATE_PUSH, eButtonUpDown ) )
	{
		CSoundEffect *sndSelect	= dynamic_cast<CSoundEffect *>( pScene->GetSoundObj()->FindObjectFromName("Select") );
		sndSelect->GetSEDevice()->Play( 0 );
	}
	
	//eInputButtonType eButtonUpDown = pScene->GetJoyPad()->GetController()->CursorRepeatUpDown( 0, Cursor, 4 );

}
Ejemplo n.º 2
0
//=============================================================================
//処理
//=============================================================================
//[input]
//	pScene:設定するシーン
//=============================================================================
void CScene::Exec(CScene *pScene)
{
	Renderer::IRender *pRender = pScene->GetAppDevice()->GetRenderer();
	
	CSprite *pSpr = dynamic_cast<CSprite *>( m_p2DObj->FindObjectFromName("Loading") );
	
	pSpr->SetDivnum( Math::Point2DI(6, 1) );
	
	pScene->GetAppDevice()->GetRenderer()->Clear();
	
	pScene->GetAppDevice()->GetRenderer()->Begin();
	
	pSpr->Rendering();
	
	//pScene->GetAppDevice()->GetRenderer()->DebugPrint( Math::Point2DI( 400, 300 ), CColor(255, 255, 255 ), "Npw Loading" );
	
	pScene->GetAppDevice()->GetRenderer()->End();

	pSpr->DrawAnimation( 6, 0 );
	
	/*ロード終わってない*/
	if( !pScene->GetLoadEndFlag() )
	{	
		static string Str = "Now Loading";
		
		static int count = 0;
		
		count ++;
		
		if( count % 10 == 0 )
		{
			Str += ".";
		}
		
		if( count >= 40 )
		{
			count = 0;
			Str = "Now Loading";
		}
		
		pRender->DrawText( Math::Point2DI( 590, 520 ), CColor(255, 255, 255 ), Str.c_str() );
		
		
	}
	
	/*ロード終了*/
	if( pScene->GetLoadEndFlag() )
	{
		pSpr->SetVisibleFlag( false );
		
		m_p3DObj->Init();
		
		CCamera *objCamMain	= dynamic_cast<CCamera *>( m_pGameObj->FindObjectFromName("CamMain") );
		
		objCamMain->Init();
		
		pSpr->Move();
		
		/*キャラが画面外にいったら、次のシーンに*/
		if( pSpr->GetPosition().x <= -100 )
		{
			#if defined( DEBUG_MAP_EDIT ) 
			
				m_eNextScene = SCENE_GAMEMAIN;
			
			
			#elif defined( DEBUG_MAP_SEE )
			
				m_eNextScene = SCENE_DEMO;
				
			#elif defined( DEBUG_CHAT )
			
				m_eNextScene = SCENE_CHAT;
				
			#endif
			
			pScene->SetSceneState( STATE_STANDBY );
			
			pScene->ChangeScene( m_eNextScene );
		}
		
	}
	
}