//------------------------------------------------------------------------------ // TestUIScene.cpp // (C) 2005 ckbang //------------------------------------------------------------------------------ #include "SunClientPrecompiledHeader.h" #include "testuiscene.h" #include "InterfaceManager.h" #include "ChatDialog.h" #include "IconMgr.h" #include "BattleRoomEntry.h" #include "Application.h" #include "TestCase.h" #include "TestCaseFactory.h" #include "ObjectManager.h" #include "Map.h" #include "HeroActionInput.h" #include "ProjectileManagerEx.h" #include "Camera.h" #include "BattleScene.h" #include "uiChatMan/uiChatMan_def.h" TestUIScene g_TestUIScene; //------------------------------------------------------------------------------ /** */ TestUIScene::TestUIScene(void) { this->m_SceneType = SCENE_TYPE_TESTUI; } //------------------------------------------------------------------------------ /** */ TestUIScene::~TestUIScene(void) { } //------------------------------------------------------------------------------ /** */ void TestUIScene::Activate() { } //------------------------------------------------------------------------------ /** */ BOOL TestUIScene::Init() { if ( g_pMap ) g_pMap->SetRenderFlag(FALSE); #ifndef _MOD_CHAGNE_DELETE_HERO g_ObjectManager.Create(); #endif g_InterfaceManager.SetRenderState(TRUE); TEST_CASE_ITR itr = this->m_TestCaseMap.begin(); while ( itr != this->m_TestCaseMap.end()) { itr->second->Init(); itr++; } // ÀÎÅÍÆäÀ̽º ·£´õ¸µ ¿Â g_InterfaceManager.SetRenderState( TRUE ); m_bFristRender=TRUE; return TRUE; } //------------------------------------------------------------------------------ /** */ BOOL TestUIScene::Process( DWORD dwTick ) { TEST_CASE_ITR itr = this->m_TestCaseMap.begin(); while ( itr != this->m_TestCaseMap.end()) { itr->second->Process(dwTick); itr++; } BattleScene::Process(dwTick); return TRUE; } //------------------------------------------------------------------------------ /** */ BOOL TestUIScene::Render( DWORD dwTick ) { BattleScene::Render(dwTick); TEST_CASE_ITR itr = this->m_TestCaseMap.begin(); while ( itr != this->m_TestCaseMap.end()) { itr->second->Render(dwTick); itr++; } g_pSunRenderer->Set2DMode( TRUE, FALSE ); POINT pt = g_pApplication->Get2DModeMapping(); //g_pSunRenderer->RenderTexture( m_hBackGround[1], 0.0f, 0.0f, pt.x, pt.y, 0.0f, 0.0f ); g_pSunRenderer->Set2DMode( FALSE, FALSE ); g_pSunRenderer->x_pManagerPostEffect->Apply(); return TRUE; } //------------------------------------------------------------------------------ /** */ void TestUIScene::Release() { TEST_CASE_ITR itr = this->m_TestCaseMap.begin(); while ( itr != this->m_TestCaseMap.end()) { itr->second->Release(); delete itr->second; itr++; } this->m_TestCaseMap.clear(); g_InterfaceManager.HideAllWindows(); ICONMGR()->RemoveAll(); #ifdef _MOD_CHAGNE_DELETE_HERO g_ObjectManager.DeleteAllObjectWithoutHero(); #else g_ObjectManager.Destroy(); #endif BattleScene::Release(); } //------------------------------------------------------------------------------ /** */ void TestUIScene::ParsePacket( MSG_BASE * pMsg ) { TEST_CASE_ITR itr = this->m_TestCaseMap.begin(); while ( itr != this->m_TestCaseMap.end()) { itr->second->ParsePacket(pMsg); itr++; } BattleScene::ParsePacket(pMsg); } //------------------------------------------------------------------------------ /** */ void TestUIScene::RenderText( DWORD dwTick ) { TEST_CASE_ITR itr = this->m_TestCaseMap.begin(); while ( itr != this->m_TestCaseMap.end()) { itr->second->RenderText(); itr++; } // Áغñ °úÁ¤ g_pSunRenderer->Set2DMode( TRUE ); g_pSunRenderer->x_pManagerTextOut->StartToUseFont( "DFLT" ); g_pSunRenderer->x_pManagerTextOut->DrawText( _T("Test UI Scene"), 5, 5, WzColor_RGB( 255, 255, 255 ) ); // ¸¶¹«¸® g_pSunRenderer->x_pManagerTextOut->EndUseFont(); g_pSunRenderer->Set2DMode( FALSE ); } //------------------------------------------------------------------------------ /** */ void TestUIScene::ProcessKeyInput() { TEST_CASE_ITR itr = this->m_TestCaseMap.begin(); while ( itr != this->m_TestCaseMap.end()) { itr->second->ProcessKeyInput(0); itr++; } if ( g_Input.GetState( DIK_RETURN, KS_UP )) { if (g_InterfaceManager.IsShowDialog(IM_CHAT_MANAGER::CHAT_DIALOG) == FALSE)//if (g_InterfaceManager.IsShowDialog(InterfaceManager::DIALOG_CHAT) == FALSE) { ChatDialog *pDlg = GET_CAST_DIALOG(ChatDialog, IM_CHAT_MANAGER::CHAT_DIALOG);//(ChatDialog *)g_InterfaceManager.GetDialog(InterfaceManager::DIALOG_CHAT); if(!pDlg->m_preShow) { pDlg->ShowDialog(TRUE);//g_InterfaceManager.ShowDialog(InterfaceManager::DIALOG_CHAT, TRUE); } else { pDlg->m_preShow = FALSE; } } } else if ( g_Input.GetState( DIK_RETURN, IKS_UP ) ) { if (g_InterfaceManager.IsShowDialog(IM_CHAT_MANAGER::CHAT_DIALOG)==TRUE) { ChatDialog * pDlg = GET_CAST_DIALOG(ChatDialog, IM_CHAT_MANAGER::CHAT_DIALOG);//(ChatDialog *)g_InterfaceManager.GetDialog(InterfaceManager::DIALOG_CHAT); } } } //------------------------------------------------------------------------------------------- /** */ BOOL TestUIScene::AttachTestCase(const SUN_STRING & strTestCaseName) { BOOL bRet = FALSE; TEST_CASE_ITR itr = this->m_TestCaseMap.find(strTestCaseName); if ( itr == this->m_TestCaseMap.end() ) { TestCase * pTestCase = TestCaseFactory::MakeTestCase( strTestCaseName ); if ( pTestCase ) { pTestCase->Init(); m_TestCaseMap.insert( TEST_CASE_PAIR( strTestCaseName, pTestCase) ); } } else { // } return bRet; } //------------------------------------------------------------------------------------------- /** */ BOOL TestUIScene::DeAttachTestCase(const SUN_STRING & strTestCaseName) { BOOL bRet = FALSE; TEST_CASE_ITR itr = this->m_TestCaseMap.find(strTestCaseName); if ( itr != this->m_TestCaseMap.end() ) { TestCase * pTestCase = itr->second; pTestCase->Release(); m_TestCaseMap.erase(itr); } else { // } return bRet; } //------------------------------------------------------------------------------------------- /** */ BOOL TestUIScene::EntMessage(WORD wMessage, int iParam1, int iParam2, int iParam3/*= 0*/, int iParam4/*= 0*/) { BOOL bRet = FALSE; TEST_CASE_ITR itr = this->m_TestCaseMap.begin(); while ( itr != this->m_TestCaseMap.end()) { if ( itr->second->EntMessage(wMessage, iParam1, iParam2, iParam3, iParam4) ) { bRet = TRUE; break; } itr++; } return bRet; } //------------------------------------------------------------------------------------------- /** */ BOOL TestUIScene::RenderMap( DWORD dwTick ) { //----------------------------------------------------------------------------------- // ¹è°æ ÇÊµå ·£´õ¸µ //----------------------------------------------------------------------------------- // ¹è°æ g_pSunRenderer->SetCullFaceMode( CF_DRAW_FRONT ); if (!g_pMap) { return FALSE; } g_pMap->Render(dwTick); // Àӽà : ÀÜ»ó È¿°ú g_ProjectileManagerEx.Render(); g_InterfaceManager.RenderMovePointer(dwTick); // À̵¿Æ÷ÀÎÅÍ ·»´õ¸µ g_InterfaceManager.RenderAreaPointer(dwTick); // Áö¿ªÁöÁ¤ Æ÷ÀÎÅÍ ·»´õ¸µ return TRUE; } //------------------------------------------------------------------------------------------- /** */ //void //TestUIScene::ProcessCamera( LPDIMOUSESTATE pMouseState ) //{ // return; // if (!g_pHero) // { // return; // } // // // µ¿¿µ»ó ÃÔ¿µ¿ë ÇÁ¸® Ä«¸Þ¶ó // if( GENERALPARAM->IsFreeCameraMode() ) // { // // ÇÁ¸® Ä«¸Þ¶ó // if( GENERALPARAM->GetFreeCameraState() ) // { // if( g_Input.GetState( MOUSE_LBUTTON, KS_MOUSE_KEY) ) // { // g_Camera.Rotate( pMouseState->lX, pMouseState->lY ); // } // // if( g_Input.GetState( DIK_RBRACKET, KS_DOWN ) ) // { // fFreeCameraSpeed += FREE_CAMERA_SPEED_UP; // if( fFreeCameraSpeed >= FREE_CAMERA_MAX_SPEED_UP ) // { // fFreeCameraSpeed = FREE_CAMERA_MAX_SPEED_UP; // } // } // else if( g_Input.GetState( DIK_LBRACKET, KS_DOWN ) ) // { // fFreeCameraSpeed -= FREE_CAMERA_SPEED_UP; // if( fFreeCameraSpeed <= FREE_CAMERA_MIN_SPEED_UP ) // { // fFreeCameraSpeed = FREE_CAMERA_MIN_SPEED_UP; // } // } // // if( g_Input.GetState( DIK_W, KS_KEY ) ) // { // m_FreeCameraVector -= (g_Camera.m_CameraDirection * (GENERALPARAM->GetFreeCameraSpeed() * fFreeCameraSpeed) ); // } // else if( g_Input.GetState( DIK_S, KS_KEY ) ) // { // m_FreeCameraVector += (g_Camera.m_CameraDirection * (GENERALPARAM->GetFreeCameraSpeed() * fFreeCameraSpeed) ); // } // if( g_Input.GetState( DIK_A, KS_KEY ) ) // { // g_Camera.RotateYaw( GENERALPARAM->GetFreeCameraTurnSpeed() ); // } // else if( g_Input.GetState( DIK_D, KS_KEY ) ) // { // g_Camera.RotateYaw( -GENERALPARAM->GetFreeCameraTurnSpeed() ); // } // if( g_Input.GetState( DIK_Q, KS_KEY ) ) // { // WzVector RightVector; // WzVector UpVector; // SetVector( &UpVector, 0.0f, 0.0f, 1.0f ); // VectorCrossProduct( &RightVector, &g_Camera.m_CameraDirection, &UpVector ); // VectorNormalize( &RightVector, &RightVector ); // m_FreeCameraVector += (RightVector * (GENERALPARAM->GetFreeCameraSpeed() * fFreeCameraSpeed) ); // } // else if( g_Input.GetState( DIK_E, KS_KEY ) ) // { // WzVector RightVector; // WzVector UpVector; // SetVector( &UpVector, 0.0f, 0.0f, 1.0f ); // VectorCrossProduct( &RightVector, &g_Camera.m_CameraDirection, &UpVector ); // VectorNormalize( &RightVector, &RightVector ); // m_FreeCameraVector -= (RightVector * (GENERALPARAM->GetFreeCameraSpeed() * fFreeCameraSpeed) ); // } // // g_Camera.SetCamera( &(m_FreeCameraVector), FALSE ); // g_Camera.UpdateCamera(); // // return; // } // } // // // WzVector vDirection = g_pHero->GetDirection(); // g_Camera.SetAngle( &vDirection ); // // // ¸¶¿ì½º·Î Ä«¸Þ¶ó ȸÀü // if( g_Input.GetState( MOUSE_LBUTTON, KS_MOUSE_KEY) ) // { // g_Camera.Rotate( pMouseState->lX, pMouseState->lY ); // } // else if( g_Input.GetState( MOUSE_RBUTTON, KS_MOUSE_KEY ) ) // { // g_Camera.Rotate( pMouseState->lX, pMouseState->lY, Camera::CAMERA_ROTATE_RMOUSE ); // } // else if (g_Input.GetState( MOUSE_MBUTTON, KS_MOUSE_DOWN )) // { // g_Camera.SetYaw( g_pHero->GetAngle() ); // g_Camera.Rotate(0,0); // } // else // { // // Ä«¸Þ¶ó Űº¸µå ȸÀü // const int iKeyRotateSpeed = 30; // if( g_Input.GetState( DIK_SEMICOLON, KS_KEY) ) // { // g_Camera.Rotate( -iKeyRotateSpeed, 0, Camera::CAMERA_ROTATE_RMOUSE ); // } // else if( g_Input.GetState( DIK_APOSTROPHE, KS_KEY ) ) // { // g_Camera.Rotate( iKeyRotateSpeed, 0, Camera::CAMERA_ROTATE_RMOUSE ); // } // else if( g_pHero->GetCurState() == STATE::KEYBOARDMOVE) // { // g_Camera.KeyboardModeInterpolateAngle(g_pHero->GetAngle()); // } // else // { // if( g_pHero->IsMoving() ) // { // // ÀÏ¹Ý À̵¿½Ã Ä«¸Þ¶ó ÀÚµ¿È¸Àü ¿Â/¿ÀÇÁ // if( GENERALPARAM->GetGetCameraRotaion() ) // { // g_Camera.InterpolateAngle(); // } // } // } // // // // Ä«¸Þ¶ó ÁÜÀÎ/Áܾƿô // const int iZoomSpeed = 120; // if( g_Input.GetState( DIK_COMMA, KS_KEY ) ) // { // g_Camera.MoveFrontBack( iZoomSpeed ); // } // else if( g_Input.GetState( DIK_PERIOD, KS_KEY ) ) // { // g_Camera.MoveFrontBack( -iZoomSpeed ); // } // // // // g_Camera.Rotate(0,0); // g_Camera.SetRotateState( FALSE ); // g_Camera.RotateAngleCheck( 0 ); // g_Camera.SetStartRotateCheck( FALSE ); // } // // g_Camera.MoveFrontBack( pMouseState->lZ ); // g_Camera.SetCamera( &(g_pHero->GetVisiblePos()), TRUE ); // g_Camera.UpdateCamera(); //} //------------------------------------------------------------------------------ // EOF //------------------------------------------------------------------------------