// CharItem.cpp : ±¸Çö ÆÄÀÏÀÔ´Ï´Ù. // #include "stdafx.h" #include "GameDBTool.h" #include "CharItem.h" #include "GameDBTool.h" #include "GameDBToolDlg.h" #include ".\charitem.h" // CCharItem ´ëÈ­ »óÀÚÀÔ´Ï´Ù. IMPLEMENT_DYNAMIC(CCharItem, CDialog) CCharItem::CCharItem(CWnd* pParent /*=NULL*/) : CDialog(CCharItem::IDD, pParent) , m_Equip(_T("")) , m_EquipSize(_T("")) , m_InvenSize(_T("")) , m_Inven(_T("")) { memset(&m_QuickData, 0, sizeof(QUICK)); memset(&m_InvenData, 0, sizeof(INVEN)); memset(&m_EquipData, 0, sizeof(EQUIP)); } CCharItem::~CCharItem() { } void CCharItem::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Text(pDX, IDC_EQUIP, m_Equip); DDX_Text(pDX, IDC_EQUIP_SIZE, m_EquipSize); DDX_Text(pDX, IDC_INVEN_SIZE, m_InvenSize); DDX_Text(pDX, IDC_INVEN, m_Inven); } BOOL CCharItem::OnInitDialog() { CDialog::OnInitDialog(); CCharItem::OnBnClickedDbLoad(); return TRUE; } BEGIN_MESSAGE_MAP(CCharItem, CDialog) ON_BN_CLICKED(IDC_DB_LOAD, OnBnClickedDbLoad) ON_BN_CLICKED(IDC_FILE_SAVE, OnBnClickedFileSave) ON_BN_CLICKED(IDC_FILE_LOAD, OnBnClickedFileLoad) ON_BN_CLICKED(IDC_DB_SAVE, OnBnClickedDbSave) ON_WM_CTLCOLOR() END_MESSAGE_MAP() // CCharItem ¸Þ½ÃÁö 󸮱âÀÔ´Ï´Ù. void CCharItem::PrintData(void) { int Counter = 0; char Dest[3]; BYTE *lpPos = NULL; // Äü Ãâ·Â // Àåºñ Ãâ·Â m_Equip = "0x"; lpPos = (BYTE*)&m_EquipData; for(Counter = 0; Counter < sizeof(EQUIP); ++Counter, ++lpPos) { Math::Convert::Hex08ToStr((char *)&Dest, *lpPos); m_Equip.Insert((Counter * 2) + 2, Dest); } m_EquipSize.Format("%d", m_EquipData.dwSize); // Àκ¥ Ãâ·Â m_Inven = "0x"; lpPos = (BYTE*)&m_InvenData; for(Counter = 0; Counter < sizeof(INVEN); ++Counter, ++lpPos) { Math::Convert::Hex08ToStr((char *)&Dest, *lpPos); m_Inven.Insert((Counter * 2) + 2, Dest); } m_InvenSize.Format("%d", m_InvenData.dwSize); UpdateData(FALSE); } void CCharItem::OnBnClickedDbLoad() { memset(&m_QuickData, 0, sizeof(QUICK)); memset(&m_InvenData, 0, sizeof(INVEN)); memset(&m_EquipData, 0, sizeof(EQUIP)); CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp(); CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd; /* if(!DBComponent::GameDB::GetQuick(CDBSingleObject::GetInstance(), m_CID, &m_QuickData)) { pDlgWnd->m_Log.LogPrint("[¾ÆÀÌÅÛ] Äü ½½·Ô ÀбâÁß¿¡ ¿À·ù°¡ ¹ß»ý. %s", CDBSingleObject::GetInstance().GetErrorString()); } */ if(!DBComponent::GameDB::GetEquip(CDBSingleObject::GetInstance(), m_CID, &m_EquipData)) { pDlgWnd->m_Log.LogPrint("[¾ÆÀÌÅÛ] Àåºñ ÀбâÁß¿¡ ¿À·ù°¡ ¹ß»ý. %s", CDBSingleObject::GetInstance().GetErrorString()); } if(!DBComponent::GameDB::GetInven(CDBSingleObject::GetInstance(), m_CID, &m_InvenData)) { pDlgWnd->m_Log.LogPrint("[¾ÆÀÌÅÛ] Àκ¥ ÀбâÁß¿¡ ¿À·ù°¡ ¹ß»ý. %s", CDBSingleObject::GetInstance().GetErrorString()); } PrintData(); } void CCharItem::OnBnClickedFileSave() { UpdateData(); CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp(); CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd; FileOpen *lpFileOpen = pDlgWnd->m_pFileOpen; if(lpFileOpen->SaveDlg("idump")) { pDlgWnd->m_Log.LogPrint("[¾ÆÀÌÅÛ] ¾ÆÀÌÅÛ ÆÄÀÏ ±â·Ï ½ÃÀÛ"); DWORD dwWritten = 0; char DumpText[256] = ""; HANDLE hLogFile = CreateFile(lpFileOpen->GetFilePathNameFromBuffer(), GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if(hLogFile == NULL) { pDlgWnd->m_Log.LogPrint("[¾ÆÀÌÅÛ] ¾ÆÀÌÅÛ ÆÄÀÏ ±â·Ï ¿¡·¯ ¹ß»ý. %d", GetLastError()); return; } // Àåºñ ¾ÆÀÌÅÛ ±â·Ï if(!WriteFile(hLogFile, &m_EquipData, sizeof(EQUIP), &dwWritten, NULL)) { CloseHandle(hLogFile); pDlgWnd->m_Log.LogPrint("[¾ÆÀÌÅÛ] Àåºñ ¾ÆÀÌÅÛ ÆÄÀÏ ±â·Ï ¿¡·¯ ¹ß»ý. %d", GetLastError()); return; } // Àκ¥ ¾ÆÀÌÅÛ ±â·Ï if(!WriteFile(hLogFile, &m_InvenData, sizeof(INVEN), &dwWritten, NULL)) { CloseHandle(hLogFile); pDlgWnd->m_Log.LogPrint("[¾ÆÀÌÅÛ] Àκ¥ ¾ÆÀÌÅÛ ÆÄÀÏ ±â·Ï ¿¡·¯ ¹ß»ý. %d", GetLastError()); return; } CloseHandle(hLogFile); pDlgWnd->m_Log.LogPrint("[¾ÆÀÌÅÛ] ¾ÆÀÌÅÛ ÆÄÀÏ ±â·Ï ¼º°ø"); } } void CCharItem::OnBnClickedFileLoad() { CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp(); CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd; FileOpen *lpFileOpen = pDlgWnd->m_pFileOpen; if(lpFileOpen->OpenDlg()) { pDlgWnd->m_Log.LogPrint("[¾ÆÀÌÅÛ] ¾ÆÀÌÅÛ ÆÄÀÏ Àб⠽ÃÀÛ"); DWORD dwWritten = 0; char DumpText[256] = ""; HANDLE hLogFile = CreateFile(lpFileOpen->GetFilePathNameFromBuffer(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(hLogFile == NULL) { pDlgWnd->m_Log.LogPrint("[¾ÆÀÌÅÛ] ¾ÆÀÌÅÛ ÆÄÀÏ Àб⠿¡·¯ ¹ß»ý. %d", GetLastError()); return; } // Àåºñ ¾ÆÀÌÅÛ ±â·Ï if(!ReadFile(hLogFile, &m_EquipData, sizeof(EQUIP), &dwWritten, NULL)) { CloseHandle(hLogFile); pDlgWnd->m_Log.LogPrint("[¾ÆÀÌÅÛ] Àåºñ ¾ÆÀÌÅÛ ÆÄÀÏ Àб⠿¡·¯ ¹ß»ý. %d", GetLastError()); return; } // Àκ¥ ¾ÆÀÌÅÛ ±â·Ï if(!ReadFile(hLogFile, &m_InvenData, sizeof(INVEN), &dwWritten, NULL)) { CloseHandle(hLogFile); pDlgWnd->m_Log.LogPrint("[¾ÆÀÌÅÛ] Àκ¥ ¾ÆÀÌÅÛ ÆÄÀÏ Àб⠿¡·¯ ¹ß»ý. %d", GetLastError()); return; } CloseHandle(hLogFile); pDlgWnd->m_Log.LogPrint("[¾ÆÀÌÅÛ] ¾ÆÀÌÅÛ ÆÄÀÏ ±â·Ï ¼º°ø"); } CCharItem::PrintData(); } void CCharItem::OnBnClickedDbSave() { CGameDBToolApp* pAppWnd = (CGameDBToolApp*)AfxGetApp(); CGameDBToolDlg* pDlgWnd = (CGameDBToolDlg*)pAppWnd->m_pMainWnd; /* if(!DBComponent::GameDB::GetQuick(CDBSingleObject::GetInstance(), m_CID, &m_QuickData)) { pDlgWnd->m_Log.LogPrint("[¾ÆÀÌÅÛ] Äü ½½·Ô ÀбâÁß¿¡ ¿À·ù°¡ ¹ß»ý. %s", CDBSingleObject::GetInstance().GetErrorString()); } */ if(!DBComponent::GameDB::UpdateEquip(CDBSingleObject::GetInstance(), m_CID, &m_EquipData)) { pDlgWnd->m_Log.LogPrint("[¾ÆÀÌÅÛ] Àåºñ ¾²±âÁß¿¡ ¿À·ù°¡ ¹ß»ý. %s", CDBSingleObject::GetInstance().GetErrorString()); } if(!DBComponent::GameDB::UpdateInven(CDBSingleObject::GetInstance(), m_CID, &m_InvenData)) { pDlgWnd->m_Log.LogPrint("[¾ÆÀÌÅÛ] Àκ¥ ¾²±âÁß¿¡ ¿À·ù°¡ ¹ß»ý. %s", CDBSingleObject::GetInstance().GetErrorString()); } } HBRUSH CCharItem::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: ¿©±â¼­ DCÀÇ Æ¯¼ºÀ» º¯°æÇÕ´Ï´Ù. HBRUSH m_hBrush; m_hBrush = CreateSolidBrush(RGB( 255, 169, 128)); switch( nCtlColor ){ case CTLCOLOR_DLG: pDC->SetBkColor(RGB( 255, 255, 255)); pDC->SetTextColor(RGB( 0, 0, 0)); return m_hBrush; break; case CTLCOLOR_STATIC: pDC->SetBkColor(RGB( 255, 169, 128)); pDC->SetTextColor(RGB( 0, 0, 0)); return m_hBrush; break; default: return hbr; break; } }