1439 lines
37 KiB
C++
1439 lines
37 KiB
C++
|
|
#include "stdafx.h"
|
|||
|
|
#include <wx/wx.h>
|
|||
|
|
#include "CommandSet.h"
|
|||
|
|
#include "ToolData.h"
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ Ŀ<>ǵ<EFBFBD>
|
|||
|
|
void CUpdateViewCmd::Excute( void )
|
|||
|
|
{
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD>
|
|||
|
|
CRegisterResCmd::CRegisterResCmd( ICmdReceiver* pCmdReceiver,
|
|||
|
|
const wxChar* pResourceName, int iResourceKind,
|
|||
|
|
EtVector3& vPos, float fRotation ) : ICommand( pCmdReceiver ),
|
|||
|
|
m_strResName( pResourceName ),
|
|||
|
|
m_iResourceKind( iResourceKind ),
|
|||
|
|
m_vPos( vPos ),
|
|||
|
|
m_fRotation( fRotation )
|
|||
|
|
{
|
|||
|
|
wxString strTemp;
|
|||
|
|
switch( iResourceKind )
|
|||
|
|
{
|
|||
|
|
case CDnCutSceneData::RT_RES_MAP:
|
|||
|
|
strTemp.assign( wxT("Map") );
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case CDnCutSceneData::RT_RES_ACTOR:
|
|||
|
|
strTemp.assign( wxT("Actor") );
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
//case CDnCutSceneData::RT_RES_MAX_CAMERA:
|
|||
|
|
// strTemp.assign( wxT("Camera") );
|
|||
|
|
// break;
|
|||
|
|
|
|||
|
|
case CDnCutSceneData::RT_RES_SOUND:
|
|||
|
|
strTemp.assign( wxT("Sound") );
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_strDesc.Printf( wxT("[Register resource] %s(%s)"), strTemp.c_str(), pResourceName );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CRegisterResCmd::~CRegisterResCmd(void)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD>.
|
|||
|
|
ICommand* CRegisterResCmd::CreateSame( void )
|
|||
|
|
{
|
|||
|
|
return new CRegisterResCmd( *this );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const wxChar* CRegisterResCmd::GetDesc( void ) const
|
|||
|
|
{
|
|||
|
|
return m_strDesc.c_str();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
// excute <20><> undo <20><> <20><><EFBFBD>Ƹ<EFBFBD> CObservable <20><>ü<EFBFBD><C3BC> <20>˾Ƽ<CBBE> <20><><EFBFBD>ϵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20>Լ<EFBFBD><D4BC><EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD><EFBFBD>ݴϴ<DDB4>.
|
|||
|
|
void CRegisterResCmd::Excute( void )
|
|||
|
|
{
|
|||
|
|
bool bResult = m_pCmdReceiver->RegisterResource( m_strResName.c_str(), m_iResourceKind );
|
|||
|
|
m_pCmdReceiver->SetRegResPos( m_strResName.c_str(), m_vPos );
|
|||
|
|
m_pCmdReceiver->SetRegResRot( m_strResName.c_str(), m_fRotation );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CRegisterResCmd::Undo( void )
|
|||
|
|
{
|
|||
|
|
bool bResult = m_pCmdReceiver->UnRegisterResource( m_strResName.c_str(), m_iResourceKind );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ҽ<EFBFBD> <20><><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD>
|
|||
|
|
CRemoveRegResCmd::CRemoveRegResCmd( ICmdReceiver* pCmdReceiver,
|
|||
|
|
const wxChar* pResourceName, int iResourceKind ) : ICommand( pCmdReceiver ),
|
|||
|
|
m_strResName( pResourceName ),
|
|||
|
|
m_iResourceKind( iResourceKind )
|
|||
|
|
{
|
|||
|
|
wxString strTemp;
|
|||
|
|
switch( iResourceKind )
|
|||
|
|
{
|
|||
|
|
case CDnCutSceneData::RT_RES_MAP:
|
|||
|
|
strTemp.assign( wxT("Map") );
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case CDnCutSceneData::RT_RES_ACTOR:
|
|||
|
|
strTemp.assign( wxT("Actor") );
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
//case CDnCutSceneData::RT_RES_MAX_CAMERA:
|
|||
|
|
// strTemp.assign( wxT("Camera") );
|
|||
|
|
// break;
|
|||
|
|
|
|||
|
|
case CDnCutSceneData::RT_RES_SOUND:
|
|||
|
|
strTemp.assign( wxT("Sound") );
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_strDesc.Printf( wxT("[Unregister resource] %s(%s)"), strTemp.c_str(), pResourceName );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CRemoveRegResCmd::~CRemoveRegResCmd(void)
|
|||
|
|
{
|
|||
|
|
for_each( m_vlpActionInfo.begin(), m_vlpActionInfo.end(), DeleteData<ActionInfo*>() );
|
|||
|
|
for_each( m_vlpKeyInfo.begin(), m_vlpKeyInfo.end(), DeleteData<KeyInfo*>() );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
ICommand* CRemoveRegResCmd::CreateSame( void )
|
|||
|
|
{
|
|||
|
|
CRemoveRegResCmd* pNewCmd = new CRemoveRegResCmd( *this );
|
|||
|
|
pNewCmd->m_vlpActionInfo.clear();
|
|||
|
|
for( int iAction = 0; iAction < (int)m_vlpActionInfo.size(); ++iAction )
|
|||
|
|
{
|
|||
|
|
pNewCmd->m_vlpActionInfo.push_back( new ActionInfo(*m_vlpActionInfo.at(iAction)) );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return pNewCmd;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const wxChar* CRemoveRegResCmd::GetDesc( void ) const
|
|||
|
|
{
|
|||
|
|
return m_strDesc.c_str();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CRemoveRegResCmd::Excute( void )
|
|||
|
|
{
|
|||
|
|
m_vPos =m_pCmdReceiver->GetRegResPos( m_strResName.c_str() );
|
|||
|
|
m_fRotation = m_pCmdReceiver->GetRegResRot( m_strResName.c_str() );
|
|||
|
|
|
|||
|
|
// ó<><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ<EFBFBD><C6AE> <20>Ƴ<DEBE><C6B3><EFBFBD><EFBFBD><EFBFBD> <20>ȴ<EFBFBD>.
|
|||
|
|
if( m_vlpActionInfo.empty() )
|
|||
|
|
{
|
|||
|
|
int iNumAction = m_pCmdReceiver->GetThisActorsActionNum( m_strResName.c_str() );
|
|||
|
|
for( int iAction = 0; iAction < iNumAction; ++iAction )
|
|||
|
|
{
|
|||
|
|
const ActionInfo* pActionInfo = m_pCmdReceiver->GetThisActorsActionInfoByIndex( m_strResName.c_str(), iAction );
|
|||
|
|
m_vlpActionInfo.push_back( new ActionInfo( *pActionInfo ) );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if( m_vlpKeyInfo.empty() )
|
|||
|
|
{
|
|||
|
|
int iNumKey = m_pCmdReceiver->GetThisActorsKeyNum( m_strResName.c_str() );
|
|||
|
|
for( int iKey = 0; iKey < iNumKey; ++iKey )
|
|||
|
|
{
|
|||
|
|
const KeyInfo* pKeyInfo = m_pCmdReceiver->GetThisActorsKeyInfoByIndex( m_strResName.c_str(), iKey );
|
|||
|
|
m_vlpKeyInfo.push_back( new KeyInfo( *pKeyInfo ) );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
bool bResult = m_pCmdReceiver->UnRegisterResource( m_strResName.c_str(), m_iResourceKind );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CRemoveRegResCmd::Undo( void )
|
|||
|
|
{
|
|||
|
|
bool bResult = m_pCmdReceiver->RegisterResource( m_strResName.c_str(), m_iResourceKind );
|
|||
|
|
m_pCmdReceiver->SetRegResPos( m_strResName.c_str(), m_vPos );
|
|||
|
|
m_pCmdReceiver->SetRegResRot( m_strResName.c_str(), m_fRotation );
|
|||
|
|
|
|||
|
|
int iNumAction = (int)m_vlpActionInfo.size();
|
|||
|
|
for( int iAction = 0; iAction < iNumAction; ++iAction )
|
|||
|
|
m_pCmdReceiver->InsertAction( m_vlpActionInfo.at(iAction) );
|
|||
|
|
|
|||
|
|
int iNumKey = (int)m_vlpKeyInfo.size();
|
|||
|
|
for( int iKey = 0; iKey < iNumKey; ++iKey )
|
|||
|
|
m_pCmdReceiver->InsertKey( m_vlpKeyInfo.at(iKey) );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD> <20><><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD>
|
|||
|
|
CSceneInfoModify::CSceneInfoModify( ICmdReceiver* pCmdReceiver, SceneInfo* pSceneInfo ) : ICommand( pCmdReceiver ),
|
|||
|
|
m_pSceneInfo( new SceneInfo(*pSceneInfo) ),
|
|||
|
|
m_pPrevSceneInfo( NULL )
|
|||
|
|
{
|
|||
|
|
//wxCSConv MBConv( wxFONTENCODING_CP949 );
|
|||
|
|
|
|||
|
|
//wxChar caWActorName[ 256 ];
|
|||
|
|
//wxChar caWActionName[ 256 ];
|
|||
|
|
//ZeroMemory( caWActorName, sizeof(caWActorName) );
|
|||
|
|
//ZeroMemory( caWActionName, sizeof(caWActionName) );
|
|||
|
|
|
|||
|
|
//MBConv.MB2WC( caWActorName, m_pActionInfo->strActorName.c_str(), 256 );
|
|||
|
|
//MBConv.MB2WC( caWActionName, m_pActionInfo->strActionName.c_str(), 256 );
|
|||
|
|
|
|||
|
|
m_strDesc.Printf( wxT("[Scene Info Modify]") );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CSceneInfoModify::~CSceneInfoModify( void )
|
|||
|
|
{
|
|||
|
|
SAFE_DELETE( m_pSceneInfo );
|
|||
|
|
SAFE_DELETE( m_pPrevSceneInfo );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
ICommand* CSceneInfoModify::CreateSame( void )
|
|||
|
|
{
|
|||
|
|
CSceneInfoModify* pCopied = new CSceneInfoModify( *this );
|
|||
|
|
pCopied->m_pSceneInfo = new SceneInfo( *m_pSceneInfo );
|
|||
|
|
|
|||
|
|
if( m_pPrevSceneInfo )
|
|||
|
|
pCopied->m_pPrevSceneInfo = new SceneInfo( *m_pPrevSceneInfo );
|
|||
|
|
else
|
|||
|
|
pCopied->m_pPrevSceneInfo = new SceneInfo;
|
|||
|
|
|
|||
|
|
return pCopied;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
const wxChar* CSceneInfoModify::GetDesc( void ) const
|
|||
|
|
{
|
|||
|
|
return m_strDesc.c_str();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CSceneInfoModify::Excute( void )
|
|||
|
|
{
|
|||
|
|
*m_pPrevSceneInfo = *m_pCmdReceiver->GetSceneInfo();
|
|||
|
|
bool bResult = m_pCmdReceiver->ModifySceneInfo( m_pSceneInfo );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CSceneInfoModify::Undo( void )
|
|||
|
|
{
|
|||
|
|
bool bResult = m_pCmdReceiver->ModifySceneInfo( m_pPrevSceneInfo );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// <20><EFBFBD> <20>߰<EFBFBD> Ŀ<>ǵ<EFBFBD>
|
|||
|
|
CActionInsertCmd::CActionInsertCmd( ICmdReceiver* pCmdReceiver,
|
|||
|
|
ActionInfo* pAction ) : ICommand( pCmdReceiver ),
|
|||
|
|
m_pActionInfo( new ActionInfo( *pAction ) )
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
wxCSConv MBConv( wxFONTENCODING_CP949 );
|
|||
|
|
|
|||
|
|
wxChar caWActorName[ 256 ];
|
|||
|
|
wxChar caWActionName[ 256 ];
|
|||
|
|
ZeroMemory( caWActorName, sizeof(caWActorName) );
|
|||
|
|
ZeroMemory( caWActionName, sizeof(caWActionName) );
|
|||
|
|
|
|||
|
|
MBConv.MB2WC( caWActorName, m_pActionInfo->strActorName.c_str(), 256 );
|
|||
|
|
MBConv.MB2WC( caWActionName, m_pActionInfo->strActionName.c_str(), 256 );
|
|||
|
|
|
|||
|
|
m_strDesc.Printf( wxT("[Insert action] %s(%s)"), caWActorName,
|
|||
|
|
caWActionName );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CActionInsertCmd::~CActionInsertCmd(void)
|
|||
|
|
{
|
|||
|
|
SAFE_DELETE( m_pActionInfo );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
ICommand* CActionInsertCmd::CreateSame( void )
|
|||
|
|
{
|
|||
|
|
CActionInsertCmd* pCopied = new CActionInsertCmd( *this );
|
|||
|
|
pCopied->m_pActionInfo = new ActionInfo( *m_pActionInfo );
|
|||
|
|
|
|||
|
|
return pCopied;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const wxChar* CActionInsertCmd::GetDesc( void ) const
|
|||
|
|
{
|
|||
|
|
return m_strDesc.c_str();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CActionInsertCmd::Excute( void )
|
|||
|
|
{
|
|||
|
|
bool bResult = m_pCmdReceiver->InsertAction( m_pActionInfo );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CActionInsertCmd::Undo( void )
|
|||
|
|
{
|
|||
|
|
bool bResult = m_pCmdReceiver->RemoveAction( m_pActionInfo->iID );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20>Ӽ<EFBFBD> <20><><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD>
|
|||
|
|
CActorResPropChange::CActorResPropChange( ICmdReceiver* pCmdReceiver, const wxChar* pOldActorName, const wxChar* pNewActorName,
|
|||
|
|
const EtVector3& vPos, float fRotation, bool bFitYPosYoMap,
|
|||
|
|
bool bInfluenceLightmap, int iMonsterTableIDAsBoss, bool bScaleLock ) : ICommand( pCmdReceiver ),
|
|||
|
|
m_strOldActorName( pOldActorName ),
|
|||
|
|
m_strNewActorName( pNewActorName ),
|
|||
|
|
m_vPos( vPos ),
|
|||
|
|
m_fRotation( fRotation ),
|
|||
|
|
m_bFitYPosToMap( bFitYPosYoMap ),
|
|||
|
|
m_bInfluenceLightmap( bInfluenceLightmap ),
|
|||
|
|
m_iMonsterTableIDAsBoss( iMonsterTableIDAsBoss ),
|
|||
|
|
m_iOldMonsterTableIDAsBoss( 0 ),
|
|||
|
|
m_bScaleLock( bScaleLock )
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
m_strDesc.Printf( wxT("[Actor prop change] %s"), m_strNewActorName.c_str() );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
CActorResPropChange::~CActorResPropChange( void )
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
ICommand* CActorResPropChange::CreateSame( void )
|
|||
|
|
{
|
|||
|
|
return new CActorResPropChange( *this );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
const wxChar* CActorResPropChange::GetDesc( void ) const
|
|||
|
|
{
|
|||
|
|
return m_strDesc.c_str();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CActorResPropChange::Excute( void )
|
|||
|
|
{
|
|||
|
|
bool bResult = false;
|
|||
|
|
|
|||
|
|
m_vOldPos = m_pCmdReceiver->GetRegResPos( m_strOldActorName.c_str() );
|
|||
|
|
m_fOldRotation = m_pCmdReceiver->GetRegResRot( m_strOldActorName.c_str() );
|
|||
|
|
m_bOldFitYPosToMap = m_pCmdReceiver->GetThisActorsFitYPosToMap( m_strOldActorName.c_str() );
|
|||
|
|
m_bOldInfluenceLightmap = m_pCmdReceiver->GetThisActorsInfluenceLightmap( m_strOldActorName.c_str() );
|
|||
|
|
m_iOldMonsterTableIDAsBoss = m_pCmdReceiver->GetMonsterTableID( m_strOldActorName.c_str() );
|
|||
|
|
m_bOldScaleLock = m_pCmdReceiver->GetThisActorsScaleLock( m_strOldActorName.c_str() );
|
|||
|
|
|
|||
|
|
if( m_strOldActorName != m_strNewActorName )
|
|||
|
|
{
|
|||
|
|
bResult = m_pCmdReceiver->ChangeRegResName( m_strOldActorName.c_str(), m_strNewActorName.c_str() );
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
bResult = true;
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
bResult = m_pCmdReceiver->SetRegResPos( m_strNewActorName.c_str(), m_vPos );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
bResult = m_pCmdReceiver->SetRegResRot( m_strNewActorName.c_str(), m_fRotation );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
bResult = m_pCmdReceiver->SetActorsFitYPosToMap( m_strNewActorName.c_str(), m_bFitYPosToMap );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
bResult = m_pCmdReceiver->SetActorsInfluenceLightmap( m_strNewActorName.c_str(), m_bInfluenceLightmap );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
bResult = m_pCmdReceiver->SetMonsterTableID( m_strNewActorName.c_str(), m_iMonsterTableIDAsBoss );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
bResult = m_pCmdReceiver->SetActorsScaleLock( m_strNewActorName.c_str(), m_bScaleLock );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CActorResPropChange::Undo( void )
|
|||
|
|
{
|
|||
|
|
bool bResult = false;
|
|||
|
|
|
|||
|
|
if( m_strOldActorName != m_strNewActorName )
|
|||
|
|
{
|
|||
|
|
bResult = m_pCmdReceiver->ChangeRegResName( m_strNewActorName.c_str(), m_strOldActorName.c_str() );
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
bResult = true;
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
bResult = m_pCmdReceiver->SetRegResPos( m_strOldActorName.c_str(), m_vOldPos );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
bResult = m_pCmdReceiver->SetRegResRot( m_strOldActorName.c_str(), m_fOldRotation );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
bResult = m_pCmdReceiver->SetActorsFitYPosToMap( m_strOldActorName.c_str(), m_bOldFitYPosToMap );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
bResult = m_pCmdReceiver->SetActorsInfluenceLightmap( m_strOldActorName.c_str(), m_bOldInfluenceLightmap );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
bResult = m_pCmdReceiver->SetMonsterTableID( m_strOldActorName.c_str(), m_iOldMonsterTableIDAsBoss );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
bResult = m_pCmdReceiver->SetActorsScaleLock( m_strOldActorName.c_str(), m_bOldScaleLock );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// <20><EFBFBD> <20>Ӽ<EFBFBD> <20><><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD>
|
|||
|
|
CActionPropChange::CActionPropChange( ICmdReceiver* pCmdReceiver, ActionInfo* pNewActionInfo ) : ICommand( pCmdReceiver ),
|
|||
|
|
m_NewActionInfo( *pNewActionInfo ),
|
|||
|
|
m_bUndo( false )
|
|||
|
|
{
|
|||
|
|
wxCSConv MBConv( wxFONTENCODING_CP949 );
|
|||
|
|
|
|||
|
|
wxChar wcaActorName[ 256 ];
|
|||
|
|
wxChar wcaActionName[ 256 ];
|
|||
|
|
ZeroMemory( wcaActorName, sizeof(wcaActorName) );
|
|||
|
|
ZeroMemory( wcaActionName, sizeof(wcaActionName) );
|
|||
|
|
MBConv.MB2WC( wcaActorName, m_NewActionInfo.strActorName.c_str(), 256 );
|
|||
|
|
MBConv.MB2WC( wcaActionName, m_NewActionInfo.strActionName.c_str(), 256 );
|
|||
|
|
|
|||
|
|
m_strDesc.Printf( wxT("[Action prop changed] %s(%s)"), wcaActionName, wcaActorName );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
CActionPropChange::~CActionPropChange( void )
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD>.
|
|||
|
|
ICommand* CActionPropChange::CreateSame( void )
|
|||
|
|
{
|
|||
|
|
return new CActionPropChange( *this );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
const wxChar* CActionPropChange::GetDesc( void ) const
|
|||
|
|
{
|
|||
|
|
return m_strDesc.c_str();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CActionPropChange::Excute( void )
|
|||
|
|
{
|
|||
|
|
const ActionInfo* pActionInfo = m_pCmdReceiver->GetActionInfoByID( m_NewActionInfo.iID );
|
|||
|
|
|
|||
|
|
assert( pActionInfo );
|
|||
|
|
if( pActionInfo )
|
|||
|
|
{
|
|||
|
|
m_PrevActionInfo = *pActionInfo;
|
|||
|
|
m_pCmdReceiver->ModifyActionInfo( m_NewActionInfo );
|
|||
|
|
|
|||
|
|
m_bUndo = false;
|
|||
|
|
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CActionPropChange::Undo( void )
|
|||
|
|
{
|
|||
|
|
m_pCmdReceiver->ModifyActionInfo( m_PrevActionInfo );
|
|||
|
|
|
|||
|
|
m_bUndo = true;
|
|||
|
|
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// <20><EFBFBD> <20><><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD>
|
|||
|
|
CActionRemoveCmd::CActionRemoveCmd( ICmdReceiver* pCmdReceiver, int iActionID ) : ICommand( pCmdReceiver ),
|
|||
|
|
m_iActionIDToRemove( iActionID )
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
const ActionInfo* pActionInfo = TOOL_DATA.GetActionInfoByID( iActionID );
|
|||
|
|
m_RemoveActionInfo = *pActionInfo;
|
|||
|
|
|
|||
|
|
wxCSConv MBConv( wxFONTENCODING_CP949 );
|
|||
|
|
|
|||
|
|
wxChar wcaActorName[ 256 ];
|
|||
|
|
wxChar wcaActionName[ 256 ];
|
|||
|
|
ZeroMemory( wcaActorName, sizeof(wcaActorName) );
|
|||
|
|
ZeroMemory( wcaActionName, sizeof(wcaActionName) );
|
|||
|
|
MBConv.MB2WC( wcaActorName, pActionInfo->strActorName.c_str(), 256 );
|
|||
|
|
MBConv.MB2WC( wcaActionName, pActionInfo->strActionName.c_str(), 256 );
|
|||
|
|
|
|||
|
|
m_strDesc.Printf( wxT("[Action prop removed] %s(%s)"), wcaActionName, wcaActorName );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
CActionRemoveCmd::~CActionRemoveCmd( void )
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD>.
|
|||
|
|
ICommand* CActionRemoveCmd::CreateSame( void )
|
|||
|
|
{
|
|||
|
|
return new CActionRemoveCmd( *this );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
const wxChar* CActionRemoveCmd::GetDesc( void ) const
|
|||
|
|
{
|
|||
|
|
return m_strDesc.c_str();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CActionRemoveCmd::Excute( void )
|
|||
|
|
{
|
|||
|
|
bool bResult = m_pCmdReceiver->RemoveAction( m_RemoveActionInfo.iID );
|
|||
|
|
|
|||
|
|
assert( bResult );
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CActionRemoveCmd::Undo( void )
|
|||
|
|
{
|
|||
|
|
bool bResult = m_pCmdReceiver->InsertAction( &m_RemoveActionInfo );
|
|||
|
|
|
|||
|
|
assert( bResult );
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// Ű <20>߰<EFBFBD> Ŀ<>ǵ<EFBFBD>
|
|||
|
|
CKeyInsertCmd::CKeyInsertCmd( ICmdReceiver* pCmdReceiver,
|
|||
|
|
KeyInfo* pKey ) : ICommand( pCmdReceiver ),
|
|||
|
|
m_pKeyInfo( new KeyInfo( *pKey ) )
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
wxCSConv MBConv( wxFONTENCODING_CP949 );
|
|||
|
|
|
|||
|
|
wxChar caWActorName[ 256 ];
|
|||
|
|
wxChar caWKeyName[ 256 ];
|
|||
|
|
ZeroMemory( caWActorName, sizeof(caWActorName) );
|
|||
|
|
ZeroMemory( caWKeyName, sizeof(caWKeyName) );
|
|||
|
|
|
|||
|
|
MBConv.MB2WC( caWActorName, m_pKeyInfo->strActorName.c_str(), 256 );
|
|||
|
|
MBConv.MB2WC( caWKeyName, m_pKeyInfo->strKeyName.c_str(), 256 );
|
|||
|
|
|
|||
|
|
m_strDesc.Printf( wxT("[Insert Key] %s(%s)"), caWActorName,
|
|||
|
|
caWKeyName );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
CKeyInsertCmd::~CKeyInsertCmd(void)
|
|||
|
|
{
|
|||
|
|
SAFE_DELETE( m_pKeyInfo );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
ICommand* CKeyInsertCmd::CreateSame( void )
|
|||
|
|
{
|
|||
|
|
CKeyInsertCmd* pCopied = new CKeyInsertCmd( *this );
|
|||
|
|
pCopied->m_pKeyInfo = new KeyInfo( *m_pKeyInfo );
|
|||
|
|
|
|||
|
|
return pCopied;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
const wxChar* CKeyInsertCmd::GetDesc( void ) const
|
|||
|
|
{
|
|||
|
|
return m_strDesc.c_str();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CKeyInsertCmd::Excute( void )
|
|||
|
|
{
|
|||
|
|
bool bResult = m_pCmdReceiver->InsertKey( m_pKeyInfo );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CKeyInsertCmd::Undo( void )
|
|||
|
|
{
|
|||
|
|
bool bResult = m_pCmdReceiver->RemoveKey( m_pKeyInfo->iID );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// <20><EFBFBD> <20><><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD>
|
|||
|
|
CKeyRemoveCmd::CKeyRemoveCmd( ICmdReceiver* pCmdReceiver, int iKeyID ) : ICommand( pCmdReceiver ),
|
|||
|
|
m_iKeyIDToRemove( iKeyID )
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
const KeyInfo* pKeyInfo = TOOL_DATA.GetKeyInfoByID( iKeyID );
|
|||
|
|
m_RemoveKeyInfo = *pKeyInfo;
|
|||
|
|
|
|||
|
|
wxCSConv MBConv( wxFONTENCODING_CP949 );
|
|||
|
|
|
|||
|
|
wxChar wcaActorName[ 256 ];
|
|||
|
|
wxChar wcaKeyName[ 256 ];
|
|||
|
|
ZeroMemory( wcaActorName, sizeof(wcaActorName) );
|
|||
|
|
ZeroMemory( wcaKeyName, sizeof(wcaKeyName) );
|
|||
|
|
MBConv.MB2WC( wcaActorName, pKeyInfo->strActorName.c_str(), 256 );
|
|||
|
|
MBConv.MB2WC( wcaKeyName, pKeyInfo->strKeyName.c_str(), 256 );
|
|||
|
|
|
|||
|
|
m_strDesc.Printf( wxT("[Key prop removed] %s(%s)"), wcaKeyName, wcaActorName );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
CKeyRemoveCmd::~CKeyRemoveCmd( void )
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD>.
|
|||
|
|
ICommand* CKeyRemoveCmd::CreateSame( void )
|
|||
|
|
{
|
|||
|
|
return new CKeyRemoveCmd( *this );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
const wxChar* CKeyRemoveCmd::GetDesc( void ) const
|
|||
|
|
{
|
|||
|
|
return m_strDesc.c_str();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CKeyRemoveCmd::Excute( void )
|
|||
|
|
{
|
|||
|
|
bool bResult = m_pCmdReceiver->RemoveKey( m_RemoveKeyInfo.iID );
|
|||
|
|
|
|||
|
|
assert( bResult );
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CKeyRemoveCmd::Undo( void )
|
|||
|
|
{
|
|||
|
|
bool bResult = m_pCmdReceiver->InsertKey( &m_RemoveKeyInfo );
|
|||
|
|
|
|||
|
|
assert( bResult );
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// Ű <20>Ӽ<EFBFBD> <20><><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD>
|
|||
|
|
CKeyPropChange::CKeyPropChange( ICmdReceiver* pCmdReceiver, KeyInfo* pNewKeyInfo ) : ICommand( pCmdReceiver ),
|
|||
|
|
m_NewKeyInfo( *pNewKeyInfo ),
|
|||
|
|
m_bUndo( false )
|
|||
|
|
{
|
|||
|
|
wxCSConv MBConv( wxFONTENCODING_CP949 );
|
|||
|
|
|
|||
|
|
wxChar wcaActorName[ 256 ];
|
|||
|
|
wxChar wcaKeyName[ 256 ];
|
|||
|
|
ZeroMemory( wcaActorName, sizeof(wcaActorName) );
|
|||
|
|
ZeroMemory( wcaKeyName, sizeof(wcaKeyName) );
|
|||
|
|
MBConv.MB2WC( wcaActorName, m_NewKeyInfo.strActorName.c_str(), 256 );
|
|||
|
|
MBConv.MB2WC( wcaKeyName, m_NewKeyInfo.strKeyName.c_str(), 256 );
|
|||
|
|
|
|||
|
|
m_strDesc.Printf( wxT("[Key prop changed] %s(%s)"), wcaKeyName, wcaActorName );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
CKeyPropChange::~CKeyPropChange( void )
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD>.
|
|||
|
|
ICommand* CKeyPropChange::CreateSame( void )
|
|||
|
|
{
|
|||
|
|
return new CKeyPropChange( *this );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
const wxChar* CKeyPropChange::GetDesc( void ) const
|
|||
|
|
{
|
|||
|
|
return m_strDesc.c_str();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CKeyPropChange::Excute( void )
|
|||
|
|
{
|
|||
|
|
const KeyInfo* pKeyInfo = m_pCmdReceiver->GetKeyInfoByID( m_NewKeyInfo.iID );
|
|||
|
|
|
|||
|
|
assert( pKeyInfo );
|
|||
|
|
if( pKeyInfo )
|
|||
|
|
{
|
|||
|
|
m_PrevKeyInfo = *pKeyInfo;
|
|||
|
|
if( KeyInfo::MOVE == m_PrevKeyInfo.iKeyType &&
|
|||
|
|
KeyInfo::MULTI_MOVE == m_NewKeyInfo.iKeyType )
|
|||
|
|
{
|
|||
|
|
wxCSConv MBConv( wxFONTENCODING_CP949 );
|
|||
|
|
wxChar wcaActorName[ 256 ];
|
|||
|
|
ZeroMemory( wcaActorName, sizeof(wcaActorName) );
|
|||
|
|
MBConv.MB2WC( wcaActorName, m_NewKeyInfo.strActorName.c_str(), 256 );
|
|||
|
|
m_NewKeyInfo.vlMoveKeys.front().vPos = m_pCmdReceiver->GetRegResPos( wcaActorName );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_pCmdReceiver->ModifyKeyInfo( m_NewKeyInfo );
|
|||
|
|
m_bUndo = false;
|
|||
|
|
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CKeyPropChange::Undo( void )
|
|||
|
|
{
|
|||
|
|
m_pCmdReceiver->ModifyKeyInfo( m_PrevKeyInfo );
|
|||
|
|
m_bUndo = true;
|
|||
|
|
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// <20>̺<EFBFBD>Ʈ <20>߰<EFBFBD> Ŀ<>ǵ<EFBFBD>
|
|||
|
|
CEventInsertCmd::CEventInsertCmd( ICmdReceiver* pCmdReceiver,
|
|||
|
|
EventInfo* pEvent ) : ICommand( pCmdReceiver ),
|
|||
|
|
m_pEventInfo( pEvent->clone() )
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
wxCSConv MBConv( wxFONTENCODING_CP949 );
|
|||
|
|
|
|||
|
|
wxChar caWEventName[ 256 ];
|
|||
|
|
ZeroMemory( caWEventName, sizeof(caWEventName) );
|
|||
|
|
|
|||
|
|
MBConv.MB2WC( caWEventName, m_pEventInfo->strEventName.c_str(), 256 );
|
|||
|
|
|
|||
|
|
m_strDesc.Printf( wxT("[Insert Event] %s"), caWEventName );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
CEventInsertCmd::~CEventInsertCmd(void)
|
|||
|
|
{
|
|||
|
|
SAFE_DELETE( m_pEventInfo );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
ICommand* CEventInsertCmd::CreateSame( void )
|
|||
|
|
{
|
|||
|
|
CEventInsertCmd* pCopied = new CEventInsertCmd( *this );
|
|||
|
|
pCopied->m_pEventInfo = m_pEventInfo->clone();
|
|||
|
|
|
|||
|
|
return pCopied;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
const wxChar* CEventInsertCmd::GetDesc( void ) const
|
|||
|
|
{
|
|||
|
|
return m_strDesc.c_str();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CEventInsertCmd::Excute( void )
|
|||
|
|
{
|
|||
|
|
bool bResult = m_pCmdReceiver->InsertEvent( m_pEventInfo );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CEventInsertCmd::Undo( void )
|
|||
|
|
{
|
|||
|
|
bool bResult = m_pCmdReceiver->RemoveEvent( m_pEventInfo->iID );
|
|||
|
|
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// <20>̺<EFBFBD>Ʈ <20><><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD>
|
|||
|
|
CEventRemoveCmd::CEventRemoveCmd( ICmdReceiver* pCmdReceiver, int iEventID ) : ICommand( pCmdReceiver ),
|
|||
|
|
m_iEventIDToRemove( iEventID )
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
const EventInfo* pEventInfo = TOOL_DATA.GetEventInfoByID( iEventID );
|
|||
|
|
m_pRemoveEventInfo = pEventInfo->clone();
|
|||
|
|
|
|||
|
|
wxCSConv MBConv( wxFONTENCODING_CP949 );
|
|||
|
|
|
|||
|
|
wxChar wcaEventName[ 256 ];
|
|||
|
|
ZeroMemory( wcaEventName, sizeof(wcaEventName) );
|
|||
|
|
MBConv.MB2WC( wcaEventName, pEventInfo->strEventName.c_str(), 256 );
|
|||
|
|
|
|||
|
|
m_strDesc.Printf( wxT("[Event prop removed] %s"), wcaEventName );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
CEventRemoveCmd::~CEventRemoveCmd( void )
|
|||
|
|
{
|
|||
|
|
SAFE_DELETE( m_pRemoveEventInfo );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD>.
|
|||
|
|
ICommand* CEventRemoveCmd::CreateSame( void )
|
|||
|
|
{
|
|||
|
|
CEventRemoveCmd* pNewEvent = new CEventRemoveCmd( *this );
|
|||
|
|
pNewEvent->m_pRemoveEventInfo = m_pRemoveEventInfo->clone();
|
|||
|
|
|
|||
|
|
return pNewEvent;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
const wxChar* CEventRemoveCmd::GetDesc( void ) const
|
|||
|
|
{
|
|||
|
|
return m_strDesc.c_str();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CEventRemoveCmd::Excute( void )
|
|||
|
|
{
|
|||
|
|
bool bResult = m_pCmdReceiver->RemoveEvent( m_pRemoveEventInfo->iID );
|
|||
|
|
|
|||
|
|
assert( bResult );
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CEventRemoveCmd::Undo( void )
|
|||
|
|
{
|
|||
|
|
bool bResult = m_pCmdReceiver->InsertEvent( m_pRemoveEventInfo );
|
|||
|
|
|
|||
|
|
assert( bResult );
|
|||
|
|
if( bResult )
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// <20>̺<EFBFBD>Ʈ <20>Ӽ<EFBFBD> <20><><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD>
|
|||
|
|
CEventPropChange::CEventPropChange( ICmdReceiver* pCmdReceiver, EventInfo* pNewEventInfo ) : ICommand( pCmdReceiver ),
|
|||
|
|
m_pNewEventInfo( pNewEventInfo->clone() ),
|
|||
|
|
m_pPrevEventInfo( NULL ),
|
|||
|
|
m_bUndo( false )
|
|||
|
|
{
|
|||
|
|
wxCSConv MBConv( wxFONTENCODING_CP949 );
|
|||
|
|
|
|||
|
|
wxChar wcaEventName[ 256 ];
|
|||
|
|
ZeroMemory( wcaEventName, sizeof(wcaEventName) );
|
|||
|
|
MBConv.MB2WC( wcaEventName, m_pNewEventInfo->strEventName.c_str(), 256 );
|
|||
|
|
|
|||
|
|
m_strDesc.Printf( wxT("[Event prop changed] %s"), wcaEventName );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
CEventPropChange::~CEventPropChange( void )
|
|||
|
|
{
|
|||
|
|
SAFE_DELETE( m_pNewEventInfo );
|
|||
|
|
SAFE_DELETE( m_pPrevEventInfo );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD>.
|
|||
|
|
ICommand* CEventPropChange::CreateSame( void )
|
|||
|
|
{
|
|||
|
|
CEventPropChange* pNewEvent = new CEventPropChange( *this );
|
|||
|
|
|
|||
|
|
pNewEvent->m_pNewEventInfo = m_pNewEventInfo->clone();
|
|||
|
|
|
|||
|
|
if( m_pPrevEventInfo )
|
|||
|
|
pNewEvent->m_pPrevEventInfo = m_pPrevEventInfo->clone();
|
|||
|
|
|
|||
|
|
return pNewEvent;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
const wxChar* CEventPropChange::GetDesc( void ) const
|
|||
|
|
{
|
|||
|
|
return m_strDesc.c_str();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CEventPropChange::Excute( void )
|
|||
|
|
{
|
|||
|
|
const EventInfo* pEventInfo = m_pCmdReceiver->GetEventInfoByID( m_pNewEventInfo->iID );
|
|||
|
|
|
|||
|
|
assert( pEventInfo );
|
|||
|
|
if( pEventInfo )
|
|||
|
|
{
|
|||
|
|
SAFE_DELETE( m_pPrevEventInfo );
|
|||
|
|
m_pPrevEventInfo = pEventInfo->clone();
|
|||
|
|
m_pCmdReceiver->ModifyEventInfo( m_pNewEventInfo );
|
|||
|
|
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
|
|||
|
|
m_bUndo = false;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CEventPropChange::Undo( void )
|
|||
|
|
{
|
|||
|
|
m_pCmdReceiver->ModifyEventInfo( m_pPrevEventInfo );
|
|||
|
|
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
|
|||
|
|
m_bUndo = true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// <20>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD>
|
|||
|
|
CBatchEdit::CBatchEdit( ICmdReceiver* pCmdReceiver, float fStartTimeDelta,
|
|||
|
|
const vector<const ActionInfo*> vlpActionInfo,
|
|||
|
|
const vector<const KeyInfo*> vlpKeyInfo,
|
|||
|
|
const vector<const EventInfo*> vlpEventInfo ) : ICommand( pCmdReceiver ),
|
|||
|
|
m_fStartTimeDelta( fStartTimeDelta ),
|
|||
|
|
m_vlpActionInfo( vlpActionInfo ),
|
|||
|
|
m_vlpKeyInfo( vlpKeyInfo ),
|
|||
|
|
m_vlpEventInfo( vlpEventInfo )
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
wxCSConv MBConv( wxFONTENCODING_CP949 );
|
|||
|
|
|
|||
|
|
wxChar wcaEventName[ 256 ];
|
|||
|
|
ZeroMemory( wcaEventName, sizeof(wcaEventName) );
|
|||
|
|
//MBConv.MB2WC( wcaEventName, m_pNewEventInfo->strEventName.c_str(), 256 );
|
|||
|
|
|
|||
|
|
m_strDesc.Printf( wxT("[Batch data changed]") );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
CBatchEdit::~CBatchEdit()
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
const wxChar* CBatchEdit::GetDesc( void ) const
|
|||
|
|
{
|
|||
|
|
return m_strDesc.c_str();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Լ<EFBFBD>.
|
|||
|
|
ICommand* CBatchEdit::CreateSame( void )
|
|||
|
|
{
|
|||
|
|
CBatchEdit* pNewCommand = new CBatchEdit( *this );
|
|||
|
|
return pNewCommand;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CBatchEdit::Excute( void )
|
|||
|
|
{
|
|||
|
|
int iNumActions = (int)m_vlpActionInfo.size();
|
|||
|
|
for( int iAction = 0; iAction < iNumActions; ++iAction )
|
|||
|
|
{
|
|||
|
|
const ActionInfo* pActionInfo = m_vlpActionInfo.at( iAction );
|
|||
|
|
ActionInfo Copy = (*pActionInfo);
|
|||
|
|
|
|||
|
|
Copy.fStartTime += m_fStartTimeDelta;
|
|||
|
|
if( Copy.fStartTime < 0.0f )
|
|||
|
|
Copy.fStartTime = 0.0f;
|
|||
|
|
|
|||
|
|
m_pCmdReceiver->ModifyActionInfo( Copy );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int iNumKeys = (int)m_vlpKeyInfo.size();
|
|||
|
|
for( int iKey = 0; iKey < iNumKeys; ++iKey )
|
|||
|
|
{
|
|||
|
|
const KeyInfo* pKeyInfo = m_vlpKeyInfo.at( iKey );
|
|||
|
|
KeyInfo Copy = *pKeyInfo;
|
|||
|
|
|
|||
|
|
Copy.fStartTime += m_fStartTimeDelta;
|
|||
|
|
if( Copy.fStartTime < 0.0f )
|
|||
|
|
Copy.fStartTime = 0.0f;
|
|||
|
|
|
|||
|
|
m_pCmdReceiver->ModifyKeyInfo( Copy );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int iNumEvents = (int)m_vlpEventInfo.size();
|
|||
|
|
for( int iEvent = 0; iEvent < iNumEvents; ++iEvent )
|
|||
|
|
{
|
|||
|
|
const EventInfo* pEventInfo = m_vlpEventInfo.at( iEvent );
|
|||
|
|
EventInfo* pCopy = pEventInfo->clone();
|
|||
|
|
|
|||
|
|
pCopy->fStartTime += m_fStartTimeDelta;
|
|||
|
|
if( pCopy->fStartTime < 0.0f )
|
|||
|
|
pCopy->fStartTime = 0.0f;
|
|||
|
|
|
|||
|
|
m_pCmdReceiver->ModifyEventInfo( pCopy );
|
|||
|
|
|
|||
|
|
delete pCopy;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CBatchEdit::Undo( void )
|
|||
|
|
{
|
|||
|
|
int iNumActions = (int)m_vlpActionInfo.size();
|
|||
|
|
for( int iAction = 0; iAction < iNumActions; ++iAction )
|
|||
|
|
{
|
|||
|
|
const ActionInfo* pActionInfo = m_vlpActionInfo.at( iAction );
|
|||
|
|
ActionInfo Copy = (*pActionInfo);
|
|||
|
|
|
|||
|
|
Copy.fStartTime -= m_fStartTimeDelta; // <20><>.. <20>̷<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD> <20><> <20><><EFBFBD>־<EFBFBD> <20>ϴµ<CFB4>. -_-
|
|||
|
|
if( Copy.fStartTime < 0.0f )
|
|||
|
|
Copy.fStartTime = 0.0f;
|
|||
|
|
|
|||
|
|
m_pCmdReceiver->ModifyActionInfo( Copy );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int iNumKeys = (int)m_vlpKeyInfo.size();
|
|||
|
|
for( int iKey = 0; iKey < iNumKeys; ++iKey )
|
|||
|
|
{
|
|||
|
|
const KeyInfo* pKeyInfo = m_vlpKeyInfo.at( iKey );
|
|||
|
|
KeyInfo Copy = *pKeyInfo;
|
|||
|
|
|
|||
|
|
Copy.fStartTime -= m_fStartTimeDelta;
|
|||
|
|
if( Copy.fStartTime < 0.0f )
|
|||
|
|
Copy.fStartTime = 0.0f;
|
|||
|
|
|
|||
|
|
m_pCmdReceiver->ModifyKeyInfo( Copy );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
int iNumEvents = (int)m_vlpEventInfo.size();
|
|||
|
|
for( int iEvent = 0; iEvent < iNumEvents; ++iEvent )
|
|||
|
|
{
|
|||
|
|
const EventInfo* pEventInfo = m_vlpEventInfo.at( iEvent );
|
|||
|
|
EventInfo* pCopy = pEventInfo->clone();
|
|||
|
|
|
|||
|
|
pCopy->fStartTime -= m_fStartTimeDelta;
|
|||
|
|
if( pCopy->fStartTime < 0.0f )
|
|||
|
|
pCopy->fStartTime = 0.0f;
|
|||
|
|
|
|||
|
|
m_pCmdReceiver->ModifyEventInfo( pCopy );
|
|||
|
|
|
|||
|
|
delete pCopy;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_pCmdReceiver->SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD>忡 <20>ִ<EFBFBD> Ŀ<>ǵ<EFBFBD>.
|
|||
|
|
CCopyToClipboard::CCopyToClipboard( ICmdReceiver* pCmdReceiver, const ActionInfo* pActionInfo ) : ICommand( pCmdReceiver ),
|
|||
|
|
m_pCopiedActionInfo( new ActionInfo ),
|
|||
|
|
m_pCopiedKeyInfo( NULL ),
|
|||
|
|
m_pCopiedEventInfo( NULL ),
|
|||
|
|
m_iCopyType( COPY_ACTION )
|
|||
|
|
{
|
|||
|
|
*m_pCopiedActionInfo = *pActionInfo;
|
|||
|
|
|
|||
|
|
wxCSConv MBConv( wxFONTENCODING_CP949 );
|
|||
|
|
wxChar wcaName[ 256 ];
|
|||
|
|
ZeroMemory( wcaName, sizeof(wcaName) );
|
|||
|
|
MBConv.MB2WC( wcaName, m_pCopiedActionInfo->strActionName.c_str(), 256 );
|
|||
|
|
m_strDesc.Printf( wxT("[Copy to Clipboard] ActionID: %d Name:%s"), m_pCopiedActionInfo->iID, wcaName );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
CCopyToClipboard::CCopyToClipboard( ICmdReceiver* pCmdReceiver, const KeyInfo* pKeyInfo ) : ICommand( pCmdReceiver ),
|
|||
|
|
m_pCopiedActionInfo( NULL ),
|
|||
|
|
m_pCopiedKeyInfo( new KeyInfo ),
|
|||
|
|
m_pCopiedEventInfo( NULL ),
|
|||
|
|
m_iCopyType( COPY_KEY )
|
|||
|
|
{
|
|||
|
|
*m_pCopiedKeyInfo = *pKeyInfo;
|
|||
|
|
|
|||
|
|
wxCSConv MBConv( wxFONTENCODING_CP949 );
|
|||
|
|
wxChar wcaName[ 256 ];
|
|||
|
|
ZeroMemory( wcaName, sizeof(wcaName) );
|
|||
|
|
MBConv.MB2WC( wcaName, m_pCopiedKeyInfo->strKeyName.c_str(), 256 );
|
|||
|
|
m_strDesc.Printf( wxT("[Copy to Clipboard] KeyID: %d Name:%s"), m_pCopiedKeyInfo->iID, wcaName );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
CCopyToClipboard::CCopyToClipboard( ICmdReceiver* pCmdReceiver, const EventInfo* pEventInfo ) : ICommand( pCmdReceiver ),
|
|||
|
|
m_pCopiedActionInfo( NULL ),
|
|||
|
|
m_pCopiedKeyInfo( NULL ),
|
|||
|
|
m_pCopiedEventInfo( NULL ),
|
|||
|
|
m_iCopyType( COPY_EVENT )
|
|||
|
|
{
|
|||
|
|
m_pCopiedEventInfo = pEventInfo->clone();
|
|||
|
|
|
|||
|
|
wxCSConv MBConv( wxFONTENCODING_CP949 );
|
|||
|
|
wxChar wcaName[ 256 ];
|
|||
|
|
ZeroMemory( wcaName, sizeof(wcaName) );
|
|||
|
|
MBConv.MB2WC( wcaName, m_pCopiedEventInfo->strEventName.c_str(), 256 );
|
|||
|
|
m_strDesc.Printf( wxT("[Copy to Clipboard] EventID: %d Name:%s"), m_pCopiedEventInfo->iID, wcaName );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
CCopyToClipboard::~CCopyToClipboard( void )
|
|||
|
|
{
|
|||
|
|
SAFE_DELETE( m_pCopiedActionInfo );
|
|||
|
|
SAFE_DELETE( m_pCopiedKeyInfo );
|
|||
|
|
SAFE_DELETE( m_pCopiedEventInfo );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
ICommand* CCopyToClipboard::CreateSame( void )
|
|||
|
|
{
|
|||
|
|
CCopyToClipboard* pNewCommand = new CCopyToClipboard( *this );
|
|||
|
|
|
|||
|
|
switch( pNewCommand->GetCopyType() )
|
|||
|
|
{
|
|||
|
|
case COPY_ACTION:
|
|||
|
|
pNewCommand->m_pCopiedActionInfo = new ActionInfo( *m_pCopiedActionInfo );
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case COPY_KEY:
|
|||
|
|
pNewCommand->m_pCopiedKeyInfo = new KeyInfo( *m_pCopiedKeyInfo );
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case COPY_EVENT:
|
|||
|
|
pNewCommand->m_pCopiedEventInfo = m_pCopiedEventInfo->clone();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return pNewCommand;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const wxChar* CCopyToClipboard::GetDesc( void ) const
|
|||
|
|
{
|
|||
|
|
return m_strDesc.c_str();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CCopyToClipboard::Excute( void )
|
|||
|
|
{
|
|||
|
|
switch( m_iCopyType )
|
|||
|
|
{
|
|||
|
|
case COPY_ACTION:
|
|||
|
|
TOOL_DATA.CopyToClipboard( m_pCopiedActionInfo );
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case COPY_KEY:
|
|||
|
|
TOOL_DATA.CopyToClipboard( m_pCopiedKeyInfo );
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case COPY_EVENT:
|
|||
|
|
TOOL_DATA.CopyToClipboard( m_pCopiedEventInfo );
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CCopyToClipboard::Undo( void )
|
|||
|
|
{
|
|||
|
|
// Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
switch( m_iCopyType )
|
|||
|
|
{
|
|||
|
|
case COPY_ACTION:
|
|||
|
|
TOOL_DATA.ResetActionClipboard();
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case COPY_KEY:
|
|||
|
|
TOOL_DATA.ResetKeyClipboard();
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case COPY_EVENT:
|
|||
|
|
TOOL_DATA.ResetEventClipboard();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD>忡<EFBFBD><E5BFA1> <20>ٿ<EFBFBD> <20>ִ<EFBFBD> Ŀ<>ǵ<EFBFBD>.
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20>ٿ<EFBFBD><D9BF>ֱⰡ <20><> <20><> <20><><EFBFBD>Ӱ<EFBFBD> Info <20><><EFBFBD><EFBFBD><EFBFBD>Ͱ<EFBFBD> <20>ϳ<EFBFBD> <20>߰<EFBFBD><DFB0>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȴ<EFBFBD>. id <20><> <20><><EFBFBD><EFBFBD>ũ<EFBFBD>ؾ<EFBFBD><D8BE>ϸ<EFBFBD>
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD> <20>ٿ<EFBFBD><D9BF><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ؾ<EFBFBD><D8BE>Ѵ<EFBFBD>..
|
|||
|
|
CPasteFromClipboard::CPasteFromClipboard( ICmdReceiver* pCmdReceiver, int iCopyType, const char* pActorToPaste, float fTimeToPaste ) :
|
|||
|
|
ICommand( pCmdReceiver ),
|
|||
|
|
m_iCopyType( iCopyType ),
|
|||
|
|
m_pCopiedActionInfo( NULL ),
|
|||
|
|
m_pCopiedKeyInfo( NULL ),
|
|||
|
|
m_pCopiedEventInfo( NULL )
|
|||
|
|
{
|
|||
|
|
int iID = -1;
|
|||
|
|
wxCSConv MBConv( wxFONTENCODING_CP949 );
|
|||
|
|
wxChar wcaName[ 256 ];
|
|||
|
|
ZeroMemory( wcaName, sizeof(wcaName) );
|
|||
|
|
|
|||
|
|
switch( m_iCopyType )
|
|||
|
|
{
|
|||
|
|
case CCopyToClipboard::COPY_ACTION:
|
|||
|
|
{
|
|||
|
|
wxASSERT( TOOL_DATA.IsActionCopied() );
|
|||
|
|
const ActionInfo* pClipboard = TOOL_DATA.GetActionClipboard();
|
|||
|
|
m_pCopiedActionInfo = new ActionInfo( *pClipboard );
|
|||
|
|
m_pCopiedActionInfo->strActorName.assign( pActorToPaste );
|
|||
|
|
m_pCopiedActionInfo->fStartTime = fTimeToPaste;
|
|||
|
|
iID = m_pCopiedActionInfo->iID = m_pCmdReceiver->GenerateID();
|
|||
|
|
MBConv.MB2WC( wcaName, pClipboard->strActionName.c_str(), 256 );
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case CCopyToClipboard::COPY_KEY:
|
|||
|
|
{
|
|||
|
|
wxASSERT( TOOL_DATA.IsKeyCopied() );
|
|||
|
|
const KeyInfo* pClipboard = TOOL_DATA.GetKeyClipboard();
|
|||
|
|
m_pCopiedKeyInfo = new KeyInfo( *pClipboard );
|
|||
|
|
m_pCopiedKeyInfo->strActorName.assign( pActorToPaste );
|
|||
|
|
m_pCopiedKeyInfo->fStartTime = fTimeToPaste;
|
|||
|
|
iID = m_pCopiedKeyInfo->iID = m_pCmdReceiver->GenerateID();
|
|||
|
|
|
|||
|
|
if( !m_pCopiedKeyInfo->vlMoveKeys.empty() )
|
|||
|
|
{
|
|||
|
|
for( int i = 0; i < (int)m_pCopiedKeyInfo->vlMoveKeys.size(); ++i )
|
|||
|
|
{
|
|||
|
|
m_pCopiedKeyInfo->vlMoveKeys.at( i ).iID = TOOL_DATA.GenerateID();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
MBConv.MB2WC( wcaName, pClipboard->strKeyName.c_str(), 256 );
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case CCopyToClipboard::COPY_EVENT:
|
|||
|
|
{
|
|||
|
|
wxASSERT( TOOL_DATA.IsEventCopied() );
|
|||
|
|
const EventInfo* pClipboard = TOOL_DATA.GetEventClipboard();
|
|||
|
|
m_pCopiedEventInfo = pClipboard->clone();
|
|||
|
|
iID = pClipboard->iID;
|
|||
|
|
m_pCopiedEventInfo->strActorName.assign( pActorToPaste );
|
|||
|
|
m_pCopiedEventInfo->fStartTime = fTimeToPaste;
|
|||
|
|
iID = m_pCopiedEventInfo->iID = m_pCmdReceiver->GenerateID();
|
|||
|
|
MBConv.MB2WC( wcaName, pClipboard->strEventName.c_str(), 256 );
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
default:
|
|||
|
|
wxASSERT( !wxT("Invalid Copy Type!!") );
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
m_strDesc.Printf( wxT("[Paste from Clipboard] EventID: %d Name:%s"), iID, wcaName );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
CPasteFromClipboard::~CPasteFromClipboard( void )
|
|||
|
|
{
|
|||
|
|
SAFE_DELETE( m_pCopiedActionInfo );
|
|||
|
|
SAFE_DELETE( m_pCopiedKeyInfo );
|
|||
|
|
SAFE_DELETE( m_pCopiedKeyInfo );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
ICommand* CPasteFromClipboard::CreateSame( void )
|
|||
|
|
{
|
|||
|
|
CPasteFromClipboard* pNewCommand = new CPasteFromClipboard( *this );
|
|||
|
|
|
|||
|
|
switch( pNewCommand->GetCopyType() )
|
|||
|
|
{
|
|||
|
|
case CCopyToClipboard::COPY_ACTION:
|
|||
|
|
pNewCommand->m_pCopiedActionInfo = new ActionInfo( *m_pCopiedActionInfo );
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case CCopyToClipboard::COPY_KEY:
|
|||
|
|
pNewCommand->m_pCopiedKeyInfo = new KeyInfo( *m_pCopiedKeyInfo );
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case CCopyToClipboard::COPY_EVENT:
|
|||
|
|
pNewCommand->m_pCopiedEventInfo = m_pCopiedEventInfo->clone();
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return pNewCommand;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
const wxChar* CPasteFromClipboard::GetDesc( void ) const
|
|||
|
|
{
|
|||
|
|
return m_strDesc.c_str();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void CPasteFromClipboard::Excute( void )
|
|||
|
|
{
|
|||
|
|
// <20>ٿ<EFBFBD><D9BF>ֱ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
//TOOL_DATA.Reset
|
|||
|
|
switch( m_iCopyType )
|
|||
|
|
{
|
|||
|
|
case CCopyToClipboard::COPY_ACTION:
|
|||
|
|
m_pCmdReceiver->InsertAction( m_pCopiedActionInfo );
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case CCopyToClipboard::COPY_KEY:
|
|||
|
|
m_pCmdReceiver->InsertKey( m_pCopiedKeyInfo );
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case CCopyToClipboard::COPY_EVENT:
|
|||
|
|
m_pCmdReceiver->InsertEvent( m_pCopiedEventInfo );
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
TOOL_DATA.SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CPasteFromClipboard::Undo( void )
|
|||
|
|
{
|
|||
|
|
// <20>ٿ<EFBFBD><D9BF>ֱ<EFBFBD> <20><><EFBFBD><EFBFBD>.
|
|||
|
|
switch( m_iCopyType )
|
|||
|
|
{
|
|||
|
|
case CCopyToClipboard::COPY_ACTION:
|
|||
|
|
m_pCmdReceiver->RemoveAction( m_pCopiedActionInfo->iID );
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case CCopyToClipboard::COPY_KEY:
|
|||
|
|
m_pCmdReceiver->RemoveKey( m_pCopiedKeyInfo->iID );
|
|||
|
|
break;
|
|||
|
|
|
|||
|
|
case CCopyToClipboard::COPY_EVENT:
|
|||
|
|
m_pCmdReceiver->RemoveEvent( m_pCopiedEventInfo->iID );
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
TOOL_DATA.SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// <20><><EFBFBD><EFBFBD> <20>ٲٴ<D9B2> Ŀ<>ǵ<EFBFBD>. <20><> Ŀ<>ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ٲ<EFBFBD> <20><> <20>ִ<EFBFBD><D6B4><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>˴ϴ<CBB4>.
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƴٴ<C6B4> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ҽ<EFBFBD><D2BD><EFBFBD> <20>ٲ<EFBFBD> <20><> <20>ִٴ<D6B4> <20><>. (<28>ִϸ<D6B4><CFB8>̼<EFBFBD> ȣȯ<C8A3><C8AF>)
|
|||
|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
// <20>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ŀ<>ǵ<EFBFBD>
|
|||
|
|
CChangeActorRes::CChangeActorRes( ICmdReceiver* pCmdReceiver, const wxChar* pNewActorResName, const wxChar* pOldActorName ) : ICommand( pCmdReceiver ),
|
|||
|
|
m_strNewActorResName( pNewActorResName ),
|
|||
|
|
m_strNewActorName( pNewActorResName ),
|
|||
|
|
m_strOldActorName( pOldActorName )
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>.
|
|||
|
|
int iOffset = (int)m_strOldActorName.find_last_of( wxT("_") );
|
|||
|
|
wxString strUserPostFix = m_strOldActorName.substr( iOffset, m_strOldActorName.length() );
|
|||
|
|
m_strNewActorName.Append( strUserPostFix );
|
|||
|
|
|
|||
|
|
m_strOldActorResName = m_strOldActorName.substr( 0, iOffset );
|
|||
|
|
|
|||
|
|
m_strDesc.Printf( wxT("[%s Actor has changed to %s actor resource]"), m_strOldActorName.c_str(), m_strNewActorResName.c_str() );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
CChangeActorRes::~CChangeActorRes()
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
const wxChar* CChangeActorRes::GetDesc( void ) const
|
|||
|
|
{
|
|||
|
|
return m_strDesc.c_str();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CChangeActorRes::Excute( void )
|
|||
|
|
{
|
|||
|
|
m_bIsUndo = false;
|
|||
|
|
|
|||
|
|
TOOL_DATA.ChangeRegResName( m_strOldActorName.c_str(), m_strNewActorName.c_str() );
|
|||
|
|
|
|||
|
|
TOOL_DATA.SetModified( true );
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void CChangeActorRes::Undo( void )
|
|||
|
|
{
|
|||
|
|
m_bIsUndo = true;
|
|||
|
|
|
|||
|
|
TOOL_DATA.ChangeRegResName( m_strNewActorName.c_str(), m_strOldActorName.c_str() );
|
|||
|
|
|
|||
|
|
TOOL_DATA.SetModified( true );
|
|||
|
|
}
|