DragonNest/Client/EtActionTool/EventEditView_SelectSignal.cpp

176 lines
4.7 KiB
C++
Raw Normal View History

2024-12-19 09:48:26 +08:00
// EventEditView_SelectSignal.cpp : <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
//
#include "stdafx.h"
#include "EtActionTool.h"
#include "EventEditView_SelectSignal.h"
#include "SignalManager.h"
#include "SignalItem.h"
#include "EventEditView_CreateModifySignal.h"
#include "UnionValueProperty.h"
// CEventEditView_SelectSignal
IMPLEMENT_DYNCREATE(CEventEditView_SelectSignal, CFormView)
CEventEditView_SelectSignal::CEventEditView_SelectSignal()
: CFormView(CEventEditView_SelectSignal::IDD)
{
m_bActivate = false;
}
CEventEditView_SelectSignal::~CEventEditView_SelectSignal()
{
}
void CEventEditView_SelectSignal::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST1, m_ListCtrl);
}
BEGIN_MESSAGE_MAP(CEventEditView_SelectSignal, CFormView)
END_MESSAGE_MAP()
// CEventEditView_SelectSignal <20><><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
#ifdef _DEBUG
void CEventEditView_SelectSignal::AssertValid() const
{
CFormView::AssertValid();
}
#ifndef _WIN32_WCE
void CEventEditView_SelectSignal::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif
#endif //_DEBUG
// CEventEditView_SelectSignal <20>޽<EFBFBD><DEBD><EFBFBD> ó<><C3B3><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
void CEventEditView_SelectSignal::OnInitialUpdate()
{
__super::OnInitialUpdate();
// TODO: <20><><EFBFBD>⿡ Ư<><C6AF>ȭ<EFBFBD><C8AD> <20>ڵ带 <20>߰<EFBFBD> <20><>/<2F>Ǵ<EFBFBD> <20>⺻ Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȣ<><C8A3><EFBFBD>մϴ<D5B4>.
if( m_bActivate == true ) return;
m_bActivate = true;
m_ListCtrl.AddColumn( "Name", 255 );
m_ListCtrl.AddColumn( "Initials", 50, LVCFMT_CENTER );
m_ListCtrl.AddColumn( "Has Length", 70, LVCFMT_CENTER );
m_ListCtrl.AddColumn( "Parameter Count", 100, LVCFMT_RIGHT );
m_ListCtrl.SetExtendedStyle( LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT|LVS_EX_FLATSB );
}
bool SignalCompareProc( CSignalItem *pItem1, CSignalItem *pItem2 )
{
return ( strcmp( pItem1->GetName(), pItem2->GetName() ) > 0 ) ? false : true;
}
void CEventEditView_SelectSignal::PreProcess()
{
m_ListCtrl.DeleteAllItems();
std::vector<CSignalItem *> pVecList;
for( DWORD i=0; i<CSignalManager::GetInstance().GetSignalItemCount(); i++ ) {
pVecList.push_back( CSignalManager::GetInstance().GetSignalItem(i) );
}
std::sort( pVecList.begin(), pVecList.end(), SignalCompareProc );
CString szStr;
for( DWORD i=0; i<pVecList.size(); i++ ) {
CSignalItem *pItem = pVecList[i];
m_ListCtrl.InsertItem( i, pItem->GetName() );
szStr.Format( "%c|%d|%d", pItem->GetName()[0], pItem->GetInitialsColor(), pItem->GetBackgroundColor() );
m_ListCtrl.SetItemText( i, 1, szStr );
szStr.Format( "%s", ( pItem->IsHasLength() == true ) ? "True" : "False" );
m_ListCtrl.SetItemText( i, 2, szStr );
szStr.Format( "%d", pItem->GetParameterCount() );
m_ListCtrl.SetItemText( i, 3, szStr );
}
}
bool CEventEditView_SelectSignal::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( "<EFBFBD><EFBFBD>ĥ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>~", "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", MB_OK );
return false;
}
// <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20>־<EFBFBD><D6BE>ش<EFBFBD>.
switch( s_nStartType ) {
case 1: // Modify
{
// <20><><EFBFBD>Ұ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD> <20>־<EFBFBD><D6BE>ش<EFBFBD>.
CSignalItem *pItem = CSignalManager::GetInstance().GetSignalItemFromName( szVecSelectItemList[0] );
if( pItem == NULL ) assert(0);
s_szCurrentSignalName = pItem->GetName();
s_pCurrentSignalItem->SetName( pItem->GetName() );
s_pCurrentSignalItem->SetInitialsColor( pItem->GetInitialsColor() );
s_pCurrentSignalItem->SetBackgroundColor( pItem->GetBackgroundColor() );
s_pCurrentSignalItem->SetHasLength( pItem->IsHasLength() );
}
break;
case 2: // Delete
{
CSignalItem *pItem = CSignalManager::GetInstance().GetSignalItemFromName( szVecSelectItemList[0] );
if( pItem == NULL ) assert(0);
s_szCurrentSignalName = pItem->GetName();
}
break;
case 3: // Create Parameter
case 4: // Modify Parameter
{
CSignalItem *pItem = CSignalManager::GetInstance().GetSignalItemFromName( szVecSelectItemList[0] );
s_pCurrentSignalItem = pItem;
s_pCurrentPropertyVariable = new CUnionValueProperty( CUnionValueProperty::Unknown );
}
break;
case 5: // Delete Parameter
{
CSignalItem *pItem = CSignalManager::GetInstance().GetSignalItemFromName( szVecSelectItemList[0] );
s_pCurrentSignalItem = pItem;
}
break;
}
return true;
}
CWizardCommon::VIEW_TYPE CEventEditView_SelectSignal::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;
}