// EtActionToolDoc.cpp : CEtActionToolDoc Ŭ·¡½ºÀÇ ±¸Çö // #include "stdafx.h" #include "EtActionTool.h" #include "EtActionToolDoc.h" #include "GlobalValue.h" #include "SkinPrevDlg.h" #include "SignalReportDlg.h" #include "SignalManager.h" #include "ActionSignal.h" #include "SignalItem.h" #include "ActionElement.h" #include "MainFrm.h" #include "PaneDefine.h" #include "ActionPaneView.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CEtActionToolDoc IMPLEMENT_DYNCREATE(CEtActionToolDoc, CDocument) BEGIN_MESSAGE_MAP(CEtActionToolDoc, CDocument) ON_COMMAND(ID_FILE_OPEN, &CEtActionToolDoc::OnFileOpen) ON_COMMAND(ID_FILE_SAVE, &CEtActionToolDoc::OnFileSave) ON_COMMAND(ID_FILE_NEW, &CEtActionToolDoc::OnFileNew) ON_COMMAND(ID_SIGNAL_REPORT, &CEtActionToolDoc::OnSignalReport) ON_COMMAND(ID_SAVE_SIGNAL_REPORT, &CEtActionToolDoc::OnSaveSignalReport) ON_UPDATE_COMMAND_UI(ID_SIGNAL_REPORT, &CEtActionToolDoc::OnUpdateSignalReport) ON_UPDATE_COMMAND_UI(ID_SAVE_SIGNAL_REPORT, &CEtActionToolDoc::OnUpdateSaveSignalReport) ON_COMMAND(ID_FILE_EXPORT, &CEtActionToolDoc::OnFileExport) ON_COMMAND(ID_FILE_IMPORT, &CEtActionToolDoc::OnFileImport) ON_UPDATE_COMMAND_UI(ID_FILE_EXPORT, &CEtActionToolDoc::OnUpdateOnFileExport) ON_UPDATE_COMMAND_UI(ID_FILE_IMPORT, &CEtActionToolDoc::OnUpdateOnFileImport) END_MESSAGE_MAP() // CEtActionToolDoc »ý¼º/¼Ò¸ê CEtActionToolDoc::CEtActionToolDoc() { // TODO: ¿©±â¿¡ ÀÏȸ¼º »ý¼º Äڵ带 Ãß°¡ÇÕ´Ï´Ù. } CEtActionToolDoc::~CEtActionToolDoc() { CGlobalValue::GetInstance().CheckIn(); } BOOL CEtActionToolDoc::OnNewDocument() { if (!CDocument::OnNewDocument()) return FALSE; // TODO: ¿©±â¿¡ ÀçÃʱâÈ­ Äڵ带 Ãß°¡ÇÕ´Ï´Ù. // SDI ¹®¼­´Â ÀÌ ¹®¼­¸¦ ´Ù½Ã »ç¿ëÇÕ´Ï´Ù. return TRUE; } // CEtActionToolDoc serialization void CEtActionToolDoc::Serialize(CArchive& ar) { if (ar.IsStoring()) { // TODO: ¿©±â¿¡ ÀúÀå Äڵ带 Ãß°¡ÇÕ´Ï´Ù. /* DWORD dwAttr = GetFileAttributes( szFileName ); if( dwAttr & FILE_ATTRIBUTE_READONLY ) { CString szStr; szStr.Format( "´ÙÀ½ ÆÄÀϵéÀÌ ÀбâÀü¿ë ¼Ó¼ºÀÔ´Ï´Ù.\n\n%s", szFileName ); MessageBox( ((CMainFrame*)AfxGetMainWnd())->m_hWnd, szStr, "°æ°í", MB_OK ); } */ } else { // TODO: ¿©±â¿¡ ·Îµù Äڵ带 Ãß°¡ÇÕ´Ï´Ù. CFile *pFile = ar.GetFile(); CString szFileName = pFile->GetFilePath(); while(1) { CString szError; szError = CGlobalValue::GetInstance().IsCanCheckOut( szFileName ); if( !szError.IsEmpty() ) { CString szStr; szStr.Format( "´Ù¸¥ »ç¶÷ÀÌ ÇöÁ¦ ÆÄÀÏÀ» »ç¿ëÁßÀÔ´Ï´Ù.\nÆÄÀÏ À̸§ : %s\nÇöÁ¦ »ç¿ëÀÚ : %s", szFileName, szError ); int nResult = MessageBox( CGlobalValue::GetInstance().GetView()->m_hWnd, szStr, "¿¡·¯", MB_ABORTRETRYIGNORE ); bool bStop = false; switch( nResult ) { case IDABORT: return; case IDRETRY: break; case IDIGNORE: bStop = true; CGlobalValue::GetInstance().IgnoreCheckOut( szFileName ); break; } if( bStop == true ) break; } else break; } CGlobalValue::GetInstance().CheckIn(); if( CGlobalValue::GetInstance().CheckOut( szFileName ) == false ) { MessageBox( CGlobalValue::GetInstance().GetView()->m_hWnd, "üũ¾Æ¿ô ½ÇÆä!! ÆÄÀÏÀ» ¿­ ¼ö ¾ø½À´Ï´Ù.", "¿¡·¯", MB_OK ); return; } if( CGlobalValue::GetInstance().OpenAction( szFileName ) == false ) { CGlobalValue::GetInstance().CheckIn(); } } } // CEtActionToolDoc Áø´Ü #ifdef _DEBUG void CEtActionToolDoc::AssertValid() const { CDocument::AssertValid(); } void CEtActionToolDoc::Dump(CDumpContext& dc) const { CDocument::Dump(dc); } #endif //_DEBUG // CEtActionToolDoc ¸í·É void CEtActionToolDoc::OnFileOpen() { // TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. TCHAR szFilter[] = _T( "Eternity Support File (*.skn;*.act)|*.skn;*.act|Eternity Skin File (*.skn)|*.skn|Eternity Action File (*.act)|*.act|All Files (*.*)|*.*||" ); CSkinPrevDlg dlg( TRUE, _T("skn;act"), _T("*.skn;*.act"), OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_ENABLESIZING , szFilter, CGlobalValue::GetInstance().GetView() ); dlg.m_ofn.lpstrTitle = "Open Eternity Engine File"; if( IDOK != dlg.DoModal() ) return; while(1) { CString szError; szError = CGlobalValue::GetInstance().IsCanCheckOut( dlg.GetPathName() ); if( !szError.IsEmpty() ) { CString szStr; szStr.Format( "´Ù¸¥ »ç¶÷ÀÌ ÇöÁ¦ ÆÄÀÏÀ» »ç¿ëÁßÀÔ´Ï´Ù.\nÆÄÀÏ À̸§ : %s\nÇöÁ¦ »ç¿ëÀÚ : %s", dlg.GetPathName(), szError ); int nResult = MessageBox( CGlobalValue::GetInstance().GetView()->m_hWnd, szStr, "¿¡·¯", MB_ABORTRETRYIGNORE ); bool bStop = false; switch( nResult ) { case IDABORT: return; case IDRETRY: break; case IDIGNORE: CGlobalValue::GetInstance().IgnoreCheckOut( dlg.GetPathName() ); bStop = true; break; } if( bStop == true ) break; } else break; } CGlobalValue::GetInstance().CheckIn(); if( CGlobalValue::GetInstance().CheckOut( dlg.GetPathName() ) == false ) { MessageBox( CGlobalValue::GetInstance().GetView()->m_hWnd, "üũ¾Æ¿ô ½ÇÆä!! ÆÄÀÏÀ» ¿­ ¼ö ¾ø½À´Ï´Ù.", "¿¡·¯", MB_OK ); return; } if( CGlobalValue::GetInstance().OpenAction( dlg.GetPathName() ) == false ) { CGlobalValue::GetInstance().CheckIn(); } } void CEtActionToolDoc::OnFileSave() { // TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. if( CGlobalValue::GetInstance().SaveAction() == false ) { MessageBox( CGlobalValue::GetInstance().GetView()->m_hWnd, "¾×¼Ç ÆÄÀÏ ÀúÀå ½ÇÆÐ", "¿¡·¯", MB_OK ); } } void CEtActionToolDoc::OnFileNew() { CGlobalValue::GetInstance().CheckIn(); // TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. if( CGlobalValue::GetInstance().IsOpenAction() ) { CGlobalValue::GetInstance().Reset(); } else { TCHAR szFilter[] = _T( "Eternity Action File (*.act)|*.act|All Files (*.*)|*.*||" ); CSkinPrevDlg dlg( FALSE, _T("act"), _T("*.act"), OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_ENABLESIZING , szFilter, CGlobalValue::GetInstance().GetView() ); if( dlg.DoModal() != IDOK ) return; if( CGlobalValue::GetInstance().CreateAction( dlg.GetPathName() ) == true ) { if( CGlobalValue::GetInstance().CheckOut( dlg.GetPathName() ) == false ) { MessageBox( CGlobalValue::GetInstance().GetView()->m_hWnd, "üũ¾Æ¿ô ½ÇÆä!! ÆÄÀÏÀ» ¿­ ¼ö ¾ø½À´Ï´Ù.", "¿¡·¯", MB_OK ); return; } } } } void CEtActionToolDoc::OnSignalReport() { // TODO: Add your command handler code here CSignalReportDlg Dlg; Dlg.DoModal(); } void CEtActionToolDoc::OnSaveSignalReport() { // TODO: Add your command handler code here TCHAR szFilter[] = _T( "CSV File (*.csv)|*.csv|All Files (*.*)|*.*||" ); CFileDialog dlg( FALSE, _T("csv"), _T("*.csv"), OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_ENABLESIZING , szFilter, CGlobalValue::GetInstance().GetView() ); if( dlg.DoModal() != IDOK ) return; CString szBuffer; CGlobalValue::GetInstance().CalcSignalReport( szBuffer ); FILE *fp; fopen_s( &fp, dlg.GetPathName(), "w" ); fprintf_s( fp, szBuffer ); fclose(fp); } void CEtActionToolDoc::OnUpdateSignalReport(CCmdUI *pCmdUI) { // TODO: Add your command update UI handler code here pCmdUI->Enable( CGlobalValue::GetInstance().IsOpenAction() ); } void CEtActionToolDoc::OnUpdateSaveSignalReport(CCmdUI *pCmdUI) { // TODO: Add your command update UI handler code here pCmdUI->Enable( CGlobalValue::GetInstance().IsOpenAction() ); } void CEtActionToolDoc::OnFileExport() { std::vector szVecActionList; CWnd *pWnd = GetPaneWnd( ACTION_PANE ); if( pWnd ) ((CActionPaneView*)pWnd)->GetSelectActionList( szVecActionList ); if( szVecActionList.empty() ) { MessageBox( CGlobalValue::GetInstance().GetView()->m_hWnd, "ÀͽºÆ÷Æ® ÇÒ ¾×¼ÇÀ» ¼±ÅÃÇØÁÖ¼¼¿ä.", "¿¡·¯", MB_OK ); return; } TCHAR szFilter[] = _T( "actexport File (*.actexport)|*.actexport|All Files (*.*)|*.*||" ); CFileDialog dlg( FALSE, _T("actexport"), _T("*.actexport"), OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_ENABLESIZING , szFilter, CGlobalValue::GetInstance().GetView() ); if( dlg.DoModal() != IDOK ) return; CGlobalValue::GetInstance().ExportAction( dlg.GetPathName(), szVecActionList ); } void CEtActionToolDoc::OnFileImport() { TCHAR szFilter[] = _T( "actexport File (*.actexport)|*.actexport|All Files (*.*)|*.*||" ); CFileDialog dlg( TRUE, _T("actexport"), _T("*.actexport"), OFN_HIDEREADONLY|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_ENABLESIZING , szFilter, CGlobalValue::GetInstance().GetView() ); if( IDOK != dlg.DoModal() ) return; CGlobalValue::GetInstance().ImportAction( dlg.GetPathName() ); } void CEtActionToolDoc::OnUpdateOnFileImport(CCmdUI *pCmdUI) { pCmdUI->Enable( CGlobalValue::GetInstance().IsOpenAction() ); } void CEtActionToolDoc::OnUpdateOnFileExport(CCmdUI *pCmdUI) { pCmdUI->Enable( CGlobalValue::GetInstance().IsOpenAction() ); } void CEtActionToolDoc::OnCheckWalkfront() { int nResult = MessageBox( CGlobalValue::GetInstance().GetView()->m_hWnd, "Monster Æú´õ ³»ÀÇ act ÆÄÀÏ Áß Walk_Front ¾×¼ÇÀÌ ¾ø´Â ÆÄÀϵéÀ» üũÇÕ´Ï´Ù.\nÈ®Àο¡ ´Ù¼Ò ½Ã°£ÀÌ °É¸± ¼ö ÀÖ½À´Ï´Ù.(ÃÖÀå 5ºÐ)\nÁøÇàÇϽðڽÀ´Ï±î?", "È®ÀÎ", MB_YESNO ); if (nResult == IDYES) { CGlobalValue::GetInstance().CheckActionHasWalkFront(); } }