// CharEffect.cpp : implementation file // #include "stdafx.h" #include "worldcreator.h" #include "CharEffect.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CCharEffect dialog CCharEffect::CCharEffect(CWnd* pParent /*=NULL*/) : CDialog(CCharEffect::IDD, pParent) { //{{AFX_DATA_INIT(CCharEffect) m_strEsfName = _T(""); m_fWRot = 0.0f; m_fXPos = 0.0f; m_fXRot = 0.0f; m_fYPos = 0.0f; m_fYRot = 0.0f; m_fZPos = 0.0f; m_fZRot = 0.0f; m_strPivotName = _T(""); m_iPosUpdate = 1; m_iRotUpdate = 1; //}}AFX_DATA_INIT } void CCharEffect::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CCharEffect) DDX_Text(pDX, IDC_ESF, m_strEsfName); DDX_Text(pDX, IDC_WROT, m_fWRot); DDX_Text(pDX, IDC_XPOS, m_fXPos); DDX_Text(pDX, IDC_XROT, m_fXRot); DDX_Text(pDX, IDC_YPOS, m_fYPos); DDX_Text(pDX, IDC_YROT, m_fYRot); DDX_Text(pDX, IDC_ZPOS, m_fZPos); DDX_Text(pDX, IDC_ZROT, m_fZRot); DDX_Text(pDX, IDC_PIVOTNAME, m_strPivotName); DDX_Radio(pDX, IDC_RADIO1, m_iPosUpdate); DDX_Radio(pDX, IDC_RADIO3, m_iRotUpdate); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CCharEffect, CDialog) //{{AFX_MSG_MAP(CCharEffect) ON_BN_CLICKED(IDC_ESFSEARCH, OnEsfsearch) ON_BN_CLICKED(IDC_AUTO, OnAuto) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CCharEffect message handlers void CCharEffect::OnEsfsearch() { // TODO: Add your control notification handler code here char str[] = "Esf ÆÄÀÏ(*.esf) |*.esf| ¸ðµçÆÄÀÏ(*.*)|*.*||"; CString strFilter = str; CFileDialog filedia(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,strFilter,this); filedia.DoModal(); m_strEsfName = filedia.GetFileName(); UpdateData(FALSE); } void CCharEffect::OnOK() { // TODO: Add extra validation here UpdateData(TRUE); if(m_strEsfName.GetLength() <= 1 && m_strPivotName.GetLength() <= 1) { MessageBox("ÀÔ·ÂÀÌ À߸øµÇ¾ú½À´Ï´Ù."); return; } PushCharEffectToEsf(); MessageBox("¼º°ø"); CDialog::OnOK(); } void CCharEffect::OnCancel() { // TODO: Add extra cleanup here CDialog::OnCancel(); } void CCharEffect::PushCharEffectToEsf() { char strBuffer[80][256]; int i; memset(strBuffer,0,sizeof(char) * 256 * 80); FILE *fp = fopen(m_strEsfName.LockBuffer(),"rt"); int iReadCount = 0; while(!feof(fp)) { fgets(strBuffer[iReadCount++],256,fp); } fclose(fp); fp = fopen(m_strEsfName.LockBuffer(),"wt"); if( fp == NULL) { MessageBox("File ¿­±â ½ÇÆÐ"); return; } for(i = 0; i < iReadCount; i++) { char tmpBuf[256]; strcpy(tmpBuf,strBuffer[i]); char *token = strtok(tmpBuf,"\n\t "); if(token != NULL) { if(!strcmp(token,"FIN:")) continue; if(!strcmp(token,"CHARACTER:")) continue; } fputs(strBuffer[i],fp); } fprintf(fp,"\nCHARACTER: %s [ %f %f %f ] [ %f %f %f %f ] %d %d\n", m_strPivotName.LockBuffer(),m_fXPos,m_fYPos,m_fZPos, m_fXRot,m_fYRot,m_fZRot,m_fWRot,m_iPosUpdate,m_iRotUpdate); fprintf(fp,"FIN:\n"); fclose(fp); } void CCharEffect::OnAuto() { // TODO: Add your control notification handler code here // ÀÚµ¿À¸·Î Ŭ¸³º¸µå¿¡¼­ Data Àоî¿È. BOOL bActiveClipBoard = IsClipboardFormatAvailable (CF_TEXT) ; if(bActiveClipBoard) { OpenClipboard (); GLOBALHANDLE hGlobal = GetClipboardData (CF_TEXT) ; if(hGlobal == NULL) { MessageBox("ClipBoard°¡ ¿ÇÁö ¾Ê½À´Ï´Ù."); m_fXPos = m_fYPos = m_fZPos = m_fXRot = m_fYRot = m_fZRot = m_fWRot = 0.0f; UpdateData(FALSE); return; } char *pClipText = (char *) malloc(GlobalSize (hGlobal)); char *pGlobal; pGlobal = (char *)GlobalLock (hGlobal) ; if(pGlobal == NULL) { MessageBox("ClipBoard°¡ ¿ÇÁö ¾Ê½À´Ï´Ù."); m_fXPos = m_fYPos = m_fZPos = m_fXRot = m_fYRot = m_fZRot = m_fWRot = 0.0f; UpdateData(FALSE); return; } strcpy (pClipText, pGlobal) ; GlobalUnlock (hGlobal) ; CloseClipboard () ; char *token = strtok(pClipText,"\n\t "); if(token == NULL) { MessageBox("ClipBoard°¡ ¿ÇÁö ¾Ê½À´Ï´Ù."); m_fXPos = m_fYPos = m_fZPos = m_fXRot = m_fYRot = m_fZRot = m_fWRot = 0.0f; UpdateData(FALSE); return; } m_fXPos = atof(token); token = strtok(NULL,"\n\t "); if(token == NULL) { MessageBox("ClipBoard°¡ ¿ÇÁö ¾Ê½À´Ï´Ù."); m_fXPos = m_fYPos = m_fZPos = m_fXRot = m_fYRot = m_fZRot = m_fWRot = 0.0f; UpdateData(FALSE); return; } m_fYPos = atof(token); token = strtok(NULL,"\n\t "); if(token == NULL) { MessageBox("ClipBoard°¡ ¿ÇÁö ¾Ê½À´Ï´Ù."); m_fXPos = m_fYPos = m_fZPos = m_fXRot = m_fYRot = m_fZRot = m_fWRot = 0.0f; UpdateData(FALSE); return; } m_fZPos = atof(token); token = strtok(NULL,"\n\t "); if(token == NULL) { MessageBox("ClipBoard°¡ ¿ÇÁö ¾Ê½À´Ï´Ù."); m_fXPos = m_fYPos = m_fZPos = m_fXRot = m_fYRot = m_fZRot = m_fWRot = 0.0f; UpdateData(FALSE); return; } m_fXRot = atof(token); token = strtok(NULL,"\n\t "); if(token == NULL) { MessageBox("ClipBoard°¡ ¿ÇÁö ¾Ê½À´Ï´Ù."); m_fXPos = m_fYPos = m_fZPos = m_fXRot = m_fYRot = m_fZRot = m_fWRot = 0.0f; UpdateData(FALSE); return; } m_fYRot = atof(token); token = strtok(NULL,"\n\t "); if(token == NULL) { MessageBox("ClipBoard°¡ ¿ÇÁö ¾Ê½À´Ï´Ù."); m_fXPos = m_fYPos = m_fZPos = m_fXRot = m_fYRot = m_fZRot = m_fWRot = 0.0f; UpdateData(FALSE); return; } m_fZRot = atof(token); token = strtok(NULL,"\n\t "); if(token == NULL) { MessageBox("ClipBoard°¡ ¿ÇÁö ¾Ê½À´Ï´Ù."); m_fXPos = m_fYPos = m_fZPos = m_fXRot = m_fYRot = m_fZRot = m_fWRot = 0.0f; UpdateData(FALSE); return; } m_fWRot = atof(token); free(pClipText); UpdateData(FALSE); } else { m_fXPos = m_fYPos = m_fZPos = m_fXRot = m_fYRot = m_fZRot = m_fWRot = 0.0f; UpdateData(FALSE); MessageBox("ClipBoard°¡ ¿ÇÁö ¾Ê½À´Ï´Ù."); } // }