DragonNest/Client/EtWorldPainter/EventEdit_SelectControl.cpp
2024-12-19 09:48:26 +08:00

171 lines
No EOL
4.6 KiB
C++

// EventEdit_SelectControl.cpp : implementation file
//
#include "stdafx.h"
#include "EtWorldPainter.h"
#include "EventEdit_SelectControl.h"
#include "EventSignalManager.h"
#include "UnionValueProperty.h"
// CEventEdit_SelectControl
IMPLEMENT_DYNCREATE(CEventEdit_SelectControl, CFormView)
CEventEdit_SelectControl::CEventEdit_SelectControl()
: CFormView(CEventEdit_SelectControl::IDD)
{
m_bActivate = false;
}
CEventEdit_SelectControl::~CEventEdit_SelectControl()
{
}
void CEventEdit_SelectControl::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST1, m_ListCtrl);
}
BEGIN_MESSAGE_MAP(CEventEdit_SelectControl, CFormView)
END_MESSAGE_MAP()
// CEventEdit_SelectControl diagnostics
#ifdef _DEBUG
void CEventEdit_SelectControl::AssertValid() const
{
CFormView::AssertValid();
}
#ifndef _WIN32_WCE
void CEventEdit_SelectControl::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif
#endif //_DEBUG
// CEventEdit_SelectControl message handlers
void CEventEdit_SelectControl::OnInitialUpdate()
{
__super::OnInitialUpdate();
// TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
if( m_bActivate == true ) return;
m_bActivate = true;
m_ListCtrl.AddColumn( "Name", 255 );
m_ListCtrl.AddColumn( "Color", 50, LVCFMT_CENTER );
m_ListCtrl.AddColumn( "Parameter Count", 100, LVCFMT_RIGHT );
m_ListCtrl.SetExtendedStyle( LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_FLATSB );
}
bool SignalCompareProc( CEventSignalItem *pItem1, CEventSignalItem *pItem2 )
{
return ( strcmp( pItem1->GetName(), pItem2->GetName() ) > 0 ) ? false : true;
}
void CEventEdit_SelectControl::PreProcess()
{
m_ListCtrl.DeleteAllItems();
std::vector<CEventSignalItem *> pVecList;
for( DWORD i=0; i<CEventSignalManager::GetInstance().GetSignalItemCount(); i++ ) {
pVecList.push_back( CEventSignalManager::GetInstance().GetSignalItem(i) );
}
std::sort( pVecList.begin(), pVecList.end(), SignalCompareProc );
CString szStr;
for( DWORD i=0; i<pVecList.size(); i++ ) {
CEventSignalItem *pItem = pVecList[i];
m_ListCtrl.InsertItem( i, pItem->GetName() );
szStr.Format( "%d|%d|%d|%d", pItem->GetBackgroundColor(), pItem->GetBackgroundSideColor(), pItem->GetSelectColor(), pItem->GetSelectSideColor() );
m_ListCtrl.SetItemText( i, 1, szStr );
szStr.Format( "%d", pItem->GetParameterCount() );
m_ListCtrl.SetItemText( i, 2, szStr );
}
}
bool CEventEdit_SelectControl::PostProcess()
{
POSITION p = m_ListCtrl.GetFirstSelectedItemPosition();
std::vector<CString> szVecSelectItemList;
while(p) {
int nIndex = m_ListCtrl.GetNextSelectedItem(p);
szVecSelectItemList.push_back( m_ListCtrl.GetItemText( nIndex, 0 ) );
}
if( szVecSelectItemList.size() == 0 ) {
MessageBox( "고칠꺼 선택해줘~", "에러", MB_OK );
return false;
}
// 복사해서 넣어준다.
switch( s_nStartType ) {
case 1: // Modify
{
// 취소가 있을 수 있으므로 복사해서 넣어준다.
CEventSignalItem *pItem = CEventSignalManager::GetInstance().GetSignalItemFromName( szVecSelectItemList[0] );
if( pItem == NULL ) assert(0);
s_szCurrentSignalName = pItem->GetName();
s_pCurrentSignalItem->SetName( pItem->GetName() );
s_pCurrentSignalItem->SetBackgroundColor( pItem->GetBackgroundColor() );
s_pCurrentSignalItem->SetBackgroundSideColor( pItem->GetBackgroundSideColor() );
s_pCurrentSignalItem->SetSelectColor( pItem->GetSelectColor() );
s_pCurrentSignalItem->SetSelectSideColor( pItem->GetSelectSideColor() );
}
break;
case 2: // Delete
{
CEventSignalItem *pItem = CEventSignalManager::GetInstance().GetSignalItemFromName( szVecSelectItemList[0] );
if( pItem == NULL ) assert(0);
s_szCurrentSignalName = pItem->GetName();
}
break;
case 3: // Create Parameter
case 4: // Modify Parameter
{
CEventSignalItem *pItem = CEventSignalManager::GetInstance().GetSignalItemFromName( szVecSelectItemList[0] );
s_pCurrentSignalItem = pItem;
s_pCurrentPropertyVariable = new CUnionValueProperty( CUnionValueProperty::Unknown);
}
break;
case 5: // Delete Parameter
{
CEventSignalItem *pItem = CEventSignalManager::GetInstance().GetSignalItemFromName( szVecSelectItemList[0] );
s_pCurrentSignalItem = pItem;
}
break;
}
return true;
}
CEventEditWizardCommon::VIEW_TYPE CEventEdit_SelectControl::GetNextView()
{
switch( s_nStartType ) {
case 1: // Modify Signal
return CREATE_SIGNAL;
case 2: // Delete Signal
return FINISH;
case 3: // Create Parameter
return CREATE_PARAMETER;
case 4: // Modify Parameter
case 5: // Delete Parameter
return SELECT_PARAMETER;
default:
assert(0);
}
return UNKNOWN_TYPE;
}