Files
2022-10-26 12:25:11 +08:00

482 lines
12 KiB
C++

//------------------------------------------------------------------------------
// 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
//------------------------------------------------------------------------------